diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 00000000..ff664441 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,27 @@ +--- +name: Bug report +about: Report a bug that should be fixed +title: '' +labels: '' +assignees: '' + +--- + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +Steps to reproduce the behavior: +1. Go to '...' +2. Click on '....' +3. Scroll down to '....' +4. See error + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Screenshots** +If applicable, add screenshots to help explain your problem. + +**Additional context** +Add any other context about the problem here. \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 00000000..23094e9d --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,20 @@ +--- +name: Feature request +about: Suggest a feature for the project +title: '' +labels: '' +assignees: '' + +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** +Add any other context or screenshots about the feature request here. \ No newline at end of file diff --git a/Assets/Audio/Master.bank b/Assets/Audio/Master.bank index a1b4e563..f6cce22f 100644 Binary files a/Assets/Audio/Master.bank and b/Assets/Audio/Master.bank differ diff --git a/Assets/Audio/Master.strings.bank b/Assets/Audio/Master.strings.bank index ecad89fe..d858d0f6 100644 Binary files a/Assets/Audio/Master.strings.bank and b/Assets/Audio/Master.strings.bank differ diff --git a/Assets/Audio/Music.bank b/Assets/Audio/Music.bank new file mode 100644 index 00000000..3885d5df Binary files /dev/null and b/Assets/Audio/Music.bank differ diff --git a/Assets/Audio/SFX.bank b/Assets/Audio/SFX.bank new file mode 100644 index 00000000..7a7b0bbe Binary files /dev/null and b/Assets/Audio/SFX.bank differ diff --git a/Assets/Audio/UI.bank b/Assets/Audio/UI.bank new file mode 100644 index 00000000..78ed9460 Binary files /dev/null and b/Assets/Audio/UI.bank differ diff --git a/Assets/CollisionTags.SHConfig b/Assets/CollisionTags.SHConfig new file mode 100644 index 00000000..d3ebe7e2 --- /dev/null +++ b/Assets/CollisionTags.SHConfig @@ -0,0 +1,16 @@ +0 1 +1 2 +2 3 +3 4 +4 5 +5 6 +6 7 +7 8 +8 9 +9 10 +10 11 +11 12 +12 13 +13 14 +14 15 +15 16 diff --git a/Assets/Fonts/ALGER.shfont b/Assets/Fonts/ALGER.shfont new file mode 100644 index 00000000..1acab9da Binary files /dev/null and b/Assets/Fonts/ALGER.shfont differ diff --git a/Assets/Fonts/ALGER.shfont.shmeta b/Assets/Fonts/ALGER.shfont.shmeta new file mode 100644 index 00000000..e6350c15 --- /dev/null +++ b/Assets/Fonts/ALGER.shfont.shmeta @@ -0,0 +1,3 @@ +Name: ALGER +ID: 182525173 +Type: 10 diff --git a/Assets/Fonts/ALGER.ttf b/Assets/Fonts/ALGER.ttf new file mode 100644 index 00000000..dcc72ae9 Binary files /dev/null and b/Assets/Fonts/ALGER.ttf differ diff --git a/Assets/Fonts/SegoeUI.shfont b/Assets/Fonts/SegoeUI.shfont new file mode 100644 index 00000000..321f62c8 Binary files /dev/null and b/Assets/Fonts/SegoeUI.shfont differ diff --git a/Assets/Fonts/SegoeUI.shfont.shmeta b/Assets/Fonts/SegoeUI.shfont.shmeta new file mode 100644 index 00000000..33ee953d --- /dev/null +++ b/Assets/Fonts/SegoeUI.shfont.shmeta @@ -0,0 +1,3 @@ +Name: SegoeUI +ID: 176667660 +Type: 10 diff --git a/Assets/Fonts/SegoeUI.ttf b/Assets/Fonts/SegoeUI.ttf new file mode 100644 index 00000000..46b3b993 Binary files /dev/null and b/Assets/Fonts/SegoeUI.ttf differ diff --git a/Assets/Materials/HouseMaterial.shmat b/Assets/Materials/HouseMaterial.shmat new file mode 100644 index 00000000..c2423670 --- /dev/null +++ b/Assets/Materials/HouseMaterial.shmat @@ -0,0 +1,8 @@ +- VertexShader: 39210065 + FragmentShader: 46377769 + SubPass: G-Buffer Write + Properties: + data.color: {x: 1, y: 1, z: 1, w: 1} + data.textureIndex: 61918518 + data.alpha: 0 + data.beta: {x: 1, y: 1, z: 1} \ No newline at end of file diff --git a/Assets/Materials/HouseMaterial.shmat.shmeta b/Assets/Materials/HouseMaterial.shmat.shmeta new file mode 100644 index 00000000..61285e36 --- /dev/null +++ b/Assets/Materials/HouseMaterial.shmat.shmeta @@ -0,0 +1,3 @@ +Name: HouseMaterial +ID: 127069936 +Type: 7 diff --git a/Assets/Materials/MT_ColorPaletteDefault.shmat b/Assets/Materials/MT_ColorPaletteDefault.shmat new file mode 100644 index 00000000..6805936d --- /dev/null +++ b/Assets/Materials/MT_ColorPaletteDefault.shmat @@ -0,0 +1,8 @@ +- VertexShader: 39210065 + FragmentShader: 46377769 + SubPass: G-Buffer Write + Properties: + data.color: {x: 1, y: 1, z: 1, w: 1} + data.textureIndex: 57342922 + data.alpha: 0 + data.beta: {x: 1, y: 1, z: 1} \ No newline at end of file diff --git a/Assets/Materials/MT_ColorPaletteDefault.shmat.shmeta b/Assets/Materials/MT_ColorPaletteDefault.shmat.shmeta new file mode 100644 index 00000000..d156bb15 --- /dev/null +++ b/Assets/Materials/MT_ColorPaletteDefault.shmat.shmeta @@ -0,0 +1,3 @@ +Name: MT_ColorPaletteDefault +ID: 131956078 +Type: 7 diff --git a/Assets/Materials/MT_House_Palette4.shmat b/Assets/Materials/MT_House_Palette4.shmat new file mode 100644 index 00000000..090cdf5a --- /dev/null +++ b/Assets/Materials/MT_House_Palette4.shmat @@ -0,0 +1,8 @@ +- VertexShader: 39210065 + FragmentShader: 46377769 + SubPass: G-Buffer Write + Properties: + data.color: {x: 1, y: 1, z: 1, w: 1} + data.textureIndex: 53438927 + data.alpha: 0 + data.beta: {x: 1, y: 1, z: 1} \ No newline at end of file diff --git a/Assets/Materials/MT_House_Palette4.shmat.shmeta b/Assets/Materials/MT_House_Palette4.shmat.shmeta new file mode 100644 index 00000000..24ca70ba --- /dev/null +++ b/Assets/Materials/MT_House_Palette4.shmat.shmeta @@ -0,0 +1,3 @@ +Name: MT_House_Palette4 +ID: 132690168 +Type: 7 diff --git a/Assets/Materials/TX_HouseInterior_Palette3.shtex b/Assets/Materials/TX_HouseInterior_Palette3.shtex new file mode 100644 index 00000000..3c3d3850 Binary files /dev/null and b/Assets/Materials/TX_HouseInterior_Palette3.shtex differ diff --git a/Assets/Materials/TX_HouseInterior_Palette3.shtex.shmeta b/Assets/Materials/TX_HouseInterior_Palette3.shtex.shmeta new file mode 100644 index 00000000..c1d337be --- /dev/null +++ b/Assets/Materials/TX_HouseInterior_Palette3.shtex.shmeta @@ -0,0 +1,3 @@ +Name: TX_HouseInterior_Palette3 +ID: 61918518 +Type: 3 diff --git a/Assets/Materials/UIMat.shmat b/Assets/Materials/UIMat.shmat new file mode 100644 index 00000000..625021b0 --- /dev/null +++ b/Assets/Materials/UIMat.shmat @@ -0,0 +1,8 @@ +- VertexShader: 46580970 + FragmentShader: 35983630 + SubPass: G-Buffer Write + Properties: + data.color: {x: 1, y: 1, z: 1, w: 1} + data.textureIndex: 54429632 + data.alpha: 0 + data.beta: {x: 1, y: 1, z: 1} \ No newline at end of file diff --git a/Assets/Materials/UIMat.shmat.shmeta b/Assets/Materials/UIMat.shmat.shmeta new file mode 100644 index 00000000..2a2d2572 --- /dev/null +++ b/Assets/Materials/UIMat.shmat.shmeta @@ -0,0 +1,3 @@ +Name: UIMat +ID: 129340704 +Type: 7 diff --git a/Assets/Models/ExteriorMeshs.gltf b/Assets/Models/ExteriorMeshs.gltf new file mode 100644 index 00000000..90107b7e --- /dev/null +++ b/Assets/Models/ExteriorMeshs.gltf @@ -0,0 +1,696 @@ +{ + "asset" : { + "generator" : "Khronos glTF Blender I/O v3.3.27", + "version" : "2.0" + }, + "extensionsUsed" : [ + "KHR_materials_specular", + "KHR_materials_ior" + ], + "scene" : 0, + "scenes" : [ + { + "name" : "Scene", + "nodes" : [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7 + ] + } + ], + "nodes" : [ + { + "mesh" : 0, + "name" : "TreeVar1" + }, + { + "mesh" : 1, + "name" : "TreeVar2" + }, + { + "mesh" : 2, + "name" : "TreeVar3" + }, + { + "mesh" : 3, + "name" : "BushVar1" + }, + { + "mesh" : 4, + "name" : "BushVar2" + }, + { + "mesh" : 5, + "name" : "BushVar3" + }, + { + "mesh" : 6, + "name" : "FenceSinglePiece" + }, + { + "mesh" : 7, + "name" : "FenceFivePiece" + } + ], + "materials" : [ + { + "doubleSided" : true, + "extensions" : { + "KHR_materials_specular" : { + "specularColorFactor" : [ + 0, + 0, + 0 + ] + }, + "KHR_materials_ior" : { + "ior" : 1.4500000476837158 + } + }, + "name" : "Material", + "pbrMetallicRoughness" : { + "baseColorTexture" : { + "index" : 0 + }, + "metallicFactor" : 0 + } + } + ], + "meshes" : [ + { + "name" : "Cone.002", + "primitives" : [ + { + "attributes" : { + "POSITION" : 0, + "NORMAL" : 1, + "TEXCOORD_0" : 2 + }, + "indices" : 3, + "material" : 0 + } + ] + }, + { + "name" : "Cone.003", + "primitives" : [ + { + "attributes" : { + "POSITION" : 4, + "NORMAL" : 5, + "TEXCOORD_0" : 6 + }, + "indices" : 7, + "material" : 0 + } + ] + }, + { + "name" : "Cone.004", + "primitives" : [ + { + "attributes" : { + "POSITION" : 8, + "NORMAL" : 9, + "TEXCOORD_0" : 10 + }, + "indices" : 11, + "material" : 0 + } + ] + }, + { + "name" : "Cube.005", + "primitives" : [ + { + "attributes" : { + "POSITION" : 12, + "NORMAL" : 13, + "TEXCOORD_0" : 14 + }, + "indices" : 15, + "material" : 0 + } + ] + }, + { + "name" : "Cube.008", + "primitives" : [ + { + "attributes" : { + "POSITION" : 16, + "NORMAL" : 17, + "TEXCOORD_0" : 18 + }, + "indices" : 19, + "material" : 0 + } + ] + }, + { + "name" : "Cube.009", + "primitives" : [ + { + "attributes" : { + "POSITION" : 20, + "NORMAL" : 21, + "TEXCOORD_0" : 22 + }, + "indices" : 23, + "material" : 0 + } + ] + }, + { + "name" : "Cube.014", + "primitives" : [ + { + "attributes" : { + "POSITION" : 24, + "NORMAL" : 25, + "TEXCOORD_0" : 26 + }, + "indices" : 27, + "material" : 0 + } + ] + }, + { + "name" : "Cube.029", + "primitives" : [ + { + "attributes" : { + "POSITION" : 28, + "NORMAL" : 29, + "TEXCOORD_0" : 30 + }, + "indices" : 31, + "material" : 0 + } + ] + } + ], + "textures" : [ + { + "sampler" : 0, + "source" : 0 + } + ], + "images" : [ + { + "bufferView" : 4, + "mimeType" : "image/png", + "name" : "TX_StaticMesh" + } + ], + "accessors" : [ + { + "bufferView" : 0, + "componentType" : 5126, + "count" : 184, + "max" : [ + 1.0554860830307007, + 6.031525135040283, + 0.9880139231681824 + ], + "min" : [ + -0.977049708366394, + -0.003412404330447316, + -1.0374172925949097 + ], + "type" : "VEC3" + }, + { + "bufferView" : 1, + "componentType" : 5126, + "count" : 184, + "type" : "VEC3" + }, + { + "bufferView" : 2, + "componentType" : 5126, + "count" : 184, + "type" : "VEC2" + }, + { + "bufferView" : 3, + "componentType" : 5123, + "count" : 798, + "type" : "SCALAR" + }, + { + "bufferView" : 5, + "componentType" : 5126, + "count" : 188, + "max" : [ + 1.0572469234466553, + 5.722259998321533, + 0.911622941493988 + ], + "min" : [ + -0.8660639524459839, + -0.003412404330447316, + -1.138647198677063 + ], + "type" : "VEC3" + }, + { + "bufferView" : 6, + "componentType" : 5126, + "count" : 188, + "type" : "VEC3" + }, + { + "bufferView" : 7, + "componentType" : 5126, + "count" : 188, + "type" : "VEC2" + }, + { + "bufferView" : 8, + "componentType" : 5123, + "count" : 798, + "type" : "SCALAR" + }, + { + "bufferView" : 9, + "componentType" : 5126, + "count" : 188, + "max" : [ + 1.068861484527588, + 5.584161281585693, + 0.8538182377815247 + ], + "min" : [ + -0.8597413301467896, + -0.006824808660894632, + -1.138424038887024 + ], + "type" : "VEC3" + }, + { + "bufferView" : 10, + "componentType" : 5126, + "count" : 188, + "type" : "VEC3" + }, + { + "bufferView" : 11, + "componentType" : 5126, + "count" : 188, + "type" : "VEC2" + }, + { + "bufferView" : 12, + "componentType" : 5123, + "count" : 798, + "type" : "SCALAR" + }, + { + "bufferView" : 13, + "componentType" : 5126, + "count" : 218, + "max" : [ + 0.7025216817855835, + 0.989884614944458, + 0.5179280042648315 + ], + "min" : [ + -0.7233172655105591, + -0.07320257276296616, + -0.569669783115387 + ], + "type" : "VEC3" + }, + { + "bufferView" : 14, + "componentType" : 5126, + "count" : 218, + "type" : "VEC3" + }, + { + "bufferView" : 15, + "componentType" : 5126, + "count" : 218, + "type" : "VEC2" + }, + { + "bufferView" : 16, + "componentType" : 5123, + "count" : 1296, + "type" : "SCALAR" + }, + { + "bufferView" : 17, + "componentType" : 5126, + "count" : 218, + "max" : [ + 0.7239173054695129, + 0.9864634275436401, + 0.5464087724685669 + ], + "min" : [ + -0.7360207438468933, + -0.08651284128427505, + -0.5297161340713501 + ], + "type" : "VEC3" + }, + { + "bufferView" : 18, + "componentType" : 5126, + "count" : 218, + "type" : "VEC3" + }, + { + "bufferView" : 19, + "componentType" : 5126, + "count" : 218, + "type" : "VEC2" + }, + { + "bufferView" : 20, + "componentType" : 5123, + "count" : 1296, + "type" : "SCALAR" + }, + { + "bufferView" : 21, + "componentType" : 5126, + "count" : 261, + "max" : [ + 0.7016624212265015, + 0.9830341339111328, + 0.5205382108688354 + ], + "min" : [ + -0.7316886782646179, + -0.07525684684515, + -0.5566809773445129 + ], + "type" : "VEC3" + }, + { + "bufferView" : 22, + "componentType" : 5126, + "count" : 261, + "type" : "VEC3" + }, + { + "bufferView" : 23, + "componentType" : 5126, + "count" : 261, + "type" : "VEC2" + }, + { + "bufferView" : 24, + "componentType" : 5123, + "count" : 1554, + "type" : "SCALAR" + }, + { + "bufferView" : 25, + "componentType" : 5126, + "count" : 68, + "max" : [ + 0.5000000596046448, + 2, + 0.11256813257932663 + ], + "min" : [ + -0.5000000596046448, + 0, + -0.11256813257932663 + ], + "type" : "VEC3" + }, + { + "bufferView" : 26, + "componentType" : 5126, + "count" : 68, + "type" : "VEC3" + }, + { + "bufferView" : 27, + "componentType" : 5126, + "count" : 68, + "type" : "VEC2" + }, + { + "bufferView" : 28, + "componentType" : 5123, + "count" : 126, + "type" : "SCALAR" + }, + { + "bufferView" : 29, + "componentType" : 5126, + "count" : 340, + "max" : [ + 2.5, + 2, + 0.11256813257932663 + ], + "min" : [ + -2.5, + 0, + -0.11256813257932663 + ], + "type" : "VEC3" + }, + { + "bufferView" : 30, + "componentType" : 5126, + "count" : 340, + "type" : "VEC3" + }, + { + "bufferView" : 31, + "componentType" : 5126, + "count" : 340, + "type" : "VEC2" + }, + { + "bufferView" : 32, + "componentType" : 5123, + "count" : 630, + "type" : "SCALAR" + } + ], + "bufferViews" : [ + { + "buffer" : 0, + "byteLength" : 2208, + "byteOffset" : 0, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 2208, + "byteOffset" : 2208, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 1472, + "byteOffset" : 4416, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 1596, + "byteOffset" : 5888, + "target" : 34963 + }, + { + "buffer" : 0, + "byteLength" : 54895, + "byteOffset" : 7484 + }, + { + "buffer" : 0, + "byteLength" : 2256, + "byteOffset" : 62380, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 2256, + "byteOffset" : 64636, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 1504, + "byteOffset" : 66892, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 1596, + "byteOffset" : 68396, + "target" : 34963 + }, + { + "buffer" : 0, + "byteLength" : 2256, + "byteOffset" : 69992, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 2256, + "byteOffset" : 72248, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 1504, + "byteOffset" : 74504, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 1596, + "byteOffset" : 76008, + "target" : 34963 + }, + { + "buffer" : 0, + "byteLength" : 2616, + "byteOffset" : 77604, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 2616, + "byteOffset" : 80220, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 1744, + "byteOffset" : 82836, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 2592, + "byteOffset" : 84580, + "target" : 34963 + }, + { + "buffer" : 0, + "byteLength" : 2616, + "byteOffset" : 87172, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 2616, + "byteOffset" : 89788, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 1744, + "byteOffset" : 92404, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 2592, + "byteOffset" : 94148, + "target" : 34963 + }, + { + "buffer" : 0, + "byteLength" : 3132, + "byteOffset" : 96740, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 3132, + "byteOffset" : 99872, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 2088, + "byteOffset" : 103004, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 3108, + "byteOffset" : 105092, + "target" : 34963 + }, + { + "buffer" : 0, + "byteLength" : 816, + "byteOffset" : 108200, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 816, + "byteOffset" : 109016, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 544, + "byteOffset" : 109832, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 252, + "byteOffset" : 110376, + "target" : 34963 + }, + { + "buffer" : 0, + "byteLength" : 4080, + "byteOffset" : 110628, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 4080, + "byteOffset" : 114708, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 2720, + "byteOffset" : 118788, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 1260, + "byteOffset" : 121508, + "target" : 34963 + } + ], + "samplers" : [ + { + "magFilter" : 9729, + "minFilter" : 9987 + } + ], + "buffers" : [ + { + "byteLength" : 122768, + "uri" : "data:application/octet-stream;base64,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BwArAAcAFwAtACcAKwAsACYAKAAuADYALwAvADYAMAAvADAAUgAwADYAMQAxADYAMgAyADYAMwAzADYANAAzADQAQwAzAEMAQQA0ADYAVgA2ADUAVgA1ADYALgBAAEIATABAAEwASwAuAC8AOgAuADoAOAAyADMAQQAyAEEAPwAxADIAPwAxAD8APgAwADEAPgAwAD4APAAvAFIAUQAvAFEAOgA1AC4AOAA1ADgARQA0AFYAVwA0AFcAQwBNAFUATwBVAE4ATwA7AD0ASgA7AEoASQA3ADkASAA3AEgARwBGADcARwBGAEcATgBCAEQATQBCAE0ATAA9AEAASwA9AEsASgA5AFEAUAA5AFAASABEAFgAVQBEAFUATQBLAEwATwBJAEoATwBHAEgATwBOAEcATwBMAE0ATwBKAEsATwBIAFAATwBQAEkATwBQADsASQA7AFAAUwBRAFIAUwA8AFIAMABUAFIAPABTAFAAUQBVAFoARgBVAEYATgBaAFUAXABXAFYAWwBZAFYANQBZADUARQBbAFYAWQBcAFUAWABdAGUAXgBeAGUAggBlAF8AggBfAGUAYABgAGUAYQBhAGUAYgBiAGUAYwBiAGMAcwBiAHMAcQBjAGUAhgBlAGQAhgBkAGUAXQBuAHAAewBuAHsAegBdAF4AaABdAGgAZgBhAGIAcQBhAHEAbwBgAGEAbwBgAG8AbABfAGAAbABfAGwAagBeAIIAgABeAIAAaABkAF0AZgBkAGYAdQBjAIYAiABjAIgAcwB8AIUAfQB8AH0AfgBrAG0AeQBrAHkAeABnAGkAdwBnAHcAdgB0AGcAdgB0AHYAfQBwAHIAfABwAHwAewBtAG4AegBtAHoAeQBpAIEAfwBpAH8AdwByAIcAhQByAIUAfAB6AHsAfgB4AHkAfgB2AHcAfgB9AHYAfgB7AHwAfgB5AHoAfgB3AH8AfgB/AHgAfgB/AGsAeABrAH8AhACAAIIAgwBqAIIAXwCDAIIAagCEAH8AgQCFAIkAdACFAHQAfQCJAIUAiwCIAIYAjACKAIYAZACKAGQAdQCMAIYAigCLAIUAhwCdAI4AkACdAJAAngCeAJAAkgCeAJIAnwCfAJIAlACfAJQAoACgAJQAlgCgAJYAoQChAJYAmAChAJgAogCiAJgAmgCiAJoAowCaAJgAqgCaAKoAqwCjAJoA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sgAlALIAtAAEAAMAtgAEALYAtwABAAAAsQABALEAsgACACUAtAACALQAtQAHACkAugAHALoAuwApAAYAuQApALkAugAFAAYAFQAFABUAEwAFAAQAtwAFALcAuAADAAIAtQADALUAtgAQABIAHQAQAB0AHAAAAAEACgAAAAoACAAEAAUAEwAEABMAEQADAAQAEQADABEADwACAAMADwACAA8ADQABACUAIwABACMACgAHAAAACAAHAAgAFgAGACkAKgAGACoAFQAeACgAIAAoAB8AIAAMAA4AGwAMABsAGgAJAAsAGQAJABkAGAAXAAkAGAAXABgAHwASABQAHgASAB4AHQAOABAAHAAOABwAGwALACQAIQALACEAGQAUACsAKAAUACgAHgAcAB0AIAAaABsAIAAYABkAIAAfABgAIAAdAB4AIAAbABwAIAAZACEAIAAhABoAIAAhAAwAGgAMACEAJgAjACUAJwANACUAAgAnACUADQAnACIAIwAoAC0AFwAoABcAHwAtACgALwAqACkALgAsACkABwAsAAcAFgAuACkALAAvACgAKwAwADgAMQAxADgAMgAxADIAVAAyADgAMwAzADgANAA0ADgANQA1ADgANgA1ADYARgA1AEYARAA2ADgANwA2ADcAVwA3ADgAMABBAEMATgBBAE4ATQAwADEAOwAwADsAOQA0ADUARAA0AEQAQgAzADQAQgAzAEIAQAAyADMAQAAyAEAAPQAxAFQAUwAxAFMAOwA3ADAAOQA3ADkARwA2AFcAWAA2AFgARgBPAFYAUABPAFAAUQA+AD8ATAA+AEwASwA6ADwASgA6AEoASQBIADoASQBIAEkAUABDAEUATwBDAE8ATgA/AEEATQA/AE0ATAA8AFMAUgA8AFIASgBFAFkAVgBFAFYATwBNAE4AUQBLAEwAUQBJAEoAUQBQAEkAUQBOAE8AUQBMAE0AUQBKAFIAUQBSAEsAUQBSAD4ASwA+AFIAVQBTAFQAVQA9AFQAMgBVAFQAPQBVAFIAUwBWAFoASABWAEgAUABaAFYAXQBYAFcAXABbAFcANwBbADcARwBcAFcAWwBdAFYAWQBeAGYAXwBfAGYAhQBmAGAAhQBgAGYAYQBhAGYAYgBiAGYAYwBjAGYAZABjAGQAdABjAHQAcgBkAGYAigBmAGUAigBlAGYAXgBvAHEAfABvAHwAewBeAF8AaQBeAGkAZwBiAGMAcgBiAHIAcABhAGIAcABhAHAAbgBgAGEAbgBgAG4AawBfAIUAggBfAIIAaQBlAF4AZwBlAGcAdQBkAIoAiwBkAIsAdAB9AIkAfgB9AH4AfwBsAG0AegBsAHoAeQBoAGoAeABoAHgAdwB2AGgAdwB2AHcAfgBxAHMAfQBxAH0AfABtAG8AewBtAHsAegBqAIQAgQBqAIEAeABzAIwAiQBzAIkAfQB7AHwAfwB5AHoAfwB3AHgAfwB+AHcAfwB8AH0AfwB6AHsAfwB4AIEAfwCBAHkAfwCBAGwAeQBsAIEAiACCAIUAhgBrAIUAYACGAIUAawCHAIAAgwCJAI0AdgCJAHYAfgCNAIkAjwCLAIoAkACOAIoAZQCOAGUAdQCQAIoAjgCPAIkAjAChAJIAlAChAJQAogCiAJQAlgCiAJYAowCjAJYAmACjAJgApACkAJgAmgCkAJoApQClAJoAnAClAJwApgCmAJwAngCmAJ4ApwCeAJwArgCeAK4ArwCnAJ4AoACnAKAAqACoAKAAkgCoAJIAoQCfAKgAoQCfAKEAkQCdAKcAqACdAKgAnwCbAKYApwCbAKcAnQCZAKUApgCZAKYAmwCXAKQApQCXAKUAmQCVAKMApACVAKQAlwCTAKIAowCTAKMAlQCRAKEAogCRAKIAkwCaAJgArACaAKwArQCgAJ4ArwCgAK8AsACWAJQAqQCWAKkAqwCcAJoArQCcAK0ArgCSAKAAsACSALAAqgCUAJIAqgCUAKoAqQCYAJYAqwCYAKsArACxALMAsgCyALMAtACzALUAtAC1ALMAtgC2ALMAtwC3ALMAuAC4ALMAuQC5ALMAugCzALsAugC7ALMAsQAGAAUAuAAGALgAuQAAAAcAuwAAALsAsQBvmW2+uzxoQEH9pj4v2wG/A4poQEyygT3/FAG/6N9mQH5Ul77voo++s2tlQKyJFr/wgMs9/LpjQE7lHr/XmLs+2pRiQKf2tL7+Srk+GwFjQGymrjtIGAY+0ydlQJQ3hz6jO5C+42RPQFyb/j6jO5C+42RPQFyb/j5l8yW//MNQQCKFGD5l8yW//MNQQCKFGD4pci+//xZPQL5xsr4pci+//xZPQL5xsr6rja++GcVMQA7MNr+rja++GcVMQA7MNr8OpSQ+sBBJQP6GRL8OpSQ+sBBJQP6GRL8EzAM/ubFJQJar0L4EzAM/ubFJQJar0L61eRQ/T4lJQFGnvz21eRQ/T4lJQFGnvz0nVGQ+LFFNQLBE6T4nVGQ+LFFNQLBE6T4SGHe+8jtQQP/hxD4YaQ6/IiBSQBjn2D3vIBS/9gBQQKMsor7ZL5m+CBROQIHHIL9eTu89/hJJQDATJb+JnN8+KmJLQHWgvb66Hec+gMhIQPKuTj1juzU+QFNNQKwPuT6KL4m9aYRSQIboCr5UQBK/3oNTQDCNJr5UQBK/3oNTQDCNJr4jLjK/eFtQQOhtirwjLjK/eFtQQOhtiryCaAC/kKRrQApVLL766xe/ZfxTQIaEGr766xe/ZfxTQIaEGr6UkpM+MvVKQPvTbT4MKGE+4KFkQH6dMD7ELNc+/tNKQBHflT7ELNc+/tNKQBHflT71iZk+Pw9MQPsmyj71iZk+Pw9MQPsmyj4BVqQ+7MpLQI5ulz4BVqQ+7MpLQI5ulz4BVqQ+7MpLQI5ulz7OBy6/Jc6/PxM7Dj4zliK/qZnDP1u98L7oo2C+E07LP0Qla7/IVMg+3zTKPwm+Xb/AzFE/HJ3IP3/j4r6GBE8/pQ7DP1F2KD5D5rU+8uy7P7l7DD+GrHu+hay8PzopFT8L5P088SxyQKCAuztG4lW/n7CGPyRLMD5G4lW/n7CGPyRLMD6NElG//TWOP7+AFr+NElG//TWOP7+AFr8Wuo2+/A+TP+G3kb8Wuo2+/A+TP+G3kb8DngA/xXmVP9f8jr8DngA/xXmVP9f8jr900Ig/JUaQP/FgEb900Ig/JUaQP/FgEb/WTIc/Y4aIP1zUbT7WTIc/Y4aIP1zUbT6/0O0+v+yDPwfsQT+/0O0+v+yDPwfsQT81C56+lcuCP1A6Oj81C56+lcuCP1A6Oj9DxTW/Wu6IP7Ji/j1dRzO/V+mRP/xyCL87C2G+lDqQP1p8fb+maOE+ah2TP8/Qeb/KXWU/7IiNPz5qAL8822E/X4yGP5HdHT5LvdA+PuWBP5LdGz+tUYG+prWFPwelGT95Crk9C52iP/T/M758IMq+AMSXP21YUb/pkiq/i1+SP75wRr9jUMy+sdG6P/HSXb/wUd2+nh+ZP62KVb/w16A8jCKCP07eGT/okw+8dey7P3jzDj/7d7c9SWCBP2K1SD/7d7c9SWCBP2K1SD/RPS6+d/qCP6v/Oz/RPS6+d/qCP6v/Oz8njsm8+xOBP0I+Mz8njsm8+xOBP0I+Mz936wU/WxohQAjNDL+YNTA/Se8gQEKkI73K1/A+pPAfQKGw6j7wejm9yh0cQAjbGj82xge/DJ4aQMEqxD6XDza/CKkaQI5qBb4Mu+i+j/IbQFFjGr9VQyg9ACYeQGmMQL+ZKAq+J9aPQPw+Rb7uvzQ/IPQIQAhUK7/uvzQ/IPQIQAhUK7+sSWU/HSgKQEL7WrusSWU/HSgKQEL7WruVHh4/fuEGQKfgHz+VHh4/fuEGQKfgHz//mR+9wykDQNWTWj//mR+9wykDQNWTWj+9Qyu/gEoAQFOBDD+9Qyu/gEoAQFOBDD8CGFy/uXkBQERs8L0CGFy/uXkBQERs8L0PMg6/1E0EQIaaN78PMg6/1E0EQIaaN7+18589CgYGQCcUfb+18589CgYGQCcUfb/xExg/dGMGQAahEb8DXEg/p3IJQPnwPLxBSQY/tHEGQEByBD+mS/W8yJkDQNpENT8gSA6/pm8BQHl35T5u5D+/1lYDQJHY371aHPu+hTgFQBHRI78rhYw9y0UFQCIsVL/YhCM8prUNQMBOi70AxB0/HJgIQGCooT7HA10/U8gIQNhbaT7HA10/U8gIQNhbaT4QhhE/1+EkQOeuhz5b3Cs/IBELQLxNsT5b3Cs/IBELQLxNsT7QSyS+ADMFQJxgQL/1Kgi+EQIdQC1xLb9Qfoq+rYoFQD1OWL9Qfoq+rYoFQD1OWL+Jqlq9aEEFQH1ucb+Jqlq9aEEFQH1ucb8TBhu+VyUFQFyGVr8TBhu+VyUFQFyGVr8AAAAAe6+ZOyiSyL5RENy9KcZAP8WC3L5e/YI+SCufu179gr6TDsE9q/NAP2m0tb4Iuc8+79kVPAAAAICiNz4+s6FBP5ISHb6iNz4+s6FBP5ISHb6Oeow+059lO456jD6IWVg9fRNAP3A4EzwAAAAARnjOuumDvj7Vjdq97UZBP3KO5j3LwYC+paLfu8vBgD77l4++Q+lAP7VmyjyyVbe+OzjGuwAAAIDE66i+axpBP5cdGL4lkZa+MQxLPCWRlr4fKJa+3PRAP93qrL6Jzzi5JR3BPvzvgL5hWDU+25bAPmzSNb4/AZA+UwjFPmPNcTq+NUI+zlzDPoNTQj67vog6ZeDIPqwEmT55Tzq+oBzBPldaOj5atIK+dQPBPnZrmLgr30C+Ca3APnm5QL57MA4+dMOhPzKqNr4Iy6+4PNyhP75rgb4sKXs+1GWhP+7tE70sKXs+1GWhP+7tE70xQxI+cFmiP62K1z2cp4i5GweiP3jhMT7peS++ZBOiP4bzCz4suV++8/mhP0xmGb02Bwe+hnKgPzeVLb4IBRO+xQSHQNe05T0PQ5e+jyuHQL/F7ryq+Ue9c7GyQIRccL7jXqy+TJGIQF7YH75AYbe+s2OHQD38gL76azC+LU2GQO9Xxr7bUyM9otKFQFh+0r59SW0+FeGFQDdOj77We4M+cU+GQJt9D72gsg8+PoaGQBQqiD18v6A9wLyGQOM0BD4nAJG+isvJPjXUXz9eJ1C/vYvHPs9j3T5r5lG/Y1G+PiLq3r4Td8y+BoiwPpl4Wb87maE+/XCsPhEZY78rq1o/jMqoPi/jzb49mWM/+n24Pm+TkD7Ijtg+IgLAPs0sUz/6Zne+MW/lPntXXD+36Q+8lnF+v3rD4L2foky/cPvXPusS2z7DAy4+sqt6v/lZ471k6l2/pJjBPkZepr7E12A9+IR3vw1Ffz7ZncK++ia8PlJLWb+gvNq8dHp9v9q9DD4WDMK9rj99v1AR5D0G1LI+cUK4Psl6Xb+yDHe9C05/v8oRLT3evVU/2HzNPh7QwL6Cmya9UH1/v8O1RT0Qilc/a2P3PkHhdT4ohxC+jFZ9v3Hz4jw2QN4+JbnzPk/MQz8UgQK9FYJ+v3vq0r2F57k9Ukl+v9dLkr1iKhI9QsF6v2T1Sj5AXTC9f9J8v3uuGj6n8eG950J7v6tNID6CXdi9eCd+vz/4Zz1+bAO+weB9v+ReyTvuWCa+E5V8v9zHPLyP+/O9UuV9vzg0Pz1rjga/CpQPv2nBI790/Nm7pAN8vyLdMz4YX2+/p7iuPnfXxL1/dYE+bAV3v6SVkL2QR3K/gJukPjJu/TwJPWq/RX/Hvel2yL4zIb69mMppv3kayz71pi6+uMd7vxD0dT1A/DI/z2KsPhZ3IT/WCiO9zZN8v+zUIT4Z1gE/oQvvPv9zOT/+JRC+yAN8v/CJ1z1jvEo/myjWPofB4z5HJnk9m8N7v0u9Lj773p49vuijPni2cT/xSm8/RfGaPj22Pj5p12C/mPGoPigqsT4LJl6/9dnFPgv/n77ohaK+0dXjPjpfVr/Qjrs+ga3wPpKSTb+tEFQ/9E3uPqOWn74Hj04/7UHWPrZ51T4AHag+EYS+PsdAXj9R4q++lfCbPjttYz8ibYG8Cjx/P47pmj00kV2/2au2PhIFtD7iBA4+7+x7vxyJ470xHVy/mTjcPiLgjL5SYj0+4Wx7v9DQDr2GhrG++QTUPnNzV7/ZiPm9gyd9v2WHrr3fIyo9wWx9v4F+Cr5VoLI+HekHP5y0Rb+9eaM9Dcp9v4AV1b2mb0s/jPcIP5LUkr5/3NQ9Ao5+v60Pr7xeRUY/eGT9Pi+4yT7qkXo9xGt/v3xD5DyuQp8+3xPsPpS/VD8QyKy+2HutPnTUYD/Vxz88zN19v4ViA76RLiA+A7t6vwqiAr6x1ik+yV18v3I71by52aC9jDV/vwjfDLqNyVW6Nst/v8JUJL3qu928r09/v4+Ei73/RSW8jTx/vy2ynL2kNCE68/h+v3ROt70TYgE9sLN7v3gIOL7f9pS8AiB/v6MHpb0shEm9l5p/v9lT1LyJdQG/7kAKvzc6LL9BBS2/PBanPvgsKb9W1MG+NRUav28BNL/cGMy8oox7v7RkPL5fDQE9Vs+bPoq5cz8TpGm+GmDGPlOpZD/CvQY9S9x/vxLWMDvSHpK9CWl9vyEo+735BAM+Fr+dPoVVcT/hNku+DRGXPuVEbz9A3D69D1h+v0EX1L2sqCg/TwzhPthLHL+hkmI/SFXuPgHHq7qKEAI/w/rwPmuqOD//Xca9HTDiPm1SZD9sSzK/dj7IPoEFGj9qG3G/xdmnPtPFl73pPR6/5Y+pPgOBNr/yiLo7JULOPsJNar8Y4Yy9Wgh/PzUuWb3eQC0+XIZ7v/EJn71pMiM/6d8DP1GrEr8I1OY9YzV+vxJxEL1nSFs//RMEP9AlIrxaNyw+LQJ8v8wXU72QHAo/0tLzPqDCMT+Glcu9y8ABP3k1Wz8+k609SOF+v+EiIb14PSy/uXnpPuUiFT8SkwU+8CN9v36wk72eaWy/Ov/CPsy6PL3PbUY+IhF7v5Kwy7zfkx+/WdHNPhizK7+Mc/89tuJ9v+K+9Dxf+Iy8KkgDPxy7W78hSZo9h2V+v98Hqb3r+6I92S5/v+jCzTsRikY91KR/v98SqrxYeo49ZTt+v9x5wb2I6Kw9mNp9v0JUyL33IBs+M557v6q21r0eaE0+R656vxML9LzjegY+Pkx9vy7nej1K6Eo9+ql/vxo6VTysGWg9wI9/v8dwbrzIAxI+Zl99v9b8GTzG/k89zZp/v9qGuDyek0U/KwrxPgPb2j6dtlA/d6naPvU2yD550Nw+budZv5wnmT7Zg0g/ePmdPlMrCj/zLwo9/tV+v69wtj23vKO+4OWrPlrRYr+6EBu+1HrWPkYzZb8E7nc8h/N/v16xSTyRnfq+OpPbPltfQr9EtOI8QNV/v1oLvrybgr2+pejDPke1WL+fxKq5+fx/v9ZVHTy/K449c6OtPgkscL80iKC91uwVvU4Kf79fyyU/0HGWPsT4M7/xTx0/9J6cvDfnSb/6v3I/xf2gPpSuNb1JvE4/a5HVPSebFD+nzGA/qwX/PJhw9L4E6So/qnmKPnSSMT9eiSw/n6EaPv0gOT/VuD+9IzxyPv1xeD9V9te8O6oRPodOfT8h3Dm/s5FrPirnJT8+3k+/N5lMPZ3fFD8qSHW/ifqNPtgNkj3fdn+/PvhdPKx5gb1pNS+/Mt61Pvb/Ir/Zkz2/WwWAvEn9K78xCo09HEErvfcqf7+NAzU/2f+/PURtM7/mG3I/w/OkPjAFLT1i6SQ/sh7BPoFXKj/lTTI8yh6wPoxccD96eDe/Gbg+PscMLD/dqX6/q5RJPXgVtz0YkUC/eg4svRFXKL/S8TM/EoITPn5QMr9bSYg8/MOxPnEJcL8yeUQ//FByvs+GGD+6hV0/ICBjPTYM/74FyyI/WAVvvnZRPD/rfwc+H8o2vqSZeT8mTCy/oqBQPNJPPT+5ZXi/xKN3PseLsbtxdDO/LKrDPjQlGr/5mKu+gG6XPmEAZT/fCVO/49OWPql69z7ubVG7aXd/Px3+g71eWXO/gziCPohVNj4zE2W/AYOBPjxVvL4wcr++KYNpPjgkZr/Mc48+ZlNsPuuJbr9/rF0/+gJcPvpE575o62k/A9xgPr0Drz4dBDE/7XRfPvBLMD9h2MM+IleFPurwYj8UcG0/+2ogP+k+bD+2fR8/njFsP/Q+HD/+T20/W5UYP0Pybj8nphY/cSNwP2yTFz+7MHA/LtIaP1sSbz/Gex4/IeZ6P9DnIT8h5no/0OchP9pZeT+1syA/2ll5P7WzID+VSHk/73wcP5VIeT/vfBw/dLx6P2y7Fz90vHo/bLsXP5vbfD9gOBU/m9t8P2A4FT/jZ34/e2wWP+Nnfj97bBY/I3l+P0KjGj8jeX4/QqMaP0cFfT/EZB8/RwV9P8RkHz9WDXs/5ukgPwe/eT/55R8/d7B5P+VXHD8t6no/yFQYP2W0fD9LNhY/sgJ+Pzg6Fz9BEX4/S8gaP43XfD9pyx4/uSd3P56KGz/MPXc/TKMdP8w9dz9Mox0/gS15P6N3Hz+BLXk/o3cfPxX0aT9RfR0/aSp3P4zXHT9pKnc/jNcdP2tYfT+FJR0/sX5vPxkZHT9G0X0/d+8cP0bRfT937xw/Ukt9P3V/Hj9SS30/dX8eP5GkfT/Mih0/kaR9P8yKHT+RpH0/zIodP4hHcD9ShBY/iEdwP1rqFz+IR3A/ukobP4hHcD8Zqx4/iEdwPyIRID+IR3A/GaseP4hHcD+6Shs/iEdwP1rqFz83+ic/wlIbP65mfj9oHxU/rmZ+P2gfFT+wZn4/VfAWP7Bmfj9V8BY/rmZ+P8JSGz+uZn4/wlIbP65mfj8wtR8/rmZ+PzC1Hz+wZn4/HYYhP7Bmfj8dhiE/rmZ+PzC1Hz+uZn4/MLUfP7Bmfj/CUhs/sGZ+P8JSGz+uZn4/VfAWP65mfj9V8BY/sGZ+P6MXFj+uZn4/3J8XP7Bmfj/CUhs/rWZ+P6oFHz+uZn4/4o0gP7Bmfj+qBR8/rmZ+P8JSGz+wZn4/3J8XP4CGeT/CUhs/Qtp7P/j2GT+uZn4/r0cYPy/ybT/B/Bk/RNp7PxDIGT+uZn4/zCQZP4hHcD9UMRk/rmZ+PyQwGT+uZn4/JDAZP65mfj+8wxc/rmZ+P7zDFz8DmX4/JLIYPwOZfj8kshg/9VFoPwsqHj/AAmo/Tv0aPwffaz/mfhc/zM9sP8K6FT8FSGw/vLkWPzyXaj955hk/87poP+JkHT8uymc/BikfPyBPKD/UBBo/5qF0P7NUHz/moXQ/s1QfP+bTdj9SNRs/5tN2P1I1Gz9ePnk/5KsWP14+eT/kqxY/BHd6P8VgFD8Ed3o/xWAUP7PGeT/eqxU/s8Z5P96rFT+0lHc/P8sZP7SUdz8/yxk/Oyp1P6xUHj87KnU/rFQeP5Xxcz/NnyA/lfFzP82fID/bCHU/WpMeP/fidj8DGRs/uux4PzZFFz979Hk/5FUVP75feT84bRY/ooV3P47nGT/ge3U/XLsdPxx0dD+sqh8/2cByP1J5Gj9+2XU/cqkYP8qvdz9kmBk/yq93P2SYGT+zBWk/JNUYP3LPdT9QvBg/cs91P1C8GD904HQ/Od8eP0MlaD/8fR4/lId0PyCGHz+Uh3Q/IIYfP3ksdD84MSA/eSx0PzgxID8Ru3Q//nsfPxG7dD/+ex8/7BV5P+zA6T4ZUlw/KPDoPuwVeT960ew+GVJcP3oE6z7sFXk/kjf0PhlSXD+WCfA+GVJcP5YJ8D7sFXk/qp37PhlSXD+0DvU+7BV5Pziu/j4ZUlw/BCP3PuwVeT+qnfs+GVJcP7QO9T7sFXk/kjf0PhlSXD+WCfA+7BV5P3rR7D4ZUlw/egTrPgK0aj9wF+0+ArRqP7Yt7z4CtGo/kjf0PgK0aj9uQfk+ArRqP7RX+z4CtGo/bkH5PgK0aj+SN/Q+ArRqP7Yt7z7i1Eg/tOvuPuLUSD+SKO0+4tRIP9Is8z7i1Eg/0izzPuLUSD/0bfc+4tRIPxQx+T7i1Eg/9G33PuLUSD/SLPM+4tRIP7Tr7j4DM1g/kYseP0N8Vz95/R0/2pwoPzsSGz/UHFY/ncocP010Vz/0Cxw/zR9YP3PaGT9MGlk/4rEYPw7RWT/6Pxk/BNlZP38xGz9lblk/mI4cP4QtWT8AYx0/JQABALIAJQCyALQABAADALYABAC2ALcAAQAAALEAAQCxALIAAgAlALQAAgC0ALUABwApALoABwC6ALsAKQAGALkAKQC5ALoABQAGABUABQAVABMABQAEALcABQC3ALgAAwACALUAAwC1ALYAEAASAB0AEAAdABwAAAABAAoAAAAKAAgABAAFABMABAATABEAAwAEABEAAwARAA4AAgADAA4AAgAOAAwAAQAlACMAAQAjAAoABwAAAAgABwAIABcABgApACsABgArABUAHgAoACAAKAAfACAADQAPABsADQAbABoACQALABkACQAZABgAFgAJABgAFgAYAB8AEgAUAB4AEgAeAB0ADwAQABwADwAcABsACwAkACIACwAiABkAFAAqACgAFAAoAB4AHAAdACAAGgAbACAAGAAZACAAHwAYACAAHQAeACAAGwAcACAAGQAiACAAIgAaACAAIgANABoADQAiACcAIwAlACYADAAlAAIAJgAlAAwAJgAhACMAKAAsABYAKAAWAB8ALAAoAC4AKwApAC8ALQApAAcALQAHABcAMAApAC0ALgAoACoAMQA5ADIAMgA5ADMAMgAzAFUAMwA5ADQANAA5ADUANQA5ADYANgA5ADcANgA3AEcANgBHAEUANwA5ADgANwA4AFgAOAA5ADEAQgBEAE8AQgBPAE4AMQAyADwAMQA8ADoANQA2AEUANQBFAEMANAA1AEMANABDAEEAMwA0AEEAMwBBAD4AMgBVAFQAMgBUADwAOAAxADoAOAA6AEgANwBYAFkANwBZAEcAUABXAFEAUABRAFIAPwBAAE0APwBNAEwAOwA9AEsAOwBLAEoASQA7AEoASQBKAFEARABGAFAARABQAE8AQABCAE4AQABOAE0APQBUAFMAPQBTAEsARgBaAFcARgBXAFAATgBPAFIATABNAFIASgBLAFIAUQBKAFIATwBQAFIATQBOAFIASwBTAFIAUwBMAFIAUwA/AEwAPwBTAFYAVABVAFYAPgBVADMAVgBVAD4AVgBTAFQAVwBbAEkAVwBJAFEAWwBXAF4AWQBYAF0AXABYADgAXAA4AEgAXQBYAFwAXgBXAFoAXwBnAGAAYABnAIQAZwBhAIQAYQBnAGIAYgBnAGMAYwBnAGQAZABnAGUAZABlAHQAZAB0AHIAZQBnAGYAZQBmAIgAZgBnAF8AcQBzAH0AcQB9AHwAXwBgAGsAXwBrAGkAYwBkAHIAYwByAHAAYgBjAHAAYgBwAG4AYQBiAG4AYQBuAG0AYACEAIMAYACDAGsAZgBfAGkAZgBpAHYAZQCIAIkAZQCJAHQAfgCHAH8AfgB/AIAAbABvAHsAbAB7AHoAaABqAHkAaAB5AHgAdwBoAHgAdwB4AH8AcwB1AH4AcwB+AH0AbwBxAHwAbwB8AHsAagCCAIEAagCBAHkAdQCKAIcAdQCHAH4AfAB9AIAAegB7AIAAeAB5AIAAfwB4AIAAfQB+AIAAewB8AIAAeQCBAIAAgQB6AIAAgQBsAHoAbACBAIUAgwCEAIYAbQCEAGEAhgCEAG0AhQCBAIIAhwCMAHcAhwB3AH8AjACHAI4AiQCIAI0AiwCIAGYAiwBmAHYAjQCIAIsAjgCHAIoAoACQAJIAoACSAKEAoQCSAJUAoQCVAKIAogCUAJcAogCXAKMAowCXAJkAowCZAKQApACZAJsApACbAKUApQCbAJ0ApQCdAKYAnQCbAK4AnQCuAK8ApgCdAJ8ApgCfAKcApwCfAJAApwCQAKAAngCnAKAAngCgAI8AnACmAKcAnACnAJ4AmgClAKYAmgCmAJwAmACkAKUAmAClAJoAlgCjAKQAlgCkAJgA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KAClACcAlQClAJgAEwAzAJgAMwCXAFIAGQAjAAMAUgCdACMAGQBqAFIAIwCdAJkAEQBQAFsAEQCZABEAVABQAHcAmQBQAJoAmwAKAJoAEgCbAHAAmgAKAA4AGgCcABoAPQCcALQADgBMABoAGwA9AJwAPQBNAEwAnABNAJ0AngAgAAMAnQBKACEAngAiACAAngAhACEAnwApACEAFQCfAKkAWQCUAKkAlAAeADgAIQBGABUAFACfAJ8AFAApAKAAHQCMAGQAjACUAIsAHwCgAJQAHQAeAIoAiQAfAIkAxQAvAB8AoQA5AKIAQwBNAD0AGwCiAAAAPwCiAD8AQABDAEMAQAAEAIcAJQCkAFsAhwCjAAgAJQCHAKMApAAYAKMAEQBbAIMApQAIAKUAFwAmACgAFgClAAgApQAlAKYAJAAXAEIAJACmACQAuAAXABcAuAAmAD4ApwBCAKgAQQCnAE0AqACnAKgAQwBBAD4AQgCmAKoARQCpAB4ANQCqAKkARQANADcARgCrAEUAqwAqADYANwBEADcAOABGAKsARwAqAKwASABJAK0ASACsAB0ArQCsADkArQAdADwArgA2AEgANgBJAEgAPAA2AK4AAwBKACsASwAoABIAKwCVAAEASwAsAEsAPgCmACgApgAWAC4ArwAtAE0ApwBMAEwApwCvAAEArwBLALAAsQCBALAAsgCxABoAsABdAA4AsgCwAIEAsQDIALQALQCzAG4AswB/ALQAswBuAAEAmgBwAHAACgB/ALUAtgB9ALUAVQAzAHwACwC1AE8AVQC1ADMAEwC2AE8ANABVAHkATwALADoAtwA7AFEAMgADADsAUQA8ADAAMQBRADEAMgBRADIAAgBSADIAUgADALgAuQAYAFMAuQC4ACQAUwC4AFMAVAC5ABgAVAARAEEAVQC6AEEABABVALoAVQA0AEcAuwC8ALwAeAAqACoAcgBFAHYAvAC7AAwAvgC9AL0AcwB4AAwAdwC+AHQAeQALAL4AdABzAL8AegANAEUAcgC/AL8AcgB6AHoAewBaAA0AegBaAHwAwQDAAMAAcwB8AMEAfAC1AHsAfQDYADEAfgDCAAkAfgAxAMIAcQBOADEAwgAyAMMAcQDEAH8AwwBvAH8AjQDDAMUAgAAwAMYAxwAGAMYAyADHAF8AxgAGAMgAbgBvAMgAbwDHAGsAggDJAIIABwCFAG0AgwCEAGkAhAAIAGgAhABpABQAFQDKAGcAygAVAIUAhgAFAMoABQAUAIYAywBbAAUAhgBcAAcAaADLAGgAaQDLAGkACACHAGkAhwDLAIYAWwBcAMwAXQBlAF0AXgCIAMwAZQDNAIgAXwCJAF4AXwCIAIoAiwDOAIsAjABkAM4AZABjAAIATgAPAI4AVgDPAM8AEAAPAAoA0ACNAI4AVwBWANEAdgB1ABQA0QApAAUAjwDRAFwAWwCQAJAAWwCZAGoA1ABrANQAVgDVANQAkQBrAJEA1QDWAFcA1wDVABwAkgATAGIAkgAcAJIAfQC2ANkAZACTANkAkwBaAFoAlABZAFoAkwCUAJMAZACUAJgAlwAEAJgABACWAFgAEgCVAAQAQACWABwAlgA/ABwAPwAAAD8AlgBAABMAmACWABMAlgAcACsAEgCaACsAmgAsAFUAlwAzAAQAlwBVABkAUgAQAAIADwBSAFIADwAQAJAAmQB3AAEALACaAJ0AIAA4AJ0AOABKAFgAmwASAAoAmwBYAA4AnABMAJ0AIwCeAGoAyQCeAGoAngAjACEAKQBHACEARwBGAJ4AyQAiAEQAqwBFAEQARQA1ADgAIAAhACEAIgAVAIsAoACMAIwAHQCUAIsAigAfAKAAHwA5AB0AoAA5AB8AiQChAKEAiQAvAKIAPwBDAE0APQCiABsAAACiAIcApACjACUAJgCkABEAowAYAIQAgwAIAIMAJwClABcApQAWACUApQAmABYApgAXAKcAQQBCAKgATQBDAEEAQwAEAKoANQBFAB4AqgCpADUASQBEADUAHgAdADUAHQCsAKsARAA3AKsARgBHAEQASQA2AEgArQA6AEgAOgA7ADkAOgCtAHAAswAtAHAALQABAKwASQA1AK4ASgA4AEgAOwA8ADwAAwCuADcArgA4ADYArgA3ACsALABLAJUAKwAoACgASwCmAAEALQCvAC4ATACvALQATAAuAD4ArwCnAEsArwA+ALEAsgBuAF4AXQCBAF0AsACBABoADgCwALIADgC0ALIAtABuAMgAsQBuAE8AeQB3AE8AdwBQALQALgAtAH8AswBwALUAMwC2AAsATwC1ADoAoQAvADoALwC3AE8AUAA0ADQAUABUAFEAOwC3AFEAtwAwAC8AMAC3AKQAJgC4AKQAuAAYADkAoQA6ADwAUQADALkAVAAYACQAQgBTAFMAQgBBAFMAQQC6AFQAUwC6AFQAugA0AHYAuwBHAHYARwB1ACoARwC8AL0AvAB2AL0AdgAMAMEAfQB7AMEAewDAALwAvQB4AHIAKgB4AHMAvQC+AL4AdwB5AHQAvgB5AEUAvwANAHoAcgB4AMAAegB4AMAAeABzAHsAegDAAAIAMgDCAAIAwgBOAHwAcwB0AHQACwB8AH0AwQC1AH4ACQBvAH4AbwDDAMMAjQBxAMIAfgDEAMIAxABxAG4AfwBvAH8ACgCNAG8ACQCAAG8AgADHAH4AwwDEAIkABgDFAMUABgCAAIAACQAxADAAgAAxAC8AxQAwAF8AXgDGAF4AgQDGAMYAgQDIAIQAaACCAIQAggBsAAYAxwCAAGoAawDJAGcAyQCCACIAyQBnAGsAkQCCAGcAggCFAM0AGwAaAM0AGgDMAGwAbQCEAIIAkQBsAG0AJwCDAAcAggBoAAUAygCFACIAZwAVAMoAZwCFAIYABwDLAIUABwCGAMsAhwBbAF0AiABlAGIAYQDNAGIAzQDOABoAXQDMAGYAZQCIAIoAiACJAIgAigBmAF8ABgCJAGAAzQBhAM0AYAAAAM0AAAAbAM0AZgDOAM8ATgBxAM8AcQCNAM0AZQBmAGYAigDOAM4AiwBkAGIAzgBjAM8AVgAQANMA0gCPANMAjwBcAM8AjQCOABAAVgAZAE4AzwAPAI0A0ACOAI4A0ABXANAACgBYAFcA0ABYANEAjwB2AEcAKQB1ACkA0QB1ABQABQDRAHYAjwDSAHYA0gAMANMAXACQAHcADADTAHcA0wCQAI8ABQBcANQAagAZANQAGQBWAAwA0gDTAG0AbACRAG0AkQDWANQA1QCRANUA1wDWAFYAVwDVAFcAWADXANcAWAAnANYA1wAnAG0A1gAnAGMA2ACSAGMAkgBiAAAAYAAcAGAAYQAcABwAYQBiABMAkgC2AJIA2AB9ANkA2ABjANkAYwBkAHsA2QBaANgA2QB7AGbLw76huds9DgPUPu47E791FFM/Q8PkvnFjBD/rRBw/vXTsvu+5AL6PadI8usLuPvLqPj71Gx483EnyviWJkz7eiHw/aQ0kPquWsj5vp1s/REnfvvsBCT+vPFg/Oei8vr3+377EUbs8LC7Xvpg+/L4NMWI/FU7UPo0cGr/BIMy8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KgClACkAKgA2ADcAKQA3AEcARAAZADMAAgCmALEApwCnALEARgCnAEYARwA2AKcANwBIAD4AoQATACEAJwA8AD0ALACoAD0APgBIAKgAPgADAKgASABXAHYAdQBXAHUAxAAXAKkAVwCpACwAYwArAAMAqgBLAC8ACwAFAEsAcQBLAK0ATACtADIAMQCrAEsABQCuALAAOQAtAAQAsACwAE0AOQCxAC4ATgC/AC4AsQBOAB8AsQAiALIAIwAiALMAsgCzADIAsgCyADIACQCyABQAIwBAADEAtAC0ALMAQQBAAE8AMQC1ALYAtwC1ALcAbgAqALUAaQApALUAKgApACgAtgBrAG0AtgBtAGoAbgCGALgAbQC4AHAAagC6AG4AuwC6ALsAUgAHALoAUgBSALsAUwBwAAUAvAC+AHIASgBlAMAAZgBzAIIAwADBAIIAaADBAHIAvgAOAMIAFgAtAL0ABADEAMUAdABhAHcADwARAA8AxwBhAGIAdwAPAF4AxwBfAMYAeAB3AIgAxgBfAHgAYAARAMcAAQDIAHoAhABWAHsAVQAXAMkAXAAXAFcAfADJAHwAfQBcAMkAfQDEAMoAfABdAIAAzAB9AMwAWgBdAMwAfQDMAFsAWgDNAM8AzgAuAEoACABoAM0ASgDPAFAAzgDQAFEA0QCDANAAggDQAAoAUQDRAFEAiQCFAIYAawANAIQA0gBsAIcAbwCEAGwAhQB6AFYAhAAVANMAYQAVAGEAEADTAIgAYgDUANUAiABQANQAiACJANQAUADXAIsA1gAMABgA1gDWAIsAVAALANYAVADYANkAUwBaANgA1wDZAFsAjADZAIwAUwBTAIwAUgBUANgAUwCNAIwAGgASABMAjgASAI4AjwBSAIwAjQCMAFsAGgAaABsAAgAKAI8AiQAKAIkAUQCKAI4AJQCJAI8AjgAnACYAjgAnAI4AEwAvAEwATwAvAE8AMAAaAAcAUgAaAFIAjQA/ADAAQwA/AJAAMACQABgADAAwAJAALwAVABAAIAAVACAAkQBOACAAHwBOAC4AIAAuAJEAIACTAJIAbwCTAG8AhwBvAJIArAASAAoAlAASAJQAAACTAFUAFACsAJIACQBnAAMAAAAeAB0ARgAeAEYAlwAXAJYAlQCWADoAOwCYAEQARwCYAEcAHQCXABAADwCYAB4AAQABAB4AEQBEAJgAKAABANIAKAABACgAmACYAB0AHgAZAAIAGwAZABsAmQCBAJkAGwCBAIAAHACbAJoAfwCbAH8ADgCvAJwAmwCvAJsAFgCAAJoAHAB/AH4ADgCbAA4AFgA4ABwAnAA4AJwArwCdADoAXACdAFwAWACaAJwAHACdAD8AQwBJADsAnQCeAHsAYACeAGAAJgA/AFgAGAB7AJ4AVQAUAJ4AnwAUAJ8AIwCeACYAnwBDAEAAogBDAKIAQgBVAJ4AFABgAHgAJgCfACYAJAAnACEAoAAnAKAAIwCiALQAQQCiAEAAtAA+AD0AogCiAEkAQgCkAKMAAgCkAAIAMwAHABoAowApAKUANQApADUANgAzADQApABFADQAMwBFADMAGQClADQANQApADcARAApAEQAKAA5AEUAGQA5ABkArgA4AK4AGQCnADYANQCnADUApgA1ADQARQA1AEUApgAhABMAEgAhABIASABFADkApgCxAB8ARgA3AKcARwASAAAASACoAAMAKwCoACsAPQAAAAMASAAhAEgAoQBkAHYAqQBkAKkAYwArACwAPQBXAKkAdgArAKoAYwArAGMALABkAGMAqgCqAAMAZwCxAKYAOQCxADkATQCqAGcAcwBkAKoAcwBxAEsACwBLAEwALwALAC8ADABUAHEACwCrAK0ASwCrAKwArQAFAHAAqwCrAG8ArACtAKwAMgBMAK0AMQCvALAArgCvAK4AOAAWALAArwAWAC0AsACwAAQATQC/ALEATQC/AE0ABABvALkAuABvALgAbAAiAEEAswCyAAkAFAC0ADEAMgBAAEMATwBPAEwAMQCzALQAMgC3ALYAbQApALYAtQC2ACgAawBrAIYAbQC3AG0AbgC1AG4AaQBqAG0AuAC4ALkAcAC4AIYAbAC8AFQAUwC8AFMAuwC5AG8AqwBwALkAqwAGAGkAugAGALoABwAGACoAaQC6AGkAbgBwALwAuwBwALsAagBuAGoAuwAFAHEAVAAFAFQAvAC+AL0AZgC+AGYAwAC/AL4ASgC9AL4ABABKAHIAaAC/AEoALgAEAL4AvwDAAIIAwQDAAGUAZADAAGQAcwDCAA4AfgDCAH4AdAByAMEAaAC+AMAAwQAtAMIAwwAWAMIALQBmAMMAwgBmAMIAdADFAMQAdQDFAHUAdgDDAGYAvQAtAMMAvQB+AMQA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vQAzADQAIAC+ACAAHwC+AB8AMgAyAB8AIgC+ADIAMQC/AOsAPgDAACEAvwAxAMAAvwAyACIAIQAvADAADwDCACsADQCiAC8ADwDDAAEAMAAvAMMAMAAqAFQAUgBTAFQAKgBSAFcAYABYAFQACQBUAFgAVwA5ACYAxACgABEAxAA6ACUAJgAmANwAcwA8AMYAxQCeAMUA6gA7AMUAngA8AD0AxgDFADoAOQARAMUAOQDHADcAOABWADcAxwA2AMcAIwAIAMcANQAIAFYAxwDHADgAIwDJAFgAVQDRAMgA0ABVAAoAVgAWAC0AFQBKAEsALgBLAFwAWQBLAFkAFQBMAMoAWQDKAF0AWgBKAE0AywDLAFwASgArAEoALgABAE0ALABNAE4AywDLAE8AWwBKAFwASwBbAMwATABPAMwAWwDMAFEAzQBbAEwAXABPAFAAzABQAFEAzABRAL0AzQDNAL0AXQBMAMwAygBBAM8AJABCAM8AQQBCAAQAzwBeADUAzwBeAAgANQA1ADYAzgAkAM4ANgBDANEA0ABEAF8A0QBeANAACAB1ANIA0wC7ANIA8ADTAJoAmQB1ANMAmQCCANQAlgCaAIIAlgBDAAQARACWAIUAhgBmANYAGgATAGUA1QBlAGYA1QBmAAYARwAHAEgA1wAUANcAkQBlAAYAZgDYANkATgAoANgAwwDYAGMA2QBFAGsA2gBpANoATwBoANoAaQAFAEUAaABFAGoAawBRAGsAvQDaAFAATwA4ACUAOgA4ANsAJQAKANsANwBsAAcA3QAlANwAJgDeAG0ASABVAAkA3gBJAAcAbAA/AI8AQACPAJAA3wBZAEAA3wCLAI8APwCQABIA3wDgAI0A4QCQAIkAEgCOAJEAjQDhAJEAkgAWABUA4gBZAN8AFQDiALEAcQAWAOIAcQCTAIkA4wDiAHIAsQCTAHIA4gBiAOQAYwBiAGEA5ACUAJUA5QDlAJUAZADmAOcAgwDnAIgAlACaAJYA5gCWAIcA5gCUAIgAlQAeAGIAYwB2AJcAHQCYAGIAlwAoAB4AYwDoAIMAmAB2AOgAlwB1AOgAdgCDAIQAmACXAOgAmAAAAJsA6QCbAJwA6QAgAOkAHwAAAH4AmwAiAOkAfACAAOoAnQCAAJ4A6gAQAJ0AfQCbAIAAnACBAJ4AgACBADsAngDqABEA7QDqAO0AfQDrAOwAnwB8ABAA7ADtAKAA7gAQAO0AnwAQAH0A7QApAO8AegApAPAA7wB1APEA8AChAPEAewDxAHYA8gChAHsADgDzAKMAdwADAHoAKgDzAA4A9AD0AHkAeAD0AHsAeQD0AHgAowB5AMEADQBkABgARQBkAPUAGACVAPUAZAD1AKQA9gD2AKQAbgClAKYA9wD3APgApAD4AHAAbwD3AKQA9QD6AKcA+QDrAPkAPgD6APkA6wD9AKkAqgCNAP0AjgB+AP4AqwB+AKsArAAnABkA/gD+AG4AqwBvAAAB/wCBAK0AOwD/AIEAgACjAK4AAgEDAQQBsQCuAAMBrwCuAAQBAwF5AA0ABAGqAKkAqACqAKgAtwArAC4ALQCyAC0AcQALACQAswCzACQANgC1AAEBRgAJAFQAtQBUAFMAAQFTAAIAAQFHALUARgC1AEcAbQBqABkAtgBFABgAagA0ABkAJwC4ALcAcwDcAN0AuADcALgAcwC3AHQAcwC6AAQAQgC6AEIAQQBnALgA3QBnAN0ABwAUAKoAZwC5AIUAugCGALkApQCmAKUAuQCmALkAugAxAF0AvQAxAL0AvgAXALwAXwApAHoAuwC8ALsAAwBgALwAUgBfALwAYAC+AL0AMwAzACAAvgAxAL8AWgAxAFoAXQA0AAAAIAC/ACEA6wBaAL8APgAyACEAwAAyAMAAMQAwAMIAwQAwAMEADwAoAMMALwAoAC8AHQDCACwAKwDCADAALAAwAAEALAANAMEAwgAmAHMAdAAmAHQAxADyAB0ALwDyAHYAHQAdAB4AKAADACoAUgAqAAIAUwBSAFQAVwDEABEAOQA5ADoAJgAjAMYAPQAjAD0ANgB0AKAAxAA7ADwAxQDFAMYAOgDqAMUAEQAjADgAOgAjADoAxgDJAMgAVwDJAFcAWAA2ADUAxwBWAAoANwDIANEAYADIAGAAVwAIANAAyADJAFYACADJAAgAyABVAFgACQBWAMkAVQA/AEAAygA/AMoAWgAtAEsAFQAtAC4ASwBcAEwAWQA/AFoAPgBPAMsATgBPAE4AaQBAAFkAygArACwASgAsAE0ASgBdAMoAzABdAMwAzQDLAFsAXADQAF4ABADQAAQAQwAkAM8AzgDOAM8ANQAEAF4AzwBDAEQA0QDRAF8AYABEANQA0gBEANIAFwB1APAA0gC7ABcA0gCCANMA0gCCANIA1ACFANQARACFAEQABACaANMAggCWANQAhQBGANYAZgBGAGYARwDVAGYAGgATANUAGgBIAAYAZQBIAGUA1wDWAEYAGwAaANYAGwBnAAcA1wBnANcAFAATAJIAZQCSANcAZQCSAJEA1wBoANkAYwBoAGMABQAHAEkASAABAMMA2AAoAGMA2ABpAE4A2QBpANkAaABOAE0AAQBOAAEA2ABrAFEAUABrAFAA2gBoAEUA2gDcACUA2wDcANsA3QBsAN0A2wBsANsACgA4ADcA2wCSABMAigCSAIoA4QDeAAkAbQDeAEgASQBVAGwACgBVAN4AbABIAG0ABgDeAEkAbABAAI8A3wA/AD4AiwCPAIsAjAAtALIADQAtAA0AKwCQAOAA4QCNAJEA4QCQAI8A4ACPAI0A4ACPAIwAjQCRAI4AFACKAIkAkACKAJAA4QASAJMAFQASABUA3wDiABUAkwCvAHIA4wCvAOMAGgCTAOMAcgCJAIoA4wASAIkAkwDjAIoAEwDjABMAGgDlAOQAYQDlAGEAlADkAOUABQDnAJQAhADnAIQAgwBjAOQABQBhAIQAlABFAOUAZAAFAOUARQCEAGEAYgCEAGIAmADnAOYAhwCaAOYAgwCWAIYAhwCIAOcAhwAeAJcAYgAeAB0AlwCDAOgAmQCDAJkAmgB1AJkA6ACdABAAfACdAHwAnAAiAB8A6QAgAAAA6QCbAH4AfwDsACEAIgDsACIAfAB8AOkAnACcAIAAnQCbAH8AgACdAOoAfQDrACEA7ADuAAwAnwDuAJ8A7QCfAOwAEAAcAOsAnwDxAKEA7wDxAO8A8ACgAO0AEQDuAKAAdAApALsA8ADyAKIAewDyAHsA8QDvAKEADgDzAHcAAgDzAAIAKgB1AHYA8QDyAC8AogDBAHkAewDBAHsADwAqAHoA8wDzAHoA7wDzAO8ADgCjAPMA9AD0AA4AewB7AKIADwAZABgA9gAZAPYAbgD1APYAGAD4APcApgD4AKYAcAD1AJUAiAD1AIgA9wD3AIgAhwD3AIcApQAMAPoAHAAMABwAnwCHAIYApQD4AG8ApAD6AAwApwA+APkAiwD6AOsAHACnAIwAiwCnAIsA+QCpAPsA/ACpAPwAqAD9APsAqQCNAIwApwCNAKcA+wD8APsApwD8AKcADACoAPwA7gCoAO4AdAAMAO4A/AAUAI4A/QAUAP0AqgD/AIAAfwD/AH8ArACNAPsA/QAnAH4AAAAnAP4AfgD+ABkAbgBuAKQAqwB+AKwAfwD/AAABgQCtAAABcACtAHAACwCsAKsA/wCrAG8A/wCrAKQAbwAAAW8AcAAaABsAAQEaAAEBAgGBAAABrQABAQIAAgECAHcAAgECAXcAowACAa4ArwAaAAIBrwB4AAQBrgB4AK4AowCvAAMBcgB4AHkABAEEAQ0AsACxAAQBsAADAbEAcgAmSEa+AAAAAFUbjz0mSEa+AAAAAFUbjz1Pxo2+YHnfPwaFrT1Pxo2+YHnfPwaFrT0mSEa+AAAAAFUbj70mSEa+AAAAAFUbj71Pxo2+YHnfPwaFrb1Pxo2+YHnfPwaFrb0mSEY+AAAAAFUbjz0mSEY+AAAAAFUbjz1Pxo0+YHnfPwaFrT1Pxo0+YHnfPwaFrT0mSEY+AAAAAFUbj70mSEY+AAAAAFUbj71Pxo0+YHnfPwaFrb1Pxo0+YHnfPwaFrb1aK5y8AAAAAFUbj71bK5w8AAAAAFUbj70cZ7o8AAAAQAaFrb0cZ7o8AAAAQAaFrb0cZ7q8AAAAQAaFrb0cZ7q8AAAAQAaFrb1aK5w8AAAAAFUbjz1bK5y8AAAAAFUbjz0cZ7q8AAAAQAaFrT0cZ7q8AAAAQAaFrT0cZ7o8AAAAQAaFrT0cZ7o8AAAAQAaFrT0AAAC/Pov9Ptm4yT0AAAC/Pov9Ptm4yT0AAAC/+0gtP9m4yT0AAAC/+0gtP9m4yT0AAAC/+0gtP9m4yT0AAAC/Pov9Ptm4yb0AAAC/Pov9Ptm4yb0AAAC/+0gtP9m4yb0AAAC/+0gtP9m4yb0AAAC/+0gtP9m4yb0AAAA/Pov9Ptm4yT0AAAA/Pov9Ptm4yT0AAAA/+0gtP9m4yT0AAAA/+0gtP9m4yT0AAAA/+0gtP9m4yT0AAAA/Pov9Ptm4yb0AAAA/Pov9Ptm4yb0AAAA/+0gtP9m4yb0AAAA/+0gtP9m4yb0AAAA/+0gtP9m4yb0BAAC/gB+XPx+K5j0BAAC/gB+XPx+K5j0BAAC/tLOxPx+K5j0BAAC/tLOxPx+K5j0BAAC/tLOxPx+K5j0BAAC/gB+XPx+K5r0BAAC/gB+XPx+K5r0BAAC/tLOxPx+K5r0BAAC/tLOxPx+K5r0BAAC/tLOxPx+K5r0BAAA/gB+XPx+K5j0BAAA/gB+XPx+K5j0BAAA/tLOxPx+K5j0BAAA/tLOxPx+K5j0BAAA/tLOxPx+K5j0BAAA/gB+XPx+K5r0BAAA/gB+XPx+K5r0BAAA/tLOxPx+K5r0BAAA/tLOxPx+K5r0BAAA/tLOxPx+K5r2XtX+/RSJDvQAAAIAu5Zc7pCIAvEz9fz9lqm6/GjO5PgAAAIAu5Zc7pCIAvEz9fz+XtX+/RSJDvQAAAIAu5Zc7pyIAvEz9f79lqm6/GjO5PgAAAIAu5Zc7pyIAvEz9f78u5Ze7pyIAvEz9fz+XtX8/RSJDvQAAAIAu5Ze7pyIAvEz9fz9lqm4/GjO5PgAAAIAu5Ze7pCIAvEz9f7+XtX8/RSJDvQAAAIAu5Ze7pCIAvEz9f79lqm4/GjO5PgAAAICbtxc7zMb5u+39f7+btxe7yMb5u+39f7+UBcu61qH3uw3+f7826sM+YIRsPwAAAIA26sO+YIRsPwAAAICUBcs62KH3uw3+f7+btxe7zMb5u+39fz+btxc7yMb5u+39fz826sO+YIRsPwAAAICUBcs61qH3uw3+fz+UBcu62KH3uw3+fz826sM+YIRsPwAAAIAAAIC/AAAAAAAAAIAAAAAAAAAAAAAAgD8AAIC/AAAAAAAAAIAAAAAAAAAAAAAAgD8AAAAAAACAPwAAAIAAAIC/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAIC/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAAAACAPwAAAIAAAAAAAAAAAAAAgD8AAIA/AAAAAAAAAIAAAAAAAAAAAAAAgD8AAAAAAACAPwAAAIAAAIA/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAIA/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAAAACAPwAAAIAAAIA/AAAAAAAAAIAAAIC/AAAAAAAAAIAAAAAAAAAAAP//fz8AAIC/AAAAAAAAAIAAAAAAAAAAAP//fz8AAAAAAACAPwAAAIAAAIC/AAAAAAAAAIAAAAAAAAAAAP//f78AAIC/AAAAAAAAAIAAAAAAAAAAAP//f78AAAAAAACAPwAAAIAAAAAAAAAAAP//fz8AAIA/AAAAAAAAAIAAAAAAAAAAAP//fz8AAAAAAACAPwAAAIAAAIA/AAAAAAAAAIAAAAAAAAAAAP//f78AAIA/AAAAAAAAAIAAAAAAAAAAAP//f78AAAAAAACAPwAAAIAAAIA/AAAAAAAAAIBaIWg/vpGZPlohaD++kZk+cuwvPx6wlz5y7C8/HrCXPlohaD++kZk+WiFoP76RmT5y7C8/HrCXPnLsLz8esJc+WiFoP2yLrj5aIWg/bIuuPnLsLz8ObbA+cuwvPw5tsD5aIWg/bIuuPlohaD9si64+cuwvPw5tsD5y7C8/Dm2wPlohaD9CBqM+WiFoP+oWpT4wvic/yBKlPjC+Jz/KEqU+ML4nP2QKoz4wvic/YgqjPlohaD/qFqU+WiFoP0IGoz4wvic/ZAqjPjC+Jz9iCqM+ML4nP8gSpT4wvic/yhKlPtO/Tz+MjZc+079PP4yNlz53a0U/jI2XPndrRT+MjZc+d2tFP4yNlz7Tv08/jI2XPtO/Tz+MjZc+d2tFP4yNlz53a0U/jI2XPndrRT+MjZc+079PP+SZrj7Tv08/5JmuPndrRT/kma4+d2tFP+SZrj53a0U/5JmuPtO/Tz/kma4+079PP+SZrj53a0U/5JmuPndrRT/kma4+d2tFP+SZrj5f9DM/jI2XPl/0Mz+MjZc+A6ApP4yNlz4DoCk/jI2XPgOgKT+MjZc+X/QzP4yNlz5f9DM/jI2XPgOgKT+MjZc+A6ApP4yNlz4DoCk/jI2XPmH0Mz/kma4+YfQzP+SZrj4DoCk/5JmuPgOgKT/kma4+A6ApP+SZrj5h9DM/5JmuPmH0Mz/kma4+A6ApP+SZrj4DoCk/5JmuPgOgKT/kma4+GQAXABYAGQAWABoAFAAGAAIAFAACABgAAAACAAYAAAAGAAQAFwAZAAMAFwADAAEAEQASAA4AEQAOAAwACAAKABoACAAaABYADwATABsADwAbAAsAFAAYABsAFAAbABMAEgARABAAEgAQABUABQAHABUABQAVABAAIgAkAC0AIgAtACsAKQAuACUAKQAlACAAHAAeACMAHAAjACEALAAvACoALAAqACcAJgAoAB8AJgAfAB0ANgA4AEEANgBBAD8APQBCADkAPQA5ADQAMAAyADcAMAA3ADUAQABDAD4AQAA+ADsAOgA8ADMAOgAzADEADQAPAAsADQALAAkABcmYvwAAAABVG489BcmYvwAAAABVG489lHGjv2B53z8Gha09lHGjv2B53z8Gha09BcmYvwAAAABVG4+9BcmYvwAAAABVG4+9lHGjv2B53z8Gha29lHGjv2B53z8Gha299m1OvwAAAABVG4899m1OvwAAAABVG4892Bw5v2B53z8Gha092Bw5v2B53z8Gha099m1OvwAAAABVG4+99m1OvwAAAABVG4+92Bw5v2B53z8Gha292Bw5v2B53z8Gha29rXCCvwAAAABVG4+9pR57vwAAAABVG4+9xyx6vwAAAEAGha29xyx6vwAAAEAGha29nOmCvwAAAEAGha29nOmCvwAAAEAGha29pR57vwAAAABVG489rXCCvwAAAABVG489nOmCvwAAAEAGha09nOmCvwAAAEAGha09xyx6vwAAAEAGha09xyx6vwAAAEAGha09AADAvz6L/T7ZuMk9AADAvz6L/T7ZuMk9AADAv/tILT/ZuMk9AADAv/tILT/ZuMk9AADAv/tILT/ZuMk9AADAvz6L/T7ZuMm9AADAvz6L/T7ZuMm9AADAv/tILT/ZuMm9AADAv/tILT/ZuMm9AADAv/tILT/ZuMm9AAAAvz6L/T7ZuMk9AAAAvz6L/T7ZuMk9AAAAv/tILT/ZuMk9AAAAv/tILT/ZuMk9AAAAv/tILT/ZuMk9AAAAvz6L/T7ZuMm9AAAAvz6L/T7ZuMm9AAAAv/tILT/ZuMm9AAAAv/tILT/ZuMm9AAAAv/tILT/ZuMm9AADAv4Aflz8fiuY9AADAv4Aflz8fiuY9AADAv7SzsT8fiuY9AADAv7SzsT8fiuY9AADAv7SzsT8fiuY9AADAv4Aflz8fiua9AADAv4Aflz8fiua9AADAv7SzsT8fiua9AADAv7SzsT8fiua9AADAv7SzsT8fiua9/v//voAflz8fiuY9/v//voAflz8fiuY9/v//vrSzsT8fiuY9/v//vrSzsT8fiuY9/v//vrSzsT8fiuY9/v//voAflz8fiua9/v//voAflz8fiua9/v//vrSzsT8fiua9/v//vrSzsT8fiua9/v//vrSzsT8fiua9KEhGvgAAAABVG489KEhGvgAAAABVG489UMaNvmB53z8Gha09UMaNvmB53z8Gha09KEhGvgAAAABVG4+9KEhGvgAAAABVG4+9UMaNvmB53z8Gha29UMaNvmB53z8Gha29KEhGPgAAAABVG489KEhGPgAAAABVG489UMaNPmB53z8Gha09UMaNPmB53z8Gha09KEhGPgAAAABVG4+9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A6ApP+SZrj4ZABcAFgAZABYAGgAUAAYAAgAUAAIAGAAAAAIABgAAAAYABAAXABkAAwAXAAMAAQARABIADgARAA4ADAAIAAoAGgAIABoAFgAPABMAGwAPABsACwAUABgAGwAUABsAEwASABEAEAASABAAFQAFAAcAFQAFABUAEAAiACQALQAiAC0AKwApAC4AJQApACUAIAAcAB4AIwAcACMAIQAsAC8AKgAsACoAJwAmACgAHwAmAB8AHQA2ADgAQQA2AEEAPwA9AEIAOQA9ADkANAAwADIANwAwADcANQBAAEMAPgBAAD4AOwA6ADwAMwA6ADMAMQANAA8ACwANAAsACQBdAFsAWgBdAFoAXgBYAEoARgBYAEYAXABEAEYASgBEAEoASABbAF0ARwBbAEcARQBVAFYAUgBVAFIAUABMAE4AXgBMAF4AWgBTAFcAXwBTAF8ATwBYAFwAXwBYAF8AVwBWAFUAVABWAFQAWQBJAEsAWQBJAFkAVABmAGgAcQBmAHEAbwBtAHIAaQBtAGkAZABgAGIAZwBgAGcAZQBwAHMAbgBwAG4AawBqAGwAYwBqAGMAYQB6AHwAhQB6AIUAgwCBAIYAfQCBAH0AeAB0AHYAewB0AHsAeQCEAIcAggCEAIIAfwB+AIAAdwB+AHcAdQBRAFMATwBRAE8ATQChAJ8AngChAJ4AogCcAI4AigCcAIoAoACIAIoAjgCIAI4AjACfAKEAiwCfAIsAiQCZAJoAlgCZAJYAlACQAJIAogCQAKIAngCXAJsAowCXAKMAkwCcAKAAowCcAKMAmwCaAJkAmACaAJgAnQCNAI8AnQCNAJ0AmACqAKwAtQCqALUAswCxALYArQCxAK0AqACkAKYAqwCkAKsAqQC0ALcAsgC0ALIArwCuALAApwCuAKcApQC+AMAAyQC+AMkAxwDFAMoAwQDFAMEAvAC4ALoAvwC4AL8AvQDIAMsAxgDIAMYAwwDCAMQAuwDCALsAuQCVAJcAkwCVAJMAkQDlAOMA4gDlAOIA5gDgANIAzgDgAM4A5ADMAM4A0gDMANIA0ADjAOUAzwDjAM8AzQDdAN4A2gDdANoA2ADUANYA5gDUAOYA4gDbAN8A5wDbAOcA1wDgAOQA5wDgAOcA3wDeAN0A3ADeANwA4QDRANMA4QDRAOEA3ADuAPAA+QDuAPkA9wD1APoA8QD1APEA7ADoAOoA7wDoAO8A7QD4APsA9gD4APYA8wDyAPQA6wDyAOsA6QACAQQBDQECAQ0BCwEJAQ4BBQEJAQUBAAH8AP4AAwH8AAMBAQEMAQ8BCgEMAQoBBwEGAQgB/wAGAf8A/QDZANsA1wDZANcA1QApAScBJgEpASYBKgEkARYBEgEkARIBKAEQARIBFgEQARYBFAEnASkBEwEnARMBEQEhASIBHgEhAR4BHAEYARoBKgEYASoBJgEfASMBKwEfASsBGwEkASgBKwEkASsBIwEiASEBIAEiASABJQEVARcBJQEVASUBIAEyATQBPQEyAT0BOwE5AT4BNQE5ATUBMAEsAS4BMwEsATMBMQE8AT8BOgE8AToBNwE2ATgBLwE2AS8BLQFGAUgBUQFGAVEBTwFNAVIBSQFNAUkBRAFAAUIBRwFAAUcBRQFQAVMBTgFQAU4BSwFKAUwBQwFKAUMBQQEdAR8BGwEdARsBGQE=" + } + ] +} diff --git a/Assets/Models/ExteriorMeshs.shmodel b/Assets/Models/ExteriorMeshs.shmodel new file mode 100644 index 00000000..6121ad27 Binary files /dev/null and b/Assets/Models/ExteriorMeshs.shmodel differ diff --git a/Assets/Models/ExteriorMeshs.shmodel.shmeta b/Assets/Models/ExteriorMeshs.shmodel.shmeta new file mode 100644 index 00000000..f5e49218 --- /dev/null +++ b/Assets/Models/ExteriorMeshs.shmodel.shmeta @@ -0,0 +1,28 @@ +Name: ExteriorMeshs +ID: 80559352 +Type: 4 +Sub Assets: +Name: TreeVar1 +ID: 150881323 +Type: 8 +Name: TreeVar2 +ID: 140386412 +Type: 8 +Name: TreeVar3 +ID: 146337876 +Type: 8 +Name: BushVar1 +ID: 143461339 +Type: 8 +Name: BushVar2 +ID: 136373407 +Type: 8 +Name: BushVar3 +ID: 144928031 +Type: 8 +Name: FenceSinglePiece +ID: 140263745 +Type: 8 +Name: FenceFivePiece +ID: 145842965 +Type: 8 diff --git a/Assets/Models/HouseModular.gltf b/Assets/Models/HouseModular.gltf new file mode 100644 index 00000000..3e9e9a05 --- /dev/null +++ b/Assets/Models/HouseModular.gltf @@ -0,0 +1,1358 @@ +{ + "asset" : { + "generator" : "Khronos glTF Blender I/O v3.3.32", + "version" : "2.0" + }, + "scene" : 0, + "scenes" : [ + { + "name" : "Scene", + "nodes" : [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16 + ] + } + ], + "nodes" : [ + { + "mesh" : 0, + "name" : "FloorLarge" + }, + { + "mesh" : 1, + "name" : "FloorSmall" + }, + { + "mesh" : 2, + "name" : "FloorLong" + }, + { + "mesh" : 3, + "name" : "Pillar" + }, + { + "mesh" : 4, + "name" : "WallEnd" + }, + { + "mesh" : 5, + "name" : "WallCorner" + }, + { + "mesh" : 6, + "name" : "WallDefault" + }, + { + "mesh" : 7, + "name" : "WallLarge" + }, + { + "mesh" : 8, + "name" : "WallDiagonal" + }, + { + "mesh" : 9, + "name" : "WallTBlock" + }, + { + "mesh" : 10, + "name" : "WindowLarge" + }, + { + "mesh" : 11, + "name" : "WindowSmallOpened" + }, + { + "mesh" : 12, + "name" : "WindowSmallClosed" + }, + { + "mesh" : 13, + "name" : "WindowLargeOpen" + }, + { + "mesh" : 14, + "name" : "WallDoorHole" + }, + { + "mesh" : 15, + "name" : "Door", + "translation" : [ + -0.4000000059604645, + 0, + 0.09999999403953552 + ] + }, + { + "mesh" : 16, + "name" : "DoorFrame" + } + ], + "materials" : [ + { + "doubleSided" : true, + "name" : "Material", + "pbrMetallicRoughness" : { + "baseColorFactor" : [ + 0.800000011920929, + 0.800000011920929, + 0.800000011920929, + 1 + ], + "metallicFactor" : 0, + "roughnessFactor" : 0.4000000059604645 + } + } + ], + "meshes" : [ + { + "name" : "Cube.013", + "primitives" : [ + { + "attributes" : { + "POSITION" : 0, + "NORMAL" : 1, + "TEXCOORD_0" : 2 + }, + "indices" : 3, + "material" : 0 + } + ] + }, + { + "name" : "Cube.015", + "primitives" : [ + { + "attributes" : { + "POSITION" : 4, + "NORMAL" : 5, + "TEXCOORD_0" : 6 + }, + "indices" : 7, + "material" : 0 + } + ] + }, + { + "name" : "Cube.014", + "primitives" : [ + { + "attributes" : { + "POSITION" : 8, + "NORMAL" : 9, + "TEXCOORD_0" : 10 + }, + "indices" : 11, + "material" : 0 + } + ] + }, + { + "name" : "Cube.043", + "primitives" : [ + { + "attributes" : { + "POSITION" : 12, + "NORMAL" : 13, + "TEXCOORD_0" : 14 + }, + "indices" : 15, + "material" : 0 + } + ] + }, + { + "name" : "Cube.001", + "primitives" : [ + { + "attributes" : { + "POSITION" : 16, + "NORMAL" : 17, + "TEXCOORD_0" : 18 + }, + "indices" : 19, + "material" : 0 + } + ] + }, + { + "name" : "Cube.009", + "primitives" : [ + { + "attributes" : { + "POSITION" : 20, + "NORMAL" : 21, + "TEXCOORD_0" : 22 + }, + "indices" : 23, + "material" : 0 + } + ] + }, + { + "name" : "Cube.002", + "primitives" : [ + { + "attributes" : { + "POSITION" : 24, + "NORMAL" : 25, + "TEXCOORD_0" : 26 + }, + "indices" : 27, + "material" : 0 + } + ] + }, + { + "name" : "Cube.003", + "primitives" : [ + { + "attributes" : { + "POSITION" : 28, + "NORMAL" : 29, + "TEXCOORD_0" : 30 + }, + "indices" : 31, + "material" : 0 + } + ] + }, + { + "name" : "Cube.008", + "primitives" : [ + { + "attributes" : { + "POSITION" : 32, + "NORMAL" : 33, + "TEXCOORD_0" : 34 + }, + "indices" : 35, + "material" : 0 + } + ] + }, + { + "name" : "Cube.011", + "primitives" : [ + { + "attributes" : { + "POSITION" : 36, + "NORMAL" : 37, + "TEXCOORD_0" : 38 + }, + "indices" : 39, + "material" : 0 + } + ] + }, + { + "name" : "Cube.034", + "primitives" : [ + { + "attributes" : { + "POSITION" : 40, + "NORMAL" : 41, + "TEXCOORD_0" : 42 + }, + "indices" : 43, + "material" : 0 + } + ] + }, + { + "name" : "Cube.007", + "primitives" : [ + { + "attributes" : { + "POSITION" : 44, + "NORMAL" : 45, + "TEXCOORD_0" : 46 + }, + "indices" : 47, + "material" : 0 + } + ] + }, + { + "name" : "Cube.016", + "primitives" : [ + { + "attributes" : { + "POSITION" : 48, + "NORMAL" : 49, + "TEXCOORD_0" : 50 + }, + "indices" : 51, + "material" : 0 + } + ] + }, + { + "name" : "Cube.025", + "primitives" : [ + { + "attributes" : { + "POSITION" : 52, + "NORMAL" : 53, + "TEXCOORD_0" : 54 + }, + "indices" : 55, + "material" : 0 + } + ] + }, + { + "name" : "Cube.006", + "primitives" : [ + { + "attributes" : { + "POSITION" : 56, + "NORMAL" : 57, + "TEXCOORD_0" : 58 + }, + "indices" : 59, + "material" : 0 + } + ] + }, + { + "name" : "Cube.005", + "primitives" : [ + { + "attributes" : { + "POSITION" : 60, + "NORMAL" : 61, + "TEXCOORD_0" : 62 + }, + "indices" : 63, + "material" : 0 + } + ] + }, + { + "name" : "Cube", + "primitives" : [ + { + "attributes" : { + "POSITION" : 64, + "NORMAL" : 65, + "TEXCOORD_0" : 66 + }, + "indices" : 67, + "material" : 0 + } + ] + } + ], + "accessors" : [ + { + "bufferView" : 0, + "componentType" : 5126, + "count" : 56, + "max" : [ + 1, + 0.009999998845160007, + 1 + ], + "min" : [ + -1, + -0.03999999910593033, + -1 + ], + "type" : "VEC3" + }, + { + "bufferView" : 1, + "componentType" : 5126, + "count" : 56, + "type" : "VEC3" + }, + { + "bufferView" : 2, + "componentType" : 5126, + "count" : 56, + "type" : "VEC2" + }, + { + "bufferView" : 3, + "componentType" : 5123, + "count" : 96, + "type" : "SCALAR" + }, + { + "bufferView" : 4, + "componentType" : 5126, + "count" : 24, + "max" : [ + 0.5, + 0.009999998845160007, + 0.5 + ], + "min" : [ + -0.5, + -0.03999999910593033, + -0.5 + ], + "type" : "VEC3" + }, + { + "bufferView" : 5, + "componentType" : 5126, + "count" : 24, + "type" : "VEC3" + }, + { + "bufferView" : 6, + "componentType" : 5126, + "count" : 24, + "type" : "VEC2" + }, + { + "bufferView" : 7, + "componentType" : 5123, + "count" : 36, + "type" : "SCALAR" + }, + { + "bufferView" : 8, + "componentType" : 5126, + "count" : 36, + "max" : [ + 1, + 0.009999998845160007, + 0.5 + ], + "min" : [ + -1, + -0.03999999910593033, + -0.5 + ], + "type" : "VEC3" + }, + { + "bufferView" : 9, + "componentType" : 5126, + "count" : 36, + "type" : "VEC3" + }, + { + "bufferView" : 10, + "componentType" : 5126, + "count" : 36, + "type" : "VEC2" + }, + { + "bufferView" : 11, + "componentType" : 5123, + "count" : 60, + "type" : "SCALAR" + }, + { + "bufferView" : 12, + "componentType" : 5126, + "count" : 66, + "max" : [ + 0.1199999749660492, + 2.200000047683716, + 0.125 + ], + "min" : [ + -0.1200004369020462, + 0, + -0.11499999463558197 + ], + "type" : "VEC3" + }, + { + "bufferView" : 13, + "componentType" : 5126, + "count" : 66, + "type" : "VEC3" + }, + { + "bufferView" : 14, + "componentType" : 5126, + "count" : 66, + "type" : "VEC2" + }, + { + "bufferView" : 15, + "componentType" : 5123, + "count" : 108, + "type" : "SCALAR" + }, + { + "bufferView" : 16, + "componentType" : 5126, + "count" : 68, + "max" : [ + 0.5199999809265137, + 2.200000047683716, + 0.11999999731779099 + ], + "min" : [ + -0.5, + 0, + -0.11999999731779099 + ], + "type" : "VEC3" + }, + { + "bufferView" : 17, + "componentType" : 5126, + "count" : 68, + "type" : "VEC3" + }, + { + "bufferView" : 18, + "componentType" : 5126, + "count" : 68, + "type" : "VEC2" + }, + { + "bufferView" : 19, + "componentType" : 5123, + "count" : 108, + "type" : "SCALAR" + }, + { + "bufferView" : 20, + "componentType" : 5126, + "count" : 134, + "max" : [ + 1, + 2.200000047683716, + 0.11999999731779099 + ], + "min" : [ + -0.12000006437301636, + 0, + -1 + ], + "type" : "VEC3" + }, + { + "bufferView" : 21, + "componentType" : 5126, + "count" : 134, + "type" : "VEC3" + }, + { + "bufferView" : 22, + "componentType" : 5126, + "count" : 134, + "type" : "VEC2" + }, + { + "bufferView" : 23, + "componentType" : 5123, + "count" : 240, + "type" : "SCALAR" + }, + { + "bufferView" : 24, + "componentType" : 5126, + "count" : 90, + "max" : [ + 0.5000000596046448, + 2.200000047683716, + 0.11999999731779099 + ], + "min" : [ + -0.4999999403953552, + 0, + -0.11999999731779099 + ], + "type" : "VEC3" + }, + { + "bufferView" : 25, + "componentType" : 5126, + "count" : 90, + "type" : "VEC3" + }, + { + "bufferView" : 26, + "componentType" : 5126, + "count" : 90, + "type" : "VEC2" + }, + { + "bufferView" : 27, + "componentType" : 5123, + "count" : 168, + "type" : "SCALAR" + }, + { + "bufferView" : 28, + "componentType" : 5126, + "count" : 128, + "max" : [ + 1, + 2.200000047683716, + 0.11999999731779099 + ], + "min" : [ + -0.9999999403953552, + 0, + -0.11999999731779099 + ], + "type" : "VEC3" + }, + { + "bufferView" : 29, + "componentType" : 5126, + "count" : 128, + "type" : "VEC3" + }, + { + "bufferView" : 30, + "componentType" : 5126, + "count" : 128, + "type" : "VEC2" + }, + { + "bufferView" : 31, + "componentType" : 5123, + "count" : 240, + "type" : "SCALAR" + }, + { + "bufferView" : 32, + "componentType" : 5126, + "count" : 96, + "max" : [ + 0.6200000047683716, + 2.200000047683716, + 0.619999885559082 + ], + "min" : [ + -0.5, + 0, + -0.5 + ], + "type" : "VEC3" + }, + { + "bufferView" : 33, + "componentType" : 5126, + "count" : 96, + "type" : "VEC3" + }, + { + "bufferView" : 34, + "componentType" : 5126, + "count" : 96, + "type" : "VEC2" + }, + { + "bufferView" : 35, + "componentType" : 5123, + "count" : 168, + "type" : "SCALAR" + }, + { + "bufferView" : 36, + "componentType" : 5126, + "count" : 200, + "max" : [ + 1, + 2.200000047683716, + 0.11999999731779099 + ], + "min" : [ + -1, + 0, + -1 + ], + "type" : "VEC3" + }, + { + "bufferView" : 37, + "componentType" : 5126, + "count" : 200, + "type" : "VEC3" + }, + { + "bufferView" : 38, + "componentType" : 5126, + "count" : 200, + "type" : "VEC2" + }, + { + "bufferView" : 39, + "componentType" : 5123, + "count" : 360, + "type" : "SCALAR" + }, + { + "bufferView" : 40, + "componentType" : 5126, + "count" : 973, + "max" : [ + 1.0000001192092896, + 2.200000286102295, + 0.11999999731779099 + ], + "min" : [ + -1, + 0, + -0.125 + ], + "type" : "VEC3" + }, + { + "bufferView" : 41, + "componentType" : 5126, + "count" : 973, + "type" : "VEC3" + }, + { + "bufferView" : 42, + "componentType" : 5126, + "count" : 973, + "type" : "VEC2" + }, + { + "bufferView" : 43, + "componentType" : 5123, + "count" : 1632, + "type" : "SCALAR" + }, + { + "bufferView" : 44, + "componentType" : 5126, + "count" : 613, + "max" : [ + 0.5000000596046448, + 2.200000286102295, + 0.33178770542144775 + ], + "min" : [ + -0.4999999403953552, + 0, + -0.125 + ], + "type" : "VEC3" + }, + { + "bufferView" : 45, + "componentType" : 5126, + "count" : 613, + "type" : "VEC3" + }, + { + "bufferView" : 46, + "componentType" : 5126, + "count" : 613, + "type" : "VEC2" + }, + { + "bufferView" : 47, + "componentType" : 5123, + "count" : 1068, + "type" : "SCALAR" + }, + { + "bufferView" : 48, + "componentType" : 5126, + "count" : 538, + "max" : [ + 0.5000000596046448, + 2.200000286102295, + 0.11999999731779099 + ], + "min" : [ + -0.4999999701976776, + 0, + -0.125 + ], + "type" : "VEC3" + }, + { + "bufferView" : 49, + "componentType" : 5126, + "count" : 538, + "type" : "VEC3" + }, + { + "bufferView" : 50, + "componentType" : 5126, + "count" : 538, + "type" : "VEC2" + }, + { + "bufferView" : 51, + "componentType" : 5123, + "count" : 924, + "type" : "SCALAR" + }, + { + "bufferView" : 52, + "componentType" : 5126, + "count" : 1067, + "max" : [ + 1.0000001192092896, + 2.200000286102295, + 0.47529903054237366 + ], + "min" : [ + -1, + 0, + -0.125 + ], + "type" : "VEC3" + }, + { + "bufferView" : 53, + "componentType" : 5126, + "count" : 1067, + "type" : "VEC3" + }, + { + "bufferView" : 54, + "componentType" : 5126, + "count" : 1067, + "type" : "VEC2" + }, + { + "bufferView" : 55, + "componentType" : 5123, + "count" : 1776, + "type" : "SCALAR" + }, + { + "bufferView" : 56, + "componentType" : 5126, + "count" : 202, + "max" : [ + 0.5, + 2.200000286102295, + 0.11999999731779099 + ], + "min" : [ + -0.5, + 0, + -0.11999999731779099 + ], + "type" : "VEC3" + }, + { + "bufferView" : 57, + "componentType" : 5126, + "count" : 202, + "type" : "VEC3" + }, + { + "bufferView" : 58, + "componentType" : 5126, + "count" : 202, + "type" : "VEC2" + }, + { + "bufferView" : 59, + "componentType" : 5123, + "count" : 384, + "type" : "SCALAR" + }, + { + "bufferView" : 60, + "componentType" : 5126, + "count" : 842, + "max" : [ + 0.7999999523162842, + 2.000326156616211, + 0.05949999764561653 + ], + "min" : [ + -0.018654286861419678, + 0.0003262758255004883, + -0.09449999779462814 + ], + "type" : "VEC3" + }, + { + "bufferView" : 61, + "componentType" : 5126, + "count" : 842, + "type" : "VEC3" + }, + { + "bufferView" : 62, + "componentType" : 5126, + "count" : 842, + "type" : "VEC2" + }, + { + "bufferView" : 63, + "componentType" : 5123, + "count" : 3324, + "type" : "SCALAR" + }, + { + "bufferView" : 64, + "componentType" : 5126, + "count" : 298, + "max" : [ + 0.4599999785423279, + 2.0799999237060547, + 0.11121083796024323 + ], + "min" : [ + -0.4599999785423279, + 0, + -0.1087893396615982 + ], + "type" : "VEC3" + }, + { + "bufferView" : 65, + "componentType" : 5126, + "count" : 298, + "type" : "VEC3" + }, + { + "bufferView" : 66, + "componentType" : 5126, + "count" : 298, + "type" : "VEC2" + }, + { + "bufferView" : 67, + "componentType" : 5123, + "count" : 486, + "type" : "SCALAR" + } + ], + "bufferViews" : [ + { + "buffer" : 0, + "byteLength" : 672, + "byteOffset" : 0, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 672, + "byteOffset" : 672, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 448, + "byteOffset" : 1344, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 192, + "byteOffset" : 1792, + "target" : 34963 + }, + { + "buffer" : 0, + "byteLength" : 288, + "byteOffset" : 1984, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 288, + "byteOffset" : 2272, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 192, + "byteOffset" : 2560, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 72, + "byteOffset" : 2752, + "target" : 34963 + }, + { + "buffer" : 0, + "byteLength" : 432, + "byteOffset" : 2824, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 432, + "byteOffset" : 3256, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 288, + "byteOffset" : 3688, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 120, + "byteOffset" : 3976, + "target" : 34963 + }, + { + "buffer" : 0, + "byteLength" : 792, + "byteOffset" : 4096, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 792, + "byteOffset" : 4888, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 528, + "byteOffset" : 5680, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 216, + "byteOffset" : 6208, + "target" : 34963 + }, + { + "buffer" : 0, + "byteLength" : 816, + "byteOffset" : 6424, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 816, + "byteOffset" : 7240, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 544, + "byteOffset" : 8056, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 216, + "byteOffset" : 8600, + "target" : 34963 + }, + { + "buffer" : 0, + "byteLength" : 1608, + "byteOffset" : 8816, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 1608, + "byteOffset" : 10424, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 1072, + "byteOffset" : 12032, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 480, + "byteOffset" : 13104, + "target" : 34963 + }, + { + "buffer" : 0, + "byteLength" : 1080, + "byteOffset" : 13584, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 1080, + "byteOffset" : 14664, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 720, + "byteOffset" : 15744, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 336, + "byteOffset" : 16464, + "target" : 34963 + }, + { + "buffer" : 0, + "byteLength" : 1536, + "byteOffset" : 16800, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 1536, + "byteOffset" : 18336, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 1024, + "byteOffset" : 19872, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 480, + "byteOffset" : 20896, + "target" : 34963 + }, + { + "buffer" : 0, + "byteLength" : 1152, + "byteOffset" : 21376, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 1152, + "byteOffset" : 22528, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 768, + "byteOffset" : 23680, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 336, + "byteOffset" : 24448, + "target" : 34963 + }, + { + "buffer" : 0, + "byteLength" : 2400, + "byteOffset" : 24784, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 2400, + "byteOffset" : 27184, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 1600, + "byteOffset" : 29584, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 720, + "byteOffset" : 31184, + "target" : 34963 + }, + { + "buffer" : 0, + "byteLength" : 11676, + "byteOffset" : 31904, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 11676, + "byteOffset" : 43580, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 7784, + "byteOffset" : 55256, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 3264, + "byteOffset" : 63040, + "target" : 34963 + }, + { + "buffer" : 0, + "byteLength" : 7356, + "byteOffset" : 66304, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 7356, + "byteOffset" : 73660, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 4904, + "byteOffset" : 81016, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 2136, + "byteOffset" : 85920, + "target" : 34963 + }, + { + "buffer" : 0, + "byteLength" : 6456, + "byteOffset" : 88056, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 6456, + "byteOffset" : 94512, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 4304, + "byteOffset" : 100968, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 1848, + "byteOffset" : 105272, + "target" : 34963 + }, + { + "buffer" : 0, + "byteLength" : 12804, + "byteOffset" : 107120, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 12804, + "byteOffset" : 119924, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 8536, + "byteOffset" : 132728, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 3552, + "byteOffset" : 141264, + "target" : 34963 + }, + { + "buffer" : 0, + "byteLength" : 2424, + "byteOffset" : 144816, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 2424, + "byteOffset" : 147240, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 1616, + "byteOffset" : 149664, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 768, + "byteOffset" : 151280, + "target" : 34963 + }, + { + "buffer" : 0, + "byteLength" : 10104, + "byteOffset" : 152048, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 10104, + "byteOffset" : 162152, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 6736, + "byteOffset" : 172256, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 6648, + "byteOffset" : 178992, + "target" : 34963 + }, + { + "buffer" : 0, + "byteLength" : 3576, + "byteOffset" : 185640, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 3576, + "byteOffset" : 189216, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 2384, + "byteOffset" : 192792, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 972, + "byteOffset" : 195176, + "target" : 34963 + } + ], + "buffers" : [ + { + "byteLength" : 196148, + "uri" : "data:application/octet-stream;base64,AACAvwnXIzwAAIA/AACAvwnXIzwAAIA/AACAvwnXIzwAAIA/AACAvwrXI70AAIA/AACAvwrXI70AAIA/AACAvwrXI70AAIA/AACAvwnXIzwAAIC/AACAvwnXIzwAAIC/AACAvwnXIzwAAIC/AACAvwrXI70AAIC/AACAvwrXI70AAIC/AACAvwrXI70AAIC/AACAPwnXIzwAAIA/AACAPwnXIzwAAIA/AACAPwnXIzwAAIA/AACAPwrXI70AAIA/AACAPwrXI70AAIA/AACAPwrXI70AAIA/AACAPwnXIzwAAIC/AACAPwnXIzwAAIC/AACAPwnXIzwAAIC/AACAPwrXI70AAIC/AACAPwrXI70AAIC/AACAPwrXI70AAIC/AAAAAAnXIzwAAIC/AAAAAAnXIzwAAIC/AAAAAAnXIzwAAIC/AAAAAArXI70AAIC/AAAAAArXI70AAIC/AAAAAArXI70AAIC/AAAAAAnXIzwAAIA/AAAAAAnXIzwAAIA/AAAAAAnXIzwAAIA/AAAAAArXI70AAIA/AAAAAArXI70AAIA/AAAAAArXI70AAIA/AACAvwnXIzwAAACAAACAvwnXIzwAAACAAACAvwnXIzwAAACAAACAvwrXI70AAACAAACAvwrXI70AAACAAACAvwrXI70AAACAAACAPwnXIzwAAACAAACAPwnXIzwAAACAAACAPwnXIzwAAACAAACAPwrXI70AAACAAACAPwrXI70AAACAAACAPwrXI70AAACAAAAAAArXI70AAACAAAAAAArXI70AAACAAAAAAArXI70AAACAAAAAAArXI70AAACAAAAAAAnXIzwAAACAAAAAAAnXIzwAAACAAAAAAAnXIzwAAACAAAAAAAnXIzwAAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AACAPwAAAAAAAACAAAAAAAAAAAAAAIC/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AMB/PwDAfz8AwH8/FP13PwDNNzwAwH8/AMB/P5pC/T4AzTc8AMB/PwDAfz8AwH8/AMB/PwAABgAJAAAACQADAAcAEgAWAAcAFgALABQADgARABQAEQAXAAwAAQAFAAwABQAQAAgAAgANAAgADQATABUADwAEABUABAAKAAAAgL8J1yM8AAAAPwAAgL8J1yM8AAAAPwAAgL8J1yM8AAAAPwAAgL8K1yO9AAAAPwAAgL8K1yO9AAAAPwAAgL8K1yO9AAAAPwAAgL8J1yM8AAAAvwAAgL8J1yM8AAAAvwAAgL8J1yM8AAAAvwAAgL8K1yO9AAAAvwAAgL8K1yO9AAAAvwAAgL8K1yO9AAAAvwAAgD8J1yM8AAAAPwAAgD8J1yM8AAAAPwAAgD8J1yM8AAAAPwAAgD8K1yO9AAAAPwAAgD8K1yO9AAAAPwAAgD8K1yO9AAAAPwAAgD8J1yM8AAAAvwAAgD8J1yM8AAAAvwAAgD8J1yM8AAAAvwAAgD8K1yO9AAAAvwAAgD8K1yO9AAAAvwAAgD8K1yO9AAAAvwAAAAAJ1yM8AAAAvwAAAAAJ1yM8AAAAvwAAAAAJ1yM8AAAAvwAAAAAK1yO9AAAAvwAAAAAK1yO9AAAAvwAAAAAK1yO9AAAAvwAAAAAJ1yM8AAAAPwAAAAAJ1yM8AAAAPwAAAAAJ1yM8AAAAPwAAAAAK1yO9AAAAPwAAAAAK1yO9AAAAPwAAAAAK1yO9AAAAPwAAgL8AAAAAAAAAgAAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgAAAgL8AAAAAAAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAPwAAgL8AAAAAAAAAgAAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAgL8AAAAAAAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAvwAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgAAAgD8AAAAAAAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAPwAAgD8AAAAAAAAAgAAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAgD8AAAAAAAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAvwAAgD8AAAAAAAAAgAAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAAAAAAIA/AAAAgAAAAAAAAIC/AAAAgAAAAAAAAIC/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/v//vrgeBT7MzMy9/v//vrgeBT7MzMy9/v//vrgeBT7MzMy9AAAAP4XrAUDMzMy9AAAAP4XrAUDMzMy9AAAAP4XrAUDMzMy9AAAAP4XrAUDMzMy9/v//voXrAUDMzMy9/v//voXrAUDMzMy9/v//voXrAUDMzMy9AQAAP83MDEDMzMy9AQAAP83MDEDMzMy9AQAAP83MDEDMzMy9/v//vs3MDEDMzMy9/v//vs3MDEDMzMy9/v//vs3MDEDMzMy9AAAAP83MDEAAAACAAAAAP83MDEAAAACA/v//vs3MDEAAAACA/v//vs3MDEAAAACA/v//voXrAUAAAACA/v//vrgeBT4AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAP//fz8AAACAAACAvwAAAAAAAACAAAAAAAAAAAD//38/AAAAAAAAAAAAAIA/AACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAADL5ZD8h+eQ+AACAvwAAAAAAAACAAAAAAAAAAAD//38/AAAAADL5ZD8h+eQ+AAAAAAAAAAAAAIA/AAAAAP//fz8AAACAAACAPwAAAAAAAACAAAAAAAAAAAD//38/AAAAAAAAAAAAAIA/AACAPwAAAAAAAACAAAAAAAAAAAD//38/AAAAADL5ZD8h+eQ+AACAPwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAADL5ZD8h+eQ+AACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AACAPwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAACAvwAAAAAAAACAAAAAAP//fz8AAACAAACAvwAAAAAAAACAAACAvwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAACAPwAAAAAAAACAAACAPwAAAAAAAACAAACAPwAAAAAAAACAAACAPwAAAAAAAACAAAAAAP//fz8AAACAAACAPwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAADL5ZD8h+eS+AAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAPwAAAAAAAACA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AACAP5DC9T2PwvU9AACAPwAAAACPwvU9AACAPwAAAACPwvU9AACAPwAAAACPwvU9AAAAAM3MDEDMzMw9AAAAAM3MDEDMzMw9AAAAAM3MDEDMzMw9AAAAAM3MDEDMzMw9AAAAAIXrAUDMzMw9AAAAAIXrAUDMzMw9AAAAAIXrAUDMzMw9AAAAALgeBT7MzMw9AAAAALgeBT7MzMw9AAAAALgeBT7MzMw9AAAAALgeBT7MzMw9AAAAAJDC9T2PwvU9AAAAAJDC9T2PwvU9AAAAAJDC9T2PwvU9AAAAAJDC9T2PwvU9AAAAAAAAAACPwvU9AAAAAAAAAACPwvU9AAAAAAAAAACPwvU9//9/vwAAAAAAAACA//9/vwAAAAAAAACA//9/v83MDEAAAACA//9/v83MDEAAAACA//9/v4XrAUAAAACA//9/v5DC9T0AAACA//9/v7geBT4AAACAAACAP83MDEAAAACAAACAP83MDEAAAACAAACAPwAAAAAAAACAAACAPwAAAAAAAACAAACAP7geBT4AAACAAACAP5DC9T0AAACAAAAAAAAAAAAAAACAAAAAAM3MDEAAAACAAAAAAM3MDEAAAACAAACAP4XrAUAAAACA//9/vwAAAACPwvW9//9/vwAAAACPwvW9//9/vwAAAACPwvW9//9/v5DC9T2PwvW9//9/v5DC9T2PwvW9//9/v5DC9T2PwvW9AAAAAAAAAACPwvW9AAAAAAAAAACPwvW9AAAAAAAAAACPwvW9//9/vwAAAAAAAACA//9/vwAAAAAAAACA//9/v5DC9T0AAACAAAAAAAAAAAAAAACAAACAPwAAAAAAAACAAACAPwAAAAAAAACAAACAPwAAAACPwvW9AACAPwAAAACPwvW9AACAPwAAAACPwvW9AACAP5DC9T0AAACAAACAP5DC9T2PwvW9AACAP5DC9T2PwvW9AACAP5DC9T2PwvW9AACAP7geBT4AAACAAACAP4XrAUAAAACAAACAP7geBT7MzMy9AACAP7geBT7MzMy9AACAP7geBT7MzMy9AACAP4XrAUDMzMy9AACAP4XrAUDMzMy9AAAAALgeBT7MzMy9AAAAALgeBT7MzMy9AAAAALgeBT7MzMy9AAAAALgeBT7MzMy9//9/v7geBT7MzMy9//9/v7geBT7MzMy9//9/v7geBT7MzMy9AAAAAJDC9T2PwvW9AAAAAJDC9T2PwvW9AAAAAJDC9T2PwvW9AAAAAJDC9T2PwvW9AAAAAIXrAUDMzMy9AAAAAIXrAUDMzMy9AAAAAIXrAUDMzMy9//9/v4XrAUDMzMy9//9/v4XrAUDMzMy9//9/v4XrAUDMzMy9AAAAAM3MDEDMzMy9AAAAAM3MDEDMzMy9AAAAAM3MDEDMzMy9AAAAAM3MDEDMzMy9AACAP83MDEDMzMy9AACAP83MDEDMzMy9AACAP83MDEDMzMy9//9/v83MDEDMzMy9//9/v83MDEDMzMy9//9/v83MDEDMzMy9AAAAAM3MDEAAAACAAAAAAM3MDEAAAACA//9/v83MDEAAAACA//9/v83MDEAAAACAAACAP83MDEAAAACAAACAP83MDEAAAACA//9/v4XrAUAAAACA//9/v7geBT4AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAP//fz8AAACAAACAvwAAAAAAAACAAAAAAAAAAAD//38/AAAAAAAAAAAAAIA/AACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAADP5ZD8h+eQ+AACAvwAAAAAAAACAAAAAAAAAAAD//38/AAAAADP5ZD8h+eQ+AAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAAAAAAIA/AACAPwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAADL5ZD8h+eQ+AACAPwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAADL5ZD8h+eQ+AACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AACAPwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAP//fz8AAACAAAAAAAAAgD8AAACAAAAAAAAAAAD//38/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAD//38/AAAAAAAAAAAAAIA/AAAAADL5ZD8h+eQ+AAAAADP5ZD8h+eQ+AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAADL5ZD8h+eQ+AAAAADP5ZD8h+eQ+AAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AACAvwAAAAAAAACAAAAAAAAAgL8AAACAAACAvwAAAAAAAACAAAAAAP//fz8AAACAAACAvwAAAAAAAACAAACAvwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAACAPwAAAAAAAACAAACAPwAAAAAAAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAP//fz8AAACAAAAAAAAAgD8AAACAAACAPwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAADP5ZD8h+eS+AAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AACAvwAAAAAAAACAAAAAAAAAgL8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAgL8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAPwAAAAAAAACAAACAPwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAADL5ZD8h+eS+AACAPwAAAAAAAACAAACAPwAAAAAAAACAAACAPwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAADL5ZD8h+eS+AACAPwAAAAAAAACAAAAAAAAAAAAAAIC/AACAPwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAAAD//3+/AAAAADL5ZD8h+eS+AAAAADP5ZD8h+eS+AACAvwAAAAAAAACAAAAAAAAAAAD//3+/AAAAADP5ZD8h+eS+AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAADL5ZD8h+eS+AAAAADP5ZD8h+eS+AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAD//3+/AACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAAAD//3+/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAP//fz8AAACAAAAAAAAAgD8AAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAP//fz8AAACAAAAAAP//fz8AAACAAAAAAAAAgD8AAACA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yMzMPgAAAL+8HgU+/P//PgAAAL+8HgU+/P//PgAAgL8AAAAAAAAAgAAAAAAAAIC/AAAAgPMENT8AAAAA9AQ1PwAAgL8AAAAAAAAAgAAAAAAAAIA/AAAAgPUENT8AAAAA8gQ1PwAAAAAAAIC/AAAAgAAAAAAAAAAAAACAv/MENT8AAAAA9AQ1PwAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgPUENT8AAAAA8gQ1PwAAgL8AAAAAAAAAgP//f78AAAAAAAAAgPMENT8AAAAA9AQ1P/UENT8AAAAA8gQ1PwAAAAAAAAAAAACAv/MENT8AAAAA9AQ1P/UENT8AAAAA8gQ1PwAAgL8AAAAAAAAAgOEF0T7yBVE/2wXRPvMENT8AAAAA9AQ1PwAAAAAAAAAAAACAv+EF0T7yBVE/2wXRPvMENT8AAAAA9AQ1PwAAgL8AAAAAAAAAgP//f78AAAAAAAAAgOEF0T7yBVE/2wXRPvMENT8AAAAA9AQ1PwAAAAAAAAAAAACAv+EF0T7yBVE/2wXRPvMENT8AAAAA9AQ1PwAAgL8AAAAAAAAAgAAAAAAAAIA/AAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAvwAAgL8AAAAAAAAAgP//f78AAAAAAAAAgAAAgL8AAAAAAAAAgAAAgL8AAAAAAAAAgP//f78AAAAAAAAAgAAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAgL8AAAAAAAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAvwAAgL8AAAAAAAAAgPMENb8AAAAA9QQ1vwAAAAD//3+/AAAAgAAAgL8AAAAAAAAAgPMENb8AAAAA9QQ1v+wF0b7sBVE/6QXRvvMENb8AAAAA9QQ1vwAAAAD//3+/AAAAgAAAAAAAAAAAAACAvwAAgL8AAAAAAAAAgAAAAAD//3+/AAAAgAAAgL8AAAAAAAAAgAAAAAD//3+/AAAAgAAAAAAAAAAAAACAvwAAAAAAAAAAAACAv/MENb8AAAAA9QQ1v+wF0b7sBVE/6QXRvgAAAAAAAAAAAACAvwAAAAAAAAAAAACAv/IENb8AAAAA9AQ1v+wF0b7sBVE/6QXRvgAAAAAAAAAAAACAvwAAAAAAAAAAAACAv/sENb8AAAAA7QQ1v/IENb8AAAAA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zMzMPQAAgD/NzAxAzMzMPQAAAADNzAxA9MzMPQAAAADNzAxA9MzMPQAAAADNzAxA9MzMPQAAAADNzAxA9MzMPQAAAAAAAAAAj8L1PQAAAAAAAAAAj8L1PQAAAAAAAAAAj8L1PQAAgL/NzAxAzMzMPQAAgL/NzAxAzMzMPQAAgL/NzAxAzMzMPQAAgL+4HgU+zMzMPQAAgL+4HgU+zMzMPQAAgL+4HgU+zMzMPQAAgL8AAAAAAAAAgAAAgL8AAAAAAAAAgAAAgL/NzAxAAAAAgAAAgL/NzAxAAAAAgAAAAAAAAAAAAADAsgAAAADNzAxAAABINAAAAADNzAxAAABINAAAgL+QwvU9AAAAgAAAgL+4HgU+AAAAgAAAgL+F6wFAAAAAgAAAgD8AAAAAAAAAgAAAgD8AAAAAAAAAgAAAgD/NzAxAAAAAgAAAgD/NzAxAAAAAgAAAgD+4HgU+AAAAgAAAgD+QwvU9AAAAgAAAgD+F6wFAAAAAgAAAgD+F6wFAzMzMvQAAgD+F6wFAzMzMvQAAgD+F6wFAzMzMvcrMzD2F6wFAx8zMvcrMzD2F6wFAx8zMvcrMzD2F6wFAx8zMvcrMzD2F6wFAx8zMvQAAgD/NzAxAzMzMvQAAgD/NzAxAzMzMvQAAgD/NzAxAzMzMvQAAgD+4HgU+zMzMvQAAgD+4HgU+zMzMvQAAgD+4HgU+zMzMvQAAgD+F6wFAAAAAgAAAgD/NzAxAAAAAgAAAgD/NzAxAAAAAgAAAgD+4HgU+AAAAgAAAgD+QwvU9AAAAgAAAgD+QwvU9j8L1vQAAgD+QwvU9j8L1vQAAgD+QwvU9j8L1vQAAgD8AAAAAAAAAgAAAgD8AAAAAAAAAgAAAgD8AAAAAj8L1vQAAgD8AAAAAj8L1vQAAgD8AAAAAj8L1vQAAAAAAAAAAAADAso/C9T0AAAAAlcL1vY/C9T0AAAAAlcL1vY/C9T0AAAAAlcL1vQAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAACYwvU9AACAv4jC9T0AAAAAAACAv4jC9T0AAAAAAACAv4jC9T0AAAAAAACAv4jC9T2YwvU9AACAv4jC9T2YwvU9AACAv4jC9T2YwvU9AACAv4/C9T2QwvU9lcL1vY/C9T2QwvU9lcL1vY/C9T2QwvU9lcL1vY/C9T2QwvU9lcL1vcDMzD28HgU+AACAv8DMzD28HgU+AACAv8DMzD28HgU+AACAv8rMzD24HgU+x8zMvcrMzD24HgU+x8zMvcrMzD24HgU+x8zMvcrMzD24HgU+x8zMvcDMzD2E6wFAAACAv8DMzD2E6wFAAACAv8DMzD2E6wFAAACAvwAAAAC8HgU+AACAvwAAAACE6wFAAACAvwAAAADNzAxAAACAvwAAAADNzAxAAACAv8DMzD3NzAxAAACAv8DMzD3NzAxAAACAv8DMzD3NzAxAAACAvwAAAADNzAxAAABINAAAAADNzAxAAABINNDMzD3NzAxAwczMvdDMzD3NzAxAwczMvdDMzD3NzAxAwczMvdDMzD3NzAxAwczMvcDMzL3NzAxAAACAv8DMzL3NzAxAAACAv8DMzL3NzAxAAACAv9DMzL3NzAxAwczMvdDMzL3NzAxAwczMvdDMzL3NzAxAwczMvdDMzL3NzAxAwczMvcDMzL2E6wFAAACAv8DMzL2E6wFAAACAv8DMzL2E6wFAAACAvwAAAADNzAxAAACAvwAAAADNzAxAAACAvwAAAADNzAxAAABINAAAAADNzAxAAABINAAAAACE6wFAAACAvwAAAAC8HgU+AACAvwAAAACYwvU9AACAv8DMzL28HgU+AACAv8DMzL28HgU+AACAv8DMzL28HgU+AACAv8rMzL24HgU+x8zMvcrMzL24HgU+x8zMvcrMzL24HgU+x8zMvcrMzL24HgU+x8zMvYjC9b2YwvU9AACAv4jC9b2YwvU9AACAv4jC9b2YwvU9AACAv4/C9b2QwvU9lcL1vY/C9b2QwvU9lcL1vY/C9b2QwvU9lcL1vY/C9b2QwvU9lcL1vYjC9b0AAAAAAACAv4jC9b0AAAAAAACAv4jC9b0AAAAAAACAv4/C9b0AAAAAlcL1vY/C9b0AAAAAlcL1vY/C9b0AAAAAlcL1vY/C9b0AAAAAlcL1vQAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAADAsgAAAAAAAAAAAADAsgAAgL8AAAAAAAAAgAAAgL8AAAAAAAAAgAAAgL8AAAAAj8L1vQAAgL8AAAAAj8L1vQAAgL8AAAAAj8L1vQAAgL+QwvU9AAAAgAAAgL+QwvU9j8L1vQAAgL+QwvU9j8L1vQAAgL+QwvU9j8L1vQAAgL+4HgU+AAAAgAAAgL+4HgU+zMzMvQAAgL+4HgU+zMzMvQAAgL+4HgU+zMzMvQAAgL+F6wFAAAAAgAAAgL+F6wFAzMzMvQAAgL+F6wFAzMzMvQAAgL+F6wFAzMzMvQAAgL/NzAxAAAAAgAAAgL/NzAxAAAAAgAAAgL/NzAxAzMzMvQAAgL/NzAxAzMzMvQAAgL/NzAxAzMzMvcrMzL2F6wFAx8zMvcrMzL2F6wFAx8zMvcrMzL2F6wFAx8zMvcrMzL2F6wFAx8zMvQAAAAAAAIC/AAAAgAAAAAAAAAAAAACAPwAAgD8AAAAAAAAAgP//sTQ3PDw0AACAPwAAxDQAAAAAAACAPwAAgD8AAAAAAAAAgAAAAAAAAAAAAACAPwHjsjMX+WQ/jfnkPgAAgD8AAAAAAAAAgAHjsjMX+WQ/jfnkPgAAxDQAAAAAAACAPwAAgD8AAAAAAAAAgAAAxLQAAAAAAACAP/n/sbQ3PDw0AACAP///sTQ3PDw0AACAPwAAxDQAAAAAAACAPwAAxLQAAAAAAACAPwHjsrMX+WQ/jfnkPgHjsjMX+WQ/jfnkPgAAxDQAAAAAAACAPwHjsrMX+WQ/jfnkPgAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwHjsjMX+WQ/jfnkPgAAgL8AAAAAAAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAPwAAgL8AAAAAAAAAgAAAxLQAAAAAAACAP/n/sbQ3PDw0AACAPwAAgL8AAAAAAAAAgAHjsrMX+WQ/jfnkPgAAAAAAAAAAAACAP/r/n7P//38/AAAAgP//sTQ3PDw0AACAPwAAgD8AAAAAAAAAgPn/sbQ3PDw0AACAP/r/n7P//38/AAAAgAAAAAD//38/AAAAgP//sTQ3PDw0AACAPwAAAAAAAIC/AAAAgAAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAgL8AAAAAAAAAgPn/sbQ3PDw0AACAPwAAAAD//38/AAAAgAAAgL8AAAAAAAAAgAAAxLQAAAAAAACAPwHjsrMX+WQ/jfnkPgAAgL8AAAAAAAAAgAAAAAAAAIC/AAAAgAAAgL8AAAAAAAAAgAAAAAD//38/AAAAgAAAAAAAAIC/AAAAgPr/n7P//38/AAAAgAAAAAD//38/AAAAgAAAgL8AAAAAAAAAgAAAgL8AAAAAAAAAgAAAgL8AAAAAAAAAgAAAAAAAAIC/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AAAAAI/C9T3+/3+/AAAAAI/C9T3+/3+/zcwMQMzMzD3+/3+/zcwMQMzMzD3+/3+/zcwMQMzMzD3+/3+/hesBQMzMzD3+/3+/hesBQMzMzD3+/3+/hesBQMzMzD3+/3+/hesBQMzMzD3+/3+/kML1PY/C9T3+/3+/kML1PY/C9T3+/3+/kML1PY/C9T3+/3+/kML1PY/C9T3+/3+/uB4FPszMzD3+/3+/uB4FPszMzD3+/3+/uB4FPszMzD3+/3+/uB4FPszMzD0AAIA/zcwMQMzMzD0AAIA/zcwMQMzMzD0AAIA/zcwMQMzMzD0AAIA/hesBQMzMzD0AAIA/hesBQMzMzD0AAIA/hesBQMzMzD0AAIA/uB4FPszMzD0AAIA/uB4FPszMzD0AAIA/uB4FPszMzD0AAIA/kML1PY/C9T0AAIA/kML1PY/C9T0AAIA/kML1PY/C9T0AAIA/AAAAAI/C9T0AAIA/AAAAAI/C9T0AAIA/AAAAAI/C9T21HmW/zcwMQMzMzD21HmW/zcwMQMzMzD24HmU/zcwMQMzMzD24HmU/zcwMQMzMzD24HmU/hesBQMzMzD24HmU/hesBQMzMzD24HmU/hesBQMzMzD24HmU/hesBQMzMzD21HmW/hesBQMzMzD21HmW/hesBQMzMzD21HmW/hesBQMzMzD21HmW/hesBQMzMzD24HmU/uB4FPszMzD24HmU/uB4FPszMzD24HmU/uB4FPszMzD24HmU/uB4FPszMzD21HmW/uB4FPszMzD21HmW/uB4FPszMzD21HmW/uB4FPszMzD21HmW/uB4FPszMzD21HmW/kML1PY/C9T21HmW/kML1PY/C9T21HmW/kML1PY/C9T21HmW/kML1PY/C9T24HmU/kML1PY/C9T24HmU/kML1PY/C9T24HmU/kML1PY/C9T24HmU/kML1PY/C9T21HmW/AAAAAI/C9T21HmW/AAAAAI/C9T21HmW/AAAAAI/C9T24HmU/AAAAAI/C9T24HmU/AAAAAI/C9T24HmU/AAAAAI/C9T0AAIC/ZmZmP8zMzD0AAIC/ZmZmP8zMzD0AAIC/ZmZmP8zMzD0AAIC/ZmZmP8zMzD0AAIA/ZmZmP8zMzD0AAIA/ZmZmP8zMzD0AAIA/ZmZmP8zMzD21HmW/ZmZmP1WjzD21HmW/ZmZmP1WjzD21HmW/ZmZmP1WjzD21HmW/ZmZmP1WjzD21HmW/ZmZmP1WjzD24HmU/ZmZmP1WjzD24HmU/ZmZmP1WjzD24HmU/ZmZmP1WjzD24HmU/ZmZmP1WjzD24HmU/ZmZmP1WjzD0AAAAAzcwMQMzMzD0AAAAAzcwMQMzMzD0AAAAAzcwMQMzMzD0AAAAAhesBQMzMzD0AAAAAhesBQMzMzD0AAAAAhesBQMzMzD0AAAAAhesBQMzMzD0AAAAAuB4FPszMzD0AAAAAuB4FPszMzD0AAAAAuB4FPszMzD0AAAAAuB4FPszMzD0AAAAAkML1PY/C9T0AAAAAkML1PY/C9T0AAAAAkML1PY/C9T0AAAAAkML1PY/C9T0AAAAAAAAAAI/C9T0AAAAAAAAAAI/C9T0AAAAAAAAAAI/C9T0AAIAzZmZmP1WjzD0AAIAzZmZmP1WjzD0AAIAzZmZmP1WjzD0AAIAzZmZmP1WjzD0vHGe/6iUCQPz8Zj3zKFy/Urj+P/z8Zj3zKFy/Urj+P/z8Zj3zKFy/Urj+P/z8Zj0vHGc/6iUCQP38Zj0vHGc/6iUCQP38Zj0vHGe/6iUCQGH5h70vHGe/6iUCQGH5h70wHGe/0nxlP/z8Zj3zKFy/16NwP/z8Zj3zKFy/16NwP/z8Zj3zKFy/16NwP/z8Zj0uHGc/0nxlP/38Zj0uHGc/0nxlP/38Zj0wHGe/0nxlP2H5h73zKFy/16NwP2H5h73zKFy/16NwP2H5h73zKFy/16NwP2H5h70uHGc/0nxlP2H5h70vHGc/6iUCQGH5h73yKFw/16NwP2H5h73yKFw/16NwP2H5h73yKFw/16NwP2H5h73zKFw/Urj+P2H5h73zKFw/Urj+P2H5h73zKFw/Urj+P2H5h73yKFw/16NwP8aQ+bzyKFw/16NwP8aQ+bzyKFw/16NwP8aQ+bzyKFw/16NwP8aQ+bzzKFy/16NwP8aQ+bzzKFy/16NwP8aQ+bzzKFy/16NwP8aQ+bzyKFw/16NwP0Klp7zyKFw/16NwP0Klp7zyKFw/16NwP0Klp7zzKFw/Urj+P8aQ+bzzKFw/Urj+P8aQ+bzzKFw/Urj+P8aQ+bzzKFw/Urj+P8aQ+byYxGA/16NwP8aQ+byYxGA/16NwP8aQ+byYxGA/16NwP8aQ+byYxGA/16NwP0Klp7yYxGA/16NwP0Klp7yYxGA/16NwP0Klp7yYxGA/Urj+P8aQ+byYxGA/Urj+P8aQ+byYxGA/Urj+P8aQ+byYxGA/Urj+P0Klp7yYxGA/Urj+P0Klp7yYxGA/Urj+P0Klp7zzKFw/Urj+P0Klp7zzKFw/Urj+P0Klp7zzKFw/Urj+P0Klp7zzKFw/Urj+P0Klp7zzKFy/Urj+P0Klp7zzKFy/Urj+P0Klp7zzKFy/Urj+P0Klp7zzKFy/Urj+P0Klp7zzKFw/Urj+P25zKzzzKFw/Urj+P25zKzzzKFw/Urj+P25zKzzyKFw/16NwP25zKzzyKFw/16NwP25zKzzyKFw/16NwP25zKzzzKFw/Urj+PzylpzzzKFw/Urj+PzylpzzzKFw/Urj+PzylpzzzKFy/Urj+P25zKzzzKFy/Urj+P25zKzzzKFy/Urj+P25zKzyYxGA/Urj+P25zKzyYxGA/Urj+P25zKzyYxGA/Urj+P25zKzyYxGA/16NwP25zKzyYxGA/16NwP25zKzyYxGA/16NwP25zKzyYxGA/Urj+PzylpzyYxGA/Urj+PzylpzyYxGA/Urj+PzylpzyYxGA/16NwPzylpzyYxGA/16NwPzylpzyYxGA/16NwPzylpzzyKFw/16NwPzylpzzyKFw/16NwPzylpzzyKFw/16NwPzylpzzzKFy/16NwPzylpzzzKFy/16NwPzylpzzzKFy/16NwPzylpzzzKFy/16NwPzylpzzyKFw/16NwP/38Zj3yKFw/16NwP/38Zj3yKFw/16NwP/38Zj3yKFw/16NwP/38Zj3zKFw/Urj+P/38Zj3zKFw/Urj+P/38Zj3zKFw/Urj+P/38Zj3zKFw/Urj+P/38Zj3zKFy/16NwP25zKzzzKFy/16NwP25zKzzzKFy/16NwP25zKzzzKFy/Urj+PzylpzzzKFy/Urj+PzylpzzzKFy/Urj+PzylpzyZxGC/16NwPzylpzyZxGC/16NwPzylpzyZxGC/16NwPzylpzyZxGC/16NwP25zKzyZxGC/16NwP25zKzyZxGC/16NwP25zKzyYxGC/Urj+PzylpzyYxGC/Urj+PzylpzyYxGC/Urj+PzylpzyYxGC/Urj+P25zKzyYxGC/Urj+P25zKzyYxGC/Urj+P25zKzzzKFy/16NwP0Klp7zzKFy/16NwP0Klp7zzKFy/16NwP0Klp7yZxGC/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AAAAAAAAAID+/3+/AAAAAAAAAID+/3+/zcwMQAAAAID+/3+/zcwMQAAAAID+/3+/hesBQAAAAID+/3+/hesBQAAAAID+/3+/kML1PQDcpbj+/3+/kML1PQDcpbj+/3+/uB4FPgAAAID+/3+/uB4FPgAAAIAAAIA/zcwMQAAAAIAAAIA/zcwMQAAAAIAAAIA/AAAAAAAAAIAAAIA/AAAAAAAAAIAAAIA/uB4FPgAAAIAAAIA/kML1PQAAAIAAAIA/hesBQAAAAIC1HmW/zcwMQAAAAIC5HmU/zcwMQAAAAIC1HmW/AAAAAAAAAIC4HmU/AAAAAAAAAIAAAIA/ZmZmPwDcpbj+/3+/ZmZmPwAAAID+/3+/ZmZmPwAAAIAAAAAAzcwMQAAAAIAAAAAAAAAAAAAAAIC4HmU/hesBQAAAAIC4HmU/hesBQAAAAIC4HmU/ZmZmPwAAAIC4HmU/ZmZmPwAAAIC1HmW/ZmZmPwAAAIC1HmW/ZmZmPwAAAIC1HmW/hesBQAAAAIC1HmW/hesBQAAAAIAAAIAzhesBQAAAAIAAAIAzhesBQAAAAIAAAIAzZmZmPwAAAIAAAIAzZmZmPwAAAID+/3+/AAAAAI7C9b3+/3+/AAAAAI7C9b3+/3+/AAAAAI7C9b3+/3+/zswMQMzMzL3+/3+/zswMQMzMzL3+/3+/zswMQMzMzL3+/3+/hesBQMzMzL3+/3+/hesBQMzMzL3+/3+/hesBQMzMzL3+/3+/kML1PY7C9b3+/3+/kML1PY7C9b3+/3+/kML1PY7C9b3+/3+/kML1PY7C9b3+/3+/uB4FPszMzL3+/3+/uB4FPszMzL3+/3+/uB4FPszMzL0AAIA/kML1PY7C9b0AAIA/kML1PY7C9b0AAIA/kML1PY7C9b0AAIA/kML1PY7C9b0AAIA/uB4FPszMzL0AAIA/uB4FPszMzL0AAIA/uB4FPszMzL0AAIA/hesBQMzMzL0AAIA/hesBQMzMzL0AAIA/hesBQMzMzL0BAIA/zswMQMzMzL0BAIA/zswMQMzMzL0BAIA/zswMQMzMzL0AAIA/AAAAAI7C9b0AAIA/AAAAAI7C9b0AAIA/AAAAAI7C9b24HmU/kML1PY7C9b24HmU/kML1PY7C9b24HmU/kML1PY7C9b24HmU/kML1PY7C9b21HmW/kML1PY7C9b21HmW/kML1PY7C9b21HmW/kML1PY7C9b21HmW/kML1PY7C9b21HmW/uB4FPszMzL21HmW/uB4FPszMzL21HmW/uB4FPszMzL21HmW/uB4FPszMzL24HmU/uB4FPszMzL24HmU/uB4FPszMzL24HmU/uB4FPszMzL21HmW/hesBQMzMzL21HmW/hesBQMzMzL21HmW/hesBQMzMzL21HmW/hesBQMzMzL24HmU/hesBQMzMzL24HmU/hesBQMzMzL24HmU/hesBQMzMzL24HmU/hesBQMzMzL21HmW/AAAAAI7C9b21HmW/AAAAAI7C9b21HmW/AAAAAI7C9b24HmU/AAAAAI7C9b24HmU/AAAAAI7C9b24HmU/AAAAAI7C9b26HmU/zswMQMzMzL26HmU/zswMQMzMzL26HmU/zswMQMzMzL21HmW/zswMQMzMzL21HmW/zswMQMzMzL21HmW/zswMQMzMzL21HmW/zswMQMzMzL3+/3+/ZmZmP8zMzL3+/3+/ZmZmP8zMzL3+/3+/ZmZmP8zMzL0AAIA/ZmZmP8zMzL0AAIA/ZmZmP8zMzL0AAIA/ZmZmP8zMzL21HmW/ZmZmP8zMzL21HmW/ZmZmP8zMzL21HmW/ZmZmP8zMzL21HmW/ZmZmP8zMzL24HmU/ZmZmP8zMzL24HmU/ZmZmP8zMzL24HmU/ZmZmP8zMzL0AAACmzswMQMzMzL0AAACmzswMQMzMzL0AAACmzswMQMzMzL0AAACmhesBQMzMzL0AAACmhesBQMzMzL0AAACmhesBQMzMzL0AAACmhesBQMzMzL0AAACmkML1PY7C9b0AAACmkML1PY7C9b0AAACmkML1PY7C9b0AAACmkML1PY7C9b0AAACmuB4FPszMzL0AAACmuB4FPszMzL0AAACmuB4FPszMzL0AAACmuB4FPszMzL0AAACmAAAAAI7C9b0AAACmAAAAAI7C9b0AAACmAAAAAI7C9b0AAACmZmZmP8zMzL0AAACmZmZmP8zMzL0AAACmZmZmP8zMzL0AAACmZmZmP8zMzL3+/3+/AAAAAAAAAC/+/3+/AAAAAAAAAC/+/3+/zswMQACAB7H+/3+/zswMQACAB7H+/3+/hesBQAAAAC/+/3+/hesBQAAAAC/+/3+/kML1PQAAAC/+/3+/kML1PQAAAC/+/3+/uB4FPgAAAC8AAIA/zswMQAAAAC8AAIA/zswMQAAAAC8AAIA/AAAAAAAAAC8AAIA/AAAAAAAAAC8AAIA/uB4FPgAAAC8AAIA/kML1PQAAAC8AAIA/kML1PQAAAC8AAIA/hesBQAAAAC8AAIA/hesBQAAAAC+1HmW/zswMQAAAAC+1HmW/zswMQAAAAC+5HmU/zswMQAAAAC+1HmW/AAAAAAAAAC+4HmU/AAAAAAAAAC8AAIA/ZmZmPwAAAC8AAIA/ZmZmPwAAAC/+/3+/ZmZmPwAAAC/+/3+/ZmZmPwAAAC8AAACmzswMQAAAAIAAAACmAAAAAAAAAIC4HmU/hesBQAAAAIC4HmU/hesBQAAAAIC4HmU/ZmZmPwAAAIC4HmU/ZmZmPwAAAIC1HmW/ZmZmPwAAAIC1HmW/ZmZmPwAAAIC1HmW/hesBQAAAAIC1HmW/hesBQAAAAIAAAACmhesBQAAAAIAAAACmhesBQAAAAIAAAACmZmZmPwAAAIAAAACmZmZmPwAAAIAAAIC/AAAAAAAAAIAAAAAA//9/vwAAAIAAAAAAAAAAAAAAgD8AAIC/AAAAAAAAAIAAAAAA//9/vwAAAIAAAAAAAAAAAAAAgL8AAIC/AAAAAAAAAIAAAAAAAAAAAAAAgD8AAAAA//9/PwAAAIAAAAAA//9/vwAAAIAAAAAAAAAAAAAAgD8AAIA/AAAAAAAAAIAAAAAA//9/vwAAAIAAAAAAAAAAAAAAgL8AAIA/AAAAAAAAAIAAAAAAAAAAAAAAgD8AAAAA//9/PwAAAIAAAIA/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAA//9/PwAAAIAAAIA/AAAAAAAAAIAAAIC/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAA//9/PwAAAIAAAAAA//9/vwAAAIAAAAAA//9/vwAAAIAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAA//9/PwAAAIAAAAAA//9/PwAAAIAAAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAA//9/PwAAAIAAAAAA//9/PwAAAIAAAAAA//9/vwAAAIAAAAAA//9/vwAAAIAAAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL///3+/AAAAAAAAAIAAAAAAAACAvwAAAIAAAAAAAAAAAAAAgD8AAIC/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//9/vwAAAIAAAAAAAAAAAAAAgD8AAIC/AAAAAAAAAIAAAAAA//9/vwAAAIAAAAAAAAAAAAAAgL8AAIC/Ps9zMwAAAIAAAAAAAACAvwAAAIAAAAAA//9/vwAAAIAAAAAAAAAAAAAAgL8AAAAAAACAvwAAAIAAAAAA//9/vwAAAIAAAAAAAAAAAAAAgL8AAIA/AAAAAAAAAIAAAIC/Ps9zMwAAAIAAAAAAAACAvwAAAIAAAAAAAAAAAAAAgD8AAIC/Ps9zMwAAAIAAAAAAAAAAAAAAgD8AAAAAAACAPwAAAIAAAIC/Pc9zMwAAAIAAAAAAAACAvwAAAIAAAAAAAAAAAAAAgL8AAAAAAACAvwAAAIAAAAAAAAAAAAAAgD8AAIA/AAAAAAAAAIAAAIC/AAAAAAAAAIAAAAAAAACAvwAAAIAAAAAAAAAAAAAAgD8AAIC/AAAAAAAAAIAAAAAAAAAAAAAAgD8AAAAAAACAPwAAAIAAAIC/AAAAAAAAAIAAAAAAAACAvwAAAIAAAAAAAAAAAAAAgL8AAIC/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAAAACAPwAAAIAAAIC/Pc9zMwAAAIAAAAAAAAAAAAAAgL8AAAAAAACAPwAAAIAAAAAAAAAAAAAAgL8AAAAA//9/PwAAAIAAAAAAAACAPwAAAIAAAIA/AAAAAAAAAIAAAIC/Pc9zMwAAAIDFOZGxAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAACAPwAAAIAAAIC/Pc9zMwAAAIDGOZGxAAAAAAAAgD8AAAAAAACAvwAAAIAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAACAPwAAAIAAAIA/AAAAAAAAAIAAAAAAAACAvwAAAIAAAAAAAAAAAAAAgL8AAIA/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAAAACAPwAAAIAAAIA/Pc9zswAAAIAAAAAAAAAAAAAAgD8AAAAAAACAPwAAAIAAAIA/Pc9zswAAAIAAAAAAAACAvwAAAIAAAAAAAAAAAAAAgL8AAIA/Pc9zswAAAIAAAAAAAACAvwAAAIAAAAAAAAAAAAAAgD8AAIA/Pc9zswAAAIAAAAAAAAAAAAAAgL8AAAAAAACAPwAAAIAAAIA/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAAAACAPwAAAIAAAIA/Pc9zswAAAIAAAAAAAAAAAAAAgD8AAAAAAACAPwAAAIAAAIA/Pc9zswAAAIAAAAAA//9/vwAAAIAAAAAAAAAAAAAAgL8AAIA/Pc9zswAAAIAAAAAA//9/vwAAAIAAAAAAAAAAAAAAgD8AAIA/Pc9zswAAAIAAAAAAAACAvwAAAIAAAAAA//9/vwAAAIAAAAAAAAAAAAAAgD8AAIA/AAAAAAAAAIAAAAAA//9/vwAAAIAAAAAAxVnQsgAAgL8AAAAAAAAAAAAAgL8AAIA/AAAAAAAAAIDGOZGxAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAACAvwAAAIAAAAAAAACAvwAAAIDGOZGxAAAAAAAAgD8AAAAAAACAvwAAAIAAAAAAAAAAAAAAgD8AAAAAAACAvwAAAIAAAAAAAACAvwAAAIAAAAAA//9/vwAAAIAAAAAA//9/vwAAAIAAAAAAxVnQsgAAgL8AAAAAAAAAAAAAgL8AAAAAxVnQsgAAgL8AAAAAAAAAAAAAgL/FOZGxAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAA//9/PwAAAIAAAAAAAACAPwAAAIAAAAAA//9/PwAAAIAAAAAAAACAPwAAAIAAAAAA//9/PwAAAIAAAAAAAACAPwAAAIDFOZGxAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAA//9/PwAAAIAAAAAAAACAPwAAAIAAAAAAAACAPwAAAIAAAAAAAACAPwAAAIAAAIC/AAAAAAAAAIAAAAAAPqngsQAAgD8AAAAAAAAAAAAAgD8AAAAA//9/PwAAAIAAAAAAAACAvwAAAIAAAAAAPqngsQAAgD8AAAAAAAAAAAAAgD8AAIA/AAAAAAAAAIAAAIC/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAAmLozMgAAgL8AAAAA//9/PwAAAIAAAIC/AAAAAAAAAIAAAAAAAACAvwAAAIAAAAAAAAAAAAAAgD8AAAAAfwcSMgAAgD8AAAAAPqngsQAAgD8AAAAAkFJ0sAAAgD8AAAAA//9/PwAAAIAAAIA/TbFlswAAAIAAAIC/AAAAAAAAAIAAAAAAAACAvwAAAIAAAAAAPqngsQAAgD8AAAAAkFJ0sAAAgD8AAAAAAAAAAAAAgL8AAAAAmLozMgAAgL8AAAAA//9/PwAAAIAAAIA/TbFlswAAAIAAAAAAAACAvwAAAIAAAAAAkFJ0sAAAgD8AAAAAfwcSMgAAgD8AAIA/TbFlswAAAIAAAIC/AAAAAAAAAIAAAAAAkFJ0sAAAgD8AAAAAfwcSMgAAgD8AAAAAAACAPwAAAIAAAAAAAACAvwAAAIAAAAAAJkMdswAAgL8AAAAAAAAAAAAAgL8AAIA/TbFlswAAAIAAAIC/AAAAAAAAAIAAAAAAJkMdswAAgL8AAAAAAAAAAAAAgL8AAAAAAACAPwAAAIAAAIC/AAAAAAAAAIAAAAAAAACAvwAAAIAAAAAAJkMdswAAgL8AAAAAAAAAAAAAgL8AAAAAJkMdswAAgL8AAAAAAAAAAAAAgL8AAAAAAACAPwAAAIAAAIA/AAAAAAAAAIAAAAAAAAAAAAAAgD8AAAAAfwcSMgAAgD8AAAAAAACAPwAAAIAAAIA/AAAAAAAAAIAAAAAAAACAvwAAAIAAAAAAAAAAAAAAgL8AAAAAmLozMgAAgL8AAIA/AAAAAAAAAIAAAIC/AAAAAAAAAIAAAAAAAACAvwAAAIAAAAAAAAAAAAAAgL8AAAAAmLozMgAAgL8AAIC/AAAAAAAAAIAAAAAAAAAAAAAAgD8AAAAAAACAPwAAAIAAAAAAAACAvwAAAIAAAAAAAAAAAAAAgD8AAIA/AAAAAAAAAIAAAIC/AAAAAAAAAIAAAAAA6zFKsQAAgL8AAAAAAAAAAAAAgL8AAAAAAACAPwAAAIAAAIC/AAAAAAAAAIAAAAAA//9/vwAAAIAAAAAAdbqzswAAgD8AAAAAAAAAAAAAgD8AAAAAAACAvwAAAIAAAAAA6zFKsQAAgL8AAAAAAAAAAAAAgL8AAIA/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAAJkMdMQAAgL8AAAAAAACAPwAAAIAAAIA/AAAAAAAAAIAAAIC/AAAAAAAAAIAAAAAA//9/vwAAAIAAAAAAAAAAAAAAgL8AAAAAJkMdMQAAgL8AAAAAdbqzswAAgD8AAAAAAAAAAAAAgD8AAAAAAACAPwAAAIAAAIA/AAAAAAAAAIAAAAAA//9/vwAAAIAAAAAAdbqzswAAgD8AAAAAkFL0MQAAgD8AAIA/SrFlswAAAIAAAAAAAAAAAAAAgD8AAAAAkFL0MQAAgD8AAAAAAACAPwAAAIAAAIA/SrFlswAAAIAAAIC/AAAAAAAAAIAAAAAAdbqzswAAgD8AAAAAkFL0MQAAgD8AAAAAAACAPwAAAIAAAAAA//9/vwAAAIAAAAAAAAAAAAAAgL8AAAAAJkMdMQAAgL8AAIA/SrFlswAAAIAAAAAA6zFKsQAAgL8AAAAAAAAAAAAAgL8AAAAAAACAPwAAAIAAAIA/SrFlswAAAIAAAIC/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAAJkMdMQAAgL8AAAAAAACAPwAAAIAAAIC/AAAAAAAAAIAAAAAAAACAvwAAAIAAAAAA6zFKsQAAgL8AAAAAAAAAAAAAgL8AAIC/AAAAAAAAAIAAAAAAAACAvwAAAIAAAAAAAAAAAAAAgD8AAAAAkFL0MQAAgD8AAIC/AAAAAAAAAIAAAAAAAAAAAAAAgD8AAIC/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAIA/AAAAAAAAAIAAAIC/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAIA/AAAAAAAAAIAAAIC/AAAAAAAAAIAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAIA/AAAAAAAAAIAAAAAAAAAAAAAAgD8AAIA/AAAAAAAAAIAAAIC/AAAAAAAAAIAAAAAAAAAAAAAAgD8AAAAA8ssGMQAAgD8AAAAAAACAPwAAAIAAAAAAAACAvwAAAIAAAAAAAAAAAAAAgD8AAAAA8ssGMQAAgD8AAIA/AAAAAAAAAIAAAIC/AAAAAAAAAIAAAAAA6zFKswAAgL8AAAAAAAAAAAAAgL8AAAAAAACAPwAAAIAAAIC/AAAAAAAAAIAAAAAAAACAvwAAAIAAAAAA2MsGsQAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAA8ssGMQAAgD8AAAAAAACAPwAAAIAAAIA/AAAAAAAAAIAAAIC/AAAAAAAAAIAAAAAAAACAvwAAAIAAAAAAAAAAAAAAgD8AAAAA8ssGMQAAgD8AAAAA6zFKswAAgL8AAAAAAAAAAAAAgL8AAAAAAACAPwAAAIAAAIA/AAAAAAAAAIAAAAAAAACAvwAAAIAAAAAA2MsGsQAAgD8AAAAAAAAAAAAAgD8AAIA/AAAAAAAAAIAAAIC/AAAAAAAAAIAAAAAA2MsGsQAAgD8AAAAAAAAAAAAAgD8AAAAAAACAPwAAAIAAAAAAAACAvwAAAIAAAAAAAAAAAAAAgL8AAAAAxDFKMwAAgL8AAIA/AAAAAAAAAIAAAIC/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAAxDFKMwAAgL8AAAAAAACAPwAAAIAAAIC/AAAAAAAAAIAAAAAAAACAvwAAAIAAAAAAAAAAAAAAgL8AAAAAxDFKMwAAgL8AAAAAAAAAAAAAgL8AAAAAxDFKMwAAgL8AAAAAAACAPwAAAIAAAIA/AAAAAAAAAIAAAAAA2MsGsQAAgD8AAAAAAAAAAAAAgD8AAAAAAACAPwAAAIAAAIA/AAAAAAAAAIAAAAAAAACAvwAAAIAAAAAA6zFKswAAgL8AAAAAAAAAAAAAgL8AAIA/AAAAAAAAAIAAAIC/AAAAAAAAAIAAAAAAAACAvwAAAIAAAAAA6zFKswAAgL8AAAAAAAAAAAAAgL8AAIC/AAAAAAAAAIAAAAAAAAAAAAAAgD8AAAAAmLqzMwAAgD8AAAAA//9/PwAAAIAAAAAAAACAvwAAAIAAAAAAAAAAAAAAgD8AAAAAmLqzMwAAgD8AAIA/AAAAAAAAAIAAAIC/AAAAAAAAAIAAAAAARUMdsQAAgL8AAAAAAAAAAAAAgL8AAAAA//9/PwAAAIAAAIC/AAAAAAAAAIAAAAAA//9/vwAAAIAAAAAAdbqzswAAgD8AAAAAAAAAAAAAgD8AAAAAAACAvwAAAIAAAAAARUMdsQAAgL8AAAAAAAAAAAAAgL8AAIA/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAAJkMdMQAAgL8AAAAAAACAPwAAAIAAAIA/AAAAAAAAAIAAAIC/AAAAAAAAAIAAAAAA//9/vwAAAIAAAAAAAAAAAAAAgL8AAAAAJkMdMQAAgL8AAAAAdbqzswAAgD8AAAAAAAAAAAAAgD8AAAAAAACAPwAAAIAAAIA/AAAAAAAAAIAAAAAA//9/vwAAAIAAAAAAdbqzswAAgD8AAAAAAAAAAAAAgD8AAIA/AAAAAAAAAIAAAAAAAAAAAAAAgD8AAAAAmLqzMwAAgD8AAAAA//9/PwAAAIAAAIA/AAAAAAAAAIAAAIC/AAAAAAAAAIAAAAAAdbqzswAAgD8AAAAAAAAAAAAAgD8AAAAAAACAPwAAAIAAAAAA//9/vwAAAIAAAAAAAAAAAAAAgL8AAAAAJkMdMQAAgL8AAIA/AAAAAAAAAIAAAAAARUMdsQAAgL8AAAAAAAAAAAAAgL8AAAAA//9/PwAAAIAAAIA/AAAAAAAAAIAAAIC/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAAJkMdMQAAgL8AAAAAAACAPwAAAIAAAIC/AAAAAAAAAIAAAAAAAACAvwAAAIAAAAAARUMdsQAAgL8AAAAAAAAAAAAAgL8AAIC/AAAAAAAAAIAAAAAAAACAvwAAAIAAAAAAAAAAAAAAgD8AAAAAmLqzMwAAgD8AAIC/AAAAAAAAAIAAAAAAAAAAAAAAgD8AAIC/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAIA/AAAAAAAAAIAAAIC/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAIA/AAAAAAAAAIAAAIC/AAAAAAAAAIAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAIA/AAAAAAAAAIAAAAAAAAAAAAAAgD8AAIA/AAAAAAAAAIAAAIC/AAAAAAAAAIAAAAAAulJ0sAAAgD8AAAAA8suGMQAAgD8AAAAAAACAPwAAAIAAAAAAAACAvwAAAIAAAAAAulJ0sAAAgD8AAAAA8suGMQAAgD8AAIA/bJyGtAAAAIAAAIC/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAAmLozMgAAgL8AAAAAAACAPwAAAIAAAIC/AAAAAAAAAIAAAAAAAACAvwAAAIAAAAAA18uGsQAAgD8AAAAAulJ0sAAAgD8AAAAAAAAAAAAAgD8AAAAA8suGMQAAgD8AAAAAAACAPwAAAIAAAIA/AAAAAAAAAIAAAIC/AAAAAAAAAIAAAAAAAACAvwAAAIAAAAAAAAAAAAAAgD8AAAAA8suGMQAAgD8AAAAAAAAAAAAAgL8AAAAAmLozMgAAgL8AAAAAAACAPwAAAIAAAIA/AAAAAAAAAIAAAAAAAACAvwAAAIAAAAAA18uGsQAAgD8AAAAAAAAAAAAAgD8AAIA/AAAAAAAAAIAAAIC/AAAAAAAAAIAAAAAA18uGsQAAgD8AAAAAAAAAAAAAgD8AAAAAAACAPwAAAIAAAAAAAACAvwAAAIAAAAAAdLozsgAAgL8AAAAAAAAAAAAAgL8AAIA/AAAAAAAAAIAAAIC/AAAAAAAAAIAAAAAAdLozsgAAgL8AAAAAAAAAAAAAgL8AAAAAAACAPwAAAIAAAIC/AAAAAAAAAIAAAAAAAACAvwAAAIAAAAAAdLozsgAAgL8AAAAAAAAAAAAAgL8AAAAAdLozsgAAgL8AAAAAAAAAAAAAgL8AAAAAAACAPwAAAIAAAIA/bJyGtAAAAIAAAAAA18uGsQAAgD8AAAAAulJ0sAAAgD8AAAAAAACAPwAAAIAAAIA/bJyGtAAAAIAAAAAAAACAvwAAAIAAAAAAAAAAAAAAgL8AAAAAmLozMgAAgL8AAIA/bJyGtAAAAIAAAIC/AAAAAAAAAIAAAAAAAACAvwAAAIAAAAAAAAAAAAAAgL8AAAAAmLozMgAAgL8AAIC/AAAAAAAAAIAAAAAAmLqzswAAgD8AAAAAAAAAAAAAgD8AAAAA//9/PwAAAIAAAAAAAACAvwAAAIAAAAAAmLqzswAAgD8AAAAAAAAAAAAAgD8AAIA/bZyGtAAAAIAAAIC/AAAAAAAAAIAAAAAA6zFKsQAAgL8AAAAAAAAAAAAAgL8AAAAA//9/PwAAAIAAAIC/AAAAAAAAAIAAAAAA//9/vwAAAIAAAAAAAAAAAAAAgD8AAAAAAACAvwAAAIAAAAAA6zFKsQAAgL8AAAAAAAAAAAAAgL8AAIA/bZyGtAAAAIAAAAAAAAAAAAAAgL8AAAAAwjFKMQAAgL8AAAAAAACAPwAAAIAAAIA/bZyGtAAAAIAAAIC/AAAAAAAAAIAAAAAA//9/vwAAAIAAAAAAAAAAAAAAgL8AAAAAwjFKMQAAgL8AAAAAAAAAAAAAgD8AAAAAAACAPwAAAIAAAIA/bZyGtAAAAIAAAAAA//9/vwAAAIAAAAAAAAAAAAAAgD8AAIA/AAAAAAAAAIAAAAAAmLqzswAAgD8AAAAAAAAAAAAAgD8AAAAA//9/PwAAAIAAAIA/AAAAAAAAAIAAAIC/AAAAAAAAAIAAAAAAAAAAAAAAgD8AAAAAAACAPwAAAIAAAAAA//9/vwAAAIAAAAAAAAAAAAAAgL8AAAAAwjFKMQAAgL8AAIA/AAAAAAAAAIAAAAAA6zFKsQAAgL8AAAAAAAAAAAAAgL8AAAAA//9/PwAAAIAAAIA/AAAAAAAAAIAAAIC/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAAwjFKMQAAgL8AAAAAAACAPwAAAIAAAIC/AAAAAAAAAIAAAAAAAACAvwAAAIAAAAAA6zFKsQAAgL8AAAAAAAAAAAAAgL8AAIC/AAAAAAAAAIAAAAAAAACAvwAAAIAAAAAAmLqzswAAgD8AAAAAAAAAAAAAgD8AAIC/AAAAAAAAAIAAAAAAAAAAAAAAgD8AAIC/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAIA/AAAAAAAAAIAAAIC/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAIA/AAAAAAAAAIAAAIC/AAAAAAAAAIAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAIA/AAAAAAAAAIAAAAAAAAAAAAAAgD8AAIA/AAAAAAAAAIAAAIC/AAAAAAAAAIAAAAAAAAAAAAAAgD8AAIC/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAIA/AAAAAAAAAIAAAIC/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAIA/AAAAAAAAAIAAAIC/AAAAAAAAAIAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAIA/AAAAAAAAAIAAAAAAAAAAAAAAgD8AAIA/AAAAAAAAAIAAAIC/AAAAAAAAAIAAAAAAAAAAAAAAgD8AAIC/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAIA/AAAAAAAAAIAAAIC/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAIA/AAAAAAAAAIAAAIC/AAAAAAAAAIAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAIA/AAAAAAAAAIAAAAAAAAAAAAAAgD8AAIA/AAAAAAAAAIAAAIC/AAAAAAAAAIAAAAAAAAAAAAAAgD8AAIC/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAIA/AAAAAAAAAIAAAIC/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAIA/AAAAAAAAAIAAAIC/AAAAAAAAAIAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAIA/AAAAAAAAAIAAAAAAAAAAAAAAgD8AAIA/AAAAAAAAAID//3+/AAAAAAAAAIAAAAAAAACAvwAAAIAAAIC/AAAAAAAAAIAAAAAAAACAPwAAAIAAAIC/AAAAAAAAAID//3+/doxiMwAAAIAAAIC/AAAAAAAAAID//3+/AAAAAAAAAIAAAIC/2Tums9DKT7UAAIC/AAAAAAAAAIAAAAAAAACAPwAAAIAAAIA/AAAAAAAAAIAAAAAAAACAvwAAAIAAAIA/AAAAAAAAAIAAAIA/AAAAAAAAAIAAAIA/AAAAAAAAAIAAAIA/AAAAAAAAAIAAAAAAAACAPwAAAIAAAAAAAACAPwAAAIAAAAAAAACAvwAAAIAAAAAAAACAvwAAAIAAAIA/AAAAAAAAAIAAAIC/2Tums9DKT7X//3+/doxiMwAAAIAAAAAAAACAPwAAAIAAAAAAAACAvwAAAIAAAIC/AAAAAAAAAIAAAAAAAACAvwAAAIAAAIC/AAAAAAAAAIAAAAAA//9/PwAAAIAAAAAA//9/PwAAAIAAAIA/AAAAAAAAAIAAAAAAAACAvwAAAIAAAIA/AAAAAAAAAIAAAAAAAACAvwAAAIAAAAAAAACAvwAAAIAAAAAA//9/PwAAAIAAAAAA//9/PwAAAID//3+/AAAAAAAAAIAAAAAAAACAvwAAAIAAAAAAAAAAAAAAgL8AAIC/AAAAAAAAAIAAAAAAAAAAAAAAgL9N5eo0AACAPwAAAIAAAIC/AAAAAAAAAID//3+/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAIC/AAAAAAAAAID//3+/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAAMPlkPyn55L4AAIC/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAAMPlkPyn55L4AAAAAAAAAAAAAgL8AAAAAMPlkPyn55L7//38/AAAAAAAAAIAAAIA/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAAMPlkPyn55L4AAIA/AAAAAAAAAIAAAAAAAAAAAAAAgL///38/AAAAAAAAAIAAAIA/Ijy8tAAAAIAAAAAAAAAAAAAAgL8AAAAAAACAPwAAAIAAAIA/Ijy8tAAAAIAAAAAAAACAvwAAAIAAAAAAAAAAAAAAgL///38/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAAAAAAAP//f78AAAAAL/lkPyj55L4AAAAAMPlkPyn55L4AAAAAAAAAAAAAgL8AAAAAAAAAAP//f78AAAAAMPlkPyn55L4AAAAAMvlkPyL55L4AAAAAAAAAAAAAgL8AAAAAAAAAAP//f78AAAAAMPlkPyn55L4AAAAAMvlkPyL55L4AAAAAAAAAAAAAgL8AAAAAL/lkPyj55L4AAAAAMPlkPyn55L4AAAAAAACAvwAAAIAAAAAAAAAAAAAAgL8AAAAAAAAAAP//f7///38/AAAAAAAAAID//3+/AAAAAAAAAIAAAAAAAACAvwAAAIAAAAAAAAAAAAAAgL8AAAAAymH8Mv//f78AAAAAAACAvwAAAIAAAAAAAAAAAAAAgL8AAAAAAAAAAP//f78AAAAAAACAvwAAAIAAAAAAAAAAAAAAgL8AAAAAAAAAAP//f78AAAAAAAAAAAAAgL8AAAAAymH8Mv//f78AAAAAAACAPwAAAIAAAAAAAAAAAAAAgL8AAAAAAAAAAP//f78AAAAAAACAPwAAAIBN5eo0AACAPwAAAIAAAIC/AAAAAAAAAID//3+/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL///38/AAAAAAAAAIAAAIA/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAAAAAAAP//f78AAAAAAACAPwAAAID//38/AAAAAAAAAID//3+/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAAAACAPwAAAIAAAAAAAAAAAP//f78AAAAAymH8Mv//f78AAAAAAACAPwAAAIAAAAAAAACAvwAAAIAAAAAAAACAvwAAAIAAAAAAAAAAAP//f78AAAAAymH8Mv//f78AAAAAAAAAAP//f78AAAAAAAAAAP//f78AAAAAL/lkPyj55L4AAAAAMvlkPyL55L4AAAAAAAAAAAAAgL8AAAAAAAAAAP//f78AAAAAL/lkPyj55L4AAAAAMvlkPyL55L4AAAAAAACAvwAAAIAAAAAAAAAAAP//f78AAAAAAAAAAP//f78AAAAAAAAAAAAAgL8AAAAAAAAAAP//f78AAAAAAACAPwAAAIAAAAAAAACAPwAAAID//3+/AAAAAAAAAIAAAAAAAACAvwAAAIAAAIC/AAAAAAAAAIBN5eo0AACAPwAAAIAAAIC/AAAAAAAAAID//3+/AAAAAAAAAIAAAIC/AAAAAAAAAID//3+/AAAAAAAAAIAAAIC/AAAAAAAAAIAAAAAAAACAPwAAAIAAAIA/Ijy8tAAAAIAAAAAA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cDDjPiB9uD0AA/w76vxUP3lQ8z7q/FQ/AAP8O+r8VD8L2PU+6vxUPyQADAAJACQACQAYAAAABgAVAAAAFQADABsAHQAHABsABwACAA4AFAARAA4AEQALACMAFwAIACMACAAfACcAIQASACcAEgANAAUAFgAgAAUAIAAmABMAIgAeABMAHgAQAAoADwAcAAoAHAAaAAQAJQAZAAQAGQABACEDKQNMACEDTAA7AG8AeABVAG8AVQBAAEMAYgBqAEMAagBHADoASwBQADoAUAA+AEEAVwBjAEEAYwBEACwDJwM/ACwDPwBxAF4ANAAqAF4AKgBnAHUAbgA5AHUAOQBcAFsAOAA1AFsANQBgAEkALAAwAEkAMABSAIYAigBkAIYAZABYAC8DfgBMAC8DTAApA4cAjABpAIcAaQBhAI8AhABWAI8AVgB6ADwDNQNzADwDcwCRAHwAgQBQAHwAUABLACgDGgMtACgDLQBKADEDMwN3ADEDdwBNAFMAMQBtAFMAbQB0ACUDLANxACUDcQBCAD0ATgB5AD0AeQBwADYDOANUADYDVAB2ADkDMgNPADkDTwB/ADcDOgOAADcDgABRAEkAUgCCAEkAggB9ACgDSgB+ACgDfgAvAzQDOwOQADQDkAB7AHIAWQCDAHIAgwCOAF0AZgCNAF0AjQCIAFoAXwCJAFoAiQCFAJQAkgCaAJQAmgCbAB8BkgCUAB8BlAAkAS4BOAGbAC4BmwCaAC8BoAChAC8BoQAwAZkAHAGhAJkAoQCgAKsApQCkAKsApACnADMBrgCoADMBqAAxAawAtgCpAKwAqQCmADQBPAG1ADQBtQCvALUAvwC8ALUAvACvAK0AuwDCAK0AwgC5ALoAvQDDALoAwwDAALgAwQDEALgAxADIAMkAxQC+AMkAvgC0ACYBIAHKACYBygAWAdEAzgDGANEAxgCzACEBIAHHACEBxwDPANIA3gDcANIA3ADQAM8A2wDhAM8A4QDVACEBJQH4ACEB+ADXAN0A4wDgAN0A4ADaANYA4gDkANYA5ADnAOgA5QDfAOgA3wDTADsBNgHoADsB6ADTADoB8ADoADoB6AA2Ae0A8QDUAO0A1ADmAJcA9ADvAJcA7wCfACMBJQHVACMB1QDzAPYA/wD8APYA/ADrAOkA+wACAekAAgH5APoAlQCdAPoAnQDsAP0AAAEGAf0ABgEDAfgAAQEEAfgABAHXANgABQH+ANgA/gD1ADsB0wC1ADsBtQA8Ac0A2QD3AM0A9wAJAbEADgELAbEACwEIAQcBCgERAQcBEQHMAAwBDwEVAQwBFQESAcsAEAETAcsAEwEXARgBFAENARgBDQGwACcBKAGqACcBqgC4AB0BGQGyAB0BsgCjACsBKQEbASsBGwGYAKUAqwAqAaUAKgEsARcBGgEoARcBKAEnAZMA+AAlAZMAJQEjAc8A1QAlAc8AJQEhAdcAygAgAdcAIAEhAbcAxwAgAbcAIAEmAZYAHgEiAZYAIgHyAPYAOwE8AfYAPAEIAZwAOQE1AZwANQHqAPYA6wA2AfYANgE7AbEACAE8AbEAPAE0AbEANAEyAbEAMgGiAKQALwEwAaQAMAGnAJ4A7gA3AZ4ANwEtAT4BQgFTAT4BUwFNAUMBPwFLAUMBSwFxAU8BVwFIAU8BSAFAAUkBPQFFAUkBRQFpAU4BVAFeAU4BXgFaAVgBUAFcAVgBXAFkAXIBTAFbAXIBWwFfAWEBWQFKAWEBSgFqAXsBVQFjAXsBYwFnAWsBbQFmAWsBZgFiAUYBdgFuAUYBbgFsAW8BcwFgAW8BYAFoAXgBRAF0AXgBdAFwAXcBRwFWAXcBVgF8AXoBUgFBAXoBQQF1AV0BUQF5AV0BeQFlAYEBfgGKAYEBigGYAYcBfQGDAYcBgwGTAacBmwGIAacBiAGUAZkBpgGyAZkBsgGRAYUBjQGPAYUBjwGVAY4BggGaAY4BmgGSAZ8BfgGBAZ8BgQG5AYkBnAGkAYkBpAGXAa4BogGeAa4BngGqAaABugGlAaABpQGdAbYBrAGoAbYBqAGwAa0BhgF/Aa0BfwGhAaMBtwGzAaMBswGvAZYBkAGxAZYBsQGpAasBtQGMAasBjAGEAbgBgAGLAbgBiwG0AcIBvgG/AcIBvwHDAcUBuwG9AcUBvQHBAccByQG8AccBvAHGAcQBwAHKAcQBygHIAc0B0QHiAc0B4gHcAdABzAHaAdAB2gEAAt0B5QHWAd0B1gHOAdcBywHTAdcB0wH3AdsB4QHtAdsB7QHpAeYB3gHqAeYB6gHyAf8B2QHoAf8B6AHsAe8B5wHYAe8B2AH4AQoC5AHwAQoC8AH0AfoB/AH1AfoB9QHxAdUBBQL7AdUB+wH5Af0BAQLuAf0B7gH2AQYC0gECAgYCAgL+AQQC1AHjAQQC4wEJAggC4AHPAQgCzwEDAusB3wEHAusBBwLzARACDAIaAhACGgIoAhcCCwITAhcCEwIjAjcCKwIYAjcCGAIkAikCNgJCAikCQgIhAhUCHQIfAhUCHwIlAh4CEgIqAh4CKgIiAjACDQIRAjACEQJKAhkCLAI0AhkCNAInAj4CMgIuAj4CLgI6Ai8CSQI1Ai8CNQItAkYCPAI4AkYCOAJAAj0CFgIOAj0CDgIxAjMCRwJDAjMCQwI/AiYCIAJBAiYCQQI5AjsCRQIcAjsCHAIUAkgCDwIbAkgCGwJEAlICTgJPAlICTwJTAlUCSwJNAlUCTQJRAlcCWQJMAlcCTAJWAlQCUAJaAlQCWgJYAl0CYQJyAl0CcgJsAmACXAJqAmACagKQAm0CdQJmAm0CZgJeAmcCWwJjAmcCYwKHAmsCcQJ9AmsCfQJ5AnYCbgJ6AnYCegKCAo8CaQJ4Ao8CeAJ8An8CdwJoAn8CaAKIApkCcwKBApkCgQKFAokCiwKEAokChAKAAmQClAKMAmQCjAKKAo0CkQJ+Ao0CfgKGApYCYgKSApYCkgKOApUCZQJ0ApUCdAKaApgCcAJfApgCXwKTAnsCbwKXAnsClwKDAqECnQKpAqECqQK2AqcCmwKjAqcCowKyAsMCuQKoAsMCqAKzArcCwgLOArcCzgKwAqUCrAKuAqUCrgK0Aq0CogK4Aq0CuAKxArwCnAKgArwCoALVAqkCugLBAqkCwQK2AsoCvwK7AsoCuwLGAr0C1gLBAr0CwQK6AtICyALEAtICxALMAskCpgKeAskCngK+AsAC0wLPAsACzwLLArUCrwLNArUCzQLFAscC0QKrAscCqwKkAtQCnwKqAtQCqgLQAt4C2gLbAt4C2wLfAuEC1wLZAuEC2QLdAuMC5QLYAuMC2ALiAuAC3ALmAuAC5gLkAu4C6gLrAu4C6wLvAvEC5wLpAvEC6QLtAvMC9QLoAvMC6ALyAvAC7AL2AvAC9gL0Av4C+gL7Av4C+wL/AgED9wL5AgED+QL9AgMDBQP4AgMD+AICAwAD/AIGAwADBgMEAw4DCgMLAw4DCwMPAxEDBwMJAxEDCQMNAxMDFQMIAxMDCAMSAxADDAMWAxADFgMUA2UAKgMwA2UAMAOLADYAawAtAzYALQMfA4sAMAMrA4sAKwNoAGUAKQAYA2UAGAMqAzwAPwAnAzwAJwMiA0UASAAkA0UAJAMmA0IARQAmA0IAJgMlAzIANwAgAzIAIAMdAygAMwAeAygAHgMXA2wALwAcA2wAHAMuA0YAaAArA0YAKwMjAy4AKwAZAy4AGQMbA6gDpgNAA6gDQANDA4cDgwNFA4cDRQNtA1QDcgN6A1QDegNXA68DugN3A68DdwNaA4QDjANyA4QDcgNUA74DqQNEA74DRAOCA6QDqwNHA6QDRwM9A6oDrANKA6oDSgNGA1sDeANdA1sDXQNNA7EDswNQA7EDUANTA7IDsANcA7IDXANPA64DtQNWA64DVgNZA3UDPwNIA3UDSANhA2MDSQNMA2MDTANnA7kDpQM+A7kDPgN0A20DRQNBA20DQQN9A04DYANrA04DawNSA5cDmwNqA5cDagNfA8ADnQN3A8ADdwO6A5QDjwN7A5QDewNzA58DlgNeA58DXgN5A5kDoAOMA5kDjANpA6wDvQOBA6wDgQNKA1EDaQOMA1EDjAOEA2UDSwODA2UDgwOHA24DfgOOA24DjgOTA2YDiAOhA2YDoQOaA3YDYgOVA3YDlQOeA7kDdAOdA7kDnQPAA2QDaAOcA2QDnAOYA38DtgO/A38DvwOQA1MDhgO8A1MDvAOxA4ADQgOnA4ADpwO3A5ADvwO4A5ADuAN8A4UDVQO0A4UDtAO7A1gDfAO4A1gDuAOtA40DogPLA40DywPEA2wDkgPKA2wDygPHA5EDcQPCA5EDwgPJA4oDbwPIA4oDyAPGA3ADiwPDA3ADwwPBA6MDiQPFA6MDxQPMA/7//74AAAAAj8L1Pf7//74AAAAAj8L1Pf7//74AAAAAj8L1Pf7//77OzAxANcrMPf7//77OzAxANcrMPf7//77OzAxANcrMPf7//76F6wFANcrMPf7//76F6wFANcrMPf7//76QwvU9j8L1Pf7//76QwvU9j8L1Pf7//76QwvU9j8L1Pf7//764HgU+rPPMPf7//764HgU+rPPMPf7//764HgU+rPPMPQAAAD/OzAxANcrMPQAAAD/OzAxANcrMPQAAAD/OzAxANcrMPQAAAD+F6wFANcrMPQAAAD+F6wFANcrMPQAAAD+4HgU+NcrMPQAAAD+4HgU+NcrMPQAAAD+4HgU+NcrMPQAAAD+QwvU9j8L1PQAAAD+QwvU9j8L1PQAAAD+QwvU9j8L1PQAAAD8AAAAAj8L1PQAAAD8AAAAAj8L1PQAAAD8AAAAAj8L1PcvMzL7OzAxANcrMPcvMzL7OzAxANcrMPc3MzD7OzAxANcrMPc3MzD7OzAxANcrMPc3MzD6F6wFANcrMPc3MzD6F6wFANcrMPc3MzD6F6wFANcrMPcvMzL6F6wFANcrMPcvMzL6F6wFANcrMPcvMzL6F6wFANcrMPc3MzD64HgU+NcrMPc3MzD64HgU+NcrMPc3MzD64HgU+NcrMPcvMzL64HgU+NcrMPcvMzL64HgU+NcrMPcvMzL64HgU+NcrMPcvMzL64HgU+NcrMPcvMzL6QwvU9j8L1PcvMzL6QwvU9j8L1PcvMzL6QwvU9j8L1Pc3MzD6QwvU9j8L1Pc3MzD6QwvU9j8L1Pc3MzD6QwvU9j8L1PcvMzL4AAAAAj8L1PcvMzL4AAAAAj8L1Pc3MzD4AAAAAj8L1Pc3MzD4AAAAAj8L1Pf7//75mZmY/NcrMPf7//75mZmY/NcrMPf7//75mZmY/NcrMPQAAAD9mZmY/NcrMPQAAAD9mZmY/NcrMPcvMzL5mZmY/NcrMPcvMzL5mZmY/NcrMPcvMzL5mZmY/NcrMPcvMzL5mZmY/NcrMPc3MzD5mZmY/NcrMPc3MzD5mZmY/NcrMPc3MzD5mZmY/NcrMPV44zr7qJQJA/PxmPV44zr7qJQJA/PxmPeZRuL5SuP4//PxmPeZRuL5SuP4//PxmPeZRuL5SuP4//PxmPeZRuL5SuP4//PxmPV44zj7qJQJA/fxmPV44zj7qJQJA/fxmPV44zr7qJQJAYfmHvV44zr7qJQJAYfmHvV84zr7SfGU//PxmPV84zr7SfGU//PxmPedRuL7Xo3A//PxmPedRuL7Xo3A//PxmPedRuL7Xo3A//PxmPedRuL7Xo3A//PxmPV04zj7SfGU//fxmPV04zj7SfGU//fxmPV84zr7SfGU/YfmHvV84zr7SfGU/YfmHvedRuL7Xo3A/YfmHvedRuL7Xo3A/YfmHvedRuL7Xo3A/YfmHvedRuL7Xo3A/YfmHvV04zj7SfGU/YfmHvV04zj7SfGU/YfmHvV44zj7qJQJAYfmHvV44zj7qJQJAYfmHveVRuD7Xo3A/YfmHveVRuD7Xo3A/YfmHveVRuD7Xo3A/YfmHveVRuD7Xo3A/YfmHveZRuD5SuP4/YfmHveZRuD5SuP4/YfmHveZRuD5SuP4/YfmHveZRuD5SuP4/YfmHveVRuD7Xo3A/xpD5vOVRuD7Xo3A/xpD5vOVRuD7Xo3A/xpD5vOVRuD7Xo3A/xpD5vOdRuL7Xo3A/xpD5vOdRuL7Xo3A/xpD5vOdRuL7Xo3A/xpD5vOdRuL7Xo3A/xpD5vOVRuD7Xo3A/QqWnvOVRuD7Xo3A/QqWnvOVRuD7Xo3A/QqWnvOVRuD7Xo3A/QqWnvOZRuD5SuP4/xpD5vOZRuD5SuP4/xpD5vOZRuD5SuP4/xpD5vOZRuD5SuP4/xpD5vDCJwT7Xo3A/xpD5vDCJwT7Xo3A/xpD5vDCJwT7Xo3A/xpD5vDCJwT7Xo3A/QqWnvDCJwT7Xo3A/QqWnvDCJwT7Xo3A/QqWnvDGJwT5SuP4/xpD5vDGJwT5SuP4/xpD5vDGJwT5SuP4/xpD5vDGJwT5SuP4/QqWnvDGJwT5SuP4/QqWnvDGJwT5SuP4/QqWnvOZRuD5SuP4/QqWnvOZRuD5SuP4/QqWnvOZRuD5SuP4/QqWnvOZRuD5SuP4/QqWnvOZRuL5SuP4/QqWnvOZRuL5SuP4/QqWnvOZRuL5SuP4/QqWnvOZRuL5SuP4/QqWnvOZRuD5SuP4/bnMrPOZRuD5SuP4/bnMrPOZRuD5SuP4/bnMrPOZRuD5SuP4/bnMrPOVRuD7Xo3A/bnMrPOVRuD7Xo3A/bnMrPOVRuD7Xo3A/bnMrPOVRuD7Xo3A/bnMrPOZRuD5SuP4/PKWnPOZRuD5SuP4/PKWnPOZRuD5SuP4/PKWnPOZRuD5SuP4/PKWnPOZRuL5SuP4/bnMrPOZRuL5SuP4/bnMrPOZRuL5SuP4/bnMrPOZRuL5SuP4/bnMrPDGJwT5SuP4/bnMrPDGJwT5SuP4/bnMrPDGJwT5SuP4/bnMrPDCJwT7Xo3A/bnMrPDCJwT7Xo3A/bnMrPDCJwT7Xo3A/bnMrPDGJwT5SuP4/PKWnPDGJwT5SuP4/PKWnPDGJwT5SuP4/PKWnPDCJwT7Xo3A/PKWnPDCJwT7Xo3A/PKWnPDCJwT7Xo3A/PKWnPOVRuD7Xo3A/PKWnPOVRuD7Xo3A/PKWnPOVRuD7Xo3A/PKWnPOVRuD7Xo3A/PKWnPOdRuL7Xo3A/PKWnPOdRuL7Xo3A/PKWnPOdRuL7Xo3A/PKWnPOdRuL7Xo3A/PKWnPOVRuD7Xo3A//fxmPeVRuD7Xo3A//fxmPeVRuD7Xo3A//fxmPeVRuD7Xo3A//fxmPeZRuD5SuP4//fxmPeZRuD5SuP4//fxmPeZRuD5SuP4//fxmPeZRuD5SuP4//fxmPedRuL7Xo3A/bnMrPOdRuL7Xo3A/bnMrPOdRuL7Xo3A/bnMrPOdRuL7Xo3A/bnMrPOZRuL5SuP4/PKWnPOZRuL5SuP4/PKWnPOZRuL5SuP4/PKWnPOZRuL5SuP4/PKWnPDKJwb7Xo3A/PKWnPDKJwb7Xo3A/PKWnPDKJwb7Xo3A/PKWnPDKJwb7Xo3A/bnMrPDKJwb7Xo3A/bnMrPDKJwb7Xo3A/bnMrPDGJwb5SuP4/PKWnPDGJwb5SuP4/PKWnPDGJwb5SuP4/PKWnPDGJwb5SuP4/bnMrPDGJwb5SuP4/bnMrPDGJwb5SuP4/bnMrPOdRuL7Xo3A/QqWnvOdRuL7Xo3A/QqWnvOdRuL7Xo3A/QqWnvOdRuL7Xo3A/QqWnvDKJwb7Xo3A/QqWnvDKJwb7Xo3A/QqWnvDKJwb7Xo3A/QqWnvDKJwb7Xo3A/xpD5vDKJwb7Xo3A/xpD5vDKJwb7Xo3A/xpD5vDGJwb5SuP4/QqWnvDGJwb5SuP4/QqWnvDGJwb5SuP4/QqWnvDGJwb5SuP4/xpD5vDGJwb5SuP4/xpD5vDGJwb5SuP4/xpD5vOZRuL5SuP4/xpD5vOZRuL5SuP4/xpD5vOZRuL5SuP4/xpD5vOZRuL5SuP4/xpD5vOZRuL5SuP4/YfmHveZRuL5SuP4/YfmHveZRuL5SuP4/YfmHveZRuL5SuP4/YfmHvd05uL6Zff4/cL8Kvd05uL6Zff4/cL8Kvd05uL6Zff4/cL8Kvd05uL6Zff4/cL8KvRXvo74mPPo/AGUkvBXvo74mPPo/AGUkvBXvo74mPPo/AGUkvBXvo74mPPo/AGUkvN05uL6gwvs/OEyCvd05uL6gwvs/OEyCvd05uL6gwvs/OEyCvd05uL6gwvs/OEyCvd05uL7chcQ/p+uUPt05uL7chcQ/p+uUPt05uL7chcQ/p+uUPt05uL7chcQ/p+uUPtc5uD6Zff4/dL8Kvdc5uD6Zff4/dL8Kvdc5uD6Zff4/dL8Kvdc5uD6Zff4/dL8KvQ/voz4mPPo/EGUkvA/voz4mPPo/EGUkvA/voz4mPPo/EGUkvA/voz4mPPo/EGUkvNc5uD6gwvs/OEyCvdc5uD6gwvs/OEyCvdc5uD6gwvs/OEyCvdc5uD6gwvs/OEyCvdY5uD7chcQ/p+uUPtY5uD7chcQ/p+uUPtY5uD7chcQ/p+uUPtY5uD7chcQ/p+uUPg7voz5Qx8g/3raIPg7voz5Qx8g/3raIPg7voz5Qx8g/3raIPg7voz5Qx8g/3raIPtY5uD7kysE/iLCFPtY5uD7kysE/iLCFPtY5uD7kysE/iLCFPtY5uD7kysE/iLCFPg7voz5XDMY/fvdyPg7voz5XDMY/fvdyPg7voz5XDMY/fvdyPg7voz5XDMY/fvdyPt05uL7kysE/iLCFPt05uL7kysE/iLCFPt05uL7kysE/iLCFPt05uL7kysE/iLCFPhbvo75XDMY/fvdyPhbvo75XDMY/fvdyPhbvo75XDMY/fvdyPhbvo75XDMY/fvdyPhbvo75Qx8g/37aIPhbvo75Qx8g/37aIPhbvo75Qx8g/37aIPhbvo75Qx8g/37aIPhXvo74tgfc/QPIivRXvo74tgfc/QPIivRXvo74tgfc/QPIivRXvo74tgfc/QPIivQ/voz4tgfc/QPIivQ/voz4tgfc/QPIivQ/voz4tgfc/QPIivQ/voz4tgfc/QPIivd05uL6Jef8/uB/nO905uL6Jef8/uB/nO905uL6Jef8/uB/nO905uL6Jef8/uB/nOxXvo74VOPs/bhT9PBXvo74VOPs/bhT9PBXvo74VOPs/bhT9PBXvo74VOPs/bhT9PN05uL6Qvvw/Euq5vN05uL6Qvvw/Euq5vN05uL6Qvvw/Euq5vN05uL6Qvvw/Euq5vN05uL7MgcU/FOCpPt05uL7MgcU/FOCpPt05uL7MgcU/FOCpPt05uL7MgcU/FOCpPhXvo74dffg/YCeWOhXvo74dffg/YCeWOhXvo74dffg/YCeWOhXvo74dffg/YCeWOhbvo75HCMc/LHCOPhbvo75HCMc/LHCOPhbvo75HCMc/LHCOPhbvo75HCMc/LHCOPt05uL7UxsI/9KSaPt05uL7UxsI/9KSaPt05uL7UxsI/9KSaPt05uL7UxsI/9KSaPhbvo75Aw8k/TKudPhbvo75Aw8k/TKudPhbvo75Aw8k/TKudPhbvo75Aw8k/TKudPtY5uD7NgcU/E+CpPtY5uD7NgcU/E+CpPtY5uD7NgcU/E+CpPtY5uD7NgcU/E+CpPtc5uD6Jef8/uB/nO9c5uD6Jef8/uB/nO9c5uD6Jef8/uB/nO9c5uD6Jef8/uB/nOw7voz5Aw8k/TKudPg7voz5Aw8k/TKudPg7voz5Aw8k/TKudPg7voz5Aw8k/TKudPtY5uD7UxsI/9KSaPtY5uD7UxsI/9KSaPtY5uD7UxsI/9KSaPtY5uD7UxsI/9KSaPtc5uD6Qvvw/Euq5vNc5uD6Qvvw/Euq5vNc5uD6Qvvw/Euq5vNc5uD6Qvvw/Euq5vA7voz5ICMc/LHCOPg7voz5ICMc/LHCOPg7voz5ICMc/LHCOPg7voz5ICMc/LHCOPg/voz4dffg/ICeWOg/voz4dffg/ICeWOg/voz4dffg/ICeWOg/voz4dffg/ICeWOg/voz4WOPs/bhT9PA/voz4WOPs/bhT9PA/voz4WOPs/bhT9PA/voz4WOPs/bhT9POExhbxGZPw/wsGkPOExhbxGZPw/wsGkPOExhbwLLPo/qGyFu+ExhbwLLPo/qGyFu6AxhTwLLPo/qGyFu6AxhTwLLPo/qGyFu+cxhbwX3MU/V/WTPucxhbwX3MU/V/WTPpoxhTwX3MU/V/WTPpoxhTwX3MU/V/WTPucxhbxSFMg/JVegPucxhbxSFMg/JVegPpoxhTxSFMg/JVegPpoxhTxSFMg/JVegPqAxhTxGZPw/wsGkPKAxhTxGZPw/wsGkPDwK176kcF0/HoXrPTwK176kcF0/HoXrPTwK176kcF0/HoXrPTwK176kcF0/AAAAvjwK176kcF0/AAAAvjwK176kcF0/AAAAvjwK175wPWo/HoXrPTwK175wPWo/HoXrPTwK175wPWo/HoXrPTwK1z6kcF0/HoXrPTwK1z6kcF0/HoXrPTwK1z6kcF0/HoXrPTwK1z6kcF0/AAAAvjwK1z6kcF0/AAAAvjwK1z6kcF0/AAAAvjwK1z5wPWo/HoXrPTwK1z5wPWo/HoXrPTwK1z5wPWo/HoXrPTwK1z5wPWo/AAAAvjwK1z5wPWo/AAAAvjwK1z5wPWo/AAAAvjwK175wPWo/AAAAvjwK175wPWo/AAAAvjwK175wPWo/AAAAvui8rL7/vMU/5DiRPui8rL7/vMU/5DiRPui8rL47z8g/pDaIPui8rL47z8g/pDaIPliGtr7/vMU/5DiRPliGtr7/vMU/5DiRPliGtr47z8g/pDaIPliGtr47z8g/pDaIPui8rL4Pf6w/AC9xPOi8rL4Pf6w/AC9xPOi8rL4Pf6w/AC9xPOi8rL5Kka8/AGQ8u+i8rL5Kka8/AGQ8u+i8rL5Kka8/AGQ8u1iGtr4Pf6w/AC9xPFiGtr4Pf6w/AC9xPFiGtr4Pf6w/AC9xPFiGtr5Kka8/AGQ8u1iGtr5Kka8/AGQ8u1iGtr5Kka8/AGQ8u+i8rL4dRsc/xLeMPui8rL4dRsc/xLeMPliGtr4dRsc/xLeMPliGtr4dRsc/xLeMPliGtr4a+6w/AKmou1iGtr4a+6w/AKmou1iGtr4a+6w/AKmou1iGtr4a+6w/AKmou+i8rL4a+6w/AKmou+i8rL4a+6w/AKmou+i8rL4a+6w/AKmou+i8rL4a+6w/AKmou6Chsb7/vMU/5DiRPqChsb7/vMU/5DiRPqChsb47z8g/pDaIPqChsb47z8g/pDaIPqChsb4Pf6w/AC9xPKChsb4Pf6w/AC9xPKChsb4Pf6w/AC9xPKChsb5Kka8/AGQ8u6Chsb5Kka8/AGQ8u6Chsb5Kka8/AGQ8u6Chsb4a+6w/AKmou6Chsb4a+6w/AKmou+bBtj7/vMU/5DiRPubBtj7/vMU/5DiRPubBtj47z8g/pDaIPubBtj47z8g/pDaIPnb4rD7/vMU/5DiRPnb4rD7/vMU/5DiRPnb4rD47z8g/pDaIPnb4rD47z8g/pDaIPubBtj4Pf6w/AC9xPObBtj4Pf6w/AC9xPObBtj4Pf6w/AC9xPObBtj5Kka8/AGQ8u+bBtj5Kka8/AGQ8u+bBtj5Kka8/AGQ8u3b4rD4Pf6w/AC9xPHb4rD4Pf6w/AC9xPHb4rD4Pf6w/AC9xPHb4rD5Kka8/AGQ8u3b4rD5Kka8/AGQ8u3b4rD5Kka8/AGQ8u+bBtj4dRsc/xLeMPubBtj4dRsc/xLeMPnb4rD4dRsc/xLeMPnb4rD4dRsc/xLeMPnb4rD4a+6w/AKmou3b4rD4a+6w/AKmou3b4rD4a+6w/AKmou3b4rD4a+6w/AKmou+bBtj4a+6w/AKmou+bBtj4a+6w/AKmou+bBtj4a+6w/AKmou+bBtj4a+6w/AKmouy7dsT7/vMU/5DiRPi7dsT7/vMU/5DiRPi7dsT47z8g/pDaIPi7dsT47z8g/pDaIPi7dsT4Pf6w/AC9xPC7dsT4Pf6w/AC9xPC7dsT4Pf6w/AC9xPC7dsT4Pf6w/AC9xPC7dsT5Kka8/AGQ8uy7dsT5Kka8/AGQ8uy7dsT5Kka8/AGQ8uy7dsT5Kka8/AGQ8uy7dsT4a+6w/AKmouy7dsT4a+6w/AKmouy7dsT4a+6w/AKmouy7dsT4a+6w/AKmou83MzD6F6wFAAAAAgM3MzD6F6wFAAAAAgMvMzL6F6wFAAAAAgMvMzL6F6wFAAAAAgMvMzL5mZmY/AAAAgMvMzL5mZmY/AAAAgM3MzD5mZmY/AAAAgM3MzD5mZmY/AAAAgP7//74AAAAAANgltv7//74AAAAAANgltv7//77OzAxAANgltv7//77OzAxAANgltv7//76F6wFAANgltv7//76QwvU9ANgltv7//764HgU+gHobOAAAAD/OzAxAANgltgAAAD/OzAxAANgltgAAAD8AAAAAANgltgAAAD8AAAAAANgltgAAAD+4HgU+ANgltgAAAD+QwvU9ANgltgAAAD+F6wFAANgltsrMzL7OzAxAANglts7MzD7OzAxAANgltsvMzL4AAAAAANglts3MzD4AAAAAANgltgAAAD9mZmY/ANgltv7//75mZmY/ANgltv7//74AAAAAjsL1vf7//74AAAAAjsL1vf7//74AAAAAjsL1vf7//77OzAxAzszMvf7//77OzAxAzszMvf7//77OzAxAzszMvf7//76F6wFAzszMvf7//76F6wFAzszMvf7//76QwvU9jsL1vf7//76QwvU9jsL1vf7//76QwvU9jsL1vf7//764HgU+zszMvf7//764HgU+zszMvf7//764HgU+zszMvQAAAD+QwvU9jsL1vQAAAD+QwvU9jsL1vQAAAD+QwvU9jsL1vQAAAD+4HgU+zszMvQAAAD+4HgU+zszMvQAAAD+4HgU+zszMvQAAAD+F6wFAzszMvQAAAD+F6wFAzszMvQAAAD+F6wFAzszMvQEAAD/OzAxAzszMvQEAAD/OzAxAzszMvQEAAD/OzAxAzszMvQAAAD8AAAAAjsL1vQAAAD8AAAAAjsL1vQAAAD8AAAAAjsL1vc3MzD6QwvU9jsL1vc3MzD6QwvU9jsL1vc3MzD6QwvU9jsL1vcvMzL6QwvU9jsL1vcvMzL6QwvU9jsL1vcvMzL6QwvU9jsL1vcvMzL64HgU+zszMvcvMzL64HgU+zszMvcvMzL64HgU+zszMvc3MzD64HgU+zszMvc3MzD64HgU+zszMvc3MzD64HgU+zszMvcvMzL6F6wFAzszMvcvMzL6F6wFAzszMvcvMzL6F6wFAzszMvcvMzL6F6wFAzszMvc3MzD6F6wFAzszMvc3MzD6F6wFAzszMvc3MzD6F6wFAzszMvc3MzD6F6wFAzszMvcvMzL4AAAAAjsL1vcvMzL4AAAAAjsL1vc3MzD4AAAAAjsL1vc3MzD4AAAAAjsL1vc7MzD7OzAxAzszMvc7MzD7OzAxAzszMvc7MzD7OzAxAzszMvcrMzL7OzAxAzszMvcrMzL7OzAxAzszMvcrMzL7OzAxAzszMvf7//75mZmY/zszMvf7//75mZmY/zszMvQAAAD9mZmY/zszMvQAAAD9mZmY/zszMvcvMzL5mZmY/zszMvcvMzL5mZmY/zszMvcvMzL5mZmY/zszMvc3MzD5mZmY/zszMvc3MzD5mZmY/zszMvc3MzD5mZmY/zszMvc3MzD6F6wFAAAAAgM3MzD6F6wFAAAAAgM3MzD5mZmY/AAAAgM3MzD5mZmY/AAAAgMvMzL5mZmY/AAAAgMvMzL5mZmY/AAAAgMvMzL6F6wFAAAAAgMvMzL6F6wFAAAAAgP7//74AAAAAANgltv7//74AAAAAANgltv7//77OzAxAANgltv7//77OzAxAANgltv7//76F6wFAANgltv7//76QwvU9ANgltv7//764HgU+gHobOAAAAD/OzAxAANgltgAAAD/OzAxAANgltgAAAD8AAAAAANgltgAAAD8AAAAAANgltgAAAD+4HgU+ANgltgAAAD+QwvU9ANgltgAAAD+F6wFAANgltgAAAD+F6wFAANgltsrMzL7OzAxAANglts7MzD7OzAxAANgltsvMzL4AAAAAANglts3MzD4AAAAAANgltgAAAD9mZmY/ANgltv7//75mZmY/ANgltgAAgL8AAAAAAAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAPwAAgL8AAAAAAAAAgAAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAPwAAgL8AAAAAAAAAgAAAAAAAAAAAAACAP06mOTne5GQ/W0rlPgAAgL8AAAAAAAAAgE6mOTne5GQ/W0rlPv9SzznfWVc4/v9/PwAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgAAAgD8AAAAAAAAAgAAAAAAAAAAAAACAPwAAgD8AAAAAAAAAgAAAAAAAAAAAAACAPwAAAAAX/GQ/i+3kPgAAgD8AAAAAAAAAgAAAAAAAAAAAAACAPwAAAAAX/GQ/i+3kPgAAgD8AAAAAAAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAPwAAgD8AAAAAAAAAgAAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgAAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgP//f78AAAAAAAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAPwAAAAAAAIC/AAAAgAAAAAAAAAAAAACAP///fz8AAAAAAAAAgAAAAAAAAAAAAACAPwAAAAAX/GQ/i+3kPgAAAAAX/GQ/j+3kPgAAAAAAAAAAAACAPwAAAAAX/GQ/j+3kPk6mOTne5GQ/W0rlPv9SzznfWVc4/v9/PwAAAAAAAAAAAACAPwAAAAAX/GQ/j+3kPk6mOTne5GQ/W0rlPgAAAAAAAAAAAACAPwAAAAAX/GQ/i+3kPgAAAAAX/GQ/j+3kPgAAAAAAAIC/AAAAgAAAAAAAAAAAAACAPwAAAAAAAIC/AAAAgAAAAAAAAAAAAACAPwAAgL8AAAAAAAAAgAAAAAAAAAAAAACAP/9SzznfWVc4/v9/PwAAAAAAAAAAAACAPwAAgD8AAAAAAAAAgAAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgP9SzznfWVc4/v9/P///fz8AAAAAAAAAgP//f78AAAAAAAAAgAAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgALPp7EAAAAAAACAPwAAAAAAAAAA//9/PwLPp7EAAAAAAACAPwAAAAAAAIC/AAAAgAAAAAAAAAAA//9/PwAAgD89z/OyAAAAgALPp7EAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAA//9/vwAAAADxj7QzAACAvwPPp7HXv3CyAACAPwAAAAAAAAAA//9/PwPPp7HXv3CyAACAPwAAAAAAAAAA//9/PwAAAAAAAIA/AAAAgAAAgD89z/OyAAAAgAPPp7HXv3CyAACAPwAAAAAAAAAAAACAPwAAAADXv/CzAACAvwAAAAAAAAAA//9/vwAAAADXv/CzAACAvwAAAAAAAAAA//9/vwAAAAAAAIA/AAAAgAAAgD89z/OyAAAAgAAAAADXv/CzAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAADxj7QzAACAvwAAgL89z/MyAAAAgAAAAADXv/CzAACAvwAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAgL89z/MyAAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAvwAAAADxj7QzAACAvwAAgL89z/MyAAAAgAAAAAAAAAAAAACAPwAAAAD//38/AAAAgAAAAAAAAIA/AAAAgAAAAAAAAAAAAACAPwAAAAD//38/AAAAgAAAAAAAAIA/AAAAgAAAgD89z/OyAAAAgAAAgL8+z/MyAAAAgAAAAAAAAAAAAACAvwAAAAD//38/AAAAgAAAAAAAAIA/AAAAgAAAgL89z/MyAAAAgAAAAAAAAIC/AAAAgAAAAAD//3+/AAAAgAAAAAAAAAAAAACAPwAAgL89z/MyAAAAgAAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgAAAgL89z/MyAAAAgAAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAgL89z/MyAAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAPwAAgL89z/MyAAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAvwAAgL8+z/MyAAAAgAAAAAAAAIC/AAAAgAAAAAD//3+/AAAAgAAAAAAAAAAAAACAvwAAAAAAAIC/AAAAgAAAAAD//3+/AAAAgAAAAAAAAAAAAACAvwAAgD8+z/OyAAAAgAAAgL8+z/MyAAAAgAAAAAAAAIC/AAAAgAAAAAD//3+/AAAAgAAAAAAAAAAAAACAPwAAgL8+z/MyAAAAgAAAAAAAAAAAAACAPwAAAAD//38/AAAAgAAAAAAAAIA/AAAAgAAAgL89z/MyAAAAgAAAAAAAAIC/AAAAgAAAAAD//3+/AAAAgAAAAAAAAAAAAACAvwAAAAAAAIC/AAAAgAAAAAD//3+/AAAAgAAAAAAAAAAAAACAPwAAgD8+z/OyAAAAgAAAgL89z/MyAAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAPwAAgL89z/MyAAAAgAAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgAAAgL89z/MyAAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAvwAAgL89z/MyAAAAgAAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAgL89z/MyAAAAgAAAAAAAAAAAAACAvwAAAAD//38/AAAAgAAAAAAAAIA/AAAAgAAAAAAAAAAAAACAvwAAAAD//38/AAAAgAAAAAAAAIA/AAAAgAAAgD89z/OyAAAAgAAAgL89z/MyAAAAgAPPp7HXv3CyAACAPwAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgAAAgL89z/MyAAAAgALPp7EAAAAAAACAPwAAAAAAAIC/AAAAgAAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAD//38/AAAAgAAAAAAAAIA/AAAAgAAAgD8+z/OyAAAAgAAAAAAAAIC/AAAAgAAAAAD//3+/AAAAgAAAAAAAAAAAAACAvwAAgD89z/OyAAAAgAAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAgD89z/OyAAAAgAAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgAAAgD89z/OyAAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAvwAAgD89z/OyAAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAPwAAgD89z/OyAAAAgAAAAAAAAAAAAACAvwAAAAD//38/AAAAgAAAAAAAAIA/AAAAgAAAgD8+z/OyAAAAgAAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAgD89z/OyAAAAgAAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgAAAgD89z/OyAAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAvwAAgD89z/OyAAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAPwAAgD89z/OyAAAAgAAAAAAAAIC/AAAAgAAAAAD//3+/AAAAgAAAAAAAAAAAAACAPwAAgD89z/OyAAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAA//9/vwAAAADxj7QzAACAvwAAgD89z/OyAAAAgAAAgL8AAAAAAAAAgFx1Q7SfLRU//QpQPwAAAACSLRU/BwtQPwAAAAD2ClA/qi0Vv1x1Q7SfLRU//QpQPwAAAAD2ClC/qS0VPwAAAACSLRU/BwtQPwAAgD+xyVqzlqUPtAAAgL8AAAAAAAAAgAAAAACSLRW/BwtQvwAAAAD2ClA/qi0Vv1t1wzSfLRW//wpQvwAAgL8AAAAAAAAAgFx1Q7SfLRU//QpQPwAAAAAOC1C/ii0VP03IDzSaLRU/AwtQP/yXErWaLRU/AgtQPwAAAACSLRU/BwtQPwAAAAD2ClA/qi0VvwAAgD/UqTqzmM+GNAAAgL+2yVozAAAAgPyXErWaLRU/AgtQPwAAAAD2ClC/qS0VPwAAAACSLRU/BwtQP1B1w7SbLRW//wpQvwAAAACSLRW/BwtQvwAAAAD2ClA/qi0VvwAAgD/UqTqzmM+GNPyXErWaLRU/AgtQPwAAAAAOC1C/ii0VP03IDzSaLRU/AwtQPwAAgD/UqTqzmM+GNAAAgL+2yVozAAAAgPyXErWaLRU/AgtQPwAAAADyClA/ri0Vv03IDzSaLRU/AwtQP1B1w7SbLRW//wpQvwAAAAAOC1C/ii0VPwAAAACyLRW/7wpQvwAAgD/UqTqzmM+GNAAAgL+2yVozAAAAgFB1w7SbLRW//wpQvwAAAACyLRW/7wpQvwAAAADyClA/ri0VvwAAgL8AAAAAAAAAgAAAAAAOC1C/ii0VPwAAAACyLRW/7wpQv1t1wzSfLRW//wpQvwAAAACyLRW/7wpQvwAAAADyClA/ri0Vv1t1wzSfLRW//wpQvwAAgD+xyVqzlqUPtFx1Q7SfLRU//QpQPwAAAADyClA/ri0Vv03IDzSaLRU/AwtQPwAAgD+xyVqzlqUPtAAAAAD2ClC/qS0VPwAAAACSLRW/BwtQv1t1wzSfLRW//wpQvwAAgD+xyVqzlqUPtAAAgL+2yVozAAAAgFB1w7SbLRW//wpQvwAAAAD2ClC/qS0VPwAAAACSLRW/BwtQvwAAgL8AAAAAAAAAgF11Q7WfLRU//gpQPwAAAACWLRU/AgtQPwAAAAD3ClA/qC0Vv111Q7WfLRU//gpQPwAAAACWLRU/AgtQP3erPjQCC1C/ly0VPwAAgD/uyVqzHgOeNAAAgL8AAAAAAAAAgFx1w7WeLRW/AAtQvwAAAACmLRW/+gpQvwAAAAD3ClA/qC0VvwAAgL8AAAAAAAAAgF11Q7WfLRU//gpQPwAAAAADC1C/li0VPwAAAACbLRU/AQtQP1x1w7WeLRW/AAtQvwAAAACmLRW/+gpQv3erPjQCC1C/ly0VPwAAgD/uyVqzHgOeNFx1w7WeLRW/AAtQvwAAAACYLRW/BAtQvwAAAAAEC1A/ly0VvwAAgD/uyVqzHgOeNAAAgL8AAAAAAAAAgFx1w7WeLRW/AAtQvwAAAAADC1C/li0VPwAAAACYLRW/BAtQv111Q7WfLRU//gpQPwAAAACbLRU/AQtQPwAAAAAEC1A/ly0VvwAAgD/uyVqzHgOeNAAAAAADC1C/li0VPwAAAACaLRU/AQtQPwAAAACbLRU/AQtQPwAAgD/jqTqzTdW3NAAAAACWLRU/AgtQPwAAAACaLRU/AQtQPwAAAAD3ClA/qC0VvwAAgD/jqTqzTdW3NAAAgL+9yVozytXltAAAAACaLRU/AQtQPwAAAACbLRU/AQtQPwAAAAAEC1A/ly0VvwAAAAADC1C/li0VPwAAAACYLRW/BAtQv1B1wzWZLRW/AgtQvwAAgD/jqTqzTdW3NAAAAACmLRW/+gpQvwAAAAD3ClA/qC0Vv1B1wzWZLRW/AgtQvwAAgD/jqTqzTdW3NAAAgL+9yVozytXltAAAAACYLRW/BAtQvwAAAAAEC1A/ly0Vv1B1wzWZLRW/AgtQvwAAgL+9yVozytXltAAAAACmLRW/+gpQv3erPjQCC1C/ly0VP1B1wzWZLRW/AgtQvwAAgL+9yVozytXltAAAAACWLRU/AgtQPwAAAACaLRU/AQtQP3erPjQCC1C/ly0VPwAAgL8AIpsyAAAAgAAAAACZLRU/AQtQPwAAgL8AIpsyAAAAgAAAAACaLRW/AQtQvwAAAACaLRW/AQtQvwAAgD8pIpuyAAAAgAAAgL8AIpsyAAAAgAAAAACaLRW/AQtQvwAAAACaLRW/AQtQvwAAgD8pIpuyAAAAgAAAgL8AIpsyAAAAgAAAAACZLRU/AQtQPwAAAACZLRU/AQtQPwAAgD8pIpuyAAAAgAAAAACZLRU/AQtQPwAAgD8pIpuyAAAAgAAAgL8AAAAAAAAAgAAAAAD//3+/AAAAgAAAAAAAAAAAAACAPwAAgL8AAAAAAAAAgAAAAAD//3+/AAAAgAAAAAAAAAAAAACAvwAAgL8AAAAAAAAAgAAAAAAAAAAAAACAPwAAAAD//38/AAAAgAAAAAD//3+/AAAAgAAAAAAAAAAAAACAPwAAgD8AAAAAAAAAgAAAAAD//3+/AAAAgAAAAAAAAAAAAACAvwAAgD8AAAAAAAAAgAAAAAAAAAAAAACAPwAAAAD//38/AAAAgAAAgD8AAAAAAAAAgAAAAAAAAAAAAACAvwAAAAD//38/AAAAgAAAgD8AAAAAAAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAvwAAAAD//38/AAAAgAAAAADYcE6/NmMXPwAAgD8AAAAAu5q5NQAAAADHcE4/UWMXvwAAgD8AAAAA+f/EswAAgL8AAAAAOQSFtQAAAADGcE6/UGMXPwAAgL8AAAAAAAAAgAAAAADYcE4/N2MXvwAAAADaeXu/vqg/vgAAAADYcE6/NmMXPwAAgD8AAAAAu5q5NQAAAABr3OQ9g2V+vwAAAADHcE4/UWMXvwAAgD8AAAAA+f/EswAAgL8AAAAAOQSFtQAAAADaeXu/vqg/vgAAAADGcE6/UGMXPwAAgL8AAAAAAAAAgAAAAABr3OQ9g2V+vwAAAADYcE4/N2MXvwAAgD8AAAAA+f/EswAAgD8AAAAAu5q5NQAAgL8AAAAAOQSFtQAAgL8AAAAAAAAAgAAAgL8AAAAAOQSFtQAAgL8AAAAAAAAAgAAAAADaeXu/vqg/vgAAAABr3OQ9g2V+vwAAAADaeXu/vqg/vgAAAABr3OQ9g2V+vwAAgD8AAAAA+f/EswAAgD8AAAAAu5q5NQAAAADYcE6/NmMXPwAAAADGcE6/UGMXPwAAAADHcE4/UWMXvwAAAADYcE4/N2MXvwAAAADaeXu/vqg/vgAAAADYcE6/NmMXPwAAAADGcE6/UGMXPwAAAABr3OQ9g2V+vwAAAADHcE4/UWMXvwAAAADYcE4/N2MXvwAAAADaeXu/vqg/vgAAAABr3OQ9g2V+vwAAAADYcE6/NmMXPwAAgD8AAAAA+Xh3tQAAAADHcE4/UWMXvwAAgD8AAAAA+78TNQAAgL8AAAAAyXuUNQAAAADGcE6/UGMXPwAAgL8AAAAA5v9EtQAAAADYcE4/N2MXvwAAAADceXu/lqg/vgAAAADYcE6/NmMXPwAAgD8AAAAA+Xh3tQAAAABJ3OQ9hWV+vwAAAADHcE4/UWMXvwAAgD8AAAAA+78TNQAAgL8AAAAAyXuUNQAAAADaeXu/vqg/vgAAAADGcE6/UGMXPwAAgL8AAAAA5v9EtQAAAABr3OQ9g2V+vwAAAADYcE4/N2MXvwAAgD8AAAAA+Xh3tQAAgD8AAAAA+78TNQAAgL8AAAAA5v9EtQAAgL8AAAAAyXuUNQAAgL8AAAAA5v9EtQAAgL8AAAAAyXuUNQAAAADaeXu/vqg/vgAAAABr3OQ9g2V+vwAAAADceXu/lqg/vgAAAABJ3OQ9hWV+vwAAgD8AAAAA+Xh3tQAAgD8AAAAA+78TNQAAAADYcE6/NmMXPwAAAADGcE6/UGMXPwAAAADHcE4/UWMXvwAAAADYcE4/N2MXvwAAAADceXu/lqg/vgAAAADaeXu/vqg/vgAAAADYcE6/NmMXPwAAAADGcE6/UGMXPwAAAABJ3OQ9hWV+vwAAAABr3OQ9g2V+vwAAAADHcE4/UWMXvwAAAADYcE4/N2MXvwAAAADceXu/lqg/vgAAAADaeXu/vqg/vgAAAABJ3OQ9hWV+vwAAAABr3OQ9g2V+v///f78AAAAAAAAAgAAAAAAAAIC/AAAAgAAAAAAAAIC/AAAAgP//fz8AAAAAAAAAgAAAAAAAAIA/AAAAgP//fz8AAAAAAAAAgP//f78AAAAAAAAAgAAAAAAAAIA/AAAAgAAAgL8AAAAAAAAAgAAAAAAAAIC/AAAAgAAAgL8AAAAAAAAAgAAAAAAAAIA/AAAAgAAAgL8AAAAAAAAAgAAAgL8AAAAAAAAAgAAAgL8AAAAAAAAAgAAAAAAAAIA/AAAAgAAAgD8AAAAAAAAAgAAAAAAAAIC/AAAAgAAAgD8AAAAAAAAAgAAAgD8AAAAAAAAAgAAAgD8AAAAAAAAAgAAAgD8AAAAAAAAAgAAAAAAAAIA/AAAAgAAAAAAAAIA/AAAAgAAAAAAAAIC/AAAAgAAAAAAAAIC/AAAAgAAAgD8AAAAAAAAAgAAAgL8AAAAAAAAAgAAAgL8AAAAAAAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAvwAAgL8AAAAAAAAAgAAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAvwAAgL8AAAAAAAAAgAAAAAAAAAAAAACAvwAAAAAt+WQ/NPnkvgAAgL8AAAAAAAAAgAAAAAAAAAAAAACAvwAAAAAt+WQ/NPnkvgAAAAAAAAAAAACAvwAAAAAu+WQ/LvnkvgAAgD8AAAAAAAAAgAAAAAAAAAAAAACAvwAAAAAu+WQ/LvnkvgAAgD8AAAAAAAAAgAAAAAAAAAAAAACAvwAAgD8iPDy0AAAAgAAAgD8AAAAAAAAAgAAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAgD8iPDy0AAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAvwAAgD8AAAAAAAAAgAAAAAAAAAAAAACAvwAAAAAu+WQ/MvnkvgAAAAAu+WQ/LvnkvgAAAAAAAAAAAACAvwAAAAAt+WQ/NPnkvgAAAAAu+WQ/MvnkvgAAAAAAAAAAAACAvwAAAAAt+WQ/NPnkvgAAAAAu+WQ/MvnkvgAAAAAAAAAAAACAvwAAAAAu+WQ/MvnkvgAAAAAu+WQ/LvnkvgAAAAAAAIC/AAAAgAAAAAAAAAAAAACAvwAAAAAnPLwyAACAvwAAgD8AAAAAAAAAgAAAgL8AAAAAAAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAvwAAAAAnPLwyAACAvwAAAAAAAIC/AAAAgAAAAAAAAAAAAACAvwAAAAAAAIC/AAAAgAAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAnPLwyAACAvwAAAAAAAIA/AAAAgAAAAAAAAAAAAACAvwAAAAAnPLwyAACAvwAAAAAAAIA/AAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAgD8AAAAAAAAAgAAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAgD8AAAAAAAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAgL8AAAAAAAAAgAAAAAAAAIC/AAAAgAAAgL8AAAAAAAAAgAAAAAAAAIA/AAAAgAAAAAAAAIA/AAAAgAAAgD8AAAAAAAAAgAAAAAAAAIC/AAAAgAAAgD8AAAAAAAAAgAAAgL8AAAAAAAAAgAAAAAAAAIC/AAAAgAAAgL8AAAAAAAAAgAAAAAAAAIA/AAAAgAAAgL8AAAAAAAAAgAAAgL8AAAAAAAAAgAAAgL8AAAAAAAAAgAAAAAAAAIA/AAAAgAAAgD8iPDy0AAAAgAAAAAAAAIC/AAAAgAAAgD8AAAAAAAAAgAAAgD8AAAAAAAAAgAAAgD8AAAAAAAAAgAAAgD8iPDy0AAAAgAAAgD8AAAAAAAAAgAAAAAAAAIA/AAAAgAAAAAAAAIA/AAAAgAAAAAAAAIC/AAAAgAAAAAAAAIC/AAAAgAAAgD8AAAAA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kACfAJ0AkACdAI4AjACcAKIAjACiAJQAjQCVALwAjQC8AJgAngCkAKEAngChAJsAlgCjAKUAlgClAKgAqgCmAKAAqgCgAJIAuACsAKkAuACpAJEAUQCyAKoAUQCqAK0ArwCzAJMArwCTAKcASgC2ALEASgCxAFQARgC7AJQARgCUALUAuQDDAMAAuQDAAK0AqwC/AMYAqwDGAL0AvgBIAFIAvgBSAK4AwQDEAMoAwQDKAMcAuwDFAMgAuwDIAJcAmQDJAMIAmQDCALcAuQCSAHIAuQByAM0AigCaALoAigC6AM4AbQDTANAAbQDQAM0AywDPANYAywDWAIkA0QDUANoA0QDaANcAhwDVANgAhwDYANsA3QDZANIA3QDSAGsA2wDfAGQA2wBkAHQA4gDeAG4A4gBuAFoAXgBmAOEAXgDhAEwA5QDpAPoA5QD6APQA5wDkAPAA5wDwABcB9QD9AO0A9QDtAOYA7wDjAOsA7wDrAA8B8wD4AAQB8wAEAf8A/gD2AAIB/gACAQoBGQHyAAEBGQEBAQYBCAEAAfEACAHxABABIAH7AAcBIAEHAQwBEQETAQ0BEQENAQkB7gAdARUB7gAVARIBFAEYAQUBFAEFAQ4BHgHqABoBHgEaARYBHAHsAPwAHAH8ACIBIQH5AOgAIQHoABsBAwH3AB8BAwEfAQsBJwEkATABJwEwAT8BLwEjASsBLwErATsBTwFDATEBTwExAT0BQQFOAVkBQQFZATkBLAEzATcBLAE3ATwBNgEqAUIBNgFCAToBRwElASgBRwEoAWABMgFFAU0BMgFNAUABVgFKAUYBVgFGAVIBSAFhAUwBSAFMAUQBXgFVAVEBXgFRAVoBVAEuASYBVAEmAUkBSwFfAVsBSwFbAVcBPgE4AVgBPgFYAVABUwFcATQBUwE0AS0BYgEpATUBYgE1AV0BagFmAWcBagFnAWsBbQFjAWUBbQFlAWkBbwFxAWQBbwFkAW4BbAFoAXIBbAFyAXABdwF/AXwBdwF8AXQBcwF5AYgBcwGIAXYBfQGCAXoBfQF6AXUBgQGHAYQBgQGEAX4BhgGKAXsBhgF7AYMBeAGJAYUBeAGFAYABogGRAZwBogGcAaQBtgGyAZYBtgGWAagBqQGYAY4BqQGOAZ8BqwGwAZQBqwGUAYsBswGtAY0BswGNAZcBlQGqAaABlQGgAYwB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XTjOPtJ8ZT/9/GY9XzjOvtJ8ZT9h+Ye9XzjOvtJ8ZT9h+Ye951G4vtejcD9h+Ye951G4vtejcD9h+Ye951G4vtejcD9h+Ye951G4vtejcD9h+Ye9XTjOPtJ8ZT9h+Ye9XTjOPtJ8ZT9h+Ye9XjjOPuolAkBh+Ye9XjjOPuolAkBh+Ye95VG4PtejcD9h+Ye95VG4PtejcD9h+Ye95VG4PtejcD9h+Ye95VG4PtejcD9h+Ye95lG4PlK4/j9h+Ye95lG4PlK4/j9h+Ye95lG4PlK4/j9h+Ye95lG4PlK4/j9h+Ye95VG4PtejcD/GkPm85VG4PtejcD/GkPm85VG4PtejcD/GkPm85VG4PtejcD/GkPm851G4vtejcD/GkPm851G4vtejcD/GkPm851G4vtejcD/GkPm851G4vtejcD/GkPm85VG4PtejcD9Cpae85VG4PtejcD9Cpae85VG4PtejcD9Cpae85VG4PtejcD9Cpae85lG4PlK4/j/GkPm85lG4PlK4/j/GkPm85lG4PlK4/j/GkPm85lG4PlK4/j/GkPm8MInBPtejcD/GkPm8MInBPtejcD/GkPm8MInBPtejcD/GkPm8MInBPtejcD9Cpae8MInBPtejcD9Cpae8MInBPtejcD9Cpae8MYnBPlK4/j/GkPm8MYnBPlK4/j/GkPm8MYnBPlK4/j/GkPm8MYnBPlK4/j9Cpae8MYnBPlK4/j9Cpae8MYnBPlK4/j9Cpae85lG4PlK4/j9Cpae85lG4PlK4/j9Cpae85lG4PlK4/j9Cpae85lG4PlK4/j9Cpae85lG4vlK4/j9Cpae85lG4vlK4/j9Cpae85lG4vlK4/j9Cpae85lG4vlK4/j9Cpae85lG4PlK4/j9ucys85lG4PlK4/j9ucys85lG4PlK4/j9ucys85lG4PlK4/j9ucys85VG4PtejcD9ucys85VG4PtejcD9ucys85VG4PtejcD9ucys85VG4PtejcD9ucys85lG4PlK4/j88pac85lG4PlK4/j88pac85lG4PlK4/j88pac85lG4PlK4/j88pac85lG4vlK4/j9ucys85lG4vlK4/j9ucys85lG4vlK4/j9ucys85lG4vlK4/j9ucys8MYnBPlK4/j9ucys8MYnBPlK4/j9ucys8MYnBPlK4/j9ucys8MInBPtejcD9ucys8MInBPtejcD9ucys8MInBPtejcD9ucys8MYnBPlK4/j88pac8MYnBPlK4/j88pac8MYnBPlK4/j88pac8MInBPtejcD88pac8MInBPtejcD88pac8MInBPtejcD88pac85VG4PtejcD88pac85VG4PtejcD88pac85VG4PtejcD88pac85VG4PtejcD88pac851G4vtejcD88pac851G4vtejcD88pac851G4vtejcD88pac851G4vtejcD88pac85VG4PtejcD/9/GY95VG4PtejcD/9/GY95VG4PtejcD/9/GY95VG4PtejcD/9/GY95lG4PlK4/j/9/GY95lG4PlK4/j/9/GY95lG4PlK4/j/9/GY95lG4PlK4/j/9/GY951G4vtejcD9ucys851G4vtejcD9ucys851G4vtejcD9ucys851G4vtejcD9ucys85lG4vlK4/j88pac85lG4vlK4/j88pac85lG4vlK4/j88pac85lG4vlK4/j88pac8MonBvtejcD88pac8MonBvtejcD88pac8MonBvtejcD88pac8MonBvtejcD9ucys8MonBvtejcD9ucys8MonBvtejcD9ucys8MYnBvlK4/j88pac8MYnBvlK4/j88pac8MYnBvlK4/j88pac8MYnBvlK4/j9ucys8MYnBvlK4/j9ucys8MYnBvlK4/j9ucys851G4vtejcD9Cpae851G4vtejcD9Cpae851G4vtejcD9Cpae851G4vtejcD9Cpae8MonBvtejcD9Cpae8MonBvtejcD9Cpae8MonBvtejcD9Cpae8MonBvtejcD/GkPm8MonBvtejcD/GkPm8MonBvtejcD/GkPm8MYnBvlK4/j9Cpae8MYnBvlK4/j9Cpae8MYnBvlK4/j9Cpae8MYnBvlK4/j/GkPm8MYnBvlK4/j/GkPm8MYnBvlK4/j/GkPm85lG4vlK4/j/GkPm85lG4vlK4/j/GkPm85lG4vlK4/j/GkPm85lG4vlK4/j/GkPm85lG4vlK4/j9h+Ye95lG4vlK4/j9h+Ye95lG4vlK4/j9h+Ye95lG4vlK4/j9h+Ye93Tm4vtQWAEBOddu73Tm4vtQWAEBOddu73Tm4vtQWAEBOddu73Tm4vtQWAEBOddu7Fe+jvhPx+j9Oddu7Fe+jvhPx+j9Oddu7Fe+jvhPx+j9Oddu7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AAAAPwAAAACOwvW9AAAAPwAAAACOwvW9AAAAPwAAAACOwvW9zczMPpDC9T2OwvW9zczMPpDC9T2OwvW9zczMPpDC9T2OwvW9y8zMvpDC9T2OwvW9y8zMvpDC9T2OwvW9y8zMvpDC9T2OwvW9y8zMvrgeBT7OzMy9y8zMvrgeBT7OzMy9y8zMvrgeBT7OzMy9zczMPrgeBT7OzMy9zczMPrgeBT7OzMy9zczMPrgeBT7OzMy9y8zMvoXrAUDOzMy9y8zMvoXrAUDOzMy9y8zMvoXrAUDOzMy9y8zMvoXrAUDOzMy9zczMPoXrAUDOzMy9zczMPoXrAUDOzMy9zczMPoXrAUDOzMy9zczMPoXrAUDOzMy9y8zMvgAAAACOwvW9y8zMvgAAAACOwvW9zczMPgAAAACOwvW9zczMPgAAAACOwvW9zszMPs7MDEDOzMy9zszMPs7MDEDOzMy9zszMPs7MDEDOzMy9yszMvs7MDEDOzMy9yszMvs7MDEDOzMy9yszMvs7MDEDOzMy9yszMvs7MDEDOzMy9/v//vmZmZj/OzMy9/v//vmZmZj/OzMy9AAAAP2ZmZj/OzMy9AAAAP2ZmZj/OzMy9y8zMvmZmZj/OzMy9y8zMvmZmZj/OzMy9y8zMvmZmZj/OzMy9zczMPmZmZj/OzMy9zczMPmZmZj/OzMy9zczMPmZmZj/OzMy9/v//vgAAAAAAAICt/v//vgAAAAAAAICt/v//vs7MDEAAAICt/v//vs7MDEAAAICt/v//voXrAUAAAICt/v//vpDC9T0AAICt/v//vpDC9T0AAICt/v//vrgeBT4AAACAAAAAP87MDEAAAICtAAAAP87MDEAAAICtAAAAPwAAAAAAAICtAAAAPwAAAAAAAICtAAAAP7geBT4AAICtAAAAP5DC9T0AAICtAAAAP5DC9T0AAICtAAAAP4XrAUAAAICtAAAAP4XrAUAAAICtyszMvs7MDEAAAICtyszMvs7MDEAAAICtzszMPs7MDEAAAICty8zMvgAAAAAAAICtzczMPgAAAAAAAICtAAAAP2ZmZj8AAICt/v//vmZmZj8AAICtzMzMPoXrAUAAAACAzMzMPoXrAUAAAACAzMzMPmZmZj8AAACAzMzMPmZmZj8AAACAzMzMvmZmZj8AAACAzMzMvmZmZj8AAACAzMzMvoXrAUAAAACAzMzMvoXrAUAAAACAAACAvwAAAAAAAACAAAAAAP//f78AAACAAAAAAAAAAAAAAIA/AACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AACAv6Mu2rUAAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAADX5ZD8S+eQ+AACAv6Mu2rUAAACAAACAvwAAAADRys+0AAAAAAAAAAAAAIA/AAAAADX5ZD8S+eQ+AAAAAAAAAAAAAIA/AAAAAP//fz8AAACAAACAPwAAAAAsS+s0AAAAAAAAAAAAAIA/AACAPwAAAAAsS+s0AACAPwAAAADMlw01AAAAAAAAAAAAAIA/AAAAADP5ZD8X+eQ+AACAPwAAAADRys80AACAP6Mu2jUAAACAAAAAAAAAAAAAAIA/AAAAADP5ZD8X+eQ+AACAPwAAAAAAAACAAACAP6Mu2jUAAACAAAAAAP//f78AAACAAAAAAAAAAAAAAIA/AACAPwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAAAAAAAAAAAAAIA/AAAAAP//fz8AAACAAAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AACAPwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAADP5ZD8X+eQ+AAAAAAAAAAAAAIA/AAAAADP5ZD8X+eQ+AAAAADX5ZD8S+eQ+AAAAAAAAAAAAAIA/AAAAADP5ZD8X+eQ+AAAAADX5ZD8S+eQ+AAAAAAAAAAAAAIA/AAAAADP5ZD8X+eQ+AAAAAP//f78AAACAAAAAAAAAAAAAAIA/AAAAAP//f78AAACAAAAAAAAAAAAAAIA/AACAvwAAAADRys+0AACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AACAPwAAAADRys80AACAPwAAAADMlw01AAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAs+nsQAAAAAAAIA/AAAAAAAAAAD//38/As+nsQAAAAAAAIA/AAAAAAAAgL8AAACAAAAAAAAAAAD//38/AACAPz3P87IAAACAAs+nsQAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAD//3+/AAAAAPGPtDMAAIC/A8+nsde/cLIAAIA/AAAAAAAAAAD//38/A8+nsde/cLIAAIA/AAAAAAAAAAD//38/AAAAAAAAgD8AAACAAACAPz3P87IAAACAA8+nsde/cLIAAIA/AAAAAAAAAAAAAIA/AAAAANe/8LMAAIC/AAAAAAAAAAD//3+/AAAAANe/8LMAAIC/AAAAAAAAAAD//3+/AAAAAAAAgD8AAACAAACAPz3P87IAAACAAAAAANe/8LMAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAPGPtDMAAIC/AACAvz3P8zIAAACAAAAAANe/8LMAAIC/AAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAvz3P8zIAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AAAAAPGPtDMAAIC/AACAvz3P8zIAAACAAAAAAAAAAAAAAIA/AAAAAP//fz8AAACAAAAAAAAAgD8AAACAAAAAAAAAAAAAAIA/AAAAAP//fz8AAACAAAAAAAAAgD8AAACAAACAPz3P87IAAACAAACAvz7P8zIAAACAAAAAAAAAAAAAAIC/AAAAAP//fz8AAACAAAAAAAAAgD8AAACAAACAvz3P8zIAAACAAAAAAAAAgL8AAACAAAAAAP//f78AAACAAAAAAAAAAAAAAIA/AACAvz3P8zIAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAvz3P8zIAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAvz3P8zIAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AACAvz3P8zIAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAvz7P8zIAAACAAAAAAAAAgL8AAACAAAAAAP//f78AAACAAAAAAAAAAAAAAIC/AAAAAAAAgL8AAACAAAAAAP//f78AAACAAAAAAAAAAAAAAIC/AACAPz7P87IAAACAAACAvz7P8zIAAACAAAAAAAAAgL8AAACAAAAAAP//f78AAACAAAAAAAAAAAAAAIA/AACAvz7P8zIAAACAAAAAAAAAAAAAAIA/AAAAAP//fz8AAACAAAAAAAAAgD8AAACAAACAvz3P8zIAAACAAAAAAAAAgL8AAACAAAAAAP//f78AAACAAAAAAAAAAAAAAIC/AAAAAAAAgL8AAACAAAAAAP//f78AAACAAAAAAAAAAAAAAIA/AACAPz7P87IAAACAAACAvz3P8zIAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AACAvz3P8zIAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAvz3P8zIAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAvz3P8zIAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAvz3P8zIAAACAAAAAAAAAAAAAAIC/AAAAAP//fz8AAACAAAAAAAAAgD8AAACAAAAAAAAAAAAAAIC/AAAAAP//fz8AAACAAAAAAAAAgD8AAACAAACAPz3P87IAAACAAACAvz3P8zIAAACAA8+nsde/cLIAAIA/AAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAvz3P8zIAAACAAs+nsQAAAAAAAIA/AAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAP//fz8AAACAAAAAAAAAgD8AAACAAACAPz7P87IAAACAAAAAAAAAgL8AAACAAAAAAP//f78AAACAAAAAAAAAAAAAAIC/AACAPz3P87IAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAPz3P87IAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAPz3P87IAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAPz3P87IAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AACAPz3P87IAAACAAAAAAAAAAAAAAIC/AAAAAP//fz8AAACAAAAAAAAAgD8AAACAAACAPz7P87IAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAPz3P87IAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAPz3P87IAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAPz3P87IAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AACAPz3P87IAAACAAAAAAAAAgL8AAACAAAAAAP//f78AAACAAAAAAAAAAAAAAIA/AACAPz3P87IAAACAAAAAAAAAgL8AAACAAAAAAAAAAAD//3+/AAAAAPGPtDMAAIC/AACAPz3P87IAAACAAACAvwAAAAAAAACAAAAAALSsV7L//38/AAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAAAAAP//f78AAACAAAAAALSsV7L//38/AAAAAAAAAAAAAIA/AACAP2ychrMAAACAAACAvwAAAAAAAACAAAAAAHjIj7L//3+/AAAAAF11w7EAAIC/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAF3Ij7EAAIA/AAAAAAAAAAAAAIA/AAAAALSsV7L//38/AAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAP02xZbMAAACAAACAv2ychjMAAACAAAAAAP//f78AAACAAAAAALSsV7L//38/AAAAAAAAAAAAAIA/AAAAAHjIj7L//3+/AAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAP02xZbMAAACAAAAAAAAAgL8AAACAAAAAAF3Ij7EAAIA/AAAAAAAAAAAAAIA/AACAP02xZbMAAACAAACAv2ychjMAAACAAAAAAF3Ij7EAAIA/AAAAAAAAAAAAAIA/AAAAAP//fz8AAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AAAAAHS6szMAAIC/AACAP02xZbMAAACAAACAv2ychjMAAACAAAAAAAAAAAAAAIC/AAAAAHS6szMAAIC/AAAAAP//fz8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAF11w7EAAIC/AAAAAHS6szMAAIC/AAAAAF11w7EAAIC/AAAAAHS6szMAAIC/AAAAAP//fz8AAACAAACAP2ychrMAAACAAAAAAF3Ij7EAAIA/AAAAAAAAAAAAAIA/AAAAAP//fz8AAACAAACAP2ychrMAAACAAAAAAP//f78AAACAAAAAAHjIj7L//3+/AAAAAF11w7EAAIC/AACAP2ychrMAAACAAACAv2ychjMAAACAAAAAAP//f78AAACAAAAAAHjIj7L//3+/AAAAAAAAAAAAAIC/AACAvwAAAAAAAACAAAAAAAAAAAD//38/AAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAAAAAAAAgL8AAACAAAAAAAAAAAD//38/AAAAAAAAAAAAAIA/AACAP22chrMAAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAJa6szH//3+/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AAAAAF3IjzMAAIA/AAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AAAAAJa6szH//3+/AACAP22chrMAAACAAAAAAAAAAAAAAIC/AAAAAIysVzEAAIC/AAAAAAAAgD8AAACAAACAP22chrMAAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AAAAAIysVzEAAIC/AAAAAAAAAAAAAIA/AAAAAF3IjzMAAIA/AAAAAAAAgD8AAACAAACAP22chrMAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AAAAAF3IjzMAAIA/AACAP0qxZbMAAACAAAAAAAAAAAD//38/AAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAP0qxZbMAAACAAACAv22chjMAAACAAAAAAAAAAAAAAIA/AAAAAF3IjzMAAIA/AAAAAAAAgD8AAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AAAAAIysVzEAAIC/AACAP0qxZbMAAACAAAAAAAAAAAAAAIC/AAAAAJa6szH//3+/AAAAAAAAgD8AAACAAACAP0qxZbMAAACAAACAv22chjMAAACAAAAAAAAAAAAAAIC/AAAAAIysVzEAAIC/AAAAAAAAgD8AAACAAACAv22chjMAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AAAAAJa6szH//3+/AACAv22chjMAAACAAAAAAAAAgL8AAACAAAAAAAAAAAD//38/AAAAAAAAAAAAAIA/AACAvwTNTjMAAACAAAAAAJ490rAAAIA/AACAvwTNTjMAAACAAAAAAF1bVK0AAIC/AAAAAF1bVK0AAIC/AACAPwTNTrMAAACAAACAvwTNTjMAAACAAAAAAF1bVK0AAIC/AAAAAF1bVK0AAIC/AACAPwTNTrMAAACAAACAvwTNTjMAAACAAAAAAJ490rAAAIA/AAAAAJ490rAAAIA/AACAPwTNTrMAAACAAAAAAJ490rAAAIA/AACAPwTNTrMAAACAAACAvwAAAAAAAACAAAAAAP//f78AAACAAAAAAAAAAAAAAIA/AACAvwAAAAAAAACAAAAAAP//f78AAACAAAAAAAAAAAAAAIC/AACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAP//fz8AAACAAAAAAP//f78AAACAAAAAAAAAAAAAAIA/AACAPwAAAAAAAACAAAAAAP//f78AAACAAAAAAAAAAAAAAIC/AACAPwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAP//fz8AAACAAACAPwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAP//fz8AAACAAACAPwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAP//fz8AAACAAACAvwAAAAAAAACAAAAAAP//f78AAACAAACAvwAAAAAAAACAAAAAAAAAgD8AAACAAACAvwAAAAAAAACAAACAv6Mu2rUAAACAAACAvwAAAAAAAACAAACAv6Mu2rUAAACAAACAvwAAAADRys+0AAAAAP//fz8AAACAAACAPwAAAAAsS+s0AAAAAP//f78AAACAAACAPwAAAAAAAACAAACAPwAAAADRys80AACAP6Mu2jUAAACAAACAPwAAAAAAAACAAACAP6Mu2jUAAACAAACAPwAAAAAsS+s0AACAPwAAAADMlw01AAAAAAAAgD8AAACAAAAAAP//fz8AAACAAAAAAAAAgD8AAACAAAAAAP//f78AAACAAAAAAP//f78AAACAAACAPwAAAADRys80AACAPwAAAADMlw01AACAvwAAAADRys+0AACAvwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAACAvwAAAAAAAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAACAPwAAAAAAAACA//9/vwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAP//fz8AAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AACAvwAAAAAAAACA//9/vwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAC35ZD80+eS+AACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAC35ZD80+eS+AAAAAAAAAAAAAIC/AAAAAC75ZD8u+eS+//9/PwAAAAAAAACAAACAPwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAC75ZD8u+eS+AACAPwAAAAAAAACAAAAAAAAAAAAAAIC/AACAPyQ8PLQAAACAAACAPwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAPyQ8PLQAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC///9/PwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAC75ZD8y+eS+AAAAAC75ZD8u+eS+AAAAAAAAAAAAAIC/AAAAAC35ZD80+eS+AAAAAC75ZD8y+eS+AAAAAAAAAAAAAIC/AAAAAC35ZD80+eS+AAAAAC75ZD8y+eS+AAAAAAAAAAAAAIC/AAAAAC75ZD8y+eS+AAAAAC75ZD8u+eS+AAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AAAAACc8vDIAAIC/AACAPwAAAADJl400AACAvwAAAADJl420AAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AAAAACc8vDIAAIC/AAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAACc8vDIAAIC/AAAAAAAAgD8AAACAAAAAAAAAAAAAAIC/AAAAACc8vDIAAIC/AAAAAP//fz8AAACAAAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AACAPwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAPwAAAADJl400AACAvwAAAADJl420AAAAAAAAAAAAAIC/AAAAAAAAgD8AAACA//9/vwAAAAAAAACAAAAAAAAAgL8AAACAAACAvwAAAAAAAACAAAAAAP//fz8AAACAAACAvwAAAAAAAACAAACAvwAAAAAAAACA//9/vwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAgD8AAACAAACAPyQ8PLQAAACAAAAAAAAAgL8AAACA//9/PwAAAAAAAACAAACAPwAAAAAAAACA//9/PwAAAAAAAACAAACAPwAAAAAAAACAAACAPyQ8PLQAAACAAACAPwAAAAAAAACAAAAAAP//fz8AAACA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OQAaADkAHwAQACMAKAAQACgAEwAXAC0ANQAXADUAGwCnAaABFQCnARUAPwAxAAoAAgAxAAIANwBAADwADgBAAA4ALgAwAA8ACwAwAAsAMwAhAAQABwAhAAcAKgAvADIANQAvADUALQChASIAJQChASUAowExADcAOQAxADkANABAAC4ALABAACwARACtAa4BQQCtAUEARQAhACoAKAAhACgAIwChAZEBBQChAQUAIgCqAawBQwCqAUMAJgAqAAcAPAAqADwAQACbAaYBPgCbAT4AGAATACgARAATAEQAPQCvAbEBKwCvASsAQgCwAasBJwCwAScAKQBKAEcAUQBKAFEAUwBMAEYASABMAEgAtwBWALMAUgBWAFIAUABeAFgAWgBeAFoAYwBOAOMAWwBOAFsAWQBoAGAAXwBoAF8AZABwAG0AZQBwAGUAXABqAHYAZgBqAGYAYgBvAM8AdABvAHQAbAB1AH8AfAB1AHwAbQBrAHsAggBrAIIAeQB6AH0AgwB6AIMAgAB3AIEAhAB3AIQAhwCJAIUAfgCJAH4AcwB4AIgAiwB4AIsA3wCSAI4AhgCSAIYAcgCaAIoAhwCaAIcAjwCTAKIAoACTAKAAkQCPAJ8ApQCPAKUAlwCQAJgAvwCQAL8AmwChAKcApAChAKQAngCZAKYAqACZAKgAqwCtAKkAowCtAKMAlQC7AK8ArAC7AKwAlABUALUArQBUAK0AsACyALYAlgCyAJYAqgBNALkAtABNALQAVwBJAL4AlwBJAJcAuAC8AMYAwwC8AMMAsACuAMIAyQCuAMkAwADBAEsAVQDBAFUAsQDEAMcAzQDEAM0AygC+AMgAywC+AMsAmgCcAMwAxQCcAMUAugC8AJUAdQC8AHUA0ACNAJ0AvQCNAL0A0QBwANYA0wBwANMA0ADOANIA2QDOANkAjADUANcA3QDUAN0A2gCKANgA2wCKANsA3gDgANwA1QDgANUAbgDeAOIAZwDeAGcAdwDlAOEAcQDlAHEAXQBhAGkA5ABhAOQATwDnAOsA/ADnAPwA9gDsAOgA9QDsAPUAGwH4AAAB8QD4APEA6QDyAOYA7gDyAO4AEgH3AP0ACAH3AAgBBAEBAfkABQEBAQUBDQEaAfQAAwEaAQMBBwEKAQIB8wAKAfMAEwElAf8ACwElAQsBDwEVARcBEAEVARABDAHwACABFgHwABYBFAEYARwBCQEYAQkBEQEhAe0AHQEhAR0BGQEfAe8A/gAfAf4AJAEjAfsA6gAjAeoAHgEGAfoAIgEGASIBDgEsASgBNAEsATQBQgEyASYBLgEyAS4BPgFSAUYBMwFSATMBPwFEAVEBXQFEAV0BPAEvATcBOgEvAToBQAE5AS0BRQE5AUUBPQFKAScBKwFKASsBZAE1AUgBUAE1AVABQwFZAU0BSQFZAUkBVQFLAWUBTwFLAU8BRwFgAVYBUwFgAVMBWwFYATEBKQFYASkBTAFOAWIBXgFOAV4BWgFBATsBXAFBAVwBVAFXAWEBOAFXATgBMAFjASoBNgFjATYBXwFtAWkBagFtAWoBbgFwAWYBaAFwAWgBbAFyAXQBZwFyAWcBcQFvAWsBdQFvAXUBcwF6AYIBfwF6AX8BdwF2AXwBiwF2AYsBeQGAAYUBfQGAAX0BeAGEAYoBhwGEAYcBgQGJAY0BfgGJAX4BhgF7AYwBiAF7AYgBgwENADoAqAENAKgBlgE2AKQBpQE2AKUBOAA2AAEAjwE2AI8BpAESABQAnwESAJ8BmAEcACAAmgEcAJoBnQEZAB0AngEZAJ4BnAEIAAwAlQEIAJUBkwEAAAkAlAEAAJQBjgE7AAYAkgE7AJIBqQEeADgApQEeAKUBmQEGAAMAkAEGAJABkgH+AfwBtQH+AbUBuAH0AfEBuQH0AbkB3gHIAeMB6QHIAekBywEEAg8C5wEEAucBzgHyAfgB4wHyAeMByAERAv4BuAERArgB8AH6AQACuwH6AbsBsgH/AQECvgH/Ab4BugHPAegB0QHPAdEBwQEGAggCxAEGAsQBxwEHAgUC0AEHAtABwwEDAgkCyQEDAskBzQHmAbQBvAHmAbwB1AHVAb0BwAHVAcAB2AEOAvsBswEOArMB5QHeAbkBtgHeAbYB7AHCAdMB3AHCAdwBxgHWAdkB2wHWAdsB0gEOAuUB5wEOAucBDwLfAe0B6gHfAeoB5AHmAdQB0QHmAdEB6AHXAfQB+AHXAfgB2gEBAhEC8AEBAvABvgHFAdoB+AHFAfgB8gHXAb8B8QHXAfEB9AHHAfMBEALHARACBgLuAbcB/QHuAf0BCwLvAQwCDQLvAQ0C6wHzAcoBCgLzAQoCEALMAesBDQLMAQ0CAgLdAeIBEwLdARMCGAL2AeABGQL2ARkCFwLhAfcB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Urj+P/z8Zj3zKFy/Urj+P/z8Zj0vHGc/6iUCQP38Zj0vHGc/6iUCQP38Zj0vHGe/6iUCQGH5h70vHGe/6iUCQGH5h70wHGe/0nxlP/z8Zj3zKFy/16NwP/z8Zj3zKFy/16NwP/z8Zj3zKFy/16NwP/z8Zj0uHGc/0nxlP/38Zj0uHGc/0nxlP/38Zj0wHGe/0nxlP2H5h73zKFy/16NwP2H5h73zKFy/16NwP2H5h73zKFy/16NwP2H5h70uHGc/0nxlP2H5h70vHGc/6iUCQGH5h73yKFw/16NwP2H5h73yKFw/16NwP2H5h73yKFw/16NwP2H5h73zKFw/Urj+P2H5h73zKFw/Urj+P2H5h73zKFw/Urj+P2H5h73yKFw/16NwP8aQ+bzyKFw/16NwP8aQ+bzyKFw/16NwP8aQ+bzyKFw/16NwP8aQ+bzzKFy/16NwP8aQ+bzzKFy/16NwP8aQ+bzzKFy/16NwP8aQ+bzyKFw/16NwP0Klp7zyKFw/16NwP0Klp7zyKFw/16NwP0Klp7zzKFw/Urj+P8aQ+bzzKFw/Urj+P8aQ+bzzKFw/Urj+P8aQ+bzzKFw/Urj+P8aQ+byYxGA/16NwP8aQ+byYxGA/16NwP8aQ+byYxGA/16NwP8aQ+byYxGA/16NwP0Klp7yYxGA/16NwP0Klp7yYxGA/16NwP0Klp7yYxGA/Urj+P8aQ+byYxGA/Urj+P8aQ+byYxGA/Urj+P8aQ+byYxGA/Urj+P0Klp7yYxGA/Urj+P0Klp7yYxGA/Urj+P0Klp7zzKFw/Urj+P0Klp7zzKFw/Urj+P0Klp7zzKFw/Urj+P0Klp7zzKFw/Urj+P0Klp7zzKFy/Urj+P0Klp7zzKFy/Urj+P0Klp7zzKFy/Urj+P0Klp7zzKFy/Urj+P0Klp7zzKFw/Urj+P25zKzzzKFw/Urj+P25zKzzzKFw/Urj+P25zKzzyKFw/16NwP25zKzzyKFw/16NwP25zKzzyKFw/16NwP25zKzzzKFw/Urj+PzylpzzzKFw/Urj+PzylpzzzKFw/Urj+PzylpzzzKFy/Urj+P25zKzzzKFy/Urj+P25zKzzzKFy/Urj+P25zKzyYxGA/Urj+P25zKzyYxGA/Urj+P25zKzyYxGA/Urj+P25zKzyYxGA/16NwP25zKzyYxGA/16NwP25zKzyYxGA/16NwP25zKzyYxGA/Urj+PzylpzyYxGA/Urj+PzylpzyYxGA/Urj+PzylpzyYxGA/16NwPzylpzyYxGA/16NwPzylpzyYxGA/16NwPzylpzzyKFw/16NwPzylpzzyKFw/16NwPzylpzzyKFw/16NwPzylpzzzKFy/16NwPzylpzzzKFy/16NwPzylpzzzKFy/16NwPzylpzzzKFy/16NwPzylpzzyKFw/16NwP/38Zj3yKFw/16NwP/38Zj3yKFw/16NwP/38Zj3yKFw/16NwP/38Zj3zKFw/Urj+P/38Zj3zKFw/Urj+P/38Zj3zKFw/Urj+P/38Zj3zKFw/Urj+P/38Zj3zKFy/16NwP25zKzzzKFy/16NwP25zKzzzKFy/16NwP25zKzzzKFy/Urj+PzylpzzzKFy/Urj+PzylpzzzKFy/Urj+PzylpzyZxGC/16NwPzylpzyZxGC/16NwPzylpzyZxGC/16NwPzylpzyZxGC/16NwP25zKzyZxGC/16NwP25zKzyZxGC/16NwP25zKzyYxGC/Urj+PzylpzyYxGC/Urj+PzylpzyYxGC/Urj+PzylpzyYxGC/Urj+P25zKzyYxGC/Urj+P25zKzyYxGC/Urj+P25zKzzzKFy/16NwP0Klp7zzKFy/16NwP0Klp7zzKFy/16NwP0Klp7yZxGC/16NwP0Klp7yZxGC/16NwP0Klp7yZxGC/16NwP0Klp7yZxGC/16NwP8aQ+byZxGC/16NwP8aQ+byZxGC/16NwP8aQ+byYxGC/Urj+P0Klp7yYxGC/Urj+P0Klp7yYxGC/Urj+P0Klp7yYxGC/Urj+P8aQ+byYxGC/Urj+P8aQ+byYxGC/Urj+P8aQ+bzzKFy/Urj+P8aQ+bzzKFy/Urj+P8aQ+bzzKFy/Urj+P8aQ+bzzKFy/Urj+P8aQ+bzzKFy/Urj+P2H5h73zKFy/Urj+P2H5h73zKFy/Urj+P2H5h73zKFy/Urj+P2H5h70AAAAA6iUCQPz8Zj0AAAAA6iUCQPz8Zj0AAAAAUrj+P0Klp7wAAAAAUrj+P25zKzwAAAAAUrj+P/z8Zj0AAAAAUrj+P/z8Zj0AAAAAUrj+P/z8Zj0AAAAAUrj+PzylpzwAAAAAUrj+P8aQ+bwAAAAAUrj+P8aQ+bwAAAAAUrj+P2H5h70AAAAAUrj+P2H5h70AAAAAUrj+P2H5h70AAAAA6iUCQGH5h70AAAAA6iUCQGH5h70AAICz0nxlP/z8Zj0AAICz0nxlP/z8Zj0AAICz0nxlP2H5h70AAICz16NwP2H5h70AAICz16NwP2H5h70AAICz16NwP2H5h70AAICz16NwP8aQ+bwAAICz16NwP8aQ+bwAAICz16NwPzylpzwAAICz16NwPzylpzwAAICz16NwP/z8Zj0AAICz16NwP/z8Zj0AAICz16NwP/z8Zj0AAICz16NwP/z8Zj0AAICz16NwP25zKzwAAICz16NwP0Klp7x+JV2/sc/6P5SFFb1+JV2/sc/6P5SFFb1+JV2/sc/6P5SFFb1+JV2/sc/6P5SFFb2UB1W/uMH3P0CSVruUB1W/uMH3P0CSVruUB1W/uMH3P0CSVruUB1W/uMH3P0CSVrt+JV2/aQH3P/T6bL1+JV2/aQH3P/T6bL1+JV2/aQH3P/T6bL1+JV2/aQH3P/T6bL1+JV2/LzTRP8gP1T5+JV2/LzTRP8gP1T5+JV2/LzTRP8gP1T5+JV2/LzTRP8gP1T4GiJO+sc/6P5SFFb0GiJO+sc/6P5SFFb0GiJO+sc/6P5SFFb0GiJO+sc/6P5SFFb3aw6O+uMH3P0CSVrvaw6O+uMH3P0CSVrvaw6O+uMH3P0CSVrvaw6O+uMH3P0CSVrsGiJO+aQH3P/T6bL0GiJO+aQH3P/T6bL0GiJO+aQH3P/T6bL0GiJO+aQH3P/T6bL0HiJO+LzTRP8gP1T4HiJO+LzTRP8gP1T4HiJO+LzTRP8gP1T4HiJO+LzTRP8gP1T7aw6O+KULUPzgMxD7aw6O+KULUPzgMxD7aw6O+KULUPzgMxD7aw6O+KULUPzgMxD4HiJO+52XNPx0hyj4HiJO+52XNPx0hyj4HiJO+52XNPx0hyj4HiJO+52XNPx0hyj7aw6O+4XPQP4wduT7aw6O+4XPQP4wduT7aw6O+4XPQP4wduT7aw6O+4XPQP4wduT5+JV2/52XNPx0hyj5+JV2/52XNPx0hyj5+JV2/52XNPx0hyj5+JV2/52XNPx0hyj6UB1W/4XPQP4wduT6UB1W/4XPQP4wduT6UB1W/4XPQP4wduT6UB1W/4XPQP4wduT6UB1W/KULUPzgMxD6UB1W/KULUPzgMxD6UB1W/KULUPzgMxD6UB1W/KULUPzgMxD6UB1W/cPPzPwC9ybyUB1W/cPPzPwC9ybyUB1W/cPPzPwC9ybyUB1W/cPPzPwC9ybzaw6O+cPPzPwC9ybzaw6O+cPPzPwC9ybzaw6O+cPPzPwC9ybzaw6O+cPPzPwC9ybx+JV2/RuT7P4eeuTx+JV2/RuT7P4eeuTx+JV2/RuT7P4eeuTx+JV2/RuT7P4eeuTyUB1W/Tdb4P5zrZD2UB1W/Tdb4P5zrZD2UB1W/Tdb4P5zrZD2UB1W/Tdb4P5zrZD1+JV2//hX4P3A8qzp+JV2//hX4P3A8qzp+JV2//hX4P3A8qzp+JV2//hX4P3A8qzp+JV2/xEjSP2Va8z5+JV2/xEjSP2Va8z5+JV2/xEjSP2Va8z5+JV2/xEjSP2Va8z6UB1W/BQj1Pzx2DT2UB1W/BQj1Pzx2DT2UB1W/BQj1Pzx2DT2UB1W/BQj1Pzx2DT2UB1W/dYjRPydo1z6UB1W/dYjRPydo1z6UB1W/dYjRPydo1z6UB1W/dYjRPydo1z5+JV2/fHrOP7lr6D5+JV2/fHrOP7lr6D5+JV2/fHrOP7lr6D5+JV2/fHrOP7lr6D6UB1W/vVbVP9NW4j6UB1W/vVbVP9NW4j6UB1W/vVbVP9NW4j6UB1W/vVbVP9NW4j4HiJO+xEjSP2Va8z4HiJO+xEjSP2Va8z4HiJO+xEjSP2Va8z4HiJO+xEjSP2Va8z4GiJO+RuT7P4eeuTwGiJO+RuT7P4eeuTwGiJO+RuT7P4eeuTwGiJO+RuT7P4eeuTzaw6O+vVbVP9NW4j7aw6O+vVbVP9NW4j7aw6O+vVbVP9NW4j7aw6O+vVbVP9NW4j4HiJO+fHrOP7lr6D4HiJO+fHrOP7lr6D4HiJO+fHrOP7lr6D4HiJO+fHrOP7lr6D4GiJO+/hX4P3A8qzoGiJO+/hX4P3A8qzoGiJO+/hX4P3A8qzoGiJO+/hX4P3A8qzraw6O+dYjRPydo1z7aw6O+dYjRPydo1z7aw6O+dYjRPydo1z7aw6O+dYjRPydo1z7aw6O+BQj1Pzx2DT3aw6O+BQj1Pzx2DT3aw6O+BQj1Pzx2DT3aw6O+BQj1Pzx2DT3aw6O+Tdb4P5zrZD3aw6O+Tdb4P5zrZD3aw6O+Tdb4P5zrZD3aw6O+Tdb4P5zrZD0yyRa/k4H5P7wRLz0yyRa/k4H5P7wRLz0yyRa/h2n2P3fwzzwyyRa/h2n2P3fwzzxPIBC/h2n2P3fwzzxPIBC/h2n2P3fwzzwyyRa/MN3QP2Mj3j4yyRa/MN3QP2Mj3j5PIBC/MN3QP2Mj3j5PIBC/MN3QP2Mj3j4yyRa/PPXTP5MG5z4yyRa/PPXTP5MG5z5PIBC/PPXTP5MG5z5PIBC/PPXTP5MG5z5PIBC/k4H5P7wRLz1PIBC/k4H5P7wRLz2DYZO+sc/6P5SFFb2DYZO+sc/6P5SFFb2DYZO+sc/6P5SFFb2DYZO+sc/6P5SFFb2wJYO+uMH3P0CSVruwJYO+uMH3P0CSVruwJYO+uMH3P0CSVruwJYO+uMH3P0CSVruDYZO+aQH3P/T6bL2DYZO+aQH3P/T6bL2DYZO+aQH3P/T6bL2DYZO+aQH3P/T6bL2DYZO+LzTRP8gP1T6DYZO+LzTRP8gP1T6DYZO+LzTRP8gP1T6DYZO+LzTRP8gP1T5xYZM+sc/6P5SFFb1xYZM+sc/6P5SFFb1xYZM+sc/6P5SFFb1xYZM+sc/6P5SFFb2eJYM+uMH3P0CSVrueJYM+uMH3P0CSVrueJYM+uMH3P0CSVrueJYM+uMH3P0CSVrtxYZM+aQH3P/T6bL1xYZM+aQH3P/T6bL1xYZM+aQH3P/T6bL1xYZM+aQH3P/T6bL1xYZM+LzTRP8gP1T5xYZM+LzTRP8gP1T5xYZM+LzTRP8gP1T5xYZM+LzTRP8gP1T6eJYM+KULUPzgMxD6eJYM+KULUPzgMxD6eJYM+KULUPzgMxD6eJYM+KULUPzgMxD5xYZM+52XNPx0hyj5xYZM+52XNPx0hyj5xYZM+52XNPx0hyj5xYZM+52XNPx0hyj6eJYM+4XPQP4wduT6eJYM+4XPQP4wduT6eJYM+4XPQP4wduT6eJYM+4XPQP4wduT6DYZO+52XNPx0hyj6DYZO+52XNPx0hyj6DYZO+52XNPx0hyj6DYZO+52XNPx0hyj6wJYO+4XPQP4wduT6wJYO+4XPQP4wduT6wJYO+4XPQP4wduT6wJYO+4XPQP4wduT6wJYO+KULUPzgMxD6wJYO+KULUPzgMxD6wJYO+KULUPzgMxD6wJYO+KULUPzgMxD6wJYO+cPPzPwC9ybywJYO+cPPzPwC9ybywJYO+cPPzPwC9ybywJYO+cPPzPwC9ybyeJYM+cPPzPwC9ybyeJYM+cPPzPwC9ybyeJYM+cPPzPwC9ybyeJYM+cPPzPwC9ybyDYZO+RuT7P4eeuTyDYZO+RuT7P4eeuTyDYZO+RuT7P4eeuTyDYZO+RuT7P4eeuTywJYO+Tdb4P5zrZD2wJYO+Tdb4P5zrZD2wJYO+Tdb4P5zrZD2wJYO+Tdb4P5zrZD2DYZO+/hX4P3A8qzqDYZO+/hX4P3A8qzqDYZO+/hX4P3A8qzqDYZO+/hX4P3A8qzqDYZO+xEjSP2Va8z6DYZO+xEjSP2Va8z6DYZO+xEjSP2Va8z6DYZO+xEjSP2Va8z6wJYO+BQj1Pzx2DT2wJYO+BQj1Pzx2DT2wJYO+BQj1Pzx2DT2wJYO+BQj1Pzx2DT2wJYO+dYjRPydo1z6wJYO+dYjRPydo1z6wJYO+dYjRPydo1z6wJYO+dYjRPydo1z6DYZO+fHrOP7lr6D6DYZO+fHrOP7lr6D6DYZO+fHrOP7lr6D6DYZO+fHrOP7lr6D6wJYO+vVbVP9NW4j6wJYO+vVbVP9NW4j6wJYO+vVbVP9NW4j6wJYO+vVbVP9NW4j5xYZM+xEjSP2Va8z5xYZM+xEjSP2Va8z5xYZM+xEjSP2Va8z5xYZM+xEjSP2Va8z5xYZM+RuT7P4eeuTxxYZM+RuT7P4eeuTxxYZM+RuT7P4eeuTxxYZM+RuT7P4eeuTyeJYM+vVbVP9NW4j6eJYM+vVbVP9NW4j6eJYM+vVbVP9NW4j6eJYM+vVbVP9NW4j5xYZM+fHrOP7lr6D5xYZM+fHrOP7lr6D5xYZM+fHrOP7lr6D5xYZM+fHrOP7lr6D5xYZM+/hX4P3A8qzpxYZM+/hX4P3A8qzpxYZM+/hX4P3A8qzpxYZM+/hX4P3A8qzqeJYM+dYjRPydo1z6eJYM+dYjRPydo1z6eJYM+dYjRPydo1z6eJYM+dYjRPydo1z6eJYM+BQj1Pzx2DT2eJYM+BQj1Pzx2DT2eJYM+BQj1Pzx2DT2eJYM+BQj1Pzx2DT2eJYM+Tdb4P5zrZD2eJYM+Tdb4P5zrZD2eJYM+Tdb4P5zrZD2eJYM+Tdb4P5zrZD1mHVW8k4H5P7wRLz1mHVW8k4H5P7wRLz1mHVW8h2n2P3fwzzxmHVW8h2n2P3fwzzxmG1U8h2n2P3fwzzxmG1U8h2n2P3fwzzxmHVW8MN3QP2Mj3j5mHVW8MN3QP2Mj3j5mG1U8MN3QP2Mj3j5mG1U8MN3QP2Mj3j5mHVW8PPXTP5MG5z5mHVW8PPXTP5MG5z5mG1U8PPXTP5MG5z5mG1U8PPXTP5MG5z5mG1U8k4H5P7wRLz1mG1U8k4H5P7wRLz3xh5M+sc/6P5SFFb3xh5M+sc/6P5SFFb3xh5M+sc/6P5SFFb3xh5M+sc/6P5SFFb3Fw6M+uMH3P0CSVrvFw6M+uMH3P0CSVrvFw6M+uMH3P0CSVrvFw6M+uMH3P0CSVrvxh5M+aQH3P/T6bL3xh5M+aQH3P/T6bL3xh5M+aQH3P/T6bL3xh5M+aQH3P/T6bL3xh5M+LzTRP8gP1T7xh5M+LzTRP8gP1T7xh5M+LzTRP8gP1T7xh5M+LzTRP8gP1T5zJV0/sc/6P5SFFb1zJV0/sc/6P5SFFb1zJV0/sc/6P5SFFb1zJV0/sc/6P5SFFb2JB1U/uMH3P0CSVruJB1U/uMH3P0CSVruJB1U/uMH3P0CSVruJB1U/uMH3P0CSVrtzJV0/aQH3P/T6bL1zJV0/aQH3P/T6bL1zJV0/aQH3P/T6bL1zJV0/aQH3P/T6bL1zJV0/LzTRP8gP1T5zJV0/LzTRP8gP1T5zJV0/LzTRP8gP1T5zJV0/LzTRP8gP1T6JB1U/KULUPzgMxD6JB1U/KULUPzgMxD6JB1U/KULUPzgMxD6JB1U/KULUPzgMxD5zJV0/52XNPx0hyj5zJV0/52XNPx0hyj5zJV0/52XNPx0hyj5zJV0/52XNPx0hyj6JB1U/4XPQP4wduT6JB1U/4XPQP4wduT6JB1U/4XPQP4wduT6JB1U/4XPQP4wduT7xh5M+52XNPx0hyj7xh5M+52XNPx0hyj7xh5M+52XNPx0hyj7xh5M+52XNPx0hyj7Bw6M+4XPQP4wduT7Bw6M+4XPQP4wduT7Bw6M+4XPQP4wduT7Bw6M+4XPQP4wduT7Bw6M+KULUPzgMxD7Bw6M+KULUPzgMxD7Bw6M+KULUPzgMxD7Bw6M+KULUPzgMxD7Fw6M+cPPzPwC9ybzFw6M+cPPzPwC9ybzFw6M+cPPzPwC9ybzFw6M+cPPzPwC9ybyJB1U/cPPzPwC9ybyJB1U/cPPzPwC9ybyJB1U/cPPzPwC9ybyJB1U/cPPzPwC9ybzxh5M+RuT7P4eeuTzxh5M+RuT7P4eeuTzxh5M+RuT7P4eeuTzxh5M+RuT7P4eeuTzFw6M+Tdb4P5zrZD3Fw6M+Tdb4P5zrZD3Fw6M+Tdb4P5zrZD3Fw6M+Tdb4P5zrZD3xh5M+/hX4P3A8qzrxh5M+/hX4P3A8qzrxh5M+/hX4P3A8qzrxh5M+/hX4P3A8qzrxh5M+xEjSP2Va8z7xh5M+xEjSP2Va8z7xh5M+xEjSP2Va8z7xh5M+xEjSP2Va8z7Fw6M+BQj1Pzx2DT3Fw6M+BQj1Pzx2DT3Fw6M+BQj1Pzx2DT3Fw6M+BQj1Pzx2DT3Bw6M+dYjRPydo1z7Bw6M+dYjRPydo1z7Bw6M+dYjRPydo1z7Bw6M+dYjRPydo1z7xh5M+fHrOP7lr6D7xh5M+fHrOP7lr6D7xh5M+fHrOP7lr6D7xh5M+fHrOP7lr6D7Bw6M+vVbVP9NW4j7Bw6M+vVbVP9NW4j7Bw6M+vVbVP9NW4j7Bw6M+vVbVP9NW4j5zJV0/xEjSP2Va8z5zJV0/xEjSP2Va8z5zJV0/xEjSP2Va8z5zJV0/xEjSP2Va8z5zJV0/RuT7P4eeuTxzJV0/RuT7P4eeuTxzJV0/RuT7P4eeuTxzJV0/RuT7P4eeuTyJB1U/vVbVP9NW4j6JB1U/vVbVP9NW4j6JB1U/vVbVP9NW4j6JB1U/vVbVP9NW4j5zJV0/fHrOP7lr6D5zJV0/fHrOP7lr6D5zJV0/fHrOP7lr6D5zJV0/fHrOP7lr6D5zJV0//hX4P3A8qzpzJV0//hX4P3A8qzpzJV0//hX4P3A8qzpzJV0//hX4P3A8qzqJB1U/dYjRPydo1z6JB1U/dYjRPydo1z6JB1U/dYjRPydo1z6JB1U/dYjRPydo1z6JB1U/BQj1Pzx2DT2JB1U/BQj1Pzx2DT2JB1U/BQj1Pzx2DT2JB1U/BQj1Pzx2DT2JB1U/Tdb4P5zrZD2JB1U/Tdb4P5zrZD2JB1U/Tdb4P5zrZD2JB1U/Tdb4P5zrZD1EIBA/k4H5P7wRLz1EIBA/k4H5P7wRLz1EIBA/h2n2P3fwzzxEIBA/h2n2P3fwzzwnyRY/h2n2P3fwzzwnyRY/h2n2P3fwzzxEIBA/MN3QP2Mj3j5EIBA/MN3QP2Mj3j4nyRY/MN3QP2Mj3j4nyRY/MN3QP2Mj3j5EIBA/PPXTP5MG5z5EIBA/PPXTP5MG5z4nyRY/PPXTP5MG5z4nyRY/PPXTP5MG5z4nyRY/k4H5P7wRLz0nyRY/k4H5P7wRLz0yyRa/PTj4P2BRaLwyyRa/PTj4P2BRaLwyyRa/MSD1P+AtAb0yyRa/MSD1P+AtAb1PIBC/MSD1P+AtAb1PIBC/MSD1P+AtAb0yyRa/25PPP5z+wD4yyRa/25PPP5z+wD5PIBC/25PPP5z+wD5PIBC/25PPP5z+wD4yyRa/5qvSP83hyT4yyRa/5qvSP83hyT5PIBC/5qvSP83hyT5PIBC/5qvSP83hyT5PIBC/PTj4P2BRaLxPIBC/PTj4P2BRaLxmHVW8PTj4P2BRaLxmHVW8PTj4P2BRaLxmHVW8MSD1P+AtAb1mHVW8MSD1P+AtAb1mG1U8MSD1P+AtAb1mG1U8MSD1P+AtAb1mHVW825PPP5z+wD5mHVW825PPP5z+wD5mG1U825PPP5z+wD5mG1U825PPP5z+wD5mHVW85qvSP83hyT5mHVW85qvSP83hyT5mG1U85qvSP83hyT5mG1U85qvSP83hyT5mG1U8PTj4P2BRaLxmG1U8PTj4P2BRaLxEIBA/PTj4P2BRaLxEIBA/PTj4P2BRaLxEIBA/MSD1P+AtAb1EIBA/MSD1P+AtAb0nyRY/MSD1P+AtAb0nyRY/MSD1P+AtAb1EIBA/25PPP5z+wD5EIBA/25PPP5z+wD4nyRY/25PPP5z+wD4nyRY/25PPP5z+wD5EIBA/5qvSP83hyT5EIBA/5qvSP83hyT4nyRY/5qvSP83hyT4nyRY/5qvSP83hyT4nyRY/PTj4P2BRaLwnyRY/PTj4P2BRaLz+/3+/AAAAAAAAAID+/3+/AAAAAAAAAID+/3+/zcwMQAAAAID+/3+/zcwMQAAAAID+/3+/hesBQAAAAID+/3+/hesBQAAAAID+/3+/kML1PQDcpbj+/3+/kML1PQDcpbj+/3+/uB4FPgAAAID+/3+/uB4FPgAAAIAAAIA/zcwMQAAAAIAAAIA/zcwMQAAAAIAAAIA/AAAAAAAAAIAAAIA/AAAAAAAAAIAAAIA/uB4FPgAAAIAAAIA/kML1PQAAAIAAAIA/hesBQAAAAIC1HmW/zcwMQAAAAIC5HmU/zcwMQAAAAIC1HmW/AAAAAAAAAIC4HmU/AAAAAAAAAIAAAIA/ZmZmPwDcpbj+/3+/ZmZmPwAAAID+/3+/ZmZmPwAAAIAAAAAAzcwMQAAAAIAAAAAAAAAAAAAAAIC4HmU/hesBQAAAAIC4HmU/hesBQAAAAIC4HmU/ZmZmPwAAAIC4HmU/ZmZmPwAAAIC1HmW/ZmZmPwAAAIC1HmW/ZmZmPwAAAIC1HmW/hesBQAAAAIC1HmW/hesBQAAAAIAAAIAzhesBQAAAAIAAAIAzhesBQAAAAIAAAIAzZmZmPwAAAIAAAIAzZmZmPwAAAIDTd1e/GkPYP+Q4kT7Td1e/GkPYP+Q4kT7Td1e/VlXbP6Q2iD7Td1e/VlXbP6Q2iD6LXFy/GkPYP+Q4kT6LXFy/GkPYP+Q4kT6LXFy/VlXbP6Q2iD6LXFy/VlXbP6Q2iD7Td1e/KgW/PwAvcTzTd1e/KgW/PwAvcTzTd1e/KgW/PwAvcTzTd1e/ZRfCPwBkPLvTd1e/ZRfCPwBkPLvTd1e/ZRfCPwBkPLuLXFy/KgW/PwAvcTyLXFy/KgW/PwAvcTyLXFy/KgW/PwAvcTyLXFy/ZRfCPwBkPLuLXFy/ZRfCPwBkPLuLXFy/ZRfCPwBkPLvTd1e/OMzZP8S3jD7Td1e/OMzZP8S3jD6LXFy/OMzZP8S3jD6LXFy/OMzZP8S3jD6LXFy/NYG/PwCpqLuLXFy/NYG/PwCpqLuLXFy/NYG/PwCpqLuLXFy/NYG/PwCpqLvTd1e/NYG/PwCpqLvTd1e/NYG/PwCpqLvTd1e/NYG/PwCpqLvTd1e/NYG/PwCpqLsv6lm/GkPYP+Q4kT4v6lm/GkPYP+Q4kT4v6lm/VlXbP6Q2iD4v6lm/VlXbP6Q2iD4v6lm/KgW/PwAvcTwv6lm/KgW/PwAvcTwv6lm/KgW/PwAvcTwv6lm/ZRfCPwBkPLsv6lm/ZRfCPwBkPLsv6lm/ZRfCPwBkPLsv6lm/ZRfCPwBkPLsv6lm/NYG/PwCpqLsv6lm/NYG/PwCpqLsv6lm/NYG/PwCpqLuIXFw/GkPYP+Q4kT6IXFw/GkPYP+Q4kT6IXFw/VlXbP6Q2iD6IXFw/VlXbP6Q2iD7Qd1c/GkPYP+Q4kT7Qd1c/GkPYP+Q4kT7Qd1c/VlXbP6Q2iD7Qd1c/VlXbP6Q2iD6IXFw/KgW/PwAvcTyIXFw/KgW/PwAvcTyIXFw/KgW/PwAvcTyIXFw/ZRfCPwBkPLuIXFw/ZRfCPwBkPLuIXFw/ZRfCPwBkPLvQd1c/KgW/PwAvcTzQd1c/KgW/PwAvcTzQd1c/KgW/PwAvcTzQd1c/ZRfCPwBkPLvQd1c/ZRfCPwBkPLvQd1c/ZRfCPwBkPLuIXFw/OMzZP8S3jD6IXFw/OMzZP8S3jD7Qd1c/OMzZP8S3jD7Qd1c/OMzZP8S3jD7Qd1c/NYG/PwCpqLvQd1c/NYG/PwCpqLvQd1c/NYG/PwCpqLvQd1c/NYG/PwCpqLuIXFw/NYG/PwCpqLuIXFw/NYG/PwCpqLuIXFw/NYG/PwCpqLuIXFw/NYG/PwCpqLss6lk/GkPYP+Q4kT4s6lk/VlXbP6Q2iD4s6lk/KgW/PwAvcTws6lk/KgW/PwAvcTws6lk/ZRfCPwBkPLss6lk/ZRfCPwBkPLss6lk/ZRfCPwBkPLss6lk/NYG/PwCpqLss6lk/NYG/PwCpqLss6lk/NYG/PwCpqLv+/3+/AAAAAI7C9b3+/3+/AAAAAI7C9b3+/3+/AAAAAI7C9b3+/3+/zswMQMzMzL3+/3+/zswMQMzMzL3+/3+/zswMQMzMzL3+/3+/hesBQMzMzL3+/3+/hesBQMzMzL3+/3+/hesBQMzMzL3+/3+/kML1PY7C9b3+/3+/kML1PY7C9b3+/3+/kML1PY7C9b3+/3+/kML1PY7C9b3+/3+/uB4FPszMzL3+/3+/uB4FPszMzL3+/3+/uB4FPszMzL0AAIA/kML1PY7C9b0AAIA/kML1PY7C9b0AAIA/kML1PY7C9b0AAIA/kML1PY7C9b0AAIA/uB4FPszMzL0AAIA/uB4FPszMzL0AAIA/uB4FPszMzL0AAIA/hesBQMzMzL0AAIA/hesBQMzMzL0AAIA/hesBQMzMzL0BAIA/zswMQMzMzL0BAIA/zswMQMzMzL0BAIA/zswMQMzMzL0AAIA/AAAAAI7C9b0AAIA/AAAAAI7C9b0AAIA/AAAAAI7C9b24HmU/kML1PY7C9b24HmU/kML1PY7C9b24HmU/kML1PY7C9b24HmU/kML1PY7C9b21HmW/kML1PY7C9b21HmW/kML1PY7C9b21HmW/kML1PY7C9b21HmW/kML1PY7C9b21HmW/uB4FPszMzL21HmW/uB4FPszMzL21HmW/uB4FPszMzL21HmW/uB4FPszMzL24HmU/uB4FPszMzL24HmU/uB4FPszMzL24HmU/uB4FPszMzL21HmW/hesBQMzMzL21HmW/hesBQMzMzL21HmW/hesBQMzMzL21HmW/hesBQMzMzL24HmU/hesBQMzMzL24HmU/hesBQMzMzL24HmU/hesBQMzMzL24HmU/hesBQMzMzL21HmW/AAAAAI7C9b21HmW/AAAAAI7C9b21HmW/AAAAAI7C9b24HmU/AAAAAI7C9b24HmU/AAAAAI7C9b24HmU/AAAAAI7C9b26HmU/zswMQMzMzL26HmU/zswMQMzMzL26HmU/zswMQMzMzL21HmW/zswMQMzMzL21HmW/zswMQMzMzL21HmW/zswMQMzMzL21HmW/zswMQMzMzL3+/3+/ZmZmP8zMzL3+/3+/ZmZmP8zMzL3+/3+/ZmZmP8zMzL0AAIA/ZmZmP8zMzL0AAIA/ZmZmP8zMzL0AAIA/ZmZmP8zMzL21HmW/ZmZmP8zMzL21HmW/ZmZmP8zMzL21HmW/ZmZmP8zMzL21HmW/ZmZmP8zMzL24HmU/ZmZmP8zMzL24HmU/ZmZmP8zMzL24HmU/ZmZmP8zMzL0AAACmzswMQMzMzL0AAACmzswMQMzMzL0AAACmzswMQMzMzL0AAACmhesBQMzMzL0AAACmhesBQMzMzL0AAACmhesBQMzMzL0AAACmhesBQMzMzL0AAACmkML1PY7C9b0AAACmkML1PY7C9b0AAACmkML1PY7C9b0AAACmkML1PY7C9b0AAACmuB4FPszMzL0AAACmuB4FPszMzL0AAACmuB4FPszMzL0AAACmuB4FPszMzL0AAACmAAAAAI7C9b0AAACmAAAAAI7C9b0AAACmAAAAAI7C9b0AAACmZmZmP8zMzL0AAACmZmZmP8zMzL0AAACmZmZmP8zMzL0AAACmZmZmP8zMzL3+/3+/AAAAAAAAAC/+/3+/AAAAAAAAAC/+/3+/zswMQACAB7H+/3+/zswMQACAB7H+/3+/hesBQAAAAC/+/3+/hesBQAAAAC/+/3+/kML1PQAAAC/+/3+/kML1PQAAAC/+/3+/uB4FPgAAAC8AAIA/zswMQAAAAC8AAIA/zswMQAAAAC8AAIA/AAAAAAAAAC8AAIA/AAAAAAAAAC8AAIA/uB4FPgAAAC8AAIA/kML1PQAAAC8AAIA/kML1PQAAAC8AAIA/hesBQAAAAC8AAIA/hesBQAAAAC+1HmW/zswMQAAAAC+1HmW/zswMQAAAAC+5HmU/zswMQAAAAC+1HmW/AAAAAAAAAC+4HmU/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PWPXOP//fz8AAAAAMmrXOAAAgD8AAAAAMvlkPyL55D4AAAAAMvlkPyX55D4AAAAAAAAAAP//fz8AAAAAAAAAAP//fz8AAAAAMvlkPyL55D4AAAAAMvlkPyX55D4AAAAAAACAvwAAAIAAAAAAAAAAAP//fz8AAAAAAAAAAP//fz8AAAAAPWPXOP//fz8AAAAAMmrXOAAAgD8AAAAA//9/PwAAAIAAAAAA//9/PwAAAIAAAAAAAAAAAAAAgD8AAAAAAACAvwAAAIAAAAAAAAAAAAAAgD8AAIA/AAAAAAAAAIDGOZGxAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAxVnQsgAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAA//9/PwAAAIAAAIA/AAAAAAAAAIDFOZGxAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAACAPwAAAIAAAIA/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAIC/Pc9zMwAAAIAAAAAAAAAAAAAAgL8AAAAA//9/PwAAAIAAAIC/Pc9zMwAAAIAAAAAA//9/vwAAAIAAAAAAAAAAAAAAgL8AAIC/Pc9zMwAAAIAAAAAAAAAAAAAAgD8AAAAA//9/PwAAAIAAAAAAAACAPwAAAIAAAAAAAAAAAAAAgD8AAAAAAACAPwAAAIAAAIA/AAAAAAAAAIAAAIC/Ps9zMwAAAIAAAAAAAAAAAAAAgL8AAAAAAACAPwAAAIAAAIC/Pc9zMwAAAIAAAAAAAACAvwAAAIAAAAAA//9/vwAAAIAAAAAAAAAAAAAAgD8AAIC/AAAAAAAAAIAAAAAAAAAAAAAAgD8AAAAAAACAPwAAAIAAAIC/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAAAACAPwAAAIAAAIC/AAAAAAAAAIAAAAAA//9/vwAAAIAAAAAAAAAAAAAAgD8AAIC/AAAAAAAAAIAAAAAA//9/vwAAAIAAAAAAAAAAAAAAgL8AAIC/Ps9zMwAAAIAAAAAAAACAvwAAAIAAAAAA//9/vwAAAIAAAAAAAAAAAAAAgL8AAAAAAACAvwAAAIAAAAAA//9/vwAAAIAAAAAAAAAAAAAAgL8AAIA/AAAAAAAAAIAAAIC/Ps9zMwAAAIAAAAAAAACAvwAAAIAAAAAAAAAAAAAAgD8AAIC/Ps9zMwAAAIAAAAAAAAAAAAAAgD8AAAAAAACAPwAAAIAAAIC/Pc9zMwAAAIAAAAAAAACAvwAAAIAAAAAAAAAAAAAAgL8AAAAAAACAvwAAAIAAAAAAAAAAAAAAgD8AAIA/AAAAAAAAAIAAAIC/AAAAAAAAAIAAAAAAAACAvwAAAIAAAAAAAAAAAAAAgD8AAIC/AAAAAAAAAIAAAAAAAAAAAAAAgD8AAAAAAACAPwAAAIAAAIC/AAAAAAAAAIAAAAAAAACAvwAAAIAAAAAAAAAAAAAAgL8AAIC/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAAAACAPwAAAIAAAIC/Pc9zMwAAAIAAAAAAAAAAAAAAgL8AAAAAAACAPwAAAIAAAAAAAAAAAAAAgL8AAAAA//9/PwAAAIAAAAAAAACAPwAAAIAAAIA/AAAAAAAAAIAAAIC/Pc9zMwAAAIDFOZGxAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAACAPwAAAIAAAIC/Pc9zMwAAAIDGOZGxAAAAAAAAgD8AAAAAAACAvwAAAIAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAACAPwAAAIAAAIA/AAAAAAAAAIAAAAAAAACAvwAAAIAAAAAAAAAAAAAAgL8AAIA/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAAAACAPwAAAIAAAIA/Pc9zswAAAIAAAAAAAAAAAAAAgD8AAAAAAACAPwAAAIAAAIA/Pc9zswAAAIAAAAAAAACAvwAAAIAAAAAAAAAAAAAAgL8AAIA/Pc9zswAAAIAAAAAAAACAvwAAAIAAAAAAAAAAAAAAgD8AAIA/Pc9zswAAAIAAAAAAAAAAAAAAgL8AAAAAAACAPwAAAIAAAIA/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAAAACAPwAAAIAAAIA/Pc9zswAAAIAAAAAAAAAAAAAAgD8AAAAAAACAPwAAAIAAAIA/Pc9zswAAAIAAAAAA//9/vwAAAIAAAAAAAAAAAAAAgL8AAIA/Pc9zswAAAIAAAAAA//9/vwAAAIAAAAAAAAAAAAAAgD8AAIA/Pc9zswAAAIAAAAAAAACAvwAAAIAAAAAA//9/vwAAAIAAAAAAAAAAAAAAgD8AAIA/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AAAAAP//f78AAAAAL/lkPyj55L4AAAAAMPlkPyn55L4AAAAAAAAAAAAAgL8AAAAAAAAAAP//f78AAAAAMPlkPyn55L4AAAAAMvlkPyL55L4AAAAAAAAAAAAAgL8AAAAAAAAAAP//f78AAAAAMPlkPyn55L4AAAAAMvlkPyL55L4AAAAAAAAAAAAAgL8AAAAAL/lkPyj55L4AAAAAMPlkPyn55L4AAAAAAACAvwAAAIAAAAAAAAAAAAAAgL8AAAAAAAAAAP//f7///38/AAAAAAAAAID//3+/AAAAAAAAAIAAAAAAAACAvwAAAIAAAAAAAAAAAAAAgL8AAAAAymH8Mv//f78AAAAAAACAvwAAAIAAAAAAAAAAAAAAgL8AAAAAAAAAAP//f78AAAAAAACAvwAAAIAAAAAAAAAAAAAAgL8AAAAAAAAAAP//f78AAAAAAAAAAAAAgL8AAAAAymH8Mv//f78AAAAAAACAPwAAAIAAAAAAAAAAAAAAgL8AAAAAAAAAAP//f78AAAAAAACAPwAAAIBN5eo0AACAPwAAAIAAAIC/AAAAAAAAAID//3+/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL///38/AAAAAAAAAIAAAIA/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAAAAAAAP//f78AAAAAAACAPwAAAID//38/AAAAAAAAAID//3+/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAAAACAPwAAAIAAAAAAAAAAAP//f78AAAAAymH8Mv//f78AAAAAAACAPwAAAIAAAAAAAACAvwAAAIAAAAAAAACAvwAAAIAAAAAAAAAAAP//f78AAAAAymH8Mv//f78AAAAAAAAAAP//f78AAAAAAAAAAP//f78AAAAAL/lkPyj55L4AAAAAMvlkPyL55L4AAAAAAAAAAAAAgL8AAAAAAAAAAP//f78AAAAAL/lkPyj55L4AAAAAMvlkPyL55L4AAAAAAACAvwAAAIAAAAAAAAAAAP//f78AAAAAAAAAAP//f78AAAAAAAAAAAAAgL8AAAAAAAAAAP//f78AAAAAAACAPwAAAIAAAAAAAACAPwAAAID//3+/AAAAAAAAAIAAAAAAAACAvwAAAIAAAIC/AAAAAAAAAIBN5eo0AACAPwAAAIAAAIC/AAAAAAAAAID//3+/AAAAAAAAAIAAAIC/AAAAAAAAAID//3+/AAAAAAAAAIAAAIC/AAAAAAAAAIAAAAAAAACAPwAAAIAAAIA/Ijy8tAAAAIAAAAAAAACAvwAAAID//38/AAAAAAAAAIAAAIA/AAAAAAAAAID//38/AAAAAAAAAIAAAIA/AAAAAAAAAID//38/AAAAAAAAAIAAAIA/Ijy8tAAAAIAAAAAAAACAPwAAAIBN5eo0AACAPwAAAIAAAAAAAACAPwAAAIAAAAAAAACAvwAAAIAAAAAAAACAvwAAAID//38/AAAAAAAAAIAAAIA/AAAAAAAAAIAAAIC/AAAAAAAAAID//3+/AAAAAAAAAIAAAAAAAACAPwAAAIAAAAAAAACAvwAAAID//3+/AAAAAAAAAIAAAAAAAACAvwAAAID//3+/AAAAAAAAAIAAAAAAAACAPwAAAIAAAAAAAACAPwAAAID//38/AAAAAAAAAIAAAAAAAACAvwAAAID//38/AAAAAAAAAIAAAAAAAACAvwAAAIAAAAAAAACAvwAAAIAAAAAAAACAPwAAAIAAAAAAAACAPwAAAIA1uwg/d/g8PwgFFz/jrRI/HaQIP+OtEj9GexY/d/g8P+afCz/jrRI/HaQIPwUxOz81uwg/S3lAP2oBCz/jrRI/5p8LP+OtEj8IBRc/BTE7Px2kCD8FMTs/RnsWP3f4PD/mnws/BTE7Px2kCD/jrRI/NbsIP3f4PD9qAQs/BTE7P+afCz8FMTs/tWsWP0t5QD9qAQs/460SPwgFFz8FMTs/NbsIP0t5QD+1axY/S3lAP2oBCz8FMTs/CAUXP+OtEj8IBRc/460SPwgFFz8FMTs/HaQIP+OtEj8dpAg/BTE7P2oBCz/jrRI/agELPwUxOz/mnws/460SP+afCz8FMTs/agELP+OtEj9qAQs/BTE7PwgFFz/jrRI/CAUXPwUxOz/mnws/460SP+afCz8FMTs/HaQIP+OtEj8dpAg/BTE7PwDAfz8AwH8/AMB/PwDAfz+grwA8CshuPwDAfz8AwH8/4Lj1O0AnRzwAwH8/AMB/PwDAfz8AwH8/AMB/PwDAfz/guPU7GAW5PeC49TsYBbk9AMB/PwDAfz8AwH8/AMB/P6CvADyTyGI/oK8APJPIYj8AwH8/AMB/PwDAfz8AwH8/oK8APE5eYT/guPU71FpIPx0Ayj7Ay008AMB/PwDAfz8AwH8/AMB/Px0Ayj6o2bk9HQDKPqjZuT0AwH8/AMB/Px0Ayj5mdUg/ptnJPk5eYT8AwH8/AMB/P6bZyT6QyGI/ptnJPpDIYj8AwH8/AMB/PwDAfz8AwH8/ptnJPgrIbj8AwH8/AMB/PzDrOT1AJ0c8AMB/PwDAfz/kVLc+QCdHPADAfz8AwH8/y632PiB9uD3yVLc+GAW5Pfvx3T7uEUo/8lS3PhgFuT0o3m097hFKPzDrOT0YBbk9MOs5PRgFuT0Vs88+IH24Pf1Utz7UWkg//VS3PtRaSD+M56E+Tl5hP4znoT5OXmE/MOs5PdRaSD9Apa49Tl5hP0Clrj1OXmE/MOs5PdRaSD9Apa49k8hiP0Clrj2TyGI/QKWuPZPIYj9Apa49k8hiP4znoT6QyGI/jOehPpDIYj+M56E+kMhiP4znoT6QyGI/AMB/PwDAfz9Apa49CshuP0Clrj0KyG4/AMB/PwDAfz+M56E+CshuP4znoT4KyG4/AMB/PwDAfz8AwH8/AMB/P+C49TtsY/8+4Lj1O2xj/z4dAMo+kJj/Ph0Ayj6QmP8+AMB/PwDAfz8w6zk9bGP/PniSVD3m518/MOs5PWxj/z4w6zk9bGP/PhWzzz5sY/8+y632Pmxj/z71VLc+bGP/PvVUtz5sY/8+9VS3Pmxj/z778d0+5udfP+C49TtAJ0c8HQDKPsDLTTwAwH8/AMB/PwAD/DvuEUo/eVDzPu4RSj/guPU7GAW5PR0Ayj6o2bk9HQDKPmZ1SD/guPU71FpIP6bZyT5OXmE/oK8APE5eYT+grwA8kMhiP6bZyT6QyGI/ptnJPpDIYj+grwA8kMhiPwDAfz8AwH8/oK8APArIbj+m2ck+CshuPx0Ayj6QmP8+4Lj1O2xj/z4AA/w75udfPwvY9T7m518/K3c3P0msAT+mpzI/mTcJPzRPNT+yvAM/IZgtP/sIRz8rdzc/wThRPyt3Nz/BOFE/KXc3P744UT8pdzc/vjhRPz9e/j42rAE/G1cBP6S8Az/zpjI/gsYFPyGYLT8mEBI/LV7+PsY4UT8tXv4+xjhRPzte/j7GOFE/GVcBP1YoTz+jpzI/mTcJP/MIIz8wFBI/MF7+PjesAT8rdzc/PawBPyGYLT8mEBI/FlcBP6e8Az/skgM/lzcJPyGYLT/7CEc/PpIDP4LGBT8tTzU/p7wDP6DPKz8mEBI/oM8rPyYQEj/skgM/HEAIP+ySAz8cQAg/dtEkPzIUEj+jpzI/H0AIP3bRJD8yFBI/BhUpPysSEj8GFSk/KxISP5SSAz+P6Qc/mc8rP/oIRz8+kgM//L0GPz6SAz/8vQY/mc8rP/oIRz+55io/OBASP7nmKj84EBI/ROQCP6xACD/l/Sk/GhISP+X9KT8aEhI/6+MCPx3qBz+55io/EQlHP5fjAj+LvgY/ueYqPxEJRz/i/Sk/8gpHP/HjAj8XFQc/4v0pP/IKRz8DFSk/AQtHP5iSAz+KFAc/mJIDP4oUBz8DFSk/AQtHP06nMj+MFAc/TqcyP4wUBz8HjCc/AQtHPweMJz8BC0c/B4wnPwELRz+YkgM/kukHPweMJz8BC0c/DownPysSEj8OjCc/KxISP5SSAz+GFAc/bdEkPwcNRz/wkgM/H0AIP23RJD8HDUc/TqcyP5TpBz8DFSk/AQtHPwMVKT8BC0c/JqMmPxQLRz/x4wI/H+oHPyajJj8UC0c/LqMmPzoSEj8uoyY/OhISP+vjAj8WFQc/TrolP/QMRz9G5AI/sEAIP066JT/0DEc/VbolPxwUEj9VuiU/HBQSP5bjAj+HvgY/dtEkPzAUEj920SQ/MBQSPzuSAz/6vQY/oM8rPyYQEj/zpjI/+r0GP/OmMj/6vQY/oM8rPyYQEj/zCCM/MBQSPxRXAT9aKE8/FFcBP1ooTz87kgM/gsYFP+oIIz8HDUc/LU81P1QoTz/wkgM/mTcJPy1PNT9UKE8/BhUpPywSEj9OpzI/ihQHPwYVKT8sEhI/pqcyPyBACD+bzys/+ghHP5vPKz/6CEc/ueYqPzgQEj+aVTM/a70GP7nmKj84EBI/5f0pPxoSEj/zVTM/+xMHP+X9KT8aEhI/TlYzP5M/CD+55io/EQlHP7nmKj8RCUc/9lUzPwbpBz/j/Sk/8gpHP+P9KT/yCkc/DownPywSEj9OpzI/kukHPw6MJz8sEhI/LqMmPz4SEj/zVTM/AukHPy6jJj8+EhI/VbolPxwUEj9OVjM/kT8IP1W6JT8cFBI/9lUzP/4TBz8moyY/FAtHPyajJj8UC0c/nVUzP229Bj9OuiU/9AxHP066JT/0DEc/+KYyP/29Bj/4pjI//b0GP23RJD8HDUc/bdEkPwcNRz/4pjI/g8YFPzBPNT9SKE8/ME81P1IoTz/qCCM/Bw1HPyt3Nz9uDCk/K3c3P24MKT+bXBs/ixQHP5tcGz+T6Qc/Mk81P2wMKT/0XBs/mTcJPzJPNT9sDCk/9FwbPyBACD9FXBs//L0GP0VcGz/8vQY/RVwbP4LGBT8wTzU/ZgwpPzBPNT9mDCk/K3c3P2gMKT8rdzc/aAwpPzJe/j5oDCk/Ml7+PmgMKT8yXv4+aAwpPxZXAT9oDCk/8VwbP5g3CT/xXBs/mDcJP/FcGz8eQAg/8VwbPx5ACD9AXBs/+r0GP0BcGz/6vQY/FlcBP2kMKT8WVwE/aQwpP0BcGz+CxgU/QFwbP4LGBT+ZXBs/iBQHP5lcGz+Q6Qc/6OAuP1N4az/o4C4/IzhoP/yiAz9Rk1c//KIDP1GTVz+hBy8/6YtuP38+Bj/0xlk/fz4GP/TGWT/o4C4/AS1oP+jgLj8jOGg/YPsyP1GTVz9g+zI/UZNXP+jgLj9TeGs/rs0HP1N4az/o4C4/U3hrP/yiAz/KkHU//KIDP8qQdT9g+zI/UZNXP67NBz8jOGg/YPsyP1GTVz/o4C4/6ThoP+jgLj89hGs/3F8wP/TGWT/tAAg/6YtuP9xfMD/0xlk//KIDP1GTVz+uzQc/U3hrP/yiAz9Rk1c/6OAuPxp5az9g+zI/x5B1P67NBz9TeGs/YPsyP8eQdT+uzQc/6ThoP67NBz89hGs/3F8wPyNdcz/tAAg/MJtsP9xfMD8jXXM//KIDP8qQdT+uzQc/IzhoP/yiAz/KkHU/rs0HPxp5az+uzQc/AS1oP38+Bj8jXXM/7QAIP+mLbj9/PgY/I11zP67NBz8jOGg/YPsyP8eQdT9g+zI/x5B1P+jgLj8jOGg/3F8wPyNdcz/cXzA/I11zP6EHLz/pi24/rs0HPz2Eaz+hBy8/MJtsP38+Bj8jXXM/fz4GPyNdcz+uzQc/AS1oP9xfMD/0xlk/3F8wP/TGWT+hBy8/MJtsP+jgLj89hGs/6OAuPwEtaD9/PgY/9MZZP+0ACD8wm2w/fz4GP/TGWT+hBy8/BPFxP6EHLz9vVm8//KIDP1GTVz/8ogM/UZNXP6EHLz/pi24/fz4GP/TGWT9/PgY/9MZZP+jgLj8BLWg/oQcvP29Wbz9g+zI/UZNXP2D7Mj9Rk1c/oQcvPwTxcT/tAAg/BPFxP6EHLz8E8XE//KIDP8qQdT/8ogM/ypB1P9xfMD/0xlk/3F8wP/TGWT+hBy8/MJtsP+jgLj89hGs/3F8wPyNdcz/cXzA/I11zP6EHLz/pi24/rs0HPz2Eaz/tAAg/bFZvP2D7Mj/HkHU/YPsyP8eQdT+hBy8/b1ZvP6EHLz8wm2w/fz4GPyNdcz9/PgY/I11zP67NBz8BLWg/YPsyP8eQdT/tAAg/BPFxP2D7Mj/HkHU/7QAIP29Wbz9g+zI/UZNXP+0ACD9vVm8/YPsyP1GTVz+hBy8/b1ZvP67NBz89hGs/3F8wPyNdcz/tAAg/MJtsP9xfMD8jXXM//KIDP8qQdT/tAAg/bFZvP/yiAz/KkHU/7QAIPwTxcT/8ogM/UZNXP+0ACD8E8XE//KIDP1GTVz+hBy8/BPFxP67NBz8BLWg/fz4GPyNdcz/tAAg/6YtuP38+Bj8jXXM/6OAuPwEtaD9/PgY/9MZZP+0ACD8wm2w/fz4GP/TGWT/o4C4/PYRrP9xfMD/0xlk/7QAIP+mLbj/cXzA/9MZZP6EHLz/pi24/oQcvPzCbbD+hBy8/MJtsP6EHLz/pi24/oQcvPzCbbD+hBy8/6YtuP+0ACD8wm2w/7QAIP+mLbj/tAAg/MJtsP+0ACD/pi24/7QAIP+mLbj/tAAg/MJtsP+0ACD/pi24/7QAIPzCbbD+hBy8/6YtuP6EHLz8wm2w/6OAuP1N4az/o4C4/IzhoP/yiAz9Rk1c//KIDP1GTVz+hBy8/6YtuP38+Bj/0xlk/fz4GP/TGWT/o4C4/AS1oP+jgLj8jOGg/YPsyP1GTVz9g+zI/UZNXP+jgLj9TeGs/rs0HP1N4az/o4C4/U3hrP/yiAz/KkHU//KIDP8qQdT9g+zI/UZNXP67NBz8jOGg/YPsyP1GTVz/o4C4/6ThoP+jgLj89hGs/3F8wP/TGWT/tAAg/6YtuP9xfMD/0xlk//KIDP1GTVz+uzQc/U3hrP/yiAz9Rk1c/6OAuPxp5az9g+zI/x5B1P67NBz9TeGs/YPsyP8eQdT+uzQc/6ThoP67NBz89hGs/3F8wPyNdcz/tAAg/MJtsP9xfMD8jXXM//KIDP8qQdT+uzQc/IzhoP/yiAz/KkHU/rs0HPxp5az+uzQc/AS1oP38+Bj8jXXM/7QAIP+mLbj9/PgY/I11zP67NBz8jOGg/YPsyP8eQdT9g+zI/x5B1P+jgLj8jOGg/3F8wPyNdcz/cXzA/I11zP6EHLz/pi24/rs0HPz2Eaz+hBy8/MJtsP38+Bj8jXXM/fz4GPyNdcz+uzQc/AS1oP9xfMD/0xlk/3F8wP/TGWT+hBy8/MJtsP+jgLj89hGs/6OAuPwEtaD9/PgY/9MZZP+0ACD8wm2w/fz4GP/TGWT+hBy8/BPFxP6EHLz9vVm8//KIDP1GTVz/8ogM/UZNXP6EHLz/pi24/fz4GP/TGWT9/PgY/9MZZP+jgLj8BLWg/oQcvP29Wbz9g+zI/UZNXP2D7Mj9Rk1c/oQcvPwTxcT/tAAg/BPFxP6EHLz8E8XE//KIDP8qQdT/8ogM/ypB1P9xfMD/0xlk/3F8wP/TGWT+hBy8/MJtsP+jgLj89hGs/3F8wPyNdcz/cXzA/I11zP6EHLz/pi24/rs0HPz2Eaz/tAAg/bFZvP2D7Mj/HkHU/YPsyP8eQdT+hBy8/b1ZvP6EHLz8wm2w/fz4GPyNdcz9/PgY/I11zP67NBz8BLWg/YPsyP8eQdT/tAAg/BPFxP2D7Mj/HkHU/7QAIP29Wbz9g+zI/UZNXP+0ACD9vVm8/YPsyP1GTVz+hBy8/b1ZvP67NBz89hGs/3F8wPyNdcz/tAAg/MJtsP9xfMD8jXXM//KIDP8qQdT/tAAg/bFZvP/yiAz/KkHU/7QAIPwTxcT/8ogM/UZNXP+0ACD8E8XE//KIDP1GTVz+hBy8/BPFxP67NBz8BLWg/fz4GPyNdcz/tAAg/6YtuP38+Bj8jXXM/6OAuPwEtaD9/PgY/9MZZP+0ACD8wm2w/fz4GP/TGWT/o4C4/PYRrP9xfMD/0xlk/7QAIP+mLbj/cXzA/9MZZP6EHLz/pi24/oQcvPzCbbD+hBy8/MJtsP6EHLz/pi24/oQcvPzCbbD+hBy8/6YtuP+0ACD8wm2w/7QAIP+mLbj/tAAg/MJtsP+0ACD/pi24/7QAIP+mLbj/tAAg/MJtsP+0ACD/pi24/7QAIPzCbbD+hBy8/6YtuP6EHLz8wm2w/6OAuP1N4az/o4C4/IzhoP/yiAz9Rk1c//KIDP1GTVz+hBy8/6YtuP38+Bj/0xlk/fz4GP/TGWT/o4C4/AS1oP+jgLj8jOGg/YPsyP1GTVz9g+zI/UZNXP+jgLj9TeGs/rs0HP1N4az/o4C4/U3hrP/yiAz/KkHU//KIDP8qQdT9g+zI/UZNXP67NBz8jOGg/YPsyP1GTVz/o4C4/6ThoP+jgLj89hGs/3F8wP/TGWT/tAAg/6YtuP9xfMD/0xlk//KIDP1GTVz+uzQc/U3hrP/yiAz9Rk1c/6OAuPxp5az9g+zI/x5B1P67NBz9TeGs/YPsyP8eQdT+uzQc/6ThoP67NBz89hGs/3F8wPyNdcz/tAAg/MJtsP9xfMD8jXXM//KIDP8qQdT+uzQc/IzhoP/yiAz/KkHU/rs0HPxp5az+uzQc/AS1oP38+Bj8jXXM/7QAIP+mLbj9/PgY/I11zP67NBz8jOGg/YPsyP8eQdT9g+zI/x5B1P+jgLj8jOGg/3F8wPyNdcz/cXzA/I11zP6EHLz/pi24/rs0HPz2Eaz+hBy8/MJtsP38+Bj8jXXM/fz4GPyNdcz+uzQc/AS1oP9xfMD/0xlk/3F8wP/TGWT+hBy8/MJtsP+jgLj89hGs/6OAuPwEtaD9/PgY/9MZZP+0ACD8wm2w/fz4GP/TGWT+hBy8/BPFxP6EHLz9vVm8//KIDP1GTVz/8ogM/UZNXP6EHLz/pi24/fz4GP/TGWT9/PgY/9MZZP+jgLj8BLWg/oQcvP29Wbz9g+zI/UZNXP2D7Mj9Rk1c/oQcvPwTxcT/tAAg/BPFxP6EHLz8E8XE//KIDP8qQdT/8ogM/ypB1P9xfMD/0xlk/3F8wP/TGWT+hBy8/MJtsP+jgLj89hGs/3F8wPyNdcz/cXzA/I11zP6EHLz/pi24/rs0HPz2Eaz/tAAg/bFZvP2D7Mj/HkHU/YPsyP8eQdT+hBy8/b1ZvP6EHLz8wm2w/fz4GPyNdcz9/PgY/I11zP67NBz8BLWg/YPsyP8eQdT/tAAg/BPFxP2D7Mj/HkHU/7QAIP29Wbz9g+zI/UZNXP+0ACD9vVm8/YPsyP1GTVz+hBy8/b1ZvP67NBz89hGs/3F8wPyNdcz/tAAg/MJtsP9xfMD8jXXM//KIDP8qQdT/tAAg/bFZvP/yiAz/KkHU/7QAIPwTxcT/8ogM/UZNXP+0ACD8E8XE//KIDP1GTVz+hBy8/BPFxP67NBz8BLWg/fz4GPyNdcz/tAAg/6YtuP38+Bj8jXXM/6OAuPwEtaD9/PgY/9MZZP+0ACD8wm2w/fz4GP/TGWT/o4C4/PYRrP9xfMD/0xlk/7QAIP+mLbj/cXzA/9MZZP6EHLz/pi24/oQcvPzCbbD+hBy8/MJtsP6EHLz/pi24/oQcvPzCbbD+hBy8/6YtuP+0ACD8wm2w/7QAIP+mLbj/tAAg/MJtsP+0ACD/pi24/7QAIP+mLbj/tAAg/MJtsP+0ACD/pi24/7QAIPzCbbD+hBy8/6YtuP6EHLz8wm2w/oQcvP+mLbj+hBy8/MJtsP6EHLz8wm2w/oQcvP+mLbj+hBy8/MJtsP6EHLz/pi24/7QAIPzCbbD/tAAg/6YtuP+0ACD8wm2w/7QAIP+mLbj/tAAg/6YtuP+0ACD8wm2w/7QAIP+mLbj/tAAg/MJtsP6EHLz/pi24/oQcvPzCbbD+hBy8/6YtuP6EHLz8wm2w/oQcvPzCbbD+hBy8/6YtuP6EHLz8wm2w/oQcvP+mLbj/tAAg/MJtsP+0ACD/pi24/7QAIPzCbbD/tAAg/6YtuP+0ACD/pi24/7QAIPzCbbD/tAAg/6YtuP+0ACD8wm2w/oQcvP+mLbj+hBy8/MJtsP6EHLz/pi24/oQcvPzCbbD+hBy8/MJtsP6EHLz/pi24/oQcvPzCbbD+hBy8/6YtuP+0ACD8wm2w/7QAIP+mLbj/tAAg/MJtsP+0ACD/pi24/7QAIP+mLbj/tAAg/MJtsP+0ACD/pi24/7QAIPzCbbD+hBy8/6YtuP6EHLz8wm2w/AMB/PwDAfz8AwH8/AMB/PwDAfz8AwH8/AMB/PwDAfz8AwH8/AMB/PwDAfz8AwH8/AMB/PwDAfz8AwH8/AMB/PwDAfz8AwH8/AMB/PwDAfz8AwH8/AMB/PwDAfz8AwH8/AMB/PwDAfz8AwH8/AMB/PwDAfz8AwH8/AMB/PwDAfz8AwH8/AMB/PwDAfz8AwH8/AMB/PwDAfz8AwH8/AMB/PwDAfz8AwH8/AMB/PwDAfz8AwH8/AMB/PwDAfz8AwH8/AMB/PwDAfz8AwH8/AMB/P3Aw4z4gfbg9+/HdPur8VD9wMOM+bGP/Pvvx3T7q/FQ/eJJUPer8VD9wMOM+bGP/PijebT3q/FQ/cDDjPiB9uD0AA/w76vxUP3lQ8z7q/FQ/AAP8O+r8VD8L2PU+6vxUP7TXFj+WNEQ/tNcWP5Y0RD9M2hY/zY1FP0zaFj/NjUU/GNgWP+1mQz8Y2BY/7WZDP+bZFj98W0Y/5tkWP3xbRj/MEwo/uihEP8wTCj+6KEQ/zBMKP7ooRD8WIAo/DZBFPxYgCj8NkEU/FiAKPw2QRT+uHAo/RGlDP64cCj9EaUM/rhwKP0RpQz8uFwo/lE9GPy4XCj+UT0Y/LhcKP5RPRj/u2BY/JuFEP8vVFj8m4UQ/v9YWP2W6Qj/61xY/KAhHP52/CD9M6UI/7NsIP/XPRj+dvwg/TOlCP+zbCD/1z0Y/vNsIPwCoRD+ivwg/Aw9FP6K/CD8DD0U/vNsIPwCoRD8Y2BY/mNRDPxjYFj+Y1EM/TNoWP4b7RT9M2hY/hvtFP6EOCj8oyUM/oQ4KPyjJQz+hDgo/KMlDPwcSCj/370U/BxIKP/fvRT8HEgo/9+9FPwcSCj/370U/3qgIP6jJQz/eqAg/ZvBFP96oCD9m8EU/tNcWP5Y0RD+01xY/ljREP0zaFj/NjUU/TNoWP82NRT8Y2BY/7WZDPxjYFj/tZkM/5tkWP3xbRj/m2RY/fFtGP8wTCj+6KEQ/zBMKP7ooRD/MEwo/uihEPxYgCj8NkEU/FiAKPw2QRT8WIAo/DZBFP64cCj9EaUM/rhwKP0RpQz+uHAo/RGlDPy4XCj+UT0Y/LhcKP5RPRj8uFwo/lE9GP8vVFj8m4UQ/7tgWPybhRD/61xY/KAhHP7/WFj9lukI/7NsIP/XPRj+dvwg/TOlCP52/CD9M6UI/7NsIP/XPRj+82wg/AKhEP6K/CD8DD0U/or8IPwMPRT+82wg/AKhEPxjYFj+Y1EM/TNoWP4b7RT+hDgo/KMlDP6EOCj8oyUM/BxIKP/fvRT8HEgo/9+9FPwcSCj/370U/3qgIP6jJQz/eqAg/ZvBFP96oCD9m8EU/AMB/PwDAfz8AwH8/AMB/P6bZyT4KyG4/AMB/PwDAfz8dAMo+QMxNPADAfz8AwH8/AMB/PwDAfz8AwH8/AMB/Px0Ayj6o2bk9AMB/PwDAfz8AwH8/AMB/P6bZyT6QyGI/ptnJPpDIYj8AwH8/AMB/Px0Ayj5mdUg/ptnJPk5eYT+grwA8jshiP6CvADyOyGI/AMB/PwDAfz8AwH8/AMB/P+C49TvUWkg/oK8APE5eYT8AwH8/AMB/P+C49TsYBbk9AMB/PwDAfz8AwH8/AMB/P+C49TvAJ0c8AMB/PwDAfz8AwH8/AMB/PwDAfz8AwH8/oK8APArIbj8AwH8/AMB/P5alrj2OyGI/lqWuPY7IYj+Wpa49jshiP5alrj2OyGI/nOehPpDIYj+c56E+kMhiP5znoT6QyGI/nOehPpDIYj/kVLc+1FpIP+RUtz7UWkg/nOehPk5eYT+c56E+Tl5hP0TrOT3UWkg/lqWuPU5eYT+Wpa49Tl5hPyjebT3m518/9VS3PhgFuT31VLc+GAW5Pcut9j4gfbg9FbPPPiB9uD378d0+5udfP6zqOT0YBbk9rOo5PRgFuT0AwH8/AMB/P5znoT4KyG4/nOehPgrIbj8AwH8/AMB/P5alrj0KyG4/lqWuPQrIbj+s6jk9wCdHPKzqOT3AJ0c8AMB/PwDAfz/1VLc+wCdHPPVUtz7AJ0c8AMB/PwDAfz8AwH8/AMB/PwDAfz8AwH8/AMB/PwDAfz8dAMo+kJj/PuC49TtsY/8+AMB/PwDAfz8AwH8/AMB/P+xUtz5sY/8+7FS3Pmxj/z54klQ97hFKP8ut9j5sY/8+FbPPPmxj/z4U6zk9bGP/Pvvx3T7uEUo/4Lj1O8AnRzwdAMo+QMxNPADAfz8AwH8/AAP8O+bnXz95UPM+5udfP+C49TsYBbk9HQDKPqjZuT2grwA8kMhiP6bZyT6QyGI/ptnJPpDIYj+grwA8kMhiPx0Ayj5mdUg/4Lj1O9RaSD+m2ck+Tl5hP6CvADxOXmE/AMB/PwDAfz+grwA8CshuP6bZyT4KyG4/HQDKPpCY/z7guPU7bGP/PgAD/DvuEUo/C9j1Pu4RSj8AwH8/AMB/PwDAfz8AwH8/AMB/PwDAfz8AwH8/AMB/PwDAfz8AwH8/AMB/PwDAfz8AwH8/AMB/PwDAfz8AwH8/AMB/PwDAfz8AwH8/AMB/PwDAfz8AwH8/AMB/PwDAfz8AwH8/AMB/PwDAfz8AwH8/AMB/PwDAfz8AwH8/AMB/PwDAfz8AwH8/AMB/PwDAfz8AwH8/AMB/PwDAfz8AwH8/AMB/PwDAfz8AwH8/AMB/PwDAfz8AwH8/AMB/PwDAfz8AwH8/AMB/PwDAfz8AwH8/AMB/PwDAfz8AwH8/AMB/PwDAfz8AwH8/cDDjPiB9uD378d0+6vxUP3Aw4z5sY/8++/HdPur8VD94klQ96vxUP3Aw4z5sY/8+KN5tPer8VD9wMOM+IH24PQAD/Dvq/FQ/eVDzPur8VD8AA/w76vxUPwvY9T7q/FQ/JAAMAAkAJAAJABgAAAAGABUAAAAVAAMAGwAdAAcAGwAHAAIADgAUABEADgARAAsAIwAXAAgAIwAIAB8AJwAhABIAJwASAA0ABQAWACAABQAgACYAEwAiAB4AEwAeABAACgAPABwACgAcABoABAAlABkABAAZAAEAJwMvA0wAJwNMADsAbwB4AFUAbwBVAEAAQwBiAGoAQwBqAEcAOgBLAFAAOgBQAD4AQQBXAGMAQQBjAEQAMgMtAz8AMgM/AHEAXgA0ACoAXgAqAGcAdQBuADkAdQA5AFwAWwA4ADUAWwA1AGAASQAsADAASQAwAFIAhgCKAGQAhgBkAFgANQN+AEwANQNMAC8DhwCMAGkAhwBpAGEAjwCEAFYAjwBWAHoAQgM7A3MAQgNzAJEAfACBAFAAfABQAEsALgMgAy0ALgMtAEoANwM5A3cANwN3AE0AUwAxAG0AUwBtAHQAKwMyA3EAKwNxAEIAPQBOAHkAPQB5AHAAPAM+A1QAPANUAHYAPwM4A08APwNPAH8APQNAA4AAPQOAAFEASQBSAIIASQCCAH0ALgNKAH4ALgN+ADUDOgNBA5AAOgOQAHsAcgBZAIMAcgCDAI4AXQBmAI0AXQCNAIgAWgBfAIkAWgCJAIUAlACSAJoAlACaAJsAHwGSAJQAHwGUACQBLgE4AZsALgGbAJoALwGgAKEALwGhADABmQAcAaEAmQChAKAAqwClAKQAqwCkAKcAMwGuAKgAMwGoADEBrAC2AKkArACpAKYANAE8AbUANAG1AK8AtQC/ALwAtQC8AK8ArQC7AMIArQDCALkAugC9AMMAugDDAMAAuADBAMQAuADEAMgAyQDFAL4AyQC+ALQAJgEgAcoAJgHKABYB0QDOAMYA0QDGALMAIQEgAccAIQHHAM8A0gDeANwA0gDcANAAzwDbAOEAzwDhANUAIQElAfgAIQH4ANcA3QDjAOAA3QDgANoA1gDiAOQA1gDkAOcA6ADlAN8A6ADfANMAOwE2AegAOwHoANMAOgHwAOgAOgHoADYB7QDxANQA7QDUAOYAlwD0AO8AlwDvAJ8AIwElAdUAIwHVAPMA9gD/APwA9gD8AOsA6QD7AAIB6QACAfkA+gCVAJ0A+gCdAOwA/QAAAQYB/QAGAQMB+AABAQQB+AAEAdcA2AAFAf4A2AD+APUAOwHTALUAOwG1ADwBzQDZAPcAzQD3AAkBsQAOAQsBsQALAQgBBwEKAREBBwERAcwADAEPARUBDAEVARIBywAQARMBywATARcBGAEUAQ0BGAENAbAAJwEoAaoAJwGqALgAHQEZAbIAHQGyAKMAKwEpARsBKwEbAZgApQCrACoBpQAqASwBFwEaASgBFwEoAScBkwD4ACUBkwAlASMBzwDVACUBzwAlASEB1wDKACAB1wAgASEBtwDHACABtwAgASYBlgAeASIBlgAiAfIA9gA7ATwB9gA8AQgBnAA5ATUBnAA1AeoA9gDrADYB9gA2ATsBsQAIATwBsQA8ATQBsQA0ATIBsQAyAaIApAAvATABpAAwAacAngDuADcBngA3AS0BPwFCAVQBPwFUAU8BQwFAAUwBQwFMAXMBTgFWAUgBTgFIAT4BSQE9AUUBSQFFAWkBTQFSAV4BTQFeAVkBWAFQAVwBWAFcAWQBcgFLAVsBcgFbAWABYgFaAUoBYgFKAWwBfAFXAWMBfAFjAWgBawFuAWYBawFmAWEBRgF1AW0BRgFtAWoBbwFxAV8BbwFfAWcBeAFEAXQBeAF0AXABdgFHAVUBdgFVAXoBewFTAUEBewFBAXcBXQFRAXkBXQF5AWUBgwGAAYwBgwGMAZsBiQF9AYUBiQGFAZUBqgGeAYoBqgGKAZgBmQGnAbMBmQGzAZMBhgGNAZEBhgGRAZYBkAGEAZwBkAGcAZQBowF/AYIBowGCAbwBiwGfAagBiwGoAZoBsAGkAaABsAGgAawBoQG6AaYBoQGmAZ0BuAGvAasBuAGrAbQBrgGIAX4BrgF+AaIBpQG5AbUBpQG1AbEBlwGSAbIBlwGyAakBrQG2AY4BrQGOAYcBuwGBAY8BuwGPAbcBxAHAAcEBxAHBAcUBxwG9Ab8BxwG/AcMByQHLAb4ByQG+AcgBxgHCAcwBxgHMAcoBzwHSAeQBzwHkAd8B0wHQAdwB0wHcAQMC3gHmAdgB3gHYAc4B2QHNAdUB2QHVAfkB3QHiAe4B3QHuAekB6AHgAewB6AHsAfQBAgLbAesBAgLrAfAB8gHqAdoB8gHaAfwBDALnAfMBDALzAfgB+wH+AfYB+wH2AfEB1gEFAv0B1gH9AfoB/wEBAu8B/wHvAfcBCALUAQQCCAIEAgACBgLXAeUBBgLlAQoCCwLjAdEBCwLRAQcC7QHhAQkC7QEJAvUBEwIQAhwCEwIcAisCGQINAhUCGQIVAiUCOgIuAhoCOgIaAigCKQI3AkMCKQJDAiMCFgIdAiECFgIhAiYCIAIUAiwCIAIsAiQCMwIPAhICMwISAkwCGwIvAjgCGwI4AioCQAI0AjACQAIwAjwCMQJKAjYCMQI2Ai0CSAI/AjsCSAI7AkQCPgIYAg4CPgIOAjICNQJJAkUCNQJFAkECJwIiAkICJwJCAjkCPQJGAh4CPQIeAhcCSwIRAh8CSwIfAkcCVAJQAlECVAJRAlUCVwJNAk8CVwJPAlMCWQJbAk4CWQJOAlgCVgJSAlwCVgJcAloCXwJiAnQCXwJ0Am8CYwJgAmwCYwJsApMCbgJ2AmgCbgJoAl4CaQJdAmUCaQJlAokCbQJyAn4CbQJ+AnkCeAJwAnwCeAJ8AoQCkgJrAnsCkgJ7AoACggJ6AmoCggJqAowCnAJ3AoMCnAKDAogCiwKOAoYCiwKGAoECZgKVAo0CZgKNAooCjwKRAn8CjwJ/AocCmAJkApQCmAKUApAClgJnAnUClgJ1ApoCmwJzAmECmwJhApcCfQJxApkCfQKZAoUCowKgAqwCowKsArsCqQKdAqUCqQKlArUCygK+AqoCygKqArgCuQLHAtMCuQLTArMCpgKtArECpgKxArYCsAKkArwCsAK8ArQCwwKfAqICwwKiAtwCqwK/AsgCqwLIAroC0ALEAsAC0ALAAswCwQLaAsYCwQLGAr0C2ALPAssC2ALLAtQCzgKoAp4CzgKeAsICxQLZAtUCxQLVAtECtwKyAtICtwLSAskCzQLWAq4CzQKuAqcC2wKhAq8C2wKvAtcC5ALgAuEC5ALhAuUC5wLdAt8C5wLfAuMC6QLrAt4C6QLeAugC5gLiAuwC5gLsAuoC9ALwAvEC9ALxAvUC9wLtAu8C9wLvAvMC+QL7Au4C+QLuAvgC9gLyAvwC9gL8AvoCBAMAAwEDBAMBAwUDBwP9Av8CBwP/AgMDCQMLA/4CCQP+AggDBgMCAwwDBgMMAwoDFAMQAxEDFAMRAxUDFwMNAw8DFwMPAxMDGQMbAw4DGQMOAxgDFgMSAxwDFgMcAxoDZQAwAzYDZQA2A4sANgBrADMDNgAzAyUDiwA2AzEDiwAxA2gAZQApAB4DZQAeAzADPAA/AC0DPAAtAygDRQBIACoDRQAqAywDQgBFACwDQgAsAysDMgA3ACYDMgAmAyMDKAAzACQDKAAkAx0DbAAvACIDbAAiAzQDRgBoADEDRgAxAykDLgArAB8DLgAfAyEDWgNJA1QDWgNUA1wDcANrA04DcANOA2ADYQNQA0YDYQNGA1cDYwNoA0wDYwNMA0MDbQNmA0UDbQNFA08DTQNiA1gDTQNYA0QDZwNuA18DZwNfA0sDRwNZA1sDRwNbA1EDUgNdA24DUgNuA2cDVgNKA2UDVgNlA2wDSANTA2kDSANpA2QDXgNVA2oDXgNqA28DhwN3A4IDhwOCA4kDmQOVA3wDmQN8A44DjwN+A3QDjwN0A4YDkQOUA3oDkQN6A3EDlwOSA3MDlwNzA30DewOQA4UDewOFA3IDkwOYA40DkwONA3kDdQOIA4oDdQOKA38DgAOLA5gDgAOYA5MDhAN4A5IDhAOSA5cDdgOBA5QDdgOUA5EDjAODA5YDjAOWA5oDBgQEBJ4DBgSeA6ED5QPhA6MD5QOjA8sDsgPQA9gDsgPYA7UDDQQYBNUDDQTVA7gD4gPqA9AD4gPQA7IDHAQHBKIDHASiA+ADAgQJBKUDAgSlA5sDCAQKBKgDCASoA6QDuQPWA7sDuQO7A6sDDwQRBK4DDwSuA7EDEAQOBLoDEAS6A60DDAQTBLQDDAS0A7cD0wOdA6YD0wOmA78DwQOnA6oDwQOqA8UDFwQDBJwDFwScA9IDywOjA58DywOfA9sDrAO+A8kDrAPJA7AD9QP5A8gD9QPIA70DHgT7A9UDHgTVAxgE8gPtA9kD8gPZA9ED/QP0A7wD/QO8A9cD9wP+A+oD9wPqA8cDCgQbBN8DCgTfA6gDrwPHA+oDrwPqA+IDwwOpA+EDwwPhA+UDzAPcA+wDzAPsA/EDxAPmA/8DxAP/A/gD1APAA/MD1APzA/wDFwTSA/sDFwT7Ax4EwgPGA/oDwgP6A/YD3QMUBB0E3QMdBO4DsQPkAxoEsQMaBA8E3gOgAwUE3gMFBBUE7gMdBBYE7gMWBNoD4wOzAxIE4wMSBBkEtgPaAxYEtgMWBAsE6wMABCkE6wMpBCIEygPwAygEygMoBCUE7wPPAyAE7wMgBCcE6APNAyYE6AMmBCQEzgPpAyEEzgMhBB8EAQTnAyMEAQQjBCoEAAAAvwAAAACPwvU9AAAAvwAAAACPwvU9AAAAvwAAAACPwvU9AAAAv87MDEDMzMw9AAAAv87MDEDMzMw9AAAAv87MDEDMzMw9AAAAPwAAAACPwvU9AAAAPwAAAACPwvU9AAAAPwAAAACPwvU9AAAAP87MDEDMzMw9AAAAP87MDEDMzMw9AAAAP87MDEDMzMw978TRvgAAAACPwvU978TRvgAAAACPwvU978TRvgAAAACPwvU9XwLcvs7MDEDMzMw9XwLcvs7MDEDMzMw9GBLSPgAAAACPwvU9GBLSPgAAAACPwvU9GBLSPgAAAACPwvU9ik/cPs7MDEDMzMw9ik/cPs7MDEDMzMw9ik/cPs7MDEDMzMw9AAAAv4XrAUDMzMw9AAAAv4XrAUDMzMw9AAAAP4XrAUDMzMw9AAAAP4XrAUDMzMw9AAAAP4XrAUDMzMw9XwLcvoXrAUDMzMw9XwLcvoXrAUDMzMw9XwLcvoXrAUDMzMw9iE/cPoXrAUDMzMw9iE/cPoXrAUDMzMw9iE/cPoXrAUDMzMw9iE/cPoXrAUDMzMw9iE/cPoXrAUDMzMw978TRvpDC9T2PwvU978TRvpDC9T2PwvU978TRvpDC9T2PwvU978TRvpDC9T2PwvU9AAAAv5DC9T2PwvU9AAAAv5DC9T2PwvU9AAAAv5DC9T2PwvU9AAAAP5DC9T2PwvU9AAAAP5DC9T2PwvU9AAAAP5DC9T2PwvU9GBLSPpDC9T2PwvU9GBLSPpDC9T2PwvU9GBLSPpDC9T2PwvU9GBLSPpDC9T2PwvU9AAAAv7geBT7MzMw9AAAAv7geBT7MzMw9AAAAv7geBT7MzMw9XwLcvrgeBT7MzMw9XwLcvrgeBT7MzMw9XwLcvrgeBT7MzMw9XwLcvrgeBT7MzMw9AAAAP7geBT7MzMw9AAAAP7geBT7MzMw9AAAAP7geBT7MzMw9iE/cPrgeBT7MzMw9iE/cPrgeBT7MzMw9iE/cPrgeBT7MzMw9iE/cPrgeBT7MzMw9AAAAM87MDEDMzMw9AAAAM87MDEDMzMw9AAAAM87MDEDMzMw9AAAAs4XrAUDMzMw9AAAAs4XrAUDMzMw9AAAAs4XrAUDMzMw9AAAAv87MDEBedFGxAAAAv87MDEBedFGxAAAAPwAAAABedFGxAAAAPwAAAABedFGxiE/cPoXrAUBedFGxiE/cPoXrAUBedFGxAAAAv4XrAUBedFGxAAAAv5DC9T1edFGxAAAAv7geBT5edFGxAACAsoXrAUBedFGxAACAMs7MDEBedFGxiU/cPs7MDEBedFGx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AACAPwAAAAAAAACAAACAv6O8BrIAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AAAAAI8FBzIAAIA/AAAAAIn7rjIAAIA/AAAAAAAAAAD//38/AAAAADH5ZD8k+eQ+JfnkPjD5ZD8AAACAAACAPwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAAAD//38/AAAAADH5ZD8k+eQ+AAAAAAAAAAAAAIA/AAAAADH5ZD8m+eQ+AACAPwAAAAAAAACAAACAvwAAAACO44q0JvnkvjD5ZD92R0u0AAAAAAAAAAAAAIA/AAAAADH5ZD8m+eQ+AACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAADH5ZD8k+eQ+AAAAAAAAAAAAAIA/AAAAADH5ZD8k+eQ+JfnkPjD5ZD8AAACAAACAPwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAADH5ZD8m+eQ+AACAPwAAAAAAAACAAACAv6O8BrIAAACAJvnkvjD5ZD92R0u0AAAAAAAAAAAAAIA/AAAAADH5ZD8m+eQ+AAAAAAAAAAAAAIA/AAAAAIn7rjIAAIA/AAAAAAAAgD8AAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AAAAAIn7rjIAAIA/AACAvwAAAAAAAACAAAAAAAAAgD8AAACAAAAAAAAAgL8AAACAAACAPwAAAAAAAACAAACAv6O8BrIAAACAAAAAAAAAgL8AAACAAACAvwAAAAAAAACAAACAvwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAACAPwAAAAAAAACAAACAPwAAAAAAAACAAACAv6O8BrIAAACAJvnkvjD5ZD92R0u0JfnkPjD5ZD8AAACAAACAPwAAAAAAAACAJfnkPjD5ZD8AAACAAACAPwAAAAAAAACAAACAvwAAAACO44q0JvnkvjD5ZD92R0u0AAAAAP//f78AAACAAACAPwAAAAAAAACAAACAvwAAAAAAAACAAAAAAP//f78AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAACAPwAAAAAAAACAAACAvwAAAACO44q0AAAAAAAAgL8AAACAAAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAP//f78AAACAAAAAAAAAAAD//3+/AACAvwAAAAAAAACAAAAAAAAAAAD//3+/AAAAADD5ZD8l+eS+AAAAAP//f78AAACAAAAAAAAAAAD//3+/AACAPwAAAAAAAACAAACAvwAAAAAAAACAAAAAAP//f78AAACAAACAvwAAAAAAAACAAAAAAP//f78AAACAAACAPwAAAAAAAACAJfnkPjD5ZD8AAACAAACAPwAAAAAAAACAAAAAAAAAAAD//3+/AAAAADD5ZD8l+eS+JfnkPjD5ZD8AAACAAACAPwAAAAAAAACAJfnkPjD5ZD8AAACAAACAPwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAADD5ZD8l+eS+JfnkPjD5ZD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAPwAAAAAAAACAAAAAAAAAgL8AAACAAACAv/MayrLKa6i0AAAAAAAAgL8AAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAv/MayrLKa6i0AAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgD8AAACAAACAvwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAADD5ZD8l+eS+AACAvwAAAAAAAACAAAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAACAPwAAAAAAAACAAAAAAAAAAAAAAIC/AACAPwAAAAAAAACAAACAPwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAADH5ZD8o+eS+AACAPwAAAAAAAACAAACAPwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAADH5ZD8o+eS+AACAPwAAAAAAAACAAAAAAAAAgL8AAACAAACAPwAAAAAAAACAAACAvwAAAACO44q0AAAAAAAAgL8AAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAPwAAAAAAAACAAACAvwAAAACO44q0AAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAvwAAAACO44q0I/nkvjH5ZD9zR0u0AAAAAAAAAAAAAIC/AAAAADH5ZD8o+eS+AACAv/MayrLKa6i0I/nkvjH5ZD9zR0u0AAAAAAAAAAAAAIC/AAAAADH5ZD8o+eS+AACAvwAAAACO44q0I/nkvjH5ZD9zR0u0AACAv/MayrLKa6i0I/nkvjH5ZD9zR0u0AMB/PwDAfz8AwH8/AMB/P6CvADwKyG4/AMB/PwDAfz/guPU7gEJHPADAfz8AwH8/AMB/PwDAfz8gZSU9CshuPwDAfz8AwH8/HQDKPgDnTTwAwH8/AMB/PwDAfz8AwH8/AMB/PwDAfz8gZSU9CshuP8wnzz68324/SKcGPYBCRzwAwH8/AMB/P4hd9j68324/AMB/PwDAfz+grwA8CshuP7Rbuz6AQkc8tFu7PoBCRzwAwH8/AMB/PwDAfz8AwH8/4Lj1OxgFuT0dAMo+qNm5PR0Ayj6o2bk9AMB/PwDAfz+IahM97hFKP4ijBz0YBbk9FbPPPsBOuT3LrfY+wE65PTFb5D7uEUo/gYO7PhgFuT2Bg7s+GAW5PYGDuz4YBbk9BH8lPUC6Yj8EfyU9QLpiP8wnzz5T9mI/zCfPPlP2Yj8AwH8/AMB/P6CvADykumI/oK8APKS6Yj8EfyU9QLpiPwR/JT1AumI/AMB/PwDAfz+IXfY+U/ZiP4hd9j5T9mI/oK8APKS6Yj+grwA8pLpiPwDAfz8AwH8/4Lj1O9RaSD+grwA8Tl5hP8QYCD3UWkg/yIAlPU5eYT/MJ88+NHNhPxWzzz4UbEg/HQDKPmZ1SD/IgCU9Tl5hPwDAfz8AwH8/y632PhRsSD+IXfY+M3NhP0+Wuz7UWkg/oK8APE5eYT8QqUw+gEJHPBCpTD6AQkc8AMB/PwDAfz9bw3Y+7hFKP0ICTT4YBbk9QgJNPhgFuT0AwH8/AMB/PwDAfz8AwH8/AMB/PwDAfz8AwH8/AMB/P3Aw4z7ATrk9MVvkPur8VD8AwH8/AMB/PwDAfz8AwH8/AMB/PwDAfz9bw3Y+6vxUPwDAfz8AwH8/AMB/PwDAfz8AwH8/AMB/PwDAfz8AwH8/cDDjPhRsSD+qwuI+NHNhP6rC4j40c2E/cDDjPhRsSD+qwuI+U/ZiP6rC4j5T9mI/qsLiPlP2Yj+qwuI+U/ZiPwDAfz8AwH8/qsLiPrzfbj8AwH8/AMB/PwDAfz8AwH8/AMB/PwDAfz+IahM96vxUP3Aw4z7ATrk9qsLiPrzfbj8AwH8/AMB/PwDAfz8AwH8/AMB/PwDAfz8AwH8/AMB/PwDAfz8AwH8/AMB/PwDAfz8gZSU9CshuPwDAfz8AwH8/BH8lPUC6Yj8EfyU9QLpiPwDAfz8AwH8/oK8APArIbj+IXfY+vN9uPwDAfz8AwH8/AMB/PwDAfz8AwH8/AMB/PwDAfz8AwH8/qsLiPrzfbj+qwuI+U/ZiP6rC4j5T9mI/oK8APKS6Yj+grwA8pLpiP4hd9j5T9mI/iF32PlP2Yj+qwuI+NHNhP3Aw4z4UbEg/T5a7PtRaSD+grwA8Tl5hP4hd9j4zc2E/y632PhRsSD+IahM96vxUP3Aw4z7ATrk9iGoTPebnXz+Bg7s+GAW5Pcut9j7ATrk9W8N2Pur8VD9wMOM+wE65PTFb5D7q/FQ/W8N2PubnXz9/7Uw+GAW5PRWzzz7ATrk9MVvkPubnXz+Iowc9GAW5PRCpTD6AQkc8AMB/PwDAfz9IpwY9gEJHPADAfz8AwH8/tFu7PoBCRzwAwH8/AMB/PwDAfz8AwH8/AMB/PwDAfz8AwH8/AMB/PwDAfz8AwH8/AMB/PwDAfz8AwH8/AMB/PwDAfz8AwH8/HQDKPgDnTTwAwH8/AMB/PwDAfz8AwH8/HQDKPqjZuT0AwH8/AMB/Px0Ayj5mdUg/yIAlPU5eYT8AwH8/AMB/PwDAfz8AwH8/AMB/PwDAfz/guPU7gEJHPADAfz8AwH8/AMB/PwDAfz8AwH8/AMB/P+C49TsYBbk9AMB/PwDAfz8AwH8/AMB/P+C49TvUWkg/oK8APE5eYT8AwH8/AMB/PwDAfz8AwH8/oK8APKS6Yj+grwA8pLpiPwDAfz8AwH8/AMB/PwDAfz8AwH8/AMB/P6rC4j68324/AMB/PwDAfz8AwH8/AMB/P6CvADwKyG4/AMB/PwDAfz/MJ88+vN9uPwDAfz8AwH8/IGUlPQrIbj/MJ88+U/ZiP8wnzz5T9mI/BH8lPUC6Yj8EfyU9QLpiPxWzzz4UbEg/zCfPPjRzYT/EGAg91FpIP8iAJT1OXmE/qsLiPlP2Yj+qwuI+U/ZiP3Aw4z4UbEg/qsLiPjRzYT9gAGYACwBgAAsAGwAdAA8ABAAdAAQAGABkAEgABgBkAAYAEgBnAEcABQBnAAUAEABQAGcAEABQABAAQgBfAFwADABfAAwAAQBEAEAADwBEAA8AHQAaAAkAFAAaABQAIgBlAFEAFgBlABYACgBaAGMAEQBaABEALgA5ABkAIQA5ACEAPgBXAGIAHgBXAB4AOAA1AB0AGAA1ABgAMwBSAGAAGwBSABsAOwANACQAKQANACkAAgBdAFkAJwBdACcADgBJAFMALQBJAC0ACAAHACsAMAAHADAAEwBVAFsALwBVAC8APQAlADYANAAlADQAKgBYAFYANwBYADcAJgBKAFQAPABKADwAHwBTAFIAOwBTADsALQAsADoAPwAsAD8AMQAjABUAQQAjAEEARQBRAFAAQgBRAEIAFgAgAEMATwAgAE8ASwAoADIATgAoAE4ATQAAACgATQAAAE0AXgAyABcATAAyAEwATgBDABwAYQBDAGEATwAXAAMARgAXAEYATABqAGwAeABqAHgAbwBxAHMAawBxAGsAaABpAG4AdABpAHQAcgBwAHsAdwBwAHcAdQB6AIAAfAB6AHwAdgCBAIYAgwCBAIMAfQCHAIIAhACHAIQAigCJAIcAigCJAIoAjQCLAI8AkQCLAJEAjgCFAJMAjwCFAI8AiwCSAJAAlQCSAJUAlgCQAJQAlwCQAJcAlQCUAJ0AmQCUAJkAlwCaAJgAmwCaAJsAngCfAJwAkwCfAJMAhQChAJ8AhQChAIUAfgCjAJoAngCjAJ4AoABtAKIAfwBtAH8AeQBzAKMAoABzAKAAawCnAJIAlgCnAJYApACrAKgApQCrAKUAqQCvAKsAqQCvAKkArACzAK8ArACzAKwAsAC6ALMAsAC6ALAAtQC8ALgAtAC8ALQAtwC9AMAAsQC9ALEAuQC+ALsAtgC+ALYAxgDDAL8AxwDDAMcAyQDBAMUArgDBAK4AsgCMAMIAyACMAMgAiADEAI4AqgDEAKoArQCOAJEApgCOAKYAqgCQrjM/Bm17P9xMSj2QrjM/fUmCP9xMSj2QrjM/Bm17P8SloDyQrjM/fUmCP8SloDyC1Dw/Bm17P9xMSj2C1Dw/fUmCP9xMSj2C1Dw/Bm17P8SloDyC1Dw/fUmCP8aloDzCAzM/OMJ6P2BB0jz1rTI/bGx6P99PDT31rTI/bGx6P99PDT3CAzM/OMJ6Pw1/MT3CAzM/Q0l9P0EyUz31rTI/AACAPzmqVz3CAzM/XluBP0EyUz3CAzM/5J6CPw1/MT31rTI/ysmCP99PDT31rTI/ysmCP99PDT3CAzM/5J6CP2BB0jzCAzM/XluBP/rajjz1rTI/AACAPwzrhTzCAzM/Q0l9P/rajjxG+Do/OMJ6P/rajjyJQTg/bGx6PwzrhTzMijU/OMJ6P/rajjzMijU/5J6CP/rajjyJQTg/ysmCPwzrhTxG+Do/5J6CP/rajjxQfz0/XluBP/rajjwd1T0/AACAPwrrhTxQfz0/Q0l9P/rajjxQfz0/OMJ6Pw1/MT0d1T0/bGx6P99PDT0d1T0/bGx6P99PDT1Qfz0/OMJ6P2BB0jxQfz0/5J6CP2BB0jwd1T0/ysmCP99PDT0d1T0/ysmCP99PDT1Qfz0/5J6CPw1/MT1Qfz0/XluBP0EyUz0d1T0/AACAPzmqVz1Qfz0/Q0l9P0EyUz3MijU/OMJ6P0EyUz2JQTg/bGx6PziqVz1G+Do/OMJ6P0EyUz1G+Do/5J6CP0EyUz2JQTg/ysmCPziqVz3MijU/5J6CP0EyUz1HljE/lBt9Py/gMz2IGjE/AACAP4HyNT1HljE/NnKBPy/gMz2IGjE/zvN8P99PDT2IGjE/zvN8P99PDT10kzA/AACAP99PDT10kzA/AACAP99PDT2IGjE/GYaBP99PDT2IGjE/GYaBP99PDT1HljE/lBt9Px5/zTyIGjE/AACAP3hayTxHljE/NnKBPx5/zTwdXTU/lBt9P9CRUTxWNTU/AACAPwfKNzwdXTU/NnKBP8+RUTyJQTg/zvN8PwnKNzyJQTg/AACAP+SlGzyJQTg/GYaBPwnKNzz1JTs/lBt9P8+RUTy8TTs/AACAPwfKNzz1JTs/NnKBP9CRUTzL7D4/lBt9Px5/zTyKaD8/AACAP3hayTzL7D4/NnKBPx5/zTyKaD8/zvN8P99PDT2KaD8/zvN8P99PDT2e7z8/AACAP99PDT2e7z8/AACAP99PDT2KaD8/GYaBP99PDT2KaD8/GYaBP99PDT3L7D4/lBt9Py/gMz2KaD8/AACAP4HyNT3L7D4/NnKBPy/gMz31JTs/lBt9P0o7Zj28TTs/AACAPzutbD31JTs/NnKBP0o7Zj2JQTg/zvN8PzutbD2JQTg/AACAP0W2cz2JQTg/GYaBPzutbD0dXTU/lBt9P0o7Zj1WNTU/AACAPzutbD0dXTU/NnKBP0o7Zj0dXTU/vlR5Px5/zTyJQTg/ANl4P3hayTz1JTs/vlR5Px5/zTxWNTU/ANl4P99PDT1WNTU/ANl4P99PDT2JQTg/7FF4P99PDT2JQTg/7FF4P99PDT28TTs/ANl4P99PDT28TTs/ANl4P99PDT0dXTU/vlR5Py/gMz2JQTg/ANl4P4HyNT31JTs/vlR5Py/gMz31JTs/oVWDPx5/zTyJQTg/gJODP3hayTwdXTU/oVWDPx5/zTy8TTs/gJODP99PDT28TTs/gJODP99PDT2JQTg/CteDP99PDT2JQTg/CteDP99PDT1WNTU/gJODP99PDT1WNTU/gJODP99PDT31JTs/oVWDPy/gMz2JQTg/gJODP4HyNT0dXTU/oVWDPy/gMz2WGDs/h2uBP710kzuJQTg/CteDP1E5tLuJQTg/CteDP710kzvDrz0/HbeCP1k5tLvDrz0/HbeCP710kzud7z8/AACAP1k5tLud7z8/AACAP710kzvDrz0/xpF6P1k5tLvDrz0/xpF6P710kzuJQTg/7FF4P1k5tLuJQTg/7FF4P7V0kztP0zI/xpF6P1k5tLtP0zI/xpF6P710kzt1kzA/AACAP1k5tLt1kzA/AACAP710kztO0zI/HbeCP1k5tLtO0zI/HbeCP710kzvvej0/s5yCP710kzuJQTg/r7GDP710kzvnpD8/AACAP710kzvvej0/msZ6P710kzuJQTg/opx4P7V0kzsjCDM/msZ6P710kzsr3jA/AACAP710kzsjCDM/s5yCP710kzvw5Do/s1GBP710kzuJQTg/lN2BP710kzuy/Ds/AACAP710kzvw5Do/mlx9P710kzuJQTg/10R8P710kzsinjU/mlx9P710kztghjQ/AACAP710kzsinjU/s1GBP710kzuJQTg/kRaBP55NgzyJQTg/GgKCP710kzt9yzk/+sSAP55Ngzyrbjo/AACAP55Ngzx9yzk/DHZ+P55NgzyJQTg/3tJ9P55NgzyVtzY/DHZ+P55NgzxnFDY/AACAP55NgzyVtzY/+sSAP55Ngzy+RTw/AACAP710kzuWGDs/8ih9P710kzuJQTg/y/t7P710kzt8ajU/8ih9P710kztUPTQ/AACAP710kzt8ajU/h2uBP710kzuJQTg/F1l8P6espjugmjQ/AACAP6espjt0rDU/62p9P6espjt0rDU/ikqBP6espjue1jo/ikqBP6espjuJQTg/dNOBP6espjue1jo/62p9P6espjty6Ds/AACAP6espjuJQTg/CteDPwIhcjvDrz0/HbeCPwIhcjud7z8/AACAPwIhcjvDrz0/xpF6PwIhcjuJQTg/7FF4PwIhcjtP0zI/xpF6PwIhcjt1kzA/AACAPwIhcjtO0zI/HbeCPwIhcjuC1Dw/Bm17P4LUrL2C1Dw/fUmCP4LUrL2C1Dw/Bm17PwyvX72C1Dw/fUmCPwyvX72QrjM/Bm17P4LUrL2QrjM/fUmCP4LUrL2QrjM/Bm17PwqvX72QrjM/fUmCPwuvX71Qfz0/OMJ6P9l8eL0c1T0/bGx6PwRWjr0c1T0/bGx6PwRWjr1Qfz0/OMJ6P5ttoL1Qfz0/Q0l9PzVHsb0c1T0/AACAPzKDs71Qfz0/XluBPzVHsb1Qfz0/5J6CP5ttoL0c1T0/ysmCPwRWjr0c1T0/ysmCPwRWjr1Qfz0/5J6CP9p8eL1Qfz0/XluBP6bJVr0d1T0/AACAP69RUr1Qfz0/Q0l9P6bJVr3MijU/OMJ6P6bJVr2JQTg/bGx6P65RUr1G+Do/OMJ6P6bJVr1G+Do/5J6CP6bJVr2JQTg/ysmCP65RUr3MijU/5J6CP6bJVr3CAzM/XluBP6bJVr31rTI/AACAP65RUr3CAzM/Q0l9P6bJVr3CAzM/OMJ6P5ttoL31rTI/bGx6PwRWjr31rTI/bGx6PwRWjr3CAzM/OMJ6P9h8eL3CAzM/5J6CP9h8eL31rTI/ysmCPwRWjr31rTI/ysmCPwRWjr3CAzM/5J6CP5ttoL3CAzM/XluBPzVHsb31rTI/AACAPzCDs73CAzM/Q0l9PzVHsb1G+Do/OMJ6PzVHsb2JQTg/bGx6PzCDs73MijU/OMJ6PzVHsb3MijU/5J6CPzVHsb2JQTg/ysmCPzCDs71G+Do/5J6CPzVHsb3L7D4/lBt9Pyyeob2KaD8/AACAP1anor3L7D4/NnKBPyyeob2KaD8/zvN8PwRWjr2KaD8/zvN8PwRWjr2d7z8/AACAPwRWjr2d7z8/AACAPwRWjr2KaD8/GYaBPwRWjr2KaD8/GYaBPwRWjr3L7D4/lBt9P7gbdr2KaD8/AACAP2YJdL3L7D4/NnKBP7gbdr31JTs/lBt9P53AQ728TTs/AACAP6tOPb31JTs/NnKBP53AQ72JQTg/zvN8P6tOPb2JQTg/AACAP6JFNr2JQTg/GYaBP6tOPb0dXTU/lBt9P5zAQ71WNTU/AACAP6pOPb0dXTU/NnKBP5zAQ71HljE/lBt9P7cbdr2IGjE/AACAP2QJdL1HljE/NnKBP7cbdr2IGjE/zvN8PwRWjr2IGjE/zvN8PwRWjr10kzA/AACAPwRWjr10kzA/AACAPwRWjr2IGjE/GYaBPwRWjr2IGjE/GYaBPwRWjr1HljE/lBt9Pyyeob2IGjE/AACAP1Snor1HljE/NnKBPyyeob0cXTU/lBt9P7rLur1WNTU/AACAP7IEvr0cXTU/NnKBP7rLur2JQTg/zvN8P7IEvr2JQTg/AACAPzeJwb2JQTg/GYaBP7IEvr31JTs/lBt9P7rLur28TTs/AACAP7IEvr31JTs/NnKBP7rLur31JTs/vlR5P7gbdr2JQTg/ANl4P2UJdL0dXTU/vlR5P7cbdr28TTs/ANl4PwRWjr28TTs/ANl4PwRWjr2JQTg/7FF4PwRWjr2JQTg/7FF4PwRWjr1WNTU/ANl4PwRWjr1WNTU/ANl4PwRWjr31JTs/vlR5Pyyeob2JQTg/ANl4P1Wnor0cXTU/vlR5Pyyeob0dXTU/oVWDP7cbdr2JQTg/gJODP2UJdL31JTs/oVWDP7gbdr1WNTU/gJODPwRWjr1WNTU/gJODPwRWjr2JQTg/CteDPwRWjr2JQTg/CteDPwRWjr28TTs/gJODPwRWjr28TTs/gJODPwRWjr0dXTU/oVWDPyyeob2JQTg/gJODP1Wnor31JTs/oVWDPyyeob18ajU/h2uBP8DKIb2JQTg/CteDP/2p8byJQTg/CteDP8DKIb1P0zI/HbeCP/qp8bxP0zI/HbeCP8DKIb11kzA/AACAP/qp8bx1kzA/AACAP8DKIb1P0zI/xpF6P/qp8bxP0zI/xpF6P8DKIb2JQTg/7FF4P/up8byJQTg/7FF4P7/KIb3Drz0/xpF6P/yp8bzDrz0/xpF6P8HKIb2d7z8/AACAP/2p8byd7z8/AACAP8HKIb3Erz0/HbeCP/yp8bzErz0/HbeCP8HKIb0jCDM/s5yCP8DKIb2JQTg/r7GDP8DKIb0r3jA/AACAP8DKIb0jCDM/msZ6P8DKIb2JQTg/opx4P7/KIb3vej0/msZ6P8HKIb3npD8/AACAP8HKIb3vej0/s5yCP8HKIb0injU/s1GBP8DKIb2JQTg/lN2BP8DKIb1ghjQ/AACAP8DKIb0injU/mlx9P8DKIb2JQTg/10R8P8DKIb3w5Do/mlx9P8HKIb2y/Ds/AACAP8HKIb3w5Do/s1GBP8HKIb2JQTg/kRaBP/gCUb2JQTg/GgKCP8DKIb2VtzY/+sSAP/gCUb1nFDY/AACAP/gCUb2VtzY/DHZ+P/gCUb2JQTg/3tJ9P/gCUb19yzk/DHZ+P/gCUb2rbjo/AACAP/gCUb19yzk/+sSAP/gCUb1UPTQ/AACAP8DKIb18ajU/8ih9P8DKIb2JQTg/y/t7P8DKIb2WGDs/8ih9P8HKIb2+RTw/AACAP8HKIb2WGDs/h2uBP8HKIb2JQTg/F1l8P74xJL1y6Ds/AACAP74xJL2e1jo/62p9P74xJL2e1jo/ikqBP74xJL10rDU/ikqBP70xJL2JQTg/dNOBP74xJL10rDU/62p9P70xJL2gmjQ/AACAP70xJL2JQTg/CteDPzl+Hr1P0zI/HbeCPzh+Hr11kzA/AACAPzh+Hr1P0zI/xpF6Pzh+Hr2JQTg/7FF4Pzl+Hr3Drz0/xpF6Pzl+Hr2d7z8/AACAPzp+Hr3Erz0/HbeCPzl+Hr0AAICzABCrOSCN87kAAICzABCrOSCN87kAAICzABCrOSCN87kAAICzABCrOSCN87kAAICzWAUAQCCN87kAAICzWAUAQCCN87kAAICzWAUAQCCN87kAAICzWAUAQCCN87kAAICzABCrObAqDb0AAICzABCrObAqDb0AAICzABCrObAqDb0AAICzABCrObAqDb0AAICzWAUAQLAqDb0AAICzWAUAQLAqDb0AAICzWAUAQLAqDb0AAICzWAUAQLAqDb3MzEw/ABCrOSCN87nMzEw/ABCrOSCN87nMzEw/ABCrOSCN87nMzEw/ABCrOSCN87nMzEw/WAUAQCCN87nMzEw/WAUAQCCN87nMzEw/WAUAQCCN87nMzEw/WAUAQCCN87nMzEw/ABCrObAqDb3MzEw/ABCrObAqDb3MzEw/ABCrObAqDb3MzEw/ABCrObAqDb3MzEw/WAUAQLAqDb3MzEw/WAUAQLAqDb3MzEw/WAUAQLAqDb3MzEw/WAUAQLAqDb0AAICzsQqAPyCN87kAAICzsQqAPyCN87kAAICzsQqAPyCN87kAAICzsQqAP7AqDb0AAICzsQqAP7AqDb0AAICzsQqAP7AqDb3MzEw/sQqAP7AqDb3MzEw/sQqAP7AqDb3MzEw/sQqAP7AqDb3MzEw/sQqAPyCN87nMzEw/sQqAPyCN87nMzEw/sQqAPyCN87kgX449pPCIP7AqDb0gX449pPCIP7AqDb0gX449pPCIP7AqDb0gX449viT3P7AqDb0gX449viT3P7AqDb0gX449viT3P7AqDb0gX449viT3P7AqDb3nADs/viT3P7AqDb3nADs/viT3P7AqDb3nADs/viT3P7AqDb3nADs/viT3P7AqDb3nADs/pPCIP7AqDb3nADs/pPCIP7AqDb3nADs/pPCIP7AqDb3nADs/pPCIPyCN87nnADs/pPCIPyCN87nnADs/pPCIPyCN87nnADs/viT3PyCN87nnADs/viT3PyCN87nnADs/viT3PyCN87nnADs/viT3PyCN87kgX449viT3PyCN87kgX449viT3PyCN87kgX449viT3PyCN87kgX449viT3PyCN87kgX449pPCIPyCN87kgX449pPCIPyCN87kgX449pPCIPyCN87nnADs/OAqPPSCN87nnADs/OAqPPSCN87nnADs/OAqPPSCN87nnADs/OAqPPSCN87nnADs/fUluPyCN87nnADs/fUluPyCN87nnADs/fUluPyCN87nnADs/fUluPyCN87kgX449fUluPyCN87kgX449fUluPyCN87kgX449fUluPyCN87kgX449fUluPyCN87kgX449OAqPPSCN87kgX449OAqPPSCN87kgX449OAqPPSCN87kgX449OAqPPSCN87kgX449OAqPPbAqDb0gX449OAqPPbAqDb0gX449OAqPPbAqDb0gX449OAqPPbAqDb0gX449fUluP7AqDb0gX449fUluP7AqDb0gX449fUluP7AqDb0gX449fUluP7AqDb3nADs/fUluP7AqDb3nADs/fUluP7AqDb3nADs/fUluP7AqDb3nADs/fUluP7AqDb3nADs/OAqPPbAqDb3nADs/OAqPPbAqDb3nADs/OAqPPbAqDb3nADs/OAqPPbAqDb3U96I9LjqKP7AqDb3U96I9LjqKP7AqDb3U96I9LjqKP7AqDb3U96I9M9v1P7AqDb3U96I9M9v1P7AqDb3U96I9M9v1P7AqDb3RbTg/M9v1P7AqDb3RbTg/M9v1P7AqDb3RbTg/M9v1P7AqDb3RbTg/LjqKP7AqDb3RbTg/LjqKP7AqDb3RbTg/LjqKP7AqDb3RbTg/LjqKPyCN87nRbTg/LjqKPyCN87nRbTg/LjqKPyCN87nRbTg/M9v1PyCN87nRbTg/M9v1PyCN87nRbTg/M9v1PyCN87nU96I9M9v1PyCN87nU96I9M9v1PyCN87nU96I9M9v1PyCN87nU96I9LjqKPyCN87nU96I9LjqKPyCN87nU96I9LjqKPyCN87nRbTg/7KKjPSCN87nRbTg/7KKjPSCN87nRbTg/7KKjPSCN87nRbTg/ZrZrPyCN87nRbTg/ZrZrPyCN87nRbTg/ZrZrPyCN87nU96I9ZrZrPyCN87nU96I9ZrZrPyCN87nU96I9ZrZrPyCN87nU96I97KKjPSCN87nU96I97KKjPSCN87nU96I97KKjPSCN87nU96I97KKjPbAqDb3U96I97KKjPbAqDb3U96I97KKjPbAqDb3U96I9ZrZrP7AqDb3U96I9ZrZrP7AqDb3U96I9ZrZrP7AqDb3RbTg/ZrZrP7AqDb3RbTg/ZrZrP7AqDb3RbTg/ZrZrP7AqDb3RbTg/7KKjPbAqDb3RbTg/7KKjPbAqDb3RbTg/7KKjPbAqDb0gX449viT3P5az1LwgX449viT3P5az1LwgX449viT3P5az1LwgX449pPCIP5az1LwgX449pPCIP5az1LwgX449pPCIP5az1LznADs/pPCIP5az1LznADs/pPCIP5az1LznADs/pPCIP5az1LznADs/viT3P5az1LznADs/viT3P5az1LznADs/viT3P5az1LznADs/viT3PwDgErznADs/viT3PwDgErznADs/viT3PwDgErznADs/viT3PwDgErznADs/pPCIPwDgErznADs/pPCIPwDgErznADs/pPCIPwDgErwgX449pPCIPwDgErwgX449pPCIPwDgErwgX449pPCIPwDgErwgX449viT3PwDgErwgX449viT3PwDgErwgX449viT3PwDgErwgX449viT3PwDgErznADs/fUluPwDgErznADs/fUluPwDgErznADs/fUluPwDgErznADs/fUluPwDgErznADs/OAqPPQDgErznADs/OAqPPQDgErznADs/OAqPPQDgErwgX449OAqPPQDgErwgX449OAqPPQDgErwgX449OAqPPQDgErwgX449fUluPwDgErwgX449fUluPwDgErwgX449fUluPwDgErwgX449fUluPwDgErwgX449fUluP5az1LwgX449fUluP5az1LwgX449fUluP5az1LwgX449OAqPPZaz1LwgX449OAqPPZaz1LwgX449OAqPPZaz1LznADs/OAqPPZaz1LznADs/OAqPPZaz1LznADs/OAqPPZaz1LznADs/fUluP5az1LznADs/fUluP5az1LznADs/fUluP5az1LzU96I9M9v1P5az1LzU96I9M9v1P5az1LzU96I9M9v1P5az1LzU96I9LjqKP5az1LzU96I9LjqKP5az1LzU96I9LjqKP5az1LzRbTg/LjqKP5az1LzRbTg/LjqKP5az1LzRbTg/LjqKP5az1LzRbTg/M9v1P5az1LzRbTg/M9v1P5az1LzRbTg/M9v1P5az1LzRbTg/M9v1PwDgErzRbTg/M9v1PwDgErzRbTg/M9v1PwDgErzRbTg/M9v1PwDgErzRbTg/LjqKPwDgErzRbTg/LjqKPwDgErzRbTg/LjqKPwDgErzU96I9LjqKPwDgErzU96I9LjqKPwDgErzU96I9LjqKPwDgErzU96I9M9v1PwDgErzU96I9M9v1PwDgErzU96I9M9v1PwDgErzU96I9M9v1PwDgErzRbTg/ZrZrPwDgErzRbTg/ZrZrPwDgErzRbTg/ZrZrPwDgErzRbTg/ZrZrPwDgErzRbTg/8KKjPQDgErzRbTg/8KKjPQDgErzRbTg/8KKjPQDgErzU96I98KKjPQDgErzU96I98KKjPQDgErzU96I98KKjPQDgErzU96I9ZrZrPwDgErzU96I9ZrZrPwDgErzU96I9ZrZrPwDgErzU96I9ZrZrPwDgErzU96I9ZrZrP5az1LzU96I9ZrZrP5az1LzU96I9ZrZrP5az1LzU96I98KKjPZaz1LzU96I9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AAAAAAAAgD8AAAAAAACAPwAAAIAAAIC/AAAAAAAAAIAAAAAAAACAvwAAAIAAAAAAAAAAAAAAgL8AAAAAAAAAAP//f78AAIC/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAAAAAAAP//f78AAAAAAACAPwAAAIAAAAAAAACAvwAAAIAAAAAAAAAAAP//fz8AAAAAAAAAAAAAgD8AAIA/AAAAAAAAAIAAAAAAAAAAAP//fz8AAAAAAAAAAAAAgD8AAAAAAACAPwAAAIAAAIA/AAAAAAAAAIAAAAAAAACAvwAAAIAAAAAAAAAAAAAAgL8AAAAAAAAAAP//f78AAIA/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAAAAAAAP//f78AAAAAAACAPwAAAIAAAIA/AAAAAAAAAIAAAIC/AAAAAAAAAIAAAAAAAAAAAP//fz8AAAAAAAAAAAAAgD8AAIC/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAAAAAAAP//f78AAAAAAAAAAAAAgL8AAAAAAAAAAP//f78AAIA/AAAAAAAAAIAAAAAAAAAAAP//fz8AAAAAAAAAAAAAgD8AAIA/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAAAACAPwAAAIAAAIA/AAAAAAAAAIAAAAAAAACAvwAAAIAAAAAAAAAAAAAAgL8AAAAAAAAAAP//f78AAIA/AAAAAAAAAIAAAIC/AAAAAAAAAIAAAAAAAACAvwAAAIAAAAAAAAAAAAAAgL8AAAAAAAAAAP//f78AAIC/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAAAACAPwAAAID//3+/AAAAAAAAAIAAAAAAAAAAAAAAgD8AAAAAAACAPwAAAID//3+/AAAAAAAAAIAAAAAAAACAvwAAAIAAAAAAAAAAAP//fz8AAAAAAAAAAAAAgD8AAAAAAACAvwAAAIAAAAAAAAAAAP//fz8AAAAAAAAAAAAAgD///38/AAAAAAAAAIAAAAAAAAAAAAAAgD8AAAAAAACAPwAAAID//38/AAAAAAAAAIAAAIC/AAAAAAAAAIAAAAAAAAAAAP//fz8AAAAAAAAAAAAAgD8AAAAAAACAPwAAAIAAAIC/AAAAAAAAAIAAAAAAAACAvwAAAIAAAAAAAAAAAP//fz8AAAAAAAAAAAAAgD8AAAAAAACAvwAAAIAAAAAAAAAAAP//fz8AAAAAAAAAAAAAgD8AAIA/AAAAAAAAAIAAAAAAAAAAAP//fz8AAAAAAAAAAAAAgD8AAAAAAACAPwAAAIAAAIA/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAAAAAAAP//f78AAAAAAACAPwAAAIAAAIA/AAAAAAAAAIAAAAAAAACAvwAAAIAAAAAAAAAAAAAAgL8AAAAAAAAAAP//f78AAIA/AAAAAAAAAIAAAIC/AAAAAAAAAIAAAAAAAACAvwAAAIAAAAAAAAAAAAAAgL8AAAAAAAAAAP//f78AAIC/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAAAAAAAP//f78AAAAAAACAPwAAAIAAAIC/AAAAAAAAAIAAAAAAAACAvwAAAIAAAAAAAAAAAAAAgL8AAIC/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAAAACAPwAAAIAAAAAAAAAAAAAAgL8AAAAAAACAPwAAAIAAAIA/AAAAAAAAAIAAAAAAAACAvwAAAIAAAAAAAAAAAAAAgL8AAIA/AAAAAAAAAIAAAAAAAACAvwAAAIAAAAAAAAAAAAAAgD///38/AAAAAAAAAIAAAAAAAAAAAAAAgD8AAAAAAACAPwAAAID//38/AAAAAAAAAID//3+/AAAAAAAAAIAAAAAAAAAAAAAAgD8AAAAAAACAPwAAAID//3+/AAAAAAAAAIAAAAAAAACAvwAAAIAAAAAAAAAAAAAAgD8AAAAAAACAv0lLa7YAAAAAAAAAAAAAgD8AAIA/AAAAAAAAAIAAAAAAAAAAAAAAgD8AAAAAAACAPwAAAIAAAIA/AAAAAAAAAIAAAIC/AAAAAAAAAIAAAAAAAAAAAAAAgD8AAAAAAACAPwAAAIAAAIC/AAAAAAAAAIAAAAAAAACAv0lLa7YAAAAAAAAAAAAAgD8AAIC/AAAAAAAAAIAAAAAAAACAv1BLazYAAAAAAAAAAAAAgL8AAIC/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAAAACAPwAAAIAAAAAAAAAAAAAAgL8AAAAAAACAPwAAAIAAAIA/AAAAAAAAAIAAAAAAAACAv1BLazYAAAAAAAAAAAAAgL8AAIA/AAAAAAAAAIAAAAAAAACAvwAAAIAAAAAAAAAAAAAAgL8AAIA/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAAAACAPwAAAIAAAIA/AAAAAAAAAIAAAIC/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAAAACAPwAAAIAAAIC/AAAAAAAAAIAAAAAAAACAvwAAAIAAAAAAAAAAAAAAgL///3+/AAAAAAAAAIAAAAAAAACAvwAAAIAAAAAAAAAAAAAAgD8AAAAAUsOYMwAAgD///3+/AAAAAAAAAIAAAAAAAAAAAAAAgD8AAAAAAACAPwAAAIAAAAAAAAAAAAAAgD8AAAAAAACAPwAAAID//38/AAAAAAAAAIAAAAAAAACAvwAAAIAAAAAAAAAAAAAAgD8AAAAAUsOYMwAAgD///38/AAAAAAAAAIAAAIC/AAAAAAAAAIAAAAAAAACAvwAAAIAAAAAAAAAAAAAAgD8AAAAAFsOYMwAAgD8AAIC/AAAAAAAAAIAAAAAAAAAAAAAAgD8AAAAAAACAPwAAAIAAAAAAAAAAAAAAgD8AAAAAAACAPwAAAIAAAIA/AAAAAAAAAIAAAAAAAACAvwAAAIAAAAAAAAAAAAAAgD8AAAAAFsOYMwAAgD8AAIA/AAAAAAAAAIAAAAAAAACAvwAAAIAAAAAAAAAAAAAAgL8AAIA/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAAAACAPwAAAIAAAIA/AAAAAAAAAIAAAIC/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAAAACAPwAAAIAAAIC/AAAAAAAAAIAAAAAAAACAvwAAAIAAAAAAAAAAAAAAgL8AAIC/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAAAACAPwAAAIAAAIC/AAAAAAAAAIAAAAAAAACAvwAAAIAAAAAAAAAAAAAAgL8AAAAAAACAvwAAAIAAAAAAAAAAAAAAgL8AAIA/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAAAACAPwAAAIAAAIA/AAAAAAAAAIAAAAAAAAAAAAAAgD8AAAAAUsOYMwAAgD8AAAAAAACAPwAAAID//38/AAAAAAAAAIAAAAAAAACAvwAAAIAAAAAAAAAAAAAAgD///38/AAAAAAAAAID//3+/AAAAAAAAAIAAAAAAAACAvwAAAIAAAAAAAAAAAAAAgD///3+/AAAAAAAAAIAAAAAAAAAAAAAAgD8AAAAAUsOYMwAAgD8AAAAAAACAPwAAAIAAAAAAAAAAAAAAgD8AAAAA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OAARABIAOAASADsAOwASAAMAOwADABMAOgA7ABMAOgATABQAOQA6ABQAOQAUABUACAA5ABUACAAVAAIACgA0ADkACgA5AAgACwAwADMACwAzAAkAPAA9AEAAPABAAD8APQA+AEEAPQBBAEAAPwBAAEMAPwBDAEIAQABBAEQAQABEAEMAAgAVADwAAgA8ABgAFQAUAD0AFQA9ADwAFAATAD4AFAA+AD0AEwADABkAEwAZAD4APgAZABoAPgAaAEEAQQAaABsAQQAbAEQARAAbAAcARAAHABwAQwBEABwAQwAcAB0AQgBDAB0AQgAdAB4AFgBCAB4AFgAeAAYAFwA/AEIAFwBCABYAGAA8AD8AGAA/ABcARQBGAEsARQBLAEkARgBHAE0ARgBNAEsASABKAE8ASABPAE4ASgBMAFAASgBQAE8ABgAeAEUABgBFACIAHgAdAEYAHgBGAEUAHQAcAEcAHQBHAEYAHAAHACMAHAAjAEcARwAjACUARwAlAE0ATAAkACYATAAmAFAAUAAmAAUAUAAFACcATwBQACcATwAnACgATgBPACgATgAoACkAHwBOACkAHwApAAQAIABIAE4AIABOAB8AIgBFAEkAIgBJACEAUQBSAFUAUQBVAFQAUgBTAFYAUgBWAFUAVABVAFgAVABYAFcAVQBWAFkAVQBZAFgABAApAFEABABRACwAKQAoAFIAKQBSAFEAKAAnAFMAKABTAFIAJwAFAC0AJwAtAFMAUwAtAC4AUwAuAFYAVgAuAC8AVgAvAFkAWQAvAAEAWQABAA4AWABZAA4AWAAOAA0AVwBYAA0AVwANAAwAKgBXAAwAKgAMAAAAKwBUAFcAKwBXACoALABRAFQALABUACsAWgBbAGAAWgBgAF4AWwBcAGIAWwBiAGAAXQBfAGQAXQBkAGMAXwBhAGUAXwBlAGQAAgAYAFoAAgBaAAgAGAAXAFsAGABbAFoAFwAWAFwAFwBcAFsAFgAGACIAFgAiAFwAXAAiACEAXAAhAGIAYQAgAB8AYQAfAGUAZQAfAAQAZQAEACwAZABlACwAZAAsACsAYwBkACsAYwArACoACwBjACoACwAqAAAACQBdAGMACQBjAAsACABaAF4ACABeAAoAZgBnAGwAZgBsAGoAZwBoAG4AZwBuAGwAaQBrAHAAaQBwAG8AawBtAHEAawBxAHAABwAbAGYABwBmACMAGwAaAGcAGwBnAGYAGgAZAGgAGgBoAGcAGQADABIAGQASAGgAaAASABEAaAARAG4AbQAQAA8AbQAPAHEAcQAPAAEAcQABAC8AcABxAC8AcAAvAC4AbwBwAC4AbwAuAC0AJgBvAC0AJgAtAAUAJABpAG8AJABvACYAIwBmAGoAIwBqACUApACiAJgApACYAJkAqgB0AHYAqgB2AKsApQCjAJoApQCaAJsAqwB2AHgAqwB4AKwAqQCmAJUAqQCVAJYArAB4AHoArAB6AK0AogCoAJcAogCXAJgArQB6AHwArQB8AK4AowCkAJkAowCZAJoArgB8AH4ArgB+AK8ApwClAJsApwCbAJMArwB+AIAArwCAALAApgCnAJMApgCTAJUAsACAAIIAsACCALEAqACpAJYAqACWAJcAsQCCAHQAsQB0AKoAhACDAHYAhAB2AHQAgwCFAHgAgwB4AHYAhQCGAHoAhQB6AHgAhgCHAHwAhgB8AHoAhwCIAH4AhwB+AHwAiACJAIAAiACAAH4AiQCKAIIAiQCCAIAAigCEAHQAigB0AIIAlAByAIMAlACDAIQAcgCcAIUAcgCFAIMAnACdAIYAnACGAIUAnQCeAIcAnQCHAIYAngCfAIgAngCIAIcAnwCgAIkAnwCJAIgAoAChAIoAoACKAIkAoQCUAIQAoQCEAIoAjACLAHIAjAByAJQAiwCNAJwAiwCcAHIAjQCOAJ0AjQCdAJwAjgCPAJ4AjgCeAJ0AjwCQAJ8AjwCfAJ4AkACRAKAAkACgAJ8AkQCSAKEAkQChAKAAkgCMAJQAkgCUAKEAjgCNAKkAjgCpAKgAiwCMAKcAiwCnAKYAjACSAKUAjAClAKcAkQCQAKQAkQCkAKMAjwCOAKgAjwCoAKIAjQCLAKYAjQCmAKkAkgCRAKMAkgCjAKUAkACPAKIAkACiAKQAgQCxAKoAgQCqAHMAfwCwALEAfwCxAIEAfQCvALAAfQCwAH8AewCuAK8AewCvAH0AeQCtAK4AeQCuAHsAdwCsAK0AdwCtAHkAdQCrAKwAdQCsAHcAcwCqAKsAcwCrAHUA4gDjAOcA4gDnAOUA4wDkAOkA4wDpAOcA5gDoAOwA5gDsAOsA6ADqAO0A6ADtAOwAsgC+AOIAsgDiAL0AvgC/AOMAvgDjAOIAvwDAAOQAvwDkAOMAwACzAMEAwADBAOQA5ADBAMIA5ADCAOkA6gDDAMQA6gDEAO0A7QDEALUA7QC1AMUA7ADtAMUA7ADFAMYA6wDsAMYA6wDGAMcAugDrAMcAugDHALQAvADmAOsAvADrALoAvQDiAOUAvQDlALsA7gDvAPIA7gDyAPEA7wDwAPMA7wDzAPIA8QDyAPUA8QD1APQA8gDzAPYA8gD2APUAtADHAO4AtADuAMoAxwDGAO8AxwDvAO4AxgDFAPAAxgDwAO8AxQC1AMsAxQDLAPAA8ADLAMwA8ADMAPMA8wDMAM0A8wDNAPYA9gDNALkA9gC5AM4A9QD2AM4A9QDOAM8A9AD1AM8A9ADPANAAyAD0ANAAyADQALgAyQDxAPQAyQD0AMgAygDuAPEAygDxAMkA9wD4AP0A9wD9APsA+AD5AP8A+AD/AP0A+gD8AAEB+gABAQAB/AD+AAIB/AACAQEBuADQAPcAuAD3ANQA0ADPAPgA0AD4APcAzwDOAPkAzwD5APgAzgC5ANUAzgDVAPkA+QDVANcA+QDXAP8A/gDWANgA/gDYAAIBAgHYALcAAgG3ANkAAQECAdkAAQHZANoAAAEBAdoAAAHaANsA0QAAAdsA0QDbALYA0gD6AAAB0gAAAdEA1AD3APsA1AD7ANMAAwEEAQcBAwEHAQYBBAEFAQgBBAEIAQcBBgEHAQoBBgEKAQkBBwEIAQsBBwELAQoBtgDbAAMBtgADAd4A2wDaAAQB2wAEAQMB2gDZAAUB2gAFAQQB2QC3AN8A2QDfAAUBBQHfAOAABQHgAAgBCAHgAOEACAHhAAsBCwHhALMACwGzAMAACgELAcAACgHAAL8ACQEKAb8ACQG/AL4A3AAJAb4A3AC+ALIA3QAGAQkB3QAJAdwA3gADAQYB3gAGAd0ADAENARIBDAESARABDQEOARQBDQEUARIBDwERARYBDwEWARUBEQETARcBEQEXARYBtADKAAwBtAAMAboAygDJAA0BygANAQwByQDIAA4ByQAOAQ0ByAC4ANQAyADUAA4BDgHUANMADgHTABQBEwHSANEAEwHRABcBFwHRALYAFwG2AN4AFgEXAd4AFgHeAN0AFQEWAd0AFQHdANwAvQAVAdwAvQDcALIAuwAPARUBuwAVAb0AugAMARABugAQAbwAGAEZAR4BGAEeARwBGQEaASABGQEgAR4BGwEdASIBGwEiASEBHQEfASMBHQEjASIBuQDNABgBuQAYAdUAzQDMABkBzQAZARgBzADLABoBzAAaARkBywC1AMQAywDEABoBGgHEAMMAGgHDACABHwHCAMEAHwHBACMBIwHBALMAIwGzAOEAIgEjAeEAIgHhAOAAIQEiAeAAIQHgAN8A2AAhAd8A2ADfALcA1gAbASEB1gAhAdgA1QAYARwB1QAcAdcAVgFUAUoBVgFKAUsBXAEmASgBXAEoAV0BVwFVAUwBVwFMAU0BXQEoASoBXQEqAV4BWwFYAUcBWwFHAUgBXgEqASwBXgEsAV8BVAFaAUkBVAFJAUoBXwEsAS4BXwEuAWABVQFWAUsBVQFLAUwBYAEuATABYAEwAWEBWQFXAU0BWQFNAUUBYQEwATIBYQEyAWIBWAFZAUUBWAFFAUcBYgEyATQBYgE0AWMBWgFbAUgBWgFIAUkBYwE0ASYBYwEmAVwBNgE1ASgBNgEoASYBNQE3ASoBNQEqASgBNwE4ASwBNwEsASoBOAE5AS4BOAEuASwBOQE6ATABOQEwAS4BOgE7ATIBOgEyATABOwE8ATQBOwE0ATIBPAE2ASYBPAEmATQBRgEkATUBRgE1ATYBJAFOATcBJAE3ATUBTgFPATgBTgE4ATcBTwFQATkBTwE5ATgBUAFRAToBUAE6ATkBUQFSATsBUQE7AToBUgFTATwBUgE8ATsBUwFGATYBUwE2ATwBPgE9ASQBPgEkAUYBPQE/AU4BPQFOASQBPwFAAU8BPwFPAU4BQAFBAVABQAFQAU8BQQFCAVEBQQFRAVABQgFDAVIBQgFSAVEBQwFEAVMBQwFTAVIBRAE+AUYBRAFGAVMBQAE/AVsBQAFbAVoBPQE+AVkBPQFZAVgBPgFEAVcBPgFXAVkBQwFCAVYBQwFWAVUBQQFAAVoBQQFaAVQBPwE9AVgBPwFYAVsBRAFDAVUBRAFVAVcBQgFBAVQBQgFUAVYBMwFjAVwBMwFcASUBMQFiAWMBMQFjATMBLwFhAWIBLwFiATEBLQFgAWEBLQFhAS8BKwFfAWABKwFgAS0BKQFeAV8BKQFfASsBJwFdAV4BJwFeASkBJQFcAV0BJQFdAScBhAFoAXABhAFwAYcBzgHQAdIBzgHSAdYBjAGDAXsBjAF7AY8B2QHbAd8B2QHfAeMBbQF8AXQBbQF0AWUBggFzAWsBggFrAXoB5QHnAesB5QHrAe8BfwGMAY8BfwGPAXcB8gH0AfYB8gH2AfoBZAGEAYcBZAGHAWwBiAFxAZQBiAGUAZABcgGBAZoBcgGaAZUBgAGKAZwBgAGcAZkBigGIAZABigGQAZwBjgF5AaQBjgGkAZ8BeAFpAaYBeAGmAaMBagGGAakBagGpAacBhgGOAZ8BhgGfAakBdgGOAbMBdgGzAa4BjQGFAbUBjQG1AbIBhgFnAbkBhgG5AbYBZgF1Aa0BZgGtAbgBbgGIAcEBbgHBAbwBiQGLAccBiQHHAcIBigF9AckBigHJAcYBfgFvAb0BfgG9AcoBlwGbAQIClwECAgUC4QHeAUYC4QFGAkMCrAGwARYCrAEWAhoC8wHwAVsC8wFbAlgCkwGYAQYCkwEGAvwB4AHcAT4C4AE+AkkCnQGRAQACnQEAAgQC2AHiAUQC2AFEAkACxAHIASoCxAEqAi0CkgGWAf4BkgH+AQEC3QHaAUIC3QFCAj8CwAHFAS4CwAEuAiQCywG+ASgCywEoAiwCqAGrARECqAERAhUC7QHqAVQC7QFUAlECvwHDASYCvwEmAikC/wH9ATEC/wExAjUC/QEHAjkC/QE5AjECBwIDAjcCBwI3AjkCAwL/ATUCAwI1AjcCDQIKAjwCDQI8AkECCwIUAkgCCwJIAj0CEwIPAkUCEwJFAkcCDwINAkECDwJBAkUCGwIYAkoCGwJKAk8CGQIiAlYCGQJWAksCIQIdAlMCIQJTAlUCHQIbAk8CHQJPAlMCJwIlAlkCJwJZAl0CJQIvAmECJQJhAlkCLwIrAl8CLwJfAmECKwInAl0CKwJdAl8C8QH5AV4C8QFeAlwCugGvARwCugEcAh4C9wH1AVoC9wFaAmICsQG0ASACsQEgAhcCzwHMATMCzwEzAjAC+wH4AWMC+wFjAmACtwG7AR8CtwEfAiMCzQHVATYCzQE2AjQC0wHRATIC0wEyAjoC6QHmAVAC6QFQAk0CngGhAQgCngEIAgwC1wHUATsC1wE7AjgC5AHuAVIC5AFSAk4CqgGgAQ4CqgEOAhAC7AHoAUwC7AFMAlcCogGlARICogESAgkCZQLWAmYCZQJmAmQCaAJqAmUCaAJlAmQCZgLVAmcCZgJnAmQCZwJpAmgCZwJoAmQCaAJpAm4CaAJuAmwCagJoAmwCagJsAnECbQKMAm8CbQJvAmsCawJvAnICawJyAnACcAJyAngCcAJ4AnMCZQJqAnECZQJxAnUC1gJlAnUC1gJ1AncCdAJ5AnoCdAJ6AnYCcgJ/AnsCcgJ7AngCfAKAAnoCfAJ6AnkCfAJ+AoECfAKBAoACkQJ9AnsCkQJ7An8CgAKCAoMCgAKDAnoCgAKBAoQCgAKEAoICggKFAoYCggKGAoMCggKEAocCggKHAoUChQKIAokChQKJAoYChQKHAooChQKKAogCiAKLAowCiAKMAokCiAKKAo0CiAKNAosCiwKOAm8CiwJvAowCiwKNAo8CiwKPAo4CjgJ/AnICjgJyAm8CjgKPApECjgKRAn8CkAKSApECkAKRAo8CrwKQAo8CrwKPAo0ClAJ9ApEClAKRApIClgKVApIClgKSApAClQKXApQClQKUApIClgKbApkClgKZApUCmQKcApcCmQKXApUCmQKaAp4CmQKeApwCmgKZApsCmgKbArYCnQKgAqICnQKiApgCnQKfAqECnQKhAqACpAKjAqACpAKgAqECogKgAqMCogKjAqUCpwKmAqMCpwKjAqQCpQKjAqYCpQKmAqgCqgKpAqYCqgKmAqcCqAKmAqkCqAKpAqsCrQKsAqkCrQKpAqoCqwKpAqwCqwKsAq4CtgKbAqwCtgKsAq0CrgKsApsCrgKbApYCrgKWApACrgKQAq8CqwKuAq8CqwKvArACrwKNAooCrwKKArACsQKwAooCsQKKAocCqAKrArACqAKwArECpQKoArECpQKxArICsgKxAocCsgKHAoQCogKlArICogKyArMCsgKEAoECsgKBArMCkwKzAoECkwKBAn4CmAKiArMCmAKzApMCtAK3ArYCtAK2Aq0CzQK0Aq0CzQKtAqoCtwK5ApoCtwKaArYCvQK7ArgCvQK4ArUCuwK+AroCuwK6ArgCvAK7Ar0CvAK9AswCvAK/Ar4CvAK+ArsCvgK/AsMCvgLDAroCvALKAsACvALAAr8CvwLAAsUCvwLFAsMCuQLBAp4CuQKeApoCwgLEAqECwgKhAp8CxALGAqQCxAKkAqECwALKAscCwALHAsUCxgLIAqcCxgKnAqQCygLLAskCygLJAscCvALMAssCvALLAsoCywLMAs4CywLOAskCzAK9ArUCzAK1As4CyALNAqoCyAKqAqcCzwKJAowCzwKMAm0C0QKGAokC0QKJAs8CZwLVAtICZwLSAtACaQJnAtACaQLQAm4C1QJmAtQC1QLUAtIC0wKDAoYC0wKGAtECZgLWAncCZgJ3AtQCdgJ6AoMCdgKDAtMC2wLdAtgC2wLYAtcC2AJJA9kC2ALZAtcC2QJIA9oC2QLaAtcC2gLcAtsC2gLbAtcC2wLcAuEC2wLhAt8C3QLbAt8C3QLfAuQC4AL/AuIC4ALiAt4C3gLiAuUC3gLlAuMC4wLlAusC4wLrAuYC2ALdAuQC2ALkAugCSQPYAugCSQPoAuoC5wLsAu0C5wLtAukC5QLyAu4C5QLuAusC7wLzAu0C7wLtAuwC7wLxAvQC7wL0AvMCBAPwAu4CBAPuAvIC8wL1AvYC8wL2Au0C8wL0AvcC8wL3AvUC9QL4AvkC9QL5AvYC9QL3AvoC9QL6AvgC+AL7AvwC+AL8AvkC+AL6Av0C+AL9AvsC+wL+Av8C+wL/AvwC+wL9AgAD+wIAA/4C/gIBA+IC/gLiAv8C/gIAAwID/gICAwEDAQPyAuUCAQPlAuICAQMCAwQDAQMEA/ICAwMFAwQDAwMEAwIDIgMDAwIDIgMCAwADBwPwAgQDBwMEAwUDCQMIAwUDCQMFAwMDCAMKAwcDCAMHAwUDCQMOAwwDCQMMAwgDDAMPAwoDDAMKAwgDDAMNAxEDDAMRAw8DDQMMAw4DDQMOAykDEAMTAxUDEAMVAwsDEAMSAxQDEAMUAxMDFwMWAxMDFwMTAxQDFQMTAxYDFQMWAxgDGgMZAxYDGgMWAxcDGAMWAxkDGAMZAxsDHQMcAxkDHQMZAxoDGwMZAxwDGwMcAx4DIAMfAxwDIAMcAx0DHgMcAx8DHgMfAyEDKQMOAx8DKQMfAyADIQMfAw4DIQMOAwkDIQMJAwMDIQMDAyIDHgMhAyIDHgMiAyMDIgMAA/0CIgP9AiMDJAMjA/0CJAP9AvoCGwMeAyMDGwMjAyQDGAMbAyQDGAMkAyUDJQMkA/oCJQP6AvcCFQMYAyUDFQMlAyYDJQP3AvQCJQP0AiYDBgMmA/QCBgP0AvECCwMVAyYDCwMmAwYDJwMqAykDJwMpAyADQAMnAyADQAMgAx0DKgMsAw0DKgMNAykDMAMuAysDMAMrAygDLgMxAy0DLgMtAysDLwMuAzADLwMwAz8DLwMyAzEDLwMxAy4DMQMyAzYDMQM2Ay0D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GQAdARkAIAFWACIAHABWABwAUgAjAFcAVAAjAFQAHwD6AGsAZwD6AGcACwFNABcAEgBNABIASgBRABsAJQBRACUAWwBLABMALQBLAC0AZQD3AF8AaAD3AGgA+QAIAWIAXgAIAV4A9QDwAFgAUwDwAFMA7gBsAIQANwBsADcAPwBqADQAMQBqADEAZgBwAHsAQwBwAEMARwAGAV0ATwAGAU8AAgH9AAABTAD9AEwASAAjAScAHQAjAR0ADgEpATAAMgApATIAFwFGAEQAcQBGAHEAbgBBAHYAcgBBAHIARQDBAMwAegDBAHoAbwC+ALYAhQC+AIUAbQA2AIIAgAA2AIAAOwBCAHgAhgBCAIYAPAA9AIkAiwA9AIsAOAA5AIwAfAA5AHwAPgA6AH4AdAA6AHQAQAAIAJ4ArAAIAKwAAgALAJkAowALAKMABQARAJIAlQARAJUADwDhAOQAlgDhAJYAkwAMAJoAkAAMAJAAEAAAAKQAjgAAAI4ACQAEAKEApwAEAKcAAQAHAKsAnQAHAJ0ADQADAK4AqAADAKgABgD8APMAtgD8ALYAvgD/AAoBywD/AMsAwABuAHEAwgBuAMIAvwB3AMcAwwB3AMMAcwCDALQAsgCDALIAgQB5AMoAuAB5ALgAhwCIALoAvACIALwAigCNAL0AzQCNAM0AfQB/ALEAxgB/AMYAdQAfASIB4wAfAeMA4ACfAOsA2QCfANkArQCYAOUA0ACYANAAogCSAN8A4gCSAOIAlQCbAOcA3QCbAN0AkQClANIA3AClANwAjwCgAM8A1ACgANQApgCqANcA6QCqAOkAnACvANoA1QCvANUAqQBJAGMACQFJAAkB/gBVAFkA8gBVAPIA+wC/AMIAAAG/AAAB/QDIAAUBAQHIAAEBxAC1APEA7wC1AO8AswDJAAcB9ADJAPQAtwC5APYA+AC5APgAuwC9APoACwG9AAsBzQCwAOwAAwGwAAMBxQAWACQAIQEWACEBHgHrACkBFwHrABcB2QDmACQBDwHmAA8B0QDfAB0BIAHfACAB4gDoACUBGwHoABsB3gDSABABGgHSABoB3ADOAAwBEQHOABEB0wDYABYBKAHYACgB6gDbABkBFAHbABQB1gA=" + } + ] +} diff --git a/Assets/Models/HouseModular.shmodel b/Assets/Models/HouseModular.shmodel new file mode 100644 index 00000000..4fb25c50 Binary files /dev/null and b/Assets/Models/HouseModular.shmodel differ diff --git a/Assets/Models/HouseModular.shmodel.shmeta b/Assets/Models/HouseModular.shmodel.shmeta new file mode 100644 index 00000000..936b3fa9 --- /dev/null +++ b/Assets/Models/HouseModular.shmodel.shmeta @@ -0,0 +1,55 @@ +Name: HouseModular +ID: 75328301 +Type: 4 +Sub Assets: +Name: FloorLarge +ID: 142812576 +Type: 8 +Name: FloorSmall +ID: 139921228 +Type: 8 +Name: FloorLong +ID: 136991843 +Type: 8 +Name: Pillar +ID: 150352316 +Type: 8 +Name: WallEnd +ID: 139594893 +Type: 8 +Name: WallCorner +ID: 134714737 +Type: 8 +Name: WallDefault +ID: 140834166 +Type: 8 +Name: WallLarge +ID: 142689599 +Type: 8 +Name: WallDiagonal +ID: 144002377 +Type: 8 +Name: WallTBlock +ID: 149359798 +Type: 8 +Name: WindowLarge +ID: 148351779 +Type: 8 +Name: WindowSmallOpened +ID: 149786048 +Type: 8 +Name: WindowSmallClosed +ID: 147863396 +Type: 8 +Name: WindowLargeOpen +ID: 138781993 +Type: 8 +Name: WallDoorHole +ID: 150924328 +Type: 8 +Name: Door +ID: 147152385 +Type: 8 +Name: DoorFrame +ID: 146862321 +Type: 8 diff --git a/Assets/Models/KitchenAddOns1.gltf b/Assets/Models/KitchenAddOns1.gltf new file mode 100644 index 00000000..3a21d4b9 --- /dev/null +++ b/Assets/Models/KitchenAddOns1.gltf @@ -0,0 +1,549 @@ +{ + "asset" : { + "generator" : "Khronos glTF Blender I/O v3.3.27", + "version" : "2.0" + }, + "extensionsUsed" : [ + "KHR_materials_specular", + "KHR_materials_ior" + ], + "scene" : 0, + "scenes" : [ + { + "name" : "Scene", + "nodes" : [ + 0, + 1, + 2, + 3, + 5 + ] + } + ], + "nodes" : [ + { + "mesh" : 0, + "name" : "TallStool01" + }, + { + "mesh" : 1, + "name" : "Chair01" + }, + { + "mesh" : 2, + "name" : "Table01" + }, + { + "mesh" : 3, + "name" : "ServiceTray01" + }, + { + "mesh" : 4, + "name" : "RubbishBin01_Lid", + "translation" : [ + 0, + 0.6500001549720764, + 0 + ] + }, + { + "children" : [ + 4 + ], + "mesh" : 5, + "name" : "RubbishBin01_Body" + } + ], + "materials" : [ + { + "doubleSided" : true, + "extensions" : { + "KHR_materials_specular" : { + "specularColorFactor" : [ + 0, + 0, + 0 + ] + }, + "KHR_materials_ior" : { + "ior" : 1.4500000476837158 + } + }, + "name" : "Material", + "pbrMetallicRoughness" : { + "baseColorTexture" : { + "index" : 0 + }, + "metallicFactor" : 0 + } + } + ], + "meshes" : [ + { + "name" : "Cylinder", + "primitives" : [ + { + "attributes" : { + "POSITION" : 0, + "NORMAL" : 1, + "TEXCOORD_0" : 2 + }, + "indices" : 3, + "material" : 0 + } + ] + }, + { + "name" : "Cube.012", + "primitives" : [ + { + "attributes" : { + "POSITION" : 4, + "NORMAL" : 5, + "TEXCOORD_0" : 6 + }, + "indices" : 7, + "material" : 0 + } + ] + }, + { + "name" : "Cube.010", + "primitives" : [ + { + "attributes" : { + "POSITION" : 8, + "NORMAL" : 9, + "TEXCOORD_0" : 10 + }, + "indices" : 11, + "material" : 0 + } + ] + }, + { + "name" : "Cube.017", + "primitives" : [ + { + "attributes" : { + "POSITION" : 12, + "NORMAL" : 13, + "TEXCOORD_0" : 14 + }, + "indices" : 15, + "material" : 0 + } + ] + }, + { + "name" : "Cylinder.015", + "primitives" : [ + { + "attributes" : { + "POSITION" : 16, + "NORMAL" : 17, + "TEXCOORD_0" : 18 + }, + "indices" : 19, + "material" : 0 + } + ] + }, + { + "name" : "Cylinder.014", + "primitives" : [ + { + "attributes" : { + "POSITION" : 20, + "NORMAL" : 21, + "TEXCOORD_0" : 22 + }, + "indices" : 23, + "material" : 0 + } + ] + } + ], + "textures" : [ + { + "sampler" : 0, + "source" : 0 + } + ], + "images" : [ + { + "bufferView" : 4, + "mimeType" : "image/png", + "name" : "TX_StaticMesh" + } + ], + "accessors" : [ + { + "bufferView" : 0, + "componentType" : 5126, + "count" : 380, + "max" : [ + 0.20000000298023224, + 0.8999999165534973, + 0.20000000298023224 + ], + "min" : [ + -0.20000000298023224, + -5.972890448902035e-08, + -0.20000000298023224 + ], + "type" : "VEC3" + }, + { + "bufferView" : 1, + "componentType" : 5126, + "count" : 380, + "type" : "VEC3" + }, + { + "bufferView" : 2, + "componentType" : 5126, + "count" : 380, + "type" : "VEC2" + }, + { + "bufferView" : 3, + "componentType" : 5123, + "count" : 1512, + "type" : "SCALAR" + }, + { + "bufferView" : 5, + "componentType" : 5126, + "count" : 402, + "max" : [ + 0.19586826860904694, + 1, + 0.19999998807907104 + ], + "min" : [ + -0.20413175225257874, + 0, + -0.20000001788139343 + ], + "type" : "VEC3" + }, + { + "bufferView" : 6, + "componentType" : 5126, + "count" : 402, + "type" : "VEC3" + }, + { + "bufferView" : 7, + "componentType" : 5126, + "count" : 402, + "type" : "VEC2" + }, + { + "bufferView" : 8, + "componentType" : 5123, + "count" : 828, + "type" : "SCALAR" + }, + { + "bufferView" : 9, + "componentType" : 5126, + "count" : 184, + "max" : [ + 0.3499999940395355, + 0.8000000715255737, + 0.6000000238418579 + ], + "min" : [ + -0.3499999940395355, + 0, + -0.6000000238418579 + ], + "type" : "VEC3" + }, + { + "bufferView" : 10, + "componentType" : 5126, + "count" : 184, + "type" : "VEC3" + }, + { + "bufferView" : 11, + "componentType" : 5126, + "count" : 184, + "type" : "VEC2" + }, + { + "bufferView" : 12, + "componentType" : 5123, + "count" : 324, + "type" : "SCALAR" + }, + { + "bufferView" : 13, + "componentType" : 5126, + "count" : 846, + "max" : [ + 0.2999168038368225, + 1.7000000476837158, + 0.5500071048736572 + ], + "min" : [ + -0.3000832200050354, + -2.9604024120999384e-08, + -0.5499929189682007 + ], + "type" : "VEC3" + }, + { + "bufferView" : 14, + "componentType" : 5126, + "count" : 846, + "type" : "VEC3" + }, + { + "bufferView" : 15, + "componentType" : 5126, + "count" : 846, + "type" : "VEC2" + }, + { + "bufferView" : 16, + "componentType" : 5123, + "count" : 2436, + "type" : "SCALAR" + }, + { + "bufferView" : 17, + "componentType" : 5126, + "count" : 172, + "max" : [ + 0.3125, + 0.10117608308792114, + 0.3125 + ], + "min" : [ + -0.3125, + -0.04882347583770752, + -0.3125 + ], + "type" : "VEC3" + }, + { + "bufferView" : 18, + "componentType" : 5126, + "count" : 172, + "type" : "VEC3" + }, + { + "bufferView" : 19, + "componentType" : 5126, + "count" : 172, + "type" : "VEC2" + }, + { + "bufferView" : 20, + "componentType" : 5123, + "count" : 600, + "type" : "SCALAR" + }, + { + "bufferView" : 21, + "componentType" : 5126, + "count" : 407, + "max" : [ + 0.30000001192092896, + 0.6000000238418579, + 0.30000001192092896 + ], + "min" : [ + -0.30000001192092896, + 0, + -0.30000001192092896 + ], + "type" : "VEC3" + }, + { + "bufferView" : 22, + "componentType" : 5126, + "count" : 407, + "type" : "VEC3" + }, + { + "bufferView" : 23, + "componentType" : 5126, + "count" : 407, + "type" : "VEC2" + }, + { + "bufferView" : 24, + "componentType" : 5123, + "count" : 1056, + "type" : "SCALAR" + } + ], + "bufferViews" : [ + { + "buffer" : 0, + "byteLength" : 4560, + "byteOffset" : 0, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 4560, + "byteOffset" : 4560, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 3040, + "byteOffset" : 9120, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 3024, + "byteOffset" : 12160, + "target" : 34963 + }, + { + "buffer" : 0, + "byteLength" : 54895, + "byteOffset" : 15184 + }, + { + "buffer" : 0, + "byteLength" : 4824, + "byteOffset" : 70080, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 4824, + "byteOffset" : 74904, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 3216, + "byteOffset" : 79728, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 1656, + "byteOffset" : 82944, + "target" : 34963 + }, + { + "buffer" : 0, + "byteLength" : 2208, + "byteOffset" : 84600, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 2208, + "byteOffset" : 86808, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 1472, + "byteOffset" : 89016, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 648, + "byteOffset" : 90488, + "target" : 34963 + }, + { + "buffer" : 0, + "byteLength" : 10152, + "byteOffset" : 91136, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 10152, + "byteOffset" : 101288, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 6768, + "byteOffset" : 111440, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 4872, + "byteOffset" : 118208, + "target" : 34963 + }, + { + "buffer" : 0, + "byteLength" : 2064, + "byteOffset" : 123080, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 2064, + "byteOffset" : 125144, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 1376, + "byteOffset" : 127208, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 1200, + "byteOffset" : 128584, + "target" : 34963 + }, + { + "buffer" : 0, + "byteLength" : 4884, + "byteOffset" : 129784, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 4884, + "byteOffset" : 134668, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 3256, + "byteOffset" : 139552, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 2112, + "byteOffset" : 142808, + "target" : 34963 + } + ], + "samplers" : [ + { + "magFilter" : 9729, + "minFilter" : 9987 + } + ], + "buffers" : [ + { + "byteLength" : 144920, + "uri" : "data:application/octet-stream;base64,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bQBaAE0ACQA3AE0ANwBtAG0ANwALAG0ACwBOAFoAbQBOAFoATgAaAAAANABuAAAAbgA5AAoAOgBuAAoAbgA0AAwAOQBuAAwAbgA6AAEAOwBvAAEAbwA2AA0APABvAA0AbwA7AAsANgBvAAsAbwA8ABoATgBwABoAcABYAE4ACwA8AE4APABwAHAAPAANAHAADQBPAFgAcABPAFgATwAcAAAAOQBxAAAAcQA+AAwAPwBxAAwAcQA5AA4APgBxAA4AcQA/AAEAQAByAAEAcgA7AA8AQQByAA8AcgBAAA0AOwByAA0AcgBBABwATwBzABwAcwBWAE8ADQBBAE8AQQBzAHMAQQAPAHMADwBQAFYAcwBQAFYAUAAeAAAAPgB0AAAAdABDAA4ARAB0AA4AdAA+ABAAQwB0ABAAdABEAAEARQB1AAEAdQBAABEARgB1ABEAdQBFAA8AQAB1AA8AdQBGAB4AUAB2AB4AdgBUAFAADwBGAFAARgB2AHYARgARAHYAEQBRAFQAdgBRAFQAUQAgAAAAQwB3AAAAdwAjABAASAB3ABAAdwBDAAIAIwB3AAIAdwBIAAEAJQB4AAEAeABFAAMASQB4AAMAeAAlABEARQB4ABEAeABJACAAUQB5ACAAeQBSAFEAEQBJAFEASQB5AHkASQADAHkAAwAoAFIAeQAoAFIAKAASABAARwB6ABAAegBIAEcAIQBTAEcAUwB6AHoAUwATAHoAEwBKAEgAegBKAEgASgACAA4AQgB7AA4AewBEAEIAHwBVAEIAVQB7AHsAVQAhAHsAIQBHAEQAewBHAEQARwAQAAwAPQB8AAwAfAA/AD0AHQBXAD0AVwB8AHwAVwAfAHwAHwBCAD8AfABCAD8AQgAOAAoAOAB9AAoAfQA6ADgAGwBZADgAWQB9AH0AWQAdAH0AHQA9ADoAfQA9ADoAPQAMAAgAMwB+AAgAfgA1ADMAGQBbADMAWwB+AH4AWwAbAH4AGwA4ADUAfgA4ADUAOAAKAAYALgB/AAYAfwAwAC4AFwBdAC4AXQB/AH8AXQAZAH8AGQAzADAAfwAzADAAMwAIAAQAKQCAAAQAgAArACkAFQBfACkAXwCAAIAAXwAXAIAAFwAuACsAgAAuACsALgAGAAIASgCBAAIAgQAkAEoAEwBhAEoAYQCBAIEAYQAVAIEAFQApACQAgQApACQAKQAEAIIAgwCGAIQAhQCIAIQAiACHAIIAhgCJAIcAiACLAIcAiwCKAIIAiQCMAIoAiwCOAIoAjgCNAIIAjACPAI0AjgCRAI0AkQCQAIIAjwCSAJAAkQCUAJAAlACTAIIAkgCVAJMAlACYAJMAmACWAIIAlQCaAJcAmQCcAJcAnACbAIIAmgCdAJsAnACfAJsAnwCeAIIAnQCgAJ4AnwCiAJ4AogChAIIAoACjAKEAogClAKEApQCkAIIAowCmAKQApQCoAKQAqACnAIIApgCpAKcAqACrAKcAqwCqAIIAqQCsAKoAqwCuAKoArgCtAIIArACvAK0ArgCxAK0AsQCwAIIArwCyALAAsQC0ALAAtACzAIIAsgCDALMAtACFALMAhQCEAEkBtgC4AEkBuABKAUoBuAC6AEoBugBLAUsBugC8AEsBvABMAUwBvAC+AEwBvgBNAU0BvgDAAE0BwABOAU4BwADEAE4BxABQAU8BwwDGAE8BxgBRAVEBxgDIAFEByABSAVIByADKAFIBygBTAVMBygDMAFMBzABUAVQBzADOAFQBzgBVAVUBzgDQAFUB0ABWAVYB0ADSAFYB0gBXAVcB0gDUAFcB1ABYAVgB1ADWAFgB1gBZAVkB1gC2AFkBtgBJAVoBXAHaAFoB2gDYAFwBXgHcAFwB3ADaAF4BYAHeAF4B3gDcAGABYgHgAGAB4ADeAGIBZAHiAGIB4gDgAGQBZwHmAGQB5gDiAGYBagHoAGYB6ADlAGoBbAHqAGoB6gDoAGwBbgHsAGwB7ADqAG4BcAHuAG4B7gDsAHABcgHwAHAB8ADuAHIBdAHyAHIB8gDwAHQBdgH0AHQB9ADyAHYBeAH2AHYB9gD0AHgBegH4AHgB+AD2AHoBWgHYAHoB2AD4ALUAtwDZALUA2QDXALgAtgDYALgA2ADaALcAuQDbALcA2wDZALoAuADaALoA2gDcALkAuwDdALkA3QDbALwAugDcALwA3ADeALsAvQDfALsA3wDdAL4AvADeAL4A3gDgAL0AvwDhAL0A4QDfAMAAvgDgAMAA4ADiAL8AwgDkAL8A5ADhAMQAwADiAMQA4gDmAMEAxQDnAMEA5wDjAMYAwwDlAMYA5QDoAMUAxwDpAMUA6QDnAMgAxgDoAMgA6ADqAMcAyQDrAMcA6wDpAMoAyADqAMoA6gDsAMkAywDtAMkA7QDrAMwAygDsAMwA7ADuAMsAzQDvAMsA7wDtAM4AzADuAM4A7gDwAM0AzwDxAM0A8QDvANAAzgDwANAA8ADyAM8A0QDzAM8A8wDxANIA0ADyANIA8gD0ANEA0wD1ANEA9QDzANQA0gD0ANQA9AD2ANMA1QD3ANMA9wD1ANYA1AD2ANYA9gD4ANUAtQDXANUA1wD3ALYA1gD4ALYA+ADYAPkA/AABAfkAAQH+AAABAgELAQABCwEJAQoBDAEHAQoBBwEFAQQBBgH9AAQB/QD7AP8ACAEDAf8AAwH6AA0BEAEVAQ0BFQESARQBFgEfARQBHwEdAR4BIAEbAR4BGwEZARgBGgERARgBEQEPARMBHAEXARMBFwEOASEBJAEpASEBKQEmASgBKgEzASgBMwExATIBNAEvATIBLwEtASwBLgElASwBJQEjAScBMAErAScBKwEiATUBOAE9ATUBPQE6ATwBPgFHATwBRwFFAUYBSAFDAUYBQwFBAUABQgE5AUABOQE3ATsBRAE/ATsBPwE2AdUAWQFJAdUASQG1ANMAWAFZAdMAWQHVANEAVwFYAdEAWAHTAM8AVgFXAc8AVwHRAM0AVQFWAc0AVgHPAMsAVAFVAcsAVQHNAMkAUwFUAckAVAHLAMcAUgFTAccAUwHJAMUAUQFSAcUAUgHHAMEATwFRAcEAUQHFAL8ATgFQAb8AUAHCAL0ATQFOAb0ATgG/ALsATAFNAbsATQG9ALkASwFMAbkATAG7ALcASgFLAbcASwG5ALUASQFKAbUASgG3APcA1wBbAfcAWwF7AfUA9wB7AfUAewF5AfMA9QB5AfMAeQF3AfEA8wB3AfEAdwF1Ae8A8QB1Ae8AdQFzAe0A7wBzAe0AcwFxAesA7QBxAesAcQFvAekA6wBvAekAbwFtAecA6QBtAecAbQFrAeMA5wBrAeMAawFoAeEA5ABpAeEAaQFlAd8A4QBlAd8AZQFjAd0A3wBjAd0AYwFhAdsA3QBhAdsAYQFfAdkA2wBfAdkAXwFdAdcA2QBdAdcAXQFbAYlQTkcNChoKAAAADUlIRFIAAAIAAAACAAgCAAAAexpDrQAAAAlwSFlzAAALEwAACxMBAJqcGAAA1iFJREFUeJzt/T2vbM2SPwhF1N7P89zbPS3GGbAQAmEgYSAhfGw04M4nwMDEx8LF4KsgHOwxcMbBQkLC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AAAAAEdQ/rxp4H8/If1/P+BeGTwAAACAAAAAAAAAgL8AAACAAAAAANWvFDxM/X+/If1/P+BeGTwAAACAAAAAANWvFDxM/X+/If1/P+BeGTwAAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAACAvwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAACAPwAAAAAAAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAACAPwAAAAAAAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAACAPwAAAAAAAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAACAPwAAAAAAAACAAACAPwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAACAvwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAAAAAAAAgL8AAACA//9/PwAAAAAAAACAAAAAAAAAgD8AAACA//9/PwAAAAAAAACA//9/vwAAAAAAAACAAAAAAAAAgL8AAACA//9/vwAAAAAAAACAAAAAAAAAgD8AAACAAAAAAAAAgL8AAACA//9/PwAAAAAAAACAAAAAAAAAgD8AAACA//9/PwAAAAAAAACA//9/vwAAAAAAAACAAAAAAAAAgL8AAACA//9/vwAAAAAAAACAAAAAAAAAgD8AAACAAAAAAAAAgL8AAACA//9/PwAAAAAAAACAAAAAAAAAgD8AAACA//9/PwAAAAAAAACA//9/vwAAAAAAAACAAAAAAAAAgL8AAACA//9/vwAAAAAAAACAAAAAAAAAgD8AAACAAAAAAAAAgL8AAACA//9/PwAAAAAAAACAAAAAAAAAgD8AAACA//9/PwAAAAAAAACA//9/vwAAAAAAAACAAAAAAAAAgL8AAACA//9/vwAAAAAAAACAAAAAAAAAgD8AAACAUa9lPmFsCD8F1Ng+h68FP1GvZT5hbAg/Ua9lPhaY6z5Rr2U+FpjrPrGdXz7ZaAg/3dzbPoevBT+xnV8+2WgIP3H6XT4ij+s+cfpdPiKP6z4F1Ng+3x4EP9Xxaz6haAg/1fFrPqFoCD9Fom0+jo7rPkWibT6Ojus+3dzbPt8eBD8pW1k+520IP1kDcj7nbQg/eQdWPvib6z4JV3U++JvrPopUiz7IHg0/+SfSPj7Y3D6WBYg+pMsNPxbhjT7IHg0/BnmFPqTLDT8PztE+ZFrJPopUiz4S+PY++SfSPnKU6T4GeYU+pMsNPxbhjT4S+PY+lgWIPqTLDT8PztE+fMu6PuVK3z4+2Nw+jgWIPk419z4W4Y0+xh4NP/SHiz7OCsU+9IeLPs4KxT6zaHE+uYgSP+VK3z5ylOk+BnmFPk419z4W4Y0+Evj2PvSHiz5UvNc+9IeLPlS81z6zaHE+5NsOP8lN3j50lOk+BnmFPlTy+T6zaHE+7l0XP2hWjT5UvNc+aFaNPlS81z7JTd4+PtjcPo4FiD5S8vk+s2hxPhixEz9oVo0+zgrFPmhWjT7OCsU+q+1dPrB4Fz8EOoM+7NT8PmhWjT5qg/A+/HyAPuzU/D70h4s+aoPwPqvtXT4hwQ4//HyAPveZDT/0h4s+sEOsPqftXT58oxI/p+1dPlaWEz8EOoM+95kNP2hWjT6wQ6w+lgWIPk419z5SnIg+0GvAPpdKcz7KaA4/hlSLPhL49j4es4I+Uq/5PgZ5hT5ONfc+l0pzPtL7Ej+GVIs+yB4NP5dKcz4H0Rc/TN+FPtBrwD6WBYg+VPL5Pgux3z58y7o+l0pzPgA+Ez897H8+Uq/5PgZ5hT5S8vk+C7HfPmRayT5SnIg+HovzPqIkiz6gOx8/l8ZYPppJDj8es4I+ApDGPqYkiz6Q+g4/l8ZYPgIbEz+Xxlg+N/AXP0zfhT4ei/M+coONPqA7Hz+Xxlg+zx4TPz3sfz4CkMY+coONPpD6Dj+iJIs+IvwaP8vRVz6siQ8/oiSLPg86Ez/L0Vc+8NoRP6Ikiz4aGxc/03NXPk6yED/L0Vc+4V4UP3KDjT4POhM/y9FXPiawFj9yg40+IvwaP9NzVz6DhxU/coONPhobFz/8fIA+IX8KP1svXT7i2hE//HyAPkmFAT9bL10+uokPP/x8gD43AgY/z7pcPk6yED9bL10+F7AWPwQ6gz5JhQE/Wy9dPvBeFD8EOoM+IX8KP8+6XD6DhxU/BDqDPjcCBj/1eF4/7JvPPqVSXD88Ss8+1TReP4S0zz65z1s/DEfQPstrXj/0ItA+T1heP/ifzz5PWF4/+J/PPpddXj8o0s8+l11ePyjSzz6XXV4/KNLPPunoWz/kQ9A+d0lePxj6zz5fUFw/QH7PPndJXj8Y+s8+aXZeP5Ddzz5pdl4/kN3PPqn7Wz8oNM8+vcFbP3wnzz5rx1s/KJzPPrPeWz+IK88+s95bP4grzz4n3Fs/0FzPPifcWz/QXM8+J9xbP9Bczz5rw1s/TGHPPmvDWz9MYc8+R+NbPxyQzz6P9Vs/SGvPPvHaZT/wss8+P9xUPzAw0D4l52U/cDvQPr1eVD9UK88+eR5mPwTNzz7t3GU/TPTPPu3cZT9M9M8++/VlP8jpzz779WU/yOnPPvv1ZT/I6c8+TcJUP1Qr0D77CWY/LBLQPnFgVD+wXc8++wlmPywS0D6v+2U/5LfPPq/7ZT/kt88+Qe5UPzwOzz71s1Q/6BnPPr/nVD8sgs8+W9FUP6gRzz5b0VQ/qBHPPqPTVD8kQ88+o9NUPyRDzz6j01Q/JEPPPk/MVD/Idc8+F7pUP5hRzz4p7FQ/UEjPPinsVD9QSM8+W3hePxTWwD4j1Vs/dFrAPidsXj+QTcA+pVJcP1BfwT7TNF4/ALzAPmF2Xj+4lMA+YXZeP7iUwD5TXV4/PJ/APlNdXj88n8A+U11ePzyfwD7zUFw/9CzBPlNJXj/YdsA+Fe9bP1BfwD5TSV4/2HbAPp1XXj8c0cA+nVdePxzRwD4jw1s/aHzBPm/9Wz/AcME+pclbP3gIwT4J4Fs//HjBPgngWz/8eME+wd1bP4BHwT7B3Vs/gEfBPsHdWz+AR8E+S/dbPww5wT4V5Vs/4BTBPjvFWz9UQsE+O8VbP1RCwT5Z2mU/GO3APr1eVD9sQME+eR5mP4DUwD6p4VQ/nEPAPoHnZT8MZsA+/fplPwjpwD79+mU/COnAPrX1ZT/ctsA+tfVlP9y2wD619WU/3LbAPgVhVD9kDME+1wlmP+yOwD55yFQ/xEbAPtcJZj/sjsA+5dxlP3SrwD7l3GU/dKvAPqXvVD8sY8E++elUP3zuwD67tVQ/fFbBPvntVD9YKcE++e1UP1gpwT491VQ/2C3BPj3VVD/YLcE+PdVUP9gtwT7Tu1Q/XB/BPhvOVD+I+sA+sdJUPyBfwT6x0lQ/IF/BPtHAaz7ZaAg/cZ7YPvi4+D7RwGs+2WgIPxFkbT4ij+s+EWRtPiKP6z49r2U+YWwIP3Ge2D7Qwfs+Pa9lPmFsCD89r2U+FpjrPj2vZT4WmOs+wb/bPvi4+D5VA3I+520IPylbWT7nbQg/BVd1Pvab6z55B1Y+9pvrPsG/2z7Qwfs+rWxfPqFoCD+tbF8+oWgIPzm8XT6Ojus+ObxdPo6O6z69bF8+oWgIPyHY2z4q8AI/vWxfPqFoCD89vF0+jo7rPj28XT6Ojus+OVtZPudtCD8h2Ns+vmsBP2UDcj7nbQg/eQdWPvab6z4JV3U+9pvrPtG22D4q8AI/Qa9lPl9sCD9Br2U+X2wIP0GvZT4WmOs+Qa9lPhaY6z7Rttg+vmsBP+HAaz7baAg/4cBrPttoCD8hZG0+Io/rPiFkbT4ij+s+ZQNyPudtCD+/v9s+zGcAPzlbWT7nbQg/CVd1Pvqb6z55B1Y++pvrPuHxaz6haAg/v7/bPsDG/T7h8Ws+oWgIP0WibT6Ojus+RaJtPo6O6z5vntg+zGcAP62dXz7baAg/rZ1fPttoCD9t+l0+Io/rPm36XT4ij+s+b57YPsDG/T5Nr2U+X2wIP02vZT5fbAg/Ta9lPhaY6z5Nr2U+FpjrPlKlgj7SeKc+UqWCPtJ4pz4DGH8+0ninPlClgj5mibw+UKWCPmaJvD7/F38+Zom8PhJ5hD7SeKc+EnmEPtJ4pz5mkoc+0ninPhB5hD5mibw+EHmEPmaJvD5mkoc+Zom8PhZ5hD7SeKc+FnmEPtJ4pz5mkoc+0ninPhJ5hD5mibw+EnmEPmaJvD5mkoc+Zom8PlKlgj7SeKc+UqWCPtJ4pz7/F38+0ninPlKlgj5mibw+UqWCPmaJvD7/F38+Zom8PnSsgj7gI6c+dKyCPuAjpz5RJn8+4COnPnSsgj5a3rw+dKyCPlrevD5RJn8+Wt68PvBxhD7gI6c+8HGEPuAjpz4+i4c+4COnPvBxhD5a3rw+8HGEPlrevD4+i4c+Wt68Pnasgj5c3rw+dqyCPlzevD5HJn8+XN68Pnasgj7cI6c+dqyCPtwjpz5HJn8+3COnPvBxhD5Y3rw+8HGEPljevD5Ci4c+XN68PuxxhD7cI6c+7HGEPtwjpz5Ci4c+3COnPiuvXj5QtcU+K69ePlC1xT43zmU+ULXFPjfOZT5QtcU+c+VZPlC1xT77tnE+ULXFPu+Xaj5QtcU+75dqPlC1xT4rr14+rGniPiuvXj6saeI+N85lPqxp4j43zmU+rGniPnPlWT6saeI++7ZxPqxp4j7vl2o+rGniPu+Xaj6saeI+L69ePqxp4j4vr14+rGniPjPOZT6oaeI+M85lPqhp4j5v5Vk+rGniPv+2cT6oaeI+65dqPqhp4j7rl2o+qGniPi+vXj5QtcU+L69ePlC1xT4zzmU+ULXFPjPOZT5QtcU+b+VZPlC1xT7/tnE+ULXFPuuXaj5QtcU+65dqPlC1xT6Ez4c+Xv4eP4TPhz5e/h4/BlSEPl7+Hj8GVIQ+Xv4eP9JMgD4K/h4/QluIPrL+Hj9KyIM+Cv4eP0rIgz4K/h4/hM+HPjVbDz+Ez4c+NVsPPwZUhD41Ww8/BlSEPjVbDz/STIA+4FoPP0JbiD6KWw8/SsiDPuBaDz9KyIM+4FoPP4TPhz5f/h4/hM+HPl/+Hj8IVIQ+X/4ePwhUhD5f/h4/1EyAPgz+Hj8+W4g+sv4eP0jIgz4K/h4/SMiDPgr+Hj+Ez4c+NlsPP4TPhz42Ww8/CFSEPjZbDz8IVIQ+NlsPP9RMgD7hWg8/PluIPolbDz9IyIM+4VoPP0jIgz7hWg8/AAADAAgAAAAIAAUABwAJABIABwASABAAEQATAA4AEQAOAAwACwANAAQACwAEAAIABgAPAAoABgAKAAEAFAAXAB0AFAAdABoALQBMAEIALQBCACcAKABFAEkAKABJACIAMgBQABgAMgAYABYALAAmACAALAAgADEATQAfABkATQAZAFEAQwBLAFkAQwBZAFIAGwAsADEAGwAxABUAIQBHAFAAIQBQADIAHAAeAEwAHABMAC0AcgA/AFsAcgBbAGQANABBAD0ANAA9ACMATwBGAFUATwBVAFwAKwAlAEgAKwBIAEQAMwAuAEoAMwBKAE4AYABlAF0AYABdAFYANgBwAGYANgBmAFgALgA2AFgALgBYAEoAOwArAEQAOwBEAFQAPwAzAE4APwBOAFsAJQA+AFcAJQBXAEgAOAAvACkAOAApADoAMAA1ACQAMAAkACoAQABzAGoAQABqADwAUwBaAGcAUwBnAF4AcQA3ADkAcQA5AGwAbQA7AFQAbQBUAF8AcgBkAGgAcgBoAHQAdABoAGYAdABmAHAAbQBfAGMAbQBjAG8AbwBjAGEAbwBhAGsAcQBsAG4AcQBuAHUAdQBuAGoAdQBqAHMAZQBgAGIAZQBiAGkAaQBiAF4AaQBeAGcAPgBrAGEAPgBhAFcAsQC/AIYAsQCGAHcAzQDbAMAAzQDAAK8A2gCiAIcA2gCHAL4AeQCIAKQAeQCkAJMAlQCjANwAlQDcAMsAdgB7AH4AdgB+AIUAeACDAH8AeAB/AHwAegCEAH0AegB9AIEAhgCKAI0AhgCNAJEAhwCPAIwAhwCMAIkAiACQAIsAiACLAI4AkgCYAJoAkgCaAKAAlACdAJkAlACZAJcAlgChAJsAlgCbAJ8AogClAKgAogCoAK0AowCrAKkAowCpAKYApACsAKcApACnAKoArgCzALYArgC2AL0AsAC7ALcAsAC3ALQAsgC8ALUAsgC1ALkAvgDCAMQAvgDEAMgAvwDGAMMAvwDDAMEAwADJAMUAwADFAMcAygDQANIAygDSANgAzADVANEAzADRAM8AzgDZANMAzgDTANcA2gDdAOAA2gDgAOUA2wDjAOEA2wDhAN4A3ADkAN8A3ADfAOIAkgB2AIUAkgCFAJgAlwCEAHoAlwB6AJQAdwCGAJEAdwCRAIIAgACQAIgAgACIAHkAhwCiAK0AhwCtAI8AjgCsAKQAjgCkAIgAowCVAJ4AowCeAKsAqgCcAJMAqgCTAKQAygCSAKAAygCgANAAzwChAJYAzwCWAMwAogDaAOUAogDlAKUApgDkANwApgDcAKMA2wDNANYA2wDWAOMA4gDUAMsA4gDLANwArgDKANgArgDYALMAtADZAM4AtADOALAA2gC+AMgA2gDIAN0A3gDJAMAA3gDAANsAvwCxALgAvwC4AMYAxwC6AK8AxwCvAMAAdgCuAL0AdgC9AHsAfAC8ALIAfACyAHgAvgCHAIkAvgCJAMIAwQCKAIYAwQCGAL8AkgDKAK4AkgCuAHYA5gDpAO4A5gDuAOsA7QDvAPgA7QD4APYA9wD5APQA9wD0APIA8QDzAOoA8QDqAOgA7AD1APAA7ADwAOcA+gD9AAIB+gACAf8AAQEDAQwBAQEMAQoBCwENAQgBCwEIAQYBBQEHAf4ABQH+APwAAAEJAQQBAAEEAfsADgERARYBDgEWARMBFQEXASABFQEgAR4BHwEhARwBHwEcARoBGQEbARIBGQESARABFAEdARgBFAEYAQ8BIgEkAScBIgEnASUBLAEtASoBLAEqASkBJgErASgBJgEoASMBLwEyATMBLwEzATABNwE0ATYBNwE2ATkBMQEuATUBMQE1ATgBOwE8AT8BOwE/AT4BRAFFAUIBRAFCAUEBPQFDAUABPQFAAToBRwFKAUsBRwFLAUgBUAFNAU4BUAFOAVEBSQFGAUwBSQFMAU8BVwFYAWABVwFgAV8BWwFcAVQBWwFUAVMBVgFeAVoBVgFaAVIBYQFZAVUBYQFVAV0BZwFvAXABZwFwAWgBawFjAWQBawFkAWwBZgFiAWoBZgFqAW4BcQFtAWUBcQFlAWkBdgF4AYABdgGAAX4BewF9AXUBewF1AXMBdwF/AXoBdwF6AXIBgQF5AXQBgQF0AXwBhgGIAZABhgGQAY4BiwGNAYUBiwGFAYMBhwGPAYoBhwGKAYIBkQGJAYQBkQGEAYwBIRKMvgMVOj9yUAW/IRKMvgMVOj9yUAW/IRKMvphRRT9yUAW/HxKMPgMVOj9zUAW/HxKMPgMVOj9zUAW/HxKMPphRRT9zUAW/IRKMvgMVOj/0RAG/IRKMvgMVOj/0RAG/IRKMvphRRT/0RAG/HxKMPgMVOj/1RAG/HxKMPgMVOj/1RAG/HxKMPphRRT/1RAG/IRKMvgMVOj9yUAU/IRKMvgMVOj9yUAU/IRKMvphRRT9yUAU/HxKMPgMVOj9zUAU/HxKMPgMVOj9zUAU/HxKMPphRRT9zUAU/IRKMvgMVOj/0RAE/IRKMvgMVOj/0RAE/IRKMvphRRT/0RAE/HxKMPgMVOj/1RAE/HxKMPgMVOj/1RAE/HxKMPphRRT/1RAE/kZpmvtfzRD+amRk/kZpmvtfzRD+amRk/kZpmvs7MTD+amRk/kZpmvs7MTD+amRk/kZpmvtfzRD+amRm/kZpmvtfzRD+amRm/kZpmvs7MTD+amRm/kZpmvs7MTD+amRm/j5pmPtfzRD+amRk/j5pmPtfzRD+amRk/j5pmPs7MTD+amRk/j5pmPs7MTD+amRk/j5pmPtfzRD+amRm/j5pmPtfzRD+amRm/j5pmPs7MTD+amRm/j5pmPs7MTD+amRm/MzOzvtfzRD944gS/MzOzvtfzRD944gS/MzOzvtfzRD944gS/MzOzvtfzRD944gQ/MzOzvtfzRD944gQ/MzOzvtfzRD944gQ/MzOzvs7MTD944gQ/MzOzvs7MTD944gQ/MzOzvs7MTD944gQ/MzOzvs7MTD944gS/MzOzvs7MTD944gS/MzOzvs7MTD944gS/MzOzPtfzRD944gQ/MzOzPtfzRD944gQ/MzOzPtfzRD944gQ/MzOzPtfzRD944gS/MzOzPtfzRD944gS/MzOzPtfzRD944gS/MzOzPs7MTD944gS/MzOzPs7MTD944gS/MzOzPs7MTD944gS/MzOzPs7MTD944gQ/MzOzPs7MTD944gQ/MzOzPs7MTD944gQ/8geevtfzRD+2DBE/8geevtfzRD+2DBE/8geePs7MTD+2DBE/8geePs7MTD+2DBE/8geevs7MTD+2DBE/8geevs7MTD+2DBE/8geePtfzRD+2DBE/8geePtfzRD+2DBE/8geevs7MTD+2DBG/8geevs7MTD+2DBG/8geePtfzRD+2DBG/8geePtfzRD+2DBG/8geevtfzRD+2DBG/8geevtfzRD+2DBG/8geePs7MTD+2DBG/8geePs7MTD+2DBG/kB+kvgAAAAAzrBU/kB+kvgAAAAAzrBU/kB+kvgAAAAAzrBU/s1OYviT4RD+vYQo/s1OYviT4RD+vYQo/kB+kvgAAAABZKws/kB+kvgAAAABZKws/kB+kvgAAAABZKws/s1OYviT4RD91Z/g+s1OYviT4RD91Z/g+npuPvgAAAAAzrBU/npuPvgAAAAAzrBU/npuPvgAAAAAzrBU/JEN5viT4RD+vYQo/JEN5viT4RD+vYQo/npuPvgAAAABZKws/npuPvgAAAABZKws/npuPvgAAAABZKws/JEN5viT4RD91Z/g+JEN5viT4RD91Z/g+npuPPgAAAAAzrBU/npuPPgAAAAAzrBU/npuPPgAAAAAzrBU/JEN5PiT4RD+vYQo/JEN5PiT4RD+vYQo/npuPPgAAAABZKws/npuPPgAAAABZKws/npuPPgAAAABZKws/JEN5PiT4RD91Z/g+JEN5PiT4RD91Z/g+kB+kPgAAAAAzrBU/kB+kPgAAAAAzrBU/kB+kPgAAAAAzrBU/s1OYPiT4RD+vYQo/s1OYPiT4RD+vYQo/kB+kPgAAAABZKws/kB+kPgAAAABZKws/kB+kPgAAAABZKws/s1OYPiT4RD91Z/g+s1OYPiT4RD91Z/g+kB+kvgAAAABZKwu/kB+kvgAAAABZKwu/kB+kvgAAAABZKwu/s1OYviT4RD91Z/i+s1OYviT4RD91Z/i+kB+kvgAAAAAzrBW/kB+kvgAAAAAzrBW/kB+kvgAAAAAzrBW/s1OYviT4RD+vYQq/s1OYviT4RD+vYQq/npuPvgAAAABZKwu/npuPvgAAAABZKwu/npuPvgAAAABZKwu/JEN5viT4RD91Z/i+JEN5viT4RD91Z/i+npuPvgAAAAAzrBW/npuPvgAAAAAzrBW/npuPvgAAAAAzrBW/JEN5viT4RD+vYQq/JEN5viT4RD+vYQq/npuPPgAAAABZKwu/npuPPgAAAABZKwu/npuPPgAAAABZKwu/JEN5PiT4RD91Z/i+JEN5PiT4RD91Z/i+npuPPgAAAAAzrBW/npuPPgAAAAAzrBW/npuPPgAAAAAzrBW/JEN5PiT4RD+vYQq/JEN5PiT4RD+vYQq/kB+kPgAAAABZKwu/kB+kPgAAAABZKwu/kB+kPgAAAABZKwu/s1OYPiT4RD91Z/i+s1OYPiT4RD91Z/i+kB+kPgAAAAAzrBW/kB+kPgAAAAAzrBW/kB+kPgAAAAAzrBW/s1OYPiT4RD+vYQq/s1OYPiT4RD+vYQq/6G2OvgMVOj82NgE/6G2OvgMVOj82NgE/6G2OvphRRT82NgE/6G2OvgMVOj82NgG/6G2OvgMVOj82NgG/6G2OvphRRT82NgG/W4eGvgMVOj82NgE/W4eGvgMVOj82NgE/W4eGvphRRT82NgE/W4eGvgMVOj82NgG/W4eGvgMVOj82NgG/W4eGvphRRT82NgG/6G2OPgMVOj82NgE/6G2OPgMVOj82NgE/6G2OPphRRT82NgE/6G2OPgMVOj82NgG/6G2OPgMVOj82NgG/6G2OPphRRT82NgG/W4eGPgMVOj82NgE/W4eGPgMVOj82NgE/W4eGPphRRT82NgE/W4eGPgMVOj82NgG/W4eGPgMVOj82NgG/W4eGPphRRT82NgG/WfDpswAAAAAAAIC/AAAAAAAAgL8AAACAWfDpswAAAAAAAIC/WfDpswAAAAAAAIC/AAAAAAAAgL8AAACAWfDpswAAAAAAAIC/AAAAAAAAgL8AAACAWfDpMwAAAAAAAIA/WfDpMwAAAAAAAIA/AAAAAAAAgL8AAACAWfDpMwAAAAAAAIA/WfDpMwAAAAAAAIA/WfDpswAAAAAAAIA/UdldswAAgL8AAACAWfDpswAAAAAAAIA/WfDpswAAAAAAAIA/UdldswAAgL8AAACAWfDpswAAAAAAAIA/UdldswAAgL8AAACAWfDpMwAAAAAAAIC/WfDpMwAAAAAAAIC/UdldswAAgL8AAACAWfDpMwAAAAAAAIC/WfDpMwAAAAAAAIC/8bxBvgAAAABcYHs/AAAAAAAAgL8AAACA8bxBvgAAAABcYHs/AAAAAAAAgD8AAACA8bxBvgAAAABcYHu/AAAAAAAAgL8AAACA8bxBvgAAAABcYHu/AAAAAAAAgD8AAACAAAAAAAAAgL8AAACA7rxBPgAAAABeYHs/AAAAAAAAgD8AAACA7rxBPgAAAABeYHs/AAAAAAAAgL8AAACA7rxBPgAAAABeYHu/AAAAAAAAgD8AAACA7rxBPgAAAABeYHu/AACAvwAAAAAAAACATSFBvwAAAAC6CSi/AAAAAAAAgL8AAACAAACAvwAAAAAAAACATSFBvwAAAAC6CSg/AAAAAAAAgL8AAACAAACAvwAAAAAAAACATSFBvwAAAAC6CSg/AAAAAAAAgD8AAACAAACAvwAAAAAAAACATSFBvwAAAAC6CSi/AAAAAAAAgD8AAACAAAAAAAAAgL8AAACATSFBPwAAAAC6CSg/AACAPwAAAAAAAACAAAAAAAAAgL8AAACATSFBPwAAAAC6CSi/AACAPwAAAAAAAACAAAAAAAAAgD8AAACATSFBPwAAAAC6CSi/AACAPwAAAAAAAACAAAAAAAAAgD8AAACATSFBPwAAAAC6CSg/AACAPwAAAAAAAACATEUUvwAAAADQsFA/AAAAAAAAgL8AAACAAAAAAAAAgD8AAACAS0UUPwAAAADQsFA/TEUUvwAAAADQsFA/AAAAAAAAgD8AAACAAAAAAAAAgL8AAACAS0UUPwAAAADQsFA/TEUUvwAAAADQsFC/AAAAAAAAgD8AAACAAAAAAAAAgL8AAACAS0UUPwAAAADQsFC/TEUUvwAAAADQsFC/AAAAAAAAgL8AAACAAAAAAAAAgD8AAACAS0UUPwAAAADQsFC/pOJ/vz0y9TwAAACAAAAAAAAAgL8AAACAAAAAABNqaj2YlH8/pOJ/vz0y9TwAAACAAAAAABNqaj2YlH8/pOJ/vz0y9TwAAACAAAAAAAAAgL8AAACAAAAAAPgsm72bQ3+/pOJ/vz0y9TwAAACAAAAAAPgsm72bQ3+/AAAAAAAAgL8AAACAAAAAABNqaj2YlH8/GLR/P1IVRb0AAACAAAAAABNqaj2YlH8/GLR/P1IVRb0AAACAAAAAAAAAgL8AAACAAAAAAPgsm72bQ3+/GLR/P1IVRb0AAACAAAAAAPgsm72bQ3+/GLR/P1IVRb0AAACAGLR/v1IVRb0AAACAAAAAAAAAgL8AAACAAAAAAB5qaj2WlH8/GLR/v1IVRb0AAACAAAAAAB5qaj2WlH8/GLR/v1IVRb0AAACAAAAAAAAAgL8AAACAAAAAAPgsm72bQ3+/GLR/v1IVRb0AAACAAAAAAPgsm72bQ3+/AAAAAAAAgL8AAACAAAAAAB5qaj2WlH8/o+J/Pz4y9TwAAACAAAAAAB5qaj2WlH8/o+J/Pz4y9TwAAACAAAAAAAAAgL8AAACAAAAAAPgsm72bQ3+/o+J/Pz4y9TwAAACAAAAAAPgsm72bQ3+/o+J/Pz4y9TwAAACAo+J/vz4y9TwAAACAAAAAAAAAgL8AAACAAAAAAPgsm72bQ38/o+J/vz4y9TwAAACAAAAAAPgsm72bQ38/o+J/vz4y9TwAAACAAAAAAAAAgL8AAACAAAAAAB5qaj2WlH+/o+J/vz4y9TwAAACAAAAAAB5qaj2WlH+/AAAAAAAAgL8AAACAAAAAAPgsm72bQ38/GLR/P1IVRb0AAACAAAAAAPgsm72bQ38/GLR/P1IVRb0AAACAAAAAAAAAgL8AAACAAAAAAB5qaj2WlH+/GLR/P1IVRb0AAACAAAAAAB5qaj2WlH+/GLR/P1IVRb0AAACAGLR/v1IVRb0AAACAAAAAAAAAgL8AAACAAAAAAPgsm72bQ38/GLR/v1IVRb0AAACAAAAAAPgsm72bQ38/GLR/v1IVRb0AAACAAAAAAAAAgL8AAACAAAAAABNqaj2YlH+/GLR/v1IVRb0AAACAAAAAABNqaj2YlH+/AAAAAAAAgL8AAACAAAAAAPgsm72bQ38/pOJ/Pz0y9TwAAACAAAAAAPgsm72bQ38/pOJ/Pz0y9TwAAACAAAAAAAAAgL8AAACAAAAAABNqaj2YlH+/pOJ/Pz0y9TwAAACAAAAAABNqaj2YlH+/pOJ/Pz0y9TwAAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAACAvwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAACAPwAAAAAAAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAACAPwAAAAAAAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAACAPwAAAAAAAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAACAPwAAAAAAAACAAACAPwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAACAvwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAACAvwAAAAAAAACABXeEPohEtj4Fd4Q+iES2PhK7fD6IRLY+BXeEPq0mAT8Fd4Q+rSYBPxK7fD6tJgE/HamGPohEtj4dqYY+iES2PpnCjD6IRLY+HamGPq0mAT8dqYY+rSYBP5nCjD6tJgE/BXeEPq0mAT8Fd4Q+rSYBPwy7fD6tJgE/BXeEPoZEtj4Fd4Q+hkS2Pgy7fD6GRLY+HamGPq0mAT8dqYY+rSYBP53CjD6tJgE/HamGPoZEtj4dqYY+hkS2Pp3CjD6GRLY+5oRaPo5u+T6t9Z4+PLy+Pk7CWj4uz/g+TsJaPi7P+D7Oc1o+fKzhPq31nj4Ed6o+iNFaPphO4j6I0Vo+mE7iPgFalz48vL4+9l9sPjQ3+T5AAmw+GJX4PkACbD4Ylfg+AVqXPgR3qj7gTmw+InXhPnYRbD6CFOI+dhFsPoIU4j6IHFU+ms7jPogcVT6azuM+XRGhPvLUqz6IHFU+Lov3PogcVT4ui/c+XRGhPk5evT5gVFY+qET3PmBUVj6oRPc+YFRWPqhE9z7mX1Y+GgXkPuZfVj4aBeQ+5l9WPhoF5D5RPpU+Tl69Pj63cT4WFfc+PrdxPhYV9z5RPpU+8tSrPj63cT6AWOM+PrdxPoBY4z5kf3A+CJ/jPmR/cD4In+M+ZH9wPgif4z7ec3A+lt72Pt5zcD6W3vY+3nNwPpbe9j4w8FY+rLP4PpFeoD7MK74+KhNvPgLZ9z4qE28+Atn3Phi5Vz5kLvg+GLlXPmQu+D4d8ZU+ziu+PtIIcD7sVvg+msBXPq4K4z6awFc+rgrjPh3xlT5yB6s+mONvPgQw4j7yylY+xIziPpFeoD5yB6s+rBpvPkq14j6sGm8+SrXiPu22hT4O9xw//roiP7iquj7ttoU+DvccP922hT7yLQY/3baFPvItBj8kS4M+TeUcPwJFHT+4qro+JEuDPk3lHD8rcoI++hUGPytygj76FQY//roiP0xVxT7xFIg+/+0cP/EUiD7/7Rw//eiIPrYhBj/96Ig+tiEGPwJFHT9MVcU+5eyAPuLhHD9FgYo+4uEcP3h/fj5cEQY/bS6MPlwRBj86WYM+/u0cP6aqIj/8dcU+OlmDPv7tHD8thYI+tiEGPy2Fgj62IQY/5eyAPuLhHD+mqiI/AIq6PkWBij7i4Rw/eH9+PlwRBj9xLow+XREGP1pVHT/8dcU+PbeFPg73HD89t4U+DvccP023hT7yLQY/TbeFPvItBj9aVR0/AIq6PgUjiD5N5Rw/BSOIPk3lHD8B/Ig++hUGPwH8iD76FQY/BSOIPk7lHD9aVR0/AIq6PgUjiD5O5Rw/AfyIPvoVBj8B/Ig++hUGPz23hT4O9xw/WlUdP/x1xT49t4U+DvccP023hT7yLQY/TbeFPvItBj+mqiI/AIq6PkGBij7i4Rw/5OyAPuLhHD9xLow+XREGP3h/fj5cEQY/pqoiP/x1xT44WYM+/+0cPzhZgz7/7Rw/LYWCPrYhBj8thYI+tiEGP0WBij7i4Rw/WlUdPwCKuj7l7IA+4uEcP3EujD5cEQY/eH9+PlwRBj/xFIg+/+0cP1pVHT/8dcU+8RSIPv/tHD8B6Yg+tiEGPwHpiD62IQY/pqoiPwCKuj4kS4M+TeUcPyRLgz5N5Rw/K3KCPvoVBj8rcoI++hUGP6aqIj/8dcU+7baFPg73HD/ttoU+DvccP922hT7yLQY/3baFPvItBj9R/Zk+HHnEPlH9mT4cecQ+BQKVPhx5xD5R/Zk+LIUbP1H9mT4shRs/BQKVPiyFGz89/Zs+AHjEPj39mz4AeMQ+hfigPgB4xD49/Zs+noQbPz39mz6ehBs/hfigPp6EGz9R/Zk+ooQbP1H9mT6ihBs/BQKVPqKEGz9R/Zk+DHjEPlH9mT4MeMQ+BQKVPgx4xD49/Zs+JoUbPz39mz4mhRs/hfigPiaFGz89/Zs+FHnEPj39mz4UecQ+hfigPhR5xD4AAAIABQAAAAUAAwAKAAsACAAKAAgABwAEAAkABgAEAAYAAQAMAA8AEQAMABEADgAWABMAFAAWABQAFwAQAA0AEgAQABIAFQBMAEgAHgBMAB4AHABHAEMAIwBHACMAIQAcAB4AJwAcACcAJQAhACMAGgAhABoAGABBAEYAIABBACAAGQBCAEUAGwBCABsAIgBOAEkAMwBOADMAOgA6ADMAMAA6ADAAPQBNAEoANwBNADcAKgBLAE8AOwBLADsAOAA5ADwAPwA5AD8ANgBAAEQALwBAAC8ALAArAC4AMQArADEAKAAYABoARAAYAEQAQAAqADcANAAqADQALQA9ADAARQA9AEUAQgA1AD4AQwA1AEMARwAlACcATwAlAE8ASwAtADQARgAtAEYAQQAdACQASgAdAEoATQApADIASAApAEgATAAmAB8ASQAmAEkATgBQAFMAWABQAFgAVQBXAFkAYgBXAGIAYABhAGMAXgBhAF4AXABbAF0AVABbAFQAUgBWAF8AWgBWAFoAUQBkAGcAbABkAGwAaQBrAG0AdgBrAHYAdAB1AHcAcgB1AHIAcABvAHEAaABvAGgAZgBqAHMAbgBqAG4AZQB4AHsAgAB4AIAAfQB/AIEAigB/AIoAiACJAIsAhgCJAIYAhACDAIUAfACDAHwAegB+AIcAggB+AIIAeQCMAI8AlACMAJQAkQCTAJUAngCTAJ4AnACdAJ8AmgCdAJoAmACXAJkAkACXAJAAjgCSAJsAlgCSAJYAjQCgAKIApQCgAKUAowCqAKsAqACqAKgApwCkAKkApgCkAKYAoQCtALAAsQCtALEArgC1ALIAtAC1ALQAtwCvAKwAswCvALMAtgAWiYS+829LPncAAD8WiYS+829LPncAAD8WiYS+829LPncAAD8WiYS+829LPhD//74WiYS+829LPhD//74WiYS+829LPhD//74WiYS+FVbrPncAAD8WiYS+FVbrPncAAD8WiYS+FVbrPncAAD9Ec4Q+829LPncAAD9Ec4Q+829LPncAAD9Ec4Q+829LPncAAD9Ec4Q+829LPhD//75Ec4Q+829LPhD//75Ec4Q+829LPhD//75Ec4Q+FVbrPncAAD9Ec4Q+FVbrPncAAD9Ec4Q+FVbrPncAAD9Ec4Q+FVbrPhD//75Ec4Q+FVbrPhD//75Ec4Q+FVbrPhD//77pu2c+FVbrPpT77z7pu2c+FVbrPpT77z7pu2c+FVbrPpT77z7pu2c+FVbrPrb5777pu2c+FVbrPrb5777pu2c+FVbrPrb5776M52e+FVbrPpT77z6M52e+FVbrPpT77z6M52e+FVbrPpT77z7pu2c+ExlmPpT77z7pu2c+ExlmPpT77z7pu2c+ExlmPpT77z7pu2c+ExlmPrb5777pu2c+ExlmPrb5777pu2c+ExlmPrb5776M52e+ExlmPpT77z6M52e+ExlmPpT77z6M52e+ExlmPpT77z6M52e+ExlmPrb5776M52e+ExlmPrb5776M52e+ExlmPrb5776M52e+FVbrPrb5776M52e+FVbrPrb5776M52e+FVbrPrb5776M52e+FVbrPrb5774WiYS+FVbrPhD//74WiYS+FVbrPhD//74WiYS+FVbrPhD//74WiYS+FVbrPhD//74WiYS+829LP3cAAD8WiYS+829LP3cAAD8WiYS+829LP3cAAD+M52e+8d1kP5T77z6M52e+8d1kP5T77z6M52e+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rgCmAK4AqACiALEArQCiAK0AqgCnAKwAsACnALAApACkAJsAsgCkALIApwCdALMAtQCdALUAtwC7ALQAsgC7ALIAmwC3ALUAuQC3ALkAzwC9ALgAtAC9ALQAuwC+ALwAugC+ALoAmADBALwAvgDBAL4AxQC9AMAAxwC9AMcAuADCAMkAxwDCAMcAwADBAMUA0wDBANMAwwDIAMwAygDIAMoAxgDGAMoAzwDGAM8AuQDEAMsAzQDEAM0A0gDEAL8AzgDEAM4AywCZALYAzgCZAM4AvwDSAM0A0QDSANEA1ADsANAAzADsAMwAyADDANMA1QDDANUA1wDeANcA1QDeANUA2QDYANQA0QDYANEA4ADrAN4A2QDrANkA3ADgAOUA2wDgANsA2ADhAN8A0ADhANAA7ADhAOYA4wDhAOMA3wDpANoA5ADpAOQA5wDiAN0A6gDiAOoA6ADWAN0A4gDWAOIA7QDWAO0AyQDWAMkAwgDvAPQADgHvAA4B8QDwABIB8gDwAPIA7gD2AO4A8gD2APIA+wDvAPcA/QDvAP0A9AD9APcA+QD9APkAAQH4APYA+wD4APsABwH+AAABCwH+AAsB9QD+AAMBBgH+AAYBAAH6AAkBBQH6AAUBAgH/AAQBCAH/AAgB/AD8APMACgH8AAoB/wD1AAsBDQH1AA0BDwETAQwBCgETAQoB8wAPAQ0BEQEPAREBJwEVARABDAEVAQwBEwEWARQBEgEWARIB8AAZARQBFgEZARYBHQEVARgBHwEVAR8BEAEaASEBHwEaAR8BGAEZAR0BKwEZASsBGwEgASQBIgEgASIBHgEeASIBJwEeAScBEQEcASMBJQEcASUBKgEcARcBJgEcASYBIwHxAA4BJgHxACYBFwEqASUBKQEqASkBLAFEASgBJAFEASQBIAEbASsBLQEbAS0BLwE2AS8BLQE2AS0BMQEwASwBKQEwASkBOAE4AT0BMwE4ATMBMAFDATYBMQFDATEBNAE5ATcBKAE5ASgBRAE5AT4BOwE5ATsBNwFBATIBPAFBATwBPwE6ATUBQgE6AUIBQAEuATUBOgEuAToBRQEuAUUBIQEuASEBGgFGAUkBRwFGAUcBSwFGAV0BSQFGAUsBTQFGAU0BTwFGAU8BUQFGAVEBUwFGAVMBVQFGAVUBVwFGAVcBWQFGAVkBWwFGAVsBXQFfAVwBZQFfAWUBYQFKAV4BYAFKAWABZgFjAWgBZgFjAWYBYAGGAWQBYQGGAWEBZQFoAWwBaQFoAWkBZgFIAUoBZgFIAWYBaQFsAW8BbQFsAW0BaQFMAUgBaQFMAWkBbQFvAXIBcAFvAXABbQFOAUwBbQFOAW0BcAFyAXUBcwFyAXMBcAFQAU4BcAFQAXABcwF1AXgBdgF1AXYBcwFSAVABcwFSAXMBdgF4AXsBeQF4AXkBdgFUAVIBdgFUAXYBeQF7AX4BfAF7AXwBeQFWAVQBeQFWAXkBfAF+AYEBfwF+AX8BfAFYAVYBfAFYAXwBfwGBAYQBggGBAYIBfwFaAVgBfwFaAX8BggGEAYYBZQGEAWUBggFcAVoBggFcAYIBZQGAAYwBiAGAAYgBgwGDAYgBjgGDAY4BhQGNAYcBiQGNAYkBjwGHAYsBsAGHAbABiQGQAY0BjwGQAY8BkgGFAY4BkQGFAZEBYgGTAZABkgGTAZIBlQFiAZEBlAFiAZQBZwGWAZMBlQGWAZUBmwFnAZQBmAFnAZgBawGZAZYBmwGZAZsBnAFqAZcBmgFqAZoBbgGeAaEBnAGeAZwBmwGjAZ4BmwGjAZsBlQGfAZ0BogGfAaABnQGfAaIBpAGlAaMBlQGlAZUBkgGfAaQBpgGnAaUBkgGnAZIBjwGfAaYBqAGpAacBjwGpAY8BiQGfAagBqgGsAakBiQGsAYkBsAGfAaoBrQGuAasBrwGuAa8BsQGKAbIBsQGKAbEBrwGyAbUBtAGyAbQBsQG5Aa4BsQG5AbEBtAG1AcYBtwG1AbcBtAG7AbkBtAG7AbQBtwGfAa0BuAGfAbgBugGfAboBvAG9AbsBtwG9AbcBwAGfAbwBvgG/Ab0BwAG/AcABwwHGAcEBwAHGAcABtwHBAcQBwwHBAcMBwAHEAZkBnAHEAZwBwwGhAb8BwwGhAcMBnAFuAZoBxQFuAcUBcQFxAcUBwgFxAcIBdAF0AcIBxwF0AccBdwF3AccBtgF3AbYBegGfAb4BoAF6AbYBswF6AbMBfQF9AbMBjAF9AYwBgAHIAcsByQHIAckBzQHIAeABywHIAc0BzwHIAc8B0QHIAdEB0wHIAdMB1QHIAdUB1wHIAdcB2gHIAdoB3AHIAdwB3gHIAd4B4AHhAd8B5QHhAeUB4gHMAeEB4gHMAeIB5gHkAegB5gHkAeYB4gEIAuQB4gEIAuIB5QHoAewB6QHoAekB5gHKAcwB5gHKAeYB6QHsAe8B7QHsAe0B6QHOAcoB6QHOAekB7QHvAfIB8AHvAfAB7QHQAc4B7QHQAe0B8AHyAfUB8wHyAfMB8AHSAdAB8AHSAfAB8wH1AfgB9gH1AfYB8wHUAdIB8wHUAfMB9gH4AfsB+QH4AfkB9gHWAdQB9gHWAfYB+QH7AQAC/QH7Af0B+QHZAdYB+QHZAfkB/QH/AQMCAQL/AQEC/AHbAdgB/AHbAfwBAQIDAgYCBAIDAgQCAQLdAdsBAQLdAQECBAIGAggC5QEGAuUBBALfAd0BBALfAQQC5QECAg0CCgICAgoCBQIFAgoCDwIFAg8CBwIOAgkCCwIOAgsCEAIJAgwCMgIJAjICCwIRAg4CEAIRAhACEwIHAg8CEgIHAhIC4wEUAhECEwIUAhMCFgLjARICFQLjARUC5wEXAhQCFgIXAhYCHQLnARUCGALnARgC6gEaAhcCHQIaAh0CHgLrARkCHALrARwC7gEhAiQCHgIhAh4CHQInAiECHQInAh0CFgIiAiACJgIiAiMCIAIiAiYCKAIpAicCFgIpAhYCEwIiAigCKgIrAikCEwIrAhMCEAIiAioCLAItAisCEAItAhACCwIiAiwCLgIvAi0CCwIvAgsCMgIiAi4CMAIxAi8CMgIxAjICMwIMAjQCMwIMAjMCMgI0AjcCNgI0AjYCMwI7AjECMwI7AjMCNgI3AkgCOQI3AjkCNgI9AjsCNgI9AjYCOQIiAjACOgIiAjoCPAIiAjwCPgI/Aj0COQI/AjkCQgIiAj4CQAJBAj8CQgJBAkICRQJIAkMCQgJIAkICOQJDAkYCRQJDAkUCQgJGAhsCHwJGAh8CRQIlAkECRQIlAkUCHwLuARwCRwLuAUcC8QHxAUcCRALxAUQC9AH0AUQCSQL0AUkC9wH3AUkCOAL3ATgC+gEiAkACIwL6ATgCNQL6ATUC/gH+ATUCDQL+AQ0CAgJKAk0CSwJKAksCTwJKAmICTQJKAk8CUgJKAlICVAJKAlQCVgJKAlYCWAJKAlgCWgJKAloCXAJKAlwCXgJKAl4CYAJKAmACYgJjAmECZwJjAmcCZAJOAmMCZAJOAmQCaAJmAmoCaAJmAmgCZAKKAmYCZAKKAmQCZwJqAm4CawJqAmsCaAJMAk4CaAJMAmgCawJuAnICbwJuAm8CawJQAkwCawJQAmsCbwJzAnYCdAJzAnQCcAJTAlECcAJTAnACdAJ2AnkCdwJ2AncCdAJVAlMCdAJVAnQCdwJ5AnwCegJ5AnoCdwJXAlUCdwJXAncCegJ8An8CfQJ8An0CegJZAlcCegJZAnoCfQJ/AoICgAJ/AoACfQJbAlkCfQJbAn0CgAKCAoUCgwKCAoMCgAJdAlsCgAJdAoACgwKFAogChgKFAoYCgwJfAl0CgwJfAoMChgKIAooCZwKIAmcChgJhAl8ChgJhAoYCZwKEAo8CjAKEAowChwKHAowCkQKHApECiQKQAosCjQKQAo0CkgKLAo4CsQKLArECjQKTApACkgKTApIClQKJApEClAKJApQCZQKWApMClQKWApUCmAJlApQClwJlApcCaQKZApYCmAKZApgCngJpApcCmwJpApsCbQKcApkCngKcAp4CnwJsApoCnQJsAp0CcQKhAqQCnwKhAp8CngKmAqECngKmAp4CmAKiAqACpQKiAqMCoAKiAqUCpwKoAqYCmAKoApgClQKiAqcCqQKqAqgClQKqApUCkgKiAqkCqwKsAqoCkgKsApICjQKiAqsCrQKuAqwCjQKuAo0CsQKiAq0CrwKwAq4CsQKwArECsgKOArMCsgKOArICsQKzArYCtQKzArUCsgK6ArACsgK6ArICtQK2AsoCuAK2ArgCtQK8AroCtQK8ArUCuAKiAq8CuQKiArkCuwKiArsCvQK+ArwCuAK+ArgCwgKiAr0CvwLAAr4CwgLAAsICxQLKAsMCwgLKAsICuALDAscCxQLDAsUCwgLIApwCnwLIAp8CxgKkAsECxgKkAsYCnwJxAp0CyQJxAskCdQJ1AskCxAJ1AsQCeAJ4AsQCywJ4AssCewJ7AssCtwJ7ArcCfgKiAr8CowJ+ArcCtAJ+ArQCgQKBArQCjwKBAo8ChALMAs8CzQLMAs0C0QLMAuQCzwLMAtEC0wLMAtMC1QLMAtUC1wLMAtcC2QLMAtkC2wLMAtsC3QLMAt0C3wLMAt8C4gLMAuIC5ALlAuMC6QLlAukC5gLQAuUC5gLQAuYC6gLoAuwC6gLoAuoC5gIMA+gC5gIMA+YC6QLsAvAC7QLsAu0C6gLOAtAC6gLOAuoC7QLwAvMC8QLwAvEC7QLSAs4C7QLSAu0C8QLzAvYC9ALzAvQC8QLUAtIC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PQA7ADsAPQBBADsAQQA/AD8AQQBFAD8ARQBDAEMARQBJAEMASQBHAEcASQBNAEcATQBLAEsATQBRAEsAUQBPAE8AUQAXAE8AFwASAAsADABzAFQAUwARAFQAEQATAFYAVQAVAFYAFQAYAFcAVAATAFcAEwAZAFUAWAAbAFUAGwAVAFkAVwAZAFkAGQAdAFgAWgAfAFgAHwAbAFsAWQAdAFsAHQAhAFoAXAAkAFoAJAAfAF0AWwAhAF0AIQAnAFwAXgApAFwAKQAkAF8AXQAnAF8AJwArAF4AYAAtAF4ALQApAGEAXwArAGEAKwAvAGAAYgAxAGAAMQAtAGMAYQAvAGMALwAzAGIAZAA2AGIANgAxAGUAYwAzAGUAMwA4AGQAZgA6AGQAOgA2AGcAZQA4AGcAOAA8AGYAaAA+AGYAPgA6AGkAZwA8AGkAPABAAGgAagBCAGgAQgA+AGsAaQBAAGsAQABEAGoAbABGAGoARgBCAG0AawBEAG0ARABIAGwAbgBKAGwASgBGAG8AbQBIAG8ASABMAG4AcABOAG4ATgBKAHEAbwBMAHEATABQAHAAcgBSAHAAUgBOAFMAcQBQAFMAUAARAHIAVgAYAHIAGABSAAIAAABTAAIAUwBUAAEAVQBWAAMAAgBUAAMAVABXAAEAWABVAAQAAwBXAAQAVwBZAAEAWgBYAAUABABZAAUAWQBbAAEAXABaAAYABQBbAAYAWwBdAAEAXgBcAAcABgBdAAcAXQBfAAEAYABeAAgABwBfAAgAXwBhAAEAYgBgAAkACABhAAkAYQBjAAEAZABiAAoACQBjAAoAYwBlAAEAZgBkAAsACgBlAAsAZQBnAAEAaABmAAwACwBnAAwAZwBpAAEAagBoAA0ADABpAA0AaQBrAAEAbABqAA4ADQBrAA4AawBtAAEAbgBsAA8ADgBtAA8AbQBvAAEAcABuABAADwBvABAAbwBxAAEAcgBwAAAAEABxAAAAcQBTAAEAVgByAA8AEABzAAQABQBzAAgACQBzAAwADQBzAAAAAgBzABAAAABzAAUABgBzAAkACgBzAA0ADgBzAAIAAwBzAAYABwBzAAoACwBzAA4ADwBzAAMABABzAAcACABzAIUAhgCSAIUAkgCVAHoAfACGAHoAhgCFAIcAggCaAIcAmgCTAIAAgQB3AIAAdwB1AHkAhAB/AHkA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fAD/AHwAfgANAQoBhgANAYYAiAC9ABYBkAC9AJAAdADGAPkAeADGAHgAegAFAdUAggAFAYIAhAATAQ4BjAATAYwAjgD2APEAcgD2AHIAdgADAf8AfgADAX4AgADkAA0BiADkAIgAigCUAJMAcQCUAHEAcwCTAJcAdQCTAHUAcQCXAJkAdwCXAHcAdQCZAJsAeQCZAHkAdwCbAJ0AewCbAHsAeQCdAJ8AfQCdAH0AewCfAKEAfwCfAH8AfQChAKQAgwChAIMAfwCkAKUAhQCkAIUAgwClAKcAhwClAIcAhQCnAKkAiQCnAIkAhwCpAKsAiwCpAIsAiQCrAK0AjQCrAI0AiwCtAK8AjwCtAI8AjQCvALEAkQCvAJEAjwCxAJQAcwCxAHMAkQBTAFAAkgBTAJIAlQBQAFQAlgBQAJYAkgBUAFYAmABUAJgAlgBWAFgAmgBWAJoAmABYAFoAnABYAJwAmgBaAFwAngBaAJ4AnABcAF4AoABcAKAAngBeAGAAogBeAKIAoABhAGQApgBhAKYAowBkAGYAqABkAKgApgBmAGgAqgBmAKoAqABoAGoArABoAKwAqgBqAGwArgBqAK4ArABsAG4AsABsALAArgBuAHAAsgBuALIAsABwAFMAlQBwAJUAsgAVAbUAtABnAGUAswBZAFcAswBpAGcAswBbAFkAswBrAGkAswBdAFsAswBtAGsAswBfAF0AswBvAG0AswBiAF8AswBRAFIAswBSAG8AswBjAGIAswBVAFEAswBlAGMAswAJAQwBtAD7AP0AtAC1APIAtADjABABtAAAAdQAtAD0APcAtAASARUBtAAHAQkBtADEAPsAtAAMAeMAtAD9AAABtADyAPQAtAD3AMQAtADUAAcBtAAAAAYA8wAAAPMAtgAJAAMAvQAJAL0A8QAGAAkA8QAGAPEA8wATABAA+AATAPgA+QAQABUAxQAQAMUA+AAXABMA+QAXAPkAxgAVABoA/AAVAPwAxQAdABcAxgAdAMYA+gAaAB0A+gAaAPoA/AAnACQAAQEnAAEBBAEkACkA0wAkANMAAQEqACcABAEqAAQB1QApACwABgEpAAYB0wAvACoA1QAvANUABQEsAC8ABQEsAAUBBgE5ADYACwE5AAsBDQE2ADwA4gA2AOIACwE+ADkADQE+AA0B5AA8AEAADwE8AA8B4gBDAD4A5ABDAOQADgFAAEMADgFAAA4BDwFNAEoAFAFNABQBFgFKAAAAtgBKALYAFAEDAE0AFgEDABYBvQC7ALgA8wC7APMA8QC4AAsA9QC4APUA8wANALsA8QANAPEA9gALAMMA+AALAPgA9QDAAA0A9gDAAPYA+QDDAMAA+QDDAPkA+ADMAMkA/ADMAPwA+gDJAB8A/gDJAP4A/AAhAMwA+gAhAPoA/wAfANEAAgEfAAIB/gDOACEA/wDOAP8AAwHRAM4AAwHRAAMBAgHaANcABgHaAAYBBQHXADIACAHXAAgBBgE0ANoABQE0AAUBCgEyAN8ACwEyAAsBCAHcADQACgHcAAoBDQHfANwADQHfAA0BCwHoAOUADwHoAA8BDgHlAEYAEQHlABEBDwFIAOgADgFIAA4BEwFGAO8AFAFGABQBEQHsAEgAEwHsABMBFgHvAOwAFgHvABYBFAEXARoBPAEXATwBOQFrAWgBHAFrARwBHgEeARwBcgEeAXIBbwFCAT8BIAFCASABIgEiASABSAEiAUgBRQF4AXUBJAF4ASQBJgEmASQBfQEmAX0BegFOAUsBJwFOAScBKgEqAScBUgEqAVIBTwGDAYABKwGDASsBLQEtASsBiAEtAYgBhQFYAVUBLwFYAS8BMQExAS8BXgExAV4BWwGOAYsBMwGOATMBNQE1ATMBlQE1AZUBkgFkAWEBGgFkARoBFwERABYAHwERAB8BPQHPANIAewHPAHsBfgE/AEUAYAE/AGABMAEZABQAIQEZACEBRAHWANkAfwHWAH8BggFEAEIAXQFEAF0BXwEWABsARgEWAEYBHwEzANgAhAEzAIQBLgFMAE8AYwFMAGMBZgG5ALwAaQG5AGkBbAEcABgAQwEcAEMBRwHbADUALAHbACwBgQEBAEsAZQEBAGUBGAEKALcAagEKAGoBHQEiACUASQEiAEkBTAHgADMALgHgAC4BhgFOAAIAGQFOABkBYgG6AAwAGwG6ABsBZwEoACMATQEoAE0BKQE1AN0AiQE1AIkBLAHCAAoAHQHCAB0BbgEmACsAKAEmACgBSgHeAOEAhwHeAIcBigEMAL8AcQEMAHEBGwEtACgAKQEtACkBUAHnAOoAjQHnAI0BkAG+AMEAbQG+AG0BcAErADAAUwErAFMBKAFHAOYAjwFHAI8BNgEFAAEAGAEFABgBOAHHAMoAcwHHAHMBdgExAC4AUQExAFEBVAE=" + } + ] +} diff --git a/Assets/Models/KitchenAddOns1.shmodel b/Assets/Models/KitchenAddOns1.shmodel new file mode 100644 index 00000000..ccead55f Binary files /dev/null and b/Assets/Models/KitchenAddOns1.shmodel differ diff --git a/Assets/Models/KitchenAddOns1.shmodel.shmeta b/Assets/Models/KitchenAddOns1.shmodel.shmeta new file mode 100644 index 00000000..38dd7817 --- /dev/null +++ b/Assets/Models/KitchenAddOns1.shmodel.shmeta @@ -0,0 +1,22 @@ +Name: KitchenAddOns1 +ID: 79971916 +Type: 4 +Sub Assets: +Name: TallStool01 +ID: 140539561 +Type: 8 +Name: Chair01 +ID: 142860936 +Type: 8 +Name: Table01 +ID: 140474147 +Type: 8 +Name: ServiceTray01 +ID: 140279658 +Type: 8 +Name: RubbishBin01_Body +ID: 143026779 +Type: 8 +Name: RubbishBin01_Lid +ID: 142134724 +Type: 8 diff --git a/Assets/Models/KitchenCounterEmpty.gltf b/Assets/Models/KitchenCounterEmpty.gltf new file mode 100644 index 00000000..42678c88 --- /dev/null +++ b/Assets/Models/KitchenCounterEmpty.gltf @@ -0,0 +1,141 @@ +{ + "asset" : { + "generator" : "Khronos glTF Blender I/O v3.3.27", + "version" : "2.0" + }, + "scene" : 0, + "scenes" : [ + { + "name" : "Scene", + "nodes" : [ + 0 + ] + } + ], + "nodes" : [ + { + "mesh" : 0, + "name" : "CupboardEmpty" + } + ], + "materials" : [ + { + "doubleSided" : true, + "name" : "Material", + "pbrMetallicRoughness" : { + "baseColorTexture" : { + "index" : 0 + }, + "metallicFactor" : 0 + } + } + ], + "meshes" : [ + { + "name" : "Cube.031", + "primitives" : [ + { + "attributes" : { + "POSITION" : 0, + "NORMAL" : 1, + "TEXCOORD_0" : 2 + }, + "indices" : 3, + "material" : 0 + } + ] + } + ], + "textures" : [ + { + "sampler" : 0, + "source" : 0 + } + ], + "images" : [ + { + "bufferView" : 4, + "mimeType" : "image/png", + "name" : "TX_StaticMesh" + } + ], + "accessors" : [ + { + "bufferView" : 0, + "componentType" : 5126, + "count" : 188, + "max" : [ + 0.5, + 1.2000008821487427, + 0.4999998211860657 + ], + "min" : [ + -0.5, + 0, + -0.5000001192092896 + ], + "type" : "VEC3" + }, + { + "bufferView" : 1, + "componentType" : 5126, + "count" : 188, + "type" : "VEC3" + }, + { + "bufferView" : 2, + "componentType" : 5126, + "count" : 188, + "type" : "VEC2" + }, + { + "bufferView" : 3, + "componentType" : 5123, + "count" : 462, + "type" : "SCALAR" + } + ], + "bufferViews" : [ + { + "buffer" : 0, + "byteLength" : 2256, + "byteOffset" : 0, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 2256, + "byteOffset" : 2256, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 1504, + "byteOffset" : 4512, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 924, + "byteOffset" : 6016, + "target" : 34963 + }, + { + "buffer" : 0, + "byteLength" : 54895, + "byteOffset" : 6940 + } + ], + "samplers" : [ + { + "magFilter" : 9729, + "minFilter" : 9987 + } + ], + "buffers" : [ + { + "byteLength" : 61836, + "uri" : "data:application/octet-stream;base64,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" + } + ] +} diff --git a/Assets/Models/KitchenCounterEmpty.shmodel b/Assets/Models/KitchenCounterEmpty.shmodel new file mode 100644 index 00000000..ed115838 Binary files /dev/null and b/Assets/Models/KitchenCounterEmpty.shmodel differ diff --git a/Assets/Models/KitchenCounterEmpty.shmodel.shmeta b/Assets/Models/KitchenCounterEmpty.shmodel.shmeta new file mode 100644 index 00000000..61ac15ac --- /dev/null +++ b/Assets/Models/KitchenCounterEmpty.shmodel.shmeta @@ -0,0 +1,7 @@ +Name: KitchenCounterEmpty +ID: 78136063 +Type: 4 +Sub Assets: +Name: CupboardEmpty +ID: 144189529 +Type: 8 diff --git a/Assets/Models/KitchenCounterMeshs.gltf b/Assets/Models/KitchenCounterMeshs.gltf new file mode 100644 index 00000000..09f85d7c --- /dev/null +++ b/Assets/Models/KitchenCounterMeshs.gltf @@ -0,0 +1,1393 @@ +{ + "asset" : { + "generator" : "Khronos glTF Blender I/O v3.3.27", + "version" : "2.0" + }, + "extensionsUsed" : [ + "KHR_materials_specular", + "KHR_materials_ior" + ], + "scene" : 0, + "scenes" : [ + { + "name" : "Scene", + "nodes" : [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 16 + ] + } + ], + "nodes" : [ + { + "mesh" : 0, + "name" : "DrawerMid01", + "translation" : [ + 0.33136627078056335, + 0.583078920841217, + 0.0002712525601964444 + ] + }, + { + "mesh" : 1, + "name" : "DrawerSmall01", + "translation" : [ + 0.33136627078056335, + 1.0143386125564575, + 0.0002712525601964444 + ] + }, + { + "mesh" : 2, + "name" : "DrawerSmall02", + "translation" : [ + 0.33136627078056335, + 0.6550519466400146, + 0.0002712525601964444 + ] + }, + { + "mesh" : 3, + "name" : "DrawerSmall03", + "translation" : [ + 0.33136627078056335, + 0.2957652807235718, + 0.0002712525601964444 + ] + }, + { + "mesh" : 4, + "name" : "DrawerLarge01", + "translation" : [ + 0.33136627078056335, + 0.874304473400116, + 0.0002712525601964444 + ] + }, + { + "mesh" : 5, + "name" : "DoorLeft", + "translation" : [ + 0.47544828057289124, + 0.05306582525372505, + -0.4599999785423279 + ] + }, + { + "mesh" : 6, + "name" : "DoorRight", + "translation" : [ + 0.47544828057289124, + 0.05306582525372505, + 0.4599999785423279 + ] + }, + { + "mesh" : 7, + "name" : "CupboardSolid" + }, + { + "mesh" : 8, + "name" : "DoorDoubleRight", + "translation" : [ + 0.47544828057289124, + 0.05306582525372505, + 0.4599999785423279 + ] + }, + { + "mesh" : 9, + "name" : "CupboardSinkPiece" + }, + { + "mesh" : 10, + "name" : "DoorDoubleLeft", + "translation" : [ + 0.47544828057289124, + 0.05306582525372505, + -0.4599999785423279 + ] + }, + { + "mesh" : 11, + "name" : "CupboardSolidBlock" + }, + { + "mesh" : 12, + "name" : "CupboardSolidHalf" + }, + { + "mesh" : 13, + "name" : "DoorOvenGlass", + "translation" : [ + 0.0012338757514953613, + 0.3594605326652527, + 0 + ] + }, + { + "children" : [ + 13 + ], + "mesh" : 14, + "name" : "DoorOven", + "translation" : [ + 0.5299999713897705, + 0.26999998092651367, + 0 + ] + }, + { + "mesh" : 15, + "name" : "OvenTray", + "translation" : [ + 0, + 0.5794612169265747, + 0 + ] + }, + { + "children" : [ + 14, + 15 + ], + "mesh" : 16, + "name" : "CupboardOven" + } + ], + "materials" : [ + { + "doubleSided" : true, + "extensions" : { + "KHR_materials_specular" : { + "specularColorFactor" : [ + 0, + 0, + 0 + ] + }, + "KHR_materials_ior" : { + "ior" : 1.4500000476837158 + } + }, + "name" : "Material", + "pbrMetallicRoughness" : { + "baseColorTexture" : { + "index" : 0 + }, + "metallicFactor" : 0 + } + } + ], + "meshes" : [ + { + "name" : "Cube.032", + "primitives" : [ + { + "attributes" : { + "POSITION" : 0, + "NORMAL" : 1, + "TEXCOORD_0" : 2 + }, + "indices" : 3, + "material" : 0 + } + ] + }, + { + "name" : "Cube.033", + "primitives" : [ + { + "attributes" : { + "POSITION" : 4, + "NORMAL" : 5, + "TEXCOORD_0" : 6 + }, + "indices" : 3, + "material" : 0 + } + ] + }, + { + "name" : "Cube.034", + "primitives" : [ + { + "attributes" : { + "POSITION" : 7, + "NORMAL" : 8, + "TEXCOORD_0" : 9 + }, + "indices" : 3, + "material" : 0 + } + ] + }, + { + "name" : "Cube.035", + "primitives" : [ + { + "attributes" : { + "POSITION" : 10, + "NORMAL" : 11, + "TEXCOORD_0" : 12 + }, + "indices" : 3, + "material" : 0 + } + ] + }, + { + "name" : "Cube.036", + "primitives" : [ + { + "attributes" : { + "POSITION" : 13, + "NORMAL" : 14, + "TEXCOORD_0" : 15 + }, + "indices" : 3, + "material" : 0 + } + ] + }, + { + "name" : "Cube.037", + "primitives" : [ + { + "attributes" : { + "POSITION" : 16, + "NORMAL" : 17, + "TEXCOORD_0" : 18 + }, + "indices" : 19, + "material" : 0 + } + ] + }, + { + "name" : "Cube.038", + "primitives" : [ + { + "attributes" : { + "POSITION" : 20, + "NORMAL" : 21, + "TEXCOORD_0" : 22 + }, + "indices" : 19, + "material" : 0 + } + ] + }, + { + "name" : "Cube.039", + "primitives" : [ + { + "attributes" : { + "POSITION" : 23, + "NORMAL" : 24, + "TEXCOORD_0" : 25 + }, + "indices" : 26, + "material" : 0 + } + ] + }, + { + "name" : "Cube.040", + "primitives" : [ + { + "attributes" : { + "POSITION" : 27, + "NORMAL" : 28, + "TEXCOORD_0" : 29 + }, + "indices" : 30, + "material" : 0 + } + ] + }, + { + "name" : "Cube.041", + "primitives" : [ + { + "attributes" : { + "POSITION" : 31, + "NORMAL" : 32, + "TEXCOORD_0" : 33 + }, + "indices" : 34, + "material" : 0 + } + ] + }, + { + "name" : "Cube.049", + "primitives" : [ + { + "attributes" : { + "POSITION" : 35, + "NORMAL" : 36, + "TEXCOORD_0" : 37 + }, + "indices" : 38, + "material" : 0 + } + ] + }, + { + "name" : "Cube.048", + "primitives" : [ + { + "attributes" : { + "POSITION" : 39, + "NORMAL" : 40, + "TEXCOORD_0" : 41 + }, + "indices" : 42, + "material" : 0 + } + ] + }, + { + "name" : "Cube.050", + "primitives" : [ + { + "attributes" : { + "POSITION" : 43, + "NORMAL" : 44, + "TEXCOORD_0" : 45 + }, + "indices" : 46, + "material" : 0 + } + ] + }, + { + "name" : "Cube.047", + "primitives" : [ + { + "attributes" : { + "POSITION" : 47, + "NORMAL" : 48, + "TEXCOORD_0" : 49 + }, + "indices" : 50, + "material" : 0 + } + ] + }, + { + "name" : "Cube.003", + "primitives" : [ + { + "attributes" : { + "POSITION" : 51, + "NORMAL" : 52, + "TEXCOORD_0" : 53 + }, + "indices" : 54, + "material" : 0 + } + ] + }, + { + "name" : "Plane", + "primitives" : [ + { + "attributes" : { + "POSITION" : 55, + "NORMAL" : 56, + "TEXCOORD_0" : 57 + }, + "indices" : 58, + "material" : 0 + } + ] + }, + { + "name" : "Cube.002", + "primitives" : [ + { + "attributes" : { + "POSITION" : 59, + "NORMAL" : 60, + "TEXCOORD_0" : 61 + }, + "indices" : 62, + "material" : 0 + } + ] + } + ], + "textures" : [ + { + "sampler" : 0, + "source" : 0 + } + ], + "images" : [ + { + "bufferView" : 4, + "mimeType" : "image/png", + "name" : "TX_StaticMesh" + } + ], + "accessors" : [ + { + "bufferView" : 0, + "componentType" : 5126, + "count" : 119, + "max" : [ + 0.24205973744392395, + 0.18450528383255005, + 0.45032012462615967 + ], + "min" : [ + -0.7816683650016785, + -0.5314081311225891, + -0.44950637221336365 + ], + "type" : "VEC3" + }, + { + "bufferView" : 1, + "componentType" : 5126, + "count" : 119, + "type" : "VEC3" + }, + { + "bufferView" : 2, + "componentType" : 5126, + "count" : 119, + "type" : "VEC2" + }, + { + "bufferView" : 3, + "componentType" : 5123, + "count" : 204, + "type" : "SCALAR" + }, + { + "bufferView" : 5, + "componentType" : 5126, + "count" : 119, + "max" : [ + 0.24205973744392395, + 0.1121121495962143, + 0.45032012462615967 + ], + "min" : [ + -0.7816683650016785, + -0.2418355643749237, + -0.44950637221336365 + ], + "type" : "VEC3" + }, + { + "bufferView" : 6, + "componentType" : 5126, + "count" : 119, + "type" : "VEC3" + }, + { + "bufferView" : 7, + "componentType" : 5126, + "count" : 119, + "type" : "VEC2" + }, + { + "bufferView" : 8, + "componentType" : 5126, + "count" : 119, + "max" : [ + 0.24205973744392395, + 0.1121121495962143, + 0.45032012462615967 + ], + "min" : [ + -0.7816683650016785, + -0.2418355643749237, + -0.44950637221336365 + ], + "type" : "VEC3" + }, + { + "bufferView" : 9, + "componentType" : 5126, + "count" : 119, + "type" : "VEC3" + }, + { + "bufferView" : 10, + "componentType" : 5126, + "count" : 119, + "type" : "VEC2" + }, + { + "bufferView" : 11, + "componentType" : 5126, + "count" : 119, + "max" : [ + 0.24205973744392395, + 0.1121121495962143, + 0.45032012462615967 + ], + "min" : [ + -0.7816683650016785, + -0.2418355643749237, + -0.44950637221336365 + ], + "type" : "VEC3" + }, + { + "bufferView" : 12, + "componentType" : 5126, + "count" : 119, + "type" : "VEC3" + }, + { + "bufferView" : 13, + "componentType" : 5126, + "count" : 119, + "type" : "VEC2" + }, + { + "bufferView" : 14, + "componentType" : 5126, + "count" : 119, + "max" : [ + 0.24205973744392395, + 0.2593453824520111, + 0.45032012462615967 + ], + "min" : [ + -0.7816683650016785, + -0.8307684659957886, + -0.44950637221336365 + ], + "type" : "VEC3" + }, + { + "bufferView" : 15, + "componentType" : 5126, + "count" : 119, + "type" : "VEC3" + }, + { + "bufferView" : 16, + "componentType" : 5126, + "count" : 119, + "type" : "VEC2" + }, + { + "bufferView" : 17, + "componentType" : 5126, + "count" : 92, + "max" : [ + 0.09797772765159607, + 1.079318881034851, + 0.9179470539093018 + ], + "min" : [ + -0.02370762825012207, + -0.0003085024654865265, + 0.002052903175354004 + ], + "type" : "VEC3" + }, + { + "bufferView" : 18, + "componentType" : 5126, + "count" : 92, + "type" : "VEC3" + }, + { + "bufferView" : 19, + "componentType" : 5126, + "count" : 92, + "type" : "VEC2" + }, + { + "bufferView" : 20, + "componentType" : 5123, + "count" : 156, + "type" : "SCALAR" + }, + { + "bufferView" : 21, + "componentType" : 5126, + "count" : 92, + "max" : [ + 0.09797772765159607, + 1.079318881034851, + -0.002052903175354004 + ], + "min" : [ + -0.02370762825012207, + -0.0003085024654865265, + -0.9179470539093018 + ], + "type" : "VEC3" + }, + { + "bufferView" : 22, + "componentType" : 5126, + "count" : 92, + "type" : "VEC3" + }, + { + "bufferView" : 23, + "componentType" : 5126, + "count" : 92, + "type" : "VEC2" + }, + { + "bufferView" : 24, + "componentType" : 5126, + "count" : 168, + "max" : [ + 0.5000000596046448, + 1.2000008821487427, + 0.4999998211860657 + ], + "min" : [ + -0.5000000596046448, + 0, + -0.5000001192092896 + ], + "type" : "VEC3" + }, + { + "bufferView" : 25, + "componentType" : 5126, + "count" : 168, + "type" : "VEC3" + }, + { + "bufferView" : 26, + "componentType" : 5126, + "count" : 168, + "type" : "VEC2" + }, + { + "bufferView" : 27, + "componentType" : 5123, + "count" : 438, + "type" : "SCALAR" + }, + { + "bufferView" : 28, + "componentType" : 5126, + "count" : 98, + "max" : [ + 0.09797772765159607, + 1.079318881034851, + -0.002052903175354004 + ], + "min" : [ + -0.02370762825012207, + -0.0003085024654865265, + -0.45765337347984314 + ], + "type" : "VEC3" + }, + { + "bufferView" : 29, + "componentType" : 5126, + "count" : 98, + "type" : "VEC3" + }, + { + "bufferView" : 30, + "componentType" : 5126, + "count" : 98, + "type" : "VEC2" + }, + { + "bufferView" : 31, + "componentType" : 5123, + "count" : 156, + "type" : "SCALAR" + }, + { + "bufferView" : 32, + "componentType" : 5126, + "count" : 687, + "max" : [ + 0.5, + 1.5382314920425415, + 0.4999998211860657 + ], + "min" : [ + -0.5, + 0, + -0.5000001192092896 + ], + "type" : "VEC3" + }, + { + "bufferView" : 33, + "componentType" : 5126, + "count" : 687, + "type" : "VEC3" + }, + { + "bufferView" : 34, + "componentType" : 5126, + "count" : 687, + "type" : "VEC2" + }, + { + "bufferView" : 35, + "componentType" : 5123, + "count" : 1218, + "type" : "SCALAR" + }, + { + "bufferView" : 36, + "componentType" : 5126, + "count" : 98, + "max" : [ + 0.09797772765159607, + 1.079318881034851, + 0.45765337347984314 + ], + "min" : [ + -0.02370762825012207, + -0.0003085024654865265, + 0.002052903175354004 + ], + "type" : "VEC3" + }, + { + "bufferView" : 37, + "componentType" : 5126, + "count" : 98, + "type" : "VEC3" + }, + { + "bufferView" : 38, + "componentType" : 5126, + "count" : 98, + "type" : "VEC2" + }, + { + "bufferView" : 39, + "componentType" : 5123, + "count" : 156, + "type" : "SCALAR" + }, + { + "bufferView" : 40, + "componentType" : 5126, + "count" : 52, + "max" : [ + 0.5000000596046448, + 1.2000008821487427, + 0.4999998211860657 + ], + "min" : [ + -0.5000000596046448, + 0, + -0.5000001192092896 + ], + "type" : "VEC3" + }, + { + "bufferView" : 41, + "componentType" : 5126, + "count" : 52, + "type" : "VEC3" + }, + { + "bufferView" : 42, + "componentType" : 5126, + "count" : 52, + "type" : "VEC2" + }, + { + "bufferView" : 43, + "componentType" : 5123, + "count" : 90, + "type" : "SCALAR" + }, + { + "bufferView" : 44, + "componentType" : 5126, + "count" : 39, + "max" : [ + 0.5000000596046448, + 1.2000008821487427, + 0.4999998211860657 + ], + "min" : [ + -0.5000000596046448, + 0, + -0.5000001192092896 + ], + "type" : "VEC3" + }, + { + "bufferView" : 45, + "componentType" : 5126, + "count" : 39, + "type" : "VEC3" + }, + { + "bufferView" : 46, + "componentType" : 5126, + "count" : 39, + "type" : "VEC2" + }, + { + "bufferView" : 47, + "componentType" : 5123, + "count" : 63, + "type" : "SCALAR" + }, + { + "bufferView" : 48, + "componentType" : 5126, + "count" : 24, + "max" : [ + 0.0063841938972473145, + 0.20882129669189453, + 0.30886128544807434 + ], + "min" : [ + -0.006384313106536865, + -0.20882132649421692, + -0.30886128544807434 + ], + "type" : "VEC3" + }, + { + "bufferView" : 49, + "componentType" : 5126, + "count" : 24, + "type" : "VEC3" + }, + { + "bufferView" : 50, + "componentType" : 5126, + "count" : 24, + "type" : "VEC2" + }, + { + "bufferView" : 51, + "componentType" : 5123, + "count" : 36, + "type" : "SCALAR" + }, + { + "bufferView" : 52, + "componentType" : 5126, + "count" : 116, + "max" : [ + 0.07025688886642456, + 0.7407360076904297, + 0.4220391809940338 + ], + "min" : [ + -0.021486997604370117, + -0.002256631851196289, + -0.4220391809940338 + ], + "type" : "VEC3" + }, + { + "bufferView" : 53, + "componentType" : 5126, + "count" : 116, + "type" : "VEC3" + }, + { + "bufferView" : 54, + "componentType" : 5126, + "count" : 116, + "type" : "VEC2" + }, + { + "bufferView" : 55, + "componentType" : 5123, + "count" : 216, + "type" : "SCALAR" + }, + { + "bufferView" : 56, + "componentType" : 5126, + "count" : 96, + "max" : [ + 0.4010099470615387, + 0.045198384672403336, + 0.4010099470615387 + ], + "min" : [ + -0.4010099470615387, + 0, + -0.4010099470615387 + ], + "type" : "VEC3" + }, + { + "bufferView" : 57, + "componentType" : 5126, + "count" : 96, + "type" : "VEC3" + }, + { + "bufferView" : 58, + "componentType" : 5126, + "count" : 96, + "type" : "VEC2" + }, + { + "bufferView" : 59, + "componentType" : 5123, + "count" : 624, + "type" : "SCALAR" + }, + { + "bufferView" : 60, + "componentType" : 5126, + "count" : 2325, + "max" : [ + 0.5490190982818604, + 1.2546805143356323, + 0.4999998211860657 + ], + "min" : [ + -0.5, + 1.4901161193847656e-08, + -0.5000001192092896 + ], + "type" : "VEC3" + }, + { + "bufferView" : 61, + "componentType" : 5126, + "count" : 2325, + "type" : "VEC3" + }, + { + "bufferView" : 62, + "componentType" : 5126, + "count" : 2325, + "type" : "VEC2" + }, + { + "bufferView" : 63, + "componentType" : 5123, + "count" : 4620, + "type" : "SCALAR" + } + ], + "bufferViews" : [ + { + "buffer" : 0, + "byteLength" : 1428, + "byteOffset" : 0, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 1428, + "byteOffset" : 1428, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 952, + "byteOffset" : 2856, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 408, + "byteOffset" : 3808, + "target" : 34963 + }, + { + "buffer" : 0, + "byteLength" : 54895, + "byteOffset" : 4216 + }, + { + "buffer" : 0, + "byteLength" : 1428, + "byteOffset" : 59112, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 1428, + "byteOffset" : 60540, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 952, + "byteOffset" : 61968, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 1428, + "byteOffset" : 62920, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 1428, + "byteOffset" : 64348, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 952, + "byteOffset" : 65776, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 1428, + "byteOffset" : 66728, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 1428, + "byteOffset" : 68156, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 952, + "byteOffset" : 69584, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 1428, + "byteOffset" : 70536, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 1428, + "byteOffset" : 71964, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 952, + "byteOffset" : 73392, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 1104, + "byteOffset" : 74344, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 1104, + "byteOffset" : 75448, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 736, + "byteOffset" : 76552, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 312, + "byteOffset" : 77288, + "target" : 34963 + }, + { + "buffer" : 0, + "byteLength" : 1104, + "byteOffset" : 77600, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 1104, + "byteOffset" : 78704, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 736, + "byteOffset" : 79808, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 2016, + "byteOffset" : 80544, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 2016, + "byteOffset" : 82560, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 1344, + "byteOffset" : 84576, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 876, + "byteOffset" : 85920, + "target" : 34963 + }, + { + "buffer" : 0, + "byteLength" : 1176, + "byteOffset" : 86796, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 1176, + "byteOffset" : 87972, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 784, + "byteOffset" : 89148, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 312, + "byteOffset" : 89932, + "target" : 34963 + }, + { + "buffer" : 0, + "byteLength" : 8244, + "byteOffset" : 90244, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 8244, + "byteOffset" : 98488, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 5496, + "byteOffset" : 106732, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 2436, + "byteOffset" : 112228, + "target" : 34963 + }, + { + "buffer" : 0, + "byteLength" : 1176, + "byteOffset" : 114664, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 1176, + "byteOffset" : 115840, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 784, + "byteOffset" : 117016, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 312, + "byteOffset" : 117800, + "target" : 34963 + }, + { + "buffer" : 0, + "byteLength" : 624, + "byteOffset" : 118112, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 624, + "byteOffset" : 118736, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 416, + "byteOffset" : 119360, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 180, + "byteOffset" : 119776, + "target" : 34963 + }, + { + "buffer" : 0, + "byteLength" : 468, + "byteOffset" : 119956, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 468, + "byteOffset" : 120424, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 312, + "byteOffset" : 120892, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 126, + "byteOffset" : 121204, + "target" : 34963 + }, + { + "buffer" : 0, + "byteLength" : 288, + "byteOffset" : 121332, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 288, + "byteOffset" : 121620, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 192, + "byteOffset" : 121908, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 72, + "byteOffset" : 122100, + "target" : 34963 + }, + { + "buffer" : 0, + "byteLength" : 1392, + "byteOffset" : 122172, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 1392, + "byteOffset" : 123564, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 928, + "byteOffset" : 124956, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 432, + "byteOffset" : 125884, + "target" : 34963 + }, + { + "buffer" : 0, + "byteLength" : 1152, + "byteOffset" : 126316, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 1152, + "byteOffset" : 127468, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 768, + "byteOffset" : 128620, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 1248, + "byteOffset" : 129388, + "target" : 34963 + }, + { + "buffer" : 0, + "byteLength" : 27900, + "byteOffset" : 130636, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 27900, + "byteOffset" : 158536, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 18600, + "byteOffset" : 186436, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 9240, + "byteOffset" : 205036, + "target" : 34963 + } + ], + "samplers" : [ + { + "magFilter" : 9729, + "minFilter" : 9987 + } + ], + "buffers" : [ + { + "byteLength" : 214276, + "uri" : "data:application/octet-stream;base64,axtIv10KCL9ckOY+axtIv10KCL9ckOY+axtIv10KCL9ckOY+0+A7v/TuPD4qG84+0+A7v/TuPD4qG84+0+A7v/TuPD4qG84+axtIv10KCL+zJea+axtIv10KCL+zJea+axtIv10KCL+zJea+0+A7v/TuPD6CsM2+0+A7v/TuPD6CsM2+0+A7v/TuPD6CsM2+iv0sPl0KCL9ckOY+iv0sPl0KCL9ckOY+iv0sPl0KCL9ckOY+TCb4PfTuPD4qG84+TCb4PfTuPD4qG84+TCb4PfTuPD4qG84+iv0sPl0KCL+zJea+iv0sPl0KCL+zJea+iv0sPl0KCL+zJea+TCb4PfTuPD6CsM2+TCb4PfTuPD6CsM2+TCb4PfTuPD6CsM2+axtIv/TuPD5ckOY+axtIv/TuPD5ckOY+axtIv/TuPD5ckOY+axtIv/TuPD6zJea+axtIv/TuPD6zJea+axtIv/TuPD6zJea+iv0sPvTuPD6zJea+iv0sPvTuPD6zJea+iv0sPvTuPD6zJea+iv0sPvTuPD5ckOY+iv0sPvTuPD5ckOY+iv0sPvTuPD5ckOY+0+A7v9GS9b4qG84+0+A7v9GS9b4qG84+0+A7v9GS9b4qG84+0+A7v9GS9b6CsM2+0+A7v9GS9b6CsM2+0+A7v9GS9b6CsM2+TCb4PdGS9b6CsM2+TCb4PdGS9b6CsM2+TCb4PdGS9b6CsM2+TCb4PdGS9b4qG84+TCb4PdGS9b4qG84+TCb4PdGS9b4qG84+skBZPhQZtz1/gvw9skBZPhQZtz1/gvw9skBZPhQZtz1/gvw9skBZPhQZtz1/gvw9skBZPhQZtz1/gvw9skBZPmIy/z1/gvw9skBZPmIy/z1/gvw9skBZPmIy/z1/gvw9skBZPhQZtz3pnv29skBZPhQZtz3pnv29skBZPhQZtz3pnv29skBZPhQZtz3pnv29skBZPhQZtz3pnv29skBZPmIy/z3pnv29skBZPmIy/z3pnv29skBZPmIy/z3pnv29skBZPmIy/z3pnv29gt53PhQZtz1/gvw9gt53PhQZtz1/gvw9gt53PhQZtz1/gvw9gt53PhQZtz1/gvw9gt53PmIy/z1/gvw9gt53PmIy/z1/gvw9gt53PmIy/z1/gvw9gt53PhQZtz3pnv29gt53PhQZtz3pnv29gt53PhQZtz3pnv29gt53PhQZtz3pnv29gt53PmIy/z3pnv29gt53PmIy/z3pnv29gt53PmIy/z3pnv29gt53PmIy/z3pnv29skBZPhAZtz3Qmxw+skBZPhAZtz3Qmxw+skBZPhAZtz3Qmxw+skBZPmIy/z3Qmxw+skBZPmIy/z3Qmxw+skBZPmIy/z0IKh2+skBZPmIy/z0IKh2+skBZPmIy/z0IKh2+skBZPhAZtz0IKh2+skBZPhAZtz0IKh2+skBZPhAZtz0IKh2+gt53PhAZtz0IKh2+gt53PhAZtz0IKh2+gt53PhAZtz0IKh2+gt53PmIy/z0IKh2+gt53PmIy/z0IKh2+gt53PmIy/z0IKh2+gt53PmIy/z3Qmxw+gt53PmIy/z3Qmxw+gt53PmIy/z3Qmxw+gt53PhAZtz3Qmxw+gt53PhAZtz3Qmxw+gt53PhAZtz3Qmxw+6lAiPhQZtz1/gvw96lAiPhQZtz1/gvw96lAiPmIy/z1/gvw96lAiPmIy/z1/gvw96lAiPmIy/z3pnv296lAiPmIy/z3pnv296lAiPhQZtz3pnv296lAiPhQZtz3pnv296lAiPhAZtz3Qmxw+6lAiPhAZtz3Qmxw+6lAiPmIy/z3Qmxw+6lAiPmIy/z3Qmxw+6lAiPmIy/z0IKh2+6lAiPmIy/z0IKh2+6lAiPhAZtz0IKh2+6lAiPhAZtz0IKh2+AACAvwAAAAAAAACAAAAAAP//f78AAACAAAAAAAAAAAD//38/AAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAACAvwAAAAAAAACAAAAAAP//f78AAACAAAAAAAAAAAD//3+/AAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAP//f78AAACAAAAAAAAAAAD//38/AACAPwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAAAAAP//f78AAACAAAAAAAAAAAD//3+/AACAPwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAAAD//38/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAAAD//3+/AAAAAAAAgD8AAACAAAAAAAAAAAD//3+/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAAAD//38/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8u8Ya1AAAAAAAAgL8r8Ya1AAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAgL8e8YY1AAAAAP//f78g8YY1AAAAAAAAAAAAAIA/AACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAP//fz8AAACAAAAAAAAAgD8AAACAAAAAAAAAgL8u8Ya1AAAAAAAAgL8AAACAAACAPwAAAAAAAACAAACAPwAAAABokW81AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAACAPwAAAABokW81AAAAAAAAgL8AAACAAAAAAP//f78g8YY1AACAPwAAAABPkW+1AACAPwAAAAAAAACAAAAAAP//fz8AAACAAAAAAAAAgD8AAACAAACAPwAAAABPkW+1AACAPwAAAAAAAACAAAAAAAAAgL8u8Ya1AAAAAAAAgL8r8Ya1AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAAAAAAAAAAAAAIC/AAAAAP//fz8AAACAAAAAAAAAgD8AAACAAAAAAAAAgL8e8YY1AAAAAP//f78g8YY1AAAAAAAAAAAAAIC/AAAAAP//f78g8YY1AAAAAAAAAAAAAIC/AACAPwAAAABPkW+1AAAAAAAAAAAAAIC/AAAAAP//fz8AAACAAACAPwAAAABPkW+1AAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAPwAAAABokW81AAAAAAAAgL8u8Ya1AAAAAAAAAAAAAIA/AACAPwAAAABokW81AAAAAAAAgL8r8Ya1AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/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axtIvw6b5T1ckOY+axtIvw6b5T1ckOY+axtIvw6b5T1ckOY+axtIvw6b5T2zJea+axtIvw6b5T2zJea+axtIvw6b5T2zJea+iv0sPg6b5T2zJea+iv0sPg6b5T2zJea+iv0sPg6b5T2zJea+iv0sPg6b5T1ckOY+iv0sPg6b5T1ckOY+iv0sPg6b5T1ckOY+0+A7v+6fQr4qG84+0+A7v+6fQr4qG84+0+A7v+6fQr4qG84+0+A7v+6fQr6CsM2+0+A7v+6fQr6CsM2+0+A7v+6fQr6CsM2+TCb4Pe6fQr6CsM2+TCb4Pe6fQr6CsM2+TCb4Pe6fQr6CsM2+TCb4Pe6fQr4qG84+TCb4Pe6fQr4qG84+TCb4Pe6fQr4qG84+skBZPupYizx/gvw9skBZPupYizx/gvw9skBZPupYizx/gvw9skBZPupYizx/gvw9skBZPupYizx/gvw9skBZPhHfVT1/gvw9skBZPhHfVT1/gvw9skBZPhHfVT1/gvw9skBZPupYizzpnv29skBZPupYizzpnv29skBZPupYizzpnv29skBZPupYizzpnv29skBZPupYizzpnv29skBZPhHfVT3pnv29skBZPhHfVT3pnv29skBZPhHfVT3pnv29skBZPhHfVT3pnv29gt53PupYizx/gvw9gt53PupYizx/gvw9gt53PupYizx/gvw9gt53PupYizx/gvw9gt53PhHfVT1/gvw9gt53PhHfVT1/gvw9gt53PhHfVT1/gvw9gt53PupYizzpnv29gt53PupYizzpnv29gt53PupYizzpnv29gt53PupYizzpnv29gt53PhHfVT3pnv29gt53PhHfVT3pnv29gt53PhHfVT3pnv29gt53PhHfVT3pnv29skBZPtpYizzQmxw+skBZPtpYizzQmxw+skBZPtpYizzQmxw+skBZPhHfVT3Qmxw+skBZPhHfVT3Qmxw+skBZPhHfVT0IKh2+skBZPhHfVT0IKh2+skBZPhHfVT0IKh2+skBZPtpYizwIKh2+skBZPtpYizwIKh2+skBZPtpYizwIKh2+gt53PtpYizwIKh2+gt53PtpYizwIKh2+gt53PtpYizwIKh2+gt53PhHfVT0IKh2+gt53PhHfVT0IKh2+gt53PhHfVT0IKh2+gt53PhHfVT3Qmxw+gt53PhHfVT3Qmxw+gt53PhHfVT3Qmxw+gt53PtpYizzQmxw+gt53PtpYizzQmxw+gt53PtpYizzQmxw+6lAiPupYizx/gvw96lAiPupYizx/gvw96lAiPhHfVT1/gvw96lAiPhHfVT1/gvw96lAiPhHfVT3pnv296lAiPhHfVT3pnv296lAiPupYizzpnv296lAiPupYizzpnv296lAiPtpYizzQmxw+6lAiPtpYizzQmxw+6lAiPhHfVT3Qmxw+6lAiPhHfVT3Qmxw+6lAiPhHfVT0IKh2+6lAiPhHfVT0IKh2+6lAiPtpYizwIKh2+6lAiPtpYizwIKh2+AACAvwAAAAAAAACAAAAAAP//f78AAACAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAACAvwAAAAAAAACAAAAAAP//f78AAACAAAAAAAAAAAAAAIC/AAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAP//f78AAACAAAAAAAAAAAAAAIA/AACAPwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAAAAAP//f78AAACAAAAAAAAAAAAAAIC/AACAPwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8u8Ya1AAAAAAAAgL8r8Ya1AAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAvwAAAAAAAACAAAAAAAAAAAAAAIC/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0JscPrJAWT7aWIs80JscPrJAWT4R31U90JscPrJAWT4R31U90JscPrJAWT4R31U9CCodvrJAWT4R31U9CCodvrJAWT4R31U9CCodvrJAWT7aWIs8CCodvrJAWT7aWIs8CCodvrJAWT7aWIs8CCodvoLedz7aWIs8CCodvoLedz7aWIs8CCodvoLedz7aWIs8CCodvoLedz4R31U9CCodvoLedz4R31U9CCodvoLedz4R31U9CCodvoLedz4R31U90JscPoLedz4R31U90JscPoLedz4R31U90JscPoLedz7aWIs80JscPoLedz7aWIs80JscPoLedz7aWIs80JscPupQIj7qWIs8f4L8PepQIj7qWIs8f4L8PepQIj4R31U9f4L8PepQIj4R31U9f4L8PepQIj4R31U96Z79vepQIj4R31U96Z79vepQIj7qWIs86Z79vepQIj7qWIs86Z79vepQIj7aWIs80JscPupQIj7aWIs80JscPupQIj4R31U90JscPupQIj4R31U90JscPupQIj4R31U9CCodvupQIj4R31U9CCodvupQIj7aWIs8CCodvupQIj7aWIs8CCodvgAAgL8AAAAAAAAAgAAAAAD//3+/AAAAgAAAAAAAAAAAAACAPwAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAgD8AAAAAAAAAgAAAgL8AAAAAAAAAgAAAAAD//3+/AAAAgAAAAAAAAAAAAACAvwAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgAAAgD8AAAAAAAAAgAAAAAD//3+/AAAAgAAAAAAAAAAAAACAPwAAgD8AAAAAAAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAAAD//3+/AAAAgAAAAAAAAAAAAACAvwAAgD8AAAAAAAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAgD8AAAAAAAAAgAAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgAAAgD8AAAAAAAAAgAAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAgD8AAAAAAAAAgAAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgAAAgD8AAAAAAAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAgL8AAAAAAAAAgAAAAAAAAIC/LvGGtQAAAAAAAIC/K/GGtQAAAAAAAIC/AAAAgAAAAAAAAAAAAACAvwAAgL8AAAAAAAAAgAAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAgL8AAAAAAAAAgAAAAAAAAIC/AAAAgAAAAAAAAIC/HvGGNQAAAAD//3+/IPGGNQAAAAAAAAAAAACAPwAAgL8AAAAAAAAAgAAAAAAAAAAAAACAPwAAAAD//38/AAAAgAAAAAAAAIA/AAAAgAAAAAAAAIC/LvGGtQAAAAAAAIC/AAAAgAAAgD8AAAAAAAAAgAAAgD8AAAAAaJFvNQAAAAAAAIA/AAAAgAAAgD8AAAAAAAAAgAAAgD8AAAAAaJFvNQAAAAAAAIC/AAAAgAAAAAD//3+/IPGGNQAAgD8AAAAAUZFvtQAAgD8AAAAAAAAAgAAAAAD//38/AAAAgAAAAAAAAIA/AAAAgAAAgD8AAAAAUZFvtQAAgD8AAAAAAAAAgAAAAAAAAIC/LvGGtQAAAAAAAIC/K/GGtQAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgAAAAAAAAAAAAACAvwAAAAD//38/AAAAgAAAAAAAAIA/AAAAgAAAAAAAAIC/HvGGNQAAAAD//3+/IPGGNQAAAAAAAAAAAACAvwAAAAD//3+/IPGGNQAAAAAAAAAAAACAvwAAgD8AAAAAUZFvtQAAAAAAAAAAAACAvwAAAAD//38/AAAAgAAAgD8AAAAAUZFvtQAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgAAAgD8AAAAAaJFvNQAAAAAAAIC/LvGGtQAAAAAAAAAAAACAPwAAgD8AAAAAaJFvNQAAAAAAAIC/K/GGtQAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgAAAAAAAAIC/HvGGNQAAAAAAAAAAAACAPwAAAAAAAIC/K/GGtQAAAAAAAAAA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Ed9VPeme/b2C3nc+6liLPH+C/D2C3nc+6liLPH+C/D2C3nc+6liLPH+C/D2C3nc+6liLPH+C/D2C3nc+Ed9VPX+C/D2C3nc+Ed9VPX+C/D2C3nc+Ed9VPX+C/D2C3nc+6liLPOme/b2C3nc+6liLPOme/b2C3nc+6liLPOme/b2C3nc+6liLPOme/b2C3nc+Ed9VPeme/b2C3nc+Ed9VPeme/b2C3nc+Ed9VPeme/b2C3nc+Ed9VPeme/b2yQFk+2liLPNCbHD6yQFk+2liLPNCbHD6yQFk+2liLPNCbHD6yQFk+Ed9VPdCbHD6yQFk+Ed9VPdCbHD6yQFk+Ed9VPQgqHb6yQFk+Ed9VPQgqHb6yQFk+Ed9VPQgqHb6yQFk+2liLPAgqHb6yQFk+2liLPAgqHb6yQFk+2liLPAgqHb6C3nc+2liLPAgqHb6C3nc+2liLPAgqHb6C3nc+2liLPAgqHb6C3nc+Ed9VPQgqHb6C3nc+Ed9VPQgqHb6C3nc+Ed9VPQgqHb6C3nc+Ed9VPdCbHD6C3nc+Ed9VPdCbHD6C3nc+Ed9VPdCbHD6C3nc+2liLPNCbHD6C3nc+2liLPNCbHD6C3nc+2liLPNCbHD7qUCI+6liLPH+C/D3qUCI+6liLPH+C/D3qUCI+Ed9VPX+C/D3qUCI+Ed9VPX+C/D3qUCI+Ed9VPeme/b3qUCI+Ed9VPeme/b3qUCI+6liLPOme/b3qUCI+6liLPOme/b3qUCI+2liLPNCbHD7qUCI+2liLPNCbHD7qUCI+Ed9VPdCbHD7qUCI+Ed9VPdCbHD7qUCI+Ed9VPQgqHb7qUCI+Ed9VPQgqHb7qUCI+2liLPAgqHb7qUCI+2liLPAgqHb4AAIC/AAAAAAAAAIAAAAAA//9/vwAAAIAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgL8AAAAAAACAPwAAAIAAAIA/AAAAAAAAAIAAAIC/AAAAAAAAAIAAAAAA//9/vwAAAIAAAAAAAAAAAAAAgL8AAAAAAAAAAAAAgD8AAAAAAACAPwAAAIAAAIA/AAAAAAAAAIAAAAAA//9/vwAAAIAAAAAAAAAAAAAAgD8AAIA/AAAAAAAAAIAAAIC/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAAAACAPwAAAIAAAAAA//9/vwAAAIAAAAAAAAAAAAAAgL8AAIA/AAAAAAAAAIAAAIC/AAAAAAAAAIAAAAAAAAAAAAAAgD8AAAAAAACAPwAAAIAAAIC/AAAAAAAAAIAAAAAAAAAAAAAAgD8AAAAAAACAPwAAAIAAAIC/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAAAACAPwAAAIAAAAAAAAAAAAAAgL8AAAAAAACAPwAAAIAAAIA/AAAAAAAAAIAAAAAAAAAAAAAAgD8AAAAAAACAPwAAAIAAAIA/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAAAACAPwAAAIAAAIA/AAAAAAAAAIAAAAAAAAAAAAAAgD8AAAAAAACAPwAAAIAAAIA/AAAAAAAAAIAAAIC/AAAAAAAAAIAAAAAAAAAAAAAAgD8AAAAAAACAPwAAAIAAAIC/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAAAACAPwAAAIAAAIC/AAAAAAAAAIAAAAAAAACAvy7xhrUAAAAAAACAvyvxhrUAAAAAAACAvwAAAIAAAAAAAAAAAAAAgL8AAIC/AAAAAAAAAIAAAAAAAAAAAAAAgL8AAAAAAACAPwAAAIAAAIC/AAAAAAAAAIAAAAAAAACAvwAAAIAAAAAAAACAvx7xhjUAAAAA//9/vyDxhjUAAAAAAAAAAAAAgD8AAIC/AAAAAAAAAIAAAAAAAAAAAAAAgD8AAAAA//9/PwAAAIAAAAAAAACAPwAAAIAAAAAAAACAvy7xhrUAAAAAAACAvwAAAIAAAIA/AAAAAAAAAIAAAIA/AAAAAGiRbzUAAAAAAACAPwAAAIAAAIA/AAAAAAAAAIAAAIA/AAAAAGiRbzUAAAAAAACAvwAAAIAAAAAA//9/vyDxhjUAAIA/AAAAAFGRb7UAAIA/AAAAAAAAAIAAAAAA//9/PwAAAIAAAAAAAACAPwAAAIAAAIA/AAAAAFGRb7UAAIA/AAAAAAAAAIAAAAAAAACAvy7xhrUAAAAAAACAvyvxhrUAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAACAPwAAAIAAAAAAAAAAAAAAgL8AAAAA//9/PwAAAIAAAAAAAACAPwAAAIAAAAAAAACAvx7xhjUAAAAA//9/vyDxhjUAAAAAAAAAAAAAgL8AAAAA//9/vyDxhjUAAAAAAAAAAAAAgL8AAIA/AAAAAFGRb7UAAAAAAAAAAAAAgL8AAAAA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AAAAAAAAAAAAAIC/AAAAAAAAgD8AAACA//9/PwAAAAAAAACAAACAvwAAAAAAAACAAAAAAP//f78AAACAAAAAAAAAAAAAAIC/AAAAAAAAAAAAAIA/AAAAAAAAgD8AAACA//9/PwAAAAAAAACAAAAAAP//f78AAACAAAAAAAAAAAAAAIA/AACAPwAAAAAAAACA//9/vwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAAAAAP//f78AAACAAAAAAAAAAAAAAIC/AACAPwAAAAAAAACA//9/vwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACA//9/PwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACA//9/PwAAAAAAAACA//9/vwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACA//9/vwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8u8Ya1AAAAAAAAgL8r8Ya1AAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAgL8e8YY1AAAAAP//f78g8YY1AAAAAAAAAAAAAIA/AACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAP//fz8AAACAAAAAAAAAgD8AAACAAAAAAAAAgL8u8Ya1AAAAAAAAgL8AAACAAACAPwAAAAAAAACAAACAPwAAAABokW81AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAACAPwAAAABokW81AAAAAAAAgL8AAACAAAAAAP//f78g8YY1AACAPwAAAABTkW+1AACAPwAAAAAAAACAAAAAAP//fz8AAACAAAAAAAAAgD8AAACA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AAAAgAAAAAAAAAAA//9/PwAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgAAAAAAAAAAAAACAvwAAAAAAAAAA//9/vwAAgD8AAAAAAAAAgAAAAAAAAAAA//9/PwAAAAAAAAAAAACAPwAAgD8AAAAAAAAAgAAAAAAAAAAAAACAvwAAAAAAAAAA//9/vwAAgD8AAAAAAAAAgAAAAAAAAAAA//9/PwAAAAAAAAAAAACAPwAAgD8AAAAAAAAAgAAAAAAAAAAAAACAvwAAAAAAAAAA//9/vwAAAAAAAIA/AAAAgAAAAAAAAAAA//9/PwAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAA//9/PwAAAAAAAAAAAACAPwAAAAAAAIC/AAAAgAAAAAAAAAAAAACAvwAAAAAAAAAA//9/vwAAAAAAAIC/AAAAgAAAAAAAAAAA//9/vwAAgD8AAAAAAAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAA//9/PwAAgD8AAAAAAAAAgAAAAAAAAAAA//9/PwAAAAAAAIA/AAAAgAAAgD8AAAAAAAAAgAAAAAAAAAAA//9/vwAAAAAAAIA/AAAAgAAAgD8AAAAAAAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAvwAAAAAAAIC/AAAAgAAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgAAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAPwAAAAAAAIC/AAAAgAAAAAAAAAAAAACAvwAAgL8AAAAAAAAAgAAAAAAAAIC/EcGLMwAAAABuEu0zAACAvwAAgL8AAAAAAAAAgAAAAABuEu0zAACAvwAAAAAAAIA/AAAAgAAAgL8AAAAAAAAAgAAAAAAAAIC/EcGLMwAAAAC/EJmzAACAPwAAgL8AAAAAAAAAgAAAAAC/EJmzAACAPwAAAAAAAIA/AAAAgAAAAAAAAIC/EcGLMwAAAABuEu0zAACAvwAAgD8AAAAAAAAAgAAAAABuEu0zAACAvwAAAAAAAIA/AAAAgAAAgD8AAAAAAAAAgAAAAAAAAIC/EcGLMwAAAAC/EJmz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AAAAAPNVBzQAAIA/AACAPwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAAAD//3+/AACAPwAAAAAAAACAAAAAAPNVBzQAAIA/AAAAAC8KjTX//38/AACAPwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAAAD//3+/AACAPwAAAAAAAACAAAAAAE40nbUAAIA/AAAAAC8KjbX//38/AAAAAP//fz8AAACAAAAAAAAAgD8AAACAAAAAAAAAAAAAAIC/AAAAAAAAAAD//3+/AAAAAP//fz8AAACAAAAAAAAAgD8AAACAAAAAAAAAgL8AAACAAAAAAP//f78AAACAAAAAAAAAAAAAAIC/AAAAAAAAAAD//3+/AAAAAAAAgL8AAACAAAAAAP//f78AAACAAAAAAAAAAAAAAIA/AAAAAC8KjTX//38/AAAAAAAAgL8AAACAAAAAAC8KjTX//38/AACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAD//3+/AACAPwAAAAAAAACAAAAAAAAAAAD//3+/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAC8KjbX//38/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAE40nbUAAIA/AAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAP//fz8AAACAAAAAAAAAAAAAAIA/AAAAAP//fz8AAACAAAAAAE40nbUAAIA/AAAAAP//fz8AAACAAAAAAAAAAAAAAIC/AAAAAP//fz8AAACAAAAAAP//f78AAACAAAAAAAAAAAAAAIC/AAAAAP//f78AAACAAAAAAAAAAAAAAIA/AACAvwAAAAAAAACAAAAAAAAAgL9XeQy0AAAAAG4S7TMAAIA/AACAvwAAAAAAAACAAAAAAG4S7TMAAIA/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL9XeQy0AAAAAL8QmbMAAIC/AACAvwAAAAAAAACAAAAAAL8QmbMAAIC/AAAAAAAAgD8AAACAAAAAAAAAgL9XeQy0AAAAAG4S7TMAAIA/AACAPwAAAAAAAACAAAAAAG4S7TMAAIA/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL9XeQy0AAAAAL8QmbMAAIC/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AACAvwAAgD8AAAAAAAAAgGA/SbYAAIA/GfmDNQAAAABm8Sg/xlZAvwAAAAAAAIA/AAAAgDvHMD/QKTk/QHI3NTvHML/QKTk/QHI3NQAAAABm8Sg/xlZAvwAAAAAAAIA/AAAAgAAAAAAAAIA/GfmDNWA/SbYAAIA/GfmDNQAAAABN8Sg/3FZAPwAAAAAAAIA/AAAAgDvHMD/QKTk/QHI3NTvHML/QKTk/QHI3NQAAAABN8Sg/3FZAPwAAAAAAAIA/AAAAgAAAAAAAAIA/GfmDNQAAgL8AAAAAAAAAgAAAAAAAAAAAAACAPwAAgL8AAAAAAAAAgAAAAAAAAAAAAACAPwAAgL8AAAAAAAAAgAAAAAAAAAAAAACAvwAAgL8AAAAAAAAAgAAAAAAAAAAAAACAvwAAAAAAAAAAAACAPwAAgD8AAAAAAAAAgAAAAAAAAAAAAACAPwAAgD8AAAAAAAAAgAAAAAAAAAAAAACAvwAAgD8AAAAAAAAAgAAAAAAAAAAAAACAvwAAgD8AAAAAAAAAgAAAgL8AAAAAAAAAgAAAgL8AAAAAAAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAPwAAAAD//38/AAAAgAAAAAAAAIA/AAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAvwAAAAD//38/AAAAgAAAAAAAAIA/AAAAgAAAgD8AAAAAAAAAgAAAgD8AAAAAAAAAgAAAAAAAAAAAAACAvwAAAAD//38/AAAAgAAAAAAAAIA/AAAAgAAAgD8AAAAAAAAAgAAAAAAAAAAAAACAPwAAAAD//38/AAAAgAAAAAAAAIA/AAAAgAAAgD8AAAAAAAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAvwAAAAD//38/AAAAgAAAAAAAAIA/AAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAPwAAAAD//38/AAAAgAAAAAAAAIA/AAAAgAAAAAAAAAAAAACAPwAAAAD//38/AAAAgAAAAAAAAIA/AAAAgAAAgD8AAAAAAAAAgAAAAAAAAAAAAACAvwAAAAD//38/AAAAgAAAAAAAAIA/AAAAgAAAgD8AAAAAAAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAPwAAgL8AAAAAAAAAgAAAAAAAAAAAAACAvwAAAAAAAIC/AAAAgAAAAAAAAAAAAACAvwAAgD8AAAAAAAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAPwAAgD8AAAAAAAAAgAAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAAAAAAAAA//9/PwAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgAAAgL8AAAAAAAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAvwAAgL8AAAAAAAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAPwAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgAAAAAAAAAAAAACAvwAAgD8AAAAAAAAAgAAAAAAAAAAAAACAPwAAgD8AAAAAAAAAgAAAgL8AAAAAAAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAvwAAgL8AAAAAAAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAPwAAAAAAAIC/AAAAgAAAAAAAAAAAAACAvwAAgD8AAAAAAAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAPwAAgD8AAAAAAAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAgD8AAAAAAAAAgAAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAgD8AAAAAAAAAgAAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgAAAgD8AAAAAAAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgAAAgD8AAAAAAAAAgPQENb/xBDU/AAAAgAAAAAAAAAAA//9/PwAAAAAAAIA/AAAAgAAAgL8AAAAAAAAAgPQENb/xBDU/AAAAgAAAAAAAAAAA//9/PwAAAAAAAAAAAACAPwAAgL8AAAAAAAAAgPQENb/xBDU/AAAAgAAAAAAAAAAAAACAv/QENb/xBDU/AAAAgAAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgPQENT/xBDU/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ZQBbAGcAawB1AGcAdQByAHEAagB0AHEAdAB7AH0AegBzAH0AcwB2AIUAbgB4AIUAeACBAHkAfACIAHkAiACCAJEAhACAAJEAgACLAI4AjACDAI4AgwCJAJgAlACNAJgAjQCQAJMAlgCfAJMAnwCcAIYAkgCbAIYAmwCiAJkAnQC1AJkAtQCgAKUAmgChAKUAoQCoACIApACnACIApwCvAB0ArQCpAB0AqQCmAK4ATABaAK4AWgCqAEoArAAvAEoALwA4AKsAHAAoAKsAKAAuAM8AVADyAM8A8gDvANIAJAD4ANIA+AD1ALgAugC3ALgAtwC0AJUAuAC0AJUAtACeALwAuQCKALwAigB/ALkAlwCPALkAjwCKAG0AuwB+AG0AfgB3ALoAbABfALoAXwC3ACUBIgHGACUBxgCzALEAwAAnAbEAJwEkAbcAXwDkALcA5ADiACIArwD5ACIA+QD2AM0AxAAhAc0AIQEdAb8AYwBTAr8AUwJRAjUAHwDRADUA0QDHAEEANgDJAEEAyQBTAHAAhwCjAHAAowBmANMA6QDbANMA2wDVAOAA0wDVAOAA1QDWAN4A1gDVAN4A1QDaAOEA4wDnAOEA5wDUAPQA3ADqAPQA6gDsAPAA6wDpAPAA6QDuAPMA9wD7APMA+wDbALUAnQDdALUA3QDYAGEAwwDoAGEA6ADlAMgA0gD1AMgA9QDtALQAtwDiALQA4gDXAFIAyADtAFIA7QDxAJ4AtADXAJ4A1wDfANsA+wDaANsA2gDVAMUAzgDBAMUAwQCyAM8A7wDoAM8A6ADDAO4A6QDTAO4A0wDmAKAAtQCvAKAArwCnALYA2QD6ALYA+gCwADoBPgECAToBAgH+AD0BQwEHAT0BBwEBAUcBOQH9AEcB/QALAUEBRQEJAUEBCQEFARcBEwENARcBDQEZARIAFAAIAhIACAL9AQwAEAD7AQwA+wH/ARcABwAGAhcABgIKAssAVgAcAcsAHAEgAb4AywAgAb4AIAEjAWIAvgAjAWIAIwEmAVYAYgAmAVYAJgEcAYcCgwJoAocCaAJ0AlcAzABNAlcATQJJAmQAWABKAmQASgJUAsoAvQBOAsoATgJLAmQBXAFEAWQBRAFAAV0BWQE4AV0BOAFGAWEBZQFCAWEBQgE8AVsBYwE/AVsBPwE7AQMAAQBPAQMATwFLAQAACQBRAQAAUQFNAQgACgBUAQgAVAFQAQsAAgBJAQsASQFVAREADQBgAREAYAFYAQ8ABQBmAQ8AZgFiARUAEwBaARUAWgFeAQYAFgBfAQYAXwFnAXgBkAFuAXgBbgFsAW0BbwF2AW0BdgF0AYIBmwFzAYIBcwFxAXABcgFrAXABawFpAZEBlAHaAZEB2gHGAWsBcgHRAWsB0QHVAXsBiAGkAXsBpAGdAXUBdwGXAXUBlwGDAYMBlwGbAYMBmwGCAWgBagGMAWgBjAF5AXkBjAGQAXkBkAF4AXwBgAGSAXwBkgGOAYUBiQGZAYUBmQGVAYEBhgGWAYEBlgGTAYoBfQGPAYoBjwGaAbIBtAH0AbIB9AHrAYsBhwGiAYsBogGlAYQBfwGfAYQBnwGhAX4BegGcAX4BnAGeAZ0BpAH6AZ0B+gHjAacB6QHfAacB3wGqAaEBnwHmAaEB5gH3AaMBoAGsAaMBrAGvAbMB+AHwAbMB8AHzAakB+gH4AakB+AGzAaEB9wH2AaEB9gGtAacBqgG0AacBtAGyAa0B9gHtAa0B7QG1Aa0BtQHAAa0BwAG7AbgBtgHvAbgB7wHyAb0BugG/Ab0BvwHCAa4BqwG5Aa4BuQG8AbcBsAG+AbcBvgHDAbYBuAHEAbYBxAHBAcwBygHHAcwBxwHbAc8B2QHWAc8B1gHSAZcBdwHNAZcBzQHcAXYBbwHJAXYByQHLAYwBagHUAYwB1AHXAZgBjQHYAZgB2AHOAXMBmwHQAXMB0AHTAW4BkAHFAW4BxQHIAd0B5wHlAd0B5QHhAewB9QHxAewB8QHuAZ4BnAHgAZ4B4AHkAfcB5gHoAfcB6AGmAfYB9wGmAfYBpgGxAe0B9gGxAe0BsQHqAfgB+gGkAfgBpAGwAeIB+QGoAeIBqAHeAfAB+AGwAfABsAG3AR0CMwIUAh0CFAIMAi0CMQIJAi0CCQIFAigCIgIPAigCDwIRAjYCKgITAjYCEwIWAg0CFQISAg0CEgIQAiMCLAIDAiMCAwIAAjACFwL8ATAC/AEHAhgCJAICAhgCAgL+AS8CKwI7Ai8COwI/AiECJwI4AiECOAISAS4CJQIOAS4CDgE+AjQCHgIVATQCFQFDAh8CGwILAh8CCwIOAhEBNwI8AhEBPAIMAUUCFgEYAUUCGAFBAjkCRAJAAjkCQAI9AhkCMgJCAhkCQgIaASYCGgIbASYC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//9/PwAAAAAAAAAAAACAPwAAgD8AAAAAAAAAgAAAAADzVQc0AACAvwAAAAAvCo01//9/vwAAgD8AAAAAAAAAgAAAAAAAAAAA//9/PwAAAAAAAAAAAACAPwAAgD8AAAAAAAAAgAAAAABONJ21AACAvwAAAAAvCo21//9/vwAAAAD//38/AAAAgAAAAAAAAIA/AAAAgAAAAAAAAAAA//9/PwAAAAAAAAAAAACAPwAAAAD//38/AAAAgAAAAAAAAIA/AAAAgAAAAAAAAIC/AAAAgAAAAAD//3+/AAAAgAAAAAAAAAAA//9/PwAAAAAAAAAAAACAPwAAAAAAAIC/AAAAgAAAAAD//3+/AAAAgAAAAAAAAAAAAACAvwAAAAAvCo01//9/vwAAAAAAAIC/AAAAgAAAAAAvCo01//9/vwAAgD8AAAAAAAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAA//9/PwAAgD8AAAAAAAAAgAAAAAAAAAAA//9/PwAAAAAAAIA/AAAAgAAAgD8AAAAAAAAAgAAAAAAvCo21//9/vwAAAAAAAIA/AAAAgAAAgD8AAAAAAAAAgAAAAAAAAIC/AAAAgAAAAABONJ21AACAvwAAAAAAAIC/AAAAgAAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAD//38/AAAAgAAAAAAAAAAAAACAvwAAAAD//38/AAAAgAAAAABONJ21AACAvwAAAAD//38/AAAAgAAAAAAAAAAAAACAPwAAAAD//38/AAAAgAAAAAD//3+/AAAAgAAAAAAAAAAAAACAPwAAAAD//3+/AAAAgAAAAAAAAAAAAACAvwAAgL8AAAAAAAAAgAAAAAAAAIC/V3kMNAAAAABuEu0zAACAvwAAgL8AAAAAAAAAgAAAAABuEu0zAACAvwAAAAAAAIA/AAAAgAAAgL8AAAAAAAAAgAAAAAAAAIC/V3kMNAAAAAC/EJmzAACAPwAAgL8AAAAAAAAAgAAAAAC/EJmzAACAPwAAAAAAAIA/AAAAgAAAAAAAAIC/V3kMNAAAAABuEu0zAACAvwAAgD8AAAAAAAAAgAAAAABuEu0zAACAvwAAAAAAAIA/AAAAgAAAgD8AAAAAAAAAgAAAAAAAAIC/V3kMNAAAAAC/EJmzAACAPwAAgD8AAAAAAAAAgAAAAAC/EJmzAACAPwAAAAAAAIA/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gAWwvADkE7uCFdg+gAWwvADkE7uFFdi+gAWwvADkE7uFFdi+gAWwvADkE7uFFdi+gAWwvOCgPT+BFdi+gAWwvOCgPT+BFdi+gAWwvOCgPT+BFdi+gAWwvOCgPT+FFdg+gAWwvOCgPT+FFdg+gAWwvOCgPT+FFdg+gI7cPOCgPT+FFdg+gI7cPOCgPT+FFdg+gI7cPOCgPT+FFdg+gI7cPADkE7uCFdg+gI7cPADkE7uCFdg+gI7cPADkE7uCFdg+gI7cPADkE7uFFdi+gI7cPADkE7uFFdi+gI7cPADkE7uFFdi+gI7cPOCgPT+BFdi+gI7cPOCgPT+BFdi+gI7cPOCgPT+BFdi+//9/vwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8e8Qa2AAAAAAAAgD8c8Qa2AAAAAAAAgD8AAACA//9/vwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC///9/vwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAAAAAAAAgD8c8QY2AAAAAAAAgD8e8QY2//9/vwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8e8Qa2AAAAAAAAgD8AAACA//9/PwAAAAAAAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACA//9/PwAAAAAAAACAAACAPwAAAAAAAACAAAAAAAAAgD8AAACAAAAAAAAAgD8e8QY2//9/PwAAAAAAAACAAACAPwAAAAAiR1oxAAAAAAAAgL8AAACA//9/PwAAAAAAAACAAACAPwAAAAAiR1oxAAAAAAAAAAAAAIA/AAAAAAAAgD8e8Qa2AAAAAAAAgD8c8Qa2AAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAgD8c8QY2AAAAAAAAgD8e8QY2AAAAAAAAAAAAAIC/AAAAAAAAgD8e8QY2AACAPwAAAAAiR1oxAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAPwAAAAAiR1oxAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AACAPwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8e8Qa2AACAPwAAAAAAAACAAAAAAAAAAAAAAIC/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mysuPiyHNj6bKy4+0PQ4PpsrLj5sYjs+mysuPhDQPT574Ug+ENA9PnvhSD5sYjs+e+FIPtD0OD574Ug+LIc2PnvhSD6MGTQ+e+FIPuyrMT574Ug+TD4vPnvhSD6o0Cw+e+FIPgxjKj574Ug+aPUnPuESNz6wPUA+Nfo/PrA9QD41+j8+yIclPuESNz7IhyU+Nfo/PhDQPT7hEjc+ENA9PjX6Pz5sYjs+4RI3PmxiOz41+j8+0PQ4PuESNz7Q9Dg+Nfo/PiyHNj7hEjc+LIc2PjX6Pz6MGTQ+4RI3PowZND41+j8+7KsxPuESNz7sqzE+Nfo/Pkw+Lz7hEjc+TD4vPjX6Pz6o0Cw+4RI3PqjQLD41+j8+DGMqPuESNz4MYyo+Nfo/Pmj1Jz7hEjc+aPUnPpsrLj4Q0D0+mysuPrA9QD41+j8+sD1APnvhSD6wPUA+e+FIPmj1Jz574Ug+yIclPuESNz7IhyU+mysuPsiHJT6bKy4+aPUnPpsrLj4MYyo+mysuPqjQLD6bKy4+TD4vPpsrLj7sqzE+mysuPowZND6bKy4+LIc2PpsrLj7Q9Dg+mysuPmxiOz574Ug+ENA9PnvhSD5sYjs+e+FIPtD0OD574Ug+LIc2PnvhSD6MGTQ+e+FIPuyrMT574Ug+TD4vPnvhSD6o0Cw+e+FIPgxjKj7hEjc+ENA9PuESNz5sYjs+4RI3PtD0OD7hEjc+LIc2PuESNz6MGTQ+4RI3PuyrMT7hEjc+TD4vPuESNz6o0Cw+4RI3PgxjKj7hEjc+aPUnPuESNz6wPUA+Nfo/PsiHJT41+j8+ENA9PjX6Pz5sYjs+Nfo/PtD0OD41+j8+LIc2PjX6Pz6MGTQ+Nfo/PuyrMT41+j8+TD4vPjX6Pz6o0Cw+Nfo/PgxjKj41+j8+aPUnPi4AGgADAC4AAwAXABkAHAAOABkADgABABwAHgAPABwADwAOAB4AIAAQAB4AEAAPACAAIgARACAAEQAQACIAJAASACIAEgARACQAJgATACQAEwASACYAKAAUACYAFAATACgAKgAVACgAFQAUACoALAAWACoAFgAVACwALgAXACwAFwAWAAUABAAvAAUALwAtAAYABQAtAAYALQArACsALQAsACsALAAqAAcABgArAAcAKwApAAgABwApAAgAKQAnACcAKQAoACcAKAAmAAkACAAnAAkAJwAlAAoACQAlAAoAJQAjACMAJQAkACMAJAAiAAsACgAjAAsAIwAhAAwACwAhAAwAIQAfAB8AIQAgAB8AIAAeAA0ADAAfAA0AHwAdAAAADQAdAAAAHQAYABgAHQAcABgAHAAZAAQAAgAbAAQAGwAvAC8AGwAaAC8AGgAuAF8ANAA1AF8ANQBVADIAMwBBADIAQQBWAFYAQQBCAFYAQgBXAFcAQgBDAFcAQwBYAFgAQwBEAFgARABZAFkARABFAFkARQBaAFoARQBGAFoARgBbAFsARgBHAFsARwBcAFwARwBIAFwASABdAF0ASABJAF0ASQBeAF4ASQA0AF4ANABfADkAUgBTADkAUwA4ADoAUQBSADoAUgA5AFEAXQBeAFEAXgBSADsAUABRADsAUQA6ADwATwBQADwAUAA7AE8AWwBcAE8AXABQAD0ATgBPAD0ATwA8AD4ATQBOAD4ATgA9AE0AWQBaAE0AWgBOAD8ATABNAD8ATQA+AEAASwBMAEAATAA/AEsAVwBYAEsAWABMADAASgBLADAASwBAADEAVABKADEASgAwAFQAMgBWAFQAVgBKADgAUwA2ADgANgA3AFMAXwBVAFMAVQA2AA8AEABDAA8AQwBCACAAIQBMACAATABYACEAIwBNACEATQBMABsAAgA3ABsANwA2AC8ALgBfAC8AXwBTABAAEQBEABAARABDACIAIABYACIAWABZAAIABAA4AAIAOAA3AC0ALwBTAC0AUwBSABEAEgBFABEARQBEACMAIgBZACMAWQBNAAQABQA5AAQAOQA4AC4ALABeAC4AXgBfABIAEwBGABIARgBFAAUABgA6AAUAOgA5ABMAFABHABMARwBGACQAJQBOACQATgBaAB0AHwBLAB0ASwBKAAYABwA7AAYAOwA6AAAAGABUAAAAVAAxABQAFQBIABQASABHAB4AHABWAB4AVgBXAAcACAA8AAcAPAA7ABgAGQAyABgAMgBUACkAKwBRACkAUQBQABUAFgBJABUASQBIACcAJgBbACcAWwBPAAgACQA9AAgAPQA8AAMAGgBVAAMAVQA1ACoAKABcACoAXABdABYAFwA0ABYANABJAAkACgA+AAkAPgA9ABoAGwA2ABoANgBVACgAKQBQACgAUABcAAoACwA/AAoAPwA+AAsADABAAAsAQAA/ABwAHQBKABwA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VQrPPlnTBj8AAIAy+v//PlnTBj8AAIAy+v//PlnTBj8AAIAy+v//PrCeKL0AAIAy+v//PrCeKL0AAIAy+v//PgAAAL8AAIAy+v//PgAAAL8AAIAy+v//PgAAAL8AAIAy+v//PgAAAL8AAIAyVQrPPgAAAL8AAIAyVQrPPq+eKL2qAPg9AgAAv6+eKL2qAPg9AgAAv6+eKL0x/wo+AgAAv6+eKL0x/wo+AgAAvwAAAL+qAPg9VQrPvgAAAL+qAPg9VQrPvgAAAL8x/wo+mDPTvgAAAL8x/wo+mDPTvgAAAL8x/wo+AgAAvwAAAL8x/wo+AgAAvwAAAL8x/wo+AgAAvwAAAL8x/wo+AgAAvwAAAL+qAPg9AgAAvwAAAL+qAPg9AgAAvwAAAL+qAPg9AgAAvwAAAL+qAPg9AgAAv6+eKD0x/wo+AgAAv6+eKD0x/wo+AgAAv6+eKD2qAPg9AgAAv6+eKD2qAPg9AgAAv1nTBj8x/wo+AgAAv1nTBj8x/wo+AgAAv1nTBj8x/wo+AgAAv1nTBj8x/wo+AgAAv1nTBj+qAPg9AgAAv1nTBj+qAPg9AgAAv1nTBj+qAPg9AgAAv1nTBj+qAPg9AgAAv1nTBj8x/wo+fxDPvlnTBj8x/wo+fxDPvlnTBj8x/wo+fxDPvlnTBj8x/wo+fxDPvlnTBj+qAPg9VQrPvlnTBj+qAPg9VQrPvlnTBj+qAPg9VQrPvlnTBj+qAPg9VQrPvrCeKD2qAPg9+v//PrCeKD2qAPg9+v//PrCeKD0x/wo++v//PrCeKD0x/wo++v//PlnTBj+qAPg9VQrPPlnTBj+qAPg9VQrPPlnTBj8x/wo+fxDPPlnTBj8x/wo+fxDPPlnTBj8x/wo++v//PlnTBj8x/wo++v//PlnTBj8x/wo++v//PlnTBj8x/wo++v//PlnTBj+qAPg9+v//PlnTBj+qAPg9+v//PlnTBj+qAPg9+v//PlnTBj+qAPg9+v//PrCeKL0x/wo++v//PrCeKL0x/wo++v//PrCeKL2qAPg9+v//PrCeKL2qAPg9+v//PgAAAL8x/wo++v//PgAAAL8x/wo++v//PgAAAL8x/wo++v//PgAAAL8x/wo++v//PgAAAL+qAPg9+v//PgAAAL+qAPg9+v//PgAAAL+qAPg9+v//PgAAAL+qAPg9+v//PgAAAL8x/wo+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8p5vPpOsCD8otoQ/8p5vPpOsCD/gj40/9J5vPpOsCD/gj40/9J5vPpOsCD/gj40/9J5vPl7q5b5C+pg/TgPpvl7q5b5C+pg/TgPpvl7q5b5C+pg/TgPpPl7q5b5C+pg/TgPpPl7q5T5C+pg/TgPpPl7q5T5C+pg/TgPpPl7q5T5C+pg/TgPpvl7q5T5C+pg/TgPpvl7q5T5bT5w/TgPpvl7q5T5bT5w/TgPpvl7q5T5bT5w/TgPpvl7q5T5bT5w/TgPpvl7q5b5bT5w/TgPpvl7q5b5bT5w/TgPpvl7q5b5bT5w/TgPpvl7q5b5bT5w/TgPpvl7q5b5bT5w/TgPpPl7q5b5bT5w/TgPpPl7q5b5bT5w/TgPpPl7q5b5bT5w/TgPpPl7q5T5bT5w/TgPpPl7q5T5bT5w/TgPpPl7q5T5bT5w/TgPpPl7q5T5bT5w/TgPpPl7q5b5C+pg/AAAAgF7q5T5C+pg/AAAAgF7q5b5bT5w/AAAAgF7q5b5bT5w/AAAAgF7q5b5bT5w/AAAAgF7q5T5bT5w/AAAAgF7q5T5bT5w/AAAAgF7q5T5bT5w/AAAAgAAAAABC+pg/TAPpPgAAAABC+pg/TAPpPgAAAABC+pg/TAPpvgAAAABC+pg/TAPpvgAAAABbT5w/TAPpvgAAAABbT5w/TAPpvgAAAABbT5w/TAPpvgAAAABbT5w/TAPpPgAAAABbT5w/TAPpPgAAAABbT5w/TAPpPgAAAABbT5w/AAAAgAAAAABbT5w/AAAAgAAAAABbT5w/AAAAgPijvb1bT5w/DO/Lvfijvb1bT5w/DO/Lvfijvb1bT5w/DO/Lvfijvb1bT5w/DO/Lvfijvb1bT5w/iQe2vvijvb1bT5w/iQe2vvijvb1bT5w/iQe2vmCBtr5bT5w/iQe2vmCBtr5bT5w/iQe2vmCBtr5bT5w/iQe2vmCBtr5bT5w/iQe2vmCBtr5bT5w/EO/LvWCBtr5bT5w/EO/LvWCBtr5bT5w/EO/LvWCBtr5bT5w/EO/Lvfijvb1bT5w/iQe2Pvijvb1bT5w/iQe2Pvijvb1bT5w/iQe2Pvijvb1bT5w/DO/LPfijvb1bT5w/DO/LPfijvb1bT5w/DO/LPfijvb1bT5w/DO/LPWCBtr5bT5w/EO/LPWCBtr5bT5w/EO/LPWCBtr5bT5w/EO/LPWCBtr5bT5w/EO/LPWCBtr5bT5w/iQe2PmCBtr5bT5w/iQe2PmCBtr5bT5w/iQe2PmCBtr5bT5w/iQe2PmCBtj5bT5w/iQe2PmCBtj5bT5w/iQe2PmCBtj5bT5w/iQe2PmCBtj5bT5w/iQe2PmCBtj5bT5w/EO/LPWCBtj5bT5w/EO/LPWCBtj5bT5w/EO/LPWCBtj5bT5w/EO/LPfijvT1bT5w/DO/LPfijvT1bT5w/DO/LPfijvT1bT5w/DO/LPfijvT1bT5w/DO/LPfijvT1bT5w/iQe2PvijvT1bT5w/iQe2PvijvT1bT5w/iQe2PmCBtj5bT5w/EO/LvWCBtj5bT5w/EO/LvWCBtj5bT5w/EO/LvWCBtj5bT5w/EO/LvWCBtj5bT5w/iQe2vmCBtj5bT5w/iQe2vmCBtj5bT5w/iQe2vmCBtj5bT5w/iQe2vvijvT1bT5w/iQe2vvijvT1bT5w/iQe2vvijvT1bT5w/iQe2vvijvT1bT5w/DO/LvfijvT1bT5w/DO/LvfijvT1bT5w/DO/LvfijvT1bT5w/DO/Lvf3p2L2PWJ4/WWqvvv3p2L2PWJ4/WWqvvv3p2L2PWJ4/WWqvvv3p2L2PWJ4/WWqvvv3p2L2PWJ4/y2Pmvf3p2L2PWJ4/y2Pmvf3p2L2PWJ4/y2Pmvf3p2L2PWJ4/y2Pmvd+vr76PWJ4/zmPmvd+vr76PWJ4/zmPmvd+vr76PWJ4/zmPmvd+vr76PWJ4/zmPmvd+vr76PWJ4/WWqvvt+vr76PWJ4/WWqvvt+vr76PWJ4/WWqvvt+vr76PWJ4/WWqvvv3p2L2PWJ4/y2PmPf3p2L2PWJ4/y2PmPf3p2L2PWJ4/y2PmPf3p2L2PWJ4/y2PmPf3p2L2PWJ4/WWqvPv3p2L2PWJ4/WWqvPv3p2L2PWJ4/WWqvPv3p2L2PWJ4/WWqvPt+vr76PWJ4/WWqvPt+vr76PWJ4/WWqvPt+vr76PWJ4/WWqvPt+vr76PWJ4/WWqvPt+vr76PWJ4/zmPmPd+vr76PWJ4/zmPmPd+vr76PWJ4/zmPmPd+vr76PWJ4/zmPmPd+vrz6PWJ4/zmPmPd+vrz6PWJ4/zmPmPd+vrz6PWJ4/zmPmPd+vrz6PWJ4/zmPmPd+vrz6PWJ4/WWqvPt+vrz6PWJ4/WWqvPt+vrz6PWJ4/WWqvPt+vrz6PWJ4/WWqvPv3p2D2PWJ4/WWqvPv3p2D2PWJ4/WWqvPv3p2D2PWJ4/WWqvPv3p2D2PWJ4/WWqvPv3p2D2PWJ4/y2PmPf3p2D2PWJ4/y2PmPf3p2D2PWJ4/y2PmPf3p2D2PWJ4/y2PmPd+vrz6PWJ4/WWqvvt+vrz6PWJ4/WWqvvt+vrz6PWJ4/WWqvvt+vrz6PWJ4/WWqvvt+vrz6PWJ4/zmPmvd+vrz6PWJ4/zmPmvd+vrz6PWJ4/zmPmvd+vrz6PWJ4/zmPmvf3p2D2PWJ4/y2Pmvf3p2D2PWJ4/y2Pmvf3p2D2PWJ4/y2Pmvf3p2D2PWJ4/y2Pmvf3p2D2PWJ4/WWqvvv3p2D2PWJ4/WWqvvv3p2D2PWJ4/WWqvvv3p2D2PWJ4/WWqvviAD6L2Rtp4/vmXzvSAD6L2Rtp4/vmXzvSAD6L2Rtp4/vmXzvSAD6L2Rtp4/vmXzvSAD6L2Rtp4/3CmsviAD6L2Rtp4/3CmsviAD6L2Rtp4/3CmsviAD6L2Rtp4/3Cmsvpbpq76Rtp4/3Cmsvpbpq76Rtp4/3Cmsvpbpq76Rtp4/3Cmsvpbpq76Rtp4/3Cmsvpbpq76Rtp4/vmXzvZbpq76Rtp4/vmXzvZbpq76Rtp4/vmXzvZbpq76Rtp4/vmXzvSAD6L2Rtp4/3CmsPiAD6L2Rtp4/3CmsPiAD6L2Rtp4/3CmsPiAD6L2Rtp4/3CmsPiAD6L2Rtp4/vmXzPSAD6L2Rtp4/vmXzPSAD6L2Rtp4/vmXzPSAD6L2Rtp4/vmXzPZbpq76Rtp4/vmXzPZbpq76Rtp4/vmXzPZbpq76Rtp4/vmXzPZbpq76Rtp4/vmXzPZbpq76Rtp4/3CmsPpbpq76Rtp4/3CmsPpbpq76Rtp4/3CmsPpbpq76Rtp4/3CmsPpbpqz6Rtp4/3CmsPpbpqz6Rtp4/3CmsPpbpqz6Rtp4/3CmsPpbpqz6Rtp4/3CmsPpbpqz6Rtp4/vmXzPZbpqz6Rtp4/vmXzPZbpqz6Rtp4/vmXzPZbpqz6Rtp4/vmXzPSAD6D2Rtp4/vmXzPSAD6D2Rtp4/vmXzPSAD6D2Rtp4/vmXzPSAD6D2Rtp4/vmXzPSAD6D2Rtp4/3CmsPiAD6D2Rtp4/3CmsPiAD6D2Rtp4/3CmsPiAD6D2Rtp4/3CmsPpbpqz6Rtp4/vmXzvZbpqz6Rtp4/vmXzvZbpqz6Rtp4/vmXzvZbpqz6Rtp4/vmXzvZbpqz6Rtp4/3Cmsvpbpqz6Rtp4/3Cmsvpbpqz6Rtp4/3Cmsvpbpqz6Rtp4/3CmsviAD6D2Rtp4/3CmsviAD6D2Rtp4/3CmsviAD6D2Rtp4/3CmsviAD6D2Rtp4/3CmsviAD6D2Rtp4/vmXzvSAD6D2Rtp4/vmXzvSAD6D2Rtp4/vmXzvSAD6D2Rtp4/vmXzvTF2673cqpo/8rmrvjF2673cqpo/8rmrvjF2673cqpo/8rmrvjF2673cqpo/aSX1vTF2673cqpo/aSX1vTF2673cqpo/aSX1vdEMq77cqpo/aSX1vdEMq77cqpo/aSX1vdEMq77cqpo/aSX1vdEMq77cqpo/8rmrvtEMq77cqpo/8rmrvtEMq77cqpo/8rmrvjF2673cqpo/aSX1PTF2673cqpo/aSX1PTF2673cqpo/aSX1PTF2673cqpo/8rmrPjF2673cqpo/8rmrPjF2673cqpo/8rmrPtEMq77cqpo/8rmrPtEMq77cqpo/8rmrPtEMq77cqpo/8rmrPtEMq77cqpo/aSX1PdEMq77cqpo/aSX1PdEMq77cqpo/aSX1PdEMqz7cqpo/aSX1PdEMqz7cqpo/aSX1PdEMqz7cqpo/aSX1PdEMqz7cqpo/8rmrPtEMqz7cqpo/8rmrPtEMqz7cqpo/8rmrPjF26z3cqpo/8rmrPjF26z3cqpo/8rmrPjF26z3cqpo/8rmrPjF26z3cqpo/aSX1PTF26z3cqpo/aSX1PTF26z3cqpo/aSX1PdEMqz7cqpo/8rmrvtEMqz7cqpo/8rmrvtEMqz7cqpo/8rmrvtEMqz7cqpo/aSX1vdEMqz7cqpo/aSX1vdEMqz7cqpo/aSX1vTF26z3cqpo/aSX1vTF26z3cqpo/aSX1vTF26z3cqpo/aSX1vTF26z3cqpo/8rmrvjF26z3cqpo/8rmrvjF26z3cqpo/8rmrvmgzPb7cqpo/DHk9vmgzPb7cqpo/DHk9vmgzPb7cqpo/DHk9vmgzPb7cqpo/xkaKvmgzPb7cqpo/xkaKvmgzPb7cqpo/xkaKvqpQh77cqpo/xkaKvqpQh77cqpo/xkaKvqpQh77cqpo/xkaKvqpQh77cqpo/DHk9vqpQh77cqpo/DHk9vqpQh77cqpo/DHk9vmgzPb7cqpo/xkaKPmgzPb7cqpo/xkaKPmgzPb7cqpo/xkaKPmgzPb7cqpo/DHk9PmgzPb7cqpo/DHk9PmgzPb7cqpo/DHk9PqpQh77cqpo/DHk9PqpQh77cqpo/DHk9PqpQh77cqpo/DHk9PqpQh77cqpo/xkaKPqpQh77cqpo/xkaKPqpQh77cqpo/xkaKPqpQhz7cqpo/xkaKPqpQhz7cqpo/xkaKPqpQhz7cqpo/xkaKPqpQhz7cqpo/DHk9PqpQhz7cqpo/DHk9PqpQhz7cqpo/DHk9PmgzPT7cqpo/DHk9PmgzPT7cqpo/DHk9PmgzPT7cqpo/DHk9PmgzPT7cqpo/xkaKPmgzPT7cqpo/xkaKPmgzPT7cqpo/xkaKPqpQhz7cqpo/DHk9vqpQhz7cqpo/DHk9vqpQhz7cqpo/DHk9vqpQhz7cqpo/xkaKvqpQhz7cqpo/xkaKvqpQhz7cqpo/xkaKvmgzPT7cqpo/xkaKvmgzPT7cqpo/xkaKvmgzPT7cqpo/xkaKvmgzPT7cqpo/DHk9vmgzPT7cqpo/DHk9vmgzPT7cqpo/DHk9vmgzPb5Y+5w/xkaKvmgzPb5Y+5w/xkaKvmgzPb5Y+5w/xkaKvmgzPb5Y+5w/DHk9vmgzPb5Y+5w/DHk9vmgzPb5Y+5w/DHk9vqpQh75Y+5w/DHk9vqpQh75Y+5w/DHk9vqpQh75Y+5w/DHk9vqpQh75Y+5w/xkaKvqpQh75Y+5w/xkaKvqpQh75Y+5w/xkaKvmgzPb5Y+5w/DHk9PmgzPb5Y+5w/DHk9PmgzPb5Y+5w/DHk9PmgzPb5Y+5w/xkaKPmgzPb5Y+5w/xkaKPmgzPb5Y+5w/xkaKPqpQh75Y+5w/xkaKPqpQh75Y+5w/xkaKPqpQh75Y+5w/xkaKPqpQh75Y+5w/DHk9PqpQh75Y+5w/DHk9PqpQh75Y+5w/DHk9PqpQhz5Y+5w/DHk9PqpQhz5Y+5w/DHk9PqpQhz5Y+5w/DHk9PqpQhz5Y+5w/xkaKPqpQhz5Y+5w/xkaKPqpQhz5Y+5w/xkaKPmgzPT5Y+5w/xkaKPmgzPT5Y+5w/xkaKPmgzPT5Y+5w/xkaKPmgzPT5Y+5w/DHk9PmgzPT5Y+5w/DHk9PmgzPT5Y+5w/DHk9PqpQhz5Y+5w/xkaKvqpQhz5Y+5w/xkaKvqpQhz5Y+5w/xkaKvqpQhz5Y+5w/DHk9vqpQhz5Y+5w/DHk9vqpQhz5Y+5w/DHk9vmgzPT5Y+5w/DHk9vmgzPT5Y+5w/DHk9vmgzPT5Y+5w/DHk9vmgzPT5Y+5w/xkaKvmgzPT5Y+5w/xkaKvmgzPT5Y+5w/xkaKvqQZYz59Dpw/mrmnvaQZYz59Dpw/mrmnvaQZYz7gAJ8/mrmnvaQZYz7gAJ8/mrmnvaQZYz59Dpw/lZm9vaQZYz59Dpw/lZm9vaQZYz7gAJ8/lZm9vaQZYz7gAJ8/lZm9vaQZYz7gAJ8/lZm9vaEJbj59Dpw/mrmnvaEJbj59Dpw/mrmnvaEJbj7gAJ8/mrmnvaEJbj7gAJ8/mrmnvaEJbj59Dpw/lZm9vaEJbj59Dpw/lZm9vaEJbj7gAJ8/lZm9vaEJbj7gAJ8/lZm9vaEJbj7gAJ8/lZm9vaQZYz6MQ6A/mrmnvaQZYz6MQ6A/mrmnvaQZYz6MQ6A/mrmnvaQZYz6MQ6A/lZm9vaQZYz6MQ6A/lZm9vaEJbj6MQ6A/lZm9vaEJbj6MQ6A/lZm9vaEJbj6MQ6A/mrmnvaEJbj6MQ6A/mrmnvaEJbj6MQ6A/mrmnvaQZYz7gAJ8/hzVJvqQZYz7gAJ8/hzVJvqQZYz7gAJ8/hzVJvqEJbj7gAJ8/hzVJvqEJbj7gAJ8/hzVJvqEJbj7gAJ8/hzVJvqQZYz6MQ6A/hzVJvqQZYz6MQ6A/hzVJvqQZYz6MQ6A/hzVJvqEJbj6MQ6A/hzVJvqEJbj6MQ6A/hzVJvqEJbj6MQ6A/hzVJvqEJbj59Dpw/wUi+vqEJbj59Dpw/wUi+vqEJbj7gAJ8/wUi+vqEJbj7gAJ8/wUi+vqEJbj59Dpw/wtC4vqEJbj59Dpw/wtC4vqEJbj7gAJ8/wtC4vqEJbj7gAJ8/wtC4vqEJbj7gAJ8/wtC4vqQZYz59Dpw/wUi+vqQZYz59Dpw/wUi+vqQZYz7gAJ8/wUi+vqQZYz7gAJ8/wUi+vqQZYz59Dpw/wtC4vqQZYz59Dpw/wtC4vqQZYz7gAJ8/wtC4vqQZYz7gAJ8/wtC4vqQZYz7gAJ8/wtC4vqEJbj6MQ6A/wUi+vqEJbj6MQ6A/wUi+vqEJbj6MQ6A/wUi+vqEJbj6MQ6A/wtC4vqEJbj6MQ6A/wtC4vqQZYz6MQ6A/wtC4vqQZYz6MQ6A/wtC4vqQZYz6MQ6A/wUi+vqQZYz6MQ6A/wUi+vqQZYz6MQ6A/wUi+vqQJbj7gAJ8/Y5yDvqQJbj7gAJ8/Y5yDvqQJbj7gAJ8/Y5yDvqcZYz7gAJ8/Y5yDvqcZYz7gAJ8/Y5yDvqcZYz7gAJ8/Y5yDvqQJbj6MQ6A/Y5yDvqQJbj6MQ6A/Y5yDvqQJbj6MQ6A/Y5yDvqcZYz6MQ6A/Y5yDvqcZYz6MQ6A/Y5yDvqcZYz6MQ6A/Y5yDvv91vj59Dpw/Kb9ivv91vj59Dpw/Kb9ivv91vj7hAJ8/Kb9ivv91vj7hAJ8/Kb9ivgH+uD59Dpw/Kb9ivgH+uD59Dpw/Kb9ivgH+uD7hAJ8/Kb9ivgH+uD7hAJ8/Kb9ivgH+uD7hAJ8/Kb9ivv91vj59Dpw/J69tvv91vj59Dpw/J69tvv91vj7hAJ8/J69tvv91vj7hAJ8/J69tvgH+uD59Dpw/J69tvgH+uD59Dpw/J69tvgH+uD7hAJ8/J69tvgH+uD7hAJ8/J69tvgH+uD7hAJ8/J69tvv91vj6NQ6A/Kb9ivv91vj6NQ6A/Kb9ivv91vj6NQ6A/Kb9ivgH+uD6NQ6A/Kb9ivgH+uD6NQ6A/Kb9ivgH+uD6NQ6A/J69tvgH+uD6NQ6A/J69tvv91vj6NQ6A/J69tvv91vj6NQ6A/J69tvv91vj6NQ6A/J69tvqLJgz7hAJ8/Kb9ivqLJgz7hAJ8/Kb9ivqLJgz7hAJ8/Kb9ivqLJgz7hAJ8/J69tvqLJgz7hAJ8/J69tvqLJgz7hAJ8/J69tvqLJgz6NQ6A/Kb9ivqLJgz6NQ6A/Kb9ivqLJgz6NQ6A/Kb9ivqLJgz6NQ6A/J69tvqLJgz6NQ6A/J69tvqLJgz6NQ6A/J69tvpVuqD19Dpw/Ja9tvpVuqD19Dpw/Ja9tvpVuqD3hAJ8/Ja9tvpVuqD3hAJ8/Ja9tvpBOvj19Dpw/J69tvpBOvj19Dpw/J69tvpBOvj3hAJ8/J69tvpBOvj3hAJ8/J69tvpBOvj3hAJ8/J69tvpVuqD19Dpw/KL9ivpVuqD19Dpw/KL9ivpVuqD3hAJ8/KL9ivpVuqD3hAJ8/KL9ivpBOvj19Dpw/Kb9ivpBOvj19Dpw/Kb9ivpBOvj3hAJ8/Kb9ivpBOvj3hAJ8/Kb9ivpBOvj3hAJ8/Kb9ivpVuqD2NQ6A/Ja9tvpVuqD2NQ6A/Ja9tvpVuqD2NQ6A/Ja9tvpBOvj2NQ6A/J69tvpBOvj2NQ6A/J69tvpBOvj2NQ6A/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m5m9PaQZYz59Dpw/oLmnPaQZYz59Dpw/oLmnPaQZYz7hAJ8/oLmnPaQZYz7hAJ8/oLmnPaQZYz59Dpw/m5m9PaQZYz59Dpw/m5m9PaQZYz7hAJ8/m5m9PaQZYz7hAJ8/m5m9PaQZYz7hAJ8/m5m9PaEJbj6NQ6A/oLmnPaEJbj6NQ6A/oLmnPaEJbj6NQ6A/oLmnPaEJbj6NQ6A/m5m9PaEJbj6NQ6A/m5m9PaQZYz6NQ6A/m5m9PaQZYz6NQ6A/m5m9PaQZYz6NQ6A/oLmnPaQZYz6NQ6A/oLmnPaQZYz6NQ6A/oLmnPaQJbj7hAJ8/ijVJPqQJbj7hAJ8/ijVJPqQJbj7hAJ8/ijVJPqcZYz7hAJ8/ijVJPqcZYz7hAJ8/ijVJPqcZYz7hAJ8/ijVJPqQJbj6NQ6A/ijVJPqQJbj6NQ6A/ijVJPqQJbj6NQ6A/ijVJPqcZYz6NQ6A/ijVJPqcZYz6NQ6A/ijVJPqcZYz6NQ6A/ijVJPv91vj5+Dpw/J69tPv91vj5+Dpw/J69tPv91vj7iAJ8/J69tPv91vj7iAJ8/J69tPgH+uD5+Dpw/J69tPgH+uD5+Dpw/J69tPgH+uD7iAJ8/J69tPgH+uD7iAJ8/J69tPgH+uD7iAJ8/J69tPv91vj5+Dpw/Kb9iPv91vj5+Dpw/Kb9iPv91vj7iAJ8/Kb9iPv91vj7iAJ8/Kb9iPgH+uD5+Dpw/Kb9iPgH+uD5+Dpw/Kb9iPgH+uD7iAJ8/Kb9iPgH+uD7iAJ8/Kb9iPgH+uD7iAJ8/Kb9iPv91vj6NQ6A/J69tPv91vj6NQ6A/J69tPv91vj6NQ6A/J69tPgH+uD6NQ6A/J69tPgH+uD6NQ6A/J69tPgH+uD6NQ6A/Kb9iPgH+uD6NQ6A/Kb9iPv91vj6NQ6A/Kb9iPv91vj6NQ6A/Kb9iPv91vj6NQ6A/Kb9iPqLJgz7iAJ8/J69tPqLJgz7iAJ8/J69tPqLJgz7iAJ8/J69tPqLJgz7iAJ8/Kb9iPqLJgz7iAJ8/Kb9iPqLJgz7iAJ8/Kb9iPqLJgz6NQ6A/J69tPqLJgz6NQ6A/J69tPqLJgz6NQ6A/J69tPqLJgz6NQ6A/Kb9iPqLJgz6NQ6A/Kb9iPqLJgz6NQ6A/Kb9iPpVuqD1+Dpw/Kb9iPpVuqD1+Dpw/Kb9iPpVuqD3iAJ8/Kb9iPpVuqD3iAJ8/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hzVJvpcJbr7hAJ8/hzVJvpcJbr7hAJ8/hzVJvpkZY77hAJ8/hzVJvpkZY77hAJ8/hzVJvpkZY77hAJ8/hzVJvpcJbr6NQ6A/hzVJvpcJbr6NQ6A/hzVJvpcJbr6NQ6A/hzVJvpkZY76NQ6A/hzVJvpkZY76NQ6A/hzVJvpkZY76NQ6A/hzVJvpkZY759Dpw/wUi+vpkZY759Dpw/wUi+vpkZY77hAJ8/wUi+vpkZY77hAJ8/wUi+vpkZY759Dpw/wtC4vpkZY759Dpw/wtC4vpkZY77hAJ8/wtC4vpkZY77hAJ8/wtC4vpkZY77hAJ8/wtC4vpcJbr59Dpw/wUi+vpcJbr59Dpw/wUi+vpcJbr7hAJ8/wUi+vpcJbr7hAJ8/wUi+vpcJbr59Dpw/wtC4vpcJbr59Dpw/wtC4vpcJbr7hAJ8/wtC4vpcJbr7hAJ8/wtC4vpcJbr7hAJ8/wtC4vpkZY76NQ6A/wUi+vpkZY76NQ6A/wUi+vpkZY76NQ6A/wUi+vpkZY76NQ6A/wtC4vpkZY76NQ6A/wtC4vpcJbr6NQ6A/wtC4vpcJbr6NQ6A/wtC4vpcJbr6NQ6A/wUi+vpcJbr6NQ6A/wUi+vpcJbr6NQ6A/wUi+vpYZY77hAJ8/Y5yDvpYZY77hAJ8/Y5yDvpYZY77hAJ8/Y5yDvpQJbr7hAJ8/Y5yDvpQJbr7hAJ8/Y5yDvpQJbr7hAJ8/Y5yDvpYZY76NQ6A/Y5yDvpYZY76NQ6A/Y5yDvpYZY76NQ6A/Y5yDvpQJbr6NQ6A/Y5yDvpQJbr6NQ6A/Y5yDvpQJbr6NQ6A/Y5yDvnpuqL1+Dpw/Kb9ivnpuqL1+Dpw/Kb9ivnpuqL3iAJ8/Kb9ivnpuqL3iAJ8/Kb9ivnVOvr1+Dpw/Kb9ivnVOvr1+Dpw/Kb9ivnVOvr3iAJ8/Kb9ivnVOvr3iAJ8/Kb9ivnVOvr3iAJ8/Kb9ivnpuqL1+Dpw/J69tvnpuqL1+Dpw/J69tvnpuqL3iAJ8/J69tvnpuqL3iAJ8/J69tvnVOvr1+Dpw/J69tvnVOvr1+Dpw/J69tvnVOvr3iAJ8/J69tvnVOvr3iAJ8/J69tvnVOvr3iAJ8/J69tvnpuqL2NQ6A/Kb9ivnpuqL2NQ6A/Kb9ivnpuqL2NQ6A/Kb9ivnVOvr2NQ6A/Kb9ivnVOvr2NQ6A/Kb9ivnVOvr2NQ6A/J69tvnVOvr2NQ6A/J69tvnpuqL2NQ6A/J69tvnpuqL2NQ6A/J69tvnpuqL2NQ6A/J69tvvePSb7iAJ8/Kb9ivvePSb7iAJ8/Kb9ivvePSb7iAJ8/Kb9ivvePSb7iAJ8/J69tvvePSb7iAJ8/J69tvvePSb7iAJ8/J69tvvePSb6NQ6A/Kb9ivvePSb6NQ6A/Kb9ivvePSb6NQ6A/Kb9ivvePSb6NQ6A/J69tvvePSb6NQ6A/J69tvvePSb6NQ6A/J69tvvl1vr5+Dpw/Ja9tvvl1vr5+Dpw/Ja9tvvl1vr7iAJ8/Ja9tvvl1vr7iAJ8/Ja9tvvr9uL5+Dpw/J69tvvr9uL5+Dpw/J69tvvr9uL7iAJ8/J69tvvr9uL7iAJ8/J69tvvr9uL7iAJ8/J69tvvl1vr5+Dpw/KL9ivvl1vr5+Dpw/KL9ivvl1vr7iAJ8/KL9ivvl1vr7iAJ8/KL9ivvr9uL5+Dpw/Kb9ivvr9uL5+Dpw/Kb9ivvr9uL7iAJ8/Kb9ivvr9uL7iAJ8/Kb9ivvr9uL7iAJ8/Kb9ivvl1vr6NQ6A/Ja9tvvl1vr6NQ6A/Ja9tvvl1vr6NQ6A/Ja9tvvr9uL6NQ6A/J69tvvr9uL6NQ6A/J69tvvr9uL6NQ6A/Kb9ivvr9uL6NQ6A/Kb9ivvl1vr6NQ6A/KL9ivvl1vr6NQ6A/KL9ivvl1vr6NQ6A/KL9ivpvJg77iAJ8/KK9tvpvJg77iAJ8/KK9tvpvJg77iAJ8/KK9tvpvJg77iAJ8/K79ivpvJg77iAJ8/K79ivpvJg77iAJ8/K79ivpvJg76NQ6A/KK9tvpvJg76NQ6A/KK9tvpvJg76NQ6A/KK9tvpvJg76NQ6A/K79ivpvJg76NQ6A/K79ivpvJg76NQ6A/K79ivrai2r15d5s/UQ/Hvbai2r15d5s/UQ/Hvbai2r2/D58/UQ/Hvbai2r2/D58/UQ/HvTOB7b15d5s/0u3ZvTOB7b15d5s/0u3ZvTOB7b2/D58/0u3ZvTOB7b2/D58/0u3ZvTOB7b2/D58/0u3ZvTLEx715d5s/0+3ZvTLEx715d5s/0+3ZvTLEx72/D58/0+3ZvTLEx72/D58/0+3ZvbOi2r15d5s/VMzsvbOi2r15d5s/VMzsvbOi2r2/D58/VMzsvbOi2r2/D58/VMzsvbOi2r2/D58/VMzsvbai2r1emaA/UQ/Hvbai2r1emaA/UQ/Hvbai2r1emaA/UQ/HvTOB7b1emaA/0u3ZvTOB7b1emaA/0u3ZvbOi2r1emaA/VMzsvbOi2r1emaA/VMzsvTLEx71emaA/0+3ZvTLEx71emaA/0+3ZvTLEx71emaA/0+3ZvUmKUr6/D58/lsBIvkmKUr6/D58/lsBIvkmKUr6/D58/lsBIvgcbSb6/D58/1i9SvgcbSb6/D58/1i9SvgcbSb6/D58/1i9SvkmKUr5emaA/lsBIvkmKUr5emaA/lsBIvkmKUr5emaA/lsBIvgcbSb5emaA/1i9SvgcbSb5emaA/1i9SvgcbSb5emaA/1i9Svurosb55d5s/UnO2vurosb55d5s/UnO2vurosb6/D58/UnO2vurosb6/D58/UnO2vkoxrb55d5s/sbuxvkoxrb55d5s/sbuxvkoxrb6/D58/sbuxvkoxrb6/D58/sbuxvkoxrb6/D58/sbuxvoqgtr55d5s/sbuxvoqgtr55d5s/sbuxvoqgtr6/D58/sbuxvoqgtr6/D58/sbuxvunosb55d5s/EgStvunosb55d5s/EgStvunosb6/D58/EgStvunosb6/D58/EgStvunosb6/D58/EgStvurosb5emaA/UnO2vurosb5emaA/UnO2vurosb5emaA/UnO2vkoxrb5emaA/sbuxvkoxrb5emaA/sbuxvunosb5emaA/EgStvunosb5emaA/EgStvoqgtr5emaA/sbuxvoqgtr5emaA/sbuxvoqgtr5emaA/sbuxvuSYfr6/D58/3NaDvuSYfr6/D58/3NaDvuSYfr6/D58/3NaDvhMEhL6/D58/eD5+vhMEhL6/D58/eD5+vhMEhL6/D58/eD5+vuSYfr5emaA/3NaDvuSYfr5emaA/3NaDvuSYfr5emaA/3NaDvhMEhL5emaA/eD5+vhMEhL5emaA/eD5+vhMEhL5emaA/eD5+vjLEx716d5s/tLuxvjLEx716d5s/tLuxvjLEx73AD58/tLuxvjLEx73AD58/tLuxvrOi2r16d5s/EwStvrOi2r16d5s/EwStvrOi2r3AD58/EwStvrOi2r3AD58/EwStvrOi2r3AD58/EwStvrOi2r16d5s/U3O2vrOi2r16d5s/U3O2vrOi2r3AD58/U3O2vrOi2r3AD58/U3O2vjOB7b16d5s/tLuxvjOB7b16d5s/tLuxvjOB7b3AD58/tLuxvjOB7b3AD58/tLuxvjOB7b3AD58/tLuxvjLEx71fmaA/tLuxvjLEx71fmaA/tLuxvjLEx71fmaA/tLuxvrOi2r1fmaA/EwStvrOi2r1fmaA/EwStvjOB7b1fmaA/tLuxvjOB7b1fmaA/tLuxvrOi2r1fmaA/U3O2vrOi2r1fmaA/U3O2vrOi2r1fmaA/U3O2vgcbSb7AD58/eD5+vgcbSb7AD58/eD5+vgcbSb7AD58/eD5+vkaKUr7AD58/3NaDvkaKUr7AD58/3NaDvkaKUr7AD58/3NaDvgcbSb5fmaA/eD5+vgcbSb5fmaA/eD5+vgcbSb5fmaA/eD5+vkaKUr5fmaA/3NaDvkaKUr5fmaA/3NaDvkaKUr5fmaA/3NaDvoqgtr56d5s/1u3ZvYqgtr56d5s/1u3ZvYqgtr7AD58/1u3ZvYqgtr7AD58/1u3Zvenosb56d5s/Wczsvenosb56d5s/Wczsvenosb7AD58/Wczsvenosb7AD58/Wczsvenosb7AD58/Wczsvenosb56d5s/VQ/Hvenosb56d5s/VQ/Hvenosb7AD58/VQ/Hvenosb7AD58/VQ/HvUoxrb56d5s/1+3ZvUoxrb56d5s/1+3ZvUoxrb7AD58/1+3ZvUoxrb7AD58/1+3ZvUoxrb7AD58/1+3ZvYqgtr5fmaA/1u3ZvYqgtr5fmaA/1u3ZvYqgtr5fmaA/1u3Zvenosb5fmaA/Wczsvenosb5fmaA/WczsvUoxrb5fmaA/1+3ZvUoxrb5fmaA/1+3Zvenosb5fmaA/VQ/Hvenosb5fmaA/VQ/Hvenosb5fmaA/VQ/HvRQEhL7AD58/3C9SvhQEhL7AD58/3C9SvhQEhL7AD58/3C9SvueYfr7AD58/msBIvueYfr7AD58/msBIvueYfr7AD58/msBIvhQEhL5fmaA/3C9SvhQEhL5fmaA/3C9SvhQEhL5fmaA/3C9SvueYfr5fmaA/msBIvueYfr5fmaA/msBIvueYfr5fmaA/msBIvpcJbr59Dpw/wUi+PpcJbr59Dpw/wUi+PpcJbr7hAJ8/wUi+PpcJbr7hAJ8/wUi+PpcJbr59Dpw/wtC4PpcJbr59Dpw/wtC4PpcJbr7hAJ8/wtC4PpcJbr7hAJ8/wtC4PpcJbr7hAJ8/wtC4PpkZY759Dpw/wUi+PpkZY759Dpw/wUi+PpkZY77hAJ8/wUi+PpkZY77hAJ8/wUi+PpkZY759Dpw/wtC4PpkZY759Dpw/wtC4PpkZY77hAJ8/wtC4PpkZY77hAJ8/wtC4PpkZY77hAJ8/wtC4PpcJbr6NQ6A/wUi+PpcJbr6NQ6A/wUi+PpcJbr6NQ6A/wUi+PpcJbr6NQ6A/wtC4PpcJbr6NQ6A/wtC4PpkZY76NQ6A/wtC4PpkZY76NQ6A/wtC4PpkZY76NQ6A/wUi+PpkZY76NQ6A/wUi+PpkZY76NQ6A/wUi+PpcJbr7hAJ8/ZJyDPpcJbr7hAJ8/ZJyDPpcJbr7hAJ8/ZJyDPpkZY77hAJ8/ZJyDPpkZY77hAJ8/ZJyDPpkZY77hAJ8/ZJyDPpcJbr6NQ6A/ZJyDPpcJbr6NQ6A/ZJyDPpcJbr6NQ6A/ZJyDPpkZY76NQ6A/ZJyDPpkZY76NQ6A/ZJyDPpkZY76NQ6A/ZJyDPpkZY759Dpw/oLmnPZkZY759Dpw/oLmnPZkZY77hAJ8/oLmnPZkZY77hAJ8/oLmnPZkZY759Dpw/m5m9PZkZY759Dpw/m5m9PZkZY77hAJ8/m5m9PZkZY77hAJ8/m5m9PZkZY77hAJ8/m5m9PZcJbr59Dpw/oLmnPZcJbr59Dpw/oLmnPZcJbr7hAJ8/oLmnPZcJbr7hAJ8/oLmnPZcJbr59Dpw/m5m9PZcJbr59Dpw/m5m9PZcJbr7hAJ8/m5m9PZcJbr7hAJ8/m5m9PZcJbr7hAJ8/m5m9PZkZY76NQ6A/oLmnPZkZY76NQ6A/oLmnPZkZY76NQ6A/oLmnPZkZY76NQ6A/m5m9PZkZY76NQ6A/m5m9PZcJbr6NQ6A/m5m9PZcJbr6NQ6A/m5m9PZcJbr6NQ6A/oLmnPZcJbr6NQ6A/oLmnPZcJbr6NQ6A/oLmnPZYZY77hAJ8/ijVJPpYZY77hAJ8/ijVJPpYZY77hAJ8/ijVJPpQJbr7hAJ8/ijVJPpQJbr7hAJ8/ijVJPpQJbr7hAJ8/ijVJPpYZY76NQ6A/ijVJPpYZY76NQ6A/ijVJPpYZY76NQ6A/ijVJPpQJbr6NQ6A/ijVJPpQJbr6NQ6A/ijVJPpQJbr6NQ6A/ijVJPnpuqL1+Dpw/J69tPnpuqL1+Dpw/J69tPnpuqL3iAJ8/J69tPnpuqL3iAJ8/J69tPnVOvr1+Dpw/J69tPnVOvr1+Dpw/J69tPnVOvr3iAJ8/J69tPnVOvr3iAJ8/J69tPnVOvr3iAJ8/J69tPnpuqL1+Dpw/Kb9iPnpuqL1+Dpw/Kb9iPnpuqL3iAJ8/Kb9iPnpuqL3iAJ8/Kb9iPnVOvr1+Dpw/Kb9iPnVOvr1+Dpw/Kb9iPnVOvr3iAJ8/Kb9iPnVOvr3iAJ8/Kb9iPnVOvr3iAJ8/Kb9iPnpuqL2NQ6A/J69tPnpuqL2NQ6A/J69tPnpuqL2NQ6A/J69tPnVOvr2NQ6A/J69tPnVOvr2NQ6A/J69tPnVOvr2NQ6A/Kb9iPnVOvr2NQ6A/Kb9iPnpuqL2NQ6A/Kb9iPnpuqL2NQ6A/Kb9iPnpuqL2NQ6A/Kb9iPvePSb7iAJ8/J69tPvePSb7iAJ8/J69tPvePSb7iAJ8/J69tPvePSb7iAJ8/Kb9iPvePSb7iAJ8/Kb9iPvePSb7iAJ8/Kb9iPvePSb6NQ6A/J69tPvePSb6NQ6A/J69tPvePSb6NQ6A/J69tPvePSb6NQ6A/Kb9iPvePSb6NQ6A/Kb9iPvePSb6NQ6A/Kb9iPvl1vr5+Dpw/Kb9iPvl1vr5+Dpw/Kb9iPvl1vr7iAJ8/Kb9iPvl1vr7iAJ8/Kb9iPvr9uL5+Dpw/Kb9iPvr9uL5+Dpw/Kb9iPvr9uL7iAJ8/Kb9iPvr9uL7iAJ8/Kb9iPvr9uL7iAJ8/Kb9iPvl1vr5+Dpw/J69tPvl1vr5+Dpw/J69tPvl1vr7iAJ8/J69tPvl1vr7iAJ8/J69tPvr9uL5+Dpw/J69tPvr9uL5+Dpw/J69tPvr9uL7iAJ8/J69tPvr9uL7iAJ8/J69tPvr9uL7iAJ8/J69tPvl1vr6NQ6A/Kb9iPvl1vr6NQ6A/Kb9iPvl1vr6NQ6A/Kb9iPvr9uL6NQ6A/Kb9iPvr9uL6NQ6A/Kb9iPvr9uL6NQ6A/J69tPvr9uL6NQ6A/J69tPvl1vr6NQ6A/J69tPvl1vr6NQ6A/J69tPvl1vr6NQ6A/J69tPpvJg77iAJ8/Jr9iPpvJg77iAJ8/Jr9iPpvJg77iAJ8/Jr9iPpvJg77iAJ8/JK9tPpvJg77iAJ8/JK9tPpvJg77iAJ8/JK9tPpvJg76NQ6A/Jr9iPpvJg76NQ6A/Jr9iPpvJg76NQ6A/Jr9iPpvJg76NQ6A/JK9tPpvJg76NQ6A/JK9tPpvJg76NQ6A/JK9tPrai2r15d5s/U3O2Prai2r15d5s/U3O2Prai2r2/D58/U3O2Prai2r2/D58/U3O2PjOB7b15d5s/tLuxPjOB7b15d5s/tLuxPjOB7b2/D58/tLuxPjOB7b2/D58/tLuxPjOB7b2/D58/tLuxPjLEx715d5s/tLuxPjLEx715d5s/tLuxPjLEx72/D58/tLuxPjLEx72/D58/tLuxPrOi2r15d5s/EwStPrOi2r15d5s/EwStPrOi2r2/D58/EwStPrOi2r2/D58/EwStPrOi2r2/D58/EwStPrai2r1emaA/U3O2Prai2r1emaA/U3O2Prai2r1emaA/U3O2PjOB7b1emaA/tLuxPjOB7b1emaA/tLuxPrOi2r1emaA/EwStPrOi2r1emaA/EwStPjLEx71emaA/tLuxPjLEx71emaA/tLuxPjLEx71emaA/tLuxPkmKUr6/D58/3NaDPkmKUr6/D58/3NaDPkmKUr6/D58/3NaDPgcbSb6/D58/ej5+PgcbSb6/D58/ej5+PgcbSb6/D58/ej5+PkmKUr5emaA/3NaDPkmKUr5emaA/3NaDPkmKUr5emaA/3NaDPgcbSb5emaA/ej5+PgcbSb5emaA/ej5+PgcbSb5emaA/ej5+Purosb55d5s/WA/HPerosb55d5s/WA/HPerosb6/D58/WA/HPerosb6/D58/WA/HPUoxrb55d5s/2e3ZPUoxrb55d5s/2e3ZPUoxrb6/D58/2e3ZPUoxrb6/D58/2e3ZPUoxrb6/D58/2e3ZPYqgtr55d5s/2e3ZPYqgtr55d5s/2e3ZPYqgtr6/D58/2e3ZPYqgtr6/D58/2e3ZPenosb55d5s/WczsPenosb55d5s/WczsPenosb6/D58/WczsPenosb6/D58/WczsPenosb6/D58/WczsPerosb5emaA/WA/HPerosb5emaA/WA/HPerosb5emaA/WA/HPUoxrb5emaA/2e3ZPUoxrb5emaA/2e3ZPenosb5emaA/WczsPenosb5emaA/WczsPYqgtr5emaA/2e3ZPYqgtr5emaA/2e3ZPYqgtr5emaA/2e3ZPeSYfr6/D58/l8BIPuSYfr6/D58/l8BIPuSYfr6/D58/l8BIPhMEhL6/D58/2S9SPhMEhL6/D58/2S9SPhMEhL6/D58/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AAAAgAAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAgD8AAAAAAAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgAAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgAAAgD8AAAAAAAAAgAAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAgD8AAAAAAAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgAAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgAAAgD8AAAAAAAAAgAAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAgD8AAAAAAAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgAAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAgD8AAAAAAAAAgAAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgAAAgD8AAAAAAAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAgD8AAAAAAAAAgAAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgAAAgD8AAAAAAAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAgD8AAAAAAAAAgAAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgAAAgD8AAAAAAAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAgD8AAAAAAAAAgAAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgAAAgD8AAAAAAAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAPwAAgL8AAAAAAAAAgAAAAAAAAAAAAACAPwAAgL8AAAAAAAAAgAAAAAAAAAAAAACAvwAAgL8AAAAAAAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAvwAAAAAAAAAAAACAPwAAgD8AAAAAAAAAgAAAAAAAAAAAAACAPwAAgD8AAAAAAAAAgAAAAAAAAAAAAACAvwAAgD8AAAAAAAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAvwAAgD8AAAAAAAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAPwAAAAD//38/AAAAgAAAgL8AAAAAAAAAgAAAAAAAAIA/AAAAgAAAAAAAAIA/AAAAgAAAgD8AAAAAAAAAgAAAAAAAAAAAAACAPwAAAAD//38/AAAAgAAAgD8AAAAAAAAAgAAAgL8AAAAAAAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAvwAAAAAAAIC/AAAAgAAAAAAAAAAAAACAvwAAgD8AAAAAAAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAgD8AAAAAAAAAgAAAAAAAAAAAAACAvwAAgD8AAAAAAAAAgAAAAAAAAAAAAACAvwAAgD8AAAAAAAAAgAAAAAAAAAAAAACAPwAAgD8AAAAAAAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAPwAAgD8AAAAAFeAitAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAvwAAgL8AAAAAAAAAgAAAAAAAAAAAAACAvwAAgL8AAAAAAAAAgAAAAAAAAAAAAACAPwAAgL8AAAAAFeAiNAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAPwAAAAAAAAAAAACAvwAAAAD//38/AAAAgAAAgD8AAAAAAAAAgAAAAAD//38/AAAAgAAAgD8AAAAAH1B0tAAAgL8AAAAAH1B0NAAAAAAAAIA/AAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAvwAAAAD//38/AAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAPwAAgD8AAAAAH1D0tAAAgL8AAAAAH1D0NAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgAAAgD8AAAAAH1D0tAAAgL8AAAAAH1D0NAAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgAAAAAAAAAAAAACAPwAAgD8AAAAAAAAAgAAAAAAAAAAAAACAPwAAgD8AAAAAAAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAPwAAgL8AAAAAAAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAPwAAAAAAAAAAAACAvwAAgD8AAAAAAAAAgAAAAAAAAAAAAACAvwAAgD8AAAAAAAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAvwAAgL8AAAAAAAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAvwAAAAAAAAAAAACAPwAAAAD//38/AAAAgAAAgD8AAAAAAAAAgAAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgAAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAAAAAAAAAAACAvwAAAAD//38/AAAAgAAAgD8AAAAAAAAAgAAAgL8AAAAAAAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAPwAAgL8AAAAAAAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAvwAAgL8AAAAAAAAAgAAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAgL8AAAAAAAAAgA8/O7YAAAAAAACAvwAAgL8AAAAAAAAAgBI/O7YAAAAAAACAvw8/O7YAAAAAAACAvwAAgD8AAAAAAAAAgOYJALYAAAAAAACAvwAAAAAAAIC/AAAAgAAAgD8AAAAAAAAAgAAAgL8AAAAAAAAAgA8/uzUAAAAAAACAPwAAgL8AAAAAAAAAgBI/uzUAAAAAAACAPw8/uzUAAAAAAACAPwAAgD8AAAAAAAAAgAAAAAAAAIC/AAAAgHGpiTUAAAAAAACAPwAAgD8AAAAAAAAAgAAAgL8AAAAAAAAAgBM/O7YAAAAAAACAvwAAAAAAAIA/AAAAgKDexLUAAAAAAACAvwAAAAAAAIA/AAAAgAAAAAAAAIA/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7gQ1v/gENT8AAAAA7gQ1P2RblzUAAIC/AAAAgPIENT8AAAAA9AQ1P/gENT8AAAAA7gQ1vwAFNb8AAAAA5wQ1vwAFNb8AAAAA5wQ1PwAAAAAAAIA/AAAAgAcFNb8AAAAA4QQ1v2lblzQAAIA/AAAAgGJblzQAAIA/AAAAgO8ENT8AAAAA+AQ1PwAFNb8AAAAA5wQ1PwAAAAAAAIA/AAAAgPkENT8AAAAA7QQ1PwwFNb8AAAAA2gQ1v2RblzUAAIC/AAAAgAAFNT8AAAAA5wQ1v2RblzUAAIC/AAAAgOMENT8AAAAAAgU1PwAFNT8AAAAA5wQ1vwwFNb8AAAAA2gQ1v2RbFzUAAIA/AAAAgAAFNT8AAAAA5wQ1v2RbFzUAAIA/AAAAgOMENT8AAAAAAgU1PwAFNT8AAAAA5wQ1vwAAgL8AAAAAAAAAgAAAAAAAAAAAAACAPwAAgL8AAAAAAAAAgAAAAAAAAAAAAACAPwAAgL8AAAAAAAAAgAAAAAAAAAAAAACAvwAAgL8AAAAAAAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAvwAAAAAAAAAAAACAPwAAgD8AAAAAAAAAgAAAAAAAAAAAAACAPwAAgD8AAAAAAAAAgAAAAAAAAAAAAACAvwAAgD8AAAAAAAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAvwAAgD8AAAAAAAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAPwAAAAD//38/AAAAgAAAgL8AAAAAAAAAgAAAAAAAAIA/AAAAgAAAAAAAAIA/AAAAgAAAgD8AAAAAAAAAgAAAAAAAAAAAAACAPwAAAAD//38/AAAAgAAAgD8AAAAAAAAAgAAAgL8AAAAAAAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAvwAAAAAAAIC/AAAAgAAAAAAAAAAAAACAvwAAgD8AAAAAAAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAgD8AAAAAAAAAgAAAAAAAAAAAAACAvwAAgD8AAAAAAAAAgAAAAAAAAAAAAACAvwAAgD8AAAAAAAAAgAAAAAAAAAAAAACAPwAAgD8AAAAAAAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAPwAAgD8AAAAAFeAitAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAvwAAgL8AAAAAAAAAgAAAAAAAAAAAAACAvwAAgL8AAAAAAAAAgAAAAAAAAAAAAACAPwAAgL8AAAAAFeAiNAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAPwAAAAAAAAAAAACAvwAAAAD//38/AAAAgAAAgD8AAAAAAAAAgAAAAAD//38/AAAAgAAAgD8AAAAAH1B0tAAAgL8AAAAAH1B0NAAAAAAAAIA/AAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAvwAAAAD//38/AAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAPwAAgD8AAAAAH1D0tAAAgL8AAAAAH1D0NAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgAAAgD8AAAAAH1D0tAAAgL8AAAAAH1D0NAAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgAAAAAAAAAAAAACAPwAAgD8AAAAAAAAAgAAAAAAAAAAAAACAPwAAgD8AAAAAAAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAPwAAgL8AAAAAAAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAPwAAAAAAAAAAAACAvwAAgD8AAAAAAAAAgAAAAAAAAAAAAACAvwAAgD8AAAAAAAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAvwAAgL8AAAAAAAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAvwAAAAAAAAAA//9/PwAAAAD//38/AAAAgAAAgD8AAAAAAAAAgAAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgAAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAAAAAAAAA//9/vwAAAAD//38/AAAAgAAAgD8AAAAAAAAAgAAAgL8AAAAAAAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAPwAAgL8AAAAAAAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAvwAAgL8AAAAAAAAAgAAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAvwAAgL8AAAAAAAAAgAAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAgD8AAAAAAAAAgO74GbQAAAAAAACAvwAAAAAAAIC/AAAAgAAAgD8AAAAAAAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAPwAAgL8AAAAAAAAAgAAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAgD8AAAAAAAAAgAAAAAAAAIC/AAAAgO74GTQAAAAAAACAPwAAgD8AAAAAAAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAA//9/vwAAAAAAAIA/AAAAgGb1ZrQAAAAAAACAvwAAAAD//38/AAAAgAAAAAAAAIA/AAAAgGb1ZjQAAAAAAACAPwAAgL8AAAAAAAAAgAAAAAAAAAAA//9/PwAAAAAAAIA/AAAAgGX15rQAAAAAAACAvwAAAAAAAIC/AAAAgAAAgD8AAAAAAAAAgAAAAAAAAIC/AAAAgGX15jQAAAAAAACAPwAAgD8AAAAAAAAAgGX15rQAAAAAAACAvwAAAAAAAIA/AAAAgAAAgD8AAAAAAAAAgAAAAAAAAIA/AAAAgGX15jQAAAAAAACAPwAAgD8AAAAAAAAAgN4ENb8AAAAACQU1P8kENT8AAAAAHgU1P9wENb8AAAAACwU1P8QENT8AAAAAIQU1Px8FNb8AAAAAyQQ1v94ENb8AAAAACQU1Px8FNb8AAAAAyQQ1v+oENb8AAAAA+wQ1PxoJYzYAAIC/AAAAgMkENT8AAAAAHgU1PwgFNT8AAAAA3gQ1v8QENT8AAAAAIQU1P/4ENT8AAAAA6gQ1vx8FNb8AAAAAyQQ1vwgFNT8AAAAA3gQ1vx8FNb8AAAAAyQQ1vxoJYzYAAIC/AAAAgPQENT8AAAAA8gQ1v9oENb8AAAAACwU1PwAAAAAAAIA/AAAAgMEENT8AAAAAJQU1P/MENb8AAAAA9QQ1P2FbF7UAAIA/AAAAgHJbF7UAAIA/AAAAgOsENT8AAAAA/QQ1vwAAAAAAAIA/AAAAgMEENT8AAAAAJQU1P/IENT8AAAAA8gQ1vwkFNb8AAAAA3QQ1P84ENb8AAAAAGQU1vxoJYzYAAIC/AAAAgM4ENb8AAAAAGQU1vxoJYzYAAIC/AAAAgOEENT8AAAAABQU1vwkFNb8AAAAA3QQ1P84ENb8AAAAAGQU1v2dbl7UAAIA/AAAAgM4ENb8AAAAAGQU1v2dbl7UAAIA/AAAAgOEENT8AAAAABQU1v/gENb8AAAAA7gQ1v/gENT8AAAAA7gQ1v/kENb8AAAAA7QQ1v/kENT8AAAAA7QQ1v+kENT8AAAAA/gQ1P/gENT8AAAAA7gQ1v2BblzUAAIC/AAAAgOkENT8AAAAA/gQ1P/AENT8AAAAA9QQ1v/gENb8AAAAA7gQ1v94ENb8AAAAACQU1P/kENb8AAAAA7QQ1v+kENb8AAAAA/gQ1P94ENb8AAAAACQU1P+kENT8AAAAA/gQ1P+UENb8AAAAAAAU1P2BblzUAAIC/AAAAgOkENT8AAAAA/gQ1P/kENb8AAAAA7QQ1vwAAAAAAAIA/AAAAgPkENT8AAAAA7QQ1v2ZblzQAAIA/AAAAgOwENT8AAAAA+gQ1v+oENb8AAAAA/QQ1P1pblzQAAIA/AAAAgPkENb8AAAAA7QQ1v/IENb8AAAAA8gQ1PwAAAAAAAIA/AAAAgGBblzUAAIC/AAAAgN4ENT8AAAAACAU1v/IENT8AAAAA8gQ1P+AENb8AAAAACAU1P2BblzUAAIC/AAAAgPIENT8AAAAA8gQ1P2BbFzUAAIA/AAAAgN4ENT8AAAAACAU1v/IENT8AAAAA8gQ1P+AENb8AAAAACAU1P2BbFzUAAIA/AAAAgPIENT8AAAAA8gQ1P94ENT8AAAAACQU1v/QENT8AAAAA9AQ1P+kENT8AAAAA/gQ1v/MENT8AAAAA8wQ1PwkFNb8AAAAA3gQ1P/QENT8AAAAA9AQ1PwkFNb8AAAAA3gQ1P21bFzUAAIC/AAAAgO0ENT8AAAAA+QQ1P/QENb8AAAAA9AQ1v94ENT8AAAAACQU1vwAFNb8AAAAA5gQ1v+kENT8AAAAA/gQ1vwkFNb8AAAAA3gQ1P/QENb8AAAAA9AQ1vwkFNb8AAAAA3gQ1P/YENb8AAAAA8QQ1v21bFzUAAIC/AAAAgAAAAAD//38/AAAAgPIENT8AAAAA8gQ1v/IENT8AAAAA8gQ1P2tblzUAAIA/AAAAgOsENT8AAAAA/QQ1P/gENb8AAAAA8AQ1v2tblzUAAIA/AAAAgAwFNb8AAAAA2gQ1vwAAAAD//38/AAAAgPIENT8AAAAA8gQ1vwAFNb8AAAAA5wQ1P21bFzUAAIC/AAAAgOEENT8AAAAABQU1PwAFNb8AAAAA5wQ1P+AENb8AAAAABgU1v21bFzUAAIC/AAAAgAAFNb8AAAAA5wQ1P21bFzYAAIA/AAAAgOEENT8AAAAABQU1PwAFNb8AAAAA5wQ1P+AENb8AAAAABgU1v21bFzYAAIA/AAAAgO4ENb8AAAAA+QQ1v+4ENb8AAAAA+QQ1P/YENb8AAAAA7wQ1v/YENb8AAAAA7wQ1P+4ENb8AAAAA+QQ1v+MENT8AAAAAAwU1v/AENb8AAAAA9wQ1vxQJ4zUAAIC/AAAAgOMENT8AAAAAAwU1v+4ENb8AAAAA+QQ1P+MENT8AAAAAAwU1P/YENb8AAAAA7wQ1P+4ENT8AAAAA+AQ1P+MENT8AAAAAAwU1v+MENT8AAAAAAwU1PxQJ4zUAAIC/AAAAgOMENT8AAAAAAwU1v+oENT8AAAAA+wQ1PwAFNb8AAAAA5wQ1vwAFNb8AAAAA5wQ1PwAAAAAAAIA/AAAAgPEENb8AAAAA9AQ1vwAAAAD//38/AAAAgAAAAAAAAIA/AAAAgO8ENT8AAAAA+AQ1PwAFNb8AAAAA5wQ1PwAAAAAAAIA/AAAAgPkENT8AAAAA7QQ1P+MENb8AAAAAAwU1vxQJ4zUAAIC/AAAAgAAFNT8AAAAA5wQ1vxQJ4zUAAIC/AAAAgOMENT8AAAAAAgU1PwAFNT8AAAAA5wQ1v+MENb8AAAAAAwU1vwAAAAAAAIA/AAAAgAAFNT8AAAAA5wQ1vwAAAAAAAIA/AAAAgOMENT8AAAAAAgU1PwAFNT8AAAAA5wQ1vwAAgL8AAAAAAAAAgAAAAAAAAAAAAACAPwAAgL8AAAAAAAAAgAAAAAAAAAAAAACAPwAAgL8AAAAAAAAAgAAAAAAAAAAAAACAvwAAgL8AAAAAAAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAvwAAAAAAAAAAAACAPwAAgD8AAAAAAAAAgAAAAAAAAAAAAACAPwAAgD8AAAAAAAAAgAAAAAAAAAAAAACAvwAAgD8AAAAAAAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAvwAAgD8AAAAAAAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgAAAgL8AAAAAAAAAgAAAAAAAAIA/AAAAgAAAAAAAAIA/AAAAgAAAgD8AAAAAAAAAgAAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgAAAgD8AAAAAAAAAgAAAgL8AAAAAAAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAvwAAAAAAAIC/AAAAgAAAAAAAAAAAAACAvwAAgD8AAAAAAAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAgD8AAAAAAAAAgAAAAAAAAAAAAACAvwAAgD8AAAAAAAAAgAAAAAAAAAAAAACAvwAAgD8AAAAAAAAAgAAAAAAAAAAAAACAPwAAgD8AAAAAAAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAPwAAgD8AAAAAFeAitAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAvwAAgL8AAAAAAAAAgAAAAAAAAAAAAACAvwAAgL8AAAAAAAAAgAAAAAAAAAAAAACAPwAAgL8AAAAAFeAiNAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAPwAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAgD8AAAAAAAAAgAAAAAD//38/AAAAgAAAgD8AAAAAH1B0tAAAgL8AAAAAH1B0NAAAAAAAAIA/AAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAPwAAgD8AAAAAH1D0tAAAgL8AAAAAH1D0NAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgAAAgD8AAAAAH1D0tAAAgL8AAAAAH1D0NAAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgAAAAAAAAAAAAACAPwAAgD8AAAAAAAAAgAAAAAAAAAAAAACAPwAAgD8AAAAAAAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAPwAAgL8AAAAAAAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAPwAAAAAAAAAAAACAvwAAgD8AAAAAAAAAgAAAAAAAAAAAAACAvwAAgD8AAAAAAAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAvwAAgL8AAAAAAAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAvwAAAAAAAAAA//9/PwAAAAAAAIA/AAAAgAAAgD8AAAAAAAAAgAAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgAAAAAAAAAAA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5AQ1P9kENb8AAAAADgU1vwQFNb8AAAAA5AQ1P+sENb8AAAAA/AQ1vxkJ47UAAIC/AAAAgAAAAAAAAIA/AAAAgAAFNT8AAAAA5wQ1vwAFNT8AAAAA5wQ1PwAAAAAAAIA/AAAAgPAENT8AAAAA+AQ1P/MENb8AAAAA8wQ1vwAAAAAAAIA/AAAAgAUFNb8AAAAA4AQ1vwAAAAAAAIA/AAAAgAAFNT8AAAAA5wQ1vwwFNb8AAAAA2gQ1PxkJ47UAAIC/AAAAgOAENT8AAAAABgU1PwwFNb8AAAAA2gQ1P+EENb8AAAAABgU1vxkJ47UAAIC/AAAAgAwFNb8AAAAA2gQ1PwAAAAAAAIA/AAAAgOAENT8AAAAABgU1PwwFNb8AAAAA2gQ1P+EENb8AAAAABgU1vwAAAAAAAIA/AAAAgPQENb8AAAAA9AQ1v/QENb8AAAAA9AQ1P/MENb8AAAAA8wQ1v/MENb8AAAAA8wQ1P/QENb8AAAAA9AQ1vwkFNT8AAAAA3gQ1v+4ENb8AAAAA+QQ1vzwyPbYAAIC/AAAAgAkFNT8AAAAA3gQ1v/QENb8AAAAA9AQ1PwkFNT8AAAAA3gQ1P/MENb8AAAAA8wQ1PwwFNT8AAAAA3AQ1PwkFNT8AAAAA3gQ1vwkFNT8AAAAA3gQ1PzwyPbYAAIC/AAAAgAkFNT8AAAAA3gQ1vwsFNT8AAAAA3AQ1P/IENb8AAAAA8gQ1v/IENb8AAAAA8gQ1PwAAAAAAAIA/AAAAgOsENb8AAAAA/AQ1vwAAAAAAAIA/AAAAgAAAAAAAAIA/AAAAgAwFNT8AAAAA3AQ1P/IENb8AAAAA8gQ1PwAAAAAAAIA/AAAAgAwFNT8AAAAA2gQ1P+IENb8AAAAAAwU1vzwyPbYAAIC/AAAAgAAFNT8AAAAA5wQ1vzwyPbYAAIC/AAAAgAAFNT8AAAAA5wQ1vwoFNT8AAAAA3AQ1P+IENb8AAAAAAwU1vwAAAAAAAIA/AAAAgAAFNT8AAAAA5wQ1vwAAAAAAAIA/AAAAgAAFNT8AAAAA5wQ1vwoFNT8AAAAA3AQ1PwAAgL8AAAAAAAAAgAAAAAAAAAAAAACAPwAAgL8AAAAAAAAAgAAAAAAAAAAAAACAPwAAgL8AAAAAAAAAgAAAAAAAAAAAAACAvwAAgL8AAAAAAAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAvwAAAAAAAAAAAACAPwAAgD8AAAAAAAAAgAAAAAAAAAAAAACAPwAAgD8AAAAAAAAAgAAAAAAAAAAAAACAvwAAgD8AAAAAAAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAvwAAgD8AAAAAAAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgAAAgL8AAAAAAAAAgAAAAAAAAIA/AAAAgAAAAAAAAIA/AAAAgAAAgD8AAAAAAAAAgAAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgAAAgD8AAAAAAAAAgAAAgL8AAAAAAAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAvwAAAAAAAIC/AAAAgAAAAAAAAAAAAACAvwAAgD8AAAAAAAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAgD8AAAAAAAAAgAAAAAAAAAAAAACAvwAAgD8AAAAAAAAAgAAAAAAAAAAAAACAvwAAgD8AAAAAAAAAgAAAAAAAAAAAAACAPwAAgD8AAAAAAAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAPwAAgD8AAAAAFeAitAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAvwAAgL8AAAAAAAAAgAAAAAAAAAAAAACAvwAAgL8AAAAAAAAAgAAAAAAAAAAAAACAPwAAgL8AAAAAFeAiNAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAPwAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAgD8AAAAAAAAAgAAAAAD//38/AAAAgAAAgD8AAAAAH1B0tAAAgL8AAAAAH1B0NAAAAAAAAIA/AAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAPwAAgD8AAAAAH1D0tAAAgL8AAAAAH1D0NAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgAAAgD8AAAAAH1D0tAAAgL8AAAAAH1D0NAAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgAAAAAAAAAAAAACAPwAAgD8AAAAAAAAAgAAAAAAAAAAAAACAPwAAgD8AAAAAAAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAPwAAgL8AAAAAAAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAPwAAAAAAAAAAAACAvwAAgD8AAAAAAAAAgAAAAAAAAAAAAACAvwAAgD8AAAAAAAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAvwAAgL8AAAAAAAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAvwAAAAAAAAAA//9/PwAAAAAAAIA/AAAAgAAAgD8AAAAAAAAAgAAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgAAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAAAAAAAAA//9/vwAAAAAAAIA/AAAAgAAAgD8AAAAAAAAAgAAAgL8AAAAAAAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAPwAAgL8AAAAAAAAAgAAAAAAAAIC/AAAAgAAAAAAAAAAAAACAvwAAgL8AAAAAAAAAgAAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAvwAAgL8AAAAAAAAAgAAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAgD8AAAAAAAAAgO34GbQAAAAAAACAvwAAAAAAAIC/AAAAgAAAgD8AAAAAAAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAPwAAgL8AAAAAAAAAgAAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAgD8AAAAAAAAAgAAAAAAAAIC/AAAAgO34GTQAAAAAAACAPwAAgD8AAAAAAAAAgAAAgL8AAAAAAAAAgAAAAAAAAAAAAACAvwAAAAAAAIA/AAAAgGP1ZrQAAAAAAACAvwAAAAD//38/AAAAgAAAAAAAAIA/AAAAgGP1ZjQAAAAAAACAPwAAgL8AAAAAAAAAgAAAAAAAAAAAAACAPwAAAAAAAIA/AAAAgGP15rQAAAAAAACAvwAAAAAAAIC/AAAAgAAAgD8AAAAAAAAAgAAAAAAAAIC/AAAAgGP15jQAAAAAAACAPwAAgD8AAAAAAAAAgGP15rQAAAAAAACAvwAAAAAAAIA/AAAAgAAAgD8AAAAAAAAAgAAAAAAAAIA/AAAAgGP15jQAAAAAAACAPwAAgD8AAAAAAAAAgOkENb8AAAAA/gQ1P8MENT8AAAAAIwU1P+YENb8AAAAAAgU1P8IENT8AAAAAJgU1PxkFNb8AAAAAzwQ1v+kENb8AAAAA/gQ1PxkFNb8AAAAAzwQ1v/AENb8AAAAA9QQ1PwoJYzYAAIC/AAAAgMMENT8AAAAAIwU1PxQFNT8AAAAA1AQ1v8IENT8AAAAAJgU1PwkFNT8AAAAA3AQ1vxkFNb8AAAAAzwQ1vxQFNT8AAAAA1AQ1vxkFNb8AAAAAzwQ1vwoJYzYAAIC/AAAAgPwENT8AAAAA6wQ1v+AENb8AAAAABQU1PwAAAAAAAIA/AAAAgMEENT8AAAAAJQU1P/UENb8AAAAA8wQ1P1RbF7UAAIA/AAAAgGlbF7UAAIA/AAAAgPAENT8AAAAA+AQ1vwAAAAAAAIA/AAAAgMEENT8AAAAAJQU1PwAFNT8AAAAA5wQ1vwcFNb8AAAAA3wQ1P8EENb8AAAAAJQU1vwoJYzYAAIC/AAAAgMEENb8AAAAAJQU1vwoJYzYAAIC/AAAAgOAENT8AAAAABgU1vwcFNb8AAAAA3wQ1P8EENb8AAAAAJQU1v1xbl7UAAIA/AAAAgMEENb8AAAAAJQU1v1xbl7UAAIA/AAAAgOAENT8AAAAABgU1vwkFNb8AAAAA3gQ1v/QENT8AAAAA9AQ1v/4ENb8AAAAA6QQ1vwAFNT8AAAAA5gQ1v/QENT8AAAAA9AQ1v/QENT8AAAAA9AQ1P2pblzUAAIC/AAAAgPQENT8AAAAA8gQ1v/QENT8AAAAA9AQ1PwkFNb8AAAAA3gQ1v94ENb8AAAAACQU1P/4ENb8AAAAA6QQ1v+kENb8AAAAA/gQ1P94ENb8AAAAACQU1P/QENT8AAAAA9AQ1P+YENb8AAAAAAAU1P2pblzUAAIC/AAAAgPQENT8AAAAA9AQ1P/IENb8AAAAA8gQ1vwAAAAAAAIA/AAAAgAwFNT8AAAAA2gQ1v2BblzQAAIA/AAAAgPUENT8AAAAA8wQ1v+sENb8AAAAA/QQ1P25blzT//38/AAAAgPIENb8AAAAA8gQ1v/IENb8AAAAA8gQ1PwAAAAAAAIA/AAAAgGpblzUAAIC/AAAAgN4ENT8AAAAACQU1v+YENT8AAAAA/wQ1P+EENb8AAAAABQU1P2pblzUAAIC/AAAAgOYENT8AAAAA/wQ1P2pbFzUAAIA/AAAAgN4ENT8AAAAACQU1v+YENT8AAAAA/wQ1P+EENb8AAAAABQU1P2pbFzUAAIA/AAAAgOYENT8AAAAA/wQ1P+kENT8AAAAA/gQ1v/4ENT8AAAAA6AQ1P/MENT8AAAAA8gQ1v/4ENT8AAAAA5wQ1PwQFNb8AAAAA5AQ1P/4ENT8AAAAA6AQ1PwQFNb8AAAAA5AQ1P3RbFzUAAIC/AAAAgPQENT8AAAAA8gQ1P+4ENb8AAAAA+QQ1v+kENT8AAAAA/gQ1v/kENb8AAAAA7QQ1v/MENT8AAAAA8gQ1vwQFNb8AAAAA5AQ1P+4ENb8AAAAA+QQ1vwQFNb8AAAAA5AQ1P/IENb8AAAAA9QQ1v3RbFzUAAIC/AAAAgAAAAAAAAIA/AAAAgAAFNT8AAAAA5wQ1vwAFNT8AAAAA5wQ1P3ZblzUAAIA/AAAAgPAENT8AAAAA+AQ1P/MENb8AAAAA8wQ1v3JblzUAAIA/AAAAgAUFNb8AAAAA4AQ1vwAAAAAAAIA/AAAAgAAFNT8AAAAA5wQ1vwwFNb8AAAAA2gQ1P3RbFzUAAIC/AAAAgOAENT8AAAAABgU1PwwFNb8AAAAA2gQ1P+EENb8AAAAABgU1v3RbFzUAAIC/AAAAgAwFNb8AAAAA2gQ1P3RbFzYAAIA/AAAAgOAENT8AAAAABgU1PwwFNb8AAAAA2gQ1P+EENb8AAAAABgU1v3RbFzYAAIA/AAAAgN4ENb8AAAAACQU1v94ENb8AAAAACQU1P+kENb8AAAAA/gQ1v+kENb8AAAAA/gQ1P94ENb8AAAAACQU1v/QENT8AAAAA9AQ1v+YENb8AAAAAAAU1vyUJ4zUAAIC/AAAAgPQENT8AAAAA9AQ1v94ENb8AAAAACQU1P/QENT8AAAAA9AQ1P+kENb8AAAAA/gQ1PwAFNT8AAAAA5gQ1P/QENT8AAAAA9AQ1v/QENT8AAAAA9AQ1PyUJ4zUAAIC/AAAAgPQENT8AAAAA9AQ1v/YENT8AAAAA8QQ1P/IENb8AAAAA8gQ1v/IENb8AAAAA8gQ1PwAAAAAAAIA/AAAAgOsENb8AAAAA/AQ1vwAAAAAAAIA/AAAAgAAAAAAAAIA/AAAAgPgENT8AAAAA8AQ1P/IENb8AAAAA8gQ1PwAAAAAAAIA/AAAAgAwFNT8AAAAA2gQ1P+IENb8AAAAA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NAAtADMAOQAwADMAMAAsADUAOwA4ADUAOAAyAD0APwAxAD0AMQA6ADwANgBCADwAQgBAAD4APABAAD4AQABHAEEAQwCaAEEAmgBGAEkAQQBGAEkARgBOAFQAUQBIAFQASABKAEsASQBOAEsATgCQAFEAVgBPAFEATwBIAFAAUwBbAFAAWwBYAFcAUgBaAFcAWgBfAGAAXgBZAGAAWQBcAGQAVwBfAGQAXwBiAF4AYABmAF4AZgBjAG4AZABiAG4AYgBoAGsAaQBjAGsAYwBmAHMAcABqAHMAagBtAG8AcQB3AG8AdwB1AGUAbwB1AGUAdQB5AHQAdgCFAHQAhQB4AHoAdAB4AHoAeAB8ACAAegB8ACAAfACAABwAfwB9ABwAfQB7AH8APgBHAH8ARwB9AD8AfgAqAD8AKgAxAH4AGwAlAH4AJQAqAAkBEwHYAAkB2ADVACAAgAAgASAAIAEYAYcAiQCGAIcAhgCEAHEAhwCEAHEAhAB3AIoAiABnAIoAZwBhAIgAcgBsAIgAbABnAFUAigBhAFUAYQBdAIkAVABKAIkASgCGAI0AlwCTAI0AkwCDAIEAjgBNAIEATQCMAPIA+ADNAPIAzQDLABwBJAHeABwB3gDbAJgAkQCWAJgAlgBFAEwARACVAEwAlQCLAC4AHgCbAC4AmwCUADYALgCUADYAlABCAFYAZQB5AFYAeQBPAHcAhADjAHcA4wDrAEIAlAAHAUIABwEMAUsAkAD+AEsA/gD3AIYASgD0AIYA9ADxAJsAIQAbAZsAGwEVASQB5ADEACQBxADeALgAtgC0ALgAtAC8AIUA5gAhAYUAIQGAAPsAAwHQAPsA0ADOAJoAQwAPAZoADwELAYUAdgDoAIUA6ADmAJQAmwAVAZQAFQEHAYQAhgDxAIQA8QDjABYBHwHdABYB3QDaAJIAmQCPAJIAjwCCABABBAHTABAB0wDXAJoACwH/AJoA/wCQAHgAhQCAAHgAgAB8AOQA7ADHAOQAxwDEAMAA0QDGAMAAxgDBAMoAwADBAMoAwQDCAMgAwgDBAMgAwQDFAMoAzADPAMoAzwDAANkAxgDRANkA0QDSANYA0gDRANYA0QDUANkA3ADfANkA3wDGAMYA3wDFAMYAxQDBANQA0QDAANQAwADPAAIBCQHVAAIB1QDQAAQBFgHaAAQB2gDTAOAA8gDLAOAAywDDAPkA8wCtAPkArQClAAgBAAE+AQgBPgEmAfYA/AA6AfYAOgGqAOUAJQFHAeUARwG3AAYBFAEuAQYBLgEsAecA6QC9AOcAvQC1AB0BFwExAR0BMQE3AfAA9QCpAPAAqQCuACMB5wC1ACMBtQBFAeoA4gCwAOoAsAC+ACUBHgE4ASUBOAFHAQoBDQGhAAoBoQAoAe8A4ADDAO8AwwDJALEArwCsALEArACyALIAuwC/ALIAvwCxAK8AqACkAK8ApACsAJ8AJwEpAZ8AKQGjAC0BLwEwAS0BMAEqASoBnACgACoBoAAtAS8BNQE5AS8BOQEwAasAPAFBAasAQQGnADIBQgFGATIBRgE2AUMBtAC2AEMBtgBGAScBQAE9AScBPQEpAeIA8ACuAOIArgCwABcBBQErARcBKwExAf0ACgEoAf0AKAE7AQEB+gCmAAEBpgA/AQUBEgGeAAUBngArAREBCAEmAREBJgGdABoBIgFEARoBRAE0AfMA4QCzAPMAswCtAA4BBgEsAQ4BLAGiAOEA7gC6AOEAugCzABQBGQEzARQBMwEuAe0A5QC3AO0AtwC5AFgBewGVAVgBlQGLAUwBcgF5AUwBeQFWAYUBiAFQAYUBUAFIAU0BVwGKAU0BigGEAW0BawFpAW0BaQFvAYEBVAFLAYEBSwFwAZEBjQFVAZEBVQGDAXMBTgFZAXMBWQF1AXcBWwGPAXcBjwGXAYwBhwFKAYwBSgFTAVoBTwGGAVoBhgGOAYkBkwF/AYkBfwFSAVEBfQFxAVEBcQFJAZQBeAFcAZQBXAFoAYEBcAFxAYEBcQF9AZABgAFiAZABYgFsAXMBdQF5AXMBeQFyAXoBdgFgAXoBYAFdAZMBiQGLAZMBiwGVAYcBjAGOAYcBjgGGAYgBhQGEAYgBhAGKAY0BkQGXAY0BlwGPAW0BZAFnAW0BZwFrAWEBbwFpAWEBaQFeAYIBfgFmAYIBZgFjAXwBkgFqAXwBagFlAZIBlAFoAZIBaAFqAZYBkAFsAZYBbAFuAXQBlgFuAXQBbgFfAagBywHlAagB5QHbAZwBwgHJAZwByQGmAdUB2AGhAdUBoQGZAZ0BpwHaAZ0B2gHUAb0BuwG5Ab0BuQG/AdEBpAGbAdEBmwHAAeEB3QGlAeEBpQHTAcMBnwGqAcMBqgHFAccBqwHfAccB3wHnAdwB1wGaAdwBmgGjAakBngHWAakB1gHeAdkB4wHPAdkBzwGiAaABzQHBAaABwQGYAeQByAGsAeQBrAG4AdEBwAHBAdEBwQHNAeAB0AGyAeABsgG8AcMBxQHJAcMByQHCAcoBxgGwAcoBsAGtAeMB2QHbAeMB2wHlAdcB3AHeAdcB3gHWAdgB1QHUAdgB1AHaAd0B4QHnAd0B5wHfAb0BtAG3Ab0BtwG7AbEBvwG5AbEBuQGuAdIBzgG2AdIBtgGzAcwB4gG6AcwBugG1AeIB5AG4AeIBuAG6AeYB4AG8AeYBvAG+AcQB5gG+AcQBvgGvAfgBGwI1AvgBNQIrAuwBEgIZAuwBGQL2ASUCKALwASUC8AHoAe0B9wEqAu0BKgIkAg0CCwIJAg0CCQIPAiEC9AHrASEC6wEQAjECLQL1ATEC9QEjAhMC7gH5ARMC+QEVAhcC+wEvAhcCLwI3AiwCJwLqASwC6gHzAfoB7wEmAvoBJgIuAikCMwIfAikCHwLyAfEBHQIRAvEBEQLpATQCGAL8ATQC/AEIAiECEAIRAiECEQIdAjACIAICAjACAgIMAhMCFQIZAhMCGQISAhoCFgIAAhoCAAL9ATMCKQIrAjMCKwI1AicCLAIuAicCLgImAigCJQIkAigCJAIqAi0CMQI3Ai0CNwIvAg0CBAIHAg0CBwILAgECDwIJAgECCQL+ASICHgIGAiICBgIDAhwCMgIKAhwCCgIFAjICNAIIAjICCAIKAjYCMAIMAjYCDAIOAhQCNgIOAhQCDgL/AUgCawKFAkgChQJ7Aj0CYgJpAj0CaQJHAnUCeAJAAnUCQAI4AjwCRgJ6AjwCegJ0Al0CWwJZAl0CWQJfAnECQwI6AnECOgJgAoECfQJFAoECRQJzAmMCPgJJAmMCSQJlAmcCSwJ/AmcCfwKHAnwCdwI7AnwCOwJEAkoCPwJ2AkoCdgJ+AnkCgwJvAnkCbwJCAkECbQJhAkECYQI5AoQCaAJMAoQCTAJYAnECYAJhAnECYQJtAoACcAJSAoACUgJcAmMCZQJpAmMCaQJiAmoCZgJQAmoCUAJNAoMCeQJ7AoMCewKFAncCfAJ+AncCfgJ2AngCdQJ0AngCdAJ6An0CgQKHAn0ChwJ/Al0CVAJXAl0CVwJbAlECXwJZAlECWQJOAnICbgJWAnICVgJTAmwCggJaAmwCWgJVAoIChAJYAoICWAJaAoYCgAJcAoYCXAJeAmQChgJeAmQCXgJPAokClAKQAokCkAKOApcCiwKMApcCjAKZAogCigKWAogClgKTApECmgKNApECjQKPApsCkgKVApsClQKYAr4CwAKkAr4CpAKiAsMCvAKgAsMCoAKwArQCngKsArQCrAK2ArsCswKhArsCoQK1AtcCywIKA9cCCgMQA9oC3gIYA9oCGAMcA6cCuwK1AqcCtQKjApwCtAK2ApwCtgKoAswCzwIIA8wCCAMMA/4CAQM9A/4CPQNBA68CnwK9Aq8CvQLFAp0CqwLCAp0CwgK/AscCwQLOAscCzgLJAsECqgLTAsEC0wLOAqkCtwLVAqkC1QLRArgCyALKArgCygLWAsQCxwLbAsQC2wLZAsgCuALhAsgC4QLcArcCrQLkArcC5ALgAq4CxALZAq4C2QLmArICugLtArIC7QLpArkCxgLxArkC8QLsAscCxAL1AscC9QLyAsQCsQLoAsQC6AL1AroCpgL8AroC/AL4AqUCwQIAA6UCAAP7AsECxwIEA8ECBAMAA8YCuQL3AsYC9wIDA2UDaQOdA2UDnQOgA1IDRgOJA1IDiQOLA1UDWQORA1UDkQOUA0UDSQOFA0UDhQOIA+oC7gIoA+oCKAMsA+UC2AIZA+UCGQMfA/kC/QI4A/kCOAM8A80C0gITA80CEwMFA/QC5wIpA/QCKQMvA90C4gIkA90CJAMWAwID9gI5AwIDOQM/A9AC1AINA9ACDQMRA+sC8AIzA+sCMwMlA98C4wIdA98CHQMhA/oC/wJDA/oCQwM1A+8C8wItA+8CLQMxAwsDBwNMAwsDTANIAwYDFANPAwYDTwNLAxIDDgNRAxIDUQNNAw8DCQNHAw8DRwNTAxsDFwNcAxsDXANYAxUDIwNfAxUDXwNbAyIDHgNhAyIDYQNdAyADGgNXAyADVwNjAysDJwNsAysDbANoAyYDNANvAyYDbwNrAzIDLgNxAzIDcQNtAzADKgNnAzADZwNzAzsDNwN8AzsDfAN4AzYDRAN/AzYDfwN7A0IDPgOBA0IDgQN9A0ADOgN3A0ADdwODA8cDygP3A8cD9wP6A9AD1AMHBNADBwT9A7sDvgPrA7sD6wPuA+MD2QMMBOMDDAQQBGIDVgOVA2IDlQOXA3UDeQOpA3UDqQOsA0oDTgOOA0oDjgOGA3IDZgOhA3IDoQOjA1oDXgOaA1oDmgOSA4IDdgOtA4IDrQOvA1ADVAONA1ADjQOQA2oDbgOmA2oDpgOeA2ADZAOZA2ADmQOcA3oDfgOyA3oDsgOqA3ADdAOlA3ADpQOoA4ADhAOxA4ADsQO0A4oDhwO5A4oDuQO2A4cDjwO9A4cDvQO5A48DjAPAA48DwAO9A4wDigO2A4wDtgPAA5YDkwPFA5YDxQPCA5MDmwPJA5MDyQPFA5sDmAPMA5sDzAPJA5gDlgPCA5gDwgPMA6IDnwPRA6ID0QPOA58DpwPVA58D1QPRA6cDpAPYA6cD2APVA6QDogPOA6QDzgPYA64DqwPdA64D3QPaA6sDswPhA6sD4QPdA7MDsAPkA7MD5APhA7ADrgPaA7AD2gPkA+kD5gPwA+kD8APtA/UD8gP8A/UD/AP5AwEE/gMIBAEECAQFBA0ECgQUBA0EFAQRBNwD4AMTBNwDEwQJBNMD1gMDBNMDAwQGBN8D4gMPBN8DDwQSBLcDugPnA7cD5wPqA8MDxgPzA8MD8wP2A78DtQPoA78D6APsA88D0gP/A88D/wMCBMsDwQP0A8sD9AP4A9sD3gMLBNsDCwQOBLgDvAPvA7gD7wPlA9cDzQMABNcDAAQEBMQDyAP7A8QD+wPxAxUEFwQbBBUEGwQZBBoEHQQlBBoEJQQiBCMEJgQhBCMEIQQfBB4EIAQYBB4EGAQWBCwEKwQpBCwEKQQvBBsEFwQnBBsEJwQqBBgEIAQuBBgELgQoBCsELAQ7BCsEOwQ5BCEEJgQtBCEELQQwBDUEMwQ4BDUEOAQ6BCQEHAQyBCQEMgQ0BC0EJgQ2BC0ENgQ8BBsEKgQ3BBsENwQxBD4EQARFBD4ERQRCBEEERAROBEEETgRLBEoETARIBEoESARGBEcESQQ/BEcEPwQ9BFUEUgRQBFUEUARYBEUEQARRBEUEUQRTBD8ESQRXBD8EVwRPBFIEVQRkBFIEZARgBEgETARUBEgEVARWBF4EWgRfBF4EXwRjBE0EQwRZBE0EWQRdBFQETARcBFQEXARiBEUEUwRhBEUEYQRbBGUEZwRtBGUEbQRqBGkEawR0BGkEdARyBHMEdgRwBHMEcARuBG8EcQRoBG8EaARmBH0EewR4BH0EeAR/BG0EZwR3BG0EdwR6BGgEcQSABGgEgAR5BHsEfQSMBHsEjASJBHAEdgR8BHAEfAR+BIQEgQSHBIQEhwSKBHUEbASCBHUEggSFBHwEdgSGBHwEhgSLBG0EegSIBG0EiASDBI4EkASTBI4EkwSRBJIElQSeBJIEngSbBJoEnQSZBJoEmQSXBJYEmASPBJYEjwSNBKQEowShBKQEoQSnBJMEkASgBJMEoASiBI8EmASmBI8EpgSfBKMEpASyBKMEsgSwBJkEnQSlBJkEpQSoBK4EqwSxBK4EsQS0BJwElASqBJwEqgSsBKUEnQStBKUErQSzBJMEogSvBJMErwSpBLUEtwS8BLUEvAS6BLkEuwTEBLkExATCBMMExgTABMMEwAS+BL8EwQS4BL8EuAS2BMwEywTIBMwEyATOBLwEtwTHBLwExwTKBLgEwQTQBLgE0ATJBMsEzATbBMsE2wTZBMAExgTNBMAEzQTPBNQE0QTXBNQE1wTaBMUEvQTTBMUE0wTVBM0ExgTWBM0E1gTcBLwEygTYBLwE2ATSBN4E4ATlBN4E5QTiBOEE5ATuBOEE7gTrBOoE7ATpBOoE6QTnBOYE6ATfBOYE3wTdBPUE8gTwBPUE8AT4BOUE4ATxBOUE8QTzBN8E6AT2BN8E9gTvBPIE9QQDBfIEAwX/BOkE7AT0BOkE9AT3BP4E+gQABf4EAAUEBe0E4wT5BO0E+QT9BPQE7AT8BPQE/AQCBeUE8wQBBeUEAQX7BAYFCAUNBQYFDQUKBQkFCwUUBQkFFAUSBRMFFQUQBRMFEAUOBQ8FEQUHBQ8FBwUFBR0FGgUXBR0FFwUfBQ0FCAUZBQ0FGQUbBQcFEQUgBQcFIAUYBRoFHQUsBRoFLAUoBRAFFQUcBRAFHAUeBSUFIQUnBSUFJwUrBRYFDAUiBRYFIgUmBRwFFQUkBRwFJAUqBQ0FGwUpBQ0FKQUjBS0FLwUzBS0FMwUxBTIFNQU+BTIFPgU6BTsFPQU5BTsFOQU3BTYFOAUwBTYFMAUuBUQFQwVBBUQFQQVHBTMFLwU/BTMFPwVCBTAFOAVGBTAFRgVABUMFRAVSBUMFUgVQBTkFPQVFBTkFRQVIBU4FSwVRBU4FUQVUBTwFNAVKBTwFSgVMBUUFPQVNBUUFTQVTBTMFQgVPBTMFTwVJBVUFVwVbBVUFWwVZBVoFXQVlBVoFZQViBWMFZgVhBWMFYQVfBV4FYAVYBV4FWAVWBWwFawVpBWwFaQVvBVsFVwVnBVsFZwVqBVgFYAVuBVgFbgVoBWsFbAV7BWsFewV5BWEFZgVtBWEFbQVwBXUFcwV4BXUFeAV6BWQFXAVyBWQFcgV0BW0FZgV2BW0FdgV8BVsFagV3BVsFdwVxBX4FgAWFBX4FhQWCBYEFhAWOBYEFjgWLBYoFjAWIBYoFiAWGBYcFiQV/BYcFfwV9BZUFkgWQBZUFkAWYBYUFgAWRBYUFkQWTBX8FiQWXBX8FlwWPBZIFlQWkBZIFpAWgBYgFjAWUBYgFlAWWBZ4FmgWfBZ4FnwWjBY0FgwWZBY0FmQWdBZQFjAWcBZQFnAWiBYUFkwWhBYUFoQWbBaUFpwWtBaUFrQWqBakFqwW0BakFtAWyBbMFtgWwBbMFsAWuBa8FsQWoBa8FqAWmBb0FuwW4Bb0FuAW/Ba0FpwW3Ba0FtwW6BagFsQXABagFwAW5BbsFvQXMBbsFzAXJBbAFtgW8BbAFvAW+BcQFwQXHBcQFxwXKBbUFrAXCBbUFwgXFBbwFtgXGBbwFxgXLBa0FugXIBa0FyAXDBc4F0AXTBc4F0wXRBdIF1QXeBdIF3gXbBdoF3QXZBdoF2QXXBdYF2AXPBdYFzwXNBeQF4wXhBeQF4QXoBdMF0AXgBdMF4AXiBc8F2AXmBc8F5gXfBeMF5AXyBeMF8gXwBdkF3QXlBdkF5QXnBe4F6wXxBe4F8QX0BdwF1AXqBdwF6gXsBeUF3QXtBeUF7QXzBdMF4gXvBdMF7wXpBfUF9wX8BfUF/AX6BfkF+wUEBvkFBAYCBgMGBgYBBgMGAQb/Bf4FAAb4Bf4F+AX2BQwGCwYIBgwGCAYOBvwF9wUHBvwFBwYKBvgFAAYPBvgFDwYJBgsGDAYbBgsGGwYZBgEGBgYNBgEGDQYQBhQGEgYYBhQGGAYaBgUG/QUTBgUGEwYVBg0GBgYWBg0GFgYcBvwFCgYXBvwFFwYRBh4GIAYlBh4GJQYiBiEGJAYuBiEGLgYrBioGLAYpBioGKQYnBiYGKAYfBiYGHwYdBjUGMgYwBjUGMAY4BiUGIAYxBiUGMQYzBh8GKAY2Bh8GNgYvBjIGNQZDBjIGQwY/BikGLAY0BikGNAY3Bj4GOwZBBj4GQQZEBi0GIwY5Bi0GOQY9BjQGLAY8BjQGPAZCBiUGMwZABiUGQAY6BkYGSAZNBkYGTQZKBkkGSwZUBkkGVAZSBlMGVQZQBlMGUAZOBk8GUQZHBk8GRwZFBl0GWgZXBl0GVwZfBk0GSAZZBk0GWQZbBkcGUQZgBkcGYAZYBloGXQZsBloGbAZoBlAGVQZcBlAGXAZeBmQGYQZnBmQGZwZqBlYGTAZiBlYGYgZmBlwGVQZlBlwGZQZrBk0GWwZpBk0GaQZjBm0GbwZzBm0GcwZxBnIGdQZ9BnIGfQZ6BnsGfgZ5BnsGeQZ3BnYGeAZwBnYGcAZuBoQGgwaBBoQGgQaHBnMGbwZ/BnMGfwaCBnAGeAaGBnAGhgaABoMGhAaSBoMGkgaQBnkGfgaFBnkGhQaIBo4GiwaRBo4GkQaUBnwGdAaKBnwGigaMBoUGfgaNBoUGjQaTBnMGggaPBnMGjwaJBpUGlwabBpUGmwaZBpoGnQalBpoGpQaiBqMGpgahBqMGoQafBp4GoAaYBp4GmAaWBqwGqwapBqwGqQavBpsGlwanBpsGpwaqBpgGoAauBpgGrgaoBqsGrAa7BqsGuwa5BqEGpgatBqEGrQawBrUGswa4BrUGuAa6BqQGnAayBqQGsga0Bq0Gpga2Bq0Gtga8BpsGqga3BpsGtwaxBr4GwAbFBr4GxQbCBsEGxAbOBsEGzgbLBsoGzAbIBsoGyAbGBscGyQa/BscGvwa9BtUG0gbQBtUG0AbYBsUGwAbRBsUG0QbTBr8GyQbXBr8G1wbPBtIG1QbkBtIG5AbgBsgGzAbUBsgG1AbWBt4G2gbfBt4G3wbjBs0GwwbZBs0G2QbdBtQGzAbcBtQG3AbiBsUG0wbhBsUG4QbbBuUG5wbtBuUG7QbqBukG6wb0BukG9AbyBvMG9gbwBvMG8AbuBu8G8QboBu8G6AbmBv0G+wb4Bv0G+Ab/Bu0G5wb3Bu0G9wb6BugG8QYAB+gGAAf5BvsG/QYMB/sGDAcJB/AG9gb8BvAG/Ab+BgQHAQcHBwQHBwcKB/UG7AYCB/UGAgcFB/wG9gYGB/wGBgcLB+0G+gYIB+0GCAcDBw4HEAcTBw4HEwcRBxIHFQceBxIHHgcbBxoHHQcZBxoHGQcXBxYHGAcPBxYHDwcNByQHIwchByQHIQcnBxMHEAcgBxMHIAciBw8HGAcmBw8HJgcfByMHJAcyByMHMgcwBxkHHQclBxkHJQcoBy4HKwcxBy4HMQc0BxwHFAcqBxwHKgcsByUHHQctByUHLQczBxMHIgcvBxMHLwcpBzUHNwc8BzUHPAc5BzoHOwdEBzoHRAdCB0MHRgdBB0MHQQc/Bz4HQAc4Bz4HOAc2B0wHSwdIB0wHSAdOBzwHNwdHBzwHRwdKBzgHQAdPBzgHTwdJB0sHTAdbB0sHWwdZB0EHRgdNB0EHTQdQB1QHUQdXB1QHVwdaB0UHPQdTB0UHUwdVB00HRgdWB00HVgdcBzwHSgdYBzwHWAdSB14HYAdlB14HZQdiB2EHZAduB2EHbgdrB2oHbAdpB2oHaQdnB2YHaAdfB2YHXwddB3UHcgdwB3UHcAd4B2UHYAdxB2UHcQdzB18HaAd2B18HdgdvB3IHdQeDB3IHgwd/B2kHbAd0B2kHdAd3B34HeweBB34HgQeEB20HYwd5B20HeQd9B3QHbAd8B3QHfAeCB2UHcweAB2UHgAd6B4YHiAeNB4YHjQeKB4kHiweUB4kHlAeSB5MHlQeQB5MHkAeOB48HkQeHB48HhweFB50HmgeXB50HlwefB40HiAeZB40HmQebB4cHkQegB4cHoAeYB5oHnQesB5oHrAeoB5AHlQecB5AHnAeeB6QHoQenB6QHpweqB5YHjAeiB5YHogemB5wHlQelB5wHpQerB40HmwepB40HqQejB60HrwezB60HswexB7IHtQe9B7IHvQe6B7sHvge5B7sHuQe3B7YHuAewB7YHsAeuB8QHwwfBB8QHwQfHB7MHrwe/B7MHvwfCB7AHuAfGB7AHxgfAB8MHxAfSB8MH0gfQB7kHvgfFB7kHxQfIB80HywfRB80H0QfTB7wHtAfKB7wHygfMB8UHvgfOB8UHzgfUB7MHwgfPB7MHzwfJB9UH1wfbB9UH2wfZB9oH3QflB9oH5QfiB+MH5gfhB+MH4QffB94H4AfYB94H2AfWB+wH6wfpB+wH6QfvB9sH1wfnB9sH5wfqB9gH4AfuB9gH7gfoB+sH7Af7B+sH+wf5B+EH5gftB+EH7QfwB/UH8wf4B/UH+Af6B+QH3AfyB+QH8gf0B+0H5gf2B+0H9gf8B9sH6gf3B9sH9wfxB/4HAAgFCP4HBQgCCAEIBAgOCAEIDggLCAoIDAgICAoICAgGCAcICQj/BwcI/wf9BxUIEggQCBUIEAgYCAUIAAgRCAUIEQgTCP8HCQgXCP8HFwgPCBIIFQgkCBIIJAggCAgIDAgUCAgIFAgWCB4IGggfCB4IHwgjCA0IAwgZCA0IGQgdCBQIDAgcCBQIHAgiCAUIEwghCAUIIQgbCCUIJwgtCCUILQgqCCkIKwg0CCkINAgyCDMINggwCDMIMAguCC8IMQgoCC8IKAgmCD0IOwg4CD0IOAg/CC0IJwg3CC0INwg6CCgIMQhACCgIQAg5CDsIPQhMCDsITAhJCDAINgg8CDAIPAg+CEQIQQhHCEQIRwhKCDUILAhCCDUIQghFCDwINghGCDwIRghLCC0IOghICC0ISAhDCE4IUAhTCE4IUwhRCFIIVQheCFIIXghbCFoIXQhZCFoIWQhXCFYIWAhPCFYITwhNCGQIYwhhCGQIYQhoCFMIUAhgCFMIYAhiCE8IWAhmCE8IZghfCGMIZAhyCGMIcghwCFkIXQhlCFkIZQhnCG4IawhxCG4IcQh0CFwIVAhqCFwIaghsCGUIXQhtCGUIbQhzCFMIYghvCFMIbwhpCHUIdwh8CHUIfAh6CHkIewiECHkIhAiCCIMIhgiBCIMIgQh/CH4IgAh4CH4IeAh2CIwIiwiICIwIiAiOCHwIdwiHCHwIhwiKCHgIgAiPCHgIjwiJCIsIjAibCIsImwiZCIEIhgiNCIEIjQiQCJQIkgiYCJQImAiaCIUIfQiTCIUIkwiVCI0IhgiWCI0IlgicCHwIigiXCHwIlwiRCJ4IoAikCJ4IpAihCKIIpQiuCKIIrgirCKoIrAipCKoIqQinCKYIqAifCKYInwidCLUIsgiwCLUIsAi4CKQIoAixCKQIsQizCJ8IqAi2CJ8ItgivCLIItQjDCLIIwwi/CKkIrAi0CKkItAi3CL4IuwjBCL4IwQjECK0Iowi5CK0IuQi9CLQIrAi8CLQIvAjCCKQIswjACKQIwAi6CMYIyAjNCMYIzQjKCMkIywjUCMkI1AjSCNMI1QjQCNMI0AjOCM8I0QjHCM8IxwjFCN0I2gjXCN0I1wjfCM0IyAjZCM0I2QjbCMcI0QjgCMcI4AjYCNoI3QjsCNoI7AjoCNAI1QjcCNAI3AjeCOQI4QjnCOQI5wjqCNYIzAjiCNYI4gjmCNwI1QjlCNwI5QjrCM0I2wjpCM0I6QjjCO0I7wjzCO0I8wjxCPII9Qj9CPII/Qj6CPsI/gj5CPsI+Qj3CPYI+AjwCPYI8AjuCAQJAwkBCQQJAQkHCfMI7wj/CPMI/wgCCfAI+AgGCfAIBgkACQMJBAkSCQMJEgkQCfkI/ggFCfkIBQkICQ4JCwkRCQ4JEQkUCfwI9AgKCfwICgkMCQUJ/ggNCQUJDQkTCfMIAgkPCfMIDwkJCQ==" + } + ] +} diff --git a/Assets/Models/KitchenCounterMeshs.shmodel b/Assets/Models/KitchenCounterMeshs.shmodel new file mode 100644 index 00000000..5c49eecb Binary files /dev/null and b/Assets/Models/KitchenCounterMeshs.shmodel differ diff --git a/Assets/Models/KitchenCounterMeshs.shmodel.shmeta b/Assets/Models/KitchenCounterMeshs.shmodel.shmeta new file mode 100644 index 00000000..d1914d23 --- /dev/null +++ b/Assets/Models/KitchenCounterMeshs.shmodel.shmeta @@ -0,0 +1,55 @@ +Name: KitchenCounterMeshs +ID: 82758363 +Type: 4 +Sub Assets: +Name: DrawerMid01 +ID: 139881558 +Type: 8 +Name: DrawerSmall01 +ID: 135779275 +Type: 8 +Name: DrawerSmall02 +ID: 146001396 +Type: 8 +Name: DrawerSmall03 +ID: 150413201 +Type: 8 +Name: DrawerLarge01 +ID: 138305769 +Type: 8 +Name: DoorLeft +ID: 150547241 +Type: 8 +Name: DoorRight +ID: 146520338 +Type: 8 +Name: CupboardSolid +ID: 144974966 +Type: 8 +Name: DoorDoubleRight +ID: 146717179 +Type: 8 +Name: CupboardSinkPiece +ID: 141601355 +Type: 8 +Name: DoorDoubleLeft +ID: 146024338 +Type: 8 +Name: CupboardSolidBlock +ID: 142281760 +Type: 8 +Name: CupboardSolidHalf +ID: 137745540 +Type: 8 +Name: CupboardOven +ID: 136828790 +Type: 8 +Name: DoorOven +ID: 150740704 +Type: 8 +Name: DoorOvenGlass +ID: 135623020 +Type: 8 +Name: OvenTray +ID: 136078992 +Type: 8 diff --git a/Assets/Models/KitchenShelves1.gltf b/Assets/Models/KitchenShelves1.gltf new file mode 100644 index 00000000..ca3d10d3 --- /dev/null +++ b/Assets/Models/KitchenShelves1.gltf @@ -0,0 +1,546 @@ +{ + "asset" : { + "generator" : "Khronos glTF Blender I/O v3.3.27", + "version" : "2.0" + }, + "extensionsUsed" : [ + "KHR_materials_specular", + "KHR_materials_ior" + ], + "scene" : 0, + "scenes" : [ + { + "name" : "Scene", + "nodes" : [ + 0, + 1, + 2, + 3, + 4, + 5 + ] + } + ], + "nodes" : [ + { + "mesh" : 0, + "name" : "BottomLid" + }, + { + "mesh" : 1, + "name" : "TopLid" + }, + { + "mesh" : 2, + "name" : "Backcover", + "rotation" : [ + 0, + 0, + -0.7071067094802856, + 0.7071068286895752 + ], + "scale" : [ + 1.1111111640930176, + 1, + 1 + ], + "translation" : [ + -0.5, + 0.5, + 0 + ] + }, + { + "mesh" : 3, + "name" : "InBetweenShelf" + }, + { + "mesh" : 4, + "name" : "FrameHigh" + }, + { + "mesh" : 5, + "name" : "FrameLow" + } + ], + "materials" : [ + { + "doubleSided" : true, + "extensions" : { + "KHR_materials_specular" : { + "specularColorFactor" : [ + 0, + 0, + 0 + ] + }, + "KHR_materials_ior" : { + "ior" : 1.4500000476837158 + } + }, + "name" : "Material", + "pbrMetallicRoughness" : { + "baseColorTexture" : { + "index" : 0 + }, + "metallicFactor" : 0 + } + } + ], + "meshes" : [ + { + "name" : "Cube.018", + "primitives" : [ + { + "attributes" : { + "POSITION" : 0, + "NORMAL" : 1, + "TEXCOORD_0" : 2 + }, + "indices" : 3, + "material" : 0 + } + ] + }, + { + "name" : "Cube.011", + "primitives" : [ + { + "attributes" : { + "POSITION" : 4, + "NORMAL" : 5, + "TEXCOORD_0" : 6 + }, + "indices" : 7, + "material" : 0 + } + ] + }, + { + "name" : "Cube.020", + "primitives" : [ + { + "attributes" : { + "POSITION" : 8, + "NORMAL" : 9, + "TEXCOORD_0" : 10 + }, + "indices" : 11, + "material" : 0 + } + ] + }, + { + "name" : "Cube.007", + "primitives" : [ + { + "attributes" : { + "POSITION" : 12, + "NORMAL" : 13, + "TEXCOORD_0" : 14 + }, + "indices" : 11, + "material" : 0 + } + ] + }, + { + "name" : "Cube.001", + "primitives" : [ + { + "attributes" : { + "POSITION" : 15, + "NORMAL" : 16, + "TEXCOORD_0" : 17 + }, + "indices" : 18, + "material" : 0 + } + ] + }, + { + "name" : "Cube.013", + "primitives" : [ + { + "attributes" : { + "POSITION" : 19, + "NORMAL" : 20, + "TEXCOORD_0" : 21 + }, + "indices" : 22, + "material" : 0 + } + ] + } + ], + "textures" : [ + { + "sampler" : 0, + "source" : 0 + } + ], + "images" : [ + { + "bufferView" : 4, + "mimeType" : "image/png", + "name" : "TX_StaticMesh" + } + ], + "accessors" : [ + { + "bufferView" : 0, + "componentType" : 5126, + "count" : 56, + "max" : [ + 0.5703531503677368, + 0.17327196896076202, + 1.0819951295852661 + ], + "min" : [ + -0.5651562213897705, + 9.313225746154785e-10, + -1.0801035165786743 + ], + "type" : "VEC3" + }, + { + "bufferView" : 1, + "componentType" : 5126, + "count" : 56, + "type" : "VEC3" + }, + { + "bufferView" : 2, + "componentType" : 5126, + "count" : 56, + "type" : "VEC2" + }, + { + "bufferView" : 3, + "componentType" : 5123, + "count" : 84, + "type" : "SCALAR" + }, + { + "bufferView" : 5, + "componentType" : 5126, + "count" : 56, + "max" : [ + 0.5677546858787537, + 0.05884671211242676, + 1.0810493230819702 + ], + "min" : [ + -0.5677546858787537, + -0.0751335620880127, + -1.0810493230819702 + ], + "type" : "VEC3" + }, + { + "bufferView" : 6, + "componentType" : 5126, + "count" : 56, + "type" : "VEC3" + }, + { + "bufferView" : 7, + "componentType" : 5126, + "count" : 56, + "type" : "VEC2" + }, + { + "bufferView" : 8, + "componentType" : 5123, + "count" : 84, + "type" : "SCALAR" + }, + { + "bufferView" : 9, + "componentType" : 5126, + "count" : 24, + "max" : [ + 0.44999998807907104, + 0.050000011920928955, + 0.925000011920929 + ], + "min" : [ + -0.44999998807907104, + -0.050000011920928955, + -0.925000011920929 + ], + "type" : "VEC3" + }, + { + "bufferView" : 10, + "componentType" : 5126, + "count" : 24, + "type" : "VEC3" + }, + { + "bufferView" : 11, + "componentType" : 5126, + "count" : 24, + "type" : "VEC2" + }, + { + "bufferView" : 12, + "componentType" : 5123, + "count" : 36, + "type" : "SCALAR" + }, + { + "bufferView" : 13, + "componentType" : 5126, + "count" : 24, + "max" : [ + 0.44999998807907104, + 0.050000011920928955, + 0.925000011920929 + ], + "min" : [ + -0.44999998807907104, + -0.050000011920928955, + -0.925000011920929 + ], + "type" : "VEC3" + }, + { + "bufferView" : 14, + "componentType" : 5126, + "count" : 24, + "type" : "VEC3" + }, + { + "bufferView" : 15, + "componentType" : 5126, + "count" : 24, + "type" : "VEC2" + }, + { + "bufferView" : 16, + "componentType" : 5126, + "count" : 56, + "max" : [ + 0.5, + 1, + 1 + ], + "min" : [ + -0.5, + 0, + -1 + ], + "type" : "VEC3" + }, + { + "bufferView" : 17, + "componentType" : 5126, + "count" : 56, + "type" : "VEC3" + }, + { + "bufferView" : 18, + "componentType" : 5126, + "count" : 56, + "type" : "VEC2" + }, + { + "bufferView" : 19, + "componentType" : 5123, + "count" : 84, + "type" : "SCALAR" + }, + { + "bufferView" : 20, + "componentType" : 5126, + "count" : 56, + "max" : [ + 0.5, + 1, + 1 + ], + "min" : [ + -0.5, + 0, + -1 + ], + "type" : "VEC3" + }, + { + "bufferView" : 21, + "componentType" : 5126, + "count" : 56, + "type" : "VEC3" + }, + { + "bufferView" : 22, + "componentType" : 5126, + "count" : 56, + "type" : "VEC2" + }, + { + "bufferView" : 23, + "componentType" : 5123, + "count" : 84, + "type" : "SCALAR" + } + ], + "bufferViews" : [ + { + "buffer" : 0, + "byteLength" : 672, + "byteOffset" : 0, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 672, + "byteOffset" : 672, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 448, + "byteOffset" : 1344, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 168, + "byteOffset" : 1792, + "target" : 34963 + }, + { + "buffer" : 0, + "byteLength" : 54895, + "byteOffset" : 1960 + }, + { + "buffer" : 0, + "byteLength" : 672, + "byteOffset" : 56856, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 672, + "byteOffset" : 57528, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 448, + "byteOffset" : 58200, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 168, + "byteOffset" : 58648, + "target" : 34963 + }, + { + "buffer" : 0, + "byteLength" : 288, + "byteOffset" : 58816, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 288, + "byteOffset" : 59104, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 192, + "byteOffset" : 59392, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 72, + "byteOffset" : 59584, + "target" : 34963 + }, + { + "buffer" : 0, + "byteLength" : 288, + "byteOffset" : 59656, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 288, + "byteOffset" : 59944, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 192, + "byteOffset" : 60232, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 672, + "byteOffset" : 60424, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 672, + "byteOffset" : 61096, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 448, + "byteOffset" : 61768, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 168, + "byteOffset" : 62216, + "target" : 34963 + }, + { + "buffer" : 0, + "byteLength" : 672, + "byteOffset" : 62384, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 672, + "byteOffset" : 63056, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 448, + "byteOffset" : 63728, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 168, + "byteOffset" : 64176, + "target" : 34963 + } + ], + "samplers" : [ + { + "magFilter" : 9729, + "minFilter" : 9987 + } + ], + "buffers" : [ + { + "byteLength" : 64344, + "uri" : "data:application/octet-stream;base64,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" + } + ] +} diff --git a/Assets/Models/KitchenShelves1.shmodel b/Assets/Models/KitchenShelves1.shmodel new file mode 100644 index 00000000..57e5e779 Binary files /dev/null and b/Assets/Models/KitchenShelves1.shmodel differ diff --git a/Assets/Models/KitchenShelves1.shmodel.shmeta b/Assets/Models/KitchenShelves1.shmodel.shmeta new file mode 100644 index 00000000..204c53fe --- /dev/null +++ b/Assets/Models/KitchenShelves1.shmodel.shmeta @@ -0,0 +1,22 @@ +Name: KitchenShelves1 +ID: 82783113 +Type: 4 +Sub Assets: +Name: BottomLid +ID: 138181722 +Type: 8 +Name: TopLid +ID: 147761585 +Type: 8 +Name: Backcover +ID: 139576452 +Type: 8 +Name: InBetweenShelf +ID: 142336524 +Type: 8 +Name: FrameHigh +ID: 150586966 +Type: 8 +Name: FrameLow +ID: 140066298 +Type: 8 diff --git a/Assets/Models/MD_SkyDome01.gltf b/Assets/Models/MD_SkyDome01.gltf new file mode 100644 index 00000000..38470ac1 --- /dev/null +++ b/Assets/Models/MD_SkyDome01.gltf @@ -0,0 +1,157 @@ +{ + "asset" : { + "generator" : "Khronos glTF Blender I/O v3.3.27", + "version" : "2.0" + }, + "extensionsUsed" : [ + "KHR_materials_specular", + "KHR_materials_ior" + ], + "scene" : 0, + "scenes" : [ + { + "name" : "Scene", + "nodes" : [ + 0 + ] + } + ], + "nodes" : [ + { + "mesh" : 0, + "name" : "Sphere" + } + ], + "materials" : [ + { + "doubleSided" : true, + "extensions" : { + "KHR_materials_specular" : { + "specularColorFactor" : [ + 0, + 0, + 0 + ] + }, + "KHR_materials_ior" : { + "ior" : 1.4500000476837158 + } + }, + "name" : "Material", + "pbrMetallicRoughness" : { + "baseColorTexture" : { + "index" : 0 + }, + "metallicFactor" : 0 + } + } + ], + "meshes" : [ + { + "name" : "Sphere.007", + "primitives" : [ + { + "attributes" : { + "POSITION" : 0, + "NORMAL" : 1, + "TEXCOORD_0" : 2 + }, + "indices" : 3, + "material" : 0 + } + ] + } + ], + "textures" : [ + { + "sampler" : 0, + "source" : 0 + } + ], + "images" : [ + { + "bufferView" : 4, + "mimeType" : "image/png", + "name" : "TX_StaticMesh" + } + ], + "accessors" : [ + { + "bufferView" : 0, + "componentType" : 5126, + "count" : 514, + "max" : [ + 0.9999997019767761, + 1, + 0.9999993443489075 + ], + "min" : [ + -0.9999990463256836, + 0, + -1 + ], + "type" : "VEC3" + }, + { + "bufferView" : 1, + "componentType" : 5126, + "count" : 514, + "type" : "VEC3" + }, + { + "bufferView" : 2, + "componentType" : 5126, + "count" : 514, + "type" : "VEC2" + }, + { + "bufferView" : 3, + "componentType" : 5123, + "count" : 2880, + "type" : "SCALAR" + } + ], + "bufferViews" : [ + { + "buffer" : 0, + "byteLength" : 6168, + "byteOffset" : 0, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 6168, + "byteOffset" : 6168, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 4112, + "byteOffset" : 12336, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 5760, + "byteOffset" : 16448, + "target" : 34963 + }, + { + "buffer" : 0, + "byteLength" : 54895, + "byteOffset" : 22208 + } + ], + "samplers" : [ + { + "magFilter" : 9729, + "minFilter" : 9987 + } + ], + "buffers" : [ + { + "byteLength" : 77104, + "uri" : "data:application/octet-stream;base64,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AAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAP//fz8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAP//fz8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAP//fz8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAP//fz8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACA9v3IqQAAgD8AAACAjFixqQAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAP//fz8AAACA9f3IqQAAgD8AAACA1YA2KQAAgD8AAACABFpoKgAAgD8AAACAkOrIKQAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACA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NxQ+P2hwHD/UgDI/GZocPwF3Jj8sqBw/W/xiP+A7Gj9veV8/2qcaP6XFWT9dCxs/GhlSP5ZiGz9Mv0g/LKobPzcUPj9c3xs/1IAyPx4AHD8BdyY/LQscP1v8Yj/uGBo/b3lfP09jGj+lxVk/2qcaPxoZUj/v4xo/TL9IPz0VGz83FD4/4TkbP9SAMj9wUBs/AXcmPw9YGz9b/GI/BPMZP295Xz/uGBo/pcVZP+A7Gj8aGVI/gVoaP0y/SD+kcxo/NxQ+P1GGGj/UgDI/0pEaPwF3Jj+0lRo/W/xiP5XLGT9veV8/lcsZPxoZUj+Vyxk/NxQ+P5XLGT8BAAgABwABAAcA/wAAAQkACAAAAQgAAQACAAoACQACAAkAAAEDAAsACgADAAoAAgD9AAQALAD+AAUABAD+AAQA/QAAAAYABQAAAAUA/gD/AAcABgD/AAYAAAAHAA8ADgAHAA4ABgAIABAADwAIAA8ABwAJABEAEAAJABAACAAKABIAEQAKABEACQALABMAEgALABIACgAEAAwALAAFAA0ADAAFAAwABAAGAA4ADQAGAA0ABQATABsAGgATABoAEgAMABQALAANABUAFAANABQADAAOABYAFQAOABUADQAPABcAFgAPABYADgAQABgAFwAQABcADwARABkAGAARABgAEAASABoAGQASABkAEQAXAB8AHgAXAB4AFgAYACAAHwAYAB8AFwAZACEAIAAZACAAGAAaACIAIQAaACEAGQAbACMAIgAbACIAGgAUABwALAAVAB0AHAAVABwAFAAWAB4AHQAWAB0AFQAjACsAKgAjACoAIgAcACQALAAdACUAJAAdACQAHAAeACYAJQAeACUAHQAfACcAJgAfACYAHgAgACgAJwAgACcAHwAhACkAKAAhACgAIAAiACoAKQAiACkAIQAoADEAMAAoADAAJwApADIAMQApADEAKAAqADMAMgAqADIAKQArADQAMwArADMAKgAkAC0ALAAlAC4ALQAlAC0AJAAmAC8ALgAmAC4AJQAnADAALwAnAC8AJgAtADUALAAuADYANQAuADUALQAvADcANgAvADYALgAwADgANwAwADcALwAxADkAOAAxADgAMAAyADoAOQAyADkAMQAzADsAOgAzADoAMgA0ADwAOwA0ADsAMwA5AEEAQAA5AEAAOAA6AEIAQQA6AEEAOQA7AEMAQgA7AEIAOgA8AEQAQwA8AEMAOwA1AD0ALAA2AD4APQA2AD0ANQA3AD8APgA3AD4ANgA4AEAAPwA4AD8ANwA+AEYARQA+AEUAPQA/AEcARgA/AEYAPgBAAEgARwBAAEcAPwBBAEkASABBAEgAQABCAEoASQBCAEkAQQBDAEsASgBDAEoAQgBEAEwASwBEAEsAQwA9AEUALABKAFIAUQBKAFEASQBLAFMAUgBLAFIASgBMAFQAUwBMAFMASwBFAE0ALABGAE4ATQBGAE0ARQBHAE8ATgBHAE4ARgBIAFAATwBIAE8ARwBJAFEAUABJAFAASABPAFcAVgBPAFYATgBQAFgAVwBQAFcATwBRAFkAWABRAFgAUABSAFoAWQBSAFkAUQBTAFsAWgBTAFoAUgBUAFwAWwBUAFsAUwBNAFUALABOAFYAVQBOAFUATQBbAGMAYgBbAGIAWgBcAGQAYwBcAGMAWwBVAF0ALABWAF4AXQBWAF0AVQBXAF8AXgBXAF4AVgBYAGAAXwBYAF8AVwBZAGEAYABZAGAAWABaAGIAYQBaAGEAWQBfAGcAZgBfAGYAXgBgAGgAZwBgAGcAXwBhAGkAaABhAGgAYABiAGoAaQBiAGkAYQBjAGsAagBjAGoAYgBkAGwAawBkAGsAYwBdAGUALABeAGYAZQBeAGUAXQBrAHMAcgBrAHIAagBsAHQAcwBsAHMAawBlAG0ALABmAG4AbQBmAG0AZQBnAG8AbgBnAG4AZgBoAHAAbwBoAG8AZwBpAHEAcABpAHAAaABqAHIAcQBqAHEAaQBwAHgAdwBwAHcAbwBxAHkAeABxAHgAcAByAHoAeQByAHkAcQBzAHsAegBzAHoAcgB0AHwAewB0AHsAcwBtAHUALABuAHYAdQBuAHUAbQBvAHcAdgBvAHYAbgB8AIQAgwB8AIMAewB1AH0ALAB2AH4AfQB2AH0AdQB3AH8AfgB3AH4AdgB4AIAAfwB4AH8AdwB5AIEAgAB5AIAAeAB6AIIAgQB6AIEAeQB7AIMAggB7AIIAegCAAIgAhwCAAIcAfwCBAIkAiACBAIgAgACCAIoAiQCCAIkAgQCDAIsAigCDAIoAggCEAIwAiwCEAIsAgwB9AIUALAB+AIYAhQB+AIUAfQB/AIcAhgB/AIYAfgCMAJQAkwCMAJMAiwCFAI0ALACGAI4AjQCGAI0AhQCHAI8AjgCHAI4AhgCIAJAAjwCIAI8AhwCJAJEAkACJAJAAiACKAJIAkQCKAJEAiQCLAJMAkgCLAJIAigCRAJkAmACRAJgAkACSAJoAmQCSAJkAkQCTAJsAmgCTAJoAkgCUAJwAmwCUAJsAkwCNAJUALACOAJYAlQCOAJUAjQCPAJcAlgCPAJYAjgCQAJgAlwCQAJcAjwCWAJ4AnQCWAJ0AlQCXAJ8AngCXAJ4AlgCYAKAAnwCYAJ8AlwCZAKEAoACZAKAAmACaAKIAoQCaAKEAmQCbAKMAogCbAKIAmgCcAKQAowCcAKMAmwCVAJ0ALACiAKoAqQCiAKkAoQCjAKsAqgCjAKoAogCkAKwAqwCkAKsAowCdAKUALACeAKYApQCeAKUAnQCfAKcApgCfAKYAngCgAKgApwCgAKcAnwChAKkAqAChAKgAoACmAK4ArQCmAK0ApQCnAK8ArgCnAK4ApgCoALAArwCoAK8ApwCpALEAsACpALAAqACqALIAsQCqALEAqQCrALMAsgCrALIAqgCsALQAswCsALMAqwClAK0ALACyALoAuQCyALkAsQCzALsAugCzALoAsgC0ALwAuwC0ALsAswCtALUALACuALYAtQCuALUArQCvALcAtgCvALYArgCwALgAtwCwALcArwCxALkAuACxALgAsAC3AL8AvgC3AL4AtgC4AMAAvwC4AL8AtwC5AMEAwAC5AMAAuAC6AMIAwQC6AMEAuQC7AMMAwgC7AMIAugC8AMQAwwC8AMMAuwC1AL0ALAC2AL4AvQC2AL0AtQDDAMsAygDDAMoAwgDEAMwAywDEAMsAwwC9AMUALAC+AMYAxQC+AMUAvQC/AMcAxgC/AMYAvgDAAMgAxwDAAMcAvwDBAMkAyADBAMgAwADCAMoAyQDCAMkAwQDHAM8AzgDHAM4AxgDIANAAzwDIAM8AxwDJANEA0ADJANAAyADKANIA0QDKANEAyQDLANMA0gDLANIAygDMANQA0wDMANMAywDFAM0ALADGAM4AzQDGAM0AxQDTANsA2gDTANoA0gDUANwA2wDUANsA0wDNANUALADOANYA1QDOANUAzQDPANcA1gDPANYAzgDQANgA1wDQANcAzwDRANkA2ADRANgA0ADSANoA2QDSANkA0QDYAOAA3wDYAN8A1wDZAOEA4ADZAOAA2ADaAOIA4QDaAOEA2QDbAOMA4gDbAOIA2gDcAOQA4wDcAOMA2wDVAN0ALADWAN4A3QDWAN0A1QDXAN8A3gDXAN4A1gDkAOwA6wDkAOsA4wDdAOUALADeAOYA5QDeAOUA3QDfAOcA5gDfAOYA3gDgAOgA5wDgAOcA3wDhAOkA6ADhAOgA4ADiAOoA6QDiAOkA4QDjAOsA6gDjAOoA4gDpAPEA8ADpAPAA6ADqAPIA8QDqAPEA6QDrAPMA8gDrAPIA6gDsAPQA8wDsAPMA6wDlAO0ALADmAO4A7QDmAO0A5QDnAO8A7gDnAO4A5gDoAPAA7wDoAO8A5wDtAPUALADuAPYA9QDuAPUA7QDvAPcA9gDvAPYA7gDwAPgA9wDwAPcA7wDxAPkA+ADxAPgA8ADyAPoA+QDyAPkA8QDzAPsA+gDzAPoA8gD0APwA+wD0APsA8wD5AAEA/wD5AP8A+AD6AAABAQD6AAEA+QD7AAIAAAH7AAAB+gD8AAMAAgD8AAIA+wD1AP0ALAD2AP4A/QD2AP0A9QD3AAAA/gD3AP4A9gD4AP8AAAD4AAAA9wACAQACCAECAQgBCQEBAgIBCQEBAgkBCgEDAQECCgEDAQoBCwEEAQMBCwEEAQsBDAH+AS0BBQH/Af4BBQH/AQUBBgEBAf8BBgEBAQYBBwEAAgEBBwEAAgcBCAEIAQcBDwEIAQ8BEAEJAQgBEAEJARABEQEKAQkBEQEKAREBEgELAQoBEgELARIBEwEMAQsBEwEMARMBFAEFAS0BDQEGAQUBDQEGAQ0BDgEHAQYBDgEHAQ4BDwEUARMBGwEUARsBHAENAS0BFQEOAQ0BFQEOARUBFgEPAQ4BFgEPARYBFwEQAQ8BFwEQARcBGAERARABGAERARgBGQESAREBGQESARkBGgETARIBGgETARoBGwEYARcBHwEYAR8BIAEZARgBIAEZASABIQEaARkBIQEaASEBIgEbARoBIgEbASIBIwEcARsBIwEcASMBJAEVAS0BHQEWARUBHQEWAR0BHgEXARYBHgEXAR4BHwEkASMBKwEkASsBLAEdAS0BJQEeAR0BJQEeASUBJgEfAR4BJgEfASYBJwEgAR8BJwEgAScBKAEhASABKAEhASgBKQEiASEBKQEiASkBKgEjASIBKgEjASoBKwEpASgBMQEpATEBMgEqASkBMgEqATIBMwErASoBMwErATMBNAEsASsBNAEsATQBNQElAS0BLgEmASUBLgEmAS4BLwEnASYBLwEnAS8BMAEoAScBMAEoATABMQEuAS0BNgEvAS4BNgEvATYBNwEwAS8BNwEwATcBOAExATABOAExATgBOQEyATEBOQEyATkBOgEzATIBOgEzAToBOwE0ATMBOwE0ATsBPAE1ATQBPAE1ATwBPQE6ATkBQQE6AUEBQgE7AToBQgE7AUIBQwE8ATsBQwE8AUMBRAE9ATwBRAE9AUQBRQE2AS0BPgE3ATYBPgE3AT4BPwE4ATcBPwE4AT8BQAE5ATgBQAE5AUABQQE/AT4BRgE/AUYBRwFAAT8BRwFAAUcBSAFBAUABSAFBAUgBSQFCAUEBSQFCAUkBSgFDAUIBSgFDAUoBSwFEAUMBSwFEAUsBTAFFAUQBTAFFAUwBTQE+AS0BRgFLAUoBUgFLAVIBUwFMAUsBUwFMAVMBVAFNAUwBVAFNAVQBVQFGAS0BTgFHAUYBTgFHAU4BTwFIAUcBTwFIAU8BUAFJAUgBUAFJAVABUQFKAUkBUQFKAVEBUgFQAU8BVwFQAVcBWAFRAVABWAFRAVgBWQFSAVEBWQFSAVkBWgFTAVIBWgFTAVoBWwFUAVMBWwFUAVsBXAFVAVQBXAFVAVwBXQFOAS0BVgFPAU4BVgFPAVYBVwFcAVsBYwFcAWMBZAFdAVwBZAFdAWQBZQFWAS0BXgFXAVYBXgFXAV4BXwFYAVcBXwFYAV8BYAFZAVgBYAFZAWABYQFaAVkBYQFaAWEBYgFbAVoBYgFbAWIBYwFgAV8BZwFgAWcBaAFhAWABaAFhAWgBaQFiAWEBaQFiAWkBagFjAWIBagFjAWoBawFkAWMBawFkAWsBbAFlAWQBbAFlAWwBbQFeAS0BZgFfAV4BZgFfAWYBZwFsAWsBcwFsAXMBdAFtAWwBdAFtAXQBdQFmAS0BbgFnAWYBbgFnAW4BbwFoAWcBbwFoAW8BcAFpAWgBcAFpAXABcQFqAWkBcQFqAXEBcgFrAWoBcgFrAXIBcwFxAXABeAFxAXgBeQFyAXEBeQFyAXkBegFzAXIBegFzAXoBewF0AXMBewF0AXsBfAF1AXQBfAF1AXwBfQFuAS0BdgFvAW4BdgFvAXYBdwFwAW8BdwFwAXcBeAF9AXwBhAF9AYQBhQF2AS0BfgF3AXYBfgF3AX4BfwF4AXcBfwF4AX8BgAF5AXgBgAF5AYABgQF6AXkBgQF6AYEBggF7AXoBggF7AYIBgwF8AXsBgwF8AYMBhAGBAYABiAGBAYgBiQGCAYEBiQGCAYkBigGDAYIBigGDAYoBiwGEAYMBiwGEAYsBjAGFAYQBjAGFAYwBjQF+AS0BhgF/AX4BhgF/AYYBhwGAAX8BhwGAAYcBiAGNAYwBlAGNAZQBlQGGAS0BjgGHAYYBjgGHAY4BjwGIAYcBjwGIAY8BkAGJAYgBkAGJAZABkQGKAYkBkQGKAZEBkgGLAYoBkgGLAZIBkwGMAYsBkwGMAZMBlAGSAZEBmQGSAZkBmgGTAZIBmgGTAZoBmwGUAZMBmwGUAZsBnAGVAZQBnAGVAZwBnQGOAS0BlgGPAY4BlgGPAZYBlwGQAY8BlwGQAZcBmAGRAZABmAGRAZgBmQGXAZYBngGXAZ4BnwGYAZcBnwGYAZ8BoAGZAZgBoAGZAaABoQGaAZkBoQGaAaEBogGbAZoBogGbAaIBowGcAZsBowGcAaMBpAGdAZwBpAGdAaQBpQGWAS0BngGjAaIBqgGjAaoBqwGkAaMBqwGkAasBrAGlAaQBrAGlAawBrQGeAS0BpgGfAZ4BpgGfAaYBpwGgAZ8BpwGgAacBqAGhAaABqAGhAagBqQGiAaEBqQGiAakBqgGnAaYBrgGnAa4BrwGoAacBrwGoAa8BsAGpAagBsAGpAbABsQGqAakBsQGqAbEBsgGrAaoBsgGrAbIBswGsAasBswGsAbMBtAGtAawBtAGtAbQBtQGmAS0BrgGzAbIBugGzAboBuwG0AbMBuwG0AbsBvAG1AbQBvAG1AbwBvQGuAS0BtgGvAa4BtgGvAbYBtwGwAa8BtwGwAbcBuAGxAbABuAGxAbgBuQGyAbEBuQGyAbkBugG4AbcBvwG4Ab8BwAG5AbgBwAG5AcABwQG6AbkBwQG6AcEBwgG7AboBwgG7AcIBwwG8AbsBwwG8AcMBxAG9AbwBxAG9AcQBxQG2AS0BvgG3AbYBvgG3Ab4BvwHEAcMBywHEAcsBzAHFAcQBzAHFAcwBzQG+AS0BxgG/Ab4BxgG/AcYBxwHAAb8BxwHAAccByAHBAcAByAHBAcgByQHCAcEByQHCAckBygHDAcIBygHDAcoBywHIAccBzwHIAc8B0AHJAcgB0AHJAdAB0QHKAckB0QHKAdEB0gHLAcoB0gHLAdIB0wHMAcsB0wHMAdMB1AHNAcwB1AHNAdQB1QHGAS0BzgHHAcYBzgHHAc4BzwHUAdMB2wHUAdsB3AHVAdQB3AHVAdwB3QHOAS0B1gHPAc4B1gHPAdYB1wHQAc8B1wHQAdcB2AHRAdAB2AHRAdgB2QHSAdEB2QHSAdkB2gHTAdIB2gHTAdoB2wHZAdgB4AHZAeAB4QHaAdkB4QHaAeEB4gHbAdoB4gHbAeIB4wHcAdsB4wHcAeMB5AHdAdwB5AHdAeQB5QHWAS0B3gHXAdYB3gHXAd4B3wHYAdcB3wHYAd8B4AHlAeQB7AHlAewB7QHeAS0B5gHfAd4B5gHfAeYB5wHgAd8B5wHgAecB6AHhAeAB6AHhAegB6QHiAeEB6QHiAekB6gHjAeIB6gHjAeoB6wHkAeMB6wHkAesB7AHqAekB8QHqAfEB8gHrAeoB8gHrAfIB8wHsAesB8wHsAfMB9AHtAewB9AHtAfQB9QHmAS0B7gHnAeYB7gHnAe4B7wHoAecB7wHoAe8B8AHpAegB8AHpAfAB8QHuAS0B9gHvAe4B9gHvAfYB9wHwAe8B9wHwAfcB+AHxAfAB+AHxAfgB+QHyAfEB+QHyAfkB+gHzAfIB+gHzAfoB+wH0AfMB+wH0AfsB/AH1AfQB/AH1AfwB/QH6AfkBAAL6AQACAgH7AfoBAgH7AQIBAQL8AfsBAQL8AQECAwH9AfwBAwH9AQMBBAH2AS0B/gH3AfYB/gH3Af4B/wH4AfcB/wH4Af8BAQH5AfgBAQH5AQEBAAKJUE5HDQoaCgAAAA1JSERSAAACAAAAAgAIAgAAAHsaQ60AAAAJcEhZcwAACxMAAAsTAQCanBgAANYhSURBVHic7f09r2zNkj8IRdTez/Pc2z0txhmwEAJhIGEgIXxsNODOJ8DAxMfCxeCrIBzsMXDGwUJCwkbM/JsB9X3te59zKgMjMzJ+8ZKrap9zbk/f2hE6p/aqXJmRkblWxXtm8n/+X/zfBv+GhIiJiEioArjNPL8x0RD5w+/+hZl3w9WaiUQbsDYSYWYRIhYWJuY//v53Y4zVHMEKtF9ZOO2T5M9//KMgwTyLV4/ExELE6z4Tyaad+Y+//5chg+lGtAqRYNaxME90QJWQiPzxT38gmfhWGdLH0JtoiZAQETOLyB//+AfmW5prPs3+vsXMf/rTH+dM7hkSHekq2GQBEXt+fv3rX5RMiT2yThYJ0Ry5PTy+3cYYv/uX3/PNHo+1F3xqqxTx8Y1/97vqcWPDjMRuyR/+9Kchwq449+8Gxvr3T3/6k5s0fSl0jLSeDrxBG4fI+OMf/yjxIftPqkcxn/tffv0VMDNU0ld5vmtQOK+Y+c9//vMQYXaD1ddsDUEfnk3cLPrHf6D/3X/3f+gmW+ILll84rCNYRyTUL8tz4alEgGUIdj1rMkMdKBHEJgk/E9EgYfiKSAYyl0C5DCKCJ0IyIiWyf0uR2n2p3bmx26SNNNLN4QD/g8kUxEVGwPwjDMhXCQWQMYiI3t7e452GhoZXAXn3P/ADE0cRNk5C4kkBcJAfs9zJ98zusQS7gPrCxmslkyTiKl/THym/xQo8Am0Lf6Z2CQmqa45RzgnlufKTP6BaMfMEEgsUAIccJw0x3G7z851Ils4kqro4HWXpIqtcyLTK242GiTxWhYRU753ApiWxKqdMW2PZn+LfjkUmu0LQgdbrJIOZA6Wo+NtAYE4WqabSgzoNWqKJzjVwHStKbMDNTvivgYEtpIMU1ayfBRw2qVppU7dneJXBjK2RbiMgduq/ZptgDwRQ5PYMVhft90U8IvgCFpogte7F8wPZX+zn6h6ycgWbAptkNnq21ux+EEEx1ynYhfbK2pjY0ynwd2NKmhdbX5NfLDr9+8AwVSLux2uoN5G7UOzhr8kofk/webp7giff14w8M/1t0US0wNzRUkQGuhE9Q8ap5KKxoyo7Jy7Bv1TzT+yKUYBVSHJhgfZ58kAylbXbAmho+DQA3GcVENHWEMegC3bzZA+p5AGSwnc1L2sW6QjGVp7VIh//0CgKDR0lMPDToi1OLFoJUDIySYcZ+CFwGsietNuP7a+hoaGh4e8F2gJoaHhNqHx25qOagF7mrLQiFB6bqscLb8OzgBr3ycvvnLnRrIn4lLaLkosm3pOZ+sXyVMc5svDuof7H4ImG6x4+We9SbAHQ0PAJ4Gk/w8mJ/2N8E5lbIbvMHSXONeuMyu3zw4isejxJ00z/gCCwxmdS6yy0vGzOEYuCgEt/VEFqlkZE7xqzI4xSrrhUAWxviGi87IZxKIha+cCgIxYTDjEfUvwcsNW3FzOJcmsx49M7ojfDbXqbdWQYybMPCZ2vpFULDpIGF1ckGIN1rFE4IQv02UxBSqgP8jkQ++tmMIzX8hF3GHDStgOLhgzGTjsuyOGXo1QJYxsmhpqMBEa6y5DfKQ74BDCxHDpj+2tvEIQOkVDZQ0WEEPJd5WyFbPO51FmdTiFiSc/D5rmkmYlGjHPbK7ajwf7lZg4PT/S5W2H1iogQ80xOZorx52um/2HH/QWexNrcYE5koKafIgHIRsMsHJDp6CG2Eek8NFfWkYyhE7fNXDUHWi5NqwsyLipEgnN9lChJ7u5WbQE0NHwaSDw0yJ8NWP4xHTPnvSCSa0fHSVO+rpP72mSg5ptk0mM8qaRonhi9u5nSQF2rs1n2gZmHml6DS0YG3EULoKGh4WXBsYZH7nKiwhr4GFx2IQeOrE051FncajLQrMZihj66tjPDfRqy+oxhkuvYQ6HjX4s0DL1g77tuJuxId5Ioh+5cCXMLgIaGV4bMRLK+/yO6eYDvgQadkybXTQk1T96buvyU9npNa4CPsnUQP9fOn4xtO/ScbMN+ZouEo9hPIUNlTrUAaGj4LPA80/+2GMBjhCc+dWLuz9gTCQ8FF9BT9HmplJak5RSaZ/xLjnen9cMX9bNBcPJKobFzEvB5FnadXgfQ0NDQ8EmhLYCGhk8D5x0IrMoT1z8SMIsG3UFEpCmVGMA4BWAdtm9YT3vY7OTp1tHVc8posu6ooJO9Rv+kFl/eDWgp2AeTYOZtAYjVNQOKiLdzSbMPvQ23dkkUIk3BJC6qGfJg5Kxe0rDw7tGkkdzNSsaUOC/OXHPZeKSZg7pZ6Kq5h63Joxhi5/XBTJrWuQND8zUVbSF+LyARorxlEEW4zMLYDye0FSL2fsOMQE1x/5zEPRvGyjYnexCcnw4BgvyIE5m0pqh6S9jX08rhYXMyoxkeiziCXDZh7lJcl+z2mHT9aTfVC4l7W8LdUDWmDscOdKRGzaFJ5nzrvUs7B/laPN/s8BvNv1dW/8CzLgIR87rsfwnhVcNQIkIiLLJ2EGNWNnPJ7DY2ZpuK3MWp4a6WRnFNf/gdXLnakLBVgExWmye0DwYOXWcCBDF7aAugoeETwDPRyATXPuiM312cXdLPAEOmTQ4FP2Do1TgvVapkAaTMnGMC1SH9Bu0V/kgGatbrv90wUfI4qQVbJWoB0NDwCeDAMU+hxY+jj4ym7KLmvBclmd2fJFlgxJf+llqYnfrNwVtEmIPACY/rKFEexnIStNfuoCMkecy+vAVAQ8Nngcxcnmcl1zVPHl8qtxtat6906rzBvcBd7YDL+qQrgXGX02/Qpq/3/sxiQP04Qt7r6OjMo0CUZ2H87UsbyieuRLYAaGj4BJDyyqtYCIW7H3UBXbiYimTKkzMHl4Ahqad0zEW9FwyAXE6SpsRw3jWh7jcFsTOFbiXwHB2sEC4tpDzzxfyfpgKrYFuUwephe/e97+1yNGoge/ccODNj34MtcVT68Y6murjGPoxD98Sx8DPSjxKQDyV6yTR3PjGSV0dzHH4i9jswQ2AaubZDAXmVWmRS/C4ui2w9VHLMA+Qk3F8hZJj6dXqLVmTe4WHA7WlNJVCRiQUOhJmPiOBMHruR2pIFKvWpGBYqShgx846tHn9KgMDRsHuLFPkNmPQlE5vFjRKf6Jqg9Q7v4zZ3Ofa8z0nRofvTGd2uTdWLI4S0S5rYC75oZzziEUD2s4Aq+OLlPnZP9kvgPUvu2ojG4zzXROCQKpfCqeR5rXmezhS6O0HBUp/w758OVLl8DvHWQf3meJ3kpeT6ibnnzJ8iR+gQFYhvCVQoaD6wfsRwkl77qtcBNDQ0NHxSaBdQQ8PrwtY0pxE3BhHdstI9L6HdR3X/Z+GQjpLdPs5vAxo057YP+4Trhw1OlZ1lc+lTOkYOciscdYXt257I0SWEk6nYWgA0NHwySLzmQyzyuR7AYXdgiI7Fo0vnkLhydMKkHmNHHyBcOSNQ9VQoWIm4wMw5IHF24v9YAay+wtgRtwBoaHhVQN+xhoeiEjrLB9b5EYDn32JHhb5/YqD5+sQ6n7MDTr71KzhEBa5LBJKOTnu6PQk/VjD7MJEQdRZQQ8PLQ1KoER6HRv9mxBy14Jwpnxlxqvmkynw2EwQp+cAunjkN9GFH9FhoZeH9PU8HpW+ZBdTQ0PCawCe1Otckoh+Xb06eczkt+InMxcVSD4mVWgX06+dcMc8GD3Jo5BlhAKuXcTXA89tBxwXJQEAhBp5IA3VQSd/3hXxn3808x530uR6BthQkkefNm+XcrRpI8kxS5JDftJvkzLdQIQ9dv440XVMKzx433nCOH3RluXmu0MYCZIhrrfEo1pMjBfdsmeMmXj+9nQnqh0HpK6e7CXbaYNhGB75qcqQ+CtUl8OFD3uce1PzUYyAhFbg4wpJhysIUcTWMVHQ69DEUIjJmW9/jUfsESXgjNNFzV2B8upA6K0gPaptrXyAmGmkUT7zP/v1S5uN+Y+oqcDQ7ZGyXhlKfjOz86jQz8R25ghRlnXASBlc66cl7/oy7Bpg+5S4STudmAcfLBRyJ8azEMX1k69fIgd27sT8f+JXwBIGY74ALCdoWQEPDK4OTUyfPxgdzgU4sialYwYtduB1ycnD1JB7yquAnljXQc2Mpe0EJ8RQXPrH15zFUdXBohTB+XvcHPGGZQq8DaGhoaPik0BZAQ0ODwUe1flfHq/CFo+ZptzW2PeWtnogU9RV+z1iIaqe5led1v66P6PYpEl5zh5e3PkC5UXHliwsuIBwPbrBA3k2sJbjfwyxiYWEpXfMwmRyGIn7cqx8BhzeWryarkUwX/B6t4t9bt5OfMyvh+Zqwq20OfXSGg8ffOYhnIbn9/rd/1iiycEqMbJQGH13W0QkD45CtdM0NbpzA8CTXAGQ/CZ1kHT5sqUFrmwydK7oVuyTECWb7GklnNwPm62faW3pUIxW8wI064HGIfy7LOT7fQea1lbyfv2LmfFhCHJEC9fSTYaQEv5vqibFiY3XcE8E2JKejERIm6J5oYtvD37RqF4w/Ar35mJPKofwZBjR/PuT5DuWSRcuBpR5IPSZiYpXKiZR9RDU8ESG/zuI/bfBwPOa+IvWjLP4aHrqP2gJoaHhpSNvaZIaI6jky+oqbPlLh81492T9+0KBdWifcdesJTsHVQEPKEM3Xtf518uY/EcQuxBvSjNlKaZ3zxnwSyd8jGArh3esAGho+BWSuuoolXH+bk+HJrn3xlRafZcyJf+VWZX8PRJoRwmWFo6VysgMSznE5veJl1Q+b/8M0rptTzo3RAqCh4WXh9mUULh0R0m0gs02Q/RjYCp1ivnzhWMwOkOB5AG7BFDQU8D8PzZ7eJdOF50gFbXqVyyCimzcNsGEeNabokGxK9Jt+0TyZQbQTkYEGMmpZeFOC9sQNUlRvl6uFzQ5IhVmA6SIJsumCwfPcrnjnc1OQAEJEv/nHf2wB0NDwsvD1t8UPHPX97B0+CYBqlQCwJ2VmlR9c4CPyMkeMAAFOyU7afeKJM6HR2HeSGRO7aJwsIIFeDpxX3jayk1zUkhtVtFEuSeMSH0ZXuRiXOAj88UtndrSp6BRhTvX957ebNVnE7DOLNQarwU6dPFnBJ5yBeYJxtDl0BKp+aICIRAjDgKujTSwGKsmXk03tjuOxnjGAMcG1onuOgPUfIpz9ysIsJib3nuYrnrxObQbdRVuLxMndlVgkjkHKyxouzHHBKiEAKqIxVSJSR6hb/jT/7vkSDSXOaZI9/3mdlv6kxJ6FYJy+dAvv34EUFfIz8XeJVKuCicWX0n3d/YWuIJKsM6RN8CCB3VaJ9a9MIJOxWzYcWFnfKztwgoRI2Gll5J/yJvX06C2XQt893pouh3E3NDyCtgAaGl4W/l//6X9vXgzvA7IPLCGVI169RfCRA/ujWqcKt3VaEmi4UOLIALSog/NyB12RsRVKgEFwRouLbUim35Csk6yghzjAorn1iGvUxY1UtcpdMlDrrzHDV7OD8vI9LNAwg413wEzfwNTQjf+YiH77y29aADQ0vCx8+e3b4kzLp0ykbGICCgBkHAvAbYIOB+eURy680SU+S861Yp06CQQ5P+rgRp/GoWvAw8v9wuIO7EM+G8nbfhhHWyEn4nRhj0izi3lkHu06GYaHVltGCtc2HxJKsPnyxkzhwoOIeA091gQhr8/6l7cWAA0NLwtvX9VRj4meyP3w7wyTOj0Y1NXJYkiI6IbMBVVakcWtBmTFAC8W4D/Kv3Y/SgB0PR2Aq1PHu+NARgiiJuPAlyQF/yDJcOSbWkqobon+rLDfkvBjIFlo0JxYnVaojLSgFAGdXqbLGzHaI7iBAFBZxUR0e2sXUEPDK0OM/8AXjgUpHuM334t2g+dOypfFfyVySZMu/IFx3hP9ksiyElRpNSyUaC256Km3CrOaUEZsEWopYnbObqqLAd1U5IfUSwKh79kiTaPzc6WKecAqyloANDS8NDgdOzGLVVLziR1c3n9QnlSJClyxH6Aja9YZDgw7p7tUjLpIvHAur7pLo1uAcDcUAhqcg/7Q6nR9kIyrF2Y3XY5E7IlKMpBW9Ghp/5EO6SBwQ8Mrg4zlk3C8OOuxro1dggSYCAYwFATbUN5t57BpCEwwEcDm8PFEGDGwZ33Q/RG9+nMW659Nlsc7NCp19+tJQfU8935shjXXc4CISGXOPMByYcJEkgx79dTo/SjLSUBoAzYTUJbWRkzTy7imnwVEGa0de2Yr3WnHWWsovDcVoj1w6Hp9XcI9aDasGYwq/+L+Imr7wLu6JbdmNYrQ3NRICLfWMcdnnCXcusjNM7wxbtN5TcT8MMy9c2w4cMNNlip2QmRzjhN9ZXSHl2fuiKTJtuuxQwOhPJaox6w+5UY33OGH95MTYmbLEuFdmibAaogIMQsbWXvQu71stlKqiAn7HrNnUhLb23u6f8ahg2XZOxYm6ydDeA92BFoo9QntxoFtsc3A/O1ZTcxmYeLb8hrjuDE/GV3qk4yQpEow5ftnt4QBMtZyXk86e+R57js6stfrgQ7xml8WGx89IiNURgHjGicunYeCsXHXZyIWf7oum/6K5uu7T0miTSRm5pMtc2toaGho+GTQLqCGhtcF1XSP+mR2DYGiivqk28cNrIFooxVxUkBupvT2aZvebYa4b+XdL2BRrW0VLozZ2rFy8HiAPZG06hxHxXG6PScu+jiRiVaZI9nNVE2Ne4Ipd2guiBWcZCNcWgA0NLw0OPdcwZvRjwEsBh1deVGSConMnkhRJHdK9AkW3Dm7cbynI/lispulhlqi5C4C5OnyyaY4lslnI3LX/8kfBp1tx3B1dluWqdlZF8WDEnryOHUWUEPDK8Pm5JkvgUZ/agfKtXfTRzRaaUWdRtHdoUmhYNcc/dTnEXFEVDeygab7Oxy0G/vNqKFmIs7vQxepcSvyVnrVFh5PCDek7FBn3UNRXZhT/K6RJKZ9erqTHxqjw85NVbDnpgePCAnLPm9bMDhnXZHoSSxI/46hYSu8hUSwXbhOxJlEtg2Ox8bEomFp0mfvKOI9Xf4gFM4baMlCGZPHdmSPofVN3JKSE+SXlacOJCvy6X+/vkvm8Jz9iSg2t6gf0HpP1mzAUfYWVTUM81G68n3tH3oYbAiy+b0ByolYvwepHob+HiN9+wXE/XzE8tpF37J1Kos+poUK3vtrTuYIhf6tkKFfAmJ2EsMeXdiSaKJhkmGR8/0L9b8lGMVqtFVpOzUnEZnJzj92VhwehdclRQdKdoFNnFpqJX41U+Zfxhz4KHCA7D1kzzk+ANeWhMSK13XyvGaBkd8tZnJbcThcNnVoqxXgfvNxekObtgAaGl4YXJ6cWyma8zXzteKwP8jF0oJYL7zI62IRuTjGvbSl/amVUCiedIUsey8qZUkzKdWzzHLLDAd5VKybK64NhaseCc8KlCHR6XIn5RCRjwFEKlEU7HstABoaXhicRexSAB8swXU4oKbp+1Uis1TfaqPh+b73maxEK0kUo5qltpwhhyW8YDpwTS3CZNCayisTYlI+NuXZVuDYDJCd8GbTakn2aSUEaezQtABoaPhMUP76yTO5A/d0sdm1BADbIHdeBofPLTo5cMxV4eLMUPNjPpxU3zN96EJgRM8hdZQhvkz46juq7YoMLSQiz/pFzCuYMZaE5TpHCVTd6XUADQ2vCR/lng2fENoCaGh4YeCkcZrb24qW0hm1Wfed6zollPstQwnSl11DxSCsZ4nub7fXHBGlLA0d4qVTRQq3zAlOa6UduFR9IgtlGwF5BQPzProBSU82QULl5ygi8IYV0z7NrQVAQ8MLg4S9eZBj5CTCFBZ2rBPjmcm37PafqLHU/FcD0iB1XEcZYBP8FSGINdhLlGtubndzmDrJztNysI+EUiySgSk9Pr3NRyZwAt3sHsL4mbwUpNin1L2T4INnmDw2/97e7SUSqWltRicTPs5ZpFlfQsT7PGdi2xtno5X0GBjKw6vF8wAFcFKmpEury+nhiXOAYTrgTGflTY7OiQCFkHg3kWMe3kK5xrsK9ZcDcbg96YcjAEuA1xteE9Zh4jNn0qRRsXmyX7uwa7xoCS+ADWcSag8c3ppIIExrdnQ6gCcrflx5TvIvAF4Le8VzM32Ui2vg2+nfF9SmNndLPmDXm39F3fPfrTHNlDxPxqEVI12ZnhJqFCRp5quxPP3VoUZ50HIzRy5eSGCVLh2+wnnil1k84PdDzm3egs29G+kFi/eKk49j9wV/8LaFE0sDJnh2sELTjmgk10oS0atY83e0U88Y95fyrNxY8iwzkV4I1tDwwsBOHD0EJ9atEYqHVY668RQ0S63zhgVw0NQRMm5k/Rz+ElX5jkl4+F5xh4kCBLvWgpN2fyhxPUqi6mDxnFAvbKZvoCoDU+9QZYGTr+te98y0AGhoeE0QAubrtNlVBHUTp4b66Dhan2gBwAGEhuFa3DjmCLxXDBUmw/h1TycrAe/xNQXZiR+q5xQeLWGifehXbCgJI6ZI+XuzHCyJh/NXbOidBxBtDUbxDCUbQQuAhobXBVsKv74TedUXGTfyuCP/ZGtaMp2cnL7qQgkuTYgbIajUgZqcyxMgEYOkVJhDZUqDBqoOHaShLFjzOik0WVlsEE17WGVEIcg6INHVyzq+WTy63M+68JuBO0QoALaPSZy8Z+hiPSY9iBjUC9vfPrgm93P0NlnYmyHOZpgadLMG1DA+CT1iL0zo396xB9HzDFSlqZyfuxdniqky5KuQuf73hKx97oF8QfH/XAAgvQrgsdanxerwJ6hsvyE92GBOwyST7ZlWHcLVTYcG1bFdQBAs4GudrOrf3ZKrWjv0oxUEQxnie9Z3mnCDC1YkGE4i98q4UXPaH2Tv8R8IC8ODN2hjCiPbAYP5ztrQwT2gP1Vjj/vHuRkaW/9pvoxWVyGxFeBrrh4T6XkA8YeWvEPrQJiiC0dNQL6CpZLrud96wlYhLXg6CsITjiNCFTNAzVr9kJR0htkoKIslEChKI9eeUnubEH3JUgkg8uyr1wE0NDQ0fFZoF1BDw0sD6LmcdXy8RstgZSgOijqj0FZ453dJeMLX2g3jivzN2CDn/Ci9GbU5lKwhQztQzy8Ua8R7tXGbVuJcCVM8lwmybcow9TCZ8RmRtR+ZtIPxks8PgJphb8r3k+Xd0NDwdw2F563g/8Ado4NKcTgGmnwaBHyNyTnIcxfyzOGO9nd1hjv/pNH40k1e5LbV4QSAKqSBopiRVOKE0AHSQrDk6ila5y2SYUxGh7gDXnbL2GBf42GQIS7dFkBDw0uDi7gSYdyDNsvIESDky5Pp2LXf5RNU2oEhp53MjvwIne/IkdFtndRz19GVz17C34sq13DpqV8FqN1nDJB+owU1j3Z8XDQ0Uwha1NyjqXFm/fM7ExUyR0jev/Fs8oaGhn/fIEK2hCxr23mJcALH3DExtOjMoXpuKdLJN5S41ToUPketM5YSJ/pYCn/QkTSIXrsNJ7Lksn5Cx6BuJ9MKzRTT/A+eIteFXJdEh4/K1NysLYCGhs8Ai01Evb5imOCNQa0f713tCJQ5IvrHr/j35FYjsbSjXj8Ru3W+YSQZiX270HzzJhBjRDTZRkGqcES5PKe6wqCzkZRmO5Oe/VdYydl56Mai91/ll3cONfwAo5xUcm2FvVWMhKHJOXt1os27yYQcRgiLrE+4O5UbTGLc5i0+2+3aExWuvMld67A1627S5sfqsjkXOZVUViLCunuCLSKKt82e0x7kqVIhuskNZ93B89F4l8ieB/FoBJ/mmlPXKbtxhbmg9NXfMaXwWGvWZAmbaMzC+T6h58BRRUqY5bpr3fAC5V//zJJkvN6deySpW07T4zVMOiOCb6sx/oYg+3P7FXTWFwl7lpjm1sugzAOXXF38On5jJDLOybyPTI6JNpOzOrgtQZFGiWis91jhzCrje+G2SoYSVN7dquAjD3ZE4Mqyj+y5cloY55Dj+4Ul7qfmHEFwM843PLyTiF23EUtxO9LqqjicbQE0NHwCuNLZ6VoxD7or0T5yBNouxrblTcIacVAlJAxTJbhnmyUsS9qXtl7ozEdaLgBZ5VhMNTV9AtearoEqGBOBXHcjYmtSZFgdlH+30ht07CVBoWtPe68DaGh4TZDK7GxoQGgLoKHhdYEJvY/OR1G4gwCWwouKedRJL7Rerxaf/Bjx3sk9JO7vtbFyvOf9SAdUAbKLiaEAHC28TY+y1XU/4r1LiCqPze1zAD24pcjZk1ZPc+8G2tDwucFFAoyjZFczJy60IPIojhXI/BKZ4UvC5TcamqVMkYvmu9PLYe7+J+CB+wYHzrkuCoP5mWJPrp9IuC/aM57jw65h9P6z+4vTgmJgBCo2vJPMKWeIE26cunXM3svGkcM2BbJ3+3Hymi1ktao7gcll4Bg62rRUtDPzfnsE8Ifd1te4pEKiBDsqIOAGAcaFWeOVWifG/lhfRBuIiOxydg/smdd0z6L7Waz4aBjRHs7uZT0gI083sdkhMZwXfzCBrY1Jakz5KiEmgR+DwAsgrG9COgKBHQbYNIqI9wkTONum1qVZmBOuA4/TXM+8TjTHkRzG6glJM1BXZbg4kO9JjEo0hHshZOoSIEAFlb9++bqWpJKQ7t5zg0ENI0/pxRGvlcCR6Wi5CQy4OYhoDN5E49b2kjtyEWb87UisQwzXAtfzkh1SaI4IEa3O2irRJk4D3/T7aZmTac1XNBe8/L5TIqKRNjYScfsJzTq6zxpkvq7bViJQB+u7mLnnQZuk2eV0/b/d2wXU0PC68E+//DwvnGQAue6impGVO94H2sXmLsZzhzUWIkLOVgiAAdcTLSRZCqQkbXYOJMGAYFTIXoVksmfBTjMSz9kXD111ozLvF7XNHgHJrC2pU0cs3F3jtRCsbDyrHQpdfFJA3urVzKYpJBiGgPtOL7ExlcIhRPTbn24tABoaXhb+N/+T/9FmkESE1gC5pBRkjqBFAs9a9XHl67yEjPWtR/vmEblTxrEcu0N2CazZySqwBhyGsZvncQkRjZHMCNksO4ooAToz5QSoHCVA7cA5kZowmDccOAzKEQDkwYS4LsgATQ0GIt9++ocWAA0NLwv/9NM7IfeBLd72ltJEejo5g76f1FjvCYk8DkRF4lDoSHQeGGSmkcd5FjkCTnXC1KJFls8XCXRox4DFBEqkjz0A6wdqkXs6AYCOKWD63j7IcxJHB52CC4itIUo+BZSORPY0bTTOzw5Vbz/d3lmDOxAAEBRFxLwXTZG4/eZlvlFqCDKsxtpoRCZqPNlhYoWpRr8reo0RBC5wlQ56qnn1yP6TwF2++9m98CRFrAYzQS6tHhggSNKswRg+EJcFvWeToVxorWoPnmNKo8U67taNefj8vjAil0YtNu8WC1kFe/xEsr9B44VrPWRzXAs8R08o7Xcg19SXmHW6sXxdMpwRzb4XgRl1DvQ9EoH3YgcY9PeDD8Qc/dj9/qmJ4hS77UcRZ+DoySd9Q+yFTZNn77o/vpH3/i3Aa3lRytjKXrMcuvjrGNvNvyaG4Peif3xuD/YFzMg1Qr7meXFyg2SNeHU6kCTgbon5Vh75GnPQr73ksOZozYi6cvQnPwwP0okCjOp+kX4UAA9mBn7gMhyXcR6zbHwQPk1oZVx4U408xEi9sfQ6gIaGhoZPCu0Camh4acCkEKeGw13Q99d3Uz0JTSL9biXOPjX3wMCyXdklqIR9V0rqkC6nLptDwQUh4qhze7wL18OHN2BC3AmLroVdI+Gof2uENivgczYktDViHf3DV/lWwFErtABoaHhtsN+9uJJZWrMVdO9k3i2Z05LeNq+1opKr7hxv3I5n2mHYSFLRKZTZ6edHblk7Q8Idt7HC8qDWYgDpr6jK3WNrK9l+m+2Sp+p5ZVqPu0Gnmk4yaXkLgIaG1wVjI1FV9btBo9eYKbKVrOZCdf/F+eWPjMtuYB79Ca3f73P1Y7VS0ovdwmgRYEQuzBgXsdbRje7DY/6qGpwMG524+yAhHUd2toKnB4XMNM0OUgZtk1RuYSjSB8wtABoaXhgwQB88KrN0cTqUBpCA73DFMvSsRO5Y+G5qyNp0kCgF8hqRk2GY6pqrOcauBO8VYUDVZMqDzlQl5xkpvkiUsmGwJHJbq5p8R2W9jfAoQrEtyAH1KrUAaGh4XQj6ussVmaWJ0QDrcoxS4t3cjxc3leK5Lg35KkHGmpl25JzBKAG61EfDQK1TqovtmP0YyCif989xCChHGsBjXxlJYIKgGeMFHGaaYjihFs2xp9hdNsX2/L0L7S0a7PG5tLmZH7XrJCPO9VcXz5eMeM8RrxxKEqLb6qdGSDowhoswW0r4Sv2EPfF3hSyiI3LwjdnpmwIVaFFOi+65E/1+XaEd0z4dVTRblLEDw8jFs4R6MAv4+iu6Pc48+dBObBOOysLcl4KPgWFexM3ODRriu0PwdiCOw8Dg62QH4BbY+aBUvRi7b3jOnkR8dHvm5wso7McII2B4iOJoN1p47hCyR2d7WpTvcBo/bDXh0kPDkHDo+guaJEk4tGIP06PREt5c7uIH4PvLNkHB8CJL9ucdErrwkULHpvAuXHvBsJ8GHQMP5Bq4HhYfP4w9CLPEYJ2naL5mQBxq9y7VFrrOC61RkiArLSRxoBOtBiUByffFiX9WA6SOATQ0vDhUWqh9MpSfMoUKdFDFFcgSwCn7hbPmmyhCWnyrQXEcEU+MTh8sFaDTdSokecSFmEFGDz2g7u+sGWT0uWucdV3BUGpx0LUTUAcqUwnWAdlNfR5AQ0NDw6eFtgAaGl4XThpwvIw2wTqeF/JvGFTHYglrlbaCPg90Y+DWrpotk4gFvXhTYDBSi7lZwdbBC6+V07d3c73JaEOs/eigrmbNGM1IVLavsE9H5nT15ECHkoH94cZKoeLGi347dxPhkBdELQAaGj4PeKc2kdvF07FIt6fbKYCWwsUYjQu1sigq41D7S3bMO0eKk0NE21nEUTIZmdBrPldy94m5QGui1o4RESH6/XPWqB4Rc/BEHbw3bPHHp48+Pvn3sy+pmJt5HgD5qitwDNvIC9zFXrVcRKYIZQhjzTjXfkm8y2ydslCE/PPw8ki0ne35Q+vrelXYDgeQgCEjFxgICa/DtkX7Yay7I7pCInYiuT/2Hd+e9Z5ZXNmhixDmt7gv4fe2HhTGNuERhAchIWir47cFnJtMCfG0NUsMVUhr7b11dI7C6BgHlAa+JlPEN+HoL95vZvkiK3ZXfQ7YeAmntuzUKP8A4AD39d2ItJEK4nWhvPRAwqzsH8Te9kc/4wSRTQ6Hm0o/78QE78ze39LUxbAt9kfkHjMgWotjYZiosfp1rASIkohxsxAedbibM3A4EeZ2tSsetOtV0AbZ2zofaMtB8RxU1h2sZ9UonNwWTLApWrEszn5uMC+o5Bei5DB3+UlU0BZAQ8PrArsEOGTc12olA2P2e66Z2FCRxAQ7Hq+6IFwwLRJDnGqC5L7thqRi5etSlivI6aYbl9s1U31AyTg4WSFOcwd9y+XXwrD3GUzWtObaJkWeEp7FGoRE5EGfpBYADQ0vDo5xokaMdaKm7bkKE2m+CO6kD2hMtCTu43jwiROlmppXY9p9rq+XZsMR3xYZ2U+Pxlnl1DoVubXKTvIZJt1emjflKhFRDNS9MZLnDK0tS9wXa41dFAIDejuLhBYADQ2fAZy2m0ooXqdW+aa7Nq8541eDxINclRtgTJLJbZo2icGk0kI1dvSqCWJyYojVM9MmoVFXnoS7hQuL4C6WJ2fgIm4ZBiZrwcxCKwkezNVSJsS9qXlcnVoANDR8BlC3SmTjmUHtKB0Zz5labuF+9shSp+Bjr1gTMNbVddSUkYv6ntGRgiaLpykrzUhZzVINM+NC4oIsaIOCgWEsFK9JkHJDZiYPCLVnWD9uGMpIKc543rlUodcBNDQ0NHxSaAugoeF1QZz+qA4QczSoim26qPpYkn5b5OtEBZu9Rx4dLZjJ4zTlM+EBuesTM1aX5x3sgAuj5HzfJ5XOatFUOkWuuVCuwXGW8K+SZESIIUqhgBOkh3NdM9gBKgB2toBoLD/kb9KO8cM2NPoImf3+O+t4Ov0gPVsQvXOZONbPU/hiV8uAW7roLKxkUyaC4yo34aLZk6tgVoOgDevE7BJhTTR1QbC9KdBOwmMcD9vMy/bqeWsNh4cjT6+zQDlOxQweMZMIVy9jxM5KODwofVgC1dlmlm/h2EFmVxUGBb8ze0P8LTfIuJONy2p10xCmi+EqPjgkkJVN6MjJpW6uhrhrkx8Agi8z0niXSLgLzfwzK15lwa7Ll2Nz2pzMDlxd6zLhRjorh3j1UDMztpYkbju0eQO4CIiKTdu6nf3Y8LNR1pL8G8kz49huvnYTgx0LOqyuuSI0nQHksYlO+03sqkZb+Qhr0laB/dIIn6Afu+90uuPwLXMYD1RC+blmWwANDZ8FnFP7kLJfJK4gN0+C1sn+UmShrTGgZ0ntCnaZShZdl2wvs8/N/WZUOTniiTXj6EDWScPOY/EkFC3iuOaIVKRKIXbSvMwS9OznmcK2JzHQ5wE0NLwy2Mq1pG479RNaILfwWzATOUW19Exw0uI33lSTaO9LX3B66G2kOljVS4ZVvgrzUTIJr5aDyemX8qW9SJFMtAaySK3Yv9Gp9pANWKjcvZU3yXkWri2iQ4qUiYEWAA0NnwfQ7YOMKrszQO1FPuiWlaWmvJl15FOZKQWX1v5TMHpUe2d9t7eoebe0frn+OVPDRES3pU2fjqs8uXpGZNEE5GhxwX6ZVM1Xlu7pP9o+VBedaj5wTi1oAdDQ8LrAPJ3aO3C3PzH/7+wywe/RN1L6Q/yZt8Cyi44mgVAOWvxh4wPtCK0EYKliXPnUNI4FZEkdFKmakzUHwrFk4FwXYANIPjgLEtS5rQEHpZvXTiEvHm6utJAa2IB9ZbelnXtfuIgQ7h5EPHFCFnWr+neI2L18GLdezYXINvYjEv+E5vTqE2dikUmR2l+22Q7DUSJE26qEpY6MRDMV27BYiU6i4F4gz0BlRPpiEWJiPdJO9z7a3QrR3qMJH/6+3BMSO4W5xkSA8BZsqDyMV+Mgwq2gmHmNIldjMIHduyJKHIv+qvdvEGce3yB3QI4LtO4IcJ4Ke9g2WA3nYa29iZQfyN56xnFhUeIBhT0nI0JgVHFQm0Ospy77227R0HCGtgAaGl4bTKNcgHpl4XwB0TOrFN7u2AcK8l2gO7PVVgPqcNrdyU4AAnirOYoBFHmlUSiK1U1Aal72Yrq4pxPnDOCo6DuNy2ttetuR4SW716OShlU/ikr3zwvBFHULgIaG1wWpchlzLlBw5GuJ53SRBeYIMdSNfEkSRzv6/cGR4nickw6Xrqgdi0DKMf+Ho0gwGzm59nFn5oPM8LwZjUrdJJXM/ktTPZywEWDWlmhvo0gUZMsbIdvi5EpaADQ0vDDI9knNr6uMaDnKgBPl8wuzYeA2gj4o2RFJWolW1Ml0YwPUegsum9AxYZQgC79qgZU6jnHDVFxoZg5GL8wSbdngyVu4Fxy8Hg7WS8IQI8nnZxEQ6OX68r4In67xOd65xXud08SuEyYhuYGvXNQTyUz7RIHpoHX2lLpyk56guCXNy2k4rCTrtvYwK7ZN617BNvPiRB2m07s8d/dfG+svRUGcpjQfrQ5nO4TNobwKGQe1vdQV7TrJTGkmzu125UmqMDGht9nv/gs92PdACNstR/gmEpYEXmgZ7Jq68wW2vie7CmvQRZ8h23zui1BNbHWhDUfWGPZCRKPPRu1epDAGfQWWdsYwbDGimWisn0XG5bpQrqAvsgsLwQESgS77WewR6TES9pPI3FX2T8Ue8/7J6ReX+X7QKOf36xWnoe/N71CxJTf9eJD6abdK2EZT4TIKW/A7z8aNMq29us4yA+WbpGjhVsBRilxaJ7jhs8OWqc3M1ZHsV+mdRAfObIajZQDSqC2AhobPAMoHJkcWInWaF0mL2AIwOD0CsPkOUK6cBEqh42LNte+0YciS7wjir9LoZKB4KXnkiVsD1gM1DBPo1KXE7l0r+CPip+VkLqieUWPM3WXVSGe2BUBDw8sCB1O+WNhll6tgMTHzhBQc0FlZoFHeePrQM4t/wLwzGXhXjKTT/gxRSGRh9ti+ASIklqM14yh0VoRJxCxYM04fgFnWPaUANbtvAJdyJY/Jl6xmLQAaGl4YnGfDb0Q1S8A1tNzf5ncoVHXaFXPSEDpSKNRmGRT5GoWSTXLEej3E5Lq5apBjAN5oQPZ4XAiWxGhWrnV0cNABni0MSFF4XNKcKCgIOMB5Nns76IaGhoZPCm0BNDS8LPz8pqqpCFl4VeAjuqrR7eNdQBDsneo8RCq3G2OlUYo5TPLRKCsrZszGQrQ2cx6wjQQuhRW4zsTjMTJD1WmMUuBeEd5OgC68feKzhMR/uFRRHB0eCu88OZha+gYo56dfky1v+C1WJoqjyP6tbAwU1oUQEd1+agHQ0PC68KevN3X+3Cg4yifHBP7hfDKCXAz53XQN3ayOuxZsqNuaJXYJzHFxtBFLZna8kmc8ckZxtSbvtksOERPRGKIJOax3SJagimPZMs4vSQNC0iimZBuYTbvGZQgFWumk2bVKBBidikDcHBRPbkCSBLo+igR6XPI2UAAYDk2otNy9lD64uhcWppvPZtTN99emC24P+XXXSMgowwVSsRsJ8cp9KxyAs79QkrYYcLmcK3FOhK3UkwBbW4y1+b5TT1zfS6nZ0bSdKyzMN6cO1AEcgdvixg8/k3WSgUQke9uB1VT9h3PGoouWFed+RcN+Fju37XYjlwniqoQJECkKZ19pwwxtAoWzjohlOa4p3eTqqQdb0WPDFafOv0oYt7R3h+39Fb1e84j7KiDdM3mYwkivInL7Rz+pYih3uPUBwutpNAZCHCdMNMr/6f/x386J807HdyVwDWxMZAACZDeDbNObJSoKjViAQYuVrwUKU1SgYBBg/YBhrLtjt9XFXtZqf0pCuNAKiAFgprvJEjAwZA3twqSNxaxhXHbXjXp1inQOq6MzbqOjQcMsrbWPE9guKLDRQHDWjLPhrI4KQiv/7W+5LYCGhpeFP39RH5DjwhZ8zCxjjJRsg5fI7o2r2I3F3JHvCLJL626pt8DuFxkDOVoWAKb1qzAwHVzZN4vrGrj5tFeWs8kIFxE1CKbu/QY0TDnHgR6VHLc5biXcbwPnRMisaBHd5f4Ce0KW6RI4PAxwlccniBOrJUBwfBoL7rd2ATU0vC78dNP9eC41RFXGiYjkBgqvU12trSS+tnmi4NGMwAVVL0YkwKOR3d+AvQ4k1T4HLMAdyPVuC/9k+ku63FJ3NyBGvU9uaE5m1DSrFTI/bRqDLWIdOSFHZOo8WV/iLTDmPXWOk69gg2sIHdXXueTn9xYADQ2vC9Ejhcq9cRjPGojil6Q55i7kXKiJj9OzMeo2GfmiL1MW+0HvnzK6sDMChwqqHQMxI2jdFt/G3nNerCfN/JKn/eYE/uIi6pAGur7AoopVDk8NmT5mr7ql1MepW9ACoKHhdWEfPptZUVEXqmTBkLl2yfsXIHNC3RXapPAdx5aHsrovDxgiwv63UNAonext49I2R8fTMVMBJY6cKdfYEsohq7I3WUKRPGAUmYAYZgti4BHrn3BbmGSG6Rh6mJ37TmadfToZ2oDbtbWJrt6eNaMo2DjRKulzBzYZhr1j7rtcrNakXYRESPSCtNy9IBZptB73s3eb5YRBucDc3ihI9lygfU0a97vt3jdBJ+Uqv/eeyDlUP66Icg/RaUsFwLtO+2WQ4l2Dd+S0Fj1Q/RDsFPjAX/C5MNxmwcnB8wD280n9MzSxMbAts4mKmj1qST9cmS+zPyWgeo2RV/AiMtTDlxvfy3nFK3TP+0PmjxBeVBwRIbaGhmtoC6Ch4WVBpJBQJ8lw1PRTMWLwW7epeENtGtBXLpTYX7F5ciJBXR2RSn8e2dYJUHbXhszOXyo2ioYGOCBnXqTpqnR0GxcBYWFmeWYBZd/XyRYCUk8jvIAWAA0NLwvMhIuTbmBlnbbnnCCJrRQ8LrEvz98IrbrrU4KxpGL9dVt0K2AdrkZ03fW2nl0g4MTXE1/2K+YOMoGIduZPksvRGzCXDkjqqZIZ4dpH4B9AC4CGhpcFqdj6vrVLGNkHqPRu4xyKbcvNQyeqgRrugY2eTBNviJy4WG4RbIhJgHXi/NUPQQy/27r8aB5BR/DXUzZdfDgziGH9lWJ2rqhm+JNF+0NzoAVAQ8PrwvaJnBwIFzGMs2XgqodWM4gxwNFRO10uvBYnKrO5YovCtN6OFImrRI8kijglfuIZa9/sS/oL2SWhwNs0Fosb6egDse2ghfSpDVi3sSNX1iTl/AhWeiBBWwA0NLwuWOA7M+6TbohhaKjqMziTUbCRu8KD1yL3nzzvVfCidgplRxCnrzAKJxQcBThmIHlA8yJnCVxA/vCfDHEUjBO7i4CJ6x4Ss0SI9oKDQIu2TjbcGdZoWwA0NLwusOPYJwfywPJnvSTx9K0KMkPMkiN6Zs5c7DqvKVoDV8Qsx5cTR7gpBeeGSR75niJtnMa+rAoQA0UMI5Ivm9o0Z7miL7607Ta80/YTyraf7EA/JhbeGXDgblr/w4Yl4s7E4ZVjt3sXsNAcsKK3qhtrTfeyzXTfISPCB4B25t2qYCrGnFlhzJ1klp2oulGx7dsiJMy6xZHsSWF9nELwLDUfdJEQfombQjfG83ih0T4oUTNPcVK2tlPh8cs7QTESeMRbu7CcYPsbCKxe143TEb3vCoVMDY+RgU7f78a7By0RB2dvwLLg1aWrmRgB9kssiRbVJgPNFa+JP5TiXbejK31OCKKdPy3sD8mDh7JeAbETIN0b6DBnfz0qsPhqZsNAvdLI720IcYTY/BRDyJBYF7sVxQ8akHtDCAYqFOmEaUeVf+w1VoyF9bhSiY+ol++YKxcQBt5BtMkECwaPSFuEw8QyVH9K93fQ5wE0NDQ0fFJoF1BDw8vCDipy0u63pbchKM/7+vntIuL3wtwFbReU2Qfn0Uu+jBp52O+hsgWhgZsI0UpMtM8zgGoDNfRysE5/95N8oHM59JNduY1NDAVAc7eBxyx5eMjxJbQAaGh4WWC/L7pLDEkMjbWJ1UHIJcbKEqcC1qm+JmOsuDMd9n0UA4CcD3w4+Kyq/X8QU+LynvK8x0Hez0Lw+JrVCvw22BH05Hb+KUatAgAE9nC7U8ThHo/nfA5aADQ0vDK4IFfiYqvc7dUM5ViSvODZLb6/SpIKqOWO3HRr4dX63utevW99VRlJOrhIQAo5+BhB6cGvr9Ebf6YQrpNVpHUKL34++EXL8U+CZAdUT2p9e7c2Qiv0J/tAmEmBj+it8KBs+llI1vY6GmmakTPB00rE4k1V5CtSjwPw87QwrIe+6LNu9oAloXIjgSHobAqQNjEw2xDKyd4Gm2oJkywXmhMLfgvTTVepsKF4DP6XpDMsYSZLVPAKMVaLaodYpHCGf0VPLiEh4kI7C91lc7asw7FwvXoUD1eJR8cUD2D/nOe0C8zpegKyQmj25P2ccZhFffVjeQR8tXBuw+u6f0hWarf1PSF4qIv0+SrqzNBNXTibS4mh3o8zX7i/+7JgKhevuG97ZCjwu1rjXmQWi4pPvRWEHejD6K6KDTgoxj/lQqJUkV7sqlgInShEKwcX1OWRou5fzbvhZlYzAmT1ajFSw1Oc/PI5BmgLoKHhlWHxrMzLCu4GOnLW9ydPPDHvulzK0gJgyZVj/c4GyX0aYz2YIydCi+XO7JocxplVVWjtNP3CZjBxRYuIuIjLtDBYSXdWfQ5ERrFyIealBUBDw+cC9Bp7dXuaICAGsD5ZVbWZE2Zy+YjowFh6+vXeaU7HD4gJubZ3clg3m4l7Rg0WnkA2JfBlO0Vy4lnKdZKISFy2D2FwefXvURD64rymzJldE507nqzGerSwPLQAaGh4WbDdQFGhnPyEidyZu1k3PjKXY14QB93aRMfgeUSXdeHz5ZFdWhfusGJolbNrfC1GMebkBLBR9KSzupWzN78I/2JXjlpPaS3GsBw68Eid/GA7dbIA7BpnJc1QtbUq39TrqKUo3PdSoH0GgL4ukkYm4H5bn6uFqIdZXc3wMJzhFJSD7D4W/0087drKjqQX7X638mIcV43ByyhWU3RgMs08dIUzEYObPAR3GMbDeioBk2ZD+Mk7DNmKtI0YVjOO9xsAP2bTtBRnWuGItXdXWUET664g70wsG7WOByEI1VGMQrW0ivtFZGiVVcJ9HINFN8KgYok7qB1+6YLTfsIxq3DsCEe9fyLKcRztvN82ntv9l3siGCkc2Bx0Jk88qoYGorYAGhpeGEIa6Cp0X2p9BDXKHBH1vgdQ0nel6GIJ+vJBkXZGSNRjfawe1a2puZR7R8RbRdhga0jodp+V53HtJOSPej9ZH3nQHiTU9KU6J1l/T+q9HFARPpdSi7K263YLgIaG1wW1g5aVgXbNsCLcuOaCgUVY4sHZfdWGaFgivuAC72yQqDlmvKOo2JWeGcbGGicB5cSlFz9IRKSkLkc+vuMWWudohSeEkZwT66+Kl+BoAdDQ8NKQtc3MWyRWzAzvmgNGQG7lCIi+/mOflZJMREVIOuHY/NJ5Dacin6kkFYHuiGCzOUbBrBNRrsRqYrQDO9WOcTYUB85aMt88orrOCcon2AKgoeF1gX0M88y0YkniKpnlliy6wjoZa9aIi+YHqNt5bmh0By06HwUjkSET8U60ZyLnGcNdNB6JQbR1svNKUjm20W4WAcP6ywlbz/J8HcJsVBHfAqCh4dPAgYnwpTBwO8/gH9Rc9bAAl3OB0QOILVT6cuTRocN0HUuStn7FI3F1nu1RgRkIh1Ns3C5GMLhzR4bFz/ohbrHRrZTcQWHOZ2PA+5QsWM+oqNsCoKHhlSFvH7agSso6oIDPzBih3PIDD7LkzMItFFFlO5ruXIV/cwk5Fbtg5sl5IiqEMMX+NJRUpDw6M/wcd72eTQ5B2j1wnEFX49oocQMtqgYBIPBebK8X7GVArLlnTLpWfW56wFzh0Ig/w4p3EdlppY4qtNzwbmVestDtRmOsZx4XfsBT4TBiJ+e1W7EEPtMHlpxflHNM4Aw6g8PO67G5iZt/n7Pe7NXVd0s9fnDf41q7GLifOiNRgApLCTW3PZtiehJ2EZ4F3ImPjPXC5jJlSTLRWYUqPcXiRrO3Uljo8Bazvbi8hlRQD+mY4UWHkezHcGKjAqP21ALZ4WQIgtfDCPNPZfZdaW4wxewzybHnrG8XaMIlaPRFOdZfzAU7z9qqHw42ORDm+8cndTryJXJM/fUVlY+T4dnEWWOOvWa0h4dVsvxcJi5Qj0vz8M0ASfMgBADiv6zZ5wE0NDQ0fFJoF1BDwysD45+T44GsBN0m6D6StH2OswZuu5nQtk1Ba13+7sJKMY3fOXOSUYNuompRq+nfsK41mmziFhlU8IRnzJk5Eu8oNWjJcIl4VChcmXdS1RRdW3iIpqr5zvylxUBDw+vBG381X0PhpzFAVuyc+NdujuQbYi08JNRodyhdVmMQFYKnz9cEZ/K1ymK1gpuDut11kA/jCeuUYwX+oEcDlKmeUddEpy7DHSOMmQcy/YM0ck6hB5MT2wZo1t/Q8NLA+wP10Uf7M69Wyct8KRKk0swLii55Vg7tZqHjeXkUHvXBMum0lrEWJewEpoIU6ywVXBsRqv+f6k4yojWzN+JfG+xPaSq4kpn2XRlPHAEMMrgIPDC93283BjGwbsIKchiz8I335jNMPIjvNHcTYiYR3UCf5mHrstdWwOHsTCQznHr7Om5DiIXd7AvFr5uOfTq3EJF8kdt81uzrsm9CQiJ0m/spLZOWv8pNZDDfZEcSRdjF5xIlSpuIfJUb7B0oMEk7aMeuDa1+bnQTka/yVjyl9F2ILb63JD9/pZuELXRwrpBm/U3uk8hF6Cu9rXnML09+V4XoNl8FZqIh/EVuN3LPFMndMyGiT0Gf+03467gNGe7QiAwrqs8k3swX+bpO5gvWNG9KYXv9G1DGzPRFGCZtPov02qwJN2zaM38dvLdasjaBO9hsh+A5f12BvTlfN99+ws1QrAe1CPhKJIOJb1ufhox6PGJenwYcKv9OxLw24CwcQbOgUMbhT94fFOrr+/K8CuoH7XsyArIhsm5YHU4jcd/Zq8cMXibZmPaczPfZ+2xghEyAw1Eeh5WXjKF9k4WjN0rCGjVEZZXXrFz4dB6D++G1BdDQ8LLw11+/OAFARMo+9JNoM5pZMoztKRe2bHR1qlj5wql75Qxgnej3HyOmtOvOzEKWbyO7fLgUnLG7cAmaq+0AnKsOLkHw4x3WnSzKZgdYjRdmaEjQu4Asgf1Uh6uD5TZde57KsQgJjdipG9qaTQp319TNtiAvVVJEPAvNXd6PulhDQ8PfM4jwf/QPv1X+EHkNbn/jUjmR360C43eYGimwTGmyniEDA46r4TBmSsAiCx5NsWQMJNV43CxXAQP4leuhLwhZ/2KRMCcLlYxMw74Vpm6gpHSMPgoqN1K6wYhuJU4TZyh0XQDHpKM+Uhj4DZ8ytD0IgPc3bgugoeFl4X/9n/0v5cB5T5/D8S9QxkHd1pqR3w0ZyqDvtL0pYxDR/X4nz5VW+aw5TLOeaGfJfXVhNU3SeDKQmK/j67hHATAJwGoDurvfx6IZ5ASthtA7oHKUwCSsEd1HuKvXNjokQOdEThQWdoyf+VgHTC4Ve/iUBxH95je/6XUADQ0NDZ8U2gJoaHhZ+M0vPx/vJcvAqdIYIVhecqeoHurLfaneUUVVCyBq7lqONWfbe1mS1eGvd9SsZ523gYYIatP3EYiZRsa4jzHe4qBIdpMxzIFzf3szCuddshG9Dyai8TY25Uv1voMh8jZpvlFQ8+8ybgzDnNcaprbPWyLVWi1Xz82Qz6wblxR7YyJ6u91aADQ0vCyMMZBx7ELyDGXC5E0TkGtjSebdoX6u5gVAjSTXP93FTk91xhhYDZ0/+XM3f0YsZW9Spvn0iQ6iPA+7TilWny553tG3enn/ib6+CxEzRolcotgULzJzBy31j4kGyU/0helmSU+YdEi08+kGZA2uCsy/3L4OPU7Ckq2AjkCEBatnLiZ9rTOKZWWu3YjoRjJgwwtNYP3ldhcaxGMljE062VPNRCLCembGTshk+Xr7OsJRfcRCmuPob8gmmW43HoPG19tXthQ+WnNbxeJnlzvpjYnv/HXwuBWbe8E07jRIcZt9CNGNvqwcyLl/k+wHkxFqViTPx0WD5Ldvd830hdRezbubCYzxoE1NWfzldpcx9LhD/574hFudekv3GyK/eRv6tuxESUe49RWnhL/yuN/kZiMd7v58qtZaNkImFrl/uQ1yN4RS7Y3afWUWEbmPjBx+E5Z9LDAeJmHmwSI3WpsDy/yZiqLBdppLfbNefmGfWejZ/eqFQXPMU7dTJCsM2HYlzzDnLk6wm5TXJwKwbW61a95uN/LSItNfdnGiPw/2elzY6jSK6x6f7OKj9ZEkahdQQ8PnAdyML1sAk2miMCh5a7gbuNs1s8vNsbsToz+1fV5gXFSwXSAvGXTZpKQzT9o3sPjvh5NkDcS0AGho+CxwzcqzHXDifT+Er520/ufbfk+FU82TuXMN16PA6f0GofUMPC87w90WAA0Nrw9Z988lCCeF999Ymc2S6Ul2+YzpUI4LCy/MhWdoCHWmgfX169eHrT4E3/ZE9gy0AGhoeH24dqM/9Ixf4Lmu/0PgWmu+ds6UlcuGz6jM1/bB806kD8G1xXYS7U8S/P4/+Ov//Sd+t+1LhPaGKGJbE61eZ0xUSHYfv779umna27esUK7f9WSj2hdffvvXFbYaELeEJkBpLpE/3f8FB+erLxJ4U+M/fx1/2uOCHWLCNJOFhO2vkMgX/gNhqHyFcIWJRQaxhlllaLCXhYTnXkky/vL2J9JQaNrPQyoaaD1W5v+f/G6M4V70QyDVk7dm6S/85wI9x24jBiXtr+9f55SKBiwj+YSB5T1pfGP6Z/nduAvfDNueN+wCCd4n2oqM39/+9VuVHfrzT7+utnZmzA7iM1Agi/49fmYR+ctvf11RaT/a9c4Tvjw215P+IfKHP/915RH4cUIg3N3Yhcz0+19+Hf79o3i9i0QzFxbtP/0StpxqaIjQFkBDw+vDM07qC+34om0J3xYEfgbPtbGysaG/5ZRu9LDf60nIiUbf7zIq4ZSL9SFNv8RDLQAaGj4DXHshrjndKffxIiD8PR6hTEyOAVznre67H3Vklb2fpu7bJvNE0odm7BkP2JMivAVAQ0ODwUlHvk4h/YHw/eEEZs7+8R/S+8N4Q6j5fKD4hxhYz1tv+ym//yRffoJ1MRzc6elaK2wH+dd9XPry/c6D7Xn7OJn0pOPVavoomW98H0w3IrlpYGDHD7Qu+PLt1sTyK301fyfPAwhm3CI4xXU/7X2aPTPx13V/gy2YgsVoeNDdrsxy46+zu+kFZmLRIxCWI3ZO001dx3P8IsQ3kUG3r8ywJf12mPPyAKNbelWaC8mYf+GvgwfrcqpVgX1lsVYeRPhrrCngy58+bQzXIDDx7b7b7lfFAkU7FjJDakLT4y9EzPzL7T5ozOlfg9tP1h/uTnCXF43yCw9JK5vc9B2Ame+3+36LVt0bLjn0LvXgk2emt6EvmsyxwACg7Xol7LkwyRD69U3UiW+dabQBV4Fhz/P3ST+/yRj75yNkc78PnWDrekYC1nvOP9XTFSeHzgzio8mFoeGPigx/80KqzAqfFAknzf2ZePKHKCz7+hA8MzkXBkdbAA0NnwWuV/Zet7p21m/MyCiv181+VEicFNsnefq1r/wCyXUvz3j5cYXdDzGbnl+N8dAH1QKgoaHB4NpJPeEbLINTRye58p1e8hOqEx/fdU6i63kd/2Qr/EDIZhaWf2iFR28H3dDQ0PBJoS2AhobPAs+rot+8Q8O16XBN2DNJO98QnHgmZ4aZvyc/5/kx/hC4Dsjn684Camj4fHDJlJ5Pkbz2m4eSb/MO/Y3SJZ8hYzPQ7Fd5JmTybUHgH+IgylLnxPov/GwtABoaXh+eT+I8pd5/G+/74fDN4YcPrQm4npxTWPjCvAitvjNX6vvn3ILAg98GvxGRwKb0iJ8hX24Nau4JwSRCd7rDynjbLoF2JiGhJmJL55npK91EaEBy3qIBt0XXI26YiQZsjS9y5zdZ2b4r2VDW0n1ivonm/c3kTL3m2cXXeSizpuPtjjadKbdw717PxPKVbpqGt+eLae+CML/KIlbmxaSLWOj2RW4cdlEID1T8JGgFJv5Kt7EyDN2tCDVa+UpvOte+Mo53kE9ENfgisvZnEBuuPTudZhmkOaHrNgt/ldsQYkBtiaREojseMJIjlgb6VVjoFLK60nXn4x4iN9qHXkzqNVuXmNd5GP6MBKG5RcnXwUJzV4q5BwazYWHbjF/my7cKab6HQ74Oe9p7sjPlUg3j66AhZaSOxeZqv13uB3eD1NpngrrPs/4LuF4Ne6p/nSFzYqAXRD6/AuDJMWaEp909J1xLx29m/Sd43kMVarYF0NDwWeAZbwYyi+w6uObvwZHyo+CE82Hu5jf3lXvJU3E6cya3fT6b6G8E2a81gXs30IaGzwwnVfRadf2GLj5KQL6LjPjabvgeJvv8orNTLuY15m/r92HlZ4IlJcEtABoaPgt8KEOcPMt4xnoou7tOvX/GvXO9F1DpVf/OiMVp4M84fL5Ndl7c/bYo+nWYYV/3OoCGhoaGTwrvO5THNLf5X5KBNbopGohbgTEXfyTakSiN5rkIV5D9GjrG8hUGZP3ceFJQTPb28OxuiYUTLSTG7pj7rYaI9WTxR0C48Ufs+Cka2dQ5gos5jaTil1fUE3oU3xdeVKP+kTDJw62NsOs67jvvwGEPOl0COBgnA9uIzhNb+Q7ELkLwfdLCHb8UgofybZa9GCKesXnS107wTdJ6GhmmHSS2Ue4QuHtOSuDcG0onzUh3j/T0eP1LJ/zoPWD7FPwqsQqgPaioz8ckT/mRiGdXeHL3iIeEPQ8XQ8iUXxgoJ1Ppuvyj/rQn4W8RSGgXUENDw1Pw0Z1nHlbLda6z/q8J+JDfHJt8Q7z6GWFw3fYHZv6c4PklFNLrABoaPg98lPtcK7ZlzWvX8/eQ93ySaLiFza8tGPq4VPiBZtMz8ExHz+w6t2ejBUBDQ4PBM9rx88vKLuAbuBWdrYHgdHo+Pf9DVsv1WJ6Jk/8Qd1Du4hQbn3CRztsCoKGh4WNwwcVyyub3dHGdHYTbLIe+no92hLjFj6L/+QVx/2bLwUpoAdDQ8BnhmXjmvzEx1+vOrj8Rdsm1zAgcv1wnVeL/KPwbTOa3xZ/bBdTQ8CnghzigSzx/I4Fx8mk82d1J07/4/B4XzfdP7A9HniVZ2fYmO4mR1pYiBQX7j2aZBWtm5vnhvjgCuZE7MU2oaEtkyXazbU7K5J10yJhHKFtuyzyKbx7NSHrBKxcP3Hza0wl2v+Ly7GDXILEJIdtsCDqYOZFK2CoW2smjmk9ZgEDvOYnvQVrg04DTyx4tV72oiRzurocue4MnR2O+mKjyoISq2Q4Efw+sNNw5rzMvl/cDmmUikNMqzCst2l5edg9NCKaQND1ULzQZ2fp9xK1SBbaEavy5lLOThuvpbGi4gLYAGho+IzyTT5KdCT8kknkiplzTS89tSRTufoNd8ryR9EyGJVJ+8v5/M5wmKj+v62BGB4EbGj4F/Cj/xskP851poNd86pklY98MIQvoGR9Xzl86iYQcpr7m1OW4nknAvZaRFwspWgA0NLws3G439Tva59EPPvnU9kMSDb4RkS6dFiIasybfiGiQ7Prz80a8bs0mE+FtOmfZU0GDmHTP6rF8o3bt6hMT0X2W3xIeISK6g7+M1f124zkKtgqwhH+huk/WKVo4e7chbwGB+Em56l3957RdeYwTO4joNtvemIju97ExzMkkmF5wkspGONa+5HO2xx45ltyg/mo1iYf6CzF0d6O2ABoaXhd+/Xr3jJ5IuVKlUAsph8KSMVA8QPndSkwdFiGiO+i8EioQyZgldyK6D2OUqilLaIXl93ske+q+C899yaQllib3mw3XySJTlggR3b8OmxO6DbkT0bgTBYE0m4NAWiIH6mj5rM82LTtsqMQMEHhzK7a5nfTk40I844l3YOXrucyrpcsPIho0iEjmaS5k06gCe9Yhu0tEKgZm2zvf3jf1E5hBCO1CDXuJ2/bGbu8I7Q50WkCY7OCN2Fagx6rfHXN23e3dY5hlCMPZLbAJ4J44KzJPXOmSk4v4Zyjh1aOGnmMVEUZyhZhXdJqJpe4exstVvycKPwTw65073dTxSfZ9rfN/1lk6i0B9duuJV3Fg0ZnS3xgE8Hc98W0ctUDM94BsBUhmZBf3vFoJBntCLBqsbSB3QbfoMdJ5n4Kjr6q+j1b+cFcfHH96yDivAlWkrA9fmYj+L//P/3LxSjIBUFgDtJ/QtgCAoRCF+gMYodZZ+L0xYWgLqQOMHvXlAbJq8uN5976wDf1QQUJRtIgMQdoExBgNIhr3OF6RxZpl3IhmxoY2H7w/dUQ3oBM6Goh2hHJnQsmAmu5xoBYvYEzQbdA2g9gGO/AJzpOxZsmboV3I8TkSEdFvfvqpLYCGhpeFP//6dV4ogzYNgIwFbUZJ+5NowHXmX4KNSTm+KA8k4LkqAaYWj90hKuTRhjBLHcfoCa6RG6rQXo5xcI+rTWAjXSSOlT/oe8Fq6HoyEaXyw6Swavez/s3oBH+OSnXZbbWOThko0IRmBDZkYP1kE7uu1zlyMFHrhgn1++2tBUBDw8vCT2+637uzAyb7gHKxbeGRAylDsRDi8uSg9Ta55NvidOrA2e2UUY4bEd1uk/Wb4xy5sEYOiIjkBnUG3p3efSN10j4ZKyODJHWY3IwkxhLk77clfhjYPd3mkBEhTNGMBAD98+8N/PvI9Bk+B3BtvCu7I0K0Y1fbj3Mj9+4d2YQNNzzrjlZ3c3yjzwNoaGho+KRgAoBhv/otutFdvWXJFieMdsoKssOiLdE6INdEVszAOU7V1SrgMp7VbF946Bf8t2j+iAW6mUl91gWscjCeTOBCmJ90XLqiB0CXEQkcRU/T14/0uGunK2RA37ldhvrn5k+CwOOwrtluOd880OYMZm0kyyMe3dCsjmr0oJ8GEbz8eYjfGflg4nWIhb1MIryeGEEZUDDTHUm9/NPc1iPgjcwcRBEXOYgVRKcES6/Gd3qDD/c51mGxh4CPmDVVBq+r3lkbCZHoGro5oxMlxIFIyKHCN43FjpJIXRT1Z4EsJiC8e4Bfrdi/hWz1HuacxBhI6oP1DRR9eJue4dxH1uIwXY7C/Cs7DPohCPGJk13A6mI9q0jxprNdQA0NLwusAkszFImI1O1j1fB4IPVFJNcBRrp3O/3cPuvlaUEhhz1n7SKoFEE0glOIkeCME7FtZdYVxu7wbqn5uFrPq16pu3k54GYW/7vRqZ9KL3uGmINOp+NpAdDQ8LogjqVsRXl/e7RNRWKuGEYmY9jb8lX7BgObaK9EYj7KZCWOQDGjZBK8QqnnYC2h8jKN0vicAEv0OC/IgbbLYgeHu8/MC4pQk74Cd1VeOopbADQ0vCxs5suONUQPkiS+7O9DONFp6cAaaVc5cETwFGNOaqWc2qcrx6BrvhtrXtZ4yIwfVAAJemL92ex4rueqM7DhnIWSniOw/mwXOXNOV3S3AGho+ASQGBWD62Zl2Ex92TFwYCaFIn1wL9BaT7tcN+AOEsy0OSrVUH7JwU+qfaQLJQfWAr2YmATd/ZfuoGtN3XHeIwYryRIkNUFGj8LgCdixLMUzcNRtATQ0vDAwMy7mOrMNZFQX8fqI3upsJitE6u/W2xhggB5OuD/o53Ye9iiI4B4MKwsDEi/5nnDgFGQWYZKHtNTDPXXkTSKgGK+d2JHQytkKvRlcQ8NLg/OZuyIE1KWPynViLkU/mlfoVvnGdsusAFHh7mT2nGyC03Aim85+mGwHrJach5azHL0XhciLS4YVA+gqK0LpGN120jlMeRzKEQrKkhhIdZjoFhKELJdSoKa3THb9jY/huz1vzRTD+jt9bK65100VaHbLW0/YvYsJ54VnE7PXNeqUu40gVnbmvAPH/dimE4rODRDfVny2FCJLbmBuGvZc2132Uyyh0W53YQ16Ar8ZLK125z2aipCea2ooe852XR2o5ZttJCEDLbwuaY7XDDBUe14ZvQIxxU6293NvkUiL+tyRno+BjvL9/s7MUvz1AOcEuztqYFj5MWCe86OmT6JsaDBoC6Ch4bXBXOBJ9SCfJggSMWvJYnjQPhCoI9E5nUILqEhnX//aJJNiK1SUoQQJiM4luFWp1tYEpbt9R08WQrYdJJZni8c5qbBOQQ7lRCm8LcWdSzi4ibSzDgI3NLwuyIkf77+FVz4xMNc4uRdWR8GMnTaQdZHZIlJRkZfgdDv7eXwL/ILSzTHzgBapzWx4VE12RewVRIi3e41ocVW9+M0rI0J4ZXednqOjOqWHarOOATQ0vC5sZ6pfx2064PRo6Q5lJ6ZP+McgM0g2FxkRjeXmn8bB9LxJaFeEXjEIgTp4YsTOOz98lcSFHy4y8ELQzJ2s419Lqmfclhe0nG+dBd2jm0doC6Ch4aXBwmr6lYLbxS4zIDf0RYDM8UrPiKeGa01cTCUz8WyBuNiZH1YIPVaUw152XqIkF1QYGSX+/+PghG9ZA24R9bFJLFGnnM1ddtOVHa+9gBj2+l/NvKmHe+nb0xUit336IoX1AIBVLv6BuZAbbuevD0bW9Yo/s2uyB8drN/p1zSK7lr4ZQtv8KYFhqJuAXX3OiF9Lue/ZmG1qIL7L6/DxXcHOiN9x0utgnujsMNY87i3/xKbzRqsRJtjd3O9fWCnECC4cU74A4/xW6Hsqf5ab4uL6mUF8HPQXITRD37Z3k6z3lfQ3sOrHox7mY4jH8tk7WVj/NF9LP20YJte2kdiA4jQn6Ve9f0XlbDLFflmIh8iQtaNTps01Ffunu9Mw5X2EoB/9+fJ+jX2WQAoZVGOUjWfnjOx/uQ751zQO2iM3/qHcN/FdIY861SnQ4g5FvNnkpnON40RX1UOufjmwuRMaEl/cFSGR0S6ghobXBYn8JHoK3HmzKvXJ9Dlo6/biATR+o57jJkLBRUPLBHDr0Zx+kcdidWbC5YASR+/WOLP+y/GG6cjXvceZC0miE4EhR3qiqXGpkl9DRrUQptTPbBOUmFoANDS8LDCY6PvjCKe7mfklvmaq9Dw/i61hsJNpn/qLLCt/QpcDuwNRAZ085qaKKoox9SE8wMNu9CY1lwQdB/4LX1zJQTCY9yGRHoMcF5BD9IeKzNznATQ0NDR8UmgLoKHhhYGdXp21bhfgnTcrFzQVmmqRhm/ODwm3Bqi+TnO34gP5AcOlDmwa9/PuFdCvqzs6Hu+9siu3WFdSzdToqahHQUbRffGkmGjtzJoNC0kGCrUAaGh4YRAW9FR4H8UKfD6PDNrad+TOsp3R4Cla1Vb/6EQPWB9kvZ9yck5ucbuJnqhDZQ6OLtrttPc4f8VGETki/zTTJxWZEEwJ9xMBeWGXl0apphvVqtMCoKHhlYEvOWRi1xvQYkjlJzy7EgR4J+jh6RETeskde4W7WMe1OtkqgQ1m+ZG5tuYyFdvzHOCJWXE3C5Xcfdt1Y/VTrtQxIOzuQsA/k8H8PlOx8Pmxopl5ccHOwJDOesgMYmvnkuKeMGgt+o19JHxFSja9XH2quJOZtjhRCM0MPy2YeXtsdbRL2YKbwwUpNTOBQsyc9NGiiVP2BIXNpLYVptmf7G/tmQnvhYg8l9AZ4ckdYoVEMxO3AshOO3I7NxnmvXHQnptNs33qK7EQzBYaiJy5b2adK34rwRBYnoMP2fU4ZFmvAhTpc8FfmQ6c9yvku2NaBxOSvd0WDFRuZ+/KGkTysZTjE5tIxsKg0/FxFuCHgQ9nJ+Hr0wsVjjNasMNqGIkPOveSlimF5H9lEfdpr/8cUD0qxZ62Y8EyW/zt8pUL7cEl5ZonwyY1OnNqFGzKqLUsInBeKUSFth1mdgFeX3/dbAugoeG1YeshBcs+WwdSXrqCmfsoRLB/j+PPyKZnhccCxVGWxUkG1D3OexEVJYGZemfO5LbGSYtspQOgxL32TxHW3OQ99YyuMDoacR3KHAi8Cr0ddEPDK8NmdNlmG1DFq+oCLcGGcRnlib0t5lKyrsmD6mMJCu0eSI9WVejfVTyz/jmWC3Mh9ai2naVeOnyZuac6OMuu+kMyLuFaCq67GBU41l8UtwBoaHh92Ds1kLF+0MxR4V13l4ZIUGk3wg07FRkTpaXSKDJWLaGS/SW2zvAnL2aKG4w/AcocQf+Fu6xOYFwTh904CwYodH6VfAP8XgJT57xN6GzzyPwxkAnvwZXnZVVyAa3rZRncyLuv3Y4LUGK7ve9oiYAg3B7RtJ5CPfOrAkxp4Ru1AEB45KzrqmG/ij1WeOu0c9giQtzAPdhadFgyuecK9ngw16vQNm3d65p8cNCFBVK8iqOvWvYHh6/li/5xJWIGAERssTqxzstybjLOky3W1ycd1UgbBoxS3Ovk0hoAtbk58wDTq1G8Kx8Bdh+8VFUBIuwNsxb+pNwVLAMWgj9RElgLJcpMVwwJkOThcCoJZJcJiAINBatXHKmh4QRtATQ0vCww7k+1C5P+e3TEuNQZsBicf+PscAD9d0go9nlBhxBFQWN0Oz0BDnndh9g8mdGR9y4tnFS5NzlUOZVDt/tMTcn3cvwEtHun9ef0UMDijmRoAdDQ8MrgzBLHytGOyS4Rz4dS5LTelD5+c34JJiIaeKpM9oajw0Ri2+wIymD0JiM9jeQQFUBpcRmy/lEQ0tN0huIzKuy8Q3a/89LNEmaybTBs8ns76IaGl4Uq6T4HLueNyW4mo8mLr5JSmlj/SpUhKZhS6rNAlVjtKejKJ8zk6T3JFWeV+OZZWz7o+9fxZDfEg01zCmEEyfV8pEOSkORcnrF1FlBDwyvDDoE5JghQ+CU4Fc3GaTeyypGxJAF4fFBzdwvLHJ9KaDM7nv1XezYUgAjvjsCNtmasKBwpVsPVEScBgD2PXHTp5gqdXsrc8CxsppzFsCY/2gcb//vtq9BPfhlTWlOEUmRbJrPJ7hCXhs2r/cjV2tComV/pJLq2aLUXckFXpCGW8F6NpUu9AJNb0GQ1YR6G0qSdBsuQ/SowBkN5D3iSQcTkj6RHuqFrAco0Tri7h0Jrnl6W7zFImSwsqePS5WxaIfQxR8pztZ/sHzDj/byWkIlOSwJxXLtJGQOVQ/lhYMd7fFFTXAE+btckPZeJeL2rTESylvCtH8R8JYiZxpMc60B8TXamphi+3PGNTQNj+DOG70vtgKQ7O96QNWsTIkxUbErjiY08DbX7wnxBrfyQjWOCJHFQOZRTaHIAZf02ooMDxlktxfKLo1a/uOPz5oK/YfOC236MR/yiLYCGhpcFU2Tdyt55L5WsJrW2iCi9kgs8VQouh4IGveqOFaOjolC8icgFV139bJRIxeKdNp40/IpP5oXTRZ0Dw14ti1MQYs+paah70X0Uxk74ZEhDZ+L379IoGxoa/r2CCPHPv5H9hWipmdP3kpkFepCn/ogq/LByXRw7Nh4961FmtSGDjP0BF5yuoWFygGfN2TVu+DnMz8IDlNmJdGridyEieYvllpKckUtCItodOq/EaNCtUOaIBszT2PXxGBzBMb5J6GjcDBvOycYgboYBIUwjlu/oCxHxzZ6XOwoGReUNit9/6vMAGhoaGj4ptAuooeF14c+/9x5o0/2dEooOHNAxXTms/s3a5bYY3C2X6g+R0+mFGKNEhZ8yRio3vVvNkYl+hjG0FRCwAn0DrBYgjLfBgTihCWOPgHAAKjSMbmAeIZ2U7655sB5tc0kZRHRbl7MC7EuBJghYaQLkoQ23IF0z/fz+dJytoaHh7wmY6ev/+f+4vgCj9y4CuEnGT3HBlIDn3m3o79jTwsGZ44BjR7AOCgPCmvMSHSPWagADVZcG+EO0X4HKA0QUMsoBDUlIOPlVVhwVxjJZPw55nU4McnGhtWlEL42KK8APsW8R503SWQHnj47PEBI8EEz3TNlXy39FBr/89h/aAmhoeF348+9wS0vlE8bEN8ekzSvWvaldIruPnF1RAmZynMuXIAFwe6n4proWaEFI8IjYUJJZ+YAmOa8ILQPl9Rq2RUqgGi57Rj676keaJ9PmMDnVbNxwoEMEtiRSArDhzEnDUAQQQ4lIEOeYZDXh9kbv7IvmtO1C3JxnHQ9Aa6+TMnosPqfTEgD2u6X5f9YpZnchEvLlEmPkolWRFnsNxfJE3eB4U5HyvzR8LyKbTp0FsUZi6aOzJw4pkCKY/TnzRN1MwFgEc6AFCxlLAL9N70eB51uRJlwfjNKAj005gLBIeFWUkv3Tc4lx+OiwU8ldV20ovhKX8Oj25nWKSEiflP7w92MSUjWMmUR5iSdLdM6E1oPGwbEt6XcDK096SHnRMCRxbU4P3N4IyOZeu339/FtA55RQx20dK4QZwtRP3MzBPfj56XPjC7TArN04jVspb0+iAsr97maJ9Qdef/QvFR253hObdmIJJtMFrpNgWHSyiQRaVkUiY9a8rcoFtTAivHbkEUHV4RH45zvL339uC6Ch4WUhaU1E5HMoV8GSakS0csk9Evv0zRIivxmkuHpEPkU9mR0oNE8pmprSeSny2e+E4FjkKQ2UGdp47Gm+AuqqyCXCwp9sEmAnYQJwa1K/iM/EgOf8Vs55CvM8dhC4oeGF4aGVWCSkgx0XDb7wxamXiomz7Ji30ROl5lOuV5GUR4Gmia9fZtjzHhaGTGMVL8ismkDJpdxZXJshgZWILIqQaQNZoaGA65FXggOsNIcbShhkiIdOA21oaGj4pNAWQEPDK0PhcoAvqJXqvgWmqqMK7DR9l2HiMc/ETbQDBu4dmog5+HqKYMFEBtdO+cVatYPEKqjvKnnPQ2dHeuy21+rNvlnfYdc5ZykdeglxSTWbZsHJbRTXch8CSlWJ0LuwOy+dtrkApOz3wA4Eh2u78M89mIziY6d7F54dmcTQ46y8fYw5dqj0TJuLZ+R2xfEY4nJ2qIv76t5s7VTJcod4WFDbG6yzx+30LKJbq3Vld8G0rBkUwmBgfS78x6O+B3p0OGva9FgY9N9un7Bs76Pbwwjf9O343XPA4t4fMuZysDnx6cqjWPHHgUn0tML9NPdjSRa+/6mHU9ontrn1E+tLtkp9j9GtcKStHtsKK7ue11U6Gp5dQotrIuQ2FoY266lSeTcXuaPGiwZKQPaV8I2IBPac0F3Baq/KacrQjbHHtj991fCQxd2i4pnDCydU0gABj4qdHn7+qdOCTwSRUGCylvNtcdtvFETavfXG5pnWUbcF0NDwsiAhFkhEXkurmtifavdQYCxZam5dwLEc41xSMCHQoxeLNxlTcHAHdbyB9iaoiNcpLWLIazU6Q2yONHhbpFTpXfkhGnD4imIExMBJ6pzUfQeql7YAaGh4ZSh4TeIHbr1Vql9pzUmGBCWz0HOTdpo0bjyDXkZko6c9jSvYLD9VPHHHbOeHbs5GQVmSHVMnfv3YSszP5SliiOyxZMNl+XlaADQ0fC4oWEnmkElzfXCwQJQqybEjKckyKbbO+EDr4sginZ8DaVXFXEIlL8ywCRc5RUkaoI7vc2exHvrcai9NHlE+By0MUPIjSTS6Gs76IcPOUFXaAmhoeGnIDGIkZTFnPWK+5lnfTnXqww9iEEL30gFmegjBPNL0Dy6grO9W90pue53oiYaFFN2Apg+eJWffFLw/U+E6WrWcGDaE2Kk7swGfY36MOvktABoaXhZ2sBiV5MwbK9c1qLeThyB3zur0dv07zzoKGbJqqcBzJcAKVYuAxMk7Y2ktI1YWhvuyq+ysfXcQPDY8uMbWrgyuZGKIgu0ozYLEe+ARMl4uCS9aPGjfHL1PvQ6goaGh4dPCu2WvbdcbyIucLyAo5sln+7Fdwp9Vbe+R45xQxJSOhFz4hajqSKz+krR64CIrAuKU6CCWB+js3d1g2U9C9olDm3920ifOzz5pcu0tI3uo29yz/FSOag7TygE1YjLMcvluee2eiM+UIPcIXNf6yeb6lDmO/TLs80FL/Wbnj8I7UgBrB6bYZUv422BuyuQIXGdc7vdMFTZNxzXls1BamWlngqpiahoXKmnQ7uNUe93tMHuxjKuv+bkU3pPounD+CkGt85FrxivwcO20+EPcMrtWDibLETj0v99b5x7RynNg40JNdpjJjUvWb9KvT/CU6pSmFynjl+LKGW7FVJRtHk7RfEk7CNzQ8LqwZQbypOyXYLc/qFApHq5jm6vqBds5uGsQLuVKVktOcdH9DdOK3E5tq8AxWYYJKcaRGPK1X4din2uSi8jBSQ6Sur1GZv15MtERZH0P9QcZNewQtABoaPi8gDpykeeD7NDZvg9NgOi2r3lVKFk1QVV/srcCTtowMkomODJlugbmXv9H+yiFfzmRZaYjubEfyb+QJIDrtBJYDaYo3nR5YiLJQwuAhoaXhfCTLzTfVY9TJbv0TrDJbrIRsZvXjE4XEluLdaDVM+q0xEspvxnqkIx029UE9jrFHSok8NfC0RVVbL/ELt49GlgoGbHLQHKxa+j1TMWSayNmwztWRec+Bbth+7dpfe5uTNSIed8Kp7D3FFsrdCKLeoq1AzM7w0jQI2mvl40k+t9p0QaIhwsswLjNU89+/G4qt3lNbN2Z+5iJJGwUsQIVcfG/zG0WBCbriV9CAVLNVWrPtFOeNeOB51byaxuYFR5gaISzq73Aw7XQyHaEayPnwGRoXrzPAVgr84mrfADYiFhhpxTzcVWJTCPVEextIVhcOMv8B9psvdNMt3ILxg8S7jBweBVTnOHiLVhTDj/s5NPWrfmz6oh7R8z3x/8GH0B60Ecl+3QXh3Dd194ag1IWkEMDEoj2WWB1g6pjHFK9IU+WoK5RxmkcgOFr1O4dEVgHpEZBr5vTVbUtgIaGlwUpv6ohsMvdElxwLGB1jhzGi5lSDBTsMlV229FZRzmo+kjOFPdR1Ro1o93I4z5h+/K0Z9Gp32fUtuOOQHIc7Wn37JMi5dbQFRrBnOsOAjc0fE7w2XD0LJ8loh3PpHOLrIWCG8RZVkBLKl+4EmUVqbUmTsscRdNfS64ZewDn2Tn1CGPMjcEWrNY0aMUjPTjoLMAet/Gw5EOvA2hoaGj4pNAWQEPDK0MROkxFxfZwqKKCqbDCq+7c2qplAk3AT6p30muz0poz7atzs4rxFNXYNmfAOOsO4jnvVJ4WMCBOarfaBUlJz9GFC+39qRju8zZbbtouoIaGTwbozZ8QMmFIfc2nZBXvNsFKvgb2Bx6YU/y5ds9XdbbLPtUNLWYXk19HL00+2Xh7bQ7kO+GkxTlQbQ4uT010ChX+pDiONEBB2VP7mq4Dvz4is761AGhoeGV4oB8enNHHnJfv7DwxJ9wldJ3aBHxRFyQfSCqQmiCiivWr7DFmL36ZVcW+E+ji4XyDaBkZnAIXj9R1wXqC1tUTJD3zlAszcC4E27ls628KJeOxWjvvc19QOCnM02rHRSEFB5PTyPWic+39wIqWt1YhbtcH2JeAMRN0dZF2iMAZcZSJ+7ZGC5rPRK7bPsWpUSSWHehT96wiTS0lBemjWX2+tQu5jPV74KVE8EpkRATrXDUji2Q2kJWcq/X3V9IdNBgUOj33DaOEkXJ4vrWGUt39PnC43dLQ9V0WW4iRQabbfAf3+zsnijXTVZTS/TNiIb/VMInO2oeBZe9yYs09KqTBVbN7ESmQRnC9hp5ur95Bd84YAlNIyq3/KaZe0UpIuM8jyDr4frTxt40ohU32GGFHaXWiKKvhNdVZjp6Nqs17oq/Joxa460kp++ZUh1c3bQE0NLwyqEvaAHm4pgIdDIHVYLaSUHLF7pIAiCt1lAQGD9LwWqJdA4t8JB60xWo/Ii3otaq4ZjrKTItWOSJE/pv8M3ONDcx7KS4B24WFkCUNQ+mVrMwn9wRoAdDQ8LIQeMPzKnYREs3g0F0rwcV6MeSieF3YJ9EaKTvBSsv3Iy6UkWohp74YqLvlBFO6Pfmy7K6L5P3avnrwOL4ZnKjzd2avLQAaGl4YBLXFCVn91IVgl3ZA2BiADlzzQXZ99Gxcw4k5qqMn6fabNUO2jwfTo5MCfnUusE5gdvigNyZ5nLi8PK83DhQiAcmEekpmnCyA5ZzudQANDQ0NnxXeMVwiIKB3EFB0i3t0GpLtjQ86Bm7+Iy5wGGO8q8PVlgFJDJCG2IdgPFXUfiPCaLCGzZgZR8csLhbHrNE/IGyHs3NA1C6K7V3cwEMZ75DpPhXBz0YKQMG2M76PEzwZXkznau99gUj0VFTdG3+SKqT64do8xzUPQ8EauyfGPyFMuZUivJBU7bsBt/3RV0ifiOlnc0cmET2+gN1JDeuXEd5NfHr7qRnhTLoB1IPRwBys3IGJtlJho0F/7Ty+VrZPS3D3r5xI33d3SvtZg3UmQkYIL6CmJBCFoxMPyHKfK2sIz+TaNWaAIcUAUhf6Jivzw5+I3XI6vj+xwB7ujGEkK4DcIzqZM0MfVJEKhQ0NFbv2RH56M0j1pV1ADQ0vDE7+ojBwbIfgxtKn6vLCnVwFNLVhLX1Orqac+764c/LN+IrXfnmlpUDoq7HRUC1xOxDnNT4qtCzdcfpE5irZIhOly6xrkjKfloMHQ16oAkQhHrC0nBYADQ2vDCem4NhOUrSnBuqMDfRBF8xQa9bnwj/Y9hkT60+CQZly4oDFsPyXNaJ4W3d5I8WehgZCA88KvugxkOu09kv13CQoMOi1SEKNdfLSBc2z6oR66PNoUvduoA0NLw1nZdiuHUMu/A3ZK3LuAZ0/Of2m8gWn7iJSRIO78F96PMxJgrucbvlGWQwlG6ZICS0gSbMlTY3o7dyJwyslKCyTJnNRVhQU0hQ8VNc+x7UOoC2AhoYXhnUS8j73CvkUslUm7xjx3gwmWt4iz/kTy5T01drErgWuV4lk8oR2do4bghDciMPxC2nVApBQsrTmXVUSTicdsHKeTOiIhIjuiTYfBbFPFLKihoiKS5gcJEbiXZQD4gdJoRlSPMY76xEmAiHcYiMKO+rcx2nJLw8mF0blJFFlHxVCQDbB8lHoV2B2co96sWrJvjdny4rNtzdP8dbzIjxSwQ4LLQmHxDrT+7QZ9y5MshYF+NjEBliFimBWKvFtBITZKY27CvazJv8Y9jVbzVk4o8Rz2fA+9mUfpmJPx9OJx8KQR1wMKn/FV/pU8+OwXhte8V94NWcBrxHH5ML982P/ShmV9kxE9MQWp7x9mFQkmsKLZNei7IZOM3zjrAo67RI573I13Ih8SugMFNyIKGwEjaA/yFkPYwvLU7F+MURrIS66s9daqwFeDjvFq+jPMb1MBjFDemMRQrihbr9jyDci4hvQ6di3OVzEmvgYC4ayXRcgexbTF9JJxv319q9KN6vA0dvkrB/rbd5F4Q1jnM/RTQvSOkd8awugoeF14Te/zL830DPFLpXRwEG4/mwzISIedoxidTrK0iVn24EeDLIu5lm7N9RKp3YPuvoNtOxZHzVRtwrX2Q2zijFTWQrg4sg3E+F7ecDseuzxLoVN6bkt2qzy6gv0+lvuHUoW0wezad11hhS0mgXbUpPYkBAt1oEJcfVhnvCLSkghorff/EOvA2hoaGj4pNAWQEPDywLfGHVGNP9dtsvtRkQMm0O7U7Rut12yYCWngDtomhjDB14nTLUZXSJgcDhCsNXN7kq+m9vO7+pjFfDuuk2tGT03N2goUzdH/9g2DqyXGxgNywVjpgbuACiIB/3AbxOzOZocfbftgbRqy1mH/nFnxCUH2eqUaJssG7leb/JaADQ0vC7ourblzMkRWqJdLnCNdSRxmI0cKoWwD/KpVIIEOOSJPAHvU15wkH0jWoAb9Xo6rTILNpGiWnI3uXGn2UEnlY/ZmqvHRdezf8aaRU8RIVocBUXI2y6dHgdLp4E2NLw0IHN3jCElemDB6foM5f2i28cNVyzaONtwvnW765ViiMOeO3g0Ci+DUCRczohbjeXkVKSnkqZgwfgiCNwEJBIrYc05Xc5Iih3tDlsANDS8MmSWhfprBuWjcq5y0U78nmWpW6TgtOj22Ks7vmy3RafOthJOOFBKOP3ag99zDbwx1xTCgPDMmRy/PZN2pN1x++xrqlA9BFkLwVDalvhgRyDrnXiLGYZqiFC0sKLIWWscEkz37Ak8cca/fryyHtRMe97eQj25RV9KZtF9WmnguyPw4dGSH4MaYprSKqsX9QAKTtka6KoTUblhPQF8+Ppse/j5uSwNXpalal4rBXD7FkXLSXMeyT2X7eZke/vtCYrofkPs366NAQci8PkDQbM0lAYm3vks6+wgWdX2blPFawu/5t1+zxuJPuR9eBCb/v1gPDAHjIVhzsgIeGbQx17KOshi/HqrD/VmrNl16xhYroME2l2/rQLEA46gL2MSK4duNnnqfQH74wEWROjU8Dlp8FvBHacf2FNyupfbqboPUwRaPxJf9bmqtgXQ0PCysCUPKs/7FlXM5nmtv6xZFZ5sDSQn7wYHDDRt95YxopsI9oU0D0wee2SLaElkMpNE8y4gQ6HbWoDslEMzB1t1NBOqsk0M+ZJVRX1oB0aJA52OFgANDa8MjqlelnwUDvyM472T1p8DuWpeJwKJjLHGvpyqG1NiJjFW4ShF2Fvwjrunyov8qHo7z/yNycTAt01wMcNLGt0S068CBRuHksfhLmMiVENDQ0PDp4J3Auf+hiBOxPu0sQL6bEV9n1seWsxA1t7726e5ggrYF3wN9Jg1iA5iZhmy3HW4ldJ2xM7d3YlkOnr3NvALqabnsnnAaXvDBbqDBnCCAG/Rvg6IBx8wQRVMD2bIU7OhXUOhTH0zrPXm29EvYZz+GAIWFkZPuEu7WBfaVJ8Jib4Jbgg7afym/YUAABKSnz6FZ/ER2Nol+BbmSFOaoA9HiCNl7x8yh6ePZW754V5Ye9MZtx37HjBdL3VUe/b5rON/PzXoVvqmptFHga6KhTx7/y2+pCcUzLuY9o7cZH86Ff6h08toUBTg2AElmtM8AoFB6zemptYI9AAOomArwBiORX5Cn3fyrTeqXUANDa8L7JYZIZzcwie24duqIhFZjxQ9PSRxd7guIyGOJGCXypTX+b9kDFpcCKEQf08RqbqlSRu//5qVYMJoNQEm3sQPAyhaguckquVQ5DbonsUDlGisA4Pac9ICoKHhZWG7xDGSmbIpC43+EZvkdPcRSy0EDjjOVx0wdEAY4G48R/oYiqVgw1m8oRFeuumdfbioAnM4d+Hisd9mrlYEXNOEYWsnHmKRz81d5S0AGhpeFkoHUVnth9Qhqtj6Kieivb8aqKiIPbV17K7Qh51z50TtQVhcubDc0ZWAwOv7CED5tSV1FK2PZC6GfPHYSJwzQW9Vwk25h14I1tDw0pB13pNIuOZA33MX6qHvO1bHhbeO4OR/f5KzSvp8Asx3pA4o5Lw1LnQBOc+YO8uGicIhnJHYcM/FRxI+1xi9ZyhfxVppNyjb2gJoaPgE8D12wEmDxlabX+dDax+gdKFd41xO185cPTuwvs/jAs53tD+SA4ox9gCcNCndlThKlF+R8RjcE5k0JmtgObhCcgptodJ7ATU0vDR8G3v8aP3dy6PAQOKRdFBaMSsfQq/K3KJgCEexo86NOChx6gNZoNGvzTiRhsvpuYwNfGhmxf2xSwgbe+cZXDtaiojIKrnlCvOMMCY4eEuIdIW8C4ArTUyQ9DlviJvrlV44NwzQz/2I0ehy4xeSjU1HDkGNhdgPLiHj9IZt+benihfBAteOjt2hXqmzDY1FglPA1ATczx7n7toUz7An+uLteebF2u7MuPoGRwZXjnmIzeymfL92MD6b4uzkvSDW4yQpv30jsLkSgFOJ6Olwcxisb3nRIe4dgbv+Es9JNf6T9LLnH7OBxIs1mz7dlMiNJxc3NDyAtgAaGl4fUHPEEoQfImsLNHK6ex0tjQ6WpTDeoxqGdfR4RVVdD0r35TygJQEuIPVS1cRie3QQHWcZsF2tp8iKCCDPmn6qiwrvGOAU0votABoaXh9OfnwsufTXFOXXba2TE5tzOfVGjtuCLeWyMGystsxrDKvOM1qGM+HxcJsPr1JwI9miAAVDrMUgMHQbuIMIekzMQQItjq5uCLPSoTuQmoXnSKEFQEPDywJ7Zn1iO9fs6DssA/Qsz4JLGbSdaso6V7E7RxeqO/TgZ1f35RMi6ltA0nSig1n1bPxiFCrlIOSend88mokEDAFcFE0gDISI6AZhlS2TWgA0NLw+5JjASQzku9d2wyXia3dQ4poH7EdSQbsNwkCQRX4r+Pwfou1iUn07EKRnfoHaDiMqNpeed4NtlISmFmdrwDr1hlT0s6HZtDAr6nUegHtGe2v+EEAl137v92KfsuwfpuLujI/6EwWqR4vybNOGRwW4XYmyicWywnQ24etUgEWA/y0wTpSqDtDc6visr/WweR8U4ZUtNtpt+lA1oOpV+J7X9YNhP/uRuIawFdKcZ7aXY88Bs0b11dQOhG+U9i7tAPuTQ9CI7PfBxEL7d6nPii2dYyuXq+7+6cKrv4ezH6mSy4YXJk6Rib0BHxgKbk21EiHsbIb6FWEcgzU2LRrf8apH+9wIQ6tH7+ajWpJmFVYzDccorcpCDa1UpbYG2HFytlxRdVGaOTy6d04CCSk/TYQm7NcWgJDbCMOdK4l/siEF+QZ+xW8ioF1ADQ2fB45un0LAGZwsgAsGf+zasWxsYczUyRvHAeEL6I4DGGg5hOvRXUGxyBacS2k2p3Aap+VdRf4lEYXzjeNd8pM2vWHu4DPC4dkNNAZ86n9tE3ALgIaGF4Zg305YJU8wR6fYXt61b1DPN0mELAfIgYsDI/b6uHVb7Lj5nLlyebs2hI54CwlWU+vWM+OxBiXq09RXtskBx+z0UlT0eQANDQ0NnxbaAmhoeFnYx1egbpqtATqUX0cFfPByWwLJ+aJej0QcYgeHhYtq2ifuyZMVXnQf+fWqBZxmoPpeKON5109Oo0gGQLGctAY5fiEfIUD63KEFhN1BW+e5WhfvrLGvWWOFx8S+Unqms9wdEbOjXzv2y3CLiDZmdpjXZGY8JQQjckcxeQd+ScN6xEofz0fFjIj1WShGxuFZeM9VIAuQ2u9KQ8FufjXuuRYGzybzBBJKT2YPHyZBBE5mKV6I5wOKGXSKBd7j/VbNm/g45nDsnq33VjRWmfcrBHYm/D7Swy3NZ4HPxz+Xa8CfoboTbPk3z2W966GEwJomLcDBe2K4FnYhgqfsxzcj5ePjI2D/fNOcscs0dyfriK8PxxcluPaYXLHIK3BeGRcy3Szmqg9k97NKfNUnTjwKZr1iuHH0YyqhT0qEWTXj3Nm7Euk6ILEaM1pQRAUYSJLjI8mCZfqR0j4/KHBRjJZ5CG0BNDS8LnyMedfX3rtv3KriVIyMvmJmqaRgxhalPGqzmcqlXCmDRPbn+nQKiRXbvjcHesAKOVsgvo0n3K1Hc5GMI7CqLhuVos26iJXLbr3xuPCDI/f929fGNTQ0vARc8+kHDMJr+Ef99VFD/3HVADozV8wq15KcuZ7RyvHO7oWJ9jZwqwMiXZiWcjEFztrJg1OrOHUHWnqw2JxddHxKj+75TmXJ1/W1LYCGhpeF/btHdvCMe6cqZyoFQ9R1xX8NtdFVUQsLv93OSSqBhl/p+cX9AsmpxEMSS7ilZCUGMuVkdJxcYc/p4QJdLzMru/aHGSti7mzCOMF+C96/f7FNQ0PDv0PIfPHECQ8u7QcYKsZV+hOSMHB1z6q5qd3gMEme8Hp/tksLoBzvhSFgvbjPA8os/CKyK7l7NR0X4muOF8MBLiKdDKy2ABoaXh4w+k7+mlEfvUTyER+xMtJTLlAOlhbYUXvHKnVb4bUD3AfIfA6O272BYKmEgdF2mt8np/SpUDxIx6FpL0YSmwUwConFvQ6goaGh4ZPC+/svvx1fvwgR00rjIxfweAyCAho37VEZKD43dAfqo0DijUW/wYk0htNtyKIVzbMFCXmYCTo7BgeYbPnKVqR+TgFdRgfJIJGH5Z4KZh7sRFcdJyTLzqRBlni26c4Phal4ANDLh2Db3JhpulQEfVpuHy1TIsIST4G3hfa1n9F1wsrsTm+YrV2oI27iQ/GHFFEPSQ0TIf8MZqork8vcneO0t0NsHykdq717OUmGZrY0UPBtxPuXw23OJDA2pcce3i+/+W05Z894wU/emaNDaVfIOnv2ettIFAbsssYwZ+Kf2kY53d/ZBbQQMB7Se4I4lvl9zK5mATxZGEU+h8BvcQTvwMh2CUPXkbzSYsvgg7r21/v6LURRZKvrn3YBNTS8LPCXofvGEKkg9gJ4qUZW5OSAENyGRkLGeee1uIo5/DpdNMOhMSSOXRsZehduI+aRCdiahvWp1NrY2fnytVPI7WEc5qyBd1dfU/wLETF0NLHe5sS6Xe6SMLsQuThwREhCRG8w8LVLKD5f6Gh5eGBRAO7SyfeOATQ0vDD89s3r38iDiIxlQBHou94Rj1zbWjmmI561oa0rSd/PSeteObVWq7uxS5znHYgBhdd49LiqtnPnWSB5BvnvgN17lEBUrgk6wqm2OipBbAYERrGmRFE7tGCl4DaoYvO35VdthuYn6zr9uQVAQ8Prwvv/4j9BFu9cB0lddRx58SzZn7eCdc6KQQAkTR+0ZlWUhYjGPRIzJpM98Oi546bfB9RKfM1VK9/CJgQIx+a8qFyPQcbWTQCo/BqAlme/UJ4oJGgFjibx+AdWWGTk52LE0EDk8YmscxaQABAGv/n53QSAkI/h69M5++6s0nbQ21ozxSPost8u0e0480vrZh28iHGIjXDht4iBAP7tnV9dzP0mmMWiAOIICu44G4Dve88T+IJtmtiT7iuwev/ZB94575ECZC0k20V/6UwG//0R1Ks9d8kHXz6GOnZX+srYNap0+9t++rD7P81P1vKb1smo8Ct8On82fv9mcA9ICDgCCevaU9zRYve3p2DrWelByH4dFzphCH24ipJ3OLiGqr+FVyePFTMGYvj2W+XtqwhYCbqnnbpoDSbj4IHl4O0GHmet8JnhJsnK0qD5ZGZYAginSrtYanJnO9YZ0ZPcPIedLNV05BLtAAV+rFu8mw+5GcnQfNJ5X8Jj1r8BnjTEgRaMEbl6pDE7QrY+QBjoFIGOj6IC5nskIwNl1Wx9/6ktgIaGF4Yvkn0aC2SpfPsalWstXgqnlaAfAT3s2ot4JkSezTnfEWjc8w8j8llncrfJApmI6LZKjLNX7n4VXdAFBgk4yScW4ZEqILUDqTIph2MhkJdL4q6uDZtn0hsN3VQMvJFJjnXLic4ojDkLVjKEAjfGUvJNbt1uvR10Q0NDw2eFtgAaGl4WwONzrqDAqWTlirDZBzF1chftBtGNFDAaAi2266U1Y/LlasQbs4tFQ7RTN3Wd3kPNzZbdenuW8nQUE3Q5Z+SyPnFU0YLyNwqI5UywnVBsx1AebTKBa5vI83Tt8hYADQ0vDI9YWeZZ0I7BHeFWk64SaFtxIO3jsiMy5N5DBfWhp2LrN8gpmhXzlsuBGAw7FVz7AkDaMTjTByCMGbEGUKmYQb35FD0MV0leursZm6vZAqCh4YVhcRRU08WxVVcUACs67oXaOdaUQiospnxsuIKf1iAslKTAsqxEo8UMFdUeKPRiRGt6Nvv52e2BWkCV7Zs0C4Ic2VEOlWC4NQjMHZQUFhs8kszuk8xxbakXgjU0fGbIaWOOWYIE8CwVbgZVHRkXsFG20KNj31BRt3dGktL20n6LZjHCKhEX0Nt3WBN7YS1U5kwNuOz2AQc+9Vfp6hUDj84fnXCGezWW0kp4x1S3uOocWmyRyCYQsyJhbwom0e1BrExNPS9r3uKARaprL8JXGh3PtRuih4rZOVyKc00KzyPBUONx6PzGALQHSa4C+t10+IsMETcN+5UXca8/w7v7EdA5+HD6YEa0H986CYvtmDNiG8RaTI8G735gZC2QQN6Zqqxlor/O4Chmd2m/cT+42qb9FrCfCOp0SMK8x8xr5wpm1agW+TN9VseiQ137aTAgInfy3JpfX/Sx0Tj9dHZKC+OaPHgmoSEyCz9iopMaXzyp9MKiLhtuLl6TvSsHJKpZWwO3n0HCjFLFYfbs0Zki8AquUlymoMLH/TDREw/yL+HbCx5QROXhppny2rtHQBRMkKT7PwfpzXHOooWvLYCGhs8LBw5fwbXqqosKFueCNQYn7z+yb+cOwgVWzhUz61gDbBX0azeuSYFb9pDI2eIyU1sw7tTa1YmapleWmMinebLRKDadhkRlIer4g7yk9P2BXFnfI937qgVAQ8MLw5GVXVf1zYCt4Iot5PWbwyQzYqAjCJAzIPFFs6YJg6coXqDWjVPJjVGepkMer6FMTbJgGKFKiaGSPcV1YRZQkJTrOtsH0Ry5IKrXATQ0NDR8UmgLoKHhhYGzPvhxb/IBdXKIl5iXEnpwBMFN1f0hoJrtAO/3wM4RhXOiO2tg+dO928WHHSOh6ONKIUl3rg7UdPYNGk+H4+ovHgq2cB6wYkqTywwAs6H2eN93gWulAUeLm4mb5zwK2fvAuJCn1RSyyLB5yeC0ANI6RIbK9SszPmekapxV8Hq/QBrnpLU5jW0QxCEmaIE92HYHOkUqidZBA2xPjhf+MOH76YuopcZM9VYyOpNSlcyBV7sGeUqf+2mL+gQnHawd7cFOGhm6x12efAwwhx7D6AzNvijHgbcKzA/GfgXqHF57E8143orbCxG8JzM2vp6q9sisk29pI5qFAI6D7ZVmzVEge62+mfI9c9op5hsYoULE6ycbExKe783Nfc2mCqTIHnf5aUlUSvTf/Hf+OpCCTM38GGW5C8PqNkzu2RCw/sQipaK2kDJu9wvaNBfpPw473HZ1CtmMNPu9WjNdJiNnWfaXZYp8q7YAGho+GRRsquITF+DOngXmxp5bTsAVAMqr3JeNETetfGQxwO1yca9bLxYJIE6MVXZLRHPg614nh/L5ATbKOM3Hc1DoQ7zRZqvLy9F4nwux1gKgoeGVIRuVjhHIrkVX7NbhIzot25LtmpkccqSG0J9X0uHuQUd2vIxvtK0B4lBRSOhmjDLbLtkOMNXbDTYJOhgFSh8tnr4Hy2IqEmbd/sYFeflROIlYhJ5Pj4epkiBhjlsANDS8PiCHcqz/qVYGx7wU3wGlhkUJ+B7dZs4OxUFUZA7pBYzuD5EJjUJmUcGVIeEa5gHg3dITtgk8oK4mM6PwTNzMi7PLNz7lKmF0QQuAhobPAjllED3Osaxkd9n5Ia7c8cnpEhFrUjHTxFmLgkhIirc5LZc9od5RhHpxxUCT0Mtu91WOyn3eoQjjzwxiLBklJVQ+o8z0j9bCvsswm35juAXvO1wy40f7YHNWhAuN2khrRnWi9yzYGSDwvO14EOx5k7RjXFpoB9HoMsdN1cKpwl5k9aErVONGUnpWjIb4Mlgo2ZVqe4IL//Ludmu5LFfvo1l861waWkuUr5aeRwTyMPD7MYBx2HnnEmbATyw8oj1wizPqWyLw6A2rf+7ow3QUZQLw7HhSar8ZdC/JYi4xem/bA6woue0fKbosGpy88VWxucCBr4Njv5Xy8F0oTHz6eupM0q3MkK/JyL4HTHTZ/D2nphQcK4mBU8w5Gy6KB1Vau7uWfIn3fy9UIAwqIYf+nuut67ClpBG5tf/IlJQhxMYe3NwksfgITtaKvYXuVIBeB9DQ0NDwaaFdQA0NnwWyZiiHO1nfXPpj1ufBaQ0GfOqiML/gDyrpaKee9N7ClMDyQtP3m1RUargUZXbtLJJEFtDDZAf2Tj/ESIf6BmqxL/9Ecq3riER8gnlLpTCEFgANDa8MLoQIG9E45nHi96nSKk7MbCEejjMVwgKZ7GK1k7M+w/VnDXT+CAV2rNKGBXbLUcfQxRh39MI7X6I0cFH0YreJuQbMRJouYUsC5cTAA0JIVy1kaipB4TF9OyNNl+Jf0AKgoeGV4TnfcQ2e3UeW5Daz3FUO/T1YKrVuOjU7krFr7bIlO7JzH8OGBFHODSNgMt0bwjxue2cX9mAyZz4IA7dt58lWugq7lMlIGAjJQWChOtkW5/uiyxYADQ2vD8qsIodFV0peGOW8N9d6aOAumX1PjfSeCduxd98MStD74ZRZkEaVh8SkQSIxxo2ZC3+SGy5OXU5aVQuLSA2sYnag8VmfL1xtGRypMJZ1FUuqfha0AGhoeGUoeIXbGNn+qDCo01ScayTxlXhKburogSWSPdtL444qbXViMFK2imS5gGL/rqR0OBWFKIRitzmrMx0YHI6LgduVKwdFSd4LNRtDeIZLNj4wBrAO9fS9vgeSVjMvLHntfqOrMsTlurlrFdOWZ0RrH50o4/dpLXCADFcYnDjDLWpobe+zv9Gi05KeVjIW7URFYt0RxlDvAbN/QRBYxwk6B+wIgjXZ0ihlL0mfZ8YwMdM8eYIR85zVmPS5zhqZO/H8iHxQ2TaqTtnazcb9bsXKiWkdk0IzbZT3+DTvE9/XiQHT4LYNvVtRSvF0U6HkVb/K46gub5OxN/cirpb2qiP3Et0uTE/72S8SvJ60xynrIa1HlnnNk1BzV35iiFBdgM5N4QI93peIKo0XWX9WxqEGVPF8t3iy7mwA/1bELq6FRK60RoNCYtXh/Vyshc1ufR5AuHgI4BTym/UnRPpboy0GspSoOs/sHg0gFbL4ariDbOAqdtR7ATU0fAaQzKb3LdqMSOvClwu/MWENwzWLDkqrqzbLOZUQUTzS/UBAVCfjSBxCQH9O4Cm2DDrIxvV3LfVKciwvChJQG52UL7tB+ywZLOft4cR9Q4K8jAyaRK8DaGhoaPik0BZAQ8NLQ+3SfwDZJZO99CdHTmxzciy5EruRPeaYHTT90EXqZ/AruRxNu8GopHt/WHH4GBoSeK6kU8CzrymPAuEqBmDr1QtDahoc6O/SNhWqciTwfZW8jy+/yviCFXkeor5oFXVBspCMveJfd4wYX7/szSREHfoLlfepqm+Uaa7VZiL5uo7g1oEwEd+AOnDMsYCRJ8QiNxpCYwatFOGaqD33vD3yezhExPxGg2iYe3Xe0Zm0HSl0RnSE04E9hO7mQV0EMdRM5q1z3Mkb371ZBsC0ziSQXWBfmG5vdOewqUE4w0AuIhnyle86oSvCJmszfGizXlGZEYv5fc7jT7cVy8DpFKIb0xjENyUHaVnOdHrjwTx4b4yyBxhS3/Rx+D3d5Y2H/cz8b9o8+6xdbkteiIneWAwRY3UR3o7+3b+s3/oML7G88z79IXZlz48FC/cM3EjebitStQFGIOivt0iV1vzp7Tbf7f0aIAHQ/arAwEPe37DPg0vHFRgvuz4PgGIjeMOBWxLyzAMqDSokdum6w0m16O76oa9cID/Bk/+mhByN7RhNZxeZ+x357ers553D0W7vo4+CPt2RJgp3BMqP57RXypET6EVbAA0NLwwcVeOHDbLqmhVVijeRFdWdPWCOqbuthVQVt0K0cRKq9j4aXTn3Tcjp4UhZ4HjyURg4VFCHiC72+w9aS9mNwlrGlSUlEFBZZfnJPIAWAA0NnwUKDpU50bSY3ZqmVJ+gFbJudhzq2DwjQb0cy1OvaEq5nTVn+W3dOGngfj9U65Af8sskIDAL0K/SylOHMubC4tgWikvWzGaHS/1cJUxXQ4iOo7YAGho+ETzirYlz5SO6EFAzTfp17AJ6qBT6qPvnLRaQMEFE4Gh1wmB7ygtH1nJA7o7Eq9OFSDx5c9DNe5rSalEADDWPziOZfsUBAycY+PVkFvZBMYIWAA0Nrw+OMTh9NLpUcIeDB7ZC1cvCmpiP720aGYZ24FqBFcIbFLnXQewk3w5tEYBKembpuE3/yWCgiomTxWnOB9anXrEkOYL25bUWH4Z5CbJrFmaefrYAaGh4WfhKK+g+QA1GfopqNaayzJjqyOVQojzdSoZVI2huJaiSa/D2Ztc0aK+thZVcs4vBQn6VwHA4ZfdILGM1ISIact9jXyTdZoh4ErbKJw2zAk7XagKhkQE5F0NuYaIc5XtarOQW7y7TYz2aAU2IrDtk+m7PPTBEsuMIa2ax8YXfex1AQ0NDwyeF97df/mHcv7rcMvwipjSI7hKyvWUiwvIr6cLrbWoxyGTYqkERi+gmBzc9UYtkphKGaIyYK2waR5ByKnf+ae+Q4Nx8N960yqKHBTaaYOIv9CvRm/UkkIy4zjYLxthKw2MiIflCP6WWjCWsw18IxSWx/lV+Yk2YjTuvOKNX1GVpZHyhnwaNnLXpv55iWvJFvq7pm9tS6H5aLhtxz6cYphvzEPnL/SvvMVHMTGSw/Xc+4nxqzPyF3obcZmVLPfVG/prPQWv3C167fYiML/ImsjJxp8PXbQKyngxB3gvLEGbmQb+Ou+jZcItwcCKz8H5XdfRrN4iZEv3XYe6KTalSv9Mub/sp6/lh2vy+jiivwN/QFNo58Uz0l69jDGH/TPPT5al4rhxd3W3gy/gNjb39B1X6u0+2Qd1zkiOxlaRyh5+ELV9y4GZtU99eWjwSA1o/odsHNWjTytddOHjdWxuLpAH+/QFemlVtjE3YUPJW5WE9apCANhIsIajp6y+Mm2Zntcw6I03pwl90pJbKsCYYFYDNvdcnlAy/2mKXzz+/Hbd2ATU0vCz8z2//jL949PsLLCCS27yb3O5QE6OvTiQwsqShHIcM4QC2iOx12F2tb/x6DOgOeKKWm9iYAYQBd0WEoGu9NTZCf73k0KLzjmIJeodR6DVy6tjdonzSNmz9mIBIUDmEeEQlxz1ODo2SmOV4c1LHRpf4/4JZ5f2Xf2oB0NDwsvBbGsigGRn3qhIZupaaIEAnuwC70RoDPpXVgC7sDQi8HuT96Ytdiqm6BdN0dgPU8Szb2TQF5cZMt3mBh7esWyi0FucFyeH0faNcqwBfdmYHjijzdLXYsnRBhEjeYvH3fY2rB3B5cw6Dv9/vLQAaGl4WvhILrPf2eYeTuaSS9QnlqNLyjTbrdx4YLZnSAgK2XpaY72WiGqjMrvDpjSJzz6yfN5EqeyCYLCEqi+JqlvD+HBo9VredDX/RsMbCRCt6vATAPU7XOn4LMPixp+CwMBAjOooBzQkGCC4gnFi2+oRxcrTeJiJwNy7Mt84Camj41IDWgJVUdw+pnQU+0oxSUFFX65iRyK6psch9xqTvcsc3LCfHO60Kuly12R8oybw5J6TTVDvyGKWOn0Jnx/1/Tg0cXhNm2DKimpMDgu1QJVNdpMMS0ft/8j/7XyUE12AxXRH553/+Z4YD0pbUYbY4GwRB8ZOYf/cf/sO432+3pVP4zXGM2hlti1Mo8v+9/X/GGC55eeEhCS+WNtYAJv+Hv/6H+/3OvDa70RuLPn2Q7syDhYFJhP5Ef4T1Izu4PEPaLqy244pzQmY4+g/jDzfG5374LTFPPDC/9Af+w+Dht5Y5QZT7IvJn+fOM+I4hrIMVIhlygzMAbLLG/sHxuN//q3/+r/h2U3qWcnFbwVX9HuLWRCJyY/71y39ETBa+3hFcnZbVD2zAv857YB5j/OGvf5QhT407zePv//R7GUOxQgyVWfwmMjnCKkK///3v1xO0rXvKB2ZNdAckHmP8y798ee55Rbjdbv/v//K/tnep7OtQTkT/9E/55BdAJPglcTrwzCCfQZ+y3+XYIb3acL8kBsrxBF+dNiHakX+7qxgi27XXKVOWrmOZwB9gauw8aaDdax4BEakTyYSfTlScZO9tQ9Z/fLVw5vkZ1o8lp7dV2gJoaPgEkE9iQYbnDk93DN3qeLUdHUcU7pKXKrWACC0O8snp46jBSqweBcMcbz6FV4z+KKXyiLFAFTqqdPws8MSkw061SjjJpFTJolXomuRb5eOAEbo7MX18B4j7PICGhoaGzwptATQ0fBZAV5KqiRCZlFyX9l2/cYKQV3tZXSHOgwIIvV0RdVS/fUK+e8CDnii8vd16a1NoaL8sA/CnbMzZDTaItuPm4EjKtHmt/+CrWX5SiHkk9IAqmR2XOv7Jw4bk7Srv/PYTfSswEf/8mxvf0IG7Kebp0JK1EGt90loaxjemt18G3fl2m37M4d2Zc+XRJn36xvYYhsidf5I3wh6JlrtZBAa6capr9na7faH3O/FtbWBvE8PEa5lV8K16P+sX+mmHqpaXXoT5tjZkF1tDRHBSgC7KH1/op+0MT2uwgOj0cjHzF3oflJs8BULyq7zva1yrNYvWDmA0AwMyzy+eA7nxbfDbX8bbjW76WG+b2spzKfrAFwz6iYbYSw2/Xnu0mxKIIZEw0e2rvA8aK0yxFg/GXw4TCTy46Qtm5i/jNuam+rsH8xHf1sh3S9b3VuFXuekvGQ8TOM//jlQyj0F/vV/VvYCb0Nf7cXfhh/B1xGeSzlre5QaOk+J9vyP+/mSGlHzio18C0TqfzGOSChcKJCC5+tMRRIwrrfBsgFVrbQUxP/HIyCOf1cvkDVvvBac6KGfBFVW47+NYIkgkbHV0LQYA0HnmxVRbAA0NnwCq3z58cTeAQyWeUWynjHyo1GCzYVGoynC3MBwS0kvex6ocOL8/kulY6qYjDRNY/8g6WRZjTlW3iXJCsxDop2m6uH8oOUBRUcfaAqCh4bPA4RQ6hajdQju9gXuFYtA44JXiDxralbTw3RXJlIuBqilmeJKBwK6C38yOrOQxMdkGny2Mwqqd3WVXEnm/txjKW4mgbKDkU2MmQAj+aDF0FlBDw6eGB8wHnSCRjVKl6mYfj/dDJz/GB0lFXra2HXIJN7smCC1Q6h1BTnCUxgvcACmWzYDF2p3BdAWOI7utsC/E4vQyTa+1bdqRd8Y+mylQrtctABoaXhqShybHIyopYGwFd8z3Wf+RsUZMmcc7Yk5OjRMPTBo3R1INAR8Y4iqIkyJ19GLy3EF0XMjmBV59N1s/bjIfzIkbq+RJKCAJ7HODFgANDS8Lm1sUYV6AwjudvP/KAKW8G7E+um83HHOKZKL2zchAU3wb8e8QgKc5doPbJ+w1fs6nH6rr5zMx2OIUGUfnCX9EU1bmZ8SApOBKhbLXATQ0NDR8UvguC0BE6P7VzsrB85o1QrJT8Xbh2pZdbjS+8rgT3Zg0hdSJOssixIyqVSJyozHG2hRhbxAvIqx7Sikpix7mtUE83e83uRONGyW8k5pJiiwqwqCI6I3umoPIRrQoMTsZdKFfKZWKX97ozseUvCtg4pvcGbB9CITkje4b1/xcT2dewH4VDJm1RHQjYRo/v+017kK060hYiE9rwgE/0V3GycJlZslKSngudIdd9feRf+7Vwla8z3UgeWNhcftnrERA2V5r231rP8Q9/HcWVCllDbwei4jwTXVEpsHyfvvWNNCb7WrwbZCoPNCslVMNmIoUMWWn5a46xbYVz+S9HCKxJw+2CxSn+UmTdvCChSqFKZKo0rdulztM2I+7O6exzui9NCSOFsQlpMhNRqAPqF1ADQ0vCyVH9Q6Ea4YS71bJOZMpcn33IczY5gBJc2JZi/mC32bejWcqoVyvAXfSNxXmGWa7ZBEbPXMyrV/KLF1JtjGe5eNZsbAKx4mKmAL2qn4LgIaGV4ZLBfPifiov+LLxGGBPhyZ+HVe4FqiDu4EiR/WnoFwTT85EwNKTxn42gLIdoPsORTvA2QeIJSWMVjYNVWXWMNuQRRBiPZCC1lMPLQAaGl4WuOI7HGrQZnGZL519MOR4uvkCD8j9lxQhBaefYoKbkzw+sfsn1OGKE7p2zHJMHEJvjnMPQnndqUcG05UagbMIi29EmoZ01Y+HvObtTGQLgIaGzwJFJMKxMoydSfrEOtduiuqr40GRpU4dGXfoye59p2Uvz8aIt9eeC5wNDheqMK9V2Mm5ij85AQbLqzJLTpr3ySUmSbJ+3HdW9XoNMCjWnr9XAOwoXAiWYgjRBd98aDF8DZifJ2CGfTCAGXUR3CzodiupRVLL2G9Ga2FtH43MlITxPgnY457nb44KlpOPe/GHhxW6ziX56e+nkPFgL4iBqmcdBj5GDKDlMHWuQE9MOD6m8NKe5vnbNvf/bwSEnLZ9bQF4SAr7+h61/hLz2s0fVewkDVTTtyeb3xmnthe+Do4daIBAAKEcfSUOL1oenuZJLXq6TmBo69VpjyBFAA7mDl6eTLxagnuMfSJYQ8OLw4H1F7r4QZs9el4kata79rX+q82f3ecOxUCxAiFlEO1+8SB7xxUBCRCZhpxcKe7+YVs3JwYObN9P6eP6Ac6mFRHZuuRYhxLV0usAGhoaGj4rtAXQ0PD6sHfu3lDo9TnzZtVBtw/cXRFRPOnQu8dPHhDYOxMbnPyBSJ0uxUCc0dywbelnxMItQiLaaTkx5lw7cPz2znkwkURe50aa9+kZvf4QBL4MMS/LCOqoC7NGUKFpAdDQ8Ppw6Usuiw48o9gI00ULXJ47Ok8ugw0zA2efxR2rnvnXvlFu5CCOggMOkyLAQzHiuxw+eByCNfRybU6LxalVaMVx5Z3pDu6wSLmfSyem7HOuQ8yOoKqgBUBDw8sCR5aR4Vo5nfFPY/fXymzMvjkFXxfPQ2PhkqQUbXYVSzaoZxvR5siZmSJCLrCNowffhJbTtjlJRyfFgDog6clIyANVPvd3KVh2xRYADQ0vC3L+6hkKqqXICDk1tnb+aPh0+xmCqgbJM1SVZzeRZ8TznK/DTtEqHmBjzkTYVaJX1t/9Zg9ozZhTK094OoPyIPpcd9FPdSb7UrIomr+JAMAcwVM+6DdjzvmdDzGXyZ2BpI02JymGTsO+N5JWkYdMx9z18/MQ+j01/Ia5zZmvIQs2ZLKe5vAabU4kDUOLO/k8gpBZmxNwAw0z6xfJw7bkf6Ilefn5XsO/tyRRNofE47ofxB1FRT1RhSo6+e+NaOcCpfnPnUV3juvaSQwxZz+0RJJBSS8hRSlOKT9epprHH+2A+UoM5BvwebnDc11cTHPhAbskXiloC6Ch4WWBN/d7oJmjq8c5QcjYTebRidEEfRpkT+H1dlspQLBUonruNGg3EODyQZ0e0CTr1U5kVCZAEloCN9ZE5b3wKGr6lEat9bJqv74/o2voNkSZ8IMJMaFSAjoNtKGhoeGTQlsADQ2fBbw6WCun2WV+Nh7M8R2cDKh6s6sMPnEM7eY9H9wuD0znkGweQ/REFQPAIiWw2DYnu05mgZFYmAEpTOIcuQURYP1EUy2Tnv1FFcoS8KY63loANDS8LEgVAVU439klBT+B4BZkPU4xIJLrVpDZLyKEJH30ZjsZs0IO4KKKLLhmi85J7nv2J/TmcAjePnFYCBwGcky+gCB84Jc73zsKs1QH5sb50LTp39AF9J37/Jy25SkDuWFzm4AHA30h6IchwRzs3UHsTEyIEpc4c4Vntqb5UPmH4BSSDTOcdwoqQ7V7gBnID7zcXyhDSBmgamJDLP36RToF5y/qh+G/GKCLmYHJFa7nWSRS7+cgMidXiJhdrhCi9V+ghHn6+BMxrG8Bn7AxMZyGxMshvxHdiOD4HdlcX7ABMck+j0mHKH4gotIT7INqKo4ztP7J/pcnY9VQHM5eOsKcoiVrrqQHw7/ZGwP316ZtATQ0vCxsTfig4SffzQNku21usKKj6DspWk8FGjZlls35aa2hxdNOXObPCXW2ZCRwRgmVqyRSlmLT/HpenIPLITzUd7ZLKvGDePQocqMc28VZiwRjEbcAaGh4YZD3ATxRC/M15CwuAw62X8US5MVTiR7gh9kZs9M5s45wgSwgLQfXzZhIhIjojYho4MEvA1o5MlBIAIZZ/7bN0DTGu4SS1YRkHSsLvesRNGTXBE2QcqABa+ooAIMMReCmbqxlccOhEmsysQzYEs95Gkib7zpkQ0SpAYOmt59bADQ0vDD89U0PhQWdE7kCbhgwfV+LrcwkfSy/ked3Wo7B3KFO8mUQkPIjRctEJMNWANxUPhC5tcHI3d4Gk7FXa4sMmlBsCN+ciOFFG9FtdcFERGNstG9j4JBvg/fQFqNfCC32cFuZpibkdOzIwSeGsSdQ1vkHg4h4vJHy7tsSbDylwpuLbjA0BEa/hgfhkHmAzJrSYQQko2q6/m+Df7AAyOuGLpYC7fLSMxtc6k+23V2f3NZ4N2+FX67/ykGIsEN9qI/jLRFeBAM+tOYo9PVkzRD2OFXIyMMCq9zqFBc5zc90uO/oSxmJuR5g2eP14/iG9+ph8ODfLfzD//W/s65QW1yblZlGj+qz8gormSxJ3Qig5MI+/UsxH4SBWUULOjtYA+sXBEhmidyNMMSm5UgAlKAmfl969OLds+EMU9+NgYo3L+YtlXBowaS+1rXRL6DF61REVX0ABoaJdb3IlrAwde4sTKD5DvJPxSBMHTJ9k7JokL394z/2OoCGhoaGTwrtAmpoeF3465v6fy1b36XYT4cAapHJv/xGN9oqLSi2DGr+9JbwEEGPEPhbnLtmuVDm9SyYJUzqbNEzC6EtekUwIIEe+aEOHEF1mzZatWmIzN0/R3efCrW6qgj6NWfO1OIZ3FzLwbWcPFAzmRp69uSdiGQwmWsLIwGMJsWaTFcyNs0YIFHTCtweoO9j7qdaAIOI3vjWAqCh4XXhfSibJKLN2OZlvo4lLrR4JyKiN3D+pHiAjDHc11whumuUcaPPfvaZ3DsjYnDYUD4pGevWHRkiNL87F9AamrsVXUAoVwjKs2dMwIuPY3SuMBAPewLRpaOdzt5S18UkD61edESEFQcR8U+jBUBDw0vD4XjG5dO/LhL4hLsZpV4y7h1d0LIqx5arfOYmrn3ceHfhcB5SHyV9puFBAYyIdTmWHJoQgSxcaaT1KHJPHueJGrw8TyBOlJGyb9qkKY/nutl6gisk1gKgoeETQDIDXFQduOqB53tkiXMBZ2cqGX1CJciFCXwdjuEeBpIoKzmjMNYSMulCRG68EQr8kE4Dn3yo78h0kmbeHY5Q2nx5e8nwzkmeYvP0UBPTd9X1ogVAQ8PrAhcckzNfT5zUfUns46SH1rVTqWemdtczqwOTPpB0KS6spfg9hmg7UrQuOGB8PY49nJbQOfrRb+Mw2jCkGrzftwEmKgkGNYwyv+eSPB3nuvNjBEDI+3y4g/z13gDXWXenJMVcJ2wtUOaMZmJCcmTexWEnLIbEx9AFIg9IrrM2y+E/k7z4JISkyUBSTuHFkebMUXzKOb31InN0F+aXBxGSnxBEklN+dxZpfsHK1NsyV5j8bL/knhBXAMN97hQBIsf1Tvo7snvTnYu3eUi8k5nbpUwSY4HGuws+65Vmsbro6QmDgFGgu8URZTPAQMbJHjoIYihAU8lJnZOSb5RVkzx/MutLWwANDS8MfOIqoZIVX3LYAUyzYi6iLiBJt5IyeyTZ3EFFtOHQtwQGmBh99smcRVDlh0n6/nE7h6WUCPQ0oGacGUZiqq4v6LT2mT4cjiPPimSlEzU0NDQ0fD5oC6Ch4YWh0gmz296px1fo0B/morhRAX2gtdK2ElQVrXsajzVh7y1XOgpF2kwKzF/d9849mS9FHetCtE4Ew502BEhwnV5Q74usLQvRXjpw+UiyeZQcd+6BQ4JsZwE1NLw0bMZ2cg64cuTll94Eq+19D5XD6Qjg+jjvSfrYf1U4uEkIj+GdXUzePWJUuaY3c2scrWt6EEhpYvMJmpdkpJD1lTD1tDwQ5H+zGMBpl5h9F79ik2/ursTwcI+XMrpYNg8VcihyX5S7x4TY5inkGFpdC/zv3JfmYsLLIG2mDTfVCVvxnOK3SHMZ0S0nOZdc4Akx7WcyC3K8+uKt+HuF8KjxOBNwVePiI3cXlXQrJkEu+oTUKAF19PUskjYdWtiIDh0ts8HXxaDyis2eWc6AIWevOZ7l6xjvYfg4RYnnlyD+8GQmIjlFG46ivZ6jLLuoXUANDa8M5lKAT+CzH1DYoWl2cnynwFS007WCfeRo7yWevXIMHENrU9KDehzwoWjIXaGL5SSJCrlYYDYBJS4xddWau6qq/nhFkkN8ksNnYloANDS8LnB1XsgE4ASFM+dSoz86SCL22j1CyOhd/XipaE8a+yEqoAVuIVjyySBHjH0mpVvAYCl6daw6Shdn4OYxVPYBLhQoskiLB5OZfswO0ksh0m2lWwA0NLwyyCNunRj9SbF1ru3Henm2OKYLBdw7ziWBbhZEiyw1k3YkM99nYLS4D9Jmr9ms8Xi5xps7v1w8wTAWtHug5yxFTOr47qc7y8La1+aRTgDI/BYADQ2fAgqvMai6hOWXaKaT/ekFYgmvqaUFO1L/DbRB5fcgZap9gZC3Yj6RuLETFjlaHWaByiUdjhw8XB6OLw4jsmjMQeKmYmcpANpnpDdAsAB6HUBDQ0PDJ4W2ABoaXhpOO7fNL5gXdIJnddTr9hNwEzTTzDFFksF57RJgnugp9CfOD540ZcAbggw5C8jtj30Ym6wkVCpr7koX5aXHTklK9A/4MicKznRzNfPQFX68ADhtd1Pm7ZVwSsLLqZZjjHzUX9lR2Jgo7+ET2pZphTup8ZR0mHdAuh5yIPs0IX8LKDfMyZsghQr568UmRSdsZaZmmaFbZpGGJqHw9PKIyO12o0uCczn7sz//PgF4QOEIShUJ7gKjOXKV5+TAOiwFi5xkMi7mckyXSJBdxZF3CA2I70hGHnt0rehRjB7E/jgHeg7zYmkOf6RrzNZxDn2i4bJOD0/tNHAn72R35MD/+toCaGh4aSjUbSKvaDuQw/WpynOKOSrj0zM+kLvNOiMT8y0WQGzOppgrY8U6WgXZ8XUonA53U7k4pNHWQeNjNyoCEwd2nzv1KuRTkrkFQEPDa0O0//kQ23zKyZOY0QOPR0SAIdBDRQzQzs9LmeR5svPnqKgj2oZFXmYYRcKB66MfiQ2veDWe/FSgqFPaIKztGLaf7GUoMFG1ECyMwFqjfXFZXY3mFgANDa8LTMW2xdmbkf0VCInDVI1Yr91qY/i83NUgeZyO2vcT1oC5gIrNRKP7MWXZF/5J6P3KBFACIYYBVKzzjVPgAeuMYr+I0xB9t5LKjyhAkrUAaGj4ROCYwsG7clCGsx1QsSfxAgQ1/SQ6EAtorseWienlEewDAJamLrEhohKYB77itjW4+ovnH2Yz+ZWyqN2CIYu5Yks4FGxVPCETGOFHWQAYUy3DmDkuGmp+aOuV0+49+ySQ3FHYKOZ6i5tTFxj+nRd4xHPZy2kq8i46++6Tk/CdEHa8Cdv77GohDJvpDA/9elelcH16XiGoGwK2F7sPnci+qBmafNvdf+8gBR/InLTwGVwq2s/FfU8EVWgwRJz4/VGdz7i2DQG+Gh1KrdSX+C67Io1kAM2OCke1UeXkkFkDKjVWoMKZCBzaHRX6ishDOSZZ9XkADQ0NDZ8W2gXU0PDSkPz7efOZrKK6SCy4ba6996n4mhqr6dKyc5trfRwwmiN/bge9Nn+eCnvw9R88TkXE2Gaq8A0Q0JZ8Td7tI7HVeSDoqJd1NkC8W4B7YIdgBlkd7vMAGho+BTzjr6mZ89GxjBHeb4LJayefGrRdf5AMeumIOoIEh49f9EMH/ou8lVPDIjcp5/OAP00j2bXEdKI2+qlSd7AwopCFmOSkRdX4vPBQRN/rArre0v3C2R0c8c8sg7pYapSXKeHz3hfljvDYe14FFvzU6Iw+kX2iM1S+9kqfbn2nP/qahkAnBgDKmnueQ3NsFXzo5YPIJTlmEAhDtOVjLbHhOr7w0E8j/TsOACyQxazYFbhr/Afls4CZmN31oQ+Eq/54ohFh2YQxEYuQyCaEZWrt3yhhWF8TZqWGifh249tNmIQdWSmUBEU4Zjf+OGgYynECBLedw2nXxnNycEKKSeAVLoCnVs+UG4fFRGT9ctsCaGj4RAAa/YmvOuVylki8rqKas4CrLE7UWqfWDBtC4HEtSWkttqq78J7goERITwQLmgWpO4jwMJwSMVIo1hxvM7TQKuJqqB1Q0A/X28OTd74rtoMuKM5OuGgD4SPYUqwFQEPDa8PBIcDGv4AznH39cAwKp80hwIPBRbGvvjhazvOZd9mcQkfj63CjLPZ8EhwmWbpcoUuy5ClgaAWyJ037Fkl+spK5XFAALTAWcXqQawIW5hYADQ2fANh0Xk4co+AV6e6Bcyp61666iRbEYqay8aqqbXcrkiQVRYLBpwM6L+BSd19B4nHLJzSbEOs0MgrSeN9Nir4jVocNhJE4CbE65d1m0OUkAMIw7NPgWgA0NHwCSOo25/OwajdM4RWpDhEQX3ClK6MyztlhclzxVPP0XFEqYXaGhcuh9CYJRauFU4NIiRMnJ9S5F6G8FlhPyrxk/bm7U1QYwpzM3OsAGhoaGj4ptAXQ0PDa4PRMIir2d34eAainB9c0wxW4ehzkOMEsNXe4bp0mZHmhl67tsoO5GoAsnMBwO9kuV7CTAYmoOBY+uVtc2PUDhF9Q8FTRw7tuHv4WAqDcOSCs4N93udrS/fmO9ufudycm5sTBh7SV+xPkvRAC5B0UEHm+Lguf32/gO3cmyJOT94Eod7PI2zbsVjnrtyS7pCRQ5ZK1q5UsZU1KT/808BOEvvIz/XtNBr3/xfmnRYjotnjAICK+W/l2M9v1agsCYzJjTN0RKNlnJwxoiAcqwMGMcje0Y4Z85+eKT876d9rruYCwca/ry9yg5T7W67FujVhhjHRX5G5vFK4gm+VIIWHDYR3h9jDirg2zAE6SEcrHWFmiiIQGThE+F7HZ1fmKEyhAKtkzmd/e7u9tATQ0vCz868//LVwipGyFiGjlYr6vG2TMhcgzGsdAgaPx5lkWvx3K2oiI7jICcuW8RET0Nu+O3VxQPAxjuyhdFp43x7t3/c3ZHXMfyLWBv3s+rjgnnrvhfDcJN0CkTbSTcl7FQA+IqDX5S8DciWgl3wABQ8e+qIXZRmnkJhOe5pYDRBozwNjywLxbe+JvP/1jC4CGhpeF/+x/+r8dwEqcsomZ8qkkl39dh8kMIlq6uwwiuq+7g4i+ypj8/z6EiP40BhH9FRgcowI7wD5ARu+U30FEDLx71bwPImLUx4PNgV9XE4ndiWxUJNrkvhjqpoHB6BHo3SEZCflCcydS3Tt3ja2GqvCLKtT0k+6fRIJT79Fiw45mCVnJP/325xYADQ0vC//1zz9/XYyAaDOcWYA8kOyu8h9Uw4WIvoKq/hVQoAD4IutoxS/6lchzK2R2yNCzy8hRkzC8Y80Kw6LwboV3QEUjId8CQOqGpczQiaX7vR4RdofeMxyp49Gybr2dpiiVO+mS61AkfsIQInr/+acWAA0NLwv/+HVb/NOZYC4Cd03G7u/JVpjqPAqAO6jkdxAPd6H7uJOaC38iIaK/DuuuYnyJcyEzzcLggulbyV0V8GReYEmQK465Aw0oAApNHxl9tmyyCDyJPb12g1WzgCoBAM6iivUn5AsA89fxw9JAwwYyoXDH7soY6fNBtjLcujGHfk978oRWu2a5QU254cyON5aR3hDWPg05dJSj06fKfwsQv0mOVIcE5P1/kOxyRBdR2RMN5N+TfYtgYq+D6pnyUC087tPmPznUfEH5o8H9Nwiy/7HP0QnbB8h2EuzrVGcW4B47sTHuloMYi54Ot3E7nBOc7rIQi91jTSkiv7FRDUgPdgDlp+a5HBFcdXoJDgn8O02sI/hQyY2y1wE0NDQ0fFZoF1BDwyuDrKNo17ddrrsvUChJFf1tySXBvXChX++GM0k+YZT0meGQiO8wk265KbnNiS6p0GFz8MbkcjyXEVcWF1tnXBqLgYrkuXEDfwIf4dJtgbbqUGoB0NDwyuB4xYmJJzal7j7aDfxuAsZQGHeXHOKy/q9pQu6co5QnqLx6tCnYCxSycJoVMMDAiTledpO6BXY/gLnmTuWJOSFFkOtmWh6I5ywf0mNeY28LoKHhhYErpprUQRQMW4WuGultTpJks5XbjWilP6L88JWhJ2cZxIK4btUISIhL64EPHBk59QWrL26lmRqH8ms75kMLmrHW9Nnfofxo3qQZqXprAdDQ8Log1dcT9ywK6ht4HvqKk68SF/Nn9/cgM1YVhpIkEu7nEVnb4Uocc3/E6CuCoOQJawDNCOwU5U1OxalRZVouxdXzMqaSry0AGho+DTyndx5aWWNxnM7YE8u2DWbgYUCtpIw/T9PJMsC7DkqHPrjpr+BgLjjunrvMengqeXbyv2lCnoJM0t/mRLDy+MASLnaPeQgzny8kg9JWSaoNbfLGPmU2akhpzXmciPyZTNBnhpyTRJ/B9s2Qp05gN6TrTMqwcdB1R5nsvPFOoOeUvrnzSk9Ptuw07AqVCch4sItnpv3fIE/3m+GZyGZ2YDhWcXJ4wF1DOhAxXOfZPkYyn2BsjrFDX8Ghf9SmR7oRyMoVJuYUg15HAF8aGddiL1ppufDDnD4RcOi6XUANDa8NmI2y4MR8TiwanPV8YCVLpg4RYPcPpGIl5WP5CcVDFVgylods9CC6FsInzBCMajzo7eyZKSTw9wDKRRzOKul1AA0NDQ2fFNoCaGh4ZWDQaNF3v4qxPMUaVWNkK0kmgzr9lx3ALhc+U3OiEurfIGR60qOzAyvaODhI+MyuHQtaXAZpTw4rSTcKNCfb4pFR8qPsgLNR1QKgoeHTwBMMZXFLJzBiA8fDCh7neJ1zyz9w7xwSVzI8iGmUlYGanLD/BHFQJw0J4+RyCPwWXqnnIMseOZRfY3DZvstn1QKgoeGVYZ4lK3nJ77WnOgVOeQU+JzaoslZgVSu5cvAT7Y5x6PykiOfqz5Q8JMaKT17+1BCT8bGiE54j3i7iz0WQ2gceUhdX9F8ASH6PswVAQ8PrAntWk3TTguedgsNJgXaKre3BELrXeqs/Iao2tnQ9Zf02d3qg/kM+k9jDNUNF06HKOIpUlUZGRcBDDv6UuZOJzyXF7PywIPDOiSw3UDztqniRkLfvfqj3/RXzGnF3yTJFNW8/ubFd7FSK+YWnzFfcDvNiv8/TiDLm74frrNyc35mHllMwQ2JozuwkmKgwJ/jOlKmcYZ7LCSc/5wSPD6nazU9bnJapt/+eszwfgBAJ6zagbotNkQfcyeHYUwRo1s6boeoEJmISEhMIEnTtR/t9XsOp7ezlux4Xq9h8bnYcPbJE4JNNy5qn5nnIroThX74NSNfWpKukLYCGhs8Fhev4oIqyV+7J7IODt4QdRj7hXVVAj8b1BS7X/oq8CudzNYulAx9h9w5VQoihdtVhDl08KsFH9YFQ8MmQcp67+afTQBsaGho+KbQF0NDwaQAVZKdnM5m2aq5tnzZyrcay+1p49pGCvEky3DzFYp9PeinRuoBEjtN6+ik1yfEMtzMzTA7GAPJs5MTb0O/z5s4HJiFbPKugBUBDw0tDip063rPuCi3vteNJDA0OkdkFpygZURUydTzuMqCa+0AhkTfHB9KtyWqIXaTu6vaHrZkllRSEHqBoG0ROan4tkh70+UBKtABoaHh9uNaqK8Y7Y5rzM6Z4VkqqC55joVCqXWyrkApOLP5UJ+C5ZsuFDVTR8wBAFp3OnyliLGkAR2vJ93OKARQtskg8Dq0FQEPD60PBhWfBteboXBcue4qocCKRDHf47RAiYgExgA2fUVrz9venViHw6bpAt891+wtIBkRMgarG9YySfjEbWDinAlcRPCA5h4Kzd+5vsxtoQ0PDvxNwng9k2QeuqGmzEY/XZWMDXR+gW0F40UFEbvHY8yk316GEgsVJVQOBr25edQMNHT89Ex9rPjfqZySUCzxc7GxaonC5Ty0AGhpeGU4egqwiO/4AqiuDvqtOIaHN0NxxJb63a19/2SQ1q4uv3eKlFMiSqcC+Lw7bQecqJ8Bk1jxRD+HkocO7x0jyydBLebcdBG5o+NSQOQbwa3fWBfxhYCXoCBGqJAql69UDCqKP+t9PoCwzO+UXQz4kIJ1LI+ZQ0bFfdF4x0d4u4mSInG2ILGOezw66djx5Z9wPWAdwsXoz0nVeVRuqZcy5QnmeyTV5oRDX+oZlqLtaXvV6unXR9fX5JKeG5bEwPwpOkxyWK5+WAYczc/A6rAouF4dntKeV2FjB8aN0WkuY7bzoN1CCa4Cfoaeh4fWgLYCGhtcFn1V4PCWFYx23p88UqCRENFCWoztnK9uVuhW7+1tDslt+LNIFRcj37A0rsV3o/ie3z3WdE7pTDm7HABoaXhmETn7hR/bktKISnyr8/rO28hUX9bTuzx7wzAqfZ3VRStlSLHfKfILiDPrvFBUJyXHxV251hlM84sMkHf1XLQAaGl4aLlmopDrs7+zLtUwMT2uZlgGsp2Vmtzko8lm3Sz4yxOwNR2oiGX5QWeN2Yyjg6mz6ZwRPZvTHnoC2Mz0nyLTkNNDnG5+OKGgXUEPDC4MQcTqyKnl9nhIPmjeIHHBiM45ShqlclDen4iCLZGyQPpFijI4+XCtQnASA6vmhTsRzmcNTuIMeIa+bVY6a59ql24DuLM5+jADAMNppv+XTLsEnOEWMy6jjqU4OP+ZtgXeA8RQVDHdxXGHL6BxZLZbPHH4nGS7C1z8Kwvw8DPmKyO12C8Fzqp7pdQQ7zFsG7Pr0KEPzHCUuX49nJhBbPRPt/3cLHFTGdJyL4wwHbbXInzx4TZgdLtxG1KWuH06nOSLPrD/XNwomxWhezE5zRmaxO6br/gGXguSiebi6pDNiPqCqn+/Pz5x1epnsUwnPfGhPLwRraPhEYJ79j+TfC1Fx3CG6gExGPuO2zizbbQqd8GQiPxZSltTRQ857kDmcur8O+RZ0Zqn43DBOkvIZyCsG5oPkDgI3NLwu/Oud7ksTnQbZ/CRShXjxtlSyOKQMIvp6H0R0JyGiu9gnDyGir2KfX8YYMojoyxAi+lfE6/qQWLLY6CAiut+t5A71CTFknL7kVGFNxz2W0PA9DqDn3a4FkSDNcHfkkSIxUtfcdcZhWlDSOLR0uJvbEkyjEBF9+anPA2hoaGj4pNAWQEPDy8J//POvd1CfVUEUIhoQtl0lw0ruoCfe36fWP3bNr6BpzvKvag2sCuNORH8SIqK/ToRjkBoNTjnNOvL9vi8r7X4q77RbSVFHVCUXIlq7mX5FD/jdulabQND2QRNhTUuts0tW2KG+3LPynkyToNQ78wjc/84MOlgA+bBlnGpKNX9zbwHQ0PCy8L//H/8flD9M9k1kHEP2tbqJhJSjoZAYwlaCeBYTMweREN2H+YiUoxrC+11284n860QIsme4T9p11Bs0NsFfEfMSM6tEXVUTuVW+A/33YQTcRaaA+EKGZyL5AgLsyxIZQurmmvV/FSGiX2Hq/iJCRL8XIqI/CzjXKAm/xdPXUyncNVjiBAPcpVQHr+lw/f7bFgANDS8L//H775Q9GLtfuv+wcmU+wJ2XeJiWAbSCu+6TVjmyTjQ7Fmv+iUjNBRUSxtCnGJioJsNVAQDMHRj0VyEi+gKmyViYF9d2smGZJiA/ZmWNbUyG/iuw+Pn5JiYn3maPsM01pUmbEvGNKNRRAYBqe+XEx8o5AWs9wqTRZ+buRMih/P32vQIgb9KCkNNDn9kO6LpCzizcqZy7EHekCfl8IaMxNN+knvIUQ1ZizvK8IP7J/Nd/M8AxhgRWzKF8uBkRzknAhkjyZIYnSDCfFxnAF/m4iPn07HIX5TuZs07/HuEv8pus9aNyrYJh6vgD6tCuiRxpgE6t9gFcD0Gei9Li7jgykfcpoQCQpIP7tlEAoLKvFsBi65PFD2T66Mia4VsTAFHHX71A9Ht7uhKFNjl3EGPiPDZzBiGnyHlp1hOqzYLYBJ6xizATkU+pci9wFgzvbQE0NLwsJNXRgGFNrJNzxXFdj7MVJ4K0HoeIiJK2iqn3Anzt6W0fQlkS3pEeQ+xKgFFaSv8iMe6dkLXnE2C6qa+Zn0ZayWxVEMsBlRyeEY7g0P8uagHQ0PDaAKbtM2nkef+fxaaAr5zO12X3DbmcS6PP/aM0Am+Vg4L7RpExtyRiEjogQcI49LyExpQKNaGc+fKqcikTEBg6L1u5hdByKIciFKrPrBXw4qEFQEPDa4MxiI8o13D3oJ5fqJi6A8KpUyOJC8SIHDrh6esoGOHGcxQej8bIsk0iq65sdguVI6N3bY+jJqMftX5cI60WUSE8D/LS00GpJpRUlkGvA2hoaGj4pNAWQEPD5wHcvib4m9ffkfRKxv17Tprt+XCrBzvWXNbXkmgrSGohcfcJdDwZgYXVciS82i8vfwKSonFO0bn20kilpz/tXjo6fHLXWt4CoKHhtSExvUPwUDL/mBlTA1xAJ58EuZIcfS25T/oiQF0kpvI+PbeXjpSXsZn7mhA/z4R9W5C4py3wwvVBxjzV3bWfrsLWAqCh4bUBPfg1Rzk7rK/wshMGjvc4dgS5QJz4VNbla1+1fa95+CmWELFm1Ce7ooST/o4Y3QZ2H2XhF7UwzHDYJM9lcz3RZ+8G2tDwuSEHeCE7c96dvGX4NuR4H0Pi/xU4mQBYIM7MLsKJpsnJJsCQ8urE7USdqDpaIIEoR/hJgJyRBMCkWCcIwU0kGzlQcDCJjoIja/1n11ALgIaG14eT7q93DeZm0WeX/qxD5Fg0ODwOvOaICjDiXhTi7mcPVdTbw2dtRFQgu3/kswVvvdTTZ/E4VTw5aB7BCRWm0xYrgTHR6IBHMfwYAYDrSC8OWsmHw2Q8H117GZaqlgt6SwjHjGyqcEnqvjjRnFe9llR9aETX8A1TFCAf/5IP6gnTmKvlldJ5Ne+8Ls9jOa0Kvn6Cp2NnLuB0xA1en1Ydk3+Nrzv6OwXPHw4OY8fBJZUQ0Tp3TAIOaHFifpmpnyA7eSq3D9PU1heF9VNDdd6FuDcyoPlagIVZSFXRb4NIZ0ny2/A2EXL4pDabCshHwGdSVWy0BdDQ8Bkg8sqKecSylVzP5l2RYp2wR++04JMDwqpszZESJ7yE6PZZhDHsrpNps8aFx3wtIlt3wApxY4EiTKO6nBX3B9fT+eN11l3nF0Jkiemf5ugj9kavA2hoaGj4pNAWQEPDZ4ST28c7k0EPTRowp7Awk6qUA5BnDfqw5cPaRQc0ZfTVlI46aItbLj/0JqFrBX3/i6qquWnUXq+fOLLyb/GMXetMPszg0XXDREQ3IdqnmCWEcvhEa2uVTGydBdTQ8LoAQdnviGFMKZDyapybeksKdFEkR4uRRT5dEhYceJYJbPcYXI0sU4xlRk+LS12VMAzAk/NzkHIC+gvpCFEFnIKC8jSDYyPMcwfUFm6iHDOIxR46BtDQ8OnB84fpBBfa7As5zEmXBe3S+NWJ9ePtU6YRcq6Hp7fHZktDP4UqNKLLuwfSrCcfUoboApaj5IChzD+i+19TDFCDMBiHUTtsF3N3CqtIvMwzkK+lXUANDa8LwJA1SydWqDkE6ujqMwAeBwwc8214q9hhX4YPAW5nvzpKzBTIrDaAY/QyZUvEx58LSlGr1q0/k2sGBJhzsRSyJ6nnJwkp50lz5Tei7YO7lCgn+FEuoJy3lzqKCZRlPuXFaSHPU4LIc6eBmPKUknzMCKaHng6HCQPP2ZC5zjdAefLJ92MrD9LJh+SUXefRlc86z9sFVeUkn5JHdxeng2gu5+ABvEbq52T9g1LCyYI8nzWe7GmI/RBJNWfXdgA/wbqy3EL9el5p6GGLhFoNRhniXFgctlWO0s5nYV5TW9Ps+xb7zEIlUK4SGK7BHXSxmVEAJ1lXp20BNDS8LLCe1eUhq8y7+nIBOacQssYsRxaT9Dizylt2VsJJd4aSvChMTZAzA8VOnS4uRCRjtWUIYh8nCnmu4+RMpAffV4OpBxTqyOETm+PxwqdwcUF4ih+MjgE0NLwuoAYbbjEwi5O6ujZ4YIbryPsK9lp2jIzyQGhVYDr+88AW/K75r/cJlfNjujk7otPAsnfq5AlC3v0wmJzHnDX9o9afntEJmHsdQENDQ8MnhbYAGhpeH4ogcOEjqX3l3lUN3ucV+oQSkgfuB3Sb5IpryXHUuysXyankkcP+0JqVdIEsnWMa68G/lGucjYVjg6OOn6m5xFe5hoAMvdsCoKHhtWE6siOfUI+CkAXwqazptudMYcvIDA8bFRcNsx+8cBNZY0VwIyJOm2peBZOP7Nr8OSKy3E2QpbMOQkCGWQi2OsXIdUFp6gqXkX6e2PppX41rJ4+nNV13DKCh4ZMBu0Nup2UAd+FTjDmGlBgoCRmNmX89w6HcebwoQyJjHS4wG8UDlEOvaXiF95812ZRNCjnO7Eb0AaZrHbl1DyBVwkExpwzaZ0oAdxGud/O6nl0LgIaGzwXI/oRw9zTZdz2HtbtHdbrUW1Oh9ylF5n5cvXWEWpEWEsnUZtXb4eA5FX7PNyaqDsPM0W2Yp2oC89QlY6ecugkubnxySx3mLj8jf17N9wqAnP1d5mVjQn2J57Qx7zNbOgcC8G5O1X+4DXXYzTh3EW6VlJ+S2a97D4N9uBlyhmfqhFGUQ6Pqmc5bmdowRXnJxWksod9c8+LRh+ULp0nABQ0XiwkylCsYXgWuBsVRD9by1TJ5MwBl+gW6llCC+j48wTM/fEC074DNbZVPsbH+D0d3oVlzSHr9ACC7P/wwA+KCtkTm0ZOW0F637RhAQ8MLA5/5w3Oc7OC1gENjUON9KC51K55DbVByucAVtdlqDfCprpNAzgO06gd+aZiP+lQWbIVeDuIUCctd4yqtgPzkVXN3D1N/GoNWbwHQ0PCyEDT4Z5bdPkB2zYaqjivjAGTJCi2gsyWiWHlBieNiuCJ0LuG7B9fw8ZTM3pMxkUwKzqicqDkZOCAOuYqAFEguXUC5ynmMvQ6goaGh4ZNCWwANDZ8ABLwlhbodKlbluaT0RB900yqJse6J3d9J9vOGy241TYTaA1Ohk0p9NuNFyuMbiTCIXtF50PoLbV6LHsQaDnbYt0ILgIaGlwVO7IVocTF1x5szXeGDHOUjwVGf52NeKc8PH+PyNdC75WKpLmSdtxF09LMrPqUl4XkCRbbqpZcGo7surHLw25TNcQneaXTX8YMOAjc0fBq4CAOXlY9BxSKX56TSKgjFwlNA1bH+J7JBK7+/teIQbS5IRBG4SZBQ65gsdDQjsDfIdMJsoiSJ45CyJHBjgb5dKCMZKCfwZscPEADXqYdlZuf+/CGQt32mKtsPcxwvUIWdkE85mrlViSfsPp0JpmqKHlJ4cfejeHISZ3hAYUrD3XKku9UpPTd8hlsnOE1g6DT3nnf8Do/jmVTjv0d45/uY/h5IJse1VJhifpNByqzuJER0W9NIRHQXIaLbZJ3r+MXJjIRUGNxE7pDhszbWHFbi99Gc1+ZDYcy4HwLVhYhkDCK6QTmvrpFUvStjUzXRskRq15Pdez8AVQvPiC+qI1mEiAb41sYYG988tPErvjzOYkheuG0ZoNjEqQvViJwcRFQnY8If70BE9NYWQEPD68Jfvr4rgwU+BTxLeeDkZTciGrM+G9ebHHwQ1iS7KwPvLvY37BbKjwHXdxlEdJdb6kg2hvuSNJOxsrUdRszEMwDDXZbLHtHiUgPd8Af9OcIDRJEwqeS40RQ8RHoi7/x8Eyait3VNRPQ+J1CEiH4aQkS/CBPRV+C8ugB7zpeVLxieubsKJoGUSBzXpQBwEtdGffupt4JoaHhd+C/+8/++qunI9GHJq5hy7bjEUQXG+sZ6FpMdsqTLMiZyE0M+7sOu593Jygd2DSVQk0DALLExDJvcRWUP3Jrq+frEeRhEJHdiuZMy7ncY/hh36wXHAqMYMDlYMop5wPJbfBxD7uO+K8MEF8aHHqFcPyMqnuB8Kazkt7+5twBoaHhZ+Otf1g/cM4LJd9adeXuXqBsmcS7HUMzjjAJj3Ie6a27QZMSShRyVdN5oUTCskoF4aHc9W636OMz79u5M5j4Vc96fSwJMkhZyInkjIp4dfDVnDsuN1PU0rYTpVlP/EhPRbdF/37hXdtBAd+ieV3c9sM6QSaFRpWODcZPc4UlB+QC0KDxcHbj7873XATQ0NDR8VmgLoKHhZeHt/b504zcicw6YSx0VRfV4JMcCliSbgIZ5POg2nMcJ3Dje1RNREZTzJBVcLpydPKCP397A/aIBBw32rog27YgxeJA08ry6k+UYGkQkNzSM0uQM07fn7N7vFj9YfS6XDvQ24BMtALHxyvBx31wN7+ISBNDuXVv3KeHu+LkFQEPD6wITn04C8HzCtdklO9OLNqd2meuy7+olL3a/GiLyvHEDCICcZYq5j2xkTEbIqU05xOIYHLhdbiXkv0JqqRtFrMuQXkV4gmZB2wH2bhK5o5TSWgz8uqdDVfl+C0BEbjfnR8IEQfxKPo/wIk3weTjt8phzE/FiE1zm/5UJgjs3VERC/mIeIOI8ja7s+kM5kd8DYVqukyDLfU9PTUKuLT6I7yG43IU05NeenniJDckLtIWX5+86DZSI9Ac/+Qvk6aaUdj8LRJ5RarFxupr/4jacjrcfpjFhKSrmX0qNC4mYBkFuBGsdnML84MQtLcaBn+TiJWVP0b+ShfJU4MqEE5Li/B448EcJECL617/8a1sADQ0vDELIpwqIrCvrzu74eHBhhLVXq9hxGfxTfKkrgQQpGhWLs0q8szISknivMyzKfTgPMPmpW8ErcHnVNu8ose9UlNtsPyALVZ2BRQeBpkUtABoaXhfwhMPIm2IM4FTTrcydNsTNMlVWHeMrIBsK3wVIkUQFcjrc+WCx2pGExIXherih/irj3auE2WnIQNQJHDt93u1zul2WJ6sERRmB5HKpnwmje5rOnusYQEPDC8OT7qsnPMhuwVFW8zfAeZMy4k1JLXGTZ63Nob6KE4sBYL2KdlYXCt6Moi6gWbz1CTfOR+AxujCKfJINoTWGlZ1Py5w8D8whZxFKp4E2NDQ0fFJoC6Ch4aXhGb/EM6HJ5Y0wzTo4ExwCqYt9Wg5q+nV2TQzB+u5GzpTRVr6BQNd5SANq7coV9QGSuv283VCEl9Xl5eYWMrWK8O/U/TGSXTvegivJDasFQEPD6wIzbj5TcSh0hLusmFhn4bsRkczUesEaO4sxMTeMNSTmLq6mhRY0u4YNwSQvoS9dQK5rZJ4YFmYQjd57cp1m4/jv2k87t2CspB9U5p6GNvDdGHfBvJGkU1JvkrVeDLQAaGh4aXAMzmmCwAgEdgUFBVITRs2tPxxfRkf/5jqJwZ22d86e7KnqFsFpK3croaClTwsSGIQnyfUGkVtmDOHmTFmPXiKqEVl3hmfsg5Bc7hdJ0CbJRy2ILCw/6+BkYIglkiAtABoaXhlEHFs/Qs2jMcn9ept+yDRPsUqIq/oFU4g2GR/A5JTpu9ixRxwG4C0ASPS84ukOfRpFHiwe4w7WAGGiESUUebkBDlhTbiUtCGYQY2iCiLM9Zk1zds2jjAUaBPHwA4LAD/Jey5TXahXVRfOyWlgFNj9xK39cyFOu/SlvIbbwmWkut6EPxIvCLvyGtUUfXS53vbYr4Mwrqsrm5SS4DDNYLhcIPk3gBZw2/Q/dheVa5eEQZVssvyDpexYq/jcOOH6amY77H7GJhVXyEJmwNpss1tT+9c5USFIxix0mM+kq6mOrQ6+ypc31I8LRMc8nulsoEp5XnoEsuXCBflGafzIyhYAIeRTFVOOAPW3sz93085FR+PJJFwx9/WOGWm0BNDS8LDD7XEzHa0GbTAq1dxP5K9MupyKM9X1HeU0q3p3aRj6aGBVv0OMnDE9BxHwBU9nFnSr8Ais1RczmSHmnHsT9Od1OVcB7BiUKw2ktOHMpHlA0djH22Qg1VLQnFrQAaGh4XRD/Fxmbv0GB0UA8dhXPeo4NZUa0s1eQfzvnhpGxeoOO0CkE9f2uBjisIwRxFMscLoFeFw9d8eE0/Ix8SkF1MtnmcXhXUY8Sg5N1ikvdS4dJK5DUgAsvJE8A9XbQDQ0NDZ8V2gJoaHhN+OMf/0is4dAVq0SfTNTfOau9ft9GokrtDDvVLAXaHClE0O6gtSpdoNqikp4jt7MX3Fq5Rpw6OhLDThNferN5VAqd3bmqwNbJRhVaQnOSruYyEhedcYH+pN27DZDISGLXaN1uAdDQ8MKwg4iRIxOUnxaLMVYB4eE5jMuDCE2JlttdHSyxk2NePPSRPR7oK0rV5x1D+0A2YDjYY8p5k1rjIBiSTC1E13GoRES6nbY6giC+cj0KJ3ryTqy44oHsefGPEgDXuzpjtsbDpIsTBvz6cJNe8ZtO74tQWO4bjKksgdTrrKG8x/Jpd+KcIfNvuecwV7/YTV5Q+srnhVlD5e7Z5Md7/XqcoEypClN60aRMGcr7P2fincJbUVKS+u83WajwdyPk+C/e/FCYNWi8F77qA3OcpY7IumtUuy8JuSybU7ItnsuZeIBvDigvs0gkVlPiap4e1CF8r7n/CW/+jZRPoy2AhobXBfEcJXOXSw6/juE9umEg54S1yHHvzP5mEwuHFnxqBVSNvrX6CccBNQ+08652I6F1LJjrArPjAY2ZOM9FW820Qh1goGo46w04u/iAi2EhgHVwYOXr7o2I3DLjVZ7sBtVsXI8tABoaPg1kH4Ugv4OKq8pkxgeBsdw6QqA4e89D1IilwFJ0CzXQwk5ZNFK1RNKKktgFenw2nnTcwAVMSWO8VS2uSPOyETEPNVFsBnSMqixIm4S6JXRZvh76MQJaADQ0vDI4R/bBR5HV0u3Is0b5mJFRWBXKBHOnyK4SedeGyDNOcIdgn6wIPj2oKMCvk/T7mPPd0Qn8egm/QhIV1O6+drF/UMk8OtgROq7kLsoTrtACoKHhZcEUW9SZr7ktQZXsdsFDYLLfmXilEh0cQZoXD1zp5BMpgsBXkYMDJIsHeXEocD0KPbQDMGaAQg6Pr9F5JCK34VKWtloFBWkV5UpUZHcW2yPH58gg8bYY6HUADQ2vCf+WmQUNf6fQFkBDw+uDxkuzTx8CqRL9MxPSrhDkVquin4Rj2NEuC//+xGQarOsZOy1SXAL6SDJjy9XctrB2x5Btdw+qzDnI4Eiry9VGyqGJ6CuTot2Kdvh1GEiMVUXcUtSsZ62MK7QAaGh4WeATD0vViBYXyftlpuVNJeud0mAHCqarBys/k1ED/BodIyc30bGYhSD9BhiiukTMTwV2EvhPntxx4jElceznfUYneUOHzP5OldWTe10jYIrIY7tNVguAhoaXBVvcML+7NcBZQ3yCO6c6fq2ulzhuX7PpVc9c7KD7u45jckt27UtskqsZEqn6Q2mF4dyixzyLh+XT2vghvaR8mdV3L5sMDIQgMZgotVpNKQyd6l0MdzgCWgA0NLwsTLcCkduJjG43IpdKIoGluPYX/hD0aWh0t3AjJZ1acngVu36GXT4FHilKmmTgmOptnPSUi3ktrgoSgDGfRqix2eF3xSDaLROo84fJHHFgXmBMOzmIfqQL6Hoh62nR5vdAueAzrLzFkrCq83a75e3py1W75WEAefd/XORctsLlpmG6Hq4gzUM4zcm37bmflyiHZcAZeSgJZwNsJKdDBXD98MOXB6dujK3cuIMHyoXiD08IoOoNKen5N16q/SMhLXrHe/MOFCRGc9RWQWxUWaKYfEJwTMo6n8T1AO54J2+QyJPJEuvFr4XqHZGoZcDXmMMbZjRDybJy1iiSZfOcLCvskct2fjnbrIki/AH7bQugoeGlIa8BHikV8oPiTYoFYqukkvm0K3vulupwpJRSxYz4CdKBh6vSQuQEHjNn0h/06+wLFBOmBq1lXwlRtnfc0oR9JXUTLPGrCLLugndnDcN0awHQ0PCqsHjQcfsHLI+eCmxV8Nm0MkDT4XcFqHbNodE7fVklrpd6Biu2hBisJG94tFefkC2FTbBELRPp0fbPtHVouDAdThClGGW6s8QNsqfXATQ0NDR8UmgLoKHhdUFdG169nWofqudoB8wS3IwMC1CNhPq1Zl5HlfUeuqcL939oVUQirnqqK+rVKebsYhL+4MYI3gM0p+VG5DZ9y7tgVIEIjHCMPMGH+dsGxyTgQNkjaAHQ0PCycHsjt7/8LM1un5U5DjHMwUSaL782HJ78OvI4zTOU1QpCDnNbiCEWMLgR7y5m11yQtz/23phMRDybgc/C5SXMbocRYwhv0ByZ7c1GxyyLWpw+THEtjrS0cnX4j1QC9Rf+5XEi8/u7kpWoCsJJ4JNy85HuYowHgxCYiatz2QKgoeFl4euvA3/8iwXgpjSSeBB+wgnpInDg7QwWyIgYhowxu1hiRD92+Bk4192Qz/qLcWH9hcbuIrZ5PYr626JgIhrQ0VokNesNc9zL4LWx8jrX126pTIDKK7WGDSHsyu9OFJgl6zx6ISKMNTNo+5Mvs5AesGNiQLdXAvkEZ6HxzdC6nfUm7bcbqfATHkT0Nod+EyK63W7/f6UYTyEyDHDJAAAAAElFTkSuQmCCAA==" + } + ] +} diff --git a/Assets/Models/MD_SkyDome01.shmodel b/Assets/Models/MD_SkyDome01.shmodel new file mode 100644 index 00000000..c708e84b Binary files /dev/null and b/Assets/Models/MD_SkyDome01.shmodel differ diff --git a/Assets/Models/MD_SkyDome01.shmodel.shmeta b/Assets/Models/MD_SkyDome01.shmodel.shmeta new file mode 100644 index 00000000..941739ca --- /dev/null +++ b/Assets/Models/MD_SkyDome01.shmodel.shmeta @@ -0,0 +1,7 @@ +Name: MD_SkyDome01 +ID: 82516582 +Type: 4 +Sub Assets: +Name: Sphere +ID: 144340823 +Type: 8 diff --git a/Assets/Models/Quad.gltf b/Assets/Models/Quad.gltf new file mode 100644 index 00000000..493c164d --- /dev/null +++ b/Assets/Models/Quad.gltf @@ -0,0 +1,104 @@ +{ + "asset" : { + "generator" : "Khronos glTF Blender I/O v3.3.27", + "version" : "2.0" + }, + "scene" : 0, + "scenes" : [ + { + "name" : "Scene", + "nodes" : [ + 0 + ] + } + ], + "nodes" : [ + { + "mesh" : 0, + "name" : "Quad" + } + ], + "meshes" : [ + { + "name" : "Plane", + "primitives" : [ + { + "attributes" : { + "POSITION" : 0, + "NORMAL" : 1, + "TEXCOORD_0" : 2 + }, + "indices" : 3 + } + ] + } + ], + "accessors" : [ + { + "bufferView" : 0, + "componentType" : 5126, + "count" : 4, + "max" : [ + 0.5, + 0.5, + 3.774895063202166e-08 + ], + "min" : [ + -0.5, + -0.5, + -3.774895063202166e-08 + ], + "type" : "VEC3" + }, + { + "bufferView" : 1, + "componentType" : 5126, + "count" : 4, + "type" : "VEC3" + }, + { + "bufferView" : 2, + "componentType" : 5126, + "count" : 4, + "type" : "VEC2" + }, + { + "bufferView" : 3, + "componentType" : 5123, + "count" : 6, + "type" : "SCALAR" + } + ], + "bufferViews" : [ + { + "buffer" : 0, + "byteLength" : 48, + "byteOffset" : 0, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 48, + "byteOffset" : 48, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 32, + "byteOffset" : 96, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 12, + "byteOffset" : 128, + "target" : 34963 + } + ], + "buffers" : [ + { + "byteLength" : 140, + "uri" : "data:application/octet-stream;base64,AAAAvwAAAL9pISIzAAAAPwAAAL9pISIzAAAAvwAAAD9pISKzAAAAPwAAAD9pISKzAAAAAGkhojMAAIA/AAAAAGkhojMAAIA/AAAAAGkhojMAAIA/AAAAAGkhojMAAIA/AAAAAAAAgD8AAIA/AACAPwAAAAAAAAAAAACAPwAAAAAAAAEAAwAAAAMAAgA=" + } + ] +} diff --git a/Assets/Models/Quad.shmodel b/Assets/Models/Quad.shmodel new file mode 100644 index 00000000..aebbb0a6 Binary files /dev/null and b/Assets/Models/Quad.shmodel differ diff --git a/Assets/Models/Quad.shmodel.shmeta b/Assets/Models/Quad.shmodel.shmeta new file mode 100644 index 00000000..9fbd4b9c --- /dev/null +++ b/Assets/Models/Quad.shmodel.shmeta @@ -0,0 +1,7 @@ +Name: Quad +ID: 80501355 +Type: 4 +Sub Assets: +Name: Quad +ID: 141771688 +Type: 8 diff --git a/Assets/Scenes/Environment.shade b/Assets/Scenes/Environment.shade new file mode 100644 index 00000000..9b0e6005 --- /dev/null +++ b/Assets/Scenes/Environment.shade @@ -0,0 +1,10987 @@ +- EID: 18 + Name: ===== Palette ===== + IsActive: true + NumberOfChildren: 3 + Components: + Transform Component: + Translate: {x: 11, y: 0, z: 0.25} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 142 + Name: Wall_Palette + IsActive: true + NumberOfChildren: 14 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 6 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.5, y: 0, z: -0.5} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 7 + Name: Floor_Small + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.75, y: 0, z: -1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 139921228 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 8 + Name: Floor_Long + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1, y: 0, z: -1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 136991843 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 9 + Name: Wall_Pillar + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: -2} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150352316 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.25, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65540 + Name: Wall_End + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.5, y: 0, z: -2} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 139594893 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 131075 + Name: Wall_Corner + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3, y: 0, z: -2} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 134714737 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: -0.449999988} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 2 + Name: Wall_Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1, y: 0, z: -2} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140834166 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 1 + Name: Wall_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.5, y: 0, z: -3.5} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142689599 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 11 + Name: Window_C_Small + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2, y: 0, z: 2} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 147863396 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 12 + Name: Window_C_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 2} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 148351779 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65549 + Name: Window_O_Small + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2, y: 0, z: 3} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 149786048 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.200000003, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 2.0999999, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.899999976, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.449999988, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.100000001, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.449999988, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.100000001, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 14 + Name: Window_O_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 3} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 138781993 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.200000003, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 2.0999999, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.899999976, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.449999988, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.100000001, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.949999988, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.100000001, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.949999988, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 15 + Name: Wall_TBlock + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1, y: 0, z: -3.5} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 149359798 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.25, y: 2.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: -0.5} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 10 + Name: Door_Wall_Frame + IsActive: true + NumberOfChildren: 1 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 2} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150924328 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.150000006, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 2.125, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.100000001, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.455000013, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.100000001, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.455000013, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 16 + Name: Door_Door_Frame + IsActive: true + NumberOfChildren: 1 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146862321 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: ~ + IsActive: true + Scripts: ~ +- EID: 17 + Name: Door_Main_Piece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.400000006, y: 0, z: 0.113215424} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 147152385 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.800000012, y: 2, z: 0.0350000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.400000006, y: 1, z: -0.0175000001} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 168 + Name: Kitchen_Counter_Palette + IsActive: true + NumberOfChildren: 14 + Components: + Transform Component: + Translate: {x: 1, y: 0, z: 6} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 138 + Name: Furniture_Oven + IsActive: true + NumberOfChildren: 2 + Components: + Transform Component: + Translate: {x: -3, y: 0, z: -1} + Rotate: {x: 0, y: -1.57079601, z: 0} + Scale: {x: 0.9998945, y: 1, z: 0.9998945} + IsActive: true + Renderable Component: + Mesh: 136828790 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 139 + Name: Oven_Door + IsActive: true + NumberOfChildren: 1 + Components: + Transform Component: + Translate: {x: 0.536169589, y: 0.246981457, z: 1.90734886e-06} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.999996006, y: 0.999996006, z: 1} + IsActive: true + Renderable Component: + Mesh: 150740704 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 0.725000024, z: 0.850000024} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.375, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 140 + Name: Oven_Glass + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0.354394436, z: 0} + Rotate: {x: 0, y: 1.57079637, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 135623020 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 141 + Name: Oven_Tray + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4.53383137e-10, y: 0.649999976, z: 9.5367443e-07} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.999995291, y: 1, z: 0.999995291} + IsActive: true + Renderable Component: + Mesh: 136078992 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.800000012, y: 0.0500000007, z: 0.800000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65679 + Name: Furniture_CounterBlock1 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.75, y: 0, z: -1} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.999986529, y: 1, z: 0.999986529} + IsActive: true + Renderable Component: + Mesh: 142281760 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 144 + Name: Furniture_CounterBlock2 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.5, y: 0, z: -1} + Rotate: {x: 0, y: -1.57079637, z: 0} + Scale: {x: 0.999961138, y: 1, z: 0.999961138} + IsActive: true + Renderable Component: + Mesh: 144974966 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65683 + Name: Furniture_CounterSink1 + IsActive: true + NumberOfChildren: 2 + Components: + Transform Component: + Translate: {x: 0.75, y: 0, z: -1} + Rotate: {x: 0, y: -1.57079601, z: 0} + Scale: {x: 0.999866903, y: 1, z: 0.999866903} + IsActive: true + Renderable Component: + Mesh: 141601355 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.860000014, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: -0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.100000001, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.444999993, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.100000001, y: 0.300000012, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.444999993, y: 1.04999995, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.300000012, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.04999995, z: 0.444999993} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.300000012, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.04999995, z: -0.444999993} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.100000001, y: 0.300000012, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.449999988, y: 1.38999999, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 155 + Name: Furniture_CounterDoorLeftHalf + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.500010073, y: 0.0500000119, z: -0.460008144} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.999904633, y: 1, z: 0.999904633} + IsActive: true + Renderable Component: + Mesh: 146024338 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 1.07500005, z: 0.462500006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.540000021, z: 0.230000004} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 156 + Name: Furniture_CounterDoorRightHalf + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.500008821, y: 0.0500000119, z: 0.460010529} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.999917209, y: 1, z: 0.999917209} + IsActive: true + Renderable Component: + Mesh: 146717179 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 1.07500005, z: 0.462500006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.540000021, z: -0.230000004} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 157 + Name: Furniture_CounterCupboard1 + IsActive: true + NumberOfChildren: 2 + Components: + Transform Component: + Translate: {x: 0.75, y: 0, z: 1} + Rotate: {x: 0, y: -1.57079601, z: 0} + Scale: {x: 0.999875546, y: 1, z: 0.999875546} + IsActive: true + Renderable Component: + Mesh: 144189529 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.17499995, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: -0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.474999994, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 154 + Name: Furniture_CounterDoorRightHalf + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.500028372, y: 0.0500000007, z: 0.460025787} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.999955058, y: 1, z: 0.999955058} + IsActive: true + Renderable Component: + Mesh: 146717179 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 1.07500005, z: 0.462500006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.540000021, z: -0.230000004} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65687 + Name: Furniture_CounterDoorLeftHalf + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.50002867, y: 0.0500000007, z: -0.460027218} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.999942541, y: 1, z: 0.999942541} + IsActive: true + Renderable Component: + Mesh: 146024338 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 1.07500005, z: 0.462500006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.540000021, z: 0.230000004} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 153 + Name: Furniture_CounterSink2 + IsActive: true + NumberOfChildren: 1 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: -1} + Rotate: {x: 0, y: -1.57079601, z: 0} + Scale: {x: 0.999916852, y: 1, z: 0.999916852} + IsActive: true + Renderable Component: + Mesh: 141601355 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.860000014, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: -0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.100000001, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.444999993, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.100000001, y: 0.300000012, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.444999993, y: 1.04999995, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.300000012, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.04999995, z: 0.444999993} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.300000012, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.04999995, z: -0.444999993} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.100000001, y: 0.300000012, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.449999988, y: 1.38999999, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65688 + Name: Furniture_CounterDoorRightFull + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.500018299, y: 0.0500000007, z: 0.460019112} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.999967337, y: 1, z: 0.999967337} + IsActive: true + Renderable Component: + Mesh: 146520338 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 1.07500005, z: 0.925000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.540000021, z: -0.460000008} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 158 + Name: Furniture_CounterCupboard2 + IsActive: true + NumberOfChildren: 1 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 1} + Rotate: {x: 0, y: -1.57079601, z: 0} + Scale: {x: 0.99988091, y: 1, z: 0.99988091} + IsActive: true + Renderable Component: + Mesh: 144189529 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.17499995, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: -0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.474999994, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 159 + Name: Furniture_CounterDoorRightFull + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.500028372, y: 0.0500000007, z: 0.460026771} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.999985814, y: 1, z: 0.999985814} + IsActive: true + Renderable Component: + Mesh: 146520338 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 1.07500005, z: 0.925000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.540000021, z: -0.460000008} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 160 + Name: Furniture_CounterSink3 + IsActive: true + NumberOfChildren: 1 + Components: + Transform Component: + Translate: {x: 3.25, y: 0, z: -1} + Rotate: {x: 0, y: -1.57079601, z: 0} + Scale: {x: 0.999889493, y: 1, z: 0.999889493} + IsActive: true + Renderable Component: + Mesh: 141601355 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.860000014, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: -0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.100000001, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.444999993, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.100000001, y: 0.300000012, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.444999993, y: 1.04999995, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.300000012, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.04999995, z: 0.444999993} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.300000012, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.04999995, z: -0.444999993} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.100000001, y: 0.300000012, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.449999988, y: 1.38999999, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 146 + Name: Furniture_CounterDoorLeftFull + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.500019133, y: 0.0500000007, z: -0.460016757} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.999927104, y: 1, z: 0.999927104} + IsActive: true + Renderable Component: + Mesh: 150547241 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 1.07500005, z: 0.925000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.540000021, z: 0.460000008} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 162 + Name: Furniture_CounterCupboard3 + IsActive: true + NumberOfChildren: 1 + Components: + Transform Component: + Translate: {x: 3.25, y: 0, z: 1} + Rotate: {x: -0, y: -1.57079601, z: 0} + Scale: {x: 0.999906898, y: 1, z: 0.999906898} + IsActive: true + Renderable Component: + Mesh: 144189529 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.17499995, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: -0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.474999994, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 161 + Name: Furniture_CounterDoorLeftFull + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.50003773, y: 0.0500000007, z: -0.46003297} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.9999668, y: 1, z: 0.9999668} + IsActive: true + Renderable Component: + Mesh: 150547241 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 1.07500005, z: 0.925000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.540000021, z: 0.460000008} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 163 + Name: Furniture_CounterDrawer3 + IsActive: true + NumberOfChildren: 1 + Components: + Transform Component: + Translate: {x: -0.5, y: 0, z: 1} + Rotate: {x: 0, y: -1.57079601, z: 0} + Scale: {x: 0.999872148, y: 1, z: 0.999872148} + IsActive: true + Renderable Component: + Mesh: 144189529 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.17499995, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: -0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.474999994, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 148 + Name: Furniture_CounterDrawerLarge + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.350025594, y: 0.875, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.999860644, y: 1, z: 0.999860644} + IsActive: true + Renderable Component: + Mesh: 138305769 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.970000029, y: 0.0250000004, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: 0.819999993, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0450000018, y: 1.04999995, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.147, y: -0.270000011, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0450000018, y: 1.04999995, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.757000029, y: -0.270000011, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.959999979, y: 1.04999995, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.270000011, z: -0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.959999979, y: 1.04999995, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.270000011, z: 0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 145 + Name: Furniture_CounterDrawer1 + IsActive: true + NumberOfChildren: 3 + Components: + Transform Component: + Translate: {x: -3, y: 0, z: 1} + Rotate: {x: 0, y: -1.57079601, z: 0} + Scale: {x: 0.999877036, y: 1, z: 0.999877036} + IsActive: true + Renderable Component: + Mesh: 144189529 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.17499995, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: -0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.474999994, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 165 + Name: Furniture_CounterDrawerSmall + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.350026131, y: 0.306859791, z: 3.81469727e-06} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.999800026, y: 1, z: 0.999800026} + IsActive: true + Renderable Component: + Mesh: 135779275 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.970000029, y: 0.0250000004, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.219999999, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0450000018, y: 0.349999994, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.147, y: -0.0700000003, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0450000018, y: 0.349999994, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.757000029, y: -0.0700000003, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.959999979, y: 0.349999994, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.0700000003, z: -0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.959999979, y: 0.349999994, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.0700000003, z: 0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 166 + Name: Furniture_CounterDrawerSmall + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.350026131, y: 1.02225077, z: 3.81469727e-06} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.999937236, y: 1, z: 0.999937236} + IsActive: true + Renderable Component: + Mesh: 135779275 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.970000029, y: 0.0250000004, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.219999999, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0450000018, y: 0.349999994, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.147, y: -0.0700000003, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0450000018, y: 0.349999994, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.757000029, y: -0.0700000003, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.959999979, y: 0.349999994, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.0700000003, z: -0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.959999979, y: 0.349999994, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.0700000003, z: 0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 167 + Name: Furniture_CounterDrawerSmall + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.350026131, y: 0.665752649, z: 3.81469727e-06} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.999834657, y: 1, z: 0.999834657} + IsActive: true + Renderable Component: + Mesh: 135779275 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.970000029, y: 0.0250000004, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.219999999, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0450000018, y: 0.349999994, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.147, y: -0.0700000003, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0450000018, y: 0.349999994, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.757000029, y: -0.0700000003, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.959999979, y: 0.349999994, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.0700000003, z: -0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.959999979, y: 0.349999994, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.0700000003, z: 0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 164 + Name: Furniture_CounterDrawer2 + IsActive: true + NumberOfChildren: 2 + Components: + Transform Component: + Translate: {x: -1.75, y: 0, z: 1} + Rotate: {x: 0, y: -1.57079601, z: 0} + Scale: {x: 0.999886692, y: 1, z: 0.999886692} + IsActive: true + Renderable Component: + Mesh: 144189529 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.17499995, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: -0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.474999994, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65685 + Name: Furniture_CounterDrawerMid + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.350025654, y: 0.589012742, z: 1.90734886e-06} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.999964356, y: 1, z: 0.999964356} + IsActive: true + Renderable Component: + Mesh: 139881558 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.970000029, y: 0.0250000004, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.519999981, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0450000018, y: 0.699999988, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.147, y: -0.170000002, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0450000018, y: 0.699999988, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.757000029, y: -0.170000002, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.959999979, y: 0.699999988, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.170000002, z: -0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.959999979, y: 0.699999988, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.170000002, z: 0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65686 + Name: Furniture_CounterDrawerSmall + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.350025654, y: 1.02225077, z: 1.90734886e-06} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.999937236, y: 1, z: 0.999937236} + IsActive: true + Renderable Component: + Mesh: 135779275 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.970000029, y: 0.0250000004, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.219999999, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0450000018, y: 0.349999994, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.147, y: -0.0700000003, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0450000018, y: 0.349999994, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.757000029, y: -0.0700000003, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.959999979, y: 0.349999994, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.0700000003, z: -0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.959999979, y: 0.349999994, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.0700000003, z: 0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 206 + Name: Furniture_CounterEmpty + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4.5, y: 0, z: 1} + Rotate: {x: -0, y: -1.57079601, z: 0} + Scale: {x: 0.999883711, y: 1, z: 0.999883711} + IsActive: true + Renderable Component: + Mesh: 144189529 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.17499995, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: -0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.474999994, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 296 + Name: Kitchen_Furniture_Palette + IsActive: true + NumberOfChildren: 5 + Components: ~ + Scripts: ~ +- EID: 195 + Name: Furniture_ServiceTray + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 16.9924698, y: 0, z: 5.24115705} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.999959588, y: 1, z: 0.999959588} + IsActive: true + Renderable Component: + Mesh: 140279658 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.400000006, y: 1.29999995, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.699999988, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.600000024, y: 1.70000005, z: 0.0700000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.850000024, z: -0.5} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.600000024, y: 1.70000005, z: 0.0700000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.850000024, z: 0.5} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 196 + Name: Furniture_TallStool01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 17.5, y: 0, z: 7.25} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140539561 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.300000012, y: 0.800000012, z: 0.300000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 198 + Name: Furniture_Table01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 18.5, y: 0, z: 5.25} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.999938905, y: 1, z: 0.999938905} + IsActive: true + Renderable Component: + Mesh: 140474147 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.699999988, y: 0.0500000007, z: 1.20000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.77700001, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 0.800000012, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.25, y: 0.400000006, z: -0.550000012} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 0.800000012, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.25, y: 0.400000006, z: 0.550000012} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 0.800000012, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.25, y: 0.400000006, z: 0.550000012} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 0.800000012, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.25, y: 0.400000006, z: -0.550000012} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 199 + Name: Furniture_Chair01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 18.5, y: 0, z: 7.25} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.999963522, y: 1, z: 0.999963522} + IsActive: true + Renderable Component: + Mesh: 142860936 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.400000006, y: 0.439999998, z: 0.400000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.219999999, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0399999991, y: 1, z: 0.400000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.180000007, y: 0.5, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 243 + Name: Furniture_Shelf1 + IsActive: true + NumberOfChildren: 6 + Components: + Transform Component: + Translate: {x: 16, y: 0, z: 1.75} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 237 + Name: Furniture_Shelf1_Bottom + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 1.57079637, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 138181722 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1.20000005, y: 0.100000001, z: 2.20000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0500000007, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 238 + Name: Furniture_Shelf1_Top + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 2, z: 0} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.99998945, y: 1, z: 0.99998945} + IsActive: true + Renderable Component: + Mesh: 147761585 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1.20000005, y: 0.100000001, z: 2.20000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 239 + Name: Furniture_Shelf1_Back + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 1, z: -0.5} + Rotate: {x: 0, y: 1.57079542, z: 1.57079542} + Scale: {x: 2, y: 0.999999523, z: 1.10000002} + IsActive: true + Renderable Component: + Mesh: 139576452 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.100000001, z: 1.89999998} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 240 + Name: Furniture_Shelf1_MidShelf + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 1, z: 0} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.999976516, y: 1, z: 0.999976516} + IsActive: true + Renderable Component: + Mesh: 142336524 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.899999976, y: 0.100000001, z: 1.89999998} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 241 + Name: Furniture_Shelf1_FrameHigh + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 1, z: 0} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.999963403, y: 1, z: 0.999963403} + IsActive: true + Renderable Component: + Mesh: 150586966 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: -0.954999983} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: 0.954999983} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65778 + Name: Furniture_Shelf1_FrameLow + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.999942899, y: 1, z: 0.999942899} + IsActive: true + Renderable Component: + Mesh: 140066298 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: -0.954999983} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: 0.954999983} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 177 + Name: Exterior_Palette + IsActive: true + NumberOfChildren: 8 + Components: + Transform Component: + Translate: {x: 5.5, y: 0, z: -2.5} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 169 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.5, y: 0, z: -1.5} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 170 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.5, y: 0, z: -1.5} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 171 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.5, y: 0, z: -1.5} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 172 + Name: Exterior_Bush01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 143461339 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 173 + Name: Exterior_Bush02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 136373407 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 174 + Name: Exterior_FenceSingle + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2, y: 0, z: 1.5} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140263745 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 175 + Name: Exterior_Bush03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144928031 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 176 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.5, y: 0, z: 1.5} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 19 + Name: ===== Environment ===== + IsActive: true + NumberOfChildren: 4 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 136 + Name: Main_Room + IsActive: true + NumberOfChildren: 3 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 51 + Name: Floor_Master + IsActive: true + NumberOfChildren: 5 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 26 + Name: Floor_Row_1 + IsActive: true + NumberOfChildren: 5 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 21 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 22 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 23 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 24 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 25 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 27 + Name: Floor_Row_2 + IsActive: true + NumberOfChildren: 5 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: -2} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 28 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 29 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 30 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 31 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 32 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 33 + Name: Floor_Row_3 + IsActive: true + NumberOfChildren: 5 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 2} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 34 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 35 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 36 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 37 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 38 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 39 + Name: Floor_Row_4 + IsActive: true + NumberOfChildren: 5 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: -4} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 40 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 41 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 42 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 43 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 44 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 45 + Name: Floor_Row_5 + IsActive: true + NumberOfChildren: 5 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 4} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 46 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 47 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 48 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 49 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 50 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 82 + Name: Walls_Master + IsActive: true + NumberOfChildren: 25 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1.10000002, z: 1} + IsActive: true + Scripts: ~ +- EID: 53 + Name: Window_O_Small + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.5, y: 0, z: -5} + Rotate: {x: 0, y: -3.1415925, z: 0} + Scale: {x: 0.999988258, y: 1, z: 0.999988258} + IsActive: true + Renderable Component: + Mesh: 149786048 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.200000003, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 2.0999999, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.899999976, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.449999988, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.100000001, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.449999988, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.100000001, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65591 + Name: Wall_Corner + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 5, y: 0, z: 5} + Rotate: {x: 0, y: 1.57079637, z: 0} + Scale: {x: 0.999999523, y: 1, z: 0.999999523} + IsActive: true + Renderable Component: + Mesh: 134714737 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: -0.449999988} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 56 + Name: Wall_Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.12474632, y: 0, z: -5} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.24999325, y: 1, z: 0.999946237} + IsActive: true + Renderable Component: + Mesh: 140834166 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 57 + Name: Wall_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 5, y: 0, z: -3} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.999992847, y: 1, z: 0.999992847} + IsActive: true + Renderable Component: + Mesh: 142689599 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 58 + Name: Wall_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 5, y: 0, z: 3} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.99996388, y: 1, z: 0.99996388} + IsActive: true + Renderable Component: + Mesh: 142689599 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 59 + Name: Wall_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 5, y: 0, z: -1} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.999984503, y: 1, z: 0.999984503} + IsActive: true + Renderable Component: + Mesh: 142689599 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 60 + Name: Wall_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1, y: 0, z: 5} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.999947786, y: 1, z: 0.999947786} + IsActive: true + Renderable Component: + Mesh: 142689599 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 61 + Name: Wall_Corner + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 5, y: 0, z: -5} + Rotate: {x: 0, y: 3.14159274, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 134714737 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: -0.449999988} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 64 + Name: Wall_Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.5, y: 0, z: 5} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140834166 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65 + Name: Wall_Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -5, y: 0, z: -1.5} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.999983549, y: 1, z: 0.999983549} + IsActive: true + Renderable Component: + Mesh: 140834166 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 66 + Name: Wall_Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -5, y: 0, z: -2.125} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.24999325, y: 1, z: 0.999946237} + IsActive: true + Renderable Component: + Mesh: 140834166 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 69 + Name: Door_Wall_Frame + IsActive: true + NumberOfChildren: 1 + Components: + Transform Component: + Translate: {x: -5, y: 0, z: -0.5} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.999984145, y: 1, z: 0.999984145} + IsActive: true + Renderable Component: + Mesh: 150924328 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.150000006, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 2.125, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.100000001, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.455000013, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.100000001, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.455000013, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 70 + Name: Door_Door_Frame + IsActive: true + NumberOfChildren: 1 + Components: + Transform Component: + Translate: {x: -2.84217094e-11, y: 0, z: 4.76837158e-07} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1.10000002, z: 1} + IsActive: true + Renderable Component: + Mesh: 146862321 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: ~ + IsActive: true + Scripts: ~ +- EID: 71 + Name: Door_Main_Piece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.400000006, y: 0, z: 0.113215424} + Rotate: {x: -0, y: 1.57079637, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 147152385 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.800000012, y: 2, z: 0.0350000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.400000006, y: 1, z: -0.0175000001} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65608 + Name: Window_C_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -5, y: 0, z: 3} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.999980152, y: 1, z: 0.999980152} + IsActive: true + Renderable Component: + Mesh: 148351779 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65609 + Name: Wall_Corner + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -5, y: 0, z: 5} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 134714737 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: -0.449999988} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65610 + Name: Wall_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 5, y: 0, z: 1} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.999973536, y: 1, z: 0.999973536} + IsActive: true + Renderable Component: + Mesh: 142689599 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 75 + Name: Wall_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -5, y: 0, z: 1} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.999958873, y: 1, z: 0.999958873} + IsActive: true + Renderable Component: + Mesh: 142689599 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 76 + Name: Wall_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3, y: 0, z: 5} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.999947786, y: 1, z: 0.999947786} + IsActive: true + Renderable Component: + Mesh: 142689599 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 77 + Name: Wall_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1, y: 0, z: 5} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.999947786, y: 1, z: 0.999947786} + IsActive: true + Renderable Component: + Mesh: 142689599 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 78 + Name: Wall_Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.5, y: 0, z: -5} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140834166 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 79 + Name: Door_Wall_Frame + IsActive: true + NumberOfChildren: 1 + Components: + Transform Component: + Translate: {x: 2.5, y: 0, z: 5} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150924328 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.150000006, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 2.125, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.100000001, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.455000013, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.100000001, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.455000013, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 80 + Name: Door_Door_Frame + IsActive: true + NumberOfChildren: 1 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1.10000002, z: 1} + IsActive: true + Renderable Component: + Mesh: 146862321 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: ~ + IsActive: true + Scripts: ~ +- EID: 81 + Name: Door_Main_Piece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.400000006, y: 0, z: 0.113215424} + Rotate: {x: -0, y: -2.96705961, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 147152385 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.800000012, y: 2, z: 0.0350000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.400000006, y: 1, z: -0.0175000001} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 54 + Name: Window_C_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: -5} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 148351779 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 67 + Name: Window_C_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.87180281, y: 0, z: -4.27037907} + Rotate: {x: 0, y: 0.785398006, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 148351779 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 68 + Name: Window_C_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4.28601646, y: 0, z: -2.85616589} + Rotate: {x: 0, y: 0.785398006, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 148351779 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65588 + Name: Wall_Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.5, y: 0, z: -5} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140834166 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 131135 + Name: Wall_Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.5, y: 0, z: -5} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140834166 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 83 + Name: Ceiling_Master + IsActive: true + NumberOfChildren: 5 + Components: + Transform Component: + Translate: {x: 0, y: 2.46117163, z: 0} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 84 + Name: Floor_Row_1 + IsActive: true + NumberOfChildren: 5 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 85 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 86 + Name: Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 87 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 88 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 89 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 90 + Name: Floor_Row_2 + IsActive: true + NumberOfChildren: 5 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: -2} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 91 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 92 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 93 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 94 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 95 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 96 + Name: Floor_Row_3 + IsActive: true + NumberOfChildren: 5 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 2} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 97 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 98 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 99 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 100 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 101 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 102 + Name: Floor_Row_4 + IsActive: true + NumberOfChildren: 5 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: -4} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 103 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 104 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 105 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 106 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 107 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 108 + Name: Floor_Row_5 + IsActive: true + NumberOfChildren: 5 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 4} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 109 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 110 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 111 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 112 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 113 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 137 + Name: Entrance_Room + IsActive: true + NumberOfChildren: 4 + Components: + Transform Component: + Translate: {x: 2.25, y: 0, z: 7} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 127 + Name: Floor_Master + IsActive: true + NumberOfChildren: 2 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 118 + Name: Floor_Row_1 + IsActive: true + NumberOfChildren: 2 + Components: + Transform Component: + Translate: {x: -1, y: 0, z: -1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 119 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 132690168 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 120 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 132690168 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 122 + Name: Floor_Row_2 + IsActive: true + NumberOfChildren: 2 + Components: + Transform Component: + Translate: {x: -1, y: 0, z: 1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 123 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 132690168 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 124 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 132690168 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 128 + Name: Ceiling_Master + IsActive: true + NumberOfChildren: 2 + Components: + Transform Component: + Translate: {x: 0, y: 2.36603451, z: 0} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 129 + Name: Floor_Row_1 + IsActive: true + NumberOfChildren: 2 + Components: + Transform Component: + Translate: {x: -1, y: 0, z: -1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 130 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 132690168 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 131 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 132690168 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 132 + Name: Floor_Row_2 + IsActive: true + NumberOfChildren: 2 + Components: + Transform Component: + Translate: {x: -1, y: 0, z: 1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 133 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 132690168 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 134 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 132690168 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 135 + Name: Wall_Master + IsActive: true + NumberOfChildren: 7 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1.10000002, z: 1} + IsActive: true + Scripts: ~ +- EID: 65661 + Name: Wall_Corner + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 2} + Rotate: {x: 0, y: 1.57079637, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 134714737 + Material: 132690168 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: -0.449999988} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65657 + Name: Wall_Corner + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2, y: 0, z: 2} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 134714737 + Material: 132690168 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: -0.449999988} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65653 + Name: Window_O_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 2} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 138781993 + Material: 132690168 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.200000003, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 2.0999999, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.899999976, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.449999988, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.100000001, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.949999988, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.100000001, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.949999988, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 131186 + Name: Wall_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 0} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.999992251, y: 1, z: 0.999992251} + IsActive: true + Renderable Component: + Mesh: 142689599 + Material: 132690168 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 131187 + Name: Wall_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2, y: 0, z: 0} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.999995947, y: 1, z: 0.999995947} + IsActive: true + Renderable Component: + Mesh: 142689599 + Material: 132690168 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65652 + Name: Wall_Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: -1.5} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.999990523, y: 1, z: 0.999990523} + IsActive: true + Renderable Component: + Mesh: 140834166 + Material: 132690168 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 126 + Name: Wall_Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2, y: 0, z: -1.5} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.99999392, y: 1, z: 0.99999392} + IsActive: true + Renderable Component: + Mesh: 140834166 + Material: 132690168 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 235 + Name: Furniture_Chair01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.5, y: 0, z: 1.5} + Rotate: {x: 0, y: -1.57079601, z: 0} + Scale: {x: 0.999954104, y: 1, z: 0.999954104} + IsActive: true + Renderable Component: + Mesh: 142860936 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.400000006, y: 0.439999998, z: 0.400000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.219999999, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0399999991, y: 1, z: 0.400000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.180000007, y: 0.5, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 273 + Name: Furnitures + IsActive: true + NumberOfChildren: 10 + Components: + Transform Component: + Translate: {x: 1.25, y: 0, z: 1.75} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 131134 + Name: SetA + IsActive: true + NumberOfChildren: 10 + Components: + Transform Component: + Translate: {x: 0.75, y: 0, z: -4.67308044} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 178 + Name: Furniture_CounterBlock1 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.5, y: 0, z: -1.5} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.999954104, y: 1, z: 0.999954104} + IsActive: true + Renderable Component: + Mesh: 142281760 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 179 + Name: BottomLid + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.5, y: 0, z: -1.5} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.999834061, y: 1, z: 0.999834061} + IsActive: true + Renderable Component: + Mesh: 144974966 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 180 + Name: Furniture_CounterBlock2 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.5, y: 0, z: -0.5} + Rotate: {x: 0, y: -1.57079601, z: 0} + Scale: {x: 0.99990958, y: 1, z: 0.99990958} + IsActive: true + Renderable Component: + Mesh: 144974966 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65719 + Name: Furniture_CounterDrawer1 + IsActive: true + NumberOfChildren: 3 + Components: + Transform Component: + Translate: {x: 2.5, y: 0, z: 0.25} + Rotate: {x: 0, y: 3.14159274, z: 0} + Scale: {x: 0.999855638, y: 1, z: 0.999855638} + IsActive: true + Renderable Component: + Mesh: 144189529 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.17499995, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: -0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.474999994, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65717 + Name: Furniture_CounterDrawerSmall + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.98008728, y: 0.306859791, z: 0.000230426303} + Rotate: {x: 0, y: -6.28318501, z: 0} + Scale: {x: 0.999737263, y: 1, z: 0.999737263} + IsActive: true + Renderable Component: + Mesh: 135779275 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.970000029, y: 0.0250000004, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.219999999, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0450000018, y: 0.349999994, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.147, y: -0.0700000003, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0450000018, y: 0.349999994, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.757000029, y: -0.0700000003, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.959999979, y: 0.349999994, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.0700000003, z: -0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.959999979, y: 0.349999994, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.0700000003, z: 0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65720 + Name: Furniture_CounterDrawerSmall + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.546290398, y: 1.02225077, z: 7.29666208e-05} + Rotate: {x: 0, y: -6.28318501, z: 0} + Scale: {x: 0.999866426, y: 1, z: 0.999866426} + IsActive: true + Renderable Component: + Mesh: 135779275 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.970000029, y: 0.0250000004, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.219999999, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0450000018, y: 0.349999994, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.147, y: -0.0700000003, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0450000018, y: 0.349999994, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.757000029, y: -0.0700000003, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.959999979, y: 0.349999994, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.0700000003, z: -0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.959999979, y: 0.349999994, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.0700000003, z: 0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65718 + Name: Furniture_CounterDrawerSmall + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.790294647, y: 0.665752649, z: 0.000271389057} + Rotate: {x: 0, y: -6.28318501, z: 0} + Scale: {x: 0.999760687, y: 1, z: 0.999760687} + IsActive: true + Renderable Component: + Mesh: 135779275 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.970000029, y: 0.0250000004, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.219999999, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0450000018, y: 0.349999994, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.147, y: -0.0700000003, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0450000018, y: 0.349999994, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.757000029, y: -0.0700000003, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.959999979, y: 0.349999994, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.0700000003, z: -0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.959999979, y: 0.349999994, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.0700000003, z: 0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 185 + Name: Furniture_Oven + IsActive: true + NumberOfChildren: 2 + Components: + Transform Component: + Translate: {x: -1.5, y: 0, z: -1.5} + Rotate: {x: 0, y: -1.57079601, z: 0} + Scale: {x: 0.999761641, y: 1, z: 0.999761641} + IsActive: true + Renderable Component: + Mesh: 136828790 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 186 + Name: Oven_Door + IsActive: true + NumberOfChildren: 1 + Components: + Transform Component: + Translate: {x: 0.537660122, y: 0.246981457, z: 1.62124652e-05} + Rotate: {x: 1.34408474e-05, y: 3.57627869e-06, z: -1.04719746} + Scale: {x: 1.00001323, y: 0.999983132, z: 0.999992907} + IsActive: true + Renderable Component: + Mesh: 150740704 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 0.725000024, z: 0.850000024} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.375, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 187 + Name: Oven_Glass + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.13589262e-05, y: 0.354365677, z: -4.48226929e-05} + Rotate: {x: -5.66244012e-07, y: 1.57079184, z: -1.04719758} + Scale: {x: 0.999997735, y: 0.999998629, z: 0.999999285} + IsActive: true + Renderable Component: + Mesh: 135623020 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 188 + Name: Oven_Tray + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.678130686, y: 0.635995746, z: -0.000561714172} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.999971926, y: 1, z: 0.947892308} + IsActive: true + Renderable Component: + Mesh: 136078992 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.800000012, y: 0.0500000007, z: 0.800000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 189 + Name: Furniture_CounterSink2 + IsActive: true + NumberOfChildren: 1 + Components: + Transform Component: + Translate: {x: -0.5, y: 0, z: -1.5} + Rotate: {x: 0, y: -1.57079601, z: 0} + Scale: {x: 0.999882996, y: 1, z: 0.999882996} + IsActive: true + Renderable Component: + Mesh: 141601355 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.860000014, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: -0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.100000001, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.444999993, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.100000001, y: 0.300000012, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.444999993, y: 1.04999995, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.300000012, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.04999995, z: 0.444999993} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.300000012, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.04999995, z: -0.444999993} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.100000001, y: 0.300000012, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.449999988, y: 1.38999999, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 190 + Name: Furniture_CounterDoorRightFull + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.500017345, y: 0.0500000007, z: 0.460019141} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.999967337, y: 1, z: 0.999967337} + IsActive: true + Renderable Component: + Mesh: 146520338 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 1.07500005, z: 0.925000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.540000021, z: -0.460000008} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 191 + Name: Furniture_CounterSink3 + IsActive: true + NumberOfChildren: 1 + Components: + Transform Component: + Translate: {x: 0.5, y: 0, z: -1.5} + Rotate: {x: 0, y: -1.57079601, z: 0} + Scale: {x: 0.999868512, y: 1, z: 0.999868512} + IsActive: true + Renderable Component: + Mesh: 141601355 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.860000014, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: -0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.100000001, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.444999993, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.100000001, y: 0.300000012, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.444999993, y: 1.04999995, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.300000012, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.04999995, z: 0.444999993} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.300000012, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.04999995, z: -0.444999993} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.100000001, y: 0.300000012, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.449999988, y: 1.38999999, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 192 + Name: Furniture_CounterDoorLeftFull + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.500367045, y: 0.0500000007, z: -0.459667206} + Rotate: {x: -0, y: 0.559825659, z: 0} + Scale: {x: 0.999928236, y: 1, z: 0.999928236} + IsActive: true + Renderable Component: + Mesh: 150547241 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 1.07500005, z: 0.925000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.540000021, z: 0.460000008} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 193 + Name: Furniture_CounterBlock2 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.5, y: 0, z: -1.5} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.999834061, y: 1, z: 0.999834061} + IsActive: true + Renderable Component: + Mesh: 144974966 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 194 + Name: Furniture_ServiceTray + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.3758707, y: 0, z: -0.556610107} + Rotate: {x: 0, y: 1.66631782, z: 0} + Scale: {x: 0.999944031, y: 1, z: 0.999944031} + IsActive: true + Renderable Component: + Mesh: 140279658 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.400000006, y: 1.29999995, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.699999988, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.600000024, y: 1.70000005, z: 0.0700000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.850000024, z: -0.5} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.600000024, y: 1.70000005, z: 0.0700000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.850000024, z: 0.5} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 197 + Name: Furniture_TallStool01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.25, y: 0, z: -1.57691956} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140539561 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.300000012, y: 0.800000012, z: 0.300000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 205 + Name: SetB + IsActive: true + NumberOfChildren: 5 + Components: + Transform Component: + Translate: {x: -3, y: 0, z: -3.75} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 200 + Name: Furniture_Table01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0670871735, y: 0, z: 0.236379623} + Rotate: {x: 0, y: -0.785398185, z: 0} + Scale: {x: 1.49995053, y: 1, z: 1.49995029} + IsActive: true + Renderable Component: + Mesh: 140474147 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.699999988, y: 0.0500000007, z: 1.20000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.77700001, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 0.800000012, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.449999988, y: 0.400000006, z: -0.850000024} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 0.800000012, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.449999988, y: 0.400000006, z: 0.850000024} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 0.800000012, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.449999988, y: 0.400000006, z: 0.850000024} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 0.800000012, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.449999988, y: 0.400000006, z: -0.850000024} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 201 + Name: Furniture_Chair01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.901912689, y: -2.37551575e-07, z: 0.00345230103} + Rotate: {x: 0, y: 1.95162022, z: 0} + Scale: {x: 0.999974966, y: 1, z: 0.999974966} + IsActive: true + Renderable Component: + Mesh: 142860936 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.400000006, y: 0.439999998, z: 0.400000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.219999999, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0399999991, y: 1, z: 0.400000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.180000007, y: 0.5, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 202 + Name: Furniture_Chair01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.180002213, y: 0, z: -0.507282257} + Rotate: {x: 0, y: 2.26356983, z: 0} + Scale: {x: 0.999929309, y: 1, z: 0.999929309} + IsActive: true + Renderable Component: + Mesh: 142860936 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.400000006, y: 0.439999998, z: 0.400000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.219999999, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0399999991, y: 1, z: 0.400000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.180000007, y: 0.5, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 203 + Name: Furniture_Chair01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.905802727, y: -2.37634836e-07, z: 0.32503891} + Rotate: {x: 0, y: -2.49300814, z: 0} + Scale: {x: 0.999879777, y: 1, z: 0.999879777} + IsActive: true + Renderable Component: + Mesh: 142860936 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.400000006, y: 0.439999998, z: 0.400000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.219999999, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0399999991, y: 1, z: 0.400000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.180000007, y: 0.5, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 204 + Name: Furniture_Chair01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.483336449, y: -1.01110842e-07, z: 1.39031887} + Rotate: {x: 0, y: -0.448161691, z: 0} + Scale: {x: 0.999916553, y: 1, z: 0.999916553} + IsActive: true + Renderable Component: + Mesh: 142860936 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.400000006, y: 0.439999998, z: 0.400000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.219999999, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0399999991, y: 1, z: 0.400000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.180000007, y: 0.5, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 236 + Name: SetC + IsActive: true + NumberOfChildren: 16 + Components: + Transform Component: + Translate: {x: -1.25, y: 0, z: -1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 65743 + Name: Furniture_CounterEmpty + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.5, y: 0, z: 0.75} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.999873936, y: 1, z: 0.999873936} + IsActive: true + Renderable Component: + Mesh: 144189529 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.17499995, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: -0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.474999994, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 208 + Name: Furniture_CounterEmpty + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.5, y: 0, z: -0.25} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.999873936, y: 1, z: 0.999873936} + IsActive: true + Renderable Component: + Mesh: 144189529 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.17499995, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: -0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.474999994, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 209 + Name: Furniture_CounterSink1 + IsActive: true + NumberOfChildren: 2 + Components: + Transform Component: + Translate: {x: 0.5, y: 0, z: -1.25} + Rotate: {x: 0, y: 1.57079637, z: 0} + Scale: {x: 0.999842346, y: 1, z: 0.999842346} + IsActive: true + Renderable Component: + Mesh: 141601355 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.860000014, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: -0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.100000001, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.444999993, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.100000001, y: 0.300000012, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.444999993, y: 1.04999995, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.300000012, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.04999995, z: 0.444999993} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.300000012, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.04999995, z: -0.444999993} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.100000001, y: 0.300000012, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.449999988, y: 1.38999999, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 210 + Name: Furniture_CounterDoorLeftHalf + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.49933207, y: 0.0500000119, z: -0.460007668} + Rotate: {x: 0, y: 0.107344031, z: 0} + Scale: {x: 0.999879241, y: 1, z: 0.999879241} + IsActive: true + Renderable Component: + Mesh: 146024338 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 1.07500005, z: 0.462500006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.540000021, z: 0.230000004} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 211 + Name: Furniture_CounterDoorRightHalf + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.499561012, y: 0.0500000119, z: 0.460010529} + Rotate: {x: 0, y: -0.299843431, z: 0} + Scale: {x: 0.999920487, y: 1, z: 0.999920487} + IsActive: true + Renderable Component: + Mesh: 146717179 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 1.07500005, z: 0.462500006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.540000021, z: -0.230000004} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 212 + Name: Furniture_CounterDrawer2 + IsActive: true + NumberOfChildren: 2 + Components: + Transform Component: + Translate: {x: 1.5, y: 0, z: -1.25} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.999874115, y: 1, z: 0.999874115} + IsActive: true + Renderable Component: + Mesh: 144189529 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.17499995, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: -0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.474999994, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 213 + Name: Furniture_CounterDrawerMid + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.675502121, y: 0.589012742, z: 1.90734863e-06} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.999956608, y: 1, z: 0.999956608} + IsActive: true + Renderable Component: + Mesh: 139881558 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.970000029, y: 0.0250000004, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.519999981, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0450000018, y: 0.699999988, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.147, y: -0.170000002, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0450000018, y: 0.699999988, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.757000029, y: -0.170000002, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.959999979, y: 0.699999988, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.170000002, z: -0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.959999979, y: 0.699999988, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.170000002, z: 0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 214 + Name: Furniture_CounterDrawerSmall + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.597297013, y: 1.02225077, z: 1.90734863e-06} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.999922097, y: 1, z: 0.999922097} + IsActive: true + Renderable Component: + Mesh: 135779275 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.970000029, y: 0.0250000004, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.219999999, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0450000018, y: 0.349999994, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.147, y: -0.0700000003, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0450000018, y: 0.349999994, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.757000029, y: -0.0700000003, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.959999979, y: 0.349999994, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.0700000003, z: -0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.959999979, y: 0.349999994, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.0700000003, z: 0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 215 + Name: Furniture_CounterEmpty + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.5, y: 0, z: 0.75} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.999839723, y: 1, z: 0.999839723} + IsActive: true + Renderable Component: + Mesh: 144189529 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.17499995, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: -0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.474999994, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 216 + Name: Furniture_CounterBlock1 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.5, y: 0, z: -0.25} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.999942064, y: 1, z: 0.999942064} + IsActive: true + Renderable Component: + Mesh: 142281760 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 217 + Name: Furniture_CounterBlock1 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.5, y: 0, z: -0.25} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.999970734, y: 1, z: 0.999970734} + IsActive: true + Renderable Component: + Mesh: 142281760 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 218 + Name: Furniture_CounterBlock1 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.5, y: 0, z: 0.75} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.999965072, y: 1, z: 0.999965072} + IsActive: true + Renderable Component: + Mesh: 142281760 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 219 + Name: Furniture_CounterBlock1 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.5, y: 0, z: 0.75} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.999953389, y: 1, z: 0.999953389} + IsActive: true + Renderable Component: + Mesh: 142281760 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 220 + Name: Furniture_Oven + IsActive: true + NumberOfChildren: 2 + Components: + Transform Component: + Translate: {x: -0.5, y: 0, z: 1.75} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.999866664, y: 1, z: 0.999866664} + IsActive: true + Renderable Component: + Mesh: 136828790 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 221 + Name: Oven_Door + IsActive: true + NumberOfChildren: 1 + Components: + Transform Component: + Translate: {x: 0.536170065, y: 0.246981457, z: 4.76837158e-06} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.999996006, y: 0.999996006, z: 1} + IsActive: true + Renderable Component: + Mesh: 150740704 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 0.725000024, z: 0.850000024} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.375, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 222 + Name: Oven_Glass + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0.354394436, z: 0} + Rotate: {x: 0, y: 1.57079637, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 135623020 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 223 + Name: Oven_Tray + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 6.00593921e-08, y: 0.649999976, z: 3.81469727e-06} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.999995291, y: 1, z: 0.999995291} + IsActive: true + Renderable Component: + Mesh: 136078992 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.800000012, y: 0.0500000007, z: 0.800000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 224 + Name: Furniture_Oven + IsActive: true + NumberOfChildren: 2 + Components: + Transform Component: + Translate: {x: 0.5, y: 0, z: 1.75} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.999874473, y: 1, z: 0.999874473} + IsActive: true + Renderable Component: + Mesh: 136828790 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 225 + Name: Oven_Door + IsActive: true + NumberOfChildren: 1 + Components: + Transform Component: + Translate: {x: 0.536169469, y: 0.246981457, z: 1.90734863e-06} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.999996006, y: 0.999996006, z: 1} + IsActive: true + Renderable Component: + Mesh: 150740704 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 0.725000024, z: 0.850000024} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.375, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 226 + Name: Oven_Glass + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0.354394436, z: 0} + Rotate: {x: 0, y: 1.57079637, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 135623020 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 227 + Name: Oven_Tray + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.48964364e-06, y: 0.649999976, z: 9.53674316e-07} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.999995291, y: 1, z: 0.999995291} + IsActive: true + Renderable Component: + Mesh: 136078992 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.800000012, y: 0.0500000007, z: 0.800000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 228 + Name: Furniture_CounterEmpty + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.5, y: 0, z: 1.75} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.999866128, y: 1, z: 0.999866128} + IsActive: true + Renderable Component: + Mesh: 144189529 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.17499995, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: -0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.474999994, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 230 + Name: Furniture_CounterEmpty + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.11122513, y: 0, z: 1.36653423} + Rotate: {x: 0, y: 0.785398006, z: 0} + Scale: {x: 0.999848902, y: 0.899999976, z: 1.35447872} + IsActive: true + Renderable Component: + Mesh: 144189529 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.17499995, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: -0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.474999994, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 231 + Name: Furniture_CounterEmpty + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.5, y: 0, z: -0.25} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.99984026, y: 1, z: 0.99984026} + IsActive: true + Renderable Component: + Mesh: 144189529 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.17499995, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: -0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.474999994, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65765 + Name: Furniture_CounterDrawer2 + IsActive: true + NumberOfChildren: 2 + Components: + Transform Component: + Translate: {x: -0.5, y: 0, z: -1.25} + Rotate: {x: 0, y: 3.14159274, z: 0} + Scale: {x: 0.999849498, y: 1, z: 0.999849498} + IsActive: true + Renderable Component: + Mesh: 144189529 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.17499995, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: -0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.474999994, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 232 + Name: Furniture_CounterDrawerMid + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.350028038, y: 0.589012742, z: 1.63283084e-06} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.999964356, y: 1, z: 0.999964356} + IsActive: true + Renderable Component: + Mesh: 139881558 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.970000029, y: 0.0250000004, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.519999981, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0450000018, y: 0.699999988, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.147, y: -0.170000002, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0450000018, y: 0.699999988, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.757000029, y: -0.170000002, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.959999979, y: 0.699999988, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.170000002, z: -0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.959999979, y: 0.699999988, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.170000002, z: 0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 233 + Name: Furniture_CounterDrawerSmall + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.597297668, y: 1.02225077, z: 1.69178475e-06} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.999922097, y: 1, z: 0.999922097} + IsActive: true + Renderable Component: + Mesh: 135779275 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.970000029, y: 0.0250000004, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.219999999, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0450000018, y: 0.349999994, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.147, y: -0.0700000003, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0450000018, y: 0.349999994, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.757000029, y: -0.0700000003, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.959999979, y: 0.349999994, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.0700000003, z: -0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.959999979, y: 0.349999994, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.0700000003, z: 0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 234 + Name: Furniture_TallStool01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.60869884, y: 0, z: -1.51192188} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140539561 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.300000012, y: 0.800000012, z: 0.300000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 251 + Name: Furniture_Shelf1 + IsActive: true + NumberOfChildren: 6 + Components: + Transform Component: + Translate: {x: -4.89725351, y: 0, z: 2.57555723} + Rotate: {x: 0, y: -3.1415925, z: 0} + Scale: {x: 1.19999945, y: 1.20000005, z: 1.19999945} + IsActive: true + Scripts: ~ +- EID: 252 + Name: Furniture_Shelf1_Bottom + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4.76837158e-07, y: 0, z: -1.54251779e-07} + Rotate: {x: 0, y: 1.57079649, z: 0} + Scale: {x: 0.999999225, y: 1, z: 0.999999225} + IsActive: true + Renderable Component: + Mesh: 138181722 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1.20000005, y: 0.100000001, z: 2.20000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0500000007, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 253 + Name: Furniture_Shelf1_Top + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4.76837158e-07, y: 2, z: -1.54251779e-07} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.99998945, y: 1, z: 0.99998945} + IsActive: true + Renderable Component: + Mesh: 147761585 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1.20000005, y: 0.100000001, z: 2.20000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 254 + Name: Furniture_Shelf1_Back + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4.76837158e-07, y: 1, z: -0.500000179} + Rotate: {x: 0, y: 1.57079542, z: 1.57079542} + Scale: {x: 2, y: 0.999999523, z: 1.10000002} + IsActive: true + Renderable Component: + Mesh: 139576452 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.100000001, z: 1.89999998} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 255 + Name: Furniture_Shelf1_MidShelf + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4.76837158e-07, y: 0.878599584, z: -1.54251779e-07} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.99996531, y: 1, z: 0.99996531} + IsActive: true + Renderable Component: + Mesh: 142336524 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.899999976, y: 0.100000001, z: 1.89999998} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 256 + Name: Furniture_Shelf1_FrameHigh + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4.76837158e-07, y: 1, z: -1.54251779e-07} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.999963462, y: 1, z: 0.999963462} + IsActive: true + Renderable Component: + Mesh: 150586966 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: -0.954999983} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: 0.954999983} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 257 + Name: Furniture_Shelf1_FrameLow + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4.76837158e-07, y: 0, z: -1.54251779e-07} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.999942899, y: 1, z: 0.999942899} + IsActive: true + Renderable Component: + Mesh: 140066298 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: -0.954999983} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: 0.954999983} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65784 + Name: Furniture_Chair01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4.64632654, y: 0, z: 1.5004077} + Rotate: {x: 0, y: -1.57079601, z: 0} + Scale: {x: 0.999930918, y: 1, z: 0.999930918} + IsActive: true + Renderable Component: + Mesh: 142860936 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.400000006, y: 0.439999998, z: 0.400000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.219999999, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0399999991, y: 1, z: 0.400000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.180000007, y: 0.5, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65786 + Name: Furniture_Shelf1 + IsActive: true + NumberOfChildren: 6 + Components: + Transform Component: + Translate: {x: 3.19213867, y: 0, z: -0.926177979} + Rotate: {x: 0, y: -1.57079601, z: 0} + Scale: {x: 0.999959767, y: 1.02300358, z: 0.999959767} + IsActive: true + Scripts: ~ +- EID: 258 + Name: Furniture_Shelf1_Bottom + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.46427589e-06, y: 0, z: 5.7220459e-06} + Rotate: {x: 0, y: 1.57079637, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 138181722 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1.20000005, y: 0.100000001, z: 2.20000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0500000007, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 259 + Name: Furniture_Shelf1_Top + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.46427589e-06, y: 2, z: 5.7220459e-06} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.99998945, y: 1, z: 0.99998945} + IsActive: true + Renderable Component: + Mesh: 147761585 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1.20000005, y: 0.100000001, z: 2.20000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 260 + Name: Furniture_Shelf1_Back + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.78113327e-07, y: 1, z: -0.499994278} + Rotate: {x: 0, y: 1.57079542, z: 1.57079542} + Scale: {x: 2, y: 0.999999523, z: 1.10000002} + IsActive: true + Renderable Component: + Mesh: 139576452 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.100000001, z: 1.89999998} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 261 + Name: Furniture_Shelf1_MidShelf + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.46427589e-06, y: 1, z: 5.7220459e-06} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.999976516, y: 1, z: 0.999976516} + IsActive: true + Renderable Component: + Mesh: 142336524 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.899999976, y: 0.100000001, z: 1.89999998} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 262 + Name: Furniture_Shelf1_FrameHigh + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.46427589e-06, y: 1, z: 5.7220459e-06} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.999963403, y: 1, z: 0.999963403} + IsActive: true + Renderable Component: + Mesh: 150586966 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: -0.954999983} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: 0.954999983} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 263 + Name: Furniture_Shelf1_FrameLow + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.46427589e-06, y: 0, z: 5.7220459e-06} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.999942899, y: 1, z: 0.999942899} + IsActive: true + Renderable Component: + Mesh: 140066298 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: -0.954999983} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: 0.954999983} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 264 + Name: Furniture_Shelf1 + IsActive: true + NumberOfChildren: 6 + Components: + Transform Component: + Translate: {x: 3.10281086, y: 0, z: -2.91405487} + Rotate: {x: 0, y: -1.57079601, z: 0} + Scale: {x: 0.999990523, y: 1, z: 0.999990523} + IsActive: true + Scripts: ~ +- EID: 265 + Name: Furniture_Shelf1_Bottom + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.49637924e-06, y: 0, z: -2.86102295e-06} + Rotate: {x: 0, y: 1.57079637, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 138181722 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1.20000005, y: 0.100000001, z: 2.20000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0500000007, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 266 + Name: Furniture_Shelf1_Top + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.49637924e-06, y: 2, z: -2.86102295e-06} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.99998945, y: 1, z: 0.99998945} + IsActive: true + Renderable Component: + Mesh: 147761585 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1.20000005, y: 0.100000001, z: 2.20000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 267 + Name: Furniture_Shelf1_Back + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4.10216671e-07, y: 1, z: -0.500002861} + Rotate: {x: 0, y: 1.57079542, z: 1.57079542} + Scale: {x: 2, y: 0.999999523, z: 1.10000002} + IsActive: true + Renderable Component: + Mesh: 139576452 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.100000001, z: 1.89999998} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 268 + Name: Furniture_Shelf1_MidShelf + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.49637924e-06, y: 1, z: -2.86102295e-06} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.999976516, y: 1, z: 0.999976516} + IsActive: true + Renderable Component: + Mesh: 142336524 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.899999976, y: 0.100000001, z: 1.89999998} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 269 + Name: Furniture_Shelf1_FrameHigh + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.49637924e-06, y: 1, z: -2.86102295e-06} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.999963403, y: 1, z: 0.999963403} + IsActive: true + Renderable Component: + Mesh: 150586966 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: -0.954999983} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: 0.954999983} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 270 + Name: Furniture_Shelf1_FrameLow + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.49637924e-06, y: 0, z: -2.86102295e-06} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.999942899, y: 1, z: 0.999942899} + IsActive: true + Renderable Component: + Mesh: 140066298 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: -0.954999983} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: 0.954999983} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 271 + Name: Furniture_Table01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.28806686, y: 4.76837158e-07, z: 2.51028538} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.999803007, y: 1, z: 0.999803007} + IsActive: true + Renderable Component: + Mesh: 140474147 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.699999988, y: 0.0500000007, z: 1.20000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.77700001, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 0.800000012, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.25, y: 0.400000006, z: -0.550000012} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 0.800000012, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.25, y: 0.400000006, z: 0.550000012} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 0.800000012, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.25, y: 0.400000006, z: 0.550000012} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 0.800000012, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.25, y: 0.400000006, z: -0.550000012} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 272 + Name: Furniture_Chair01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.37112713, y: -2.77225354e-09, z: 1.61954117} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.999916911, y: 1, z: 0.999916911} + IsActive: true + Renderable Component: + Mesh: 142860936 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.400000006, y: 0.439999998, z: 0.400000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.219999999, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0399999991, y: 1, z: 0.400000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.180000007, y: 0.5, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 244 + Name: Furniture_Shelf1 + IsActive: true + NumberOfChildren: 4 + Components: + Transform Component: + Translate: {x: -5.52377319, y: 0, z: 1.00466061} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.999963343, y: 1, z: 0.999963343} + IsActive: true + Scripts: ~ +- EID: 245 + Name: Furniture_Shelf1_Bottom + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.40584916e-07, y: 0, z: 0} + Rotate: {x: 0, y: 1.57079649, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 138181722 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1.20000005, y: 0.100000001, z: 2.20000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0500000007, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 246 + Name: Furniture_Shelf1_Top + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.40622433e-07, y: 0.83211112, z: 0.000104904175} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.999976337, y: 1, z: 0.999976337} + IsActive: true + Renderable Component: + Mesh: 147761585 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1.20000005, y: 0.100000001, z: 2.20000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 247 + Name: Furniture_Shelf1_Back + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.81079417e-08, y: 0.425199866, z: -0.499661922} + Rotate: {x: 3.57627613e-07, y: 1.5707953, z: 1.57079566} + Scale: {x: 0.927978218, y: 0.999999523, z: 1.10000813} + IsActive: true + Renderable Component: + Mesh: 139576452 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.100000001, z: 1.89999998} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 249 + Name: Furniture_Shelf1_FrameHigh + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.40686552e-07, y: -0.132160872, z: 0.000283718109} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.999927938, y: 1, z: 0.999927938} + IsActive: true + Renderable Component: + Mesh: 150586966 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: -0.954999983} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: 0.954999983} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 460 + Name: Exterior + IsActive: true + NumberOfChildren: 5 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 274 + Name: SkyDome + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 22.8147907, y: 22.8147907, z: 22.8147907} + IsActive: true + Renderable Component: + Mesh: 144340823 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 295 + Name: Fences + IsActive: true + NumberOfChildren: 20 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 276 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1, y: 0, z: -10} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.75, y: 0.75, z: 0.75} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 65811 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 6.5, y: 0, z: -0.75} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.749885261, y: 0.75, z: 0.749885261} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 277 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4.75, y: 0, z: -10} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.75, y: 0.75, z: 0.75} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 278 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 6.5, y: 0, z: -4.5} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.749958098, y: 0.75, z: 0.749958098} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 279 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 6.5, y: 0, z: -8.25} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.749971926, y: 0.75, z: 0.749971926} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 280 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.75, y: 0, z: -10} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.75, y: 0.75, z: 0.75} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 281 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -6.5, y: 0, z: -10} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.75, y: 0.75, z: 0.75} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 282 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -8.25, y: 0, z: -8.25} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.74998349, y: 0.75, z: 0.74998349} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 283 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -8.25, y: 0, z: -4.5} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.749970615, y: 0.75, z: 0.749970615} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 284 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -8.25, y: 0, z: -0.75} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.749959767, y: 0.75, z: 0.749959767} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 285 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -8.25, y: 0, z: 3} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.749949992, y: 0.75, z: 0.749949992} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 286 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -8.25, y: 0, z: 6.75} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.749939382, y: 0.75, z: 0.749939382} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 287 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -8.25, y: 0, z: 10.5} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.749930501, y: 0.75, z: 0.749930501} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 288 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -6.5, y: 0, z: 12.25} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.749930501, y: 0.75, z: 0.749930501} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 289 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.75, y: 0, z: 12.25} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.749930501, y: 0.75, z: 0.749930501} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 290 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1, y: 0, z: 12.25} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.749930501, y: 0.75, z: 0.749930501} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 291 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4.75, y: 0, z: 12.25} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.749930501, y: 0.75, z: 0.749930501} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 292 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 6.5, y: 0, z: 10.5} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.749919176, y: 0.75, z: 0.749919176} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 293 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 6.5, y: 0, z: 6.75} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.749905586, y: 0.75, z: 0.749905586} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 294 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 6.5, y: 0, z: 3} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.749896526, y: 0.75, z: 0.749896526} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 437 + Name: Trees + IsActive: true + NumberOfChildren: 14 + Components: ~ + Scripts: ~ +- EID: 65842 + Name: TreeCluster + IsActive: true + NumberOfChildren: 9 + Components: + Transform Component: + Translate: {x: 10.1952591, y: 0, z: 10.7309589} + Rotate: {x: 0, y: 1.9471432, z: 0} + Scale: {x: 0.749998093, y: 0.75, z: 0.749998093} + IsActive: true + Scripts: ~ +- EID: 297 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.99999917, y: 0, z: 1.25000107} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 298 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.24999964, y: 0, z: -0.999999106} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 299 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.50000006, y: 0, z: 1.00000012} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 300 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.25000167, y: 0, z: -0.75000006} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 301 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.49999928, y: 0, z: -0.499999076} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 302 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.7500006, y: 0, z: -0.999998152} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 303 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.25000146, y: 0, z: -0.75000006} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 304 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.75000072, y: 0, z: -1.24999821} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 305 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.99999917, y: 0, z: 1.25000107} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 307 + Name: TreeCluster + IsActive: true + NumberOfChildren: 9 + Components: + Transform Component: + Translate: {x: -13.7129259, y: 1.02942158e-06, z: 3.45037246} + Rotate: {x: 0, y: -1.55548823, z: 0} + Scale: {x: 0.946770251, y: 0.947038352, z: 0.946770251} + IsActive: true + Scripts: ~ +- EID: 308 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000024, y: 0, z: 1.25000095} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 309 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.24999964, y: 0, z: -0.999999046} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 310 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.499999911, y: 0, z: 1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 311 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.25000024, y: 0, z: -0.75} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 312 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.50000024, y: 0, z: -0.5} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 313 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.75000012, y: 0, z: -1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 314 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.250002086, y: 0, z: -0.75} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 315 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.74999928, y: 0, z: -1.24999905} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 316 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000024, y: 0, z: 1.25000095} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 317 + Name: TreeCluster + IsActive: true + NumberOfChildren: 9 + Components: + Transform Component: + Translate: {x: 7.0228982, y: 0, z: 14.5601959} + Rotate: {x: 0, y: 0.723479152, z: 0} + Scale: {x: 0.75, y: 0.75, z: 0.75} + IsActive: true + Scripts: ~ +- EID: 318 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.99999905, y: 0, z: 1.24999952} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 319 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.24999952, y: 0, z: -1.00000095} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 320 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.5, y: 0, z: 0.999998093} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 321 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.25000095, y: 0, z: -0.750000477} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 322 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.49999905, y: 0, z: -0.500001431} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 323 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.75000048, y: 0, z: -1.00000095} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 324 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.250000954, y: 0, z: -0.750000954} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 325 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.74999905, y: 0, z: -1.25000143} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 326 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.99999905, y: 0, z: 1.24999952} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 327 + Name: TreeCluster + IsActive: true + NumberOfChildren: 9 + Components: + Transform Component: + Translate: {x: 1.25, y: 0, z: 14.5} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.75, y: 0.75, z: 0.75} + IsActive: true + Scripts: ~ +- EID: 328 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 1.25} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 329 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.25000012, y: 0, z: -1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 330 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.500000119, y: 0, z: 1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 331 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.25, y: 0, z: -0.75} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 332 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.50000048, y: 0, z: -0.5} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 333 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.75, y: 0, z: -1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 334 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.249999881, y: 0, z: -0.75} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 335 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.75000048, y: 0, z: -1.25} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 336 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 1.25} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 337 + Name: TreeCluster + IsActive: true + NumberOfChildren: 9 + Components: + Transform Component: + Translate: {x: -3.74656153, y: 5.05771936e-07, z: 15.2930593} + Rotate: {x: 0, y: -0.566242754, z: 0} + Scale: {x: 0.749999821, y: 0.75, z: 0.749999821} + IsActive: true + Scripts: ~ +- EID: 338 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.99999976, y: 0, z: 1.25000167} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 339 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.24999952, y: 0, z: -0.999999881} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 340 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.500000954, y: 0, z: 1.00000238} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 341 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.25000048, y: 0, z: -0.749999046} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 342 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.5, y: 0, z: -0.499999404} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 343 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.75, y: 0, z: -0.999998808} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 344 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.249999523, y: 0, z: -0.749997854} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 345 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.75000095, y: 0, z: -1.24999714} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 346 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.99999976, y: 0, z: 1.25000167} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 347 + Name: TreeCluster + IsActive: true + NumberOfChildren: 9 + Components: + Transform Component: + Translate: {x: -8.91827679, y: 1.92174866e-07, z: -11.9713926} + Rotate: {x: 0, y: -2.5559175, z: 0} + Scale: {x: 0.749962032, y: 0.75, z: 0.749962032} + IsActive: true + Scripts: ~ +- EID: 348 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000095, y: 0, z: 1.25000143} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 349 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.25000095, y: 0, z: -0.999999523} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 350 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.500001907, y: 0, z: 1.00000095} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 351 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.24999952, y: 0, z: -0.749999046} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 352 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.50000095, y: 0, z: -0.499999523} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 353 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.75000095, y: 0, z: -0.999999046} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 354 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.25, y: 0, z: -0.749998569} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 355 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.75, y: 0, z: -1.24999905} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 356 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000095, y: 0, z: 1.25000143} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 357 + Name: TreeCluster + IsActive: true + NumberOfChildren: 9 + Components: + Transform Component: + Translate: {x: -3.85509062, y: 1.903868e-07, z: -13.8841438} + Rotate: {x: 0, y: 2.91411972, z: 0} + Scale: {x: 0.749867201, y: 0.75, z: 0.749867201} + IsActive: true + Scripts: ~ +- EID: 358 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000048, y: 0, z: 1.25000083} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 359 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.25000048, y: 0, z: -0.999998808} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 360 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.500000954, y: 0, z: 1.00000167} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 361 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.24999976, y: 0, z: -0.75} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 362 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.50000048, y: 0, z: -0.499998808} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 363 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.74999952, y: 0, z: -0.999998927} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 364 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.249999046, y: 0, z: -0.749997973} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 365 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.75000143, y: 0, z: -1.24999905} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 366 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000048, y: 0, z: 1.25000083} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 367 + Name: TreeCluster + IsActive: true + NumberOfChildren: 9 + Components: + Transform Component: + Translate: {x: 1.08703649, y: 1.755852e-07, z: -12.8693295} + Rotate: {x: 0, y: -2.83319044, z: 0} + Scale: {x: 0.749794662, y: 0.75, z: 0.749794662} + IsActive: true + Scripts: ~ +- EID: 368 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000048, y: -1.42108564e-14, z: 1.24999857} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 369 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.25000036, y: -1.42108564e-14, z: -1.00000179} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 370 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.499999672, y: -1.42108564e-14, z: 0.999998927} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 371 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.24999976, y: -1.42108564e-14, z: -0.750001252} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 372 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.50000024, y: -1.42108564e-14, z: -0.500000834} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 373 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.75000012, y: -1.42108564e-14, z: -1.00000095} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 374 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.249999776, y: -1.42108564e-14, z: -0.750001192} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 375 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.75000024, y: -1.42108564e-14, z: -1.2500006} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 376 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000048, y: -1.42108564e-14, z: 1.24999857} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 377 + Name: TreeCluster + IsActive: true + NumberOfChildren: 9 + Components: + Transform Component: + Translate: {x: 7.25601864, y: 1.55680326e-07, z: -11.2872229} + Rotate: {x: 0, y: 2.30721998, z: 0} + Scale: {x: 0.749779522, y: 0.75, z: 0.749779522} + IsActive: true + Scripts: ~ +- EID: 378 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000048, y: -1.42108547e-14, z: 1.25000048} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 379 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.25000048, y: -1.42108547e-14, z: -1.00000048} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 380 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.499999523, y: -1.42108547e-14, z: 1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 381 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.24999952, y: -1.42108547e-14, z: -0.749999046} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 382 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.50000048, y: -1.42108547e-14, z: -0.500000477} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 383 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.74999952, y: -1.42108547e-14, z: -0.999999523} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 384 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.249999523, y: -1.42108547e-14, z: -0.749999523} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 385 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.75, y: -1.42108547e-14, z: -1.24999905} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 386 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000048, y: -1.42108547e-14, z: 1.25000048} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 387 + Name: TreeCluster + IsActive: true + NumberOfChildren: 9 + Components: + Transform Component: + Translate: {x: 4.38531399, y: 1.85469574e-07, z: -15.6559658} + Rotate: {x: 0, y: 2.89864969, z: 0} + Scale: {x: 0.802338541, y: 0.802574933, z: 0.802338541} + IsActive: true + Scripts: ~ +- EID: 388 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000072, y: 2.84217094e-14, z: 1.24999976} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 389 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.25000095, y: 2.84217094e-14, z: -1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 390 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.500000954, y: 2.84217094e-14, z: 1.00000107} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 391 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.24999905, y: 2.84217094e-14, z: -0.75} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 392 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.5, y: 2.84217094e-14, z: -0.50000155} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 393 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.74999857, y: 2.84217094e-14, z: -0.999999523} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 394 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.249999523, y: 2.84217094e-14, z: -0.750000596} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 395 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.75000072, y: 2.84217094e-14, z: -1.25000167} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 396 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000072, y: 2.84217094e-14, z: 1.24999976} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 397 + Name: TreeCluster + IsActive: true + NumberOfChildren: 9 + Components: + Transform Component: + Translate: {x: 10.1465569, y: 1.39389343e-07, z: -6.44067621} + Rotate: {x: 0, y: 1.53019583, z: 0} + Scale: {x: 0.802350819, y: 0.802574933, z: 0.802350819} + IsActive: true + Scripts: ~ +- EID: 398 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000048, y: -1.42108547e-14, z: 1.24999905} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 399 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.2499994, y: -1.42108547e-14, z: -1.00000095} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 400 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.499999583, y: -1.42108547e-14, z: 0.999997139} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 401 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.25000048, y: -1.42108547e-14, z: -0.750000954} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 402 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.49999976, y: -1.42108547e-14, z: -0.500000954} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 403 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.75000012, y: -1.42108547e-14, z: -1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 404 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.250000358, y: -1.42108547e-14, z: -0.75} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 405 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.74999976, y: -1.42108547e-14, z: -1.25000191} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 406 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000048, y: -1.42108547e-14, z: 1.24999905} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 407 + Name: TreeCluster + IsActive: true + NumberOfChildren: 9 + Components: + Transform Component: + Translate: {x: -10.3963461, y: 1.0311652e-06, z: -5.21996689} + Rotate: {x: 0, y: 1.85743773, z: 0} + Scale: {x: 0.802347541, y: 0.802574933, z: 0.802347541} + IsActive: true + Scripts: ~ +- EID: 408 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000024, y: 0, z: 1.25} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 409 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.24999952, y: 0, z: -0.999999046} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 410 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.500000238, y: 0, z: 1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 411 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.24999952, y: 0, z: -0.75} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 412 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.5, y: 0, z: -0.5} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 413 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.75, y: 0, z: -0.999999046} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 414 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.250001431, y: 0, z: -0.749999046} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 415 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.75000048, y: 0, z: -1.25} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 416 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000024, y: 0, z: 1.25} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 417 + Name: TreeCluster + IsActive: true + NumberOfChildren: 9 + Components: + Transform Component: + Translate: {x: -11.8055868, y: 1.02849719e-06, z: -0.449734211} + Rotate: {x: 0, y: -1.17325497, z: 0} + Scale: {x: 0.802348375, y: 0.802574933, z: 0.802348375} + IsActive: true + Scripts: ~ +- EID: 418 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 1.25} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 419 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.25, y: 0, z: -1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 420 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.499999523, y: 0, z: 1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 421 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.25000048, y: 0, z: -0.75} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 422 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.49999952, y: 0, z: -0.5} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 423 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.75000024, y: 0, z: -0.999999046} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 424 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.250002384, y: 0, z: -0.749999046} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 425 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.74999952, y: 0, z: -1.24999905} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 426 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 1.25} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 427 + Name: TreeCluster + IsActive: true + NumberOfChildren: 9 + Components: + Transform Component: + Translate: {x: -10.6890984, y: 1.0175379e-06, z: 5.88018131} + Rotate: {x: 0, y: -1.55548835, z: 0} + Scale: {x: 0.80234766, y: 0.802574933, z: 0.80234766} + IsActive: true + Scripts: ~ +- EID: 428 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000048, y: 1.13686838e-13, z: 1.25000191} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 429 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.24999988, y: 1.13686838e-13, z: -0.999998093} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 430 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.500000358, y: 1.13686838e-13, z: 1.00000191} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 431 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.25, y: 1.13686838e-13, z: -0.749999046} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 432 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.50000048, y: 1.13686838e-13, z: -0.499999046} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 433 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.74999976, y: 1.13686838e-13, z: -0.999999046} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 434 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.250001878, y: 1.13686838e-13, z: -0.749998093} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 435 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.75000048, y: 1.13686838e-13, z: -1.24999905} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 436 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000048, y: 1.13686838e-13, z: 1.25000191} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 448 + Name: BushCluster + IsActive: true + NumberOfChildren: 10 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: -9.27025223} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 438 + Name: Exterior_Bush01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 5.81465149, y: -4.76837158e-07, z: 0.386853218} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 143461339 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 439 + Name: Exterior_Bush02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.331082046, y: 0, z: 0.392630577} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 136373407 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 65976 + Name: Exterior_Bush03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.06180131, y: 0, z: 0.439988136} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144928031 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 441 + Name: Exterior_Bush01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -7.09583855, y: -4.76837158e-07, z: 0.386853218} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 143461339 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 442 + Name: Exterior_Bush03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4.03810406, y: 0, z: 0.439988136} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144928031 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 443 + Name: Exterior_Bush02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4.52796364, y: 0, z: 0.392630577} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 136373407 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 444 + Name: Exterior_Bush01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.52529955, y: -4.76837158e-07, z: 0.386853218} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 143461339 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 445 + Name: Exterior_Bush02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -5.5497098, y: 0, z: 0.392630577} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 136373407 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 446 + Name: Exterior_Bush01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.79356122, y: -4.76837158e-07, z: 0.386853218} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 143461339 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 447 + Name: Exterior_Bush02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.18613672, y: 0, z: 0.392630577} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 136373407 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 449 + Name: BushCluster + IsActive: true + NumberOfChildren: 10 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 11.2170467} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 450 + Name: Exterior_Bush01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 5.81465149, y: -4.76837158e-07, z: 0.386853218} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 143461339 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 451 + Name: Exterior_Bush02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.331082046, y: 0, z: 0.392630577} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 136373407 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 452 + Name: Exterior_Bush03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.06180131, y: 0, z: 0.439988136} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144928031 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 453 + Name: Exterior_Bush01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -7.09583855, y: -4.76837158e-07, z: 0.386853218} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 143461339 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 454 + Name: Exterior_Bush03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4.03810406, y: 0, z: 0.439988136} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144928031 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 455 + Name: Exterior_Bush02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4.52796364, y: 0, z: 0.392630577} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 136373407 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 456 + Name: Exterior_Bush01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.52529955, y: -4.76837158e-07, z: 0.386853218} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 143461339 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 457 + Name: Exterior_Bush02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -5.5497098, y: 0, z: 0.392630577} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 136373407 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 458 + Name: Exterior_Bush01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.79356122, y: -4.76837158e-07, z: 0.386853218} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 143461339 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 459 + Name: Exterior_Bush02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.18613672, y: 0, z: 0.392630577} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 136373407 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 20 + Name: ===== Light ===== + IsActive: true + NumberOfChildren: 2 + Components: ~ + Scripts: ~ +- EID: 0 + Name: Light_Directional + IsActive: true + NumberOfChildren: 0 + Components: + Light Component: + Position: {x: 0, y: 0, z: 0} + Type: Directional + Direction: {x: 15, y: 90, z: 15} + Color: {x: 1, y: 1, z: 1, w: 1} + Layer: 4294967295 + Strength: 1 + IsActive: true + Scripts: ~ +- EID: 5 + Name: Light_Ambient + IsActive: true + NumberOfChildren: 0 + Components: + Light Component: + Position: {x: 0, y: 0, z: 0} + Type: Ambient + Direction: {x: 0, y: 0, z: 1} + Color: {x: 0.901608765, y: 0.867841423, z: 1, w: 1} + Layer: 4294967295 + Strength: 0.699999988 + IsActive: true + Scripts: ~ +- EID: 461 + Name: Player + IsActive: true + NumberOfChildren: 3 + Components: + Transform Component: + Translate: {x: 2.22697735, y: 0.632713675, z: 7.27700806} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 149697411 + Material: 126974645 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 1 + Angular Drag: 0.100000001 + Use Gravity: false + Interpolate: true + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: true + Freeze Rotation Y: true + Freeze Rotation Z: true + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.5, y: 0.699999988, z: 0.5} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.300000012, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: PlayerController + currentState: 4 + maxMoveVel: 4 + moveForce: 50 + sprintMultiplier: 1.5 + rotationFactorPerFrame: 4 + maxJumpHeight: 4 + maxJumpTime: 0.75 + fallMultipler: 2 + lightMultiper: 0.75 + mediumMultiper: 0.5 + heavyMultiper: 0.25 + - Type: PickAndThrow + throwForce: [300, 300, 300] + delayTimer: 1 + aimingLength: 1.5 + - Type: StateMachine + currentStateName: "" + currentAnimName: "" +- EID: 462 + Name: HoldingPoint + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 1.20000005, z: 0.5} + Rotate: {x: 0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 463 + Name: Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: -0.785375714, y: 0.890062392, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Camera Component: + Position: {x: 2.22697735, y: 0.632713675, z: 7.27700806} + Pitch: -44.9987106 + Yaw: 50.9968147 + Roll: 0 + Width: 1920 + Height: 1080 + Near: 0.00999999978 + Far: 10000 + Perspective: true + IsActive: true + Scripts: + - Type: SHADE_Scripting.ThirdPersonCamera + armLength: 2 + turnSpeedPitch: 0.300000012 + turnSpeedYaw: 0.5 + pitchClamp: 45 +- EID: 464 + Name: Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144838771 + Material: 123745521 + IsActive: true + Scripts: ~ \ No newline at end of file diff --git a/Assets/Scenes/Environment.shade.shmeta b/Assets/Scenes/Environment.shade.shmeta new file mode 100644 index 00000000..e40c5d65 --- /dev/null +++ b/Assets/Scenes/Environment.shade.shmeta @@ -0,0 +1,3 @@ +Name: Environment +ID: 91553073 +Type: 5 diff --git a/Assets/Scenes/M2Scene.shade b/Assets/Scenes/M2Scene.shade index b2a5683f..ff5e5fd6 100644 --- a/Assets/Scenes/M2Scene.shade +++ b/Assets/Scenes/M2Scene.shade @@ -1,10 +1,10 @@ - EID: 0 - Name: Default + Name: Camera IsActive: true NumberOfChildren: 0 Components: Camera Component: - Position: {x: 0, y: 0, z: 0} + Position: {x: 0, y: 3, z: 8} Pitch: 0 Yaw: 0 Roll: 0 @@ -13,6 +13,7 @@ Near: 0.00999999978 Far: 10000 Perspective: true + IsActive: true Light Component: Position: {x: 0, y: 0, z: 0} Type: Directional @@ -20,147 +21,10 @@ Color: {x: 0.951541841, y: 0.921719015, z: 0.553319454, w: 1} Layer: 4294967295 Strength: 0 - Scripts: ~ -- EID: 1 - Name: Default - IsActive: true - NumberOfChildren: 0 - Components: - Transform Component: - Translate: {x: -1.440328, y: -4.41369677, z: -5} - Rotate: {x: -0, y: 0, z: -0} - Scale: {x: 49.4798889, y: 0.5, z: 17.5} - Renderable Component: - Mesh: 149697411 - Material: 126974645 - RigidBody Component: - Type: Static - Mass: 1 - Drag: 0 - Angular Drag: 0 - Use Gravity: true - Interpolate: true - Freeze Position X: false - Freeze Position Y: false - Freeze Position Z: false - Freeze Rotation X: false - Freeze Rotation Y: false - Freeze Rotation Z: false - Collider Component: - Colliders: - - Is Trigger: false - Type: Box - Half Extents: {x: 1, y: 1, z: 1} - Friction: 0.400000006 - Bounciness: 0 - Density: 1 - Position Offset: {x: 0, y: 0, z: 0} - Scripts: ~ -- EID: 2 - Name: Player - IsActive: true - NumberOfChildren: 3 - Components: - Transform Component: - Translate: {x: -3.06177855, y: -2, z: -5} - Rotate: {x: -0, y: 0, z: -0} - Scale: {x: 2, y: 2, z: 2} - Renderable Component: - Mesh: 149697411 - Material: 126974645 - RigidBody Component: - Type: Dynamic - Mass: 1 - Drag: 0 - Angular Drag: 0 - Use Gravity: true - Interpolate: true - Freeze Position X: false - Freeze Position Y: false - Freeze Position Z: false - Freeze Rotation X: false - Freeze Rotation Y: false - Freeze Rotation Z: false - Collider Component: - Colliders: - - Is Trigger: false - Type: Box - Half Extents: {x: 1, y: 1, z: 1} - Friction: 0.400000006 - Bounciness: 0 - Density: 1 - Position Offset: {x: 0, y: 0.5, z: 0} - Scripts: ~ -- EID: 3 - Name: Default - IsActive: true - NumberOfChildren: 0 - Components: - Transform Component: - Translate: {x: -0.0094268322, y: 0, z: 0} - Rotate: {x: -0, y: 0, z: -0} - Scale: {x: 1, y: 1, z: 1} - Scripts: ~ -- EID: 4 - Name: Default - IsActive: true - NumberOfChildren: 0 - Components: - Transform Component: - Translate: {x: 0, y: 0, z: 0} - Rotate: {x: 0, y: 0, z: 0} - Scale: {x: 1, y: 1, z: 1} - Scripts: ~ -- EID: 9 - Name: Default - IsActive: true - NumberOfChildren: 0 - Components: - Transform Component: - Translate: {x: 0, y: 0, z: 0} - Rotate: {x: 0, y: 0, z: 0} - Scale: {x: 1, y: 1, z: 1} - Renderable Component: - Mesh: 144838771 - Material: 123745521 - Scripts: ~ -- EID: 6 - Name: AI - IsActive: true - NumberOfChildren: 0 - Components: - Transform Component: - Translate: {x: -8, y: -2, z: 2.5} - Rotate: {x: 0, y: 0, z: 0} - Scale: {x: 1, y: 1, z: 1} - Renderable Component: - Mesh: 149697411 - Material: 126974645 - RigidBody Component: - Type: Dynamic - Mass: 1 - Drag: 0 - Angular Drag: 0 - Use Gravity: true - Interpolate: false - Freeze Position X: false - Freeze Position Y: false - Freeze Position Z: false - Freeze Rotation X: true - Freeze Rotation Y: true - Freeze Rotation Z: true - Collider Component: - Colliders: - - Is Trigger: false - Type: Box - Half Extents: {x: 0.5, y: 0.5, z: 0.5} - Friction: 0.400000006 - Bounciness: 0 - Density: 1 - Position Offset: {x: 0, y: 0.5, z: 0} + IsActive: true Scripts: ~ - EID: 7 - Name: Default + Name: BigBoi IsActive: true NumberOfChildren: 0 Components: @@ -168,12 +32,14 @@ Translate: {x: 0, y: -16.8647861, z: -14.039052} Rotate: {x: -0, y: 0, z: -0} Scale: {x: 28.1434975, y: 28.1434975, z: 28.1434975} + IsActive: true Renderable Component: Mesh: 149697411 Material: 126974645 + IsActive: true Scripts: ~ - EID: 8 - Name: Default + Name: AmbientLight IsActive: true NumberOfChildren: 0 Components: @@ -184,32 +50,18 @@ Color: {x: 1, y: 1, z: 1, w: 1} Layer: 4294967295 Strength: 0.25 + IsActive: true Scripts: ~ -- EID: 5 - Name: item +- EID: 65542 + Name: Default IsActive: true NumberOfChildren: 0 Components: Transform Component: - Translate: {x: 0, y: -2, z: -5} + Translate: {x: 2.5, y: 0.5, z: -2.5} Rotate: {x: 0, y: 0, z: 0} - Scale: {x: 2, y: 2, z: 2} - Renderable Component: - Mesh: 144838771 - Material: 123745521 - RigidBody Component: - Type: Dynamic - Mass: 1 - Drag: 0 - Angular Drag: 0 - Use Gravity: true - Interpolate: false - Freeze Position X: false - Freeze Position Y: false - Freeze Position Z: false - Freeze Rotation X: true - Freeze Rotation Y: true - Freeze Rotation Z: true + Scale: {x: 5, y: 0.5, z: 5} + IsActive: true Collider Component: Colliders: - Is Trigger: false @@ -218,12 +70,315 @@ Friction: 0.400000006 Bounciness: 0 Density: 1 - Position Offset: {x: 0, y: 0.5, z: 0} - - Is Trigger: true + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65538 + Name: Movable + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 4.28833103, z: 0} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.00999999978 + Use Gravity: true + Interpolate: true + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false Type: Box Half Extents: {x: 2, y: 2, z: 2} Friction: 0.400000006 Bounciness: 0 Density: 1 - Position Offset: {x: 0, y: 0.5, z: 0} + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65537 + Name: Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 5.25, y: 2.75, z: 2.5} + Rotate: {x: 0, y: 0, z: 1.57079637} + Scale: {x: 5, y: 0.5, z: 5} + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 9 + Name: Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 5.25, y: 2.75, z: -2.5} + Rotate: {x: 0, y: 0, z: 1.57079637} + Scale: {x: 5, y: 0.5, z: 5} + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 10 + Name: Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -5.25, y: 2.75, z: 2.5} + Rotate: {x: 0, y: 0, z: 1.57079637} + Scale: {x: 5, y: 0.5, z: 5} + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 11 + Name: Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -5.25, y: 2.75, z: -2.5} + Rotate: {x: 0, y: 0, z: 1.57079637} + Scale: {x: 5, y: 0.5, z: 5} + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 12 + Name: Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.5, y: 2.75, z: 5.25} + Rotate: {x: 7.15255737e-07, y: 1.57079566, z: 1.57079589} + Scale: {x: 4.99999809, y: 0.499999762, z: 4.99999809} + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65551 + Name: Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.5, y: 2.75, z: 5.25} + Rotate: {x: 7.15255737e-07, y: 1.57079566, z: 1.57079589} + Scale: {x: 4.99999809, y: 0.499999762, z: 4.99999809} + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65550 + Name: Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.5, y: 2.75, z: -5.25} + Rotate: {x: 7.15255737e-07, y: 1.57079566, z: 1.57079589} + Scale: {x: 4.99999809, y: 0.499999762, z: 4.99999809} + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65549 + Name: Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.5, y: 2.75, z: -5.25} + Rotate: {x: 7.15255737e-07, y: 1.57079566, z: 1.57079589} + Scale: {x: 4.99999809, y: 0.499999762, z: 4.99999809} + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 16 + Name: Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 2.5, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 2.5, y: 0.5, z: 2.5} + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 5 + Name: Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.5, y: 0.5, z: 2.5} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 5, y: 0.5, z: 5} + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 4 + Name: Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.5, y: 0.5, z: -2.5} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 5, y: 0.5, z: 5} + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 3 + Name: Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.5, y: 0.5, z: 2.5} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 5, y: 0.5, z: 5} + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true Scripts: ~ \ No newline at end of file diff --git a/Assets/Scenes/MainGame.shade b/Assets/Scenes/MainGame.shade new file mode 100644 index 00000000..4d9946cf --- /dev/null +++ b/Assets/Scenes/MainGame.shade @@ -0,0 +1,8606 @@ +- EID: 19 + Name: ===== Environment ===== + IsActive: true + NumberOfChildren: 4 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 136 + Name: Main_Room + IsActive: true + NumberOfChildren: 3 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 51 + Name: Floor_Master + IsActive: true + NumberOfChildren: 5 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 26 + Name: Floor_Row_1 + IsActive: true + NumberOfChildren: 5 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 21 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 22 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 23 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 24 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 25 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 27 + Name: Floor_Row_2 + IsActive: true + NumberOfChildren: 5 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: -2} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 28 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 29 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 30 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 31 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 32 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 33 + Name: Floor_Row_3 + IsActive: true + NumberOfChildren: 5 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 2} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 34 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 35 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 36 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 37 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 38 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 39 + Name: Floor_Row_4 + IsActive: true + NumberOfChildren: 5 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: -4} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 40 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 41 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 42 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 43 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 44 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 45 + Name: Floor_Row_5 + IsActive: true + NumberOfChildren: 5 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 4} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 46 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 47 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 48 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 49 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 50 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 82 + Name: Walls_Master + IsActive: true + NumberOfChildren: 25 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1.10000002, z: 1} + IsActive: true + Scripts: ~ +- EID: 53 + Name: Window_O_Small + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.5, y: 0, z: -5} + Rotate: {x: 0, y: -3.1415925, z: 0} + Scale: {x: 0.999988258, y: 1, z: 0.999988258} + IsActive: true + Renderable Component: + Mesh: 149786048 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.200000003, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 2.0999999, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.899999976, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.449999988, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.100000001, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.449999988, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.100000001, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65591 + Name: Wall_Corner + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 5, y: 0, z: 5} + Rotate: {x: -0, y: 1.57079649, z: 0} + Scale: {x: 0.999999523, y: 1, z: 0.999999523} + IsActive: true + Renderable Component: + Mesh: 134714737 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: -0.449999988} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 56 + Name: Wall_Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.12474632, y: 0, z: -5} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.24999325, y: 1, z: 0.999946237} + IsActive: true + Renderable Component: + Mesh: 140834166 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 57 + Name: Wall_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 5, y: 0, z: -3} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999992847, y: 1, z: 0.999992847} + IsActive: true + Renderable Component: + Mesh: 142689599 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 58 + Name: Wall_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 5, y: 0, z: 3} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.99996388, y: 1, z: 0.99996388} + IsActive: true + Renderable Component: + Mesh: 142689599 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 59 + Name: Wall_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 5, y: 0, z: -1} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999984503, y: 1, z: 0.999984503} + IsActive: true + Renderable Component: + Mesh: 142689599 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 60 + Name: Wall_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1, y: 0, z: 5} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.999947786, y: 1, z: 0.999947786} + IsActive: true + Renderable Component: + Mesh: 142689599 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 61 + Name: Wall_Corner + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 5, y: 0, z: -5} + Rotate: {x: 0, y: -3.1415925, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 134714737 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: -0.449999988} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 64 + Name: Wall_Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.5, y: 0, z: 5} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140834166 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65 + Name: Wall_Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -5, y: 0, z: -1.5} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999983549, y: 1, z: 0.999983549} + IsActive: true + Renderable Component: + Mesh: 140834166 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 66 + Name: Wall_Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -5, y: 0, z: -2.125} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.24999325, y: 1, z: 0.999946237} + IsActive: true + Renderable Component: + Mesh: 140834166 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 69 + Name: Door_Wall_Frame + IsActive: true + NumberOfChildren: 1 + Components: + Transform Component: + Translate: {x: -5, y: 0, z: -0.5} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999984145, y: 1, z: 0.999984145} + IsActive: true + Renderable Component: + Mesh: 150924328 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.150000006, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 2.125, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.100000001, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.455000013, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.100000001, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.455000013, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 70 + Name: Door_Door_Frame + IsActive: true + NumberOfChildren: 1 + Components: + Transform Component: + Translate: {x: -6.4710548e-10, y: 0, z: -0.00173091888} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1.10000002, z: 1} + IsActive: true + Renderable Component: + Mesh: 146862321 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: ~ + IsActive: true + Scripts: ~ +- EID: 71 + Name: Door_Main_Piece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.400000006, y: 0, z: 0.113865376} + Rotate: {x: -0, y: 1.57079649, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 147152385 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.800000012, y: 2, z: 0.0350000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.400000006, y: 1, z: -0.0175000001} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65608 + Name: Window_C_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -5, y: 0, z: 3} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999980152, y: 1, z: 0.999980152} + IsActive: true + Renderable Component: + Mesh: 148351779 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65609 + Name: Wall_Corner + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -5, y: 0, z: 5} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 134714737 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: -0.449999988} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65610 + Name: Wall_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 5, y: 0, z: 1} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999973536, y: 1, z: 0.999973536} + IsActive: true + Renderable Component: + Mesh: 142689599 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 75 + Name: Wall_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -5, y: 0, z: 1} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999958873, y: 1, z: 0.999958873} + IsActive: true + Renderable Component: + Mesh: 142689599 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 76 + Name: Wall_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3, y: 0, z: 5} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.999947786, y: 1, z: 0.999947786} + IsActive: true + Renderable Component: + Mesh: 142689599 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 77 + Name: Wall_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1, y: 0, z: 5} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.999947786, y: 1, z: 0.999947786} + IsActive: true + Renderable Component: + Mesh: 142689599 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 78 + Name: Wall_Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.5, y: 0, z: -5} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140834166 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 79 + Name: Door_Wall_Frame + IsActive: true + NumberOfChildren: 1 + Components: + Transform Component: + Translate: {x: 2.5, y: 0, z: 5} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150924328 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.150000006, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 2.125, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.100000001, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.455000013, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.100000001, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.455000013, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 80 + Name: Door_Door_Frame + IsActive: true + NumberOfChildren: 1 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1.10000002, z: 1} + IsActive: true + Renderable Component: + Mesh: 146862321 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: ~ + IsActive: true + Scripts: ~ +- EID: 81 + Name: Door_Main_Piece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.400000095, y: 0, z: 0.113215446} + Rotate: {x: 0, y: -2.96705961, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 147152385 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.800000012, y: 2, z: 0.0350000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.400000006, y: 1, z: -0.0175000001} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 54 + Name: Window_C_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: -5} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 148351779 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 67 + Name: Window_C_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.87180281, y: 0, z: -4.27037907} + Rotate: {x: -0, y: 0.785398066, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 148351779 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 68 + Name: Window_C_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4.28601646, y: 0, z: -2.85616589} + Rotate: {x: -0, y: 0.785398066, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 148351779 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65588 + Name: Wall_Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.5, y: 0, z: -5} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140834166 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 131135 + Name: Wall_Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.5, y: 0, z: -5} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140834166 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 83 + Name: Ceiling_Master + IsActive: true + NumberOfChildren: 5 + Components: + Transform Component: + Translate: {x: 0, y: 2.46117163, z: 0} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 84 + Name: Floor_Row_1 + IsActive: true + NumberOfChildren: 5 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 85 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 86 + Name: Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 87 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 88 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 89 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 90 + Name: Floor_Row_2 + IsActive: true + NumberOfChildren: 5 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: -2} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 91 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 92 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 93 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 94 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 95 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 96 + Name: Floor_Row_3 + IsActive: true + NumberOfChildren: 5 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 2} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 97 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 98 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 99 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 100 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 101 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 102 + Name: Floor_Row_4 + IsActive: true + NumberOfChildren: 5 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: -4} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 103 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 104 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 105 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 106 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 107 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 108 + Name: Floor_Row_5 + IsActive: true + NumberOfChildren: 5 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 4} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 109 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 110 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 111 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 112 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 113 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 127069936 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 137 + Name: Entrance_Room + IsActive: true + NumberOfChildren: 4 + Components: + Transform Component: + Translate: {x: 2.25, y: 0, z: 7} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 127 + Name: Floor_Master + IsActive: true + NumberOfChildren: 2 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 118 + Name: Floor_Row_1 + IsActive: true + NumberOfChildren: 2 + Components: + Transform Component: + Translate: {x: -1, y: 0, z: -1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 119 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 132690168 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 120 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 132690168 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 122 + Name: Floor_Row_2 + IsActive: true + NumberOfChildren: 2 + Components: + Transform Component: + Translate: {x: -1, y: 0, z: 1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 123 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 132690168 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 124 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 132690168 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 128 + Name: Ceiling_Master + IsActive: true + NumberOfChildren: 2 + Components: + Transform Component: + Translate: {x: 0, y: 2.36603451, z: 0} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 129 + Name: Floor_Row_1 + IsActive: true + NumberOfChildren: 2 + Components: + Transform Component: + Translate: {x: -1, y: 0, z: -1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 130 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 132690168 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 131 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 132690168 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 132 + Name: Floor_Row_2 + IsActive: true + NumberOfChildren: 2 + Components: + Transform Component: + Translate: {x: -1, y: 0, z: 1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 133 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 132690168 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 134 + Name: Floor_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 142812576 + Material: 132690168 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.0500000007, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: -0.00999999978, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 135 + Name: Wall_Master + IsActive: true + NumberOfChildren: 7 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1.10000002, z: 1} + IsActive: true + Scripts: ~ +- EID: 65661 + Name: Wall_Corner + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 2} + Rotate: {x: -0, y: 1.57079649, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 134714737 + Material: 132690168 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: -0.449999988} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65657 + Name: Wall_Corner + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2, y: 0, z: 2} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 134714737 + Material: 132690168 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1.10000002, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.449999988, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.25, y: 2.20000005, z: 1.10000002} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: -0.449999988} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65653 + Name: Window_O_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 2} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 138781993 + Material: 132690168 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.200000003, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 2.0999999, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 0.899999976, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.449999988, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.100000001, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.949999988, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.100000001, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.949999988, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 131186 + Name: Wall_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 0} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999992251, y: 1, z: 0.999992251} + IsActive: true + Renderable Component: + Mesh: 142689599 + Material: 132690168 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 131187 + Name: Wall_Large + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2, y: 0, z: 0} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999995947, y: 1, z: 0.999995947} + IsActive: true + Renderable Component: + Mesh: 142689599 + Material: 132690168 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 2, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65652 + Name: Wall_Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: -1.5} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999990523, y: 1, z: 0.999990523} + IsActive: true + Renderable Component: + Mesh: 140834166 + Material: 132690168 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 126 + Name: Wall_Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2, y: 0, z: -1.5} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.99999392, y: 1, z: 0.99999392} + IsActive: true + Renderable Component: + Mesh: 140834166 + Material: 132690168 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 2.20000005, z: 0.25} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.10000002, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 235 + Name: Furniture_Chair01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.5, y: 0, z: 1.5} + Rotate: {x: 0, y: -1.57079601, z: 0} + Scale: {x: 0.999954104, y: 1, z: 0.999954104} + IsActive: true + Renderable Component: + Mesh: 142860936 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.400000006, y: 0.439999998, z: 0.400000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.219999999, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0399999991, y: 1, z: 0.400000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.180000007, y: 0.5, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 273 + Name: Furnitures + IsActive: true + NumberOfChildren: 10 + Components: + Transform Component: + Translate: {x: 1.25, y: 0, z: 1.75} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 131134 + Name: SetA + IsActive: true + NumberOfChildren: 10 + Components: + Transform Component: + Translate: {x: 0.75, y: 0, z: -4.67308044} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 178 + Name: Furniture_CounterBlock1 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.5, y: 0, z: -1.5} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999954104, y: 1, z: 0.999954104} + IsActive: true + Renderable Component: + Mesh: 142281760 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 179 + Name: BottomLid + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.5, y: 0, z: -1.5} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.999834061, y: 1, z: 0.999834061} + IsActive: true + Renderable Component: + Mesh: 144974966 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 180 + Name: Furniture_CounterBlock2 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.5, y: 0, z: -0.5} + Rotate: {x: 0, y: -1.57079601, z: 0} + Scale: {x: 0.99990958, y: 1, z: 0.99990958} + IsActive: true + Renderable Component: + Mesh: 144974966 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65719 + Name: Furniture_CounterDrawer1 + IsActive: true + NumberOfChildren: 3 + Components: + Transform Component: + Translate: {x: 2.5, y: 0, z: 0.25} + Rotate: {x: 0, y: -3.1415925, z: 0} + Scale: {x: 0.999855638, y: 1, z: 0.999855638} + IsActive: true + Renderable Component: + Mesh: 144189529 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.17499995, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: -0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.474999994, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65717 + Name: Furniture_CounterDrawerSmall + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.980086565, y: 0.306859791, z: 0.000663099228} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.999737263, y: 1, z: 0.999737263} + IsActive: true + Renderable Component: + Mesh: 135779275 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.970000029, y: 0.0250000004, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.219999999, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0450000018, y: 0.349999994, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.147, y: -0.0700000003, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0450000018, y: 0.349999994, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.757000029, y: -0.0700000003, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.959999979, y: 0.349999994, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.0700000003, z: -0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.959999979, y: 0.349999994, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.0700000003, z: 0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65720 + Name: Furniture_CounterDrawerSmall + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.546036243, y: 1.02225077, z: 0.00050569122} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.999866426, y: 1, z: 0.999866426} + IsActive: true + Renderable Component: + Mesh: 135779275 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.970000029, y: 0.0250000004, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.219999999, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0450000018, y: 0.349999994, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.147, y: -0.0700000003, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0450000018, y: 0.349999994, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.757000029, y: -0.0700000003, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.959999979, y: 0.349999994, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.0700000003, z: -0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.959999979, y: 0.349999994, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.0700000003, z: 0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65718 + Name: Furniture_CounterDrawerSmall + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.79029417, y: 0.665752649, z: 0.000704084581} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.999760687, y: 1, z: 0.999760687} + IsActive: true + Renderable Component: + Mesh: 135779275 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.970000029, y: 0.0250000004, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.219999999, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0450000018, y: 0.349999994, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.147, y: -0.0700000003, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0450000018, y: 0.349999994, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.757000029, y: -0.0700000003, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.959999979, y: 0.349999994, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.0700000003, z: -0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.959999979, y: 0.349999994, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.0700000003, z: 0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 185 + Name: Furniture_Oven + IsActive: true + NumberOfChildren: 2 + Components: + Transform Component: + Translate: {x: -1.5, y: 0, z: -1.5} + Rotate: {x: 0, y: -1.57079601, z: 0} + Scale: {x: 0.999761641, y: 1, z: 0.999761641} + IsActive: true + Renderable Component: + Mesh: 136828790 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 186 + Name: Oven_Door + IsActive: true + NumberOfChildren: 1 + Components: + Transform Component: + Translate: {x: 0.537624598, y: 0.246981457, z: 0.000124454513} + Rotate: {x: 1.34603506e-05, y: 3.58487387e-06, z: -1.04719746} + Scale: {x: 1.00001323, y: 0.999983132, z: 0.999992907} + IsActive: true + Renderable Component: + Mesh: 150740704 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 0.725000024, z: 0.850000024} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.375, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 187 + Name: Oven_Glass + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.13589262e-05, y: 0.354365677, z: -4.48226929e-05} + Rotate: {x: -5.66244012e-07, y: 1.57079184, z: -1.04719758} + Scale: {x: 0.999997735, y: 0.999998629, z: 0.999999285} + IsActive: true + Renderable Component: + Mesh: 135623020 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 188 + Name: Oven_Tray + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.678130627, y: 0.635995746, z: -0.000453472167} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.999971926, y: 1, z: 0.947892308} + IsActive: true + Renderable Component: + Mesh: 136078992 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.800000012, y: 0.0500000007, z: 0.800000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 189 + Name: Furniture_CounterSink2 + IsActive: true + NumberOfChildren: 1 + Components: + Transform Component: + Translate: {x: -0.5, y: 0, z: -1.5} + Rotate: {x: 0, y: -1.57079601, z: 0} + Scale: {x: 0.999882996, y: 1, z: 0.999882996} + IsActive: true + Renderable Component: + Mesh: 141601355 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.860000014, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: -0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.100000001, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.444999993, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.100000001, y: 0.300000012, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.444999993, y: 1.04999995, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.300000012, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.04999995, z: 0.444999993} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.300000012, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.04999995, z: -0.444999993} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.100000001, y: 0.300000012, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.449999988, y: 1.38999999, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 190 + Name: Furniture_CounterDoorRightFull + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.499101311, y: 0.0500000007, z: 0.460019141} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.999967337, y: 1, z: 0.999967337} + IsActive: true + Renderable Component: + Mesh: 146520338 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 1.07500005, z: 0.925000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.540000021, z: -0.460000008} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 191 + Name: Furniture_CounterSink3 + IsActive: true + NumberOfChildren: 1 + Components: + Transform Component: + Translate: {x: 0.5, y: 0, z: -1.5} + Rotate: {x: 0, y: -1.57079601, z: 0} + Scale: {x: 0.999868512, y: 1, z: 0.999868512} + IsActive: true + Renderable Component: + Mesh: 141601355 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.860000014, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: -0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.100000001, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.444999993, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.100000001, y: 0.300000012, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.444999993, y: 1.04999995, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.300000012, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.04999995, z: 0.444999993} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.300000012, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.04999995, z: -0.444999993} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.100000001, y: 0.300000012, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.449999988, y: 1.38999999, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 192 + Name: Furniture_CounterDoorLeftFull + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.500843167, y: 0.0500000007, z: -0.459560156} + Rotate: {x: -0, y: 0.559825659, z: 0} + Scale: {x: 0.999928236, y: 1, z: 0.999928236} + IsActive: true + Renderable Component: + Mesh: 150547241 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 1.07500005, z: 0.925000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.540000021, z: 0.460000008} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 193 + Name: Furniture_CounterBlock2 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.5, y: 0, z: -1.5} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.999834061, y: 1, z: 0.999834061} + IsActive: true + Renderable Component: + Mesh: 144974966 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 194 + Name: Furniture_ServiceTray + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.3758707, y: 0, z: -0.556610107} + Rotate: {x: -0, y: 1.66631782, z: 0} + Scale: {x: 0.999944031, y: 1, z: 0.999944031} + IsActive: true + Renderable Component: + Mesh: 140279658 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.400000006, y: 1.29999995, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.699999988, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.600000024, y: 1.70000005, z: 0.0700000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.850000024, z: -0.5} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.600000024, y: 1.70000005, z: 0.0700000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.850000024, z: 0.5} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 197 + Name: Furniture_TallStool01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.25, y: 0, z: -1.57691956} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140539561 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.300000012, y: 0.800000012, z: 0.300000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 205 + Name: SetB + IsActive: true + NumberOfChildren: 5 + Components: + Transform Component: + Translate: {x: -3, y: 0, z: -3.75} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 200 + Name: Furniture_Table01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.0670871735, y: 0, z: 0.236379623} + Rotate: {x: 0, y: -0.785398245, z: 0} + Scale: {x: 1.49995053, y: 1, z: 1.49995029} + IsActive: true + Renderable Component: + Mesh: 140474147 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.699999988, y: 0.0500000007, z: 1.20000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.77700001, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 0.800000012, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.449999988, y: 0.400000006, z: -0.850000024} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 0.800000012, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.449999988, y: 0.400000006, z: 0.850000024} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 0.800000012, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.449999988, y: 0.400000006, z: 0.850000024} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 0.800000012, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.449999988, y: 0.400000006, z: -0.850000024} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 201 + Name: Furniture_Chair01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.901912689, y: -2.37551575e-07, z: 0.00345230103} + Rotate: {x: -0, y: 1.95162022, z: 0} + Scale: {x: 0.999974966, y: 1, z: 0.999974966} + IsActive: true + Renderable Component: + Mesh: 142860936 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.400000006, y: 0.439999998, z: 0.400000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.219999999, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0399999991, y: 1, z: 0.400000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.180000007, y: 0.5, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 202 + Name: Furniture_Chair01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.180002213, y: 0, z: -0.507282257} + Rotate: {x: -0, y: 2.26356983, z: 0} + Scale: {x: 0.999929309, y: 1, z: 0.999929309} + IsActive: true + Renderable Component: + Mesh: 142860936 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.400000006, y: 0.439999998, z: 0.400000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.219999999, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0399999991, y: 1, z: 0.400000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.180000007, y: 0.5, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 203 + Name: Furniture_Chair01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.905802727, y: -2.37634836e-07, z: 0.32503891} + Rotate: {x: 0, y: -2.49300814, z: 0} + Scale: {x: 0.999879777, y: 1, z: 0.999879777} + IsActive: true + Renderable Component: + Mesh: 142860936 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.400000006, y: 0.439999998, z: 0.400000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.219999999, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0399999991, y: 1, z: 0.400000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.180000007, y: 0.5, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 204 + Name: Furniture_Chair01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.483336449, y: -1.01110842e-07, z: 1.39031887} + Rotate: {x: 0, y: -0.448161721, z: 0} + Scale: {x: 0.999916553, y: 1, z: 0.999916553} + IsActive: true + Renderable Component: + Mesh: 142860936 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.400000006, y: 0.439999998, z: 0.400000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.219999999, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0399999991, y: 1, z: 0.400000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.180000007, y: 0.5, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 236 + Name: SetC + IsActive: true + NumberOfChildren: 16 + Components: + Transform Component: + Translate: {x: -1.25, y: 0, z: -1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 65743 + Name: Furniture_CounterEmpty + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.5, y: 0, z: 0.75} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.999873936, y: 1, z: 0.999873936} + IsActive: true + Renderable Component: + Mesh: 144189529 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.17499995, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: -0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.474999994, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 208 + Name: Furniture_CounterEmpty + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.5, y: 0, z: -0.25} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.999873936, y: 1, z: 0.999873936} + IsActive: true + Renderable Component: + Mesh: 144189529 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.17499995, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: -0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.474999994, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 209 + Name: Furniture_CounterSink1 + IsActive: true + NumberOfChildren: 2 + Components: + Transform Component: + Translate: {x: 0.5, y: 0, z: -1.25} + Rotate: {x: -0, y: 1.57079649, z: 0} + Scale: {x: 0.999842346, y: 1, z: 0.999842346} + IsActive: true + Renderable Component: + Mesh: 141601355 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.860000014, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: -0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.100000001, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.444999993, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.100000001, y: 0.300000012, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.444999993, y: 1.04999995, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.300000012, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.04999995, z: 0.444999993} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.300000012, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.04999995, z: -0.444999993} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.100000001, y: 0.300000012, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.449999988, y: 1.38999999, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 210 + Name: Furniture_CounterDoorLeftHalf + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.499338686, y: 0.0500000119, z: -0.460074902} + Rotate: {x: -0, y: 0.107343696, z: 0} + Scale: {x: 0.999879241, y: 1, z: 0.999879241} + IsActive: true + Renderable Component: + Mesh: 146024338 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 1.07500005, z: 0.462500006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.540000021, z: 0.230000004} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 211 + Name: Furniture_CounterDoorRightHalf + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.499669075, y: 0.0500000119, z: 0.460034132} + Rotate: {x: 0, y: -0.299843848, z: 0} + Scale: {x: 0.999920487, y: 1, z: 0.999920487} + IsActive: true + Renderable Component: + Mesh: 146717179 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 1.07500005, z: 0.462500006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.540000021, z: -0.230000004} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 212 + Name: Furniture_CounterDrawer2 + IsActive: true + NumberOfChildren: 2 + Components: + Transform Component: + Translate: {x: 1.5, y: 0, z: -1.25} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999874115, y: 1, z: 0.999874115} + IsActive: true + Renderable Component: + Mesh: 144189529 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.17499995, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: -0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.474999994, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 213 + Name: Furniture_CounterDrawerMid + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.675502121, y: 0.589012742, z: -0.000428795815} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.999956608, y: 1, z: 0.999956608} + IsActive: true + Renderable Component: + Mesh: 139881558 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.970000029, y: 0.0250000004, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.519999981, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0450000018, y: 0.699999988, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.147, y: -0.170000002, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0450000018, y: 0.699999988, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.757000029, y: -0.170000002, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.959999979, y: 0.699999988, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.170000002, z: -0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.959999979, y: 0.699999988, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.170000002, z: 0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 214 + Name: Furniture_CounterDrawerSmall + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.597297132, y: 1.02225077, z: 1.90734863e-06} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.999922097, y: 1, z: 0.999922097} + IsActive: true + Renderable Component: + Mesh: 135779275 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.970000029, y: 0.0250000004, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.219999999, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0450000018, y: 0.349999994, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.147, y: -0.0700000003, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0450000018, y: 0.349999994, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.757000029, y: -0.0700000003, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.959999979, y: 0.349999994, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.0700000003, z: -0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.959999979, y: 0.349999994, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.0700000003, z: 0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 215 + Name: Furniture_CounterEmpty + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.5, y: 0, z: 0.75} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.999839723, y: 1, z: 0.999839723} + IsActive: true + Renderable Component: + Mesh: 144189529 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.17499995, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: -0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.474999994, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 216 + Name: Furniture_CounterBlock1 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.5, y: 0, z: -0.25} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999942064, y: 1, z: 0.999942064} + IsActive: true + Renderable Component: + Mesh: 142281760 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 217 + Name: Furniture_CounterBlock1 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.5, y: 0, z: -0.25} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999970734, y: 1, z: 0.999970734} + IsActive: true + Renderable Component: + Mesh: 142281760 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 218 + Name: Furniture_CounterBlock1 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.5, y: 0, z: 0.75} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999965072, y: 1, z: 0.999965072} + IsActive: true + Renderable Component: + Mesh: 142281760 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 219 + Name: Furniture_CounterBlock1 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.5, y: 0, z: 0.75} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999953389, y: 1, z: 0.999953389} + IsActive: true + Renderable Component: + Mesh: 142281760 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 220 + Name: Furniture_Oven + IsActive: true + NumberOfChildren: 2 + Components: + Transform Component: + Translate: {x: -0.5, y: 0, z: 1.75} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999866664, y: 1, z: 0.999866664} + IsActive: true + Renderable Component: + Mesh: 136828790 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 221 + Name: Oven_Door + IsActive: true + NumberOfChildren: 1 + Components: + Transform Component: + Translate: {x: 0.535853326, y: 0.246981457, z: 4.76837158e-06} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.999996006, y: 0.999996006, z: 1} + IsActive: true + Renderable Component: + Mesh: 150740704 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 0.725000024, z: 0.850000024} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.375, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 222 + Name: Oven_Glass + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0.354394436, z: 0} + Rotate: {x: 0, y: 1.57079637, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 135623020 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 223 + Name: Oven_Tray + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.000432908564, y: 0.649999976, z: 3.81469727e-06} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.999995291, y: 1, z: 0.999995291} + IsActive: true + Renderable Component: + Mesh: 136078992 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.800000012, y: 0.0500000007, z: 0.800000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 224 + Name: Furniture_Oven + IsActive: true + NumberOfChildren: 2 + Components: + Transform Component: + Translate: {x: 0.5, y: 0, z: 1.75} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999874473, y: 1, z: 0.999874473} + IsActive: true + Renderable Component: + Mesh: 136828790 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 225 + Name: Oven_Door + IsActive: true + NumberOfChildren: 1 + Components: + Transform Component: + Translate: {x: 0.536169469, y: 0.246981457, z: 1.90734863e-06} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.999996006, y: 0.999996006, z: 1} + IsActive: true + Renderable Component: + Mesh: 150740704 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 0.725000024, z: 0.850000024} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.375, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 226 + Name: Oven_Glass + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0.354394436, z: 0} + Rotate: {x: 0, y: 1.57079637, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 135623020 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 227 + Name: Oven_Tray + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.49009327e-06, y: 0.649999976, z: 9.53674316e-07} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.999995291, y: 1, z: 0.999995291} + IsActive: true + Renderable Component: + Mesh: 136078992 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.800000012, y: 0.0500000007, z: 0.800000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 228 + Name: Furniture_CounterEmpty + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.5, y: 0, z: 1.75} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999866128, y: 1, z: 0.999866128} + IsActive: true + Renderable Component: + Mesh: 144189529 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.17499995, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: -0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.474999994, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 230 + Name: Furniture_CounterEmpty + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.11122513, y: 0, z: 1.36653423} + Rotate: {x: -0, y: 0.785398066, z: 0} + Scale: {x: 0.999848902, y: 0.899999976, z: 1.35447872} + IsActive: true + Renderable Component: + Mesh: 144189529 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.17499995, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: -0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.474999994, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 231 + Name: Furniture_CounterEmpty + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.5, y: 0, z: -0.25} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.99984026, y: 1, z: 0.99984026} + IsActive: true + Renderable Component: + Mesh: 144189529 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.17499995, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: -0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.474999994, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65765 + Name: Furniture_CounterDrawer2 + IsActive: true + NumberOfChildren: 2 + Components: + Transform Component: + Translate: {x: -0.5, y: 0, z: -1.25} + Rotate: {x: 0, y: -3.1415925, z: 0} + Scale: {x: 0.999849498, y: 1, z: 0.999849498} + IsActive: true + Renderable Component: + Mesh: 144189529 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0250000004, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.0500000007, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1.17499995, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: 0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1.20000005, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.600000024, z: -0.474999994} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 1.20000005, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.474999994, y: 0.600000024, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 232 + Name: Furniture_CounterDrawerMid + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.350027919, y: 0.589012742, z: 1.59145634e-06} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.999964356, y: 1, z: 0.999964356} + IsActive: true + Renderable Component: + Mesh: 139881558 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.970000029, y: 0.0250000004, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.519999981, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0450000018, y: 0.699999988, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.147, y: -0.170000002, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0450000018, y: 0.699999988, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.757000029, y: -0.170000002, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.959999979, y: 0.699999988, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.170000002, z: -0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.959999979, y: 0.699999988, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.170000002, z: 0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 233 + Name: Furniture_CounterDrawerSmall + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.59729749, y: 1.02225077, z: 1.68053782e-06} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.999922097, y: 1, z: 0.999922097} + IsActive: true + Renderable Component: + Mesh: 135779275 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.970000029, y: 0.0250000004, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.219999999, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0450000018, y: 0.349999994, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.147, y: -0.0700000003, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0450000018, y: 0.349999994, z: 0.870000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.757000029, y: -0.0700000003, z: 0.00499999989} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.959999979, y: 0.349999994, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.0700000003, z: -0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.959999979, y: 0.349999994, z: 0.0450000018} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.310000002, y: -0.0700000003, z: 0.425000012} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 234 + Name: Furniture_TallStool01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.60869884, y: 0, z: -1.51192188} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140539561 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.300000012, y: 0.800000012, z: 0.300000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 251 + Name: Furniture_Shelf1 + IsActive: true + NumberOfChildren: 6 + Components: + Transform Component: + Translate: {x: -4.89725351, y: 0, z: 2.57555723} + Rotate: {x: 0, y: -3.1415925, z: 0} + Scale: {x: 1.19999945, y: 1.20000005, z: 1.19999945} + IsActive: true + Scripts: ~ +- EID: 252 + Name: Furniture_Shelf1_Bottom + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.000432491302, y: 0, z: -1.14566433e-07} + Rotate: {x: -0, y: 1.57079649, z: 0} + Scale: {x: 0.999999225, y: 1, z: 0.999999225} + IsActive: true + Renderable Component: + Mesh: 138181722 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1.20000005, y: 0.100000001, z: 2.20000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0500000007, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 253 + Name: Furniture_Shelf1_Top + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.000432491302, y: 2, z: -1.14566433e-07} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.99998945, y: 1, z: 0.99998945} + IsActive: true + Renderable Component: + Mesh: 147761585 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1.20000005, y: 0.100000001, z: 2.20000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 254 + Name: Furniture_Shelf1_Back + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.000432491302, y: 1, z: -0.500000119} + Rotate: {x: 2.08616285e-07, y: 1.57079577, z: 1.57079554} + Scale: {x: 2, y: 0.999999523, z: 1.10000002} + IsActive: true + Renderable Component: + Mesh: 139576452 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.100000001, z: 1.89999998} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 255 + Name: Furniture_Shelf1_MidShelf + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.000432491302, y: 0.878599584, z: -1.14566433e-07} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.99996531, y: 1, z: 0.99996531} + IsActive: true + Renderable Component: + Mesh: 142336524 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.899999976, y: 0.100000001, z: 1.89999998} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 256 + Name: Furniture_Shelf1_FrameHigh + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.000432491302, y: 1, z: -1.14566433e-07} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999963462, y: 1, z: 0.999963462} + IsActive: true + Renderable Component: + Mesh: 150586966 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: -0.954999983} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: 0.954999983} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 257 + Name: Furniture_Shelf1_FrameLow + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.000432491302, y: 0, z: -1.14566433e-07} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999942899, y: 1, z: 0.999942899} + IsActive: true + Renderable Component: + Mesh: 140066298 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: -0.954999983} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: 0.954999983} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65784 + Name: Furniture_Chair01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4.64632654, y: 0, z: 1.5004077} + Rotate: {x: 0, y: -1.57079601, z: 0} + Scale: {x: 0.999930918, y: 1, z: 0.999930918} + IsActive: true + Renderable Component: + Mesh: 142860936 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.400000006, y: 0.439999998, z: 0.400000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.219999999, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0399999991, y: 1, z: 0.400000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.180000007, y: 0.5, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 65786 + Name: Furniture_Shelf1 + IsActive: true + NumberOfChildren: 6 + Components: + Transform Component: + Translate: {x: 3.04601955, y: 0, z: -0.46364665} + Rotate: {x: -0, y: -1.57079601, z: 0} + Scale: {x: 0.999849677, y: 1.02300358, z: 0.999849677} + IsActive: true + Scripts: ~ +- EID: 258 + Name: Furniture_Shelf1_Bottom + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.000105956118, y: 0, z: 0.000873088837} + Rotate: {x: -0, y: 1.57079613, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 138181722 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1.20000005, y: 0.100000001, z: 2.20000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0500000007, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 259 + Name: Furniture_Shelf1_Top + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.000105836909, y: 2, z: 0.000872135162} + Rotate: {x: -0, y: 1.57079601, z: -0} + Scale: {x: 0.99998945, y: 1, z: 0.99998945} + IsActive: true + Renderable Component: + Mesh: 147761585 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1.20000005, y: 0.100000001, z: 2.20000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 260 + Name: Furniture_Shelf1_Back + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.00010786378, y: 1, z: -0.499994278} + Rotate: {x: 2.98023224e-08, y: 1.57079542, z: 1.57079542} + Scale: {x: 2, y: 0.999999523, z: 1.10000002} + IsActive: true + Renderable Component: + Mesh: 139576452 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.100000001, z: 1.89999998} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 261 + Name: Furniture_Shelf1_MidShelf + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.000105777304, y: 1, z: 0.000871658325} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999976516, y: 1, z: 0.999976516} + IsActive: true + Renderable Component: + Mesh: 142336524 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.899999976, y: 0.100000001, z: 1.89999998} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 262 + Name: Furniture_Shelf1_FrameHigh + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.000105777304, y: 1, z: 0.000871658325} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999963403, y: 1, z: 0.999963403} + IsActive: true + Renderable Component: + Mesh: 150586966 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: -0.954999983} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: 0.954999983} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 263 + Name: Furniture_Shelf1_FrameLow + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.000105836909, y: 0, z: 0.000872135162} + Rotate: {x: -0, y: 1.57079601, z: -0} + Scale: {x: 0.999942899, y: 1, z: 0.999942899} + IsActive: true + Renderable Component: + Mesh: 140066298 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: -0.954999983} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: 0.954999983} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 264 + Name: Furniture_Shelf1 + IsActive: true + NumberOfChildren: 6 + Components: + Transform Component: + Translate: {x: 3.10281086, y: 0, z: -2.91405487} + Rotate: {x: 0, y: -1.57079601, z: 0} + Scale: {x: 0.999990523, y: 1, z: 0.999990523} + IsActive: true + Scripts: ~ +- EID: 265 + Name: Furniture_Shelf1_Bottom + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.49641334e-06, y: 0, z: -2.86102295e-06} + Rotate: {x: -0, y: 1.57079613, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 138181722 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1.20000005, y: 0.100000001, z: 2.20000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0500000007, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 266 + Name: Furniture_Shelf1_Top + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.49641334e-06, y: 2, z: -2.86102295e-06} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.99998945, y: 1, z: 0.99998945} + IsActive: true + Renderable Component: + Mesh: 147761585 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1.20000005, y: 0.100000001, z: 2.20000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 267 + Name: Furniture_Shelf1_Back + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.000216073822, y: 1, z: -0.500002861} + Rotate: {x: 2.98023224e-08, y: 1.57079542, z: 1.57079542} + Scale: {x: 2, y: 0.999999523, z: 1.10000002} + IsActive: true + Renderable Component: + Mesh: 139576452 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.100000001, z: 1.89999998} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 268 + Name: Furniture_Shelf1_MidShelf + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.49641334e-06, y: 1, z: -2.86102295e-06} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999976516, y: 1, z: 0.999976516} + IsActive: true + Renderable Component: + Mesh: 142336524 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.899999976, y: 0.100000001, z: 1.89999998} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 269 + Name: Furniture_Shelf1_FrameHigh + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.49641334e-06, y: 1, z: -2.86102295e-06} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999963403, y: 1, z: 0.999963403} + IsActive: true + Renderable Component: + Mesh: 150586966 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: -0.954999983} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: 0.954999983} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 270 + Name: Furniture_Shelf1_FrameLow + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.49641334e-06, y: 0, z: -2.86102295e-06} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999942899, y: 1, z: 0.999942899} + IsActive: true + Renderable Component: + Mesh: 140066298 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: -0.954999983} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: 0.954999983} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 271 + Name: Furniture_Table01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.28806686, y: 4.76837158e-07, z: 2.51028538} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.999803007, y: 1, z: 0.999803007} + IsActive: true + Renderable Component: + Mesh: 140474147 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.699999988, y: 0.0500000007, z: 1.20000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.77700001, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 0.800000012, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.25, y: 0.400000006, z: -0.550000012} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 0.800000012, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.25, y: 0.400000006, z: 0.550000012} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 0.800000012, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.25, y: 0.400000006, z: 0.550000012} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0500000007, y: 0.800000012, z: 0.0500000007} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.25, y: 0.400000006, z: -0.550000012} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 272 + Name: Furniture_Chair01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.37112713, y: -2.77225354e-09, z: 1.61954117} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.999916911, y: 1, z: 0.999916911} + IsActive: true + Renderable Component: + Mesh: 142860936 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.400000006, y: 0.439999998, z: 0.400000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.219999999, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 0.0399999991, y: 1, z: 0.400000006} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0.180000007, y: 0.5, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 244 + Name: Furniture_Shelf1 + IsActive: true + NumberOfChildren: 4 + Components: + Transform Component: + Translate: {x: -5.52377319, y: 0, z: 1.00466061} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.999963343, y: 1, z: 0.999963343} + IsActive: true + Scripts: ~ +- EID: 245 + Name: Furniture_Shelf1_Bottom + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.4045338e-07, y: 0, z: 0} + Rotate: {x: -0, y: 1.57079649, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 138181722 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1.20000005, y: 0.100000001, z: 2.20000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.0500000007, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 246 + Name: Furniture_Shelf1_Top + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.40490897e-07, y: 0.83211112, z: 0.000104904175} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999976337, y: 1, z: 0.999976337} + IsActive: true + Renderable Component: + Mesh: 147761585 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1.20000005, y: 0.100000001, z: 2.20000005} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 247 + Name: Furniture_Shelf1_Back + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.8239591e-08, y: 0.425199866, z: -0.499661922} + Rotate: {x: 2.98023224e-07, y: 1.57079613, z: 1.57079566} + Scale: {x: 0.927978218, y: 0.999999523, z: 1.10000813} + IsActive: true + Renderable Component: + Mesh: 139576452 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 0.100000001, z: 1.89999998} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 249 + Name: Furniture_Shelf1_FrameHigh + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.40554903e-07, y: -0.132160872, z: 0.000283718109} + Rotate: {x: -0, y: 1.57079601, z: 0} + Scale: {x: 0.999927938, y: 1, z: 0.999927938} + IsActive: true + Renderable Component: + Mesh: 150586966 + Material: 131956078 + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: -0.954999983} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1, z: 0.100000001} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: 0.954999983} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 460 + Name: Exterior + IsActive: true + NumberOfChildren: 5 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 274 + Name: SkyDome + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 22.8147907, y: 22.8147907, z: 22.8147907} + IsActive: true + Renderable Component: + Mesh: 144340823 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 295 + Name: Fences + IsActive: true + NumberOfChildren: 20 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 276 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1, y: 0, z: -10} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.75, y: 0.75, z: 0.75} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 65811 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 6.5, y: 0, z: -0.75} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.749885261, y: 0.75, z: 0.749885261} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 277 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4.75, y: 0, z: -10} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.75, y: 0.75, z: 0.75} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 278 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 6.5, y: 0, z: -4.5} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.749958098, y: 0.75, z: 0.749958098} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 279 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 6.5, y: 0, z: -8.25} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.749971926, y: 0.75, z: 0.749971926} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 280 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.75, y: 0, z: -10} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.75, y: 0.75, z: 0.75} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 281 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -6.5, y: 0, z: -10} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.75, y: 0.75, z: 0.75} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 282 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -8.25, y: 0, z: -8.25} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.74998349, y: 0.75, z: 0.74998349} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 283 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -8.25, y: 0, z: -4.5} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.749970615, y: 0.75, z: 0.749970615} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 284 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -8.25, y: 0, z: -0.75} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.749959767, y: 0.75, z: 0.749959767} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 285 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -8.25, y: 0, z: 3} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.749949992, y: 0.75, z: 0.749949992} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 286 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -8.25, y: 0, z: 6.75} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.749939382, y: 0.75, z: 0.749939382} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 287 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -8.25, y: 0, z: 10.5} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.749930501, y: 0.75, z: 0.749930501} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 288 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -6.5, y: 0, z: 12.25} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.749930501, y: 0.75, z: 0.749930501} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 289 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.75, y: 0, z: 12.25} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.749930501, y: 0.75, z: 0.749930501} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 290 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1, y: 0, z: 12.25} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.749930501, y: 0.75, z: 0.749930501} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 291 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4.75, y: 0, z: 12.25} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.749930501, y: 0.75, z: 0.749930501} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 292 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 6.5, y: 0, z: 10.5} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.749919176, y: 0.75, z: 0.749919176} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 293 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 6.5, y: 0, z: 6.75} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.749905586, y: 0.75, z: 0.749905586} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 294 + Name: Exterior_FenceFivepiece + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 6.5, y: 0, z: 3} + Rotate: {x: 0, y: 1.57079601, z: 0} + Scale: {x: 0.749896526, y: 0.75, z: 0.749896526} + IsActive: true + Renderable Component: + Mesh: 145842965 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 437 + Name: Trees + IsActive: true + NumberOfChildren: 14 + Components: ~ + Scripts: ~ +- EID: 65842 + Name: TreeCluster + IsActive: true + NumberOfChildren: 9 + Components: + Transform Component: + Translate: {x: 10.1952591, y: 0, z: 10.7309589} + Rotate: {x: 0, y: 1.9471432, z: 0} + Scale: {x: 0.749998093, y: 0.75, z: 0.749998093} + IsActive: true + Scripts: ~ +- EID: 297 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.99999917, y: 0, z: 1.25000107} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 298 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.24999964, y: 0, z: -0.999999106} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 299 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.50000006, y: 0, z: 1.00000012} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 300 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.25000167, y: 0, z: -0.75000006} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 301 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.49999928, y: 0, z: -0.499999076} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 302 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.7500006, y: 0, z: -0.999998152} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 303 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.25000146, y: 0, z: -0.75000006} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 304 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.75000072, y: 0, z: -1.24999821} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 305 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.99999917, y: 0, z: 1.25000107} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 307 + Name: TreeCluster + IsActive: true + NumberOfChildren: 9 + Components: + Transform Component: + Translate: {x: -13.7129259, y: 1.02942158e-06, z: 3.45037246} + Rotate: {x: 0, y: -1.55548823, z: 0} + Scale: {x: 0.946770251, y: 0.947038352, z: 0.946770251} + IsActive: true + Scripts: ~ +- EID: 308 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000024, y: 0, z: 1.25000095} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 309 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.24999964, y: 0, z: -0.999999046} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 310 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.499999911, y: 0, z: 1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 311 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.25000024, y: 0, z: -0.75} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 312 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.50000024, y: 0, z: -0.5} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 313 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.75000012, y: 0, z: -1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 314 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.250002086, y: 0, z: -0.75} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 315 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.74999928, y: 0, z: -1.24999905} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 316 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000024, y: 0, z: 1.25000095} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 317 + Name: TreeCluster + IsActive: true + NumberOfChildren: 9 + Components: + Transform Component: + Translate: {x: 7.0228982, y: 0, z: 14.5601959} + Rotate: {x: 0, y: 0.723479152, z: 0} + Scale: {x: 0.75, y: 0.75, z: 0.75} + IsActive: true + Scripts: ~ +- EID: 318 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.99999905, y: 0, z: 1.24999952} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 319 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.24999952, y: 0, z: -1.00000095} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 320 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.5, y: 0, z: 0.999998093} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 321 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.25000095, y: 0, z: -0.750000477} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 322 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.49999905, y: 0, z: -0.500001431} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 323 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.75000048, y: 0, z: -1.00000095} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 324 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.250000954, y: 0, z: -0.750000954} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 325 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.74999905, y: 0, z: -1.25000143} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 326 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.99999905, y: 0, z: 1.24999952} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 327 + Name: TreeCluster + IsActive: true + NumberOfChildren: 9 + Components: + Transform Component: + Translate: {x: 1.25, y: 0, z: 14.5} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 0.75, y: 0.75, z: 0.75} + IsActive: true + Scripts: ~ +- EID: 328 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 1.25} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 329 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.25000012, y: 0, z: -1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 330 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.500000119, y: 0, z: 1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 331 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.25, y: 0, z: -0.75} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 332 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.50000048, y: 0, z: -0.5} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 333 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.75, y: 0, z: -1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 334 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.249999881, y: 0, z: -0.75} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 335 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.75000048, y: 0, z: -1.25} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 336 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 1.25} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 337 + Name: TreeCluster + IsActive: true + NumberOfChildren: 9 + Components: + Transform Component: + Translate: {x: -3.74656153, y: 5.05771936e-07, z: 15.2930593} + Rotate: {x: 0, y: -0.566242754, z: 0} + Scale: {x: 0.749999821, y: 0.75, z: 0.749999821} + IsActive: true + Scripts: ~ +- EID: 338 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.99999976, y: 0, z: 1.25000167} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 339 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.24999952, y: 0, z: -0.999999881} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 340 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.500000954, y: 0, z: 1.00000238} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 341 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.25000048, y: 0, z: -0.749999046} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 342 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.5, y: 0, z: -0.499999404} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 343 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.75, y: 0, z: -0.999998808} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 344 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.249999523, y: 0, z: -0.749997854} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 345 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.75000095, y: 0, z: -1.24999714} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 346 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.99999976, y: 0, z: 1.25000167} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 347 + Name: TreeCluster + IsActive: true + NumberOfChildren: 9 + Components: + Transform Component: + Translate: {x: -8.91827679, y: 1.92174866e-07, z: -11.9713926} + Rotate: {x: 0, y: -2.5559175, z: 0} + Scale: {x: 0.749962032, y: 0.75, z: 0.749962032} + IsActive: true + Scripts: ~ +- EID: 348 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000095, y: 0, z: 1.25000143} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 349 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.25000095, y: 0, z: -0.999999523} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 350 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.500001907, y: 0, z: 1.00000095} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 351 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.24999952, y: 0, z: -0.749999046} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 352 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.50000095, y: 0, z: -0.499999523} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 353 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.75000095, y: 0, z: -0.999999046} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 354 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.25, y: 0, z: -0.749998569} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 355 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.75, y: 0, z: -1.24999905} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 356 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000095, y: 0, z: 1.25000143} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 357 + Name: TreeCluster + IsActive: true + NumberOfChildren: 9 + Components: + Transform Component: + Translate: {x: -3.85509062, y: 1.903868e-07, z: -13.8841438} + Rotate: {x: 0, y: 2.91411972, z: 0} + Scale: {x: 0.749867201, y: 0.75, z: 0.749867201} + IsActive: true + Scripts: ~ +- EID: 358 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000048, y: 0, z: 1.25000083} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 359 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.25000048, y: 0, z: -0.999998808} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 360 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.500000954, y: 0, z: 1.00000167} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 361 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.24999976, y: 0, z: -0.75} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 362 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.50000048, y: 0, z: -0.499998808} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 363 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.74999952, y: 0, z: -0.999998927} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 364 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.249999046, y: 0, z: -0.749997973} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 365 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.75000143, y: 0, z: -1.24999905} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 366 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000048, y: 0, z: 1.25000083} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 367 + Name: TreeCluster + IsActive: true + NumberOfChildren: 9 + Components: + Transform Component: + Translate: {x: 1.08703649, y: 1.755852e-07, z: -12.8693295} + Rotate: {x: 0, y: -2.83319044, z: 0} + Scale: {x: 0.749794662, y: 0.75, z: 0.749794662} + IsActive: true + Scripts: ~ +- EID: 368 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000048, y: -1.42108564e-14, z: 1.24999857} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 369 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.25000036, y: -1.42108564e-14, z: -1.00000179} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 370 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.499999672, y: -1.42108564e-14, z: 0.999998927} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 371 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.24999976, y: -1.42108564e-14, z: -0.750001252} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 372 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.50000024, y: -1.42108564e-14, z: -0.500000834} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 373 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.75000012, y: -1.42108564e-14, z: -1.00000095} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 374 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.249999776, y: -1.42108564e-14, z: -0.750001192} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 375 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.75000024, y: -1.42108564e-14, z: -1.2500006} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 376 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000048, y: -1.42108564e-14, z: 1.24999857} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 377 + Name: TreeCluster + IsActive: true + NumberOfChildren: 9 + Components: + Transform Component: + Translate: {x: 7.25601864, y: 1.55680326e-07, z: -11.2872229} + Rotate: {x: 0, y: 2.30721998, z: 0} + Scale: {x: 0.749779522, y: 0.75, z: 0.749779522} + IsActive: true + Scripts: ~ +- EID: 378 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000048, y: -1.42108547e-14, z: 1.25000048} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 379 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.25000048, y: -1.42108547e-14, z: -1.00000048} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 380 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.499999523, y: -1.42108547e-14, z: 1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 381 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.24999952, y: -1.42108547e-14, z: -0.749999046} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 382 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.50000048, y: -1.42108547e-14, z: -0.500000477} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 383 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.74999952, y: -1.42108547e-14, z: -0.999999523} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 384 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.249999523, y: -1.42108547e-14, z: -0.749999523} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 385 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.75, y: -1.42108547e-14, z: -1.24999905} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 386 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000048, y: -1.42108547e-14, z: 1.25000048} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 387 + Name: TreeCluster + IsActive: true + NumberOfChildren: 9 + Components: + Transform Component: + Translate: {x: 4.38531399, y: 1.85469574e-07, z: -15.6559658} + Rotate: {x: 0, y: 2.89864969, z: 0} + Scale: {x: 0.802338541, y: 0.802574933, z: 0.802338541} + IsActive: true + Scripts: ~ +- EID: 388 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000072, y: 2.84217094e-14, z: 1.24999976} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 389 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.25000095, y: 2.84217094e-14, z: -1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 390 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.500000954, y: 2.84217094e-14, z: 1.00000107} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 391 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.24999905, y: 2.84217094e-14, z: -0.75} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 392 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.5, y: 2.84217094e-14, z: -0.50000155} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 393 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.74999857, y: 2.84217094e-14, z: -0.999999523} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 394 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.249999523, y: 2.84217094e-14, z: -0.750000596} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 395 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.75000072, y: 2.84217094e-14, z: -1.25000167} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 396 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000072, y: 2.84217094e-14, z: 1.24999976} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 397 + Name: TreeCluster + IsActive: true + NumberOfChildren: 9 + Components: + Transform Component: + Translate: {x: 10.1465569, y: 1.39389343e-07, z: -6.44067621} + Rotate: {x: 0, y: 1.53019583, z: 0} + Scale: {x: 0.802350819, y: 0.802574933, z: 0.802350819} + IsActive: true + Scripts: ~ +- EID: 398 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000048, y: -1.42108547e-14, z: 1.24999905} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 399 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.2499994, y: -1.42108547e-14, z: -1.00000095} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 400 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.499999583, y: -1.42108547e-14, z: 0.999997139} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 401 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.25000048, y: -1.42108547e-14, z: -0.750000954} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 402 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.49999976, y: -1.42108547e-14, z: -0.500000954} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 403 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.75000012, y: -1.42108547e-14, z: -1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 404 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.250000358, y: -1.42108547e-14, z: -0.75} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 405 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.74999976, y: -1.42108547e-14, z: -1.25000191} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 406 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000048, y: -1.42108547e-14, z: 1.24999905} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 407 + Name: TreeCluster + IsActive: true + NumberOfChildren: 9 + Components: + Transform Component: + Translate: {x: -10.3963461, y: 1.0311652e-06, z: -5.21996689} + Rotate: {x: 0, y: 1.85743773, z: 0} + Scale: {x: 0.802347541, y: 0.802574933, z: 0.802347541} + IsActive: true + Scripts: ~ +- EID: 408 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000024, y: 0, z: 1.25} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 409 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.24999952, y: 0, z: -0.999999046} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 410 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.500000238, y: 0, z: 1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 411 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.24999952, y: 0, z: -0.75} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 412 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.5, y: 0, z: -0.5} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 413 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.75, y: 0, z: -0.999999046} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 414 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.250001431, y: 0, z: -0.749999046} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 415 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.75000048, y: 0, z: -1.25} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 416 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000024, y: 0, z: 1.25} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 417 + Name: TreeCluster + IsActive: true + NumberOfChildren: 9 + Components: + Transform Component: + Translate: {x: -11.8055868, y: 1.02849719e-06, z: -0.449734211} + Rotate: {x: 0, y: -1.17325497, z: 0} + Scale: {x: 0.802348375, y: 0.802574933, z: 0.802348375} + IsActive: true + Scripts: ~ +- EID: 418 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 1.25} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 419 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.25, y: 0, z: -1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 420 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.499999523, y: 0, z: 1} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 421 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.25000048, y: 0, z: -0.75} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 422 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.49999952, y: 0, z: -0.5} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 423 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.75000024, y: 0, z: -0.999999046} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 424 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.250002384, y: 0, z: -0.749999046} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 425 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.74999952, y: 0, z: -1.24999905} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 426 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2, y: 0, z: 1.25} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 427 + Name: TreeCluster + IsActive: true + NumberOfChildren: 9 + Components: + Transform Component: + Translate: {x: -10.6890984, y: 1.0175379e-06, z: 5.88018131} + Rotate: {x: 0, y: -1.55548835, z: 0} + Scale: {x: 0.80234766, y: 0.802574933, z: 0.80234766} + IsActive: true + Scripts: ~ +- EID: 428 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000048, y: 1.13686838e-13, z: 1.25000191} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 429 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.24999988, y: 1.13686838e-13, z: -0.999998093} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 430 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.500000358, y: 1.13686838e-13, z: 1.00000191} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 431 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -3.25, y: 1.13686838e-13, z: -0.749999046} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 432 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.50000048, y: 1.13686838e-13, z: -0.499999046} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 433 + Name: Exterior_Tree02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.74999976, y: 1.13686838e-13, z: -0.999999046} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 140386412 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 434 + Name: Exterior_Tree03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.250001878, y: 1.13686838e-13, z: -0.749998093} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 146337876 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 435 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.75000048, y: 1.13686838e-13, z: -1.24999905} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 436 + Name: Exterior_Tree01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 2.00000048, y: 1.13686838e-13, z: 1.25000191} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 150881323 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 448 + Name: BushCluster + IsActive: true + NumberOfChildren: 10 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: -9.27025223} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 438 + Name: Exterior_Bush01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 5.81465149, y: -4.76837158e-07, z: 0.386853218} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 143461339 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 439 + Name: Exterior_Bush02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.331082046, y: 0, z: 0.392630577} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 136373407 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 65976 + Name: Exterior_Bush03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.06180131, y: 0, z: 0.439988136} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144928031 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 441 + Name: Exterior_Bush01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -7.09583855, y: -4.76837158e-07, z: 0.386853218} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 143461339 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 442 + Name: Exterior_Bush03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4.03810406, y: 0, z: 0.439988136} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144928031 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 443 + Name: Exterior_Bush02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4.52796364, y: 0, z: 0.392630577} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 136373407 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 444 + Name: Exterior_Bush01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.52529955, y: -4.76837158e-07, z: 0.386853218} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 143461339 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 445 + Name: Exterior_Bush02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -5.5497098, y: 0, z: 0.392630577} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 136373407 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 446 + Name: Exterior_Bush01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.79356122, y: -4.76837158e-07, z: 0.386853218} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 143461339 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 447 + Name: Exterior_Bush02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.18613672, y: 0, z: 0.392630577} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 136373407 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 449 + Name: BushCluster + IsActive: true + NumberOfChildren: 10 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 11.2170467} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 450 + Name: Exterior_Bush01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 5.81465149, y: -4.76837158e-07, z: 0.386853218} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 143461339 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 451 + Name: Exterior_Bush02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.331082046, y: 0, z: 0.392630577} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 136373407 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 452 + Name: Exterior_Bush03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.06180131, y: 0, z: 0.439988136} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144928031 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 453 + Name: Exterior_Bush01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -7.09583855, y: -4.76837158e-07, z: 0.386853218} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 143461339 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 454 + Name: Exterior_Bush03 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -4.03810406, y: 0, z: 0.439988136} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144928031 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 455 + Name: Exterior_Bush02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 4.52796364, y: 0, z: 0.392630577} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 136373407 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 456 + Name: Exterior_Bush01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -2.52529955, y: -4.76837158e-07, z: 0.386853218} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 143461339 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 457 + Name: Exterior_Bush02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -5.5497098, y: 0, z: 0.392630577} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 136373407 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 458 + Name: Exterior_Bush01 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 1.79356122, y: -4.76837158e-07, z: 0.386853218} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 143461339 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 459 + Name: Exterior_Bush02 + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.18613672, y: 0, z: 0.392630577} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 136373407 + Material: 131956078 + IsActive: true + Scripts: ~ +- EID: 20 + Name: ===== Light ===== + IsActive: true + NumberOfChildren: 2 + Components: ~ + Scripts: ~ +- EID: 296 + Name: Light_Directional + IsActive: true + NumberOfChildren: 0 + Components: + Light Component: + Position: {x: 0, y: 0, z: 0} + Type: Directional + Direction: {x: 15, y: 90, z: 15} + Color: {x: 1, y: 1, z: 1, w: 1} + Layer: 4294967295 + Strength: 1 + IsActive: true + Scripts: ~ +- EID: 5 + Name: Light_Ambient + IsActive: true + NumberOfChildren: 0 + Components: + Light Component: + Position: {x: 0, y: 0, z: 0} + Type: Ambient + Direction: {x: 0, y: 0, z: 1} + Color: {x: 0.901608765, y: 0.867841423, z: 1, w: 1} + Layer: 4294967295 + Strength: 0.699999988 + IsActive: true + Scripts: ~ +- EID: 2 + Name: Player + IsActive: true + NumberOfChildren: 3 + Components: + Transform Component: + Translate: {x: 1.82666111, y: 0.00499972701, z: 7.4207387} + Rotate: {x: -0, y: 0, z: 0} + Scale: {x: 0.999999881, y: 1, z: 0.999999881} + IsActive: true + Renderable Component: + Mesh: 149697411 + Material: 126974645 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 1 + Angular Drag: 0.100000001 + Use Gravity: false + Interpolate: true + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: true + Freeze Rotation Y: true + Freeze Rotation Z: true + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.400000006, y: 0.5, z: 0.300000012} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.25, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: PlayerController + currentState: 0 + maxMoveVel: 3 + moveForce: 50 + sprintMultiplier: 1.5 + rotationFactorPerFrame: 5 + maxJumpHeight: 1 + maxJumpTime: 0.5 + fallMultipler: 3 + lightMultiper: 0.75 + mediumMultiper: 0.5 + heavyMultiper: 0.25 + - Type: PickAndThrow + throwForce: [300, 300, 300] + delayTimer: 1 + aimingLength: 1.5 +- EID: 3 + Name: HoldingPoint + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 1.20000005, z: 0.5} + Rotate: {x: 0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 4 + Name: PlayerCamera + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: -0.785332263, y: 2.95694828, z: 2.23517329e-08} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Camera Component: + Position: {x: 1.82666111, y: 0.00499972701, z: 7.4207387} + Pitch: -44.9962234 + Yaw: 169.420654 + Roll: 1.28065994e-06 + Width: 1920 + Height: 1080 + Near: 0.00999999978 + Far: 10000 + Perspective: true + IsActive: true + Scripts: + - Type: SHADE_Scripting.ThirdPersonCamera + armLength: 1 + turnSpeedPitch: 0.300000012 + turnSpeedYaw: 0.5 + pitchClamp: 45 +- EID: 9 + Name: PlayerBag + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144838771 + Material: 123745521 + IsActive: true + Scripts: ~ \ No newline at end of file diff --git a/Assets/Scenes/MainGame.shade.shmeta b/Assets/Scenes/MainGame.shade.shmeta new file mode 100644 index 00000000..91a6ecf8 --- /dev/null +++ b/Assets/Scenes/MainGame.shade.shmeta @@ -0,0 +1,3 @@ +Name: MainGame +ID: 86098106 +Type: 5 diff --git a/Assets/Scenes/MainMenu.shade b/Assets/Scenes/MainMenu.shade new file mode 100644 index 00000000..30363b79 --- /dev/null +++ b/Assets/Scenes/MainMenu.shade @@ -0,0 +1,57 @@ +- EID: 0 + Name: Default + IsActive: true + NumberOfChildren: 1 + Components: ~ + Scripts: ~ +- EID: 1 + Name: Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1920, y: 1080, z: 1} + IsActive: true + Renderable Component: + Mesh: 141771688 + Material: 129340704 + IsActive: true + Scripts: ~ +- EID: 2 + Name: Default + IsActive: true + NumberOfChildren: 0 + Components: + Light Component: + Position: {x: 0, y: 0, z: 0} + Type: Directional + Direction: {x: 0, y: 0, z: 1} + Color: {x: 1, y: 1, z: 1, w: 1} + Layer: 4294967295 + Strength: 0 + IsActive: true + Scripts: ~ +- EID: 3 + Name: Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Camera Component: + Position: {x: 0, y: 0, z: 0} + Pitch: 0 + Yaw: 0 + Roll: 0 + Width: 1920 + Height: 1080 + Near: 0.00999999978 + Far: 10000 + Perspective: true + IsActive: true + Scripts: ~ \ No newline at end of file diff --git a/Assets/Scenes/MainMenu.shade.shmeta b/Assets/Scenes/MainMenu.shade.shmeta new file mode 100644 index 00000000..93975878 --- /dev/null +++ b/Assets/Scenes/MainMenu.shade.shmeta @@ -0,0 +1,3 @@ +Name: MainMenu +ID: 97158628 +Type: 5 diff --git a/Assets/Scenes/PlayerControllerTest.shade b/Assets/Scenes/PlayerControllerTest.shade new file mode 100644 index 00000000..9d9a7698 --- /dev/null +++ b/Assets/Scenes/PlayerControllerTest.shade @@ -0,0 +1,469 @@ +- EID: 0 + Name: ScoreZone + IsActive: true + NumberOfChildren: 0 + Components: + Camera Component: + Position: {x: 0, y: 0, z: 0} + Pitch: 0 + Yaw: 0 + Roll: 0 + Width: 1920 + Height: 1080 + Near: 0.00999999978 + Far: 10000 + Perspective: true + IsActive: true + Light Component: + Position: {x: 0, y: 0, z: 0} + Type: Directional + Direction: {x: 1.79999995, y: 0, z: 1} + Color: {x: 0.951541841, y: 0.921719015, z: 0.553319454, w: 1} + Layer: 4294967295 + Strength: 0 + IsActive: true + Scripts: ~ +- EID: 1 + Name: Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -1.440328, y: -4.41369677, z: -5} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 49.4798889, y: 0.5, z: 17.5} + IsActive: true + Renderable Component: + Mesh: 149697411 + Material: 126974645 + IsActive: true + RigidBody Component: + Type: Static + Drag: 0.00999999978 + Angular Drag: 0.00999999978 + Use Gravity: true + Interpolate: true + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 2 + Name: Player + IsActive: true + NumberOfChildren: 3 + Components: + Transform Component: + Translate: {x: -0.0897406489, y: -4.07369709, z: 3.6087606} + Rotate: {x: 0, y: -0.19268477, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 149697411 + Material: 126974645 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 2 + Angular Drag: 0 + Use Gravity: false + Interpolate: true + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: true + Freeze Rotation Y: true + Freeze Rotation Z: true + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.5, y: 0.699999988, z: 0.5} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.300000012, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: PlayerController + currentState: 0 + maxMoveVel: 4 + moveForce: 50 + sprintMultiplier: 1.5 + rotationFactorPerFrame: 4 + maxJumpHeight: 4 + maxJumpTime: 0.75 + fallMultipler: 2 + lightMultiper: 0.75 + mediumMultiper: 0.5 + heavyMultiper: 0.25 + - Type: PickAndThrow + throwForce: [300, 300, 300] + delayTimer: 1 + aimingLength: 1.5 + - Type: StateMachine + currentStateName: Idle State + currentAnimName: "" +- EID: 3 + Name: HoldingPoint + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 1.20000005, z: 0.5} + Rotate: {x: 0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Scripts: ~ +- EID: 4 + Name: Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: -0.361278683, y: 4.97423792, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Camera Component: + Position: {x: 0.330392599, y: -2.72767258, z: 5.02710676} + Pitch: -42.2981491 + Yaw: 16.4989166 + Roll: 0 + Width: 1920 + Height: 1080 + Near: 0.00999999978 + Far: 10000 + Perspective: true + IsActive: true + Scripts: + - Type: SHADE_Scripting.ThirdPersonCamera + armLength: 2 + turnSpeedPitch: 0.300000012 + turnSpeedYaw: 0.5 + pitchClamp: 45 +- EID: 9 + Name: Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 144838771 + Material: 123745521 + IsActive: true + Scripts: ~ +- EID: 6 + Name: AI + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -8, y: -4.42369699, z: 3.65323806} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 149697411 + Material: 126974645 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0 + Angular Drag: 0 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: true + Freeze Rotation Y: true + Freeze Rotation Z: true + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.5, y: 0.5, z: 0.5} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: ~ +- EID: 7 + Name: Default + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: -16.8647861, z: -14.039052} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 28.1434975, y: 28.1434975, z: 28.1434975} + IsActive: true + Renderable Component: + Mesh: 149697411 + Material: 126974645 + IsActive: true + Scripts: ~ +- EID: 8 + Name: Default + IsActive: true + NumberOfChildren: 0 + Components: + Light Component: + Position: {x: 0, y: 0, z: 0} + Type: Ambient + Direction: {x: 0, y: 0, z: 1} + Color: {x: 1, y: 1, z: 1, w: 1} + Layer: 4294967295 + Strength: 0.25 + IsActive: true + Scripts: ~ +- EID: 11 + Name: GameManager + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: 0, z: 0} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + RigidBody Component: + Type: Static + Drag: 0.00999999978 + Angular Drag: 0.00999999978 + Use Gravity: true + Interpolate: true + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: ~ + IsActive: true + Scripts: + - Type: GameManager + itemPool: 12 + zonePool: 15 + currGameState: 3 + totalItemCount: 2 + Score: 0 + timer: 4.00741768 +- EID: 12 + Name: ItemPool + IsActive: true + NumberOfChildren: 2 + Components: ~ + Scripts: ~ +- EID: 10 + Name: item + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 3.19896913, y: -3.66431332, z: -4.99997139} + Rotate: {x: -1.57956983e-05, y: 2.20007223e-06, z: -0.000548519194} + Scale: {x: 2, y: 2, z: 2} + IsActive: true + Renderable Component: + Mesh: 144838771 + Material: 123745521 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.100000001 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: true + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 1, y: 1, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: true + Type: Box + Half Extents: {x: 2, y: 2, z: 2} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Score: 1 + currCategory: 0 +- EID: 5 + Name: item + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -5.02078056, y: -4.17369747, z: -2.14891005} + Rotate: {x: -2.95397289e-08, y: 0.00065473502, z: -4.44611992e-08} + Scale: {x: 1.99998975, y: 2, z: 1.99998975} + IsActive: true + Renderable Component: + Mesh: 144838771 + Material: 123745521 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.100000001 + Angular Drag: 0.100000001 + Use Gravity: true + Interpolate: true + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Type: Box + Half Extents: {x: 0.5, y: 0.5, z: 0.5} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: true + Type: Box + Half Extents: {x: 1, y: 1, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.5, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: Item + Score: 1 + currCategory: 0 +- EID: 15 + Name: ScoreZonePool + IsActive: true + NumberOfChildren: 2 + Components: ~ + Scripts: ~ +- EID: 13 + Name: ScoreZone + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -24.4654179, y: -3.15127993, z: -3.29243231} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + RigidBody Component: + Type: Static + Drag: 0.00999999978 + Angular Drag: 0.00999999978 + Use Gravity: true + Interpolate: true + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: true + Type: Box + Half Extents: {x: 1, y: 20, z: 20} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: ScoringZone +- EID: 14 + Name: ScoreZone + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -6.64785767, y: 0, z: -14.217104} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + RigidBody Component: + Type: Static + Drag: 0.00999999978 + Angular Drag: 0.00999999978 + Use Gravity: true + Interpolate: true + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: false + Freeze Rotation Y: false + Freeze Rotation Z: false + IsActive: true + Collider Component: + Colliders: + - Is Trigger: true + Type: Box + Half Extents: {x: 20, y: 20, z: 1} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: ScoringZone \ No newline at end of file diff --git a/Assets/Scenes/PlayerControllerTest.shade.shmeta b/Assets/Scenes/PlayerControllerTest.shade.shmeta new file mode 100644 index 00000000..3d9787c8 --- /dev/null +++ b/Assets/Scenes/PlayerControllerTest.shade.shmeta @@ -0,0 +1,3 @@ +Name: PlayerControllerTest +ID: 92100024 +Type: 5 diff --git a/TempScriptsFolder/AIPrototype.cs b/Assets/Scripts/AIPrototype.cs similarity index 99% rename from TempScriptsFolder/AIPrototype.cs rename to Assets/Scripts/AIPrototype.cs index d678de78..62255778 100644 --- a/TempScriptsFolder/AIPrototype.cs +++ b/Assets/Scripts/AIPrototype.cs @@ -51,7 +51,6 @@ public class AIPrototype : Script private GameObject? player; - public AIPrototype(GameObject gameObj) : base(gameObj) { } protected override void awake() { diff --git a/Assets/Scripts/AIPrototype.cs.shmeta b/Assets/Scripts/AIPrototype.cs.shmeta new file mode 100644 index 00000000..80a7d4b4 --- /dev/null +++ b/Assets/Scripts/AIPrototype.cs.shmeta @@ -0,0 +1,3 @@ +Name: AIPrototype +ID: 163215061 +Type: 9 diff --git a/TempScriptsFolder/CameraControl.cs b/Assets/Scripts/CameraControl.cs similarity index 89% rename from TempScriptsFolder/CameraControl.cs rename to Assets/Scripts/CameraControl.cs index fc900f46..b25d65eb 100644 --- a/TempScriptsFolder/CameraControl.cs +++ b/Assets/Scripts/CameraControl.cs @@ -7,7 +7,6 @@ namespace SHADE_Scripting { public float turnSpeed = 0.5f; - public CameraControl(GameObject go) : base(go) { } protected override void update() { //Camera diff --git a/Assets/Scripts/CameraControl.cs.shmeta b/Assets/Scripts/CameraControl.cs.shmeta new file mode 100644 index 00000000..bf68c31c --- /dev/null +++ b/Assets/Scripts/CameraControl.cs.shmeta @@ -0,0 +1,3 @@ +Name: CameraControl +ID: 158782344 +Type: 9 diff --git a/Assets/Scripts/Gameplay/Player/SC_PickAndThrow.cs b/Assets/Scripts/Gameplay/Player/SC_PickAndThrow.cs new file mode 100644 index 00000000..bffb54d6 --- /dev/null +++ b/Assets/Scripts/Gameplay/Player/SC_PickAndThrow.cs @@ -0,0 +1,180 @@ +using SHADE; +using SHADE_Scripting; +using System; +using static PlayerController; + +public class PickAndThrow : Script +{ + public Vector3 throwForce = new Vector3(100.0f, 200.0f, 100.0f); + public GameObject item { get; set; } + public float delayTimer = 1.0f; + public float aimingLength = 1.5f; + + private float timer; + private PlayerController pc; + private Camera cam; + private Transform itemTransform; + private RigidBody itemRidibody; + private Transform raccoonHoldLocation; + private Transform playerTran; + private ThirdPersonCamera tpc; + private float lastXDir; + private float lastZDir; + private bool inRange = false; + + + protected override void awake() + { + playerTran = GetComponent(); + if (!playerTran) + Debug.Log("PLAYERTRANSFORM EMPTY"); ; + + pc = GetScript(); + if(!pc) + Debug.Log("PLAYER CONTROLLER EMPTY"); + + raccoonHoldLocation = GetComponentInChildren(); + if (!raccoonHoldLocation) + Debug.Log("CHILD EMPTY"); + + tpc = GetScriptInChildren(); + if(!tpc) + Debug.Log("TPC EMPTY"); + + timer = delayTimer; + } + protected override void update() + { + if(timer <= delayTimer) + timer += Time.DeltaTimeF; + + CalculateDir(); + + if (pc && itemRidibody && itemTransform) + { + if (pc.holdItem) + { + itemTransform.LocalPosition = raccoonHoldLocation.GlobalPosition; + itemTransform.LocalRotation = playerTran.LocalRotation; + + if (Input.GetMouseButtonDown(Input.MouseCode.LeftButton)) + { + Debug.Log("AIMING"); + pc.isAiming = true; + pc.camArm.ArmLength = aimingLength; + } + + if (Input.GetMouseButtonUp(Input.MouseCode.LeftButton) && pc.isAiming) + { + Audio.PlayBGMOnce2D("event:/Raccoon/raccoon_throw"); + pc.isAiming = false; + if(tpc) + pc.camArm.ArmLength = tpc.armLength; + pc.holdItem = false; + inRange = false; + itemRidibody.IsGravityEnabled = true; + itemRidibody.AddForce(new Vector3(throwForce.x * lastXDir, throwForce.y, throwForce.z * lastZDir)); + itemRidibody.LinearVelocity += pc.rb.LinearVelocity; + ResetItemObject(); + timer = 0.0f; + } + + if (Input.GetMouseButtonDown(Input.MouseCode.RightButton)) + { + pc.holdItem = false; + inRange = false; + itemRidibody.IsGravityEnabled = true; + ResetItemObject(); + } + } + else if (!pc.holdItem) + itemRidibody.IsGravityEnabled = true; + } + + if (timer > delayTimer && pc && !pc.holdItem && inRange && Input.GetMouseButtonDown(Input.MouseCode.LeftButton)) + { + if (pc.currentState == RaccoonStates.WALKING || pc.currentState == RaccoonStates.IDLE) + { + pc.holdItem = true; + RetrieveItemComponets(); + } + } + } + + private void ResetItemObject() + { + itemRidibody = null; + itemTransform = null; + item = new GameObject(); + } + + private void RetrieveItemComponets() + { + //get the transform of the given item + if (item.GetScript() && itemTransform == null && itemRidibody == null) + { + itemRidibody = item.GetComponent(); + if (itemRidibody == null) + Debug.Log("Item rb EMPTY"); + else + { + itemRidibody.IsGravityEnabled = false; + itemRidibody.LinearVelocity = Vector3.Zero; + itemRidibody.AngularVelocity = Vector3.Zero; + } + + itemTransform = item.GetComponent(); + if (itemTransform == null) + Debug.Log("Item transform EMPTY"); + else + { + itemTransform.LocalEulerAngles = Vector3.Zero; + } + + } + } + + private void CalculateDir() + { + if (cam == null) + cam = GetComponentInChildren(); + else if (cam) + { + Vector3 camerAixs = cam.GetForward(); + camerAixs.y = 0; + camerAixs.Normalise(); + lastXDir = camerAixs.x; + lastZDir = camerAixs.z; + } + } + + private void DelayCheck() + { + timer += Time.DeltaTimeF; + } + + protected override void onCollisionEnter(CollisionInfo info) + { + } + protected override void onTriggerEnter(CollisionInfo info) + { + if (info.GameObject.GetScript() && !pc.holdItem) + { + item = info.GameObject; + inRange = true; + } + } + protected override void onTriggerStay(CollisionInfo info) + { + //Debug.Log("STAY"); + } + protected override void onTriggerExit(CollisionInfo info) + { + //Debug.Log("EXIT"); + if (info.GameObject.GetScript() != null && !pc.holdItem) + { + inRange = false; + } + } + +} \ No newline at end of file diff --git a/Assets/Scripts/Gameplay/Player/SC_PickAndThrow.cs.shmeta b/Assets/Scripts/Gameplay/Player/SC_PickAndThrow.cs.shmeta new file mode 100644 index 00000000..5703d6d7 --- /dev/null +++ b/Assets/Scripts/Gameplay/Player/SC_PickAndThrow.cs.shmeta @@ -0,0 +1,3 @@ +Name: SC_PickAndThrow +ID: 154802724 +Type: 9 diff --git a/TempScriptsFolder/PlayerController.cs b/Assets/Scripts/Gameplay/Player/SC_PlayerController.cs similarity index 59% rename from TempScriptsFolder/PlayerController.cs rename to Assets/Scripts/Gameplay/Player/SC_PlayerController.cs index 86ba7c98..27e18659 100644 --- a/TempScriptsFolder/PlayerController.cs +++ b/Assets/Scripts/Gameplay/Player/SC_PlayerController.cs @@ -1,66 +1,68 @@ using SHADE; using System; +using System.Collections.Generic; using static Item; public class PlayerController : Script { public enum RaccoonStates { - IDILE, + IDLE, WALKING, RUNNING, JUMP, FALLING, + LANDED, CAUGHT, TOTAL } + public enum WalkingState + { + CARRY, + AIMING, + THROW, + WALK, + TOTAL + } + public RigidBody rb { get; set; } private Transform tranform; private Camera cam; + public CameraArm camArm { get; set; } private PickAndThrow pat; + private StateMachine stateMachine; - //to be remove - public float drag = 2.0f; public bool holdItem { get; set; } - [SerializeField] + public bool isAiming { get; set; } + [Tooltip("The current state fo the raccoon")] - public RaccoonStates currentState = RaccoonStates.IDILE; + public RaccoonStates currentState = RaccoonStates.IDLE; //Movement variables============================================================ - [SerializeField] [Tooltip("Max vel for walking")] public float maxMoveVel = 2.0f; - [SerializeField] [Tooltip("how much force is apply for walking")] - public float moveForce = 50.0f; - [SerializeField] + public float moveForce = 2.0f; [Tooltip("increase the moveForce and maxMoveVel by its amt")] public float sprintMultiplier = 2.0f; private float oldForce; private float maxOldVel; private bool sprintIncreaseOnce = false; - - public float xAxisMove { get; set; } - public float zAxisMove { get; set; } public Vector2 axisMove { get; set; } public bool isMoveKeyPress { get; set; } - [SerializeField] - [Tooltip("curr not working")] + [Tooltip("How fast player will turn")] public float rotationFactorPerFrame = 1.0f; //Jumping vars================================================================== - [SerializeField] [Tooltip("max height of the jump")] public float maxJumpHeight = 4.0f; - [SerializeField] [Tooltip("max amt of time it will take for the jump")] public float maxJumpTime = 0.75f; - [SerializeField] [Tooltip("increase gravity when falling")] public float fallMultipler = 2.0f; private float initialJumpVel; @@ -69,17 +71,19 @@ public class PlayerController : Script private float groundGravity = -0.5f; //ItemMultipler================================================================== + [Tooltip("How light item will affect player jump")] public float lightMultiper = 0.75f; + [Tooltip("How medium item will affect player jump")] public float mediumMultiper = 0.5f; + [Tooltip("How heavy item will affect player jump")] public float heavyMultiper = 0.25f; - public PlayerController(GameObject gameObj) : base(gameObj) { } - protected override void awake() { //default setup isMoveKeyPress = false; holdItem = false; + isAiming = false; //Jump setup float timeToApex = maxJumpTime / 2; @@ -90,146 +94,126 @@ public class PlayerController : Script rb = GetComponent(); if (rb == null) Debug.LogError("RigidBody is NULL!"); - else - { - rb.IsGravityEnabled = false; - rb.FreezeRotationX = true; - rb.FreezeRotationY = true; - rb.FreezeRotationZ = true; - rb.Drag = drag; - rb.Interpolating = false; - } //Transform check tranform = GetComponent(); if(tranform == null) Debug.LogError("tranform is NULL!"); - //PickAndThrow checl + //PickAndThrow check pat = GetScript(); if (pat == null) Debug.LogError("PickAndThrow is NULL!"); - //toRemove - tranform.LocalPosition = new Vector3(-3.0f, -2.0f, -5.0f); - tranform.LocalRotation = Quaternion.Euler(0.0f, 0.0f, 0.0f); + stateMachine = AddScript(); + Dictionary dictionary = new Dictionary(); + dictionary.Add(typeof(PlayerIdleState), new PlayerIdleState(stateMachine)); + dictionary.Add(typeof(PlayerWalkState), new PlayerWalkState(stateMachine)); + dictionary.Add(typeof(PlayerRunState), new PlayerRunState(stateMachine)); + dictionary.Add(typeof(PlayerJumpState), new PlayerJumpState(stateMachine)); + dictionary.Add(typeof(PlayerFallState), new PlayerFallState(stateMachine)); + dictionary.Add(typeof(PlayerLandState), new PlayerLandState(stateMachine)); + dictionary.Add(typeof(PlayerCaughtState), new PlayerCaughtState(stateMachine)); + stateMachine.InitStateMachine(dictionary); + } protected override void update() { - if (cam == null) + if (!cam) cam = GetComponentInChildren(); + if(!camArm) + camArm = GetComponentInChildren(); - //toRemove - if (Input.GetKey(Input.KeyCode.G)) - { - tranform.LocalRotation = Quaternion.Euler(0.0f, 0.0f, 0.0f); - tranform.LocalPosition = new Vector3(-3.0f, -2.0f, -5.0f); - } - + Rotation(); GotCaught(); - MoveKey(); - - - + //Debug.Log($"{currentState}"); + //Debug.Log($" axisX: {axisMove.x} axisY:{axisMove.y}"); + //Debug.Log($"X: {rb.LinearVelocity.x}" + $" Z: {rb.LinearVelocity.z}"); //Debug.Log(currentState.ToString() + " x:" + rb.LinearVelocity.x.ToString() + " y:" + rb.LinearVelocity.y.ToString() + " z:" + rb.LinearVelocity.z.ToString()); } protected override void fixedUpdate() { - //Rotation(); + MoveKey(); Move(); Sprint(); Jump(); Gravity(); + //Debug.Log($"X: {rb.LinearVelocity.x}" + $" Z: {rb.LinearVelocity.z}"); } private void MoveKey() { - /* if (Input.GetKey(Input.KeyCode.A)) - xAxisMove = -1; - else if (Input.GetKey(Input.KeyCode.D)) - xAxisMove = 1; - else - xAxisMove = 0; - - if (Input.GetKey(Input.KeyCode.W)) - zAxisMove = -1; - else if (Input.GetKey(Input.KeyCode.S)) - zAxisMove = 1; - else - zAxisMove = 0;*/ - - - xAxisMove = 0; - zAxisMove = 0; axisMove = Vector2.Zero; if (Input.GetKey(Input.KeyCode.W)) { Vector3 camerAixs = cam.GetForward(); camerAixs.y = 0; camerAixs.Normalise(); - xAxisMove = camerAixs.x; - zAxisMove = camerAixs.z; axisMove += new Vector2(camerAixs.x, camerAixs.z); } + if (Input.GetKey(Input.KeyCode.S)) { Vector3 camerAixs = cam.GetForward(); camerAixs.y = 0; camerAixs.Normalise(); - xAxisMove = -camerAixs.x; - zAxisMove = -camerAixs.z; axisMove -= new Vector2(camerAixs.x, camerAixs.z); } + if (Input.GetKey(Input.KeyCode.A)) { Vector3 camerAixs = cam.GetRight(); camerAixs.y = 0; camerAixs.Normalise(); - xAxisMove = -camerAixs.x; - zAxisMove = -camerAixs.z; axisMove -= new Vector2(camerAixs.x, camerAixs.z); } + if (Input.GetKey(Input.KeyCode.D)) { Vector3 camerAixs = cam.GetRight(); camerAixs.y = 0; camerAixs.Normalise(); - xAxisMove = camerAixs.x; - zAxisMove = camerAixs.z; axisMove += new Vector2(camerAixs.x, camerAixs.z); } - axisMove.Normalise(); - isMoveKeyPress = xAxisMove != 0 || zAxisMove != 0; - if(isMoveKeyPress && currentState != RaccoonStates.RUNNING && isGrounded) + axisMove.Normalise(); + isMoveKeyPress = axisMove.x != 0 || axisMove.y != 0; + + if (isMoveKeyPress && isGrounded && !Input.GetKey(Input.KeyCode.LeftShift)) + { currentState = RaccoonStates.WALKING; + if(stateMachine && !stateMachine.IsState(typeof(PlayerWalkState))) + stateMachine.SetState(typeof(PlayerWalkState)); + } + if (!isMoveKeyPress && isGrounded) - currentState = RaccoonStates.IDILE; + { + currentState = RaccoonStates.IDLE; + + if(stateMachine && !stateMachine.IsState(typeof(PlayerIdleState))) + stateMachine.SetState(typeof(PlayerIdleState)); + } } private void Move() { if (rb != null) { - rb.AddForce(new Vector3(axisMove.x, 0.0f,axisMove.y) * moveForce); + rb.LinearVelocity += new Vector3(axisMove.x * moveForce, 0.0f, axisMove.y * moveForce) * Time.DeltaTimeF; - if (isMoveKeyPress) + if (isMoveKeyPress && rb) { - if (rb.LinearVelocity.x > maxMoveVel || rb.LinearVelocity.x < -maxMoveVel) + Vector3 velNor = rb.LinearVelocity; + velNor.y = 0.0f; + if (velNor.GetMagnitude() > maxMoveVel) { - Vector3 v = rb.LinearVelocity; - v.x = System.Math.Clamp(v.x, -maxMoveVel, maxMoveVel); - rb.LinearVelocity = v; - } - if (rb.LinearVelocity.z > maxMoveVel || rb.LinearVelocity.z < -maxMoveVel) - { - Vector3 v = rb.LinearVelocity; - v.z = System.Math.Clamp(v.z, -maxMoveVel, maxMoveVel); - rb.LinearVelocity = v; + velNor.Normalise(); + velNor *= maxMoveVel; + rb.LinearVelocity = new Vector3(velNor.x, rb.LinearVelocity.y, velNor.z); } } } @@ -240,6 +224,9 @@ public class PlayerController : Script if (Input.GetKey(Input.KeyCode.LeftShift) && isMoveKeyPress && isGrounded) { currentState = RaccoonStates.RUNNING; + if (stateMachine && !stateMachine.IsState(typeof(PlayerRunState))) + stateMachine.SetState(typeof(PlayerRunState)); + holdItem = false; if (!sprintIncreaseOnce) { @@ -254,8 +241,12 @@ public class PlayerController : Script if (Input.GetKeyUp(Input.KeyCode.LeftShift)) { - if(isMoveKeyPress) + if (isMoveKeyPress) + { currentState = RaccoonStates.WALKING; + if(stateMachine && !stateMachine.IsState(typeof(PlayerWalkState))) + stateMachine.SetState(typeof(PlayerWalkState)); + } sprintIncreaseOnce = false; moveForce = oldForce; maxMoveVel = maxOldVel; @@ -265,46 +256,45 @@ public class PlayerController : Script //press and hold jump private void Jump() { - if (currentState == RaccoonStates.WALKING || currentState == RaccoonStates.RUNNING || currentState == RaccoonStates.IDILE) + if (currentState == RaccoonStates.WALKING || currentState == RaccoonStates.RUNNING || currentState == RaccoonStates.IDLE) { if (Input.GetKeyDown(Input.KeyCode.Space) && isGrounded && rb != null) { currentState = RaccoonStates.JUMP; Vector3 v = rb.LinearVelocity; v.y = initialJumpVel * 0.5f; - if (pat != null && pat.item.GetScript() != null && holdItem) + if (holdItem && pat != null && pat.item.GetScript() != null) { Item item = pat.item.GetScript(); - if (item.currCategory == ItemCategory.LIGHT) + if (item != null && item.currCategory == ItemCategory.LIGHT) v.y *= lightMultiper; - if (item.currCategory == ItemCategory.MEDIUM) + if (item != null && item.currCategory == ItemCategory.MEDIUM) v.y *= mediumMultiper; - if (item.currCategory == ItemCategory.HEAVY) + if (item != null && item.currCategory == ItemCategory.HEAVY) v.y *= heavyMultiper; } rb.LinearVelocity = v; } } - if(rb != null && !isGrounded && (rb.LinearVelocity.y < 0.0f || Input.GetKeyUp(Input.KeyCode.Space))) + if(!isGrounded && rb != null && (rb.LinearVelocity.y < 0.0f || Input.GetKeyUp(Input.KeyCode.Space))) currentState = RaccoonStates.FALLING; + } private void Rotation() { - Vector3 poitionToLookAt; - poitionToLookAt.x = xAxisMove; - poitionToLookAt.y = 0.0f; - poitionToLookAt.z = zAxisMove; - - if (tranform != null) + if (isMoveKeyPress && tranform && !isAiming) { Quaternion currentRotation = tranform.LocalRotation; - if (currentState == RaccoonStates.WALKING || currentState == RaccoonStates.RUNNING) - { - Quaternion targetRotation = Quaternion.LookRotation(poitionToLookAt, new Vector3(0.0f, 1.0f, 0.0f)); - tranform.LocalRotation = Quaternion.Slerp(currentRotation, targetRotation, rotationFactorPerFrame * (float)Time.DeltaTime); - } + Quaternion targetRotation = Quaternion.LookRotation(new Vector3(axisMove.x, 0.0f, axisMove.y), new Vector3(0.0f, 1.0f, 0.0f)); + tranform.LocalRotation = Quaternion.Slerp(currentRotation, targetRotation, rotationFactorPerFrame * (float)Time.DeltaTime); + } + else if (camArm && tranform && isAiming) + { + Quaternion currentRotation = tranform.LocalRotation; + Quaternion targetRotation = Quaternion.Euler(0.0f, SHADE.Math.DegreesToRadians(camArm.Yaw + 180.0f), 0.0f); + tranform.LocalRotation = Quaternion.Slerp(currentRotation, targetRotation, rotationFactorPerFrame * (float)Time.DeltaTime); } } @@ -314,7 +304,11 @@ public class PlayerController : Script { //check player vel.y if its close to zero its on the ground if (SHADE.Math.CompareFloat(rb.LinearVelocity.y, 0.0f)) + { isGrounded = true; + if (currentState == RaccoonStates.FALLING) + currentState = RaccoonStates.LANDED; + } else isGrounded = false; @@ -346,7 +340,9 @@ public class PlayerController : Script { if (currentState == RaccoonStates.CAUGHT && tranform != null) { - currentState = RaccoonStates.IDILE; + currentState = RaccoonStates.IDLE; + if (stateMachine && !stateMachine.IsState(typeof(PlayerIdleState))) + stateMachine.SetState(typeof(PlayerIdleState)); tranform.LocalPosition = new Vector3(-3.0f, -2.0f, -5.0f); } } @@ -355,6 +351,5 @@ public class PlayerController : Script { } - } diff --git a/Assets/Scripts/Gameplay/Player/SC_PlayerController.cs.shmeta b/Assets/Scripts/Gameplay/Player/SC_PlayerController.cs.shmeta new file mode 100644 index 00000000..445af934 --- /dev/null +++ b/Assets/Scripts/Gameplay/Player/SC_PlayerController.cs.shmeta @@ -0,0 +1,3 @@ +Name: SC_PlayerController +ID: 160432754 +Type: 9 diff --git a/Assets/Scripts/Gameplay/Player/ThirdPersonCamera.cs b/Assets/Scripts/Gameplay/Player/ThirdPersonCamera.cs new file mode 100644 index 00000000..dc374125 --- /dev/null +++ b/Assets/Scripts/Gameplay/Player/ThirdPersonCamera.cs @@ -0,0 +1,56 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using SHADE; + + +namespace SHADE_Scripting +{ + public class ThirdPersonCamera : Script + { + + public float armLength = 2.0f; + public float turnSpeedPitch = 0.3f; + public float turnSpeedYaw = 0.5f; + public float pitchClamp = 45.0f; + + protected override void awake() + { + AddComponent(); + + if (!GetComponent()) + { + AddComponent(); + } + GetComponent().SetMainCamera(); + if (!GetComponent()) + { + AddComponent(); + } + GetComponent().ArmLength = armLength; + } + + protected override void update() + { + CameraArm arm = GetComponent(); + if (arm) + { + Vector2 vel = Input.GetMouseVelocity(); + arm.Pitch -= vel.y * turnSpeedPitch * Time.DeltaTimeF; + arm.Yaw += vel.x * turnSpeedYaw * Time.DeltaTimeF; + + if (arm.Pitch > pitchClamp) + { + arm.Pitch = pitchClamp; + } + else if (arm.Pitch < 0) + { + arm.Pitch = 0; + } + } + } + + } +} diff --git a/Assets/Scripts/Gameplay/Player/ThirdPersonCamera.cs.shmeta b/Assets/Scripts/Gameplay/Player/ThirdPersonCamera.cs.shmeta new file mode 100644 index 00000000..2f18c2fb --- /dev/null +++ b/Assets/Scripts/Gameplay/Player/ThirdPersonCamera.cs.shmeta @@ -0,0 +1,3 @@ +Name: ThirdPersonCamera +ID: 154161201 +Type: 9 diff --git a/Assets/Scripts/Gameplay/Player/UT_PlayerCaughtState.cs b/Assets/Scripts/Gameplay/Player/UT_PlayerCaughtState.cs new file mode 100644 index 00000000..1f3d4760 --- /dev/null +++ b/Assets/Scripts/Gameplay/Player/UT_PlayerCaughtState.cs @@ -0,0 +1,31 @@ +using SHADE; +using System; + +public class PlayerCaughtState : BaseState +{ + public PlayerCaughtState(StateMachine stateMachine) : base(stateMachine) + { + stateName = "Caught State"; + } + public override void OnEnter() + { + //Debug.Log("WALK ENTER"); + } + public override void update() + { + //Debug.Log("WALKING"); + } + public override void fixedUpdate() + { + //Debug.Log("FIXED WALKING"); + } + public override void OnExit() + { + //Debug.Log("WALK EXIT"); + } + public override void onTriggerEnter(CollisionInfo info) + { + //Debug.Log("TRIGGER"); + } +} + diff --git a/Assets/Scripts/Gameplay/Player/UT_PlayerCaughtState.cs.shmeta b/Assets/Scripts/Gameplay/Player/UT_PlayerCaughtState.cs.shmeta new file mode 100644 index 00000000..455fa0e3 --- /dev/null +++ b/Assets/Scripts/Gameplay/Player/UT_PlayerCaughtState.cs.shmeta @@ -0,0 +1,3 @@ +Name: UT_PlayerCaughtState +ID: 162030736 +Type: 9 diff --git a/Assets/Scripts/Gameplay/Player/UT_PlayerFallState.cs b/Assets/Scripts/Gameplay/Player/UT_PlayerFallState.cs new file mode 100644 index 00000000..806b332d --- /dev/null +++ b/Assets/Scripts/Gameplay/Player/UT_PlayerFallState.cs @@ -0,0 +1,31 @@ +using SHADE; +using System; + +public class PlayerFallState : BaseState +{ + public PlayerFallState(StateMachine stateMachine) : base(stateMachine) + { + stateName = "Fall State"; + } + public override void OnEnter() + { + //Debug.Log("WALK ENTER"); + } + public override void update() + { + //Debug.Log("WALKING"); + } + public override void fixedUpdate() + { + //Debug.Log("FIXED WALKING"); + } + public override void OnExit() + { + //Debug.Log("WALK EXIT"); + } + public override void onTriggerEnter(CollisionInfo info) + { + //Debug.Log("TRIGGER"); + } +} + diff --git a/Assets/Scripts/Gameplay/Player/UT_PlayerFallState.cs.shmeta b/Assets/Scripts/Gameplay/Player/UT_PlayerFallState.cs.shmeta new file mode 100644 index 00000000..8de9a555 --- /dev/null +++ b/Assets/Scripts/Gameplay/Player/UT_PlayerFallState.cs.shmeta @@ -0,0 +1,3 @@ +Name: UT_PlayerFallState +ID: 155635109 +Type: 9 diff --git a/Assets/Scripts/Gameplay/Player/UT_PlayerIdleState.cs b/Assets/Scripts/Gameplay/Player/UT_PlayerIdleState.cs new file mode 100644 index 00000000..144233a3 --- /dev/null +++ b/Assets/Scripts/Gameplay/Player/UT_PlayerIdleState.cs @@ -0,0 +1,31 @@ +using SHADE; +using System; + +public class PlayerIdleState : BaseState +{ + public PlayerIdleState(StateMachine stateMachine) : base(stateMachine) + { + stateName = "Idle State"; + } + public override void OnEnter() + { + //Debug.Log("WALK ENTER"); + } + public override void update() + { + //Debug.Log("WALKING"); + } + public override void fixedUpdate() + { + //Debug.Log("FIXED WALKING"); + } + public override void OnExit() + { + //Debug.Log("WALK EXIT"); + } + public override void onTriggerEnter(CollisionInfo info) + { + //Debug.Log("TRIGGER"); + } +} + diff --git a/Assets/Scripts/Gameplay/Player/UT_PlayerIdleState.cs.shmeta b/Assets/Scripts/Gameplay/Player/UT_PlayerIdleState.cs.shmeta new file mode 100644 index 00000000..9ea6c4d1 --- /dev/null +++ b/Assets/Scripts/Gameplay/Player/UT_PlayerIdleState.cs.shmeta @@ -0,0 +1,3 @@ +Name: UT_PlayerIdleState +ID: 167587808 +Type: 9 diff --git a/Assets/Scripts/Gameplay/Player/UT_PlayerJumpState.cs b/Assets/Scripts/Gameplay/Player/UT_PlayerJumpState.cs new file mode 100644 index 00000000..1adfdf67 --- /dev/null +++ b/Assets/Scripts/Gameplay/Player/UT_PlayerJumpState.cs @@ -0,0 +1,31 @@ +using SHADE; +using System; + +public class PlayerJumpState : BaseState +{ + public PlayerJumpState(StateMachine stateMachine) : base(stateMachine) + { + stateName = "Jump State"; + } + public override void OnEnter() + { + //Debug.Log("WALK ENTER"); + } + public override void update() + { + //Debug.Log("WALKING"); + } + public override void fixedUpdate() + { + //Debug.Log("FIXED WALKING"); + } + public override void OnExit() + { + //Debug.Log("WALK EXIT"); + } + public override void onTriggerEnter(CollisionInfo info) + { + //Debug.Log("TRIGGER"); + } +} + diff --git a/Assets/Scripts/Gameplay/Player/UT_PlayerJumpState.cs.shmeta b/Assets/Scripts/Gameplay/Player/UT_PlayerJumpState.cs.shmeta new file mode 100644 index 00000000..0c918232 --- /dev/null +++ b/Assets/Scripts/Gameplay/Player/UT_PlayerJumpState.cs.shmeta @@ -0,0 +1,3 @@ +Name: UT_PlayerJumpState +ID: 158874227 +Type: 9 diff --git a/Assets/Scripts/Gameplay/Player/UT_PlayerLandState.cs b/Assets/Scripts/Gameplay/Player/UT_PlayerLandState.cs new file mode 100644 index 00000000..518bab4c --- /dev/null +++ b/Assets/Scripts/Gameplay/Player/UT_PlayerLandState.cs @@ -0,0 +1,31 @@ +using SHADE; +using System; + +public class PlayerLandState : BaseState +{ + public PlayerLandState(StateMachine stateMachine) : base(stateMachine) + { + stateName = "Land State"; + } + public override void OnEnter() + { + //Debug.Log("WALK ENTER"); + } + public override void update() + { + //Debug.Log("WALKING"); + } + public override void fixedUpdate() + { + //Debug.Log("FIXED WALKING"); + } + public override void OnExit() + { + //Debug.Log("WALK EXIT"); + } + public override void onTriggerEnter(CollisionInfo info) + { + //Debug.Log("TRIGGER"); + } +} + diff --git a/Assets/Scripts/Gameplay/Player/UT_PlayerLandState.cs.shmeta b/Assets/Scripts/Gameplay/Player/UT_PlayerLandState.cs.shmeta new file mode 100644 index 00000000..ed3d4020 --- /dev/null +++ b/Assets/Scripts/Gameplay/Player/UT_PlayerLandState.cs.shmeta @@ -0,0 +1,3 @@ +Name: UT_PlayerLandState +ID: 151865541 +Type: 9 diff --git a/Assets/Scripts/Gameplay/Player/UT_PlayerRunState.cs b/Assets/Scripts/Gameplay/Player/UT_PlayerRunState.cs new file mode 100644 index 00000000..f7a30e1d --- /dev/null +++ b/Assets/Scripts/Gameplay/Player/UT_PlayerRunState.cs @@ -0,0 +1,41 @@ +using SHADE; +using System; + +public class PlayerRunState : BaseState +{ + private float timer; + private float delay = 0.25f; + + public PlayerRunState(StateMachine stateMachine) : base(stateMachine) + { + stateName = "Run State"; + } + public override void OnEnter() + { + //Debug.Log("WALK ENTER"); + } + public override void update() + { + //Debug.Log("WALKING"); + timer += Time.DeltaTimeF; + + if (timer > delay) + { + Audio.PlayBGMOnce2D("event:/Raccoon/raccoon_footsteps"); + timer = 0; + } + } + public override void fixedUpdate() + { + //Debug.Log("FIXED WALKING"); + } + public override void OnExit() + { + //Debug.Log("WALK EXIT"); + } + public override void onTriggerEnter(CollisionInfo info) + { + //Debug.Log("TRIGGER"); + } +} + diff --git a/Assets/Scripts/Gameplay/Player/UT_PlayerRunState.cs.shmeta b/Assets/Scripts/Gameplay/Player/UT_PlayerRunState.cs.shmeta new file mode 100644 index 00000000..c41112f3 --- /dev/null +++ b/Assets/Scripts/Gameplay/Player/UT_PlayerRunState.cs.shmeta @@ -0,0 +1,3 @@ +Name: UT_PlayerRunState +ID: 153407272 +Type: 9 diff --git a/Assets/Scripts/Gameplay/Player/UT_PlayerWalkState.cs b/Assets/Scripts/Gameplay/Player/UT_PlayerWalkState.cs new file mode 100644 index 00000000..471da145 --- /dev/null +++ b/Assets/Scripts/Gameplay/Player/UT_PlayerWalkState.cs @@ -0,0 +1,41 @@ +using SHADE; +using System; + +public class PlayerWalkState : BaseState +{ + private float timer; + private float delay = 0.5f; + public PlayerWalkState(StateMachine stateMachine) : base(stateMachine) + { + stateName = "Walk State"; + } + public override void OnEnter() + { + //Debug.Log("WALK ENTER"); + timer = delay; + } + public override void update() + { + //Debug.Log("WALKING"); + timer += Time.DeltaTimeF; + + if (timer > delay) + { + Audio.PlayBGMOnce2D("event:/Raccoon/raccoon_footsteps"); + timer = 0; + } + } + public override void fixedUpdate() + { + //Debug.Log("FIXED WALKING"); + } + public override void OnExit() + { + //Debug.Log("WALK EXIT"); + } + public override void onTriggerEnter(CollisionInfo info) + { + //Debug.Log("TRIGGER"); + } +} + diff --git a/Assets/Scripts/Gameplay/Player/UT_PlayerWalkState.cs.shmeta b/Assets/Scripts/Gameplay/Player/UT_PlayerWalkState.cs.shmeta new file mode 100644 index 00000000..a09dee13 --- /dev/null +++ b/Assets/Scripts/Gameplay/Player/UT_PlayerWalkState.cs.shmeta @@ -0,0 +1,3 @@ +Name: UT_PlayerWalkState +ID: 166650679 +Type: 9 diff --git a/Assets/Scripts/Gameplay/SC_GameManager.cs b/Assets/Scripts/Gameplay/SC_GameManager.cs new file mode 100644 index 00000000..98d2ca23 --- /dev/null +++ b/Assets/Scripts/Gameplay/SC_GameManager.cs @@ -0,0 +1,67 @@ +using SHADE; +using System; +using System.Collections.Generic; + +public class GameManager : Script +{ + public enum GameState + { + MAINMENU, + START, + WIN, + LOSE, + TOTAL + } + + public GameObject itemPool; + public GameObject zonePool; + public GameState currGameState; + + [NonSerialized] + public int totalItemCount; + [NonSerialized] + public int Score; + [NonSerialized] + public float timer; + + private IEnumerable listOfItems; + private IEnumerable listOfZone; + + protected override void awake() + { + totalItemCount = 0; + Score = 0; + currGameState = GameState.MAINMENU; + + if (itemPool) + { + listOfItems = itemPool.GetScriptsInChildren(); + if (listOfItems != null) + foreach (Item i in listOfItems) + totalItemCount += 1; + } + + if (zonePool) + { + listOfZone = zonePool.GetScriptsInChildren(); + if (listOfZone != null) + foreach (ScoringZone sz in listOfZone) + sz.gameManger = Owner.GetScript(); + } + } + + protected override void update() + { + if (timer > 0 && currGameState == GameState.START) + { + timer -= Time.DeltaTimeF; + if (totalItemCount <= 0) + { + currGameState = GameState.WIN; + } + } + else + currGameState = GameState.LOSE; + } + +} diff --git a/Assets/Scripts/Gameplay/SC_GameManager.cs.shmeta b/Assets/Scripts/Gameplay/SC_GameManager.cs.shmeta new file mode 100644 index 00000000..6082d6fe --- /dev/null +++ b/Assets/Scripts/Gameplay/SC_GameManager.cs.shmeta @@ -0,0 +1,3 @@ +Name: SC_GameManager +ID: 161629605 +Type: 9 diff --git a/Assets/Scripts/Gameplay/SC_Item.cs b/Assets/Scripts/Gameplay/SC_Item.cs new file mode 100644 index 00000000..2cdda06c --- /dev/null +++ b/Assets/Scripts/Gameplay/SC_Item.cs @@ -0,0 +1,52 @@ +using SHADE; +using System; +public class Item : Script +{ + public enum ItemCategory + { + LIGHT, + MEDIUM, + HEAVY + } + + public int Score = 10; + + public ItemCategory currCategory; + private RigidBody rb; + private Collider collider; + private bool once = false; + + protected override void awake() + { + collider = GetComponent(); + if (collider) + { + collider.GetCollisionShape(0).Density = 1; + } + rb = GetComponent(); + if (rb) + { + rb.FreezeRotationX = false; + rb.FreezeRotationY = false; + rb.FreezeRotationZ = false; + } + } + + protected override void onCollisionEnter(CollisionInfo info) + { + if (once) + { + if(currCategory == ItemCategory.LIGHT) + Audio.PlayBGMOnce2D("event:/Props/impact_elastic"); + else if (currCategory == ItemCategory.MEDIUM || currCategory == ItemCategory.HEAVY) + Audio.PlayBGMOnce2D("event:/Props/impact_hard"); + once = false; + } + } + + protected override void onCollisionExit(CollisionInfo info) + { + once = true; + } + +} \ No newline at end of file diff --git a/Assets/Scripts/Gameplay/SC_Item.cs.shmeta b/Assets/Scripts/Gameplay/SC_Item.cs.shmeta new file mode 100644 index 00000000..2503da21 --- /dev/null +++ b/Assets/Scripts/Gameplay/SC_Item.cs.shmeta @@ -0,0 +1,3 @@ +Name: SC_Item +ID: 153136539 +Type: 9 diff --git a/Assets/Scripts/Gameplay/SC_ScoringZone.cs b/Assets/Scripts/Gameplay/SC_ScoringZone.cs new file mode 100644 index 00000000..dec02c37 --- /dev/null +++ b/Assets/Scripts/Gameplay/SC_ScoringZone.cs @@ -0,0 +1,22 @@ +using SHADE; +using System; +public class ScoringZone : Script +{ + public GameManager gameManger { get; set; } + + protected override void awake() + { + } + + protected override void onTriggerEnter(CollisionInfo info) + { + if (gameManger && info.GameObject.GetScript()) + { + Audio.PlayBGMOnce2D("event:/Music/stingers/item_scored"); + gameManger.Score += info.GameObject.GetScript().Score; + gameManger.totalItemCount -= 1; + info.GameObject.SetActive(false); + } + } + +} \ No newline at end of file diff --git a/Assets/Scripts/Gameplay/SC_ScoringZone.cs.shmeta b/Assets/Scripts/Gameplay/SC_ScoringZone.cs.shmeta new file mode 100644 index 00000000..51ef171b --- /dev/null +++ b/Assets/Scripts/Gameplay/SC_ScoringZone.cs.shmeta @@ -0,0 +1,3 @@ +Name: SC_ScoringZone +ID: 153171688 +Type: 9 diff --git a/Assets/Scripts/PhysicsTest.cs.shmeta b/Assets/Scripts/PhysicsTest.cs.shmeta new file mode 100644 index 00000000..99b809c5 --- /dev/null +++ b/Assets/Scripts/PhysicsTest.cs.shmeta @@ -0,0 +1,3 @@ +Name: PhysicsTest +ID: 159771801 +Type: 9 diff --git a/TempScriptsFolder/PrintWhenActive.cs b/Assets/Scripts/PrintWhenActive.cs similarity index 66% rename from TempScriptsFolder/PrintWhenActive.cs rename to Assets/Scripts/PrintWhenActive.cs index 41afdd58..11d7f025 100644 --- a/TempScriptsFolder/PrintWhenActive.cs +++ b/Assets/Scripts/PrintWhenActive.cs @@ -2,8 +2,6 @@ public class PrintWhenActive : Script { - public PrintWhenActive(GameObject gameObj) : base(gameObj) { } - protected override void update() { Debug.Log("Active!"); diff --git a/Assets/Scripts/PrintWhenActive.cs.shmeta b/Assets/Scripts/PrintWhenActive.cs.shmeta new file mode 100644 index 00000000..2b8c4173 --- /dev/null +++ b/Assets/Scripts/PrintWhenActive.cs.shmeta @@ -0,0 +1,3 @@ +Name: PrintWhenActive +ID: 162536221 +Type: 9 diff --git a/TempScriptsFolder/RaccoonShowcase.cs b/Assets/Scripts/RaccoonShowcase.cs similarity index 70% rename from TempScriptsFolder/RaccoonShowcase.cs rename to Assets/Scripts/RaccoonShowcase.cs index 4583a699..1da191fd 100644 --- a/TempScriptsFolder/RaccoonShowcase.cs +++ b/Assets/Scripts/RaccoonShowcase.cs @@ -1,5 +1,6 @@ using SHADE; using System; +using System.Collections.Generic; public class RaccoonShowcase : Script { @@ -17,8 +18,14 @@ public class RaccoonShowcase : Script private double rotation = 0.0; private Vector3 scale = Vector3.Zero; private double originalScale = 1.0f; - public RaccoonShowcase(GameObject gameObj) : base(gameObj) {} - + [Tooltip("Sample list of Vector3s.")] + public List vecList = new List(new Vector3[] { new Vector3(1, 2, 3), new Vector3(4, 5, 6) }); + [Range(-5, 5)] + public List intList = new List(new int[] { 2, 8, 2, 6, 8, 0, 1 }); + public List enumList = new List(new Light.Type[] { Light.Type.Point, Light.Type.Directional, Light.Type.Ambient }); + public FontAsset fontAsset; + public MeshAsset mesh; + public MaterialAsset matAsset; protected override void awake() { Transform = GetComponent(); @@ -27,6 +34,11 @@ public class RaccoonShowcase : Script Debug.LogError("Transform is NULL!"); } + foreach (var child in Owner) + { + Debug.Log(child.Name); + } + originalScale = Transform.LocalScale.z; } protected override void update() diff --git a/Assets/Scripts/RaccoonShowcase.cs.shmeta b/Assets/Scripts/RaccoonShowcase.cs.shmeta new file mode 100644 index 00000000..6ce5bc3d --- /dev/null +++ b/Assets/Scripts/RaccoonShowcase.cs.shmeta @@ -0,0 +1,3 @@ +Name: RaccoonShowcase +ID: 159969631 +Type: 9 diff --git a/TempScriptsFolder/RaccoonSpin.cs b/Assets/Scripts/RaccoonSpin.cs similarity index 93% rename from TempScriptsFolder/RaccoonSpin.cs rename to Assets/Scripts/RaccoonSpin.cs index efdfadeb..84100a21 100644 --- a/TempScriptsFolder/RaccoonSpin.cs +++ b/Assets/Scripts/RaccoonSpin.cs @@ -14,8 +14,6 @@ public class RaccoonSpin : Script [SerializeField] private CallbackEvent testEvent3 = new CallbackEvent(); private Transform Transform; - public RaccoonSpin(GameObject gameObj) : base(gameObj) { } - protected override void awake() { diff --git a/Assets/Scripts/RaccoonSpin.cs.shmeta b/Assets/Scripts/RaccoonSpin.cs.shmeta new file mode 100644 index 00000000..9a1e05c8 --- /dev/null +++ b/Assets/Scripts/RaccoonSpin.cs.shmeta @@ -0,0 +1,3 @@ +Name: RaccoonSpin +ID: 157367824 +Type: 9 diff --git a/Assets/Scripts/SC_MainMenu.cs b/Assets/Scripts/SC_MainMenu.cs new file mode 100644 index 00000000..ff8c58dd --- /dev/null +++ b/Assets/Scripts/SC_MainMenu.cs @@ -0,0 +1,13 @@ +using System; +using SHADE; + +public class SC_MainMenu : Script +{ + protected override void awake() + { + } + protected override void update() + { + } +} + diff --git a/Assets/Scripts/SC_MainMenu.cs.shmeta b/Assets/Scripts/SC_MainMenu.cs.shmeta new file mode 100644 index 00000000..7e2f1ac2 --- /dev/null +++ b/Assets/Scripts/SC_MainMenu.cs.shmeta @@ -0,0 +1,3 @@ +Name: SC_MainMenu +ID: 158552402 +Type: 9 diff --git a/Assets/Scripts/SC_SoundsBoard.cs b/Assets/Scripts/SC_SoundsBoard.cs new file mode 100644 index 00000000..839450a9 --- /dev/null +++ b/Assets/Scripts/SC_SoundsBoard.cs @@ -0,0 +1,74 @@ +using SHADE; +using System; + + +public class SoundsBoard : Script +{ + protected override void awake() + { + /* + * event:/UI/failure +event:/UI/mouse_down_element +event:/UI/mouse_down_empty +event:/UI/mouse_enter_element +event:/UI/mouse_exit_element +event:/UI/success + +event:/Raccoon/raccoon_footsteps +event:/Raccoon/raccoon_throw + +event:/Props/impact_hard +event:/Props/impact_elastic + + +event:/Music/player_undetected +event:/Music/player_detected + +event:/Music/stingers/player_detected +event:/Music/stingers/item_scored + +event:/Homeowner/homeowner_humming +event:/Homeowner/homeowner_footsteps +event:/Homeowner/homeowner_detect_raccoon + */ + } + protected override void update() + { + if (Input.GetKeyDown(Input.KeyCode.Q)) + Audio.PlayBGMOnce2D("event:/UI/mouse_down_element"); + if (Input.GetKeyDown(Input.KeyCode.W)) + Audio.PlayBGMOnce2D("event:/UI/mouse_down_empty"); + if (Input.GetKeyDown(Input.KeyCode.E)) + Audio.PlayBGMOnce2D("event:/UI/mouse_enter_element"); + if (Input.GetKeyDown(Input.KeyCode.R)) + Audio.PlayBGMOnce2D("event:/UI/mouse_exit_element"); + if (Input.GetKeyDown(Input.KeyCode.T)) + Audio.PlayBGMOnce2D("event:/UI/success"); + if (Input.GetKeyDown(Input.KeyCode.Y)) + Audio.PlayBGMOnce2D("event:/Raccoon/raccoon_throw"); + if (Input.GetKeyDown(Input.KeyCode.U)) + Audio.PlayBGMOnce2D("event:/Props/impact_hard"); + if (Input.GetKeyDown(Input.KeyCode.I)) + Audio.PlayBGMOnce2D("event:/Music/player_undetected"); + if (Input.GetKeyDown(Input.KeyCode.O)) + Audio.PlayBGMOnce2D("event:/Music/player_detected"); + if (Input.GetKeyDown(Input.KeyCode.P)) + Audio.PlayBGMOnce2D("event:/Music/stingers/player_detected"); + if (Input.GetKeyDown(Input.KeyCode.A)) + Audio.PlayBGMOnce2D("event:/Music/stingers/item_scored"); + if (Input.GetKeyDown(Input.KeyCode.S)) + Audio.PlayBGMOnce2D("event:/Homeowner/homeowner_humming"); + if (Input.GetKeyDown(Input.KeyCode.D)) + Audio.PlayBGMOnce2D("event:/Homeowner/homeowner_footsteps"); + if (Input.GetKeyDown(Input.KeyCode.F)) + Audio.PlayBGMOnce2D("event:/Homeowner/homeowner_detect_raccoon"); + if (Input.GetKeyDown(Input.KeyCode.G)) + Audio.PlayBGMOnce2D("event:/Music/player_undetected"); + if (Input.GetKeyDown(Input.KeyCode.H)) + Audio.PlayBGMOnce2D("event:/Raccoon/raccoon_footsteps"); + if (Input.GetKeyDown(Input.KeyCode.J)) + Audio.PlayBGMOnce2D("event:/Props/impact_elastic"); + + } +} + diff --git a/Assets/Scripts/SC_SoundsBoard.cs.shmeta b/Assets/Scripts/SC_SoundsBoard.cs.shmeta new file mode 100644 index 00000000..a953fecf --- /dev/null +++ b/Assets/Scripts/SC_SoundsBoard.cs.shmeta @@ -0,0 +1,3 @@ +Name: SC_SoundsBoard +ID: 156397807 +Type: 9 diff --git a/Assets/Scripts/Utility/UT_BaseSate.cs b/Assets/Scripts/Utility/UT_BaseSate.cs new file mode 100644 index 00000000..521f5936 --- /dev/null +++ b/Assets/Scripts/Utility/UT_BaseSate.cs @@ -0,0 +1,68 @@ +using SHADE; +using System; + +public abstract class BaseState +{ + + protected string stateName = "Base State"; + protected StateMachine machine; + protected string animationName = ""; + + public BaseState(StateMachine stateMachine, string animName = "") + { + machine = stateMachine; + animationName = animName; + } + + public virtual void OnEnter() + { + } + + public abstract void update(); + + public abstract void fixedUpdate(); + + public virtual void OnExit() + { + + } + + public string GetStateName() + { + return stateName; + } + + public string GetAnimName() + { + return animationName; + } + + public virtual float GetAnimPercent() + { + return 1.0f; + } + + public virtual void onCollisionEnter(CollisionInfo info) + { + } + + public virtual void onCollisionStay(CollisionInfo info) + { + } + + public virtual void onCollisionExit(CollisionInfo info) + { + } + + public virtual void onTriggerEnter(CollisionInfo info) + { + } + + public virtual void onTriggerStay(CollisionInfo info) + { + } + + public virtual void onTriggerExit(CollisionInfo info) + { + } +} diff --git a/Assets/Scripts/Utility/UT_BaseSate.cs.shmeta b/Assets/Scripts/Utility/UT_BaseSate.cs.shmeta new file mode 100644 index 00000000..49e62af3 --- /dev/null +++ b/Assets/Scripts/Utility/UT_BaseSate.cs.shmeta @@ -0,0 +1,3 @@ +Name: UT_BaseSate +ID: 154709755 +Type: 9 diff --git a/Assets/Scripts/Utility/UT_StateMachine.cs b/Assets/Scripts/Utility/UT_StateMachine.cs new file mode 100644 index 00000000..aa3cfd72 --- /dev/null +++ b/Assets/Scripts/Utility/UT_StateMachine.cs @@ -0,0 +1,126 @@ +using SHADE; +using System; +using System.Collections.Generic; +using System.Linq; + +public class StateMachine : Script +{ + private Dictionary stateDictionary; + public BaseState currentState = null; + public string currentStateName; + public string currentAnimName; + + public void InitStateMachine(Dictionary dictionary) + { + + stateDictionary = dictionary; + currentState = stateDictionary.First().Value; + currentStateName = currentState.GetStateName(); + currentAnimName = currentState.GetAnimName(); + currentState.OnEnter(); + } + + public bool HasState(Type type) + { + if (!type.IsSubclassOf(typeof(BaseState))) + { + return false; + } + else + { + return stateDictionary.ContainsKey(type); + } + } + + public void SetState(Type type) + { + if (!type.IsSubclassOf(typeof(BaseState))) + { + return; + } + + + if (stateDictionary.ContainsKey(type)) + { + currentState.OnExit(); + currentState = stateDictionary[type]; + currentState.OnEnter(); + } + else + { + SetState(stateDictionary.First().Key); + } + } + + public BaseState GetState(Type type) + { + if (!stateDictionary.ContainsKey(type)) + return null; + + return stateDictionary[type]; + } + public bool IsState(Type type) + { + return (currentState.GetType() == type); + } + + protected override void update() + { + if (currentState != (null)) + { + currentStateName = currentState.GetStateName(); + currentAnimName = currentState.GetAnimName(); + currentState.update(); + } + + } + + protected override void fixedUpdate() + { + if (currentState != (null)) + { + currentStateName = currentState.GetStateName(); + currentAnimName = currentState.GetAnimName(); + currentState.fixedUpdate(); + } + } + + protected override void onCollisionEnter(CollisionInfo info) + { + if (currentState != (null)) + currentState.onCollisionEnter(info); + } + + protected override void onCollisionStay(CollisionInfo info) + { + if (currentState != (null)) + currentState.onCollisionStay(info); + } + + protected override void onCollisionExit(CollisionInfo info) + { + if (currentState != (null)) + currentState.onCollisionExit(info); + } + + protected override void onTriggerEnter(CollisionInfo info) + { + if (currentState != (null)) + currentState.onTriggerEnter(info); + } + + protected override void onTriggerStay(CollisionInfo info) + { + if (currentState != (null)) + currentState.onTriggerStay(info); + } + + protected override void onTriggerExit(CollisionInfo info) + { + if (currentState != (null)) + currentState.onTriggerExit(info); + } + + +} + diff --git a/Assets/Scripts/Utility/UT_StateMachine.cs.shmeta b/Assets/Scripts/Utility/UT_StateMachine.cs.shmeta new file mode 100644 index 00000000..3e0b1dee --- /dev/null +++ b/Assets/Scripts/Utility/UT_StateMachine.cs.shmeta @@ -0,0 +1,3 @@ +Name: UT_StateMachine +ID: 166010611 +Type: 9 diff --git a/Assets/Shaders/DebugDraw_VS.glsl b/Assets/Shaders/DebugDraw_VS.glsl index cb0886d1..7b370730 100644 --- a/Assets/Shaders/DebugDraw_VS.glsl +++ b/Assets/Shaders/DebugDraw_VS.glsl @@ -15,6 +15,9 @@ layout(set = 2, binding = 0) uniform CameraData { vec4 position; mat4 vpMat; + mat4 viewMat; + mat4 perspectiveMat; + mat4 orthoMat; } cameraData; void main() diff --git a/Assets/Shaders/Normals_FS.glsl b/Assets/Shaders/Normals_FS.glsl new file mode 100644 index 00000000..ba260d82 --- /dev/null +++ b/Assets/Shaders/Normals_FS.glsl @@ -0,0 +1,50 @@ +#version 450 +#extension GL_ARB_separate_shader_objects : enable +#extension GL_ARB_shading_language_420pack : enable +#extension GL_EXT_nonuniform_qualifier : require + +struct MatPropData +{ + vec4 color; + int textureIndex; + float alpha; + vec3 beta; +}; + +layout(location = 0) in struct +{ + vec4 vertPos; // location 0 + vec2 uv; // location = 1 + vec4 normal; // location = 2 + +} In; + +// material stuff +layout(location = 3) flat in struct +{ + int materialIndex; + uint eid; + uint lightLayerIndex; +} In2; + +layout (set = 0, binding = 1) uniform sampler2D textures[]; // for textures (global) +layout (std430, set = 3, binding = 0) buffer MaterialProperties // For materials +{ + MatPropData data[]; +} MatProp; + +layout(location = 0) out vec4 position; +layout(location = 1) out uint outEntityID; +layout(location = 2) out uint lightLayerIndices; +layout(location = 3) out vec4 normals; +layout(location = 4) out vec4 albedo; + +void main() +{ + position = In.vertPos; + normals = In.normal; + albedo = normals * texture(textures[nonuniformEXT(MatProp.data[In2.materialIndex].textureIndex)], In.uv) * MatProp.data[In2.materialIndex].color; + + outEntityID = In2.eid; + lightLayerIndices = In2.lightLayerIndex; +} \ No newline at end of file diff --git a/Assets/Shaders/Normals_FS.shshaderb b/Assets/Shaders/Normals_FS.shshaderb new file mode 100644 index 00000000..7595ece9 Binary files /dev/null and b/Assets/Shaders/Normals_FS.shshaderb differ diff --git a/Assets/Shaders/Normals_FS.shshaderb.shmeta b/Assets/Shaders/Normals_FS.shshaderb.shmeta new file mode 100644 index 00000000..38544c0a --- /dev/null +++ b/Assets/Shaders/Normals_FS.shshaderb.shmeta @@ -0,0 +1,3 @@ +Name: Normals_FS +ID: 48689301 +Type: 2 diff --git a/Assets/Shaders/SSAO_CS.glsl b/Assets/Shaders/SSAO_CS.glsl index 1a572521..627c59d1 100644 --- a/Assets/Shaders/SSAO_CS.glsl +++ b/Assets/Shaders/SSAO_CS.glsl @@ -6,8 +6,8 @@ const int ROTATION_KERNEL_W = 4; const int ROTATION_KERNEL_H = 4; // can perhaps pass in as push constant. -const float RADIUS = 0.5f; -const float BIAS = 0.025f; +const float RADIUS = 0.2f; +const float BIAS = 0.0025f; layout(local_size_x = 16, local_size_y = 16) in; layout(set = 4, binding = 0, rgba32f) uniform image2D positions; diff --git a/Assets/Shaders/SSAO_CS.shshaderb b/Assets/Shaders/SSAO_CS.shshaderb index 69f7a44f..a9154e10 100644 Binary files a/Assets/Shaders/SSAO_CS.shshaderb and b/Assets/Shaders/SSAO_CS.shshaderb differ diff --git a/Assets/Shaders/TestCube_VS.glsl b/Assets/Shaders/TestCube_VS.glsl index 0e055395..774bc580 100644 --- a/Assets/Shaders/TestCube_VS.glsl +++ b/Assets/Shaders/TestCube_VS.glsl @@ -34,7 +34,8 @@ layout(set = 2, binding = 0) uniform CameraData vec4 position; mat4 vpMat; mat4 viewMat; - mat4 projMat; + mat4 perspectiveMat; + mat4 orthoMat; } cameraData; void main() diff --git a/Assets/Shaders/TestCube_VS.shshaderb b/Assets/Shaders/TestCube_VS.shshaderb index fb282b4d..28c4655b 100644 Binary files a/Assets/Shaders/TestCube_VS.shshaderb and b/Assets/Shaders/TestCube_VS.shshaderb differ diff --git a/Assets/Shaders/Text_FS.glsl b/Assets/Shaders/Text_FS.glsl new file mode 100644 index 00000000..fdf32583 --- /dev/null +++ b/Assets/Shaders/Text_FS.glsl @@ -0,0 +1,59 @@ +#version 450 +#extension GL_ARB_separate_shader_objects : enable +#extension GL_ARB_shading_language_420pack : enable +#extension GL_EXT_nonuniform_qualifier : require + +struct MatPropData +{ + vec4 color; + int textureIndex; + float alpha; + vec3 beta; +}; + +layout(location = 0) in struct +{ + vec4 vertPos; // location 0 + vec2 uv; // location = 1 + vec4 normal; // location = 2 + +} In; + +// material stuff +layout(location = 3) flat in struct +{ + uint eid; + vec3 textColor; +} In2; + + + +layout(set = 4, binding = 0) uniform sampler2D fontBitmap; + +layout(location = 0) out vec4 color; +layout(location = 1) out uint outEntityID; + +float median(float r, float g, float b) +{ + return max(min(r, g), min(max(r, g), b)); +} + +void main() +{ + vec3 msd = texture (fontBitmap, In.uv).rgb; + float sd = median (msd.r, msd.g, msd.b); + float screenPxDistance = 2 * (sd - 0.5f); + float opacity = clamp (screenPxDistance + 0.5f, 0.0f, 2.0f); + + vec4 fragColor; + + if (opacity < 0.2f) + discard; + else + fragColor = mix(vec4(0.0f), vec4(In2.textColor, 1.0f), min (opacity, 1.0f)); + + // fragColor = vec4 (1.0f); + + color = fragColor; + outEntityID = In2.eid; +} \ No newline at end of file diff --git a/Assets/Shaders/Text_FS.shshaderb b/Assets/Shaders/Text_FS.shshaderb new file mode 100644 index 00000000..d9b47d6e Binary files /dev/null and b/Assets/Shaders/Text_FS.shshaderb differ diff --git a/Assets/Shaders/Text_FS.shshaderb.shmeta b/Assets/Shaders/Text_FS.shshaderb.shmeta new file mode 100644 index 00000000..af5a44b7 --- /dev/null +++ b/Assets/Shaders/Text_FS.shshaderb.shmeta @@ -0,0 +1,3 @@ +Name: Text_FS +ID: 38024754 +Type: 2 diff --git a/Assets/Shaders/Text_VS.glsl b/Assets/Shaders/Text_VS.glsl new file mode 100644 index 00000000..3501a13d --- /dev/null +++ b/Assets/Shaders/Text_VS.glsl @@ -0,0 +1,101 @@ +#version 450 +#extension GL_KHR_vulkan_glsl : enable + +//#include "ShaderDescriptorDefinitions.glsl" + + +// vertex inputs +layout(location = 0) in vec4 positionalOffset; +layout(location = 1) in uint glyphIndex; + +// between shader stages +layout(location = 0) out struct +{ + vec4 vertPos; // location 0 + vec2 uv; // location = 1 + vec4 normal; // location = 2 + +} Out; + +// material stuff +layout(location = 3) out struct +{ + uint eid; + vec3 textColor; +} Out2; + +// Camera data +layout(set = 2, binding = 0) uniform CameraData +{ + vec4 position; + mat4 vpMat; + mat4 viewMat; + mat4 perspectiveMat; + mat4 orthoMat; +} cameraData; + +// push constants +layout(std140, push_constant) uniform TestPushConstant +{ + mat4 worldTransform; + uint eid; + vec3 textColor; + +} testPushConstant; + +// Descriptor sets +layout(std430, set = 4, binding = 1) buffer GlyphTransforms +{ + mat4 matrices[]; +} glyphTransforms; + +vec2 CreateQuad(in uint vertexID) +{ + uint b = 1 << vertexID; + return vec2 ((0x3 & b) != 0, (0x9 & b) != 0); +} + +void main() +{ + // write EID data to FS + Out2.eid = testPushConstant.eid; + + // local variable for font index + uint fontIndex = glyphIndex; + + // get font data + mat4 fontData = glyphTransforms.matrices[fontIndex]; + + // Generate UV coords and vertex positions + Out.uv = CreateQuad(gl_VertexIndex); + vec3 vertexPos = vec3(Out.uv, 0.0f); + + // Get the local matrices + mat4 localModel = testPushConstant.worldTransform; + + //mat4 uiScale = mat4(1.0f); + //uiScale[0][0] = cameraData.cameraRight / 20.49f; + //uiScale[1][1] = cameraData.cameraTop / 11.323f; + + // transform the UV to atlas space to sample the font bitmap correctly + Out.uv = vec2(mat3(fontData) * vec3(Out.uv, 1.0f)); + + // Matrix to transform the quad from local to font space (for a font to be of correct size) + mat3 toFontSpace = mat3(1.0f); + toFontSpace[0][0] = fontData[3][0]; + toFontSpace[1][1] = fontData[3][1]; + toFontSpace[2][0] = positionalOffset.x; + toFontSpace[2][1] = positionalOffset.y; + + // Initialize variables for use in FS + //characterIndex = gl_InstanceID; + + // Transform the vertices to font space + vertexPos = toFontSpace * vec3(vertexPos.xy, 1.0f); + + Out2.textColor = testPushConstant.textColor; + + // transform the vertex position to font space + gl_Position = cameraData.orthoMat * localModel * vec4(vertexPos, 1.0f); + // gl_Position = vec4(vertexPos, 1.0f); +} \ No newline at end of file diff --git a/Assets/Shaders/Text_VS.shshaderb b/Assets/Shaders/Text_VS.shshaderb new file mode 100644 index 00000000..25eff84a Binary files /dev/null and b/Assets/Shaders/Text_VS.shshaderb differ diff --git a/Assets/Shaders/Text_VS.shshaderb.shmeta b/Assets/Shaders/Text_VS.shshaderb.shmeta new file mode 100644 index 00000000..17df2e98 --- /dev/null +++ b/Assets/Shaders/Text_VS.shshaderb.shmeta @@ -0,0 +1,3 @@ +Name: Text_VS +ID: 39816727 +Type: 2 diff --git a/Assets/Shaders/ToSwapchain_FS.glsl b/Assets/Shaders/ToSwapchain_FS.glsl new file mode 100644 index 00000000..a68fa0c7 --- /dev/null +++ b/Assets/Shaders/ToSwapchain_FS.glsl @@ -0,0 +1,14 @@ +#version 450 +#extension GL_ARB_separate_shader_objects : enable +#extension GL_ARB_shading_language_420pack : enable +#extension GL_EXT_nonuniform_qualifier : require + +layout (input_attachment_index = 0, set = 4, binding = 0) uniform subpassInput sceneTexture; + + +layout(location = 0) out vec4 fragColor; + +void main() +{ + fragColor = vec4 (subpassLoad(sceneTexture).rgb, 1.0f); +} \ No newline at end of file diff --git a/Assets/Shaders/ToSwapchain_FS.shshaderb b/Assets/Shaders/ToSwapchain_FS.shshaderb new file mode 100644 index 00000000..b10a9d6c Binary files /dev/null and b/Assets/Shaders/ToSwapchain_FS.shshaderb differ diff --git a/Assets/Shaders/ToSwapchain_FS.shshaderb.shmeta b/Assets/Shaders/ToSwapchain_FS.shshaderb.shmeta new file mode 100644 index 00000000..731b2783 --- /dev/null +++ b/Assets/Shaders/ToSwapchain_FS.shshaderb.shmeta @@ -0,0 +1,3 @@ +Name: ToSwapchain_FS +ID: 36869006 +Type: 2 diff --git a/Assets/Shaders/ToSwapchain_VS.glsl b/Assets/Shaders/ToSwapchain_VS.glsl new file mode 100644 index 00000000..eee22015 --- /dev/null +++ b/Assets/Shaders/ToSwapchain_VS.glsl @@ -0,0 +1,15 @@ +#version 450 +#extension GL_KHR_vulkan_glsl : enable + + +vec2 CreateQuad(in uint vertexID) +{ + uint b = 1 << vertexID; + return vec2 ((0x3 & b) != 0, (0x9 & b) != 0); +} + +void main() +{ + vec2 vertexPos = 2 * (CreateQuad(gl_VertexIndex) - vec2(0.5f)); + gl_Position = vec4 (vertexPos, 0.0f, 1.0f); +} \ No newline at end of file diff --git a/Assets/Shaders/ToSwapchain_VS.shshaderb b/Assets/Shaders/ToSwapchain_VS.shshaderb new file mode 100644 index 00000000..4c3157f9 Binary files /dev/null and b/Assets/Shaders/ToSwapchain_VS.shshaderb differ diff --git a/Assets/Shaders/ToSwapchain_VS.shshaderb.shmeta b/Assets/Shaders/ToSwapchain_VS.shshaderb.shmeta new file mode 100644 index 00000000..23bcbe08 --- /dev/null +++ b/Assets/Shaders/ToSwapchain_VS.shshaderb.shmeta @@ -0,0 +1,3 @@ +Name: ToSwapchain_VS +ID: 48082949 +Type: 2 diff --git a/Assets/Shaders/UI_FS.glsl b/Assets/Shaders/UI_FS.glsl new file mode 100644 index 00000000..093cc9c6 --- /dev/null +++ b/Assets/Shaders/UI_FS.glsl @@ -0,0 +1,50 @@ +#version 450 +#extension GL_ARB_separate_shader_objects : enable +#extension GL_ARB_shading_language_420pack : enable +#extension GL_EXT_nonuniform_qualifier : require + +struct MatPropData +{ + vec4 color; + int textureIndex; + float alpha; + vec3 beta; +}; + +layout(location = 0) in struct +{ + vec4 vertPos; // location 0 + vec2 uv; // location = 1 + vec4 normal; // location = 2 + +} In; + +// material stuff +layout(location = 3) flat in struct +{ + int materialIndex; + uint eid; + uint lightLayerIndex; +} In2; + +layout (set = 0, binding = 1) uniform sampler2D textures[]; // for textures (global) +layout (std430, set = 3, binding = 0) buffer MaterialProperties // For materials +{ + MatPropData data[]; +} MatProp; + +layout(location = 0) out vec4 position; +layout(location = 1) out uint outEntityID; +layout(location = 2) out uint lightLayerIndices; +layout(location = 3) out vec4 normals; +layout(location = 4) out vec4 albedo; + +void main() +{ + position = In.vertPos; + normals = In.normal; + albedo = texture(textures[nonuniformEXT(MatProp.data[In2.materialIndex].textureIndex)], In.uv); + + outEntityID = In2.eid; + lightLayerIndices = In2.lightLayerIndex; +} \ No newline at end of file diff --git a/Assets/Shaders/UI_FS.shshaderb b/Assets/Shaders/UI_FS.shshaderb new file mode 100644 index 00000000..fcb72b6e Binary files /dev/null and b/Assets/Shaders/UI_FS.shshaderb differ diff --git a/Assets/Shaders/UI_FS.shshaderb.shmeta b/Assets/Shaders/UI_FS.shshaderb.shmeta new file mode 100644 index 00000000..80bb5dad --- /dev/null +++ b/Assets/Shaders/UI_FS.shshaderb.shmeta @@ -0,0 +1,3 @@ +Name: UI_FS +ID: 35983630 +Type: 2 diff --git a/Assets/Shaders/UI_VS.glsl b/Assets/Shaders/UI_VS.glsl new file mode 100644 index 00000000..c4393b98 --- /dev/null +++ b/Assets/Shaders/UI_VS.glsl @@ -0,0 +1,66 @@ +#version 450 +#extension GL_KHR_vulkan_glsl : enable + +//#include "ShaderDescriptorDefinitions.glsl" + + +layout(location = 0) in vec3 aVertexPos; +layout(location = 1) in vec2 aUV; +layout(location = 2) in vec3 aNormal; +layout(location = 3) in vec3 aTangent; +layout(location = 4) in mat4 worldTransform; +layout(location = 8) in uvec2 integerData; + + +layout(location = 0) out struct +{ + vec4 vertPos; // location 0 + vec2 uv; // location = 1 + vec4 normal; // location = 2 + +} Out; + +// material stuff +layout(location = 3) out struct +{ + int materialIndex; + uint eid; + uint lightLayerIndex; + +} Out2; + +layout(set = 2, binding = 0) uniform CameraData +{ + vec4 position; + mat4 vpMat; + mat4 viewMat; + mat4 perspectiveMat; + mat4 orthoMat; +} cameraData; + +void main() +{ + Out2.materialIndex = gl_InstanceIndex; + Out2.eid = integerData[0]; + Out2.lightLayerIndex = integerData[1]; + + // for transforming gBuffer position and normal data + mat4 modelViewMat = cameraData.viewMat * worldTransform; + + // gBuffer position will be in view space + Out.vertPos = modelViewMat * vec4(aVertexPos, 1.0f); + + // uvs for texturing in fragment shader + Out.uv = aUV; + + mat3 transposeInv = mat3 (transpose(inverse(modelViewMat))); + + // normals are also in view space + Out.normal.rgb = transposeInv * aNormal.rgb; + Out.normal.rgb = normalize (Out.normal.rgb); + + // clip space for rendering + gl_Position = cameraData.orthoMat * worldTransform * vec4 (aVertexPos, 1.0f); + gl_Position.z += 0.1f; // HAX + // gl_Position = vec4 (aVertexPos, 1.0f); +} \ No newline at end of file diff --git a/Assets/Shaders/UI_VS.shshaderb b/Assets/Shaders/UI_VS.shshaderb new file mode 100644 index 00000000..a1f1a8b7 Binary files /dev/null and b/Assets/Shaders/UI_VS.shshaderb differ diff --git a/Assets/Shaders/UI_VS.shshaderb.shmeta b/Assets/Shaders/UI_VS.shshaderb.shmeta new file mode 100644 index 00000000..08fa8435 --- /dev/null +++ b/Assets/Shaders/UI_VS.shshaderb.shmeta @@ -0,0 +1,3 @@ +Name: UI_VS +ID: 46580970 +Type: 2 diff --git a/Assets/RaccoonBag_Color_Ver4.dds b/Assets/Texture/RaccoonBag_Color_Ver4.dds similarity index 100% rename from Assets/RaccoonBag_Color_Ver4.dds rename to Assets/Texture/RaccoonBag_Color_Ver4.dds diff --git a/Assets/RaccoonBag_Color_Ver4.shtex b/Assets/Texture/RaccoonBag_Color_Ver4.shtex similarity index 100% rename from Assets/RaccoonBag_Color_Ver4.shtex rename to Assets/Texture/RaccoonBag_Color_Ver4.shtex diff --git a/Assets/RaccoonBag_Color_Ver4.shtex.shmeta b/Assets/Texture/RaccoonBag_Color_Ver4.shtex.shmeta similarity index 100% rename from Assets/RaccoonBag_Color_Ver4.shtex.shmeta rename to Assets/Texture/RaccoonBag_Color_Ver4.shtex.shmeta diff --git a/Assets/RaccoonPreTexturedVer1_Base9.dds b/Assets/Texture/RaccoonPreTexturedVer1_Base9.dds similarity index 100% rename from Assets/RaccoonPreTexturedVer1_Base9.dds rename to Assets/Texture/RaccoonPreTexturedVer1_Base9.dds diff --git a/Assets/RaccoonPreTexturedVer1_Base9.shtex b/Assets/Texture/RaccoonPreTexturedVer1_Base9.shtex similarity index 100% rename from Assets/RaccoonPreTexturedVer1_Base9.shtex rename to Assets/Texture/RaccoonPreTexturedVer1_Base9.shtex diff --git a/Assets/RaccoonPreTexturedVer1_Base9.shtex.shmeta b/Assets/Texture/RaccoonPreTexturedVer1_Base9.shtex.shmeta similarity index 100% rename from Assets/RaccoonPreTexturedVer1_Base9.shtex.shmeta rename to Assets/Texture/RaccoonPreTexturedVer1_Base9.shtex.shmeta diff --git a/Assets/TD_Checker_Base_Color.dds b/Assets/Texture/TD_Checker_Base_Color.dds similarity index 100% rename from Assets/TD_Checker_Base_Color.dds rename to Assets/Texture/TD_Checker_Base_Color.dds diff --git a/Assets/TD_Checker_Base_Color.shtex b/Assets/Texture/TD_Checker_Base_Color.shtex similarity index 100% rename from Assets/TD_Checker_Base_Color.shtex rename to Assets/Texture/TD_Checker_Base_Color.shtex diff --git a/Assets/TD_Checker_Base_Color.shtex.shmeta b/Assets/Texture/TD_Checker_Base_Color.shtex.shmeta similarity index 100% rename from Assets/TD_Checker_Base_Color.shtex.shmeta rename to Assets/Texture/TD_Checker_Base_Color.shtex.shmeta diff --git a/Assets/Texture/TX_EndScreen.dds b/Assets/Texture/TX_EndScreen.dds new file mode 100644 index 00000000..4ba58025 Binary files /dev/null and b/Assets/Texture/TX_EndScreen.dds differ diff --git a/Assets/Texture/TX_EndScreen.shtex b/Assets/Texture/TX_EndScreen.shtex new file mode 100644 index 00000000..7de7d99f Binary files /dev/null and b/Assets/Texture/TX_EndScreen.shtex differ diff --git a/Assets/Texture/TX_EndScreen.shtex.shmeta b/Assets/Texture/TX_EndScreen.shtex.shmeta new file mode 100644 index 00000000..152082e9 --- /dev/null +++ b/Assets/Texture/TX_EndScreen.shtex.shmeta @@ -0,0 +1,3 @@ +Name: TX_EndScreen +ID: 52936944 +Type: 3 diff --git a/Assets/Texture/TX_HouseInterior_Palette4.dds b/Assets/Texture/TX_HouseInterior_Palette4.dds new file mode 100644 index 00000000..38dc4ce7 Binary files /dev/null and b/Assets/Texture/TX_HouseInterior_Palette4.dds differ diff --git a/Assets/Texture/TX_HouseInterior_Palette4.shtex b/Assets/Texture/TX_HouseInterior_Palette4.shtex new file mode 100644 index 00000000..f2ad4158 Binary files /dev/null and b/Assets/Texture/TX_HouseInterior_Palette4.shtex differ diff --git a/Assets/Texture/TX_HouseInterior_Palette4.shtex.shmeta b/Assets/Texture/TX_HouseInterior_Palette4.shtex.shmeta new file mode 100644 index 00000000..5dca5d58 --- /dev/null +++ b/Assets/Texture/TX_HouseInterior_Palette4.shtex.shmeta @@ -0,0 +1,3 @@ +Name: TX_HouseInterior_Palette4 +ID: 53438927 +Type: 3 diff --git a/Assets/Texture/TX_MainMenu.dds b/Assets/Texture/TX_MainMenu.dds new file mode 100644 index 00000000..250b431d Binary files /dev/null and b/Assets/Texture/TX_MainMenu.dds differ diff --git a/Assets/Texture/TX_MainMenu.shtex b/Assets/Texture/TX_MainMenu.shtex new file mode 100644 index 00000000..2370006f Binary files /dev/null and b/Assets/Texture/TX_MainMenu.shtex differ diff --git a/Assets/Texture/TX_MainMenu.shtex.shmeta b/Assets/Texture/TX_MainMenu.shtex.shmeta new file mode 100644 index 00000000..cef6f5ee --- /dev/null +++ b/Assets/Texture/TX_MainMenu.shtex.shmeta @@ -0,0 +1,3 @@ +Name: TX_MainMenu +ID: 54429632 +Type: 3 diff --git a/Assets/Texture/TX_StaticMesh.dds b/Assets/Texture/TX_StaticMesh.dds new file mode 100644 index 00000000..1ae325e0 Binary files /dev/null and b/Assets/Texture/TX_StaticMesh.dds differ diff --git a/Assets/Texture/TX_StaticMesh.shtex b/Assets/Texture/TX_StaticMesh.shtex new file mode 100644 index 00000000..64523a74 Binary files /dev/null and b/Assets/Texture/TX_StaticMesh.shtex differ diff --git a/Assets/Texture/TX_StaticMesh.shtex.shmeta b/Assets/Texture/TX_StaticMesh.shtex.shmeta new file mode 100644 index 00000000..cf447db1 --- /dev/null +++ b/Assets/Texture/TX_StaticMesh.shtex.shmeta @@ -0,0 +1,3 @@ +Name: TX_StaticMesh +ID: 57342922 +Type: 3 diff --git a/Assets/racoon.fbx b/Assets/racoon.fbx deleted file mode 100644 index 4d823d9d..00000000 Binary files a/Assets/racoon.fbx and /dev/null differ diff --git a/Assets/racoon.gltf b/Assets/racoon.gltf deleted file mode 100644 index 459a542d..00000000 --- a/Assets/racoon.gltf +++ /dev/null @@ -1,4993 +0,0 @@ -{ - "asset" : { - "generator" : "Khronos glTF Blender I/O v3.3.27", - "version" : "2.0" - }, - "extensionsUsed" : [ - "KHR_materials_specular", - "KHR_materials_ior" - ], - "scene" : 0, - "scenes" : [ - { - "name" : "Scene", - "nodes" : [ - 55 - ] - } - ], - "nodes" : [ - { - "name" : "L_Toe_end", - "rotation" : [ - -1.304514398725587e-07, - -4.8278069232242024e-14, - -3.113858042524953e-07, - 1 - ], - "translation" : [ - 2.9270432744255004e-09, - 0.02392714098095894, - 1.3476908478082805e-10 - ] - }, - { - "children" : [ - 0 - ], - "name" : "L_Toe", - "rotation" : [ - 0.32702386379241943, - 1.1310142156162328e-07, - 1.641405731334089e-07, - 0.945016086101532 - ], - "scale" : [ - 1, - 0.9999999403953552, - 0.9999999403953552 - ], - "translation" : [ - -8.650776095464607e-09, - 0.03380582109093666, - -2.448857117087755e-09 - ] - }, - { - "children" : [ - 1 - ], - "name" : "L_Feet", - "rotation" : [ - 0.516292929649353, - -0.020581310614943504, - -0.05452270060777664, - 0.854426920413971 - ], - "translation" : [ - 1.2865877252465907e-09, - 0.06353945285081863, - 2.6193447411060333e-10 - ] - }, - { - "children" : [ - 2 - ], - "name" : "L_Shin", - "rotation" : [ - -0.054226718842983246, - 0.00034972387948073447, - -0.0027083493769168854, - 0.9985249042510986 - ], - "scale" : [ - 0.9999998807907104, - 0.9999999403953552, - 0.9999998807907104 - ], - "translation" : [ - -8.217813984856548e-09, - 0.012935775332152843, - -1.1059455573558807e-09 - ] - }, - { - "children" : [ - 3 - ], - "name" : "L_Knee", - "rotation" : [ - -0.117364302277565, - -0.00023353073629550636, - -0.005353146698325872, - 0.9930744767189026 - ], - "scale" : [ - 1, - 1.0000001192092896, - 1 - ], - "translation" : [ - -7.161837345392996e-09, - 0.08009886741638184, - -3.725290298461914e-09 - ] - }, - { - "children" : [ - 4 - ], - "name" : "L_Thigh", - "rotation" : [ - 0.005340703763067722, - -0.08032803982496262, - -0.9945576786994934, - 0.06613556295633316 - ], - "scale" : [ - 1.0000009536743164, - 1.0000001192092896, - 1.0000014305114746 - ], - "translation" : [ - 0.06634333729743958, - 0.021777987480163574, - -0.000205356627702713 - ] - }, - { - "name" : "Head_end", - "rotation" : [ - 0, - 3.552713678800501e-15, - 0, - 1 - ], - "translation" : [ - -8.470329472543003e-22, - 0.11583378911018372, - 0 - ] - }, - { - "children" : [ - 6 - ], - "name" : "Head", - "rotation" : [ - 0, - 5.960462701182223e-08, - 0, - 1 - ], - "scale" : [ - 1, - 0.9999999403953552, - 1 - ], - "translation" : [ - 0, - 0.022377878427505493, - 0 - ] - }, - { - "children" : [ - 7 - ], - "name" : "Neck", - "translation" : [ - 0, - 0.10304805636405945, - 0 - ] - }, - { - "name" : "L_Hand_end", - "rotation" : [ - 1.3239958462918366e-08, - -2.4324227076988336e-09, - 1.4901161193847656e-08, - 1 - ], - "translation" : [ - 2.2351740014414645e-08, - 0.016836093738675117, - -5.329070518200751e-15 - ] - }, - { - "children" : [ - 9 - ], - "name" : "L_Hand", - "rotation" : [ - -0.10859407484531403, - -0.0013414795976132154, - -0.012280543334782124, - 0.9940094351768494 - ], - "scale" : [ - 1, - 1, - 0.9999999403953552 - ], - "translation" : [ - -5.215407838932151e-08, - 0.030574528500437737, - 4.579678858362968e-09 - ] - }, - { - "children" : [ - 10 - ], - "name" : "L_Forearm", - "rotation" : [ - 0.03182216361165047, - -0.010124370455741882, - -0.05386859551072121, - 0.9979895353317261 - ], - "scale" : [ - 1, - 0.9999999403953552, - 0.9999999403953552 - ], - "translation" : [ - -1.4001724224499412e-08, - 0.011892830953001976, - -4.656612873077393e-10 - ] - }, - { - "children" : [ - 11 - ], - "name" : "L_Elbow", - "rotation" : [ - 0.13403145968914032, - 0.0004466302052605897, - 0.0229647234082222, - 0.9907108545303345 - ], - "translation" : [ - 9.490547014934236e-09, - 0.07338026165962219, - 1.862645149230957e-09 - ] - }, - { - "children" : [ - 12 - ], - "name" : "L_Shoulder", - "rotation" : [ - -0.05528340861201286, - 0.01580565795302391, - -0.27442947030067444, - 0.9598866701126099 - ], - "translation" : [ - 1.1175854908174188e-08, - 0.034574370831251144, - -3.3306690738754696e-15 - ] - }, - { - "children" : [ - 13 - ], - "name" : "L_Clavicle", - "rotation" : [ - -4.527326780134899e-08, - -2.4482876170850432e-08, - -0.6586140990257263, - 0.7524808645248413 - ], - "scale" : [ - 0.9999998807907104, - 0.9999998807907104, - 1 - ], - "translation" : [ - 0.03500552102923393, - 0.07119831442832947, - -6.646381223163189e-10 - ] - }, - { - "name" : "R_Hand_end", - "rotation" : [ - 1.3239958462918366e-08, - 2.4324227076988336e-09, - -1.4901161193847656e-08, - 1 - ], - "translation" : [ - -2.2351740014414645e-08, - 0.016836093738675117, - -5.329070518200751e-15 - ] - }, - { - "children" : [ - 15 - ], - "name" : "R_Hand", - "rotation" : [ - -0.10859407484531403, - 0.0013414795976132154, - 0.012280543334782124, - 0.9940094351768494 - ], - "scale" : [ - 1, - 1, - 0.9999999403953552 - ], - "translation" : [ - 5.215407838932151e-08, - 0.030574528500437737, - 4.579678858362968e-09 - ] - }, - { - "children" : [ - 16 - ], - "name" : "R_Forearm", - "rotation" : [ - 0.03182216361165047, - 0.010124370455741882, - 0.05386859551072121, - 0.9979895353317261 - ], - "scale" : [ - 1, - 0.9999999403953552, - 0.9999999403953552 - ], - "translation" : [ - 1.4001724224499412e-08, - 0.011892830953001976, - -4.656612873077393e-10 - ] - }, - { - "children" : [ - 17 - ], - "name" : "R_Elbow", - "rotation" : [ - 0.13403145968914032, - -0.0004466302052605897, - -0.0229647234082222, - 0.9907108545303345 - ], - "translation" : [ - -9.490547014934236e-09, - 0.07338026165962219, - 1.862645149230957e-09 - ] - }, - { - "children" : [ - 18 - ], - "name" : "R_Shoulder", - "rotation" : [ - -0.05528340861201286, - -0.01580565795302391, - 0.27442947030067444, - 0.9598866701126099 - ], - "translation" : [ - -1.1175854908174188e-08, - 0.034574370831251144, - -3.3306690738754696e-15 - ] - }, - { - "children" : [ - 19 - ], - "name" : "R_Clavicle", - "rotation" : [ - -4.527326780134899e-08, - 2.4482876170850432e-08, - 0.6586140990257263, - 0.7524808645248413 - ], - "scale" : [ - 0.9999998807907104, - 0.9999998807907104, - 1 - ], - "translation" : [ - -0.03500552102923393, - 0.07119831442832947, - -6.646381223163189e-10 - ] - }, - { - "name" : "L_IK_Arm_Pole_end", - "rotation" : [ - -8.14913803104389e-10, - -2.8273916541365907e-08, - 3.597233089180918e-08, - 1 - ], - "translation" : [ - 1.3742706528319104e-08, - 0.04507105425000191, - 1.6264998237147665e-08 - ] - }, - { - "children" : [ - 21 - ], - "name" : "L_IK_Arm_Pole", - "rotation" : [ - -0.3575689494609833, - -0.6109033823013306, - 0.6082502007484436, - 0.3591284155845642 - ], - "scale" : [ - 0.9999999403953552, - 0.9999998807907104, - 0.9999999403953552 - ], - "translation" : [ - 0.0021197572350502014, - -0.04126967862248421, - -0.053202081471681595 - ] - }, - { - "children" : [ - 22 - ], - "name" : "L_IK_Arm_Target", - "rotation" : [ - -0.0011026781285181642, - 0.0018760154489427805, - -0.8620717525482178, - 0.5067814588546753 - ], - "scale" : [ - 0.9999999403953552, - 1, - 1 - ], - "translation" : [ - 0.17300567030906677, - 0.02745041251182556, - 3.304734264020226e-10 - ] - }, - { - "name" : "R_IK_Arm_Pole_end", - "rotation" : [ - -8.14913803104389e-10, - 2.8273916541365907e-08, - -3.597233089180918e-08, - 1 - ], - "translation" : [ - -1.3742706528319104e-08, - 0.04507105425000191, - 1.6264998237147665e-08 - ] - }, - { - "children" : [ - 24 - ], - "name" : "R_IK_Arm_Pole", - "rotation" : [ - -0.3575689494609833, - 0.6109033823013306, - -0.6082502007484436, - 0.3591284155845642 - ], - "scale" : [ - 0.9999999403953552, - 0.9999998807907104, - 0.9999999403953552 - ], - "translation" : [ - -0.0021197572350502014, - -0.04126967862248421, - -0.053202081471681595 - ] - }, - { - "children" : [ - 25 - ], - "name" : "R_IK_Arm_Target", - "rotation" : [ - -0.0011026781285181642, - -0.0018760154489427805, - 0.8620717525482178, - 0.5067814588546753 - ], - "scale" : [ - 0.9999999403953552, - 1, - 1 - ], - "translation" : [ - -0.17300567030906677, - 0.02745041251182556, - 3.304734264020226e-10 - ] - }, - { - "children" : [ - 8, - 14, - 20, - 23, - 26 - ], - "name" : "Upper_Spine", - "translation" : [ - 0, - 0.06622835993766785, - 0 - ] - }, - { - "children" : [ - 27 - ], - "name" : "Lower_Spine", - "translation" : [ - 0, - 0.06622838973999023, - 0 - ] - }, - { - "name" : "Tail_end", - "translation" : [ - 0, - 0.07595176249742508, - -1.3838050705317073e-09 - ] - }, - { - "children" : [ - 29 - ], - "name" : "Tail", - "rotation" : [ - -0.7071068286895752, - 0, - 0, - 0.7071068286895752 - ], - "translation" : [ - -5.8597615213960615e-18, - 0.03983837366104126, - -0.09847982972860336 - ] - }, - { - "name" : "L_Hip_end", - "translation" : [ - 0, - 0.032987553626298904, - -1.5967565047958487e-09 - ] - }, - { - "children" : [ - 31 - ], - "name" : "L_Hip", - "translation" : [ - 0.06953180581331253, - 0.04957667365670204, - 0.061330340802669525 - ] - }, - { - "name" : "L_Butt_end", - "translation" : [ - 0, - 0.03298754245042801, - 1.3750955929481279e-09 - ] - }, - { - "children" : [ - 33 - ], - "name" : "L_Butt", - "translation" : [ - 0.06953180581331253, - -0.0007792188553139567, - -0.04653617739677429 - ] - }, - { - "name" : "R_Toe_end", - "rotation" : [ - -1.304514398725587e-07, - 4.8278069232242024e-14, - 3.113858042524953e-07, - 1 - ], - "translation" : [ - -2.9270432744255004e-09, - 0.02392714098095894, - 1.3476908478082805e-10 - ] - }, - { - "children" : [ - 35 - ], - "name" : "R_Toe", - "rotation" : [ - 0.32702386379241943, - -1.1310142156162328e-07, - -1.641405731334089e-07, - 0.945016086101532 - ], - "scale" : [ - 1, - 0.9999999403953552, - 0.9999999403953552 - ], - "translation" : [ - 8.650776095464607e-09, - 0.03380582109093666, - -2.448857117087755e-09 - ] - }, - { - "children" : [ - 36 - ], - "name" : "R_Feet", - "rotation" : [ - 0.516292929649353, - 0.020581310614943504, - 0.05452270060777664, - 0.854426920413971 - ], - "translation" : [ - -1.2865877252465907e-09, - 0.06353945285081863, - 2.6193447411060333e-10 - ] - }, - { - "children" : [ - 37 - ], - "name" : "R_Shin", - "rotation" : [ - -0.054226718842983246, - -0.00034972387948073447, - 0.0027083493769168854, - 0.9985249042510986 - ], - "scale" : [ - 0.9999998807907104, - 0.9999999403953552, - 0.9999998807907104 - ], - "translation" : [ - 8.217813984856548e-09, - 0.012935775332152843, - -1.1059455573558807e-09 - ] - }, - { - "children" : [ - 38 - ], - "name" : "R_Knee", - "rotation" : [ - -0.117364302277565, - 0.00023353073629550636, - 0.005353146698325872, - 0.9930744767189026 - ], - "scale" : [ - 1, - 1.0000001192092896, - 1 - ], - "translation" : [ - 7.161837345392996e-09, - 0.08009886741638184, - -3.725290298461914e-09 - ] - }, - { - "children" : [ - 39 - ], - "name" : "R_Thigh", - "rotation" : [ - 0.005340703763067722, - 0.08032803982496262, - 0.9945576786994934, - 0.06613556295633316 - ], - "scale" : [ - 1.0000009536743164, - 1.0000001192092896, - 1.0000014305114746 - ], - "translation" : [ - -0.06634333729743958, - 0.021777987480163574, - -0.000205356627702713 - ] - }, - { - "name" : "R_Hip_end", - "translation" : [ - 0, - 0.032987553626298904, - -1.5967565047958487e-09 - ] - }, - { - "children" : [ - 41 - ], - "name" : "R_Hip", - "translation" : [ - -0.06953180581331253, - 0.04957667365670204, - 0.061330340802669525 - ] - }, - { - "name" : "R_Butt_end", - "translation" : [ - 0, - 0.03298754245042801, - 1.3750955929481279e-09 - ] - }, - { - "children" : [ - 43 - ], - "name" : "R_Butt", - "translation" : [ - -0.06953180581331253, - -0.0007792188553139567, - -0.04653617739677429 - ] - }, - { - "children" : [ - 5, - 28, - 30, - 32, - 34, - 40, - 42, - 44 - ], - "name" : "Pelvis", - "translation" : [ - 0, - 0.15915730595588684, - 0 - ] - }, - { - "name" : "L_IK_Leg_Pole_end", - "translation" : [ - 0, - 0.04320859909057617, - 2.2203057170600005e-09 - ] - }, - { - "children" : [ - 46 - ], - "name" : "L_IK_Leg_Pole", - "rotation" : [ - 0, - 0, - -1, - 0 - ], - "translation" : [ - -0.008841380476951599, - -0.08020301908254623, - 0.0748630166053772 - ] - }, - { - "children" : [ - 47 - ], - "name" : "L_IK_Leg_Target", - "rotation" : [ - -0.7071068286895752, - 0, - 0, - 0.7071068286895752 - ], - "translation" : [ - 0.08565311133861542, - 0.027707800269126892, - 0.00015427125617861748 - ] - }, - { - "name" : "R_IK_Leg_Pole_end", - "translation" : [ - 0, - 0.04320859909057617, - 2.2203057170600005e-09 - ] - }, - { - "children" : [ - 49 - ], - "name" : "R_IK_Leg_Pole", - "rotation" : [ - 0, - 0, - -1, - 0 - ], - "translation" : [ - 0.008841380476951599, - -0.08020301908254623, - 0.0748630166053772 - ] - }, - { - "children" : [ - 50 - ], - "name" : "R_IK_Leg_Target", - "rotation" : [ - -0.7071068286895752, - 0, - 0, - 0.7071068286895752 - ], - "translation" : [ - -0.08565311133861542, - 0.027707800269126892, - 0.00015427125617861748 - ] - }, - { - "children" : [ - 45, - 48, - 51 - ], - "name" : "Root" - }, - { - "mesh" : 0, - "name" : "Bag", - "skin" : 0 - }, - { - "mesh" : 1, - "name" : "Raccoon", - "skin" : 0 - }, - { - "children" : [ - 53, - 54, - 52 - ], - "name" : "Armature" - } - ], - "animations" : [ - { - "channels" : [ - { - "sampler" : 0, - "target" : { - "node" : 52, - "path" : "translation" - } - }, - { - "sampler" : 1, - "target" : { - "node" : 52, - "path" : "rotation" - } - }, - { - "sampler" : 2, - "target" : { - "node" : 52, - "path" : "scale" - } - }, - { - "sampler" : 3, - "target" : { - "node" : 45, - "path" : "translation" - } - }, - { - "sampler" : 4, - "target" : { - "node" : 45, - "path" : "rotation" - } - }, - { - "sampler" : 5, - "target" : { - "node" : 45, - "path" : "scale" - } - }, - { - "sampler" : 6, - "target" : { - "node" : 5, - "path" : "translation" - } - }, - { - "sampler" : 7, - "target" : { - "node" : 5, - "path" : "rotation" - } - }, - { - "sampler" : 8, - "target" : { - "node" : 5, - "path" : "scale" - } - }, - { - "sampler" : 9, - "target" : { - "node" : 4, - "path" : "translation" - } - }, - { - "sampler" : 10, - "target" : { - "node" : 4, - "path" : "rotation" - } - }, - { - "sampler" : 11, - "target" : { - "node" : 4, - "path" : "scale" - } - }, - { - "sampler" : 12, - "target" : { - "node" : 3, - "path" : "translation" - } - }, - { - "sampler" : 13, - "target" : { - "node" : 3, - "path" : "rotation" - } - }, - { - "sampler" : 14, - "target" : { - "node" : 3, - "path" : "scale" - } - }, - { - "sampler" : 15, - "target" : { - "node" : 2, - "path" : "translation" - } - }, - { - "sampler" : 16, - "target" : { - "node" : 2, - "path" : "rotation" - } - }, - { - "sampler" : 17, - "target" : { - "node" : 2, - "path" : "scale" - } - }, - { - "sampler" : 18, - "target" : { - "node" : 1, - "path" : "translation" - } - }, - { - "sampler" : 19, - "target" : { - "node" : 1, - "path" : "rotation" - } - }, - { - "sampler" : 20, - "target" : { - "node" : 1, - "path" : "scale" - } - }, - { - "sampler" : 21, - "target" : { - "node" : 0, - "path" : "translation" - } - }, - { - "sampler" : 22, - "target" : { - "node" : 0, - "path" : "rotation" - } - }, - { - "sampler" : 23, - "target" : { - "node" : 0, - "path" : "scale" - } - }, - { - "sampler" : 24, - "target" : { - "node" : 28, - "path" : "translation" - } - }, - { - "sampler" : 25, - "target" : { - "node" : 28, - "path" : "rotation" - } - }, - { - "sampler" : 26, - "target" : { - "node" : 28, - "path" : "scale" - } - }, - { - "sampler" : 27, - "target" : { - "node" : 27, - "path" : "translation" - } - }, - { - "sampler" : 28, - "target" : { - "node" : 27, - "path" : "rotation" - } - }, - { - "sampler" : 29, - "target" : { - "node" : 27, - "path" : "scale" - } - }, - { - "sampler" : 30, - "target" : { - "node" : 8, - "path" : "translation" - } - }, - { - "sampler" : 31, - "target" : { - "node" : 8, - "path" : "rotation" - } - }, - { - "sampler" : 32, - "target" : { - "node" : 8, - "path" : "scale" - } - }, - { - "sampler" : 33, - "target" : { - "node" : 7, - "path" : "translation" - } - }, - { - "sampler" : 34, - "target" : { - "node" : 7, - "path" : "rotation" - } - }, - { - "sampler" : 35, - "target" : { - "node" : 7, - "path" : "scale" - } - }, - { - "sampler" : 36, - "target" : { - "node" : 6, - "path" : "translation" - } - }, - { - "sampler" : 37, - "target" : { - "node" : 6, - "path" : "rotation" - } - }, - { - "sampler" : 38, - "target" : { - "node" : 6, - "path" : "scale" - } - }, - { - "sampler" : 39, - "target" : { - "node" : 14, - "path" : "translation" - } - }, - { - "sampler" : 40, - "target" : { - "node" : 14, - "path" : "rotation" - } - }, - { - "sampler" : 41, - "target" : { - "node" : 14, - "path" : "scale" - } - }, - { - "sampler" : 42, - "target" : { - "node" : 13, - "path" : "translation" - } - }, - { - "sampler" : 43, - "target" : { - "node" : 13, - "path" : "rotation" - } - }, - { - "sampler" : 44, - "target" : { - "node" : 13, - "path" : "scale" - } - }, - { - "sampler" : 45, - "target" : { - "node" : 12, - "path" : "translation" - } - }, - { - "sampler" : 46, - "target" : { - "node" : 12, - "path" : "rotation" - } - }, - { - "sampler" : 47, - "target" : { - "node" : 12, - "path" : "scale" - } - }, - { - "sampler" : 48, - "target" : { - "node" : 11, - "path" : "translation" - } - }, - { - "sampler" : 49, - "target" : { - "node" : 11, - "path" : "rotation" - } - }, - { - "sampler" : 50, - "target" : { - "node" : 11, - "path" : "scale" - } - }, - { - "sampler" : 51, - "target" : { - "node" : 10, - "path" : "translation" - } - }, - { - "sampler" : 52, - "target" : { - "node" : 10, - "path" : "rotation" - } - }, - { - "sampler" : 53, - "target" : { - "node" : 10, - "path" : "scale" - } - }, - { - "sampler" : 54, - "target" : { - "node" : 9, - "path" : "translation" - } - }, - { - "sampler" : 55, - "target" : { - "node" : 9, - "path" : "rotation" - } - }, - { - "sampler" : 56, - "target" : { - "node" : 9, - "path" : "scale" - } - }, - { - "sampler" : 57, - "target" : { - "node" : 20, - "path" : "translation" - } - }, - { - "sampler" : 58, - "target" : { - "node" : 20, - "path" : "rotation" - } - }, - { - "sampler" : 59, - "target" : { - "node" : 20, - "path" : "scale" - } - }, - { - "sampler" : 60, - "target" : { - "node" : 19, - "path" : "translation" - } - }, - { - "sampler" : 61, - "target" : { - "node" : 19, - "path" : "rotation" - } - }, - { - "sampler" : 62, - "target" : { - "node" : 19, - "path" : "scale" - } - }, - { - "sampler" : 63, - "target" : { - "node" : 18, - "path" : "translation" - } - }, - { - "sampler" : 64, - "target" : { - "node" : 18, - "path" : "rotation" - } - }, - { - "sampler" : 65, - "target" : { - "node" : 18, - "path" : "scale" - } - }, - { - "sampler" : 66, - "target" : { - "node" : 17, - "path" : "translation" - } - }, - { - "sampler" : 67, - "target" : { - "node" : 17, - "path" : "rotation" - } - }, - { - "sampler" : 68, - "target" : { - "node" : 17, - "path" : "scale" - } - }, - { - "sampler" : 69, - "target" : { - "node" : 16, - "path" : "translation" - } - }, - { - "sampler" : 70, - "target" : { - "node" : 16, - "path" : "rotation" - } - }, - { - "sampler" : 71, - "target" : { - "node" : 16, - "path" : "scale" - } - }, - { - "sampler" : 72, - "target" : { - "node" : 15, - "path" : "translation" - } - }, - { - "sampler" : 73, - "target" : { - "node" : 15, - "path" : "rotation" - } - }, - { - "sampler" : 74, - "target" : { - "node" : 15, - "path" : "scale" - } - }, - { - "sampler" : 75, - "target" : { - "node" : 23, - "path" : "translation" - } - }, - { - "sampler" : 76, - "target" : { - "node" : 23, - "path" : "rotation" - } - }, - { - "sampler" : 77, - "target" : { - "node" : 23, - "path" : "scale" - } - }, - { - "sampler" : 78, - "target" : { - "node" : 22, - "path" : "translation" - } - }, - { - "sampler" : 79, - "target" : { - "node" : 22, - "path" : "rotation" - } - }, - { - "sampler" : 80, - "target" : { - "node" : 22, - "path" : "scale" - } - }, - { - "sampler" : 81, - "target" : { - "node" : 21, - "path" : "translation" - } - }, - { - "sampler" : 82, - "target" : { - "node" : 21, - "path" : "rotation" - } - }, - { - "sampler" : 83, - "target" : { - "node" : 21, - "path" : "scale" - } - }, - { - "sampler" : 84, - "target" : { - "node" : 26, - "path" : "translation" - } - }, - { - "sampler" : 85, - "target" : { - "node" : 26, - "path" : "rotation" - } - }, - { - "sampler" : 86, - "target" : { - "node" : 26, - "path" : "scale" - } - }, - { - "sampler" : 87, - "target" : { - "node" : 25, - "path" : "translation" - } - }, - { - "sampler" : 88, - "target" : { - "node" : 25, - "path" : "rotation" - } - }, - { - "sampler" : 89, - "target" : { - "node" : 25, - "path" : "scale" - } - }, - { - "sampler" : 90, - "target" : { - "node" : 24, - "path" : "translation" - } - }, - { - "sampler" : 91, - "target" : { - "node" : 24, - "path" : "rotation" - } - }, - { - "sampler" : 92, - "target" : { - "node" : 24, - "path" : "scale" - } - }, - { - "sampler" : 93, - "target" : { - "node" : 30, - "path" : "translation" - } - }, - { - "sampler" : 94, - "target" : { - "node" : 30, - "path" : "rotation" - } - }, - { - "sampler" : 95, - "target" : { - "node" : 30, - "path" : "scale" - } - }, - { - "sampler" : 96, - "target" : { - "node" : 29, - "path" : "translation" - } - }, - { - "sampler" : 97, - "target" : { - "node" : 29, - "path" : "rotation" - } - }, - { - "sampler" : 98, - "target" : { - "node" : 29, - "path" : "scale" - } - }, - { - "sampler" : 99, - "target" : { - "node" : 32, - "path" : "translation" - } - }, - { - "sampler" : 100, - "target" : { - "node" : 32, - "path" : "rotation" - } - }, - { - "sampler" : 101, - "target" : { - "node" : 32, - "path" : "scale" - } - }, - { - "sampler" : 102, - "target" : { - "node" : 31, - "path" : "translation" - } - }, - { - "sampler" : 103, - "target" : { - "node" : 31, - "path" : "rotation" - } - }, - { - "sampler" : 104, - "target" : { - "node" : 31, - "path" : "scale" - } - }, - { - "sampler" : 105, - "target" : { - "node" : 34, - "path" : "translation" - } - }, - { - "sampler" : 106, - "target" : { - "node" : 34, - "path" : "rotation" - } - }, - { - "sampler" : 107, - "target" : { - "node" : 34, - "path" : "scale" - } - }, - { - "sampler" : 108, - "target" : { - "node" : 33, - "path" : "translation" - } - }, - { - "sampler" : 109, - "target" : { - "node" : 33, - "path" : "rotation" - } - }, - { - "sampler" : 110, - "target" : { - "node" : 33, - "path" : "scale" - } - }, - { - "sampler" : 111, - "target" : { - "node" : 40, - "path" : "translation" - } - }, - { - "sampler" : 112, - "target" : { - "node" : 40, - "path" : "rotation" - } - }, - { - "sampler" : 113, - "target" : { - "node" : 40, - "path" : "scale" - } - }, - { - "sampler" : 114, - "target" : { - "node" : 39, - "path" : "translation" - } - }, - { - "sampler" : 115, - "target" : { - "node" : 39, - "path" : "rotation" - } - }, - { - "sampler" : 116, - "target" : { - "node" : 39, - "path" : "scale" - } - }, - { - "sampler" : 117, - "target" : { - "node" : 38, - "path" : "translation" - } - }, - { - "sampler" : 118, - "target" : { - "node" : 38, - "path" : "rotation" - } - }, - { - "sampler" : 119, - "target" : { - "node" : 38, - "path" : "scale" - } - }, - { - "sampler" : 120, - "target" : { - "node" : 37, - "path" : "translation" - } - }, - { - "sampler" : 121, - "target" : { - "node" : 37, - "path" : "rotation" - } - }, - { - "sampler" : 122, - "target" : { - "node" : 37, - "path" : "scale" - } - }, - { - "sampler" : 123, - "target" : { - "node" : 36, - "path" : "translation" - } - }, - { - "sampler" : 124, - "target" : { - "node" : 36, - "path" : "rotation" - } - }, - { - "sampler" : 125, - "target" : { - "node" : 36, - "path" : "scale" - } - }, - { - "sampler" : 126, - "target" : { - "node" : 35, - "path" : "translation" - } - }, - { - "sampler" : 127, - "target" : { - "node" : 35, - "path" : "rotation" - } - }, - { - "sampler" : 128, - "target" : { - "node" : 35, - "path" : "scale" - } - }, - { - "sampler" : 129, - "target" : { - "node" : 42, - "path" : "translation" - } - }, - { - "sampler" : 130, - "target" : { - "node" : 42, - "path" : "rotation" - } - }, - { - "sampler" : 131, - "target" : { - "node" : 42, - "path" : "scale" - } - }, - { - "sampler" : 132, - "target" : { - "node" : 41, - "path" : "translation" - } - }, - { - "sampler" : 133, - "target" : { - "node" : 41, - "path" : "rotation" - } - }, - { - "sampler" : 134, - "target" : { - "node" : 41, - "path" : "scale" - } - }, - { - "sampler" : 135, - "target" : { - "node" : 44, - "path" : "translation" - } - }, - { - "sampler" : 136, - "target" : { - "node" : 44, - "path" : "rotation" - } - }, - { - "sampler" : 137, - "target" : { - "node" : 44, - "path" : "scale" - } - }, - { - "sampler" : 138, - "target" : { - "node" : 43, - "path" : "translation" - } - }, - { - "sampler" : 139, - "target" : { - "node" : 43, - "path" : "rotation" - } - }, - { - "sampler" : 140, - "target" : { - "node" : 43, - "path" : "scale" - } - }, - { - "sampler" : 141, - "target" : { - "node" : 48, - "path" : "translation" - } - }, - { - "sampler" : 142, - "target" : { - "node" : 48, - "path" : "rotation" - } - }, - { - "sampler" : 143, - "target" : { - "node" : 48, - "path" : "scale" - } - }, - { - "sampler" : 144, - "target" : { - "node" : 47, - "path" : "translation" - } - }, - { - "sampler" : 145, - "target" : { - "node" : 47, - "path" : "rotation" - } - }, - { - "sampler" : 146, - "target" : { - "node" : 47, - "path" : "scale" - } - }, - { - "sampler" : 147, - "target" : { - "node" : 46, - "path" : "translation" - } - }, - { - "sampler" : 148, - "target" : { - "node" : 46, - "path" : "rotation" - } - }, - { - "sampler" : 149, - "target" : { - "node" : 46, - "path" : "scale" - } - }, - { - "sampler" : 150, - "target" : { - "node" : 51, - "path" : "translation" - } - }, - { - "sampler" : 151, - "target" : { - "node" : 51, - "path" : "rotation" - } - }, - { - "sampler" : 152, - "target" : { - "node" : 51, - "path" : "scale" - } - }, - { - "sampler" : 153, - "target" : { - "node" : 50, - "path" : "translation" - } - }, - { - "sampler" : 154, - "target" : { - "node" : 50, - "path" : "rotation" - } - }, - { - "sampler" : 155, - "target" : { - "node" : 50, - "path" : "scale" - } - }, - { - "sampler" : 156, - "target" : { - "node" : 49, - "path" : "translation" - } - }, - { - "sampler" : 157, - "target" : { - "node" : 49, - "path" : "rotation" - } - }, - { - "sampler" : 158, - "target" : { - "node" : 49, - "path" : "scale" - } - }, - { - "sampler" : 159, - "target" : { - "node" : 55, - "path" : "translation" - } - }, - { - "sampler" : 160, - "target" : { - "node" : 55, - "path" : "rotation" - } - }, - { - "sampler" : 161, - "target" : { - "node" : 55, - "path" : "scale" - } - } - ], - "name" : "Armature|Armature|ArmatureAction", - "samplers" : [ - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 15 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 16 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 17 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 18 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 19 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 20 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 21 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 22 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 23 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 24 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 25 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 26 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 27 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 28 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 29 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 30 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 31 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 32 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 33 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 34 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 35 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 36 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 37 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 38 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 39 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 40 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 41 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 42 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 43 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 44 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 45 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 46 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 47 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 48 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 49 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 50 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 51 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 52 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 53 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 54 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 55 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 56 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 57 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 58 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 59 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 60 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 61 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 62 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 63 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 64 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 65 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 66 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 67 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 68 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 69 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 70 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 71 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 72 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 73 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 74 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 75 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 76 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 77 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 78 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 79 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 80 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 81 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 82 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 83 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 84 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 85 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 86 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 87 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 88 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 89 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 90 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 91 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 92 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 93 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 94 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 95 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 96 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 97 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 98 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 99 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 100 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 101 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 102 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 103 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 104 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 105 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 106 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 107 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 108 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 109 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 110 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 111 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 112 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 113 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 114 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 115 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 116 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 117 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 118 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 119 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 120 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 121 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 122 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 123 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 124 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 125 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 126 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 127 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 128 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 129 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 130 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 131 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 132 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 133 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 134 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 135 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 136 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 137 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 138 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 139 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 140 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 141 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 142 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 143 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 144 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 145 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 146 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 147 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 148 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 149 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 150 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 151 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 152 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 153 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 154 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 155 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 156 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 157 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 158 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 159 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 160 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 161 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 162 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 163 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 164 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 165 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 166 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 167 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 168 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 169 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 170 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 171 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 172 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 173 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 174 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 175 - }, - { - "input" : 14, - "interpolation" : "LINEAR", - "output" : 176 - } - ] - } - ], - "materials" : [ - { - "doubleSided" : true, - "name" : "BagMaterial", - "pbrMetallicRoughness" : { - "baseColorFactor" : [ - 0.800000011920929, - 0.800000011920929, - 0.800000011920929, - 1 - ], - "metallicFactor" : 0, - "roughnessFactor" : 0.5 - } - }, - { - "alphaMode" : "BLEND", - "doubleSided" : true, - "extensions" : { - "KHR_materials_specular" : { - "specularColorFactor" : [ - 0, - 0, - 0 - ] - }, - "KHR_materials_ior" : { - "ior" : 1.4500000476837158 - } - }, - "name" : "BodyMaterial", - "pbrMetallicRoughness" : { - "baseColorFactor" : [ - 0.800000011920929, - 0.800000011920929, - 0.800000011920929, - 1 - ], - "metallicFactor" : 0 - } - } - ], - "meshes" : [ - { - "name" : "Cube.003", - "primitives" : [ - { - "attributes" : { - "POSITION" : 0, - "NORMAL" : 1, - "TEXCOORD_0" : 2, - "JOINTS_0" : 3, - "WEIGHTS_0" : 4 - }, - "indices" : 5, - "material" : 0 - } - ] - }, - { - "name" : "Cube.012", - "primitives" : [ - { - "attributes" : { - "POSITION" : 7, - "NORMAL" : 8, - "TEXCOORD_0" : 9, - "COLOR_0" : 10, - "JOINTS_0" : 11, - "WEIGHTS_0" : 12 - }, - "indices" : 13, - "material" : 1 - } - ] - } - ], - "skins" : [ - { - "inverseBindMatrices" : 6, - "joints" : [ - 52, - 45, - 5, - 4, - 3, - 2, - 1, - 0, - 28, - 27, - 8, - 7, - 6, - 14, - 13, - 12, - 11, - 10, - 9, - 20, - 19, - 18, - 17, - 16, - 15, - 23, - 22, - 21, - 26, - 25, - 24, - 30, - 29, - 32, - 31, - 34, - 33, - 40, - 39, - 38, - 37, - 36, - 35, - 42, - 41, - 44, - 43, - 48, - 47, - 46, - 51, - 50, - 49 - ], - "name" : "Armature" - } - ], - "accessors" : [ - { - "bufferView" : 0, - "componentType" : 5126, - "count" : 506, - "max" : [ - 0.1090814545750618, - 0.40452075004577637, - 0.0857388824224472 - ], - "min" : [ - -0.09462108463048935, - 0.2630254030227661, - -0.11617939174175262 - ], - "type" : "VEC3" - }, - { - "bufferView" : 1, - "componentType" : 5126, - "count" : 506, - "type" : "VEC3" - }, - { - "bufferView" : 2, - "componentType" : 5126, - "count" : 506, - "type" : "VEC2" - }, - { - "bufferView" : 3, - "componentType" : 5121, - "count" : 506, - "type" : "VEC4" - }, - { - "bufferView" : 4, - "componentType" : 5126, - "count" : 506, - "type" : "VEC4" - }, - { - "bufferView" : 5, - "componentType" : 5123, - "count" : 2346, - "type" : "SCALAR" - }, - { - "bufferView" : 6, - "componentType" : 5126, - "count" : 53, - "type" : "MAT4" - }, - { - "bufferView" : 7, - "componentType" : 5126, - "count" : 3484, - "max" : [ - 0.2035536766052246, - 0.5987313389778137, - 0.09013944119215012 - ], - "min" : [ - -0.19493983685970306, - -0.0017474208725616336, - -0.19020147621631622 - ], - "type" : "VEC3" - }, - { - "bufferView" : 8, - "componentType" : 5126, - "count" : 3484, - "type" : "VEC3" - }, - { - "bufferView" : 9, - "componentType" : 5126, - "count" : 3484, - "type" : "VEC2" - }, - { - "bufferView" : 10, - "componentType" : 5123, - "count" : 3484, - "normalized" : true, - "type" : "VEC4" - }, - { - "bufferView" : 11, - "componentType" : 5121, - "count" : 3484, - "type" : "VEC4" - }, - { - "bufferView" : 12, - "componentType" : 5126, - "count" : 3484, - "type" : "VEC4" - }, - { - "bufferView" : 13, - "componentType" : 5123, - "count" : 17472, - "type" : "SCALAR" - }, - { - "bufferView" : 14, - "componentType" : 5126, - "count" : 51, - "max" : [ - 2.125 - ], - "min" : [ - 0.041666666666666664 - ], - "type" : "SCALAR" - }, - { - "bufferView" : 15, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 16, - "componentType" : 5126, - "count" : 51, - "type" : "VEC4" - }, - { - "bufferView" : 17, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 18, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 19, - "componentType" : 5126, - "count" : 51, - "type" : "VEC4" - }, - { - "bufferView" : 20, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 21, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 22, - "componentType" : 5126, - "count" : 51, - "type" : "VEC4" - }, - { - "bufferView" : 23, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 24, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 25, - "componentType" : 5126, - "count" : 51, - "type" : "VEC4" - }, - { - "bufferView" : 26, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 27, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 28, - "componentType" : 5126, - "count" : 51, - "type" : "VEC4" - }, - { - "bufferView" : 29, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 30, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 31, - "componentType" : 5126, - "count" : 51, - "type" : "VEC4" - }, - { - "bufferView" : 32, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 33, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 34, - "componentType" : 5126, - "count" : 51, - "type" : "VEC4" - }, - { - "bufferView" : 35, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 36, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 37, - "componentType" : 5126, - "count" : 51, - "type" : "VEC4" - }, - { - "bufferView" : 38, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 39, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 40, - "componentType" : 5126, - "count" : 51, - "type" : "VEC4" - }, - { - "bufferView" : 41, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 42, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 43, - "componentType" : 5126, - "count" : 51, - "type" : "VEC4" - }, - { - "bufferView" : 44, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 45, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 46, - "componentType" : 5126, - "count" : 51, - "type" : "VEC4" - }, - { - "bufferView" : 47, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 48, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 49, - "componentType" : 5126, - "count" : 51, - "type" : "VEC4" - }, - { - "bufferView" : 50, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 51, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 52, - "componentType" : 5126, - "count" : 51, - "type" : "VEC4" - }, - { - "bufferView" : 53, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 54, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 55, - "componentType" : 5126, - "count" : 51, - "type" : "VEC4" - }, - { - "bufferView" : 56, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 57, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 58, - "componentType" : 5126, - "count" : 51, - "type" : "VEC4" - }, - { - "bufferView" : 59, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 60, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 61, - "componentType" : 5126, - "count" : 51, - "type" : "VEC4" - }, - { - "bufferView" : 62, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 63, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 64, - "componentType" : 5126, - "count" : 51, - "type" : "VEC4" - }, - { - "bufferView" : 65, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 66, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 67, - "componentType" : 5126, - "count" : 51, - "type" : "VEC4" - }, - { - "bufferView" : 68, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 69, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 70, - "componentType" : 5126, - "count" : 51, - "type" : "VEC4" - }, - { - "bufferView" : 71, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 72, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 73, - "componentType" : 5126, - "count" : 51, - "type" : "VEC4" - }, - { - "bufferView" : 74, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 75, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 76, - "componentType" : 5126, - "count" : 51, - "type" : "VEC4" - }, - { - "bufferView" : 77, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 78, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 79, - "componentType" : 5126, - "count" : 51, - "type" : "VEC4" - }, - { - "bufferView" : 80, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 81, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 82, - "componentType" : 5126, - "count" : 51, - "type" : "VEC4" - }, - { - "bufferView" : 83, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 84, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 85, - "componentType" : 5126, - "count" : 51, - "type" : "VEC4" - }, - { - "bufferView" : 86, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 87, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 88, - "componentType" : 5126, - "count" : 51, - "type" : "VEC4" - }, - { - "bufferView" : 89, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 90, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 91, - "componentType" : 5126, - "count" : 51, - "type" : "VEC4" - }, - { - "bufferView" : 92, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 93, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 94, - "componentType" : 5126, - "count" : 51, - "type" : "VEC4" - }, - { - "bufferView" : 95, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 96, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 97, - "componentType" : 5126, - "count" : 51, - "type" : "VEC4" - }, - { - "bufferView" : 98, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 99, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 100, - "componentType" : 5126, - "count" : 51, - "type" : "VEC4" - }, - { - "bufferView" : 101, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 102, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 103, - "componentType" : 5126, - "count" : 51, - "type" : "VEC4" - }, - { - "bufferView" : 104, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 105, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 106, - "componentType" : 5126, - "count" : 51, - "type" : "VEC4" - }, - { - "bufferView" : 107, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 108, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 109, - "componentType" : 5126, - "count" : 51, - "type" : "VEC4" - }, - { - "bufferView" : 110, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 111, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 112, - "componentType" : 5126, - "count" : 51, - "type" : "VEC4" - }, - { - "bufferView" : 113, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 114, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 115, - "componentType" : 5126, - "count" : 51, - "type" : "VEC4" - }, - { - "bufferView" : 116, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 117, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 118, - "componentType" : 5126, - "count" : 51, - "type" : "VEC4" - }, - { - "bufferView" : 119, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 120, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 121, - "componentType" : 5126, - "count" : 51, - "type" : "VEC4" - }, - { - "bufferView" : 122, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 123, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 124, - "componentType" : 5126, - "count" : 51, - "type" : "VEC4" - }, - { - "bufferView" : 125, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 126, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 127, - "componentType" : 5126, - "count" : 51, - "type" : "VEC4" - }, - { - "bufferView" : 128, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 129, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 130, - "componentType" : 5126, - "count" : 51, - "type" : "VEC4" - }, - { - "bufferView" : 131, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 132, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 133, - "componentType" : 5126, - "count" : 51, - "type" : "VEC4" - }, - { - "bufferView" : 134, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 135, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 136, - "componentType" : 5126, - "count" : 51, - "type" : "VEC4" - }, - { - "bufferView" : 137, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 138, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 139, - "componentType" : 5126, - "count" : 51, - "type" : "VEC4" - }, - { - "bufferView" : 140, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 141, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 142, - "componentType" : 5126, - "count" : 51, - "type" : "VEC4" - }, - { - "bufferView" : 143, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 144, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 145, - "componentType" : 5126, - "count" : 51, - "type" : "VEC4" - }, - { - "bufferView" : 146, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 147, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 148, - "componentType" : 5126, - "count" : 51, - "type" : "VEC4" - }, - { - "bufferView" : 149, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 150, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 151, - "componentType" : 5126, - "count" : 51, - "type" : "VEC4" - }, - { - "bufferView" : 152, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 153, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 154, - "componentType" : 5126, - "count" : 51, - "type" : "VEC4" - }, - { - "bufferView" : 155, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 156, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 157, - "componentType" : 5126, - "count" : 51, - "type" : "VEC4" - }, - { - "bufferView" : 158, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 159, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 160, - "componentType" : 5126, - "count" : 51, - "type" : "VEC4" - }, - { - "bufferView" : 161, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 162, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 163, - "componentType" : 5126, - "count" : 51, - "type" : "VEC4" - }, - { - "bufferView" : 164, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 165, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 166, - "componentType" : 5126, - "count" : 51, - "type" : "VEC4" - }, - { - "bufferView" : 167, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 168, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 169, - "componentType" : 5126, - "count" : 51, - "type" : "VEC4" - }, - { - "bufferView" : 170, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 171, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 172, - "componentType" : 5126, - "count" : 51, - "type" : "VEC4" - }, - { - "bufferView" : 173, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 174, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - }, - { - "bufferView" : 175, - "componentType" : 5126, - "count" : 51, - "type" : "VEC4" - }, - { - "bufferView" : 176, - "componentType" : 5126, - "count" : 51, - "type" : "VEC3" - } - ], - "bufferViews" : [ - { - "buffer" : 0, - "byteLength" : 6072, - "byteOffset" : 0, - "target" : 34962 - }, - { - "buffer" : 0, - "byteLength" : 6072, - "byteOffset" : 6072, - "target" : 34962 - }, - { - "buffer" : 0, - "byteLength" : 4048, - "byteOffset" : 12144, - "target" : 34962 - }, - { - "buffer" : 0, - "byteLength" : 2024, - "byteOffset" : 16192, - "target" : 34962 - }, - { - "buffer" : 0, - "byteLength" : 8096, - "byteOffset" : 18216, - "target" : 34962 - }, - { - "buffer" : 0, - "byteLength" : 4692, - "byteOffset" : 26312, - "target" : 34963 - }, - { - "buffer" : 0, - "byteLength" : 3392, - "byteOffset" : 31004 - }, - { - "buffer" : 0, - "byteLength" : 41808, - "byteOffset" : 34396, - "target" : 34962 - }, - { - "buffer" : 0, - "byteLength" : 41808, - "byteOffset" : 76204, - "target" : 34962 - }, - { - "buffer" : 0, - "byteLength" : 27872, - "byteOffset" : 118012, - "target" : 34962 - }, - { - "buffer" : 0, - "byteLength" : 27872, - "byteOffset" : 145884, - "target" : 34962 - }, - { - "buffer" : 0, - "byteLength" : 13936, - "byteOffset" : 173756, - "target" : 34962 - }, - { - "buffer" : 0, - "byteLength" : 55744, - "byteOffset" : 187692, - "target" : 34962 - }, - { - "buffer" : 0, - "byteLength" : 34944, - "byteOffset" : 243436, - "target" : 34963 - }, - { - "buffer" : 0, - "byteLength" : 204, - "byteOffset" : 278380 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 278584 - }, - { - "buffer" : 0, - "byteLength" : 816, - "byteOffset" : 279196 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 280012 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 280624 - }, - { - "buffer" : 0, - "byteLength" : 816, - "byteOffset" : 281236 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 282052 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 282664 - }, - { - "buffer" : 0, - "byteLength" : 816, - "byteOffset" : 283276 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 284092 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 284704 - }, - { - "buffer" : 0, - "byteLength" : 816, - "byteOffset" : 285316 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 286132 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 286744 - }, - { - "buffer" : 0, - "byteLength" : 816, - "byteOffset" : 287356 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 288172 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 288784 - }, - { - "buffer" : 0, - "byteLength" : 816, - "byteOffset" : 289396 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 290212 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 290824 - }, - { - "buffer" : 0, - "byteLength" : 816, - "byteOffset" : 291436 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 292252 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 292864 - }, - { - "buffer" : 0, - "byteLength" : 816, - "byteOffset" : 293476 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 294292 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 294904 - }, - { - "buffer" : 0, - "byteLength" : 816, - "byteOffset" : 295516 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 296332 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 296944 - }, - { - "buffer" : 0, - "byteLength" : 816, - "byteOffset" : 297556 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 298372 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 298984 - }, - { - "buffer" : 0, - "byteLength" : 816, - "byteOffset" : 299596 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 300412 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 301024 - }, - { - "buffer" : 0, - "byteLength" : 816, - "byteOffset" : 301636 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 302452 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 303064 - }, - { - "buffer" : 0, - "byteLength" : 816, - "byteOffset" : 303676 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 304492 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 305104 - }, - { - "buffer" : 0, - "byteLength" : 816, - "byteOffset" : 305716 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 306532 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 307144 - }, - { - "buffer" : 0, - "byteLength" : 816, - "byteOffset" : 307756 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 308572 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 309184 - }, - { - "buffer" : 0, - "byteLength" : 816, - "byteOffset" : 309796 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 310612 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 311224 - }, - { - "buffer" : 0, - "byteLength" : 816, - "byteOffset" : 311836 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 312652 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 313264 - }, - { - "buffer" : 0, - "byteLength" : 816, - "byteOffset" : 313876 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 314692 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 315304 - }, - { - "buffer" : 0, - "byteLength" : 816, - "byteOffset" : 315916 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 316732 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 317344 - }, - { - "buffer" : 0, - "byteLength" : 816, - "byteOffset" : 317956 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 318772 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 319384 - }, - { - "buffer" : 0, - "byteLength" : 816, - "byteOffset" : 319996 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 320812 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 321424 - }, - { - "buffer" : 0, - "byteLength" : 816, - "byteOffset" : 322036 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 322852 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 323464 - }, - { - "buffer" : 0, - "byteLength" : 816, - "byteOffset" : 324076 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 324892 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 325504 - }, - { - "buffer" : 0, - "byteLength" : 816, - "byteOffset" : 326116 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 326932 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 327544 - }, - { - "buffer" : 0, - "byteLength" : 816, - "byteOffset" : 328156 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 328972 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 329584 - }, - { - "buffer" : 0, - "byteLength" : 816, - "byteOffset" : 330196 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 331012 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 331624 - }, - { - "buffer" : 0, - "byteLength" : 816, - "byteOffset" : 332236 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 333052 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 333664 - }, - { - "buffer" : 0, - "byteLength" : 816, - "byteOffset" : 334276 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 335092 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 335704 - }, - { - "buffer" : 0, - "byteLength" : 816, - "byteOffset" : 336316 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 337132 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 337744 - }, - { - "buffer" : 0, - "byteLength" : 816, - "byteOffset" : 338356 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 339172 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 339784 - }, - { - "buffer" : 0, - "byteLength" : 816, - "byteOffset" : 340396 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 341212 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 341824 - }, - { - "buffer" : 0, - "byteLength" : 816, - "byteOffset" : 342436 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 343252 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 343864 - }, - { - "buffer" : 0, - "byteLength" : 816, - "byteOffset" : 344476 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 345292 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 345904 - }, - { - "buffer" : 0, - "byteLength" : 816, - "byteOffset" : 346516 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 347332 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 347944 - }, - { - "buffer" : 0, - "byteLength" : 816, - "byteOffset" : 348556 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 349372 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 349984 - }, - { - "buffer" : 0, - "byteLength" : 816, - "byteOffset" : 350596 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 351412 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 352024 - }, - { - "buffer" : 0, - "byteLength" : 816, - "byteOffset" : 352636 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 353452 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 354064 - }, - { - "buffer" : 0, - "byteLength" : 816, - "byteOffset" : 354676 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 355492 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 356104 - }, - { - "buffer" : 0, - "byteLength" : 816, - "byteOffset" : 356716 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 357532 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 358144 - }, - { - "buffer" : 0, - "byteLength" : 816, - "byteOffset" : 358756 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 359572 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 360184 - }, - { - "buffer" : 0, - "byteLength" : 816, - "byteOffset" : 360796 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 361612 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 362224 - }, - { - "buffer" : 0, - "byteLength" : 816, - "byteOffset" : 362836 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 363652 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 364264 - }, - { - "buffer" : 0, - "byteLength" : 816, - "byteOffset" : 364876 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 365692 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 366304 - }, - { - "buffer" : 0, - "byteLength" : 816, - "byteOffset" : 366916 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 367732 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 368344 - }, - { - "buffer" : 0, - "byteLength" : 816, - "byteOffset" : 368956 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 369772 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 370384 - }, - { - "buffer" : 0, - "byteLength" : 816, - "byteOffset" : 370996 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 371812 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 372424 - }, - { - "buffer" : 0, - "byteLength" : 816, - "byteOffset" : 373036 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 373852 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 374464 - }, - { - "buffer" : 0, - "byteLength" : 816, - "byteOffset" : 375076 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 375892 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 376504 - }, - { - "buffer" : 0, - "byteLength" : 816, - "byteOffset" : 377116 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 377932 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 378544 - }, - { - "buffer" : 0, - "byteLength" : 816, - "byteOffset" : 379156 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 379972 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 380584 - }, - { - "buffer" : 0, - "byteLength" : 816, - "byteOffset" : 381196 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 382012 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 382624 - }, - { - "buffer" : 0, - "byteLength" : 816, - "byteOffset" : 383236 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 384052 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 384664 - }, - { - "buffer" : 0, - "byteLength" : 816, - "byteOffset" : 385276 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 386092 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 386704 - }, - { - "buffer" : 0, - "byteLength" : 816, - "byteOffset" : 387316 - }, - { - "buffer" : 0, - "byteLength" : 612, - "byteOffset" : 388132 - } - ], - "buffers" : [ - { - "byteLength" : 388744, - "uri" : "data:application/octet-stream;base64,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CQgAAAkIAAAJCAAACQgAAAkVCAAJFQgACQgAAAkIAAAJCAAACQgAAAkIAAAJAAAACQgAAAkIAAAJCAAACQgAAAkIAAAJCAAACQgAAAkIAAAJCAAACQgAAAkIAAAJCAAACQgAAAkIAAAJCAAACQgAAAkAAAAJAAAACQAAAAkIAAAJCAAACQgAAAkIAAAJCAAACQgAAAkIAAAJCAAACQgAAAkIAAAJAAAACQgAAAkIAAAJAAAACQgAAAkIAAAJCAAACQgAAAkIAAAJCAAACQgAAAkIAAAJCAAACQgAAAkIAAAJCAAACQgAAAkIAAAJAAAACQgAAAkIAAAJCAAACQgAAAkIAAAJCAAACQgAAAkIAAAJCAAACQgAAAkIAAAJCAAACQgAAAkIAAAJCAAACQgAAAkIAAAJCAAACQgAAAkIAAAJCAAACQgAAAkAAAAJCAAACQgAAAkIAAAJCAAACQgAAAkIAAAJCAAACQgAAAkAAAAJCAAACQgAAAkIAAAJCAAACQgAAAkIAAAJCAAACQgAAAkIAAAJCAAACQgAAAkIAAAJCAAACQgAAAkIAAAJCAAACQgAAAkAAAAJAAAACQAAAAkIAAAJCAAACQgAAAkAAAAJAAAACQAAAAkIAAAJCAAACQgAAAkIAAAJCAAACQgAAAkIAAAJAAAACQgAAAkAAAAJCAAACQAAAAkIAAAJCAAACQgAAAkIAAAJCAAACQgAAAkIAAAJAAAACQgAAAkIAAAJCAAACQgAAAkIAAAJCAAACQgAAAkIAAAJCAAACQgAAAgJExQJCBMUCAkTAAkIEwAICRMACQgTAAgJEwAJCBMACAkTAAgJEwAICRMACAkTAAgJEwAICRMACAkTAAgJEwAICQAACAkAAAgJAAAICQAACAkTAAgJEwAJCAAACAkAAAkIAAAJCAAACQgAAAkIAAAJCBMACQgTAAkAAAAJAAAACRMAAAkAAAAJEwgUCRMIFAkTFAgJExQICRMUCBMJFAgTFAkAExQJABMUCQATFAkAExQJABMUCQATFAAAFBMAABMUAAAUEwAAExQAABMUAAATFAAAExQJABMUCQgTFAkIEwgUCQkTCBQIEwkUCQgTFAgTCRQJCBMUCAkTFAkIExQICRMACQgTAAkIExQJCBMACAkTAAkIEwAJCBMACAkTAAkIEwAICRMACAkTAAkIEwAICRMACAkTAAgJEwAICRMACAkTAAgJEwAICRMACAkTAAgJEwAICRMACAkAAAgJAAAICQAACAkAAAgJAAAICQAACAkAAAgJAAAICQAACAkTAAgJAAAJCAAACQgTAAkIAAAJCAAACQgAAAkIAAAJCAAACQgAAAkIEwAJCBMACQgTAAkIEwAJAAAACQAAAAkAAAAJAAAACQAAAAkTCBQJEwgUCRMIFAkTCBQJExQICRMUCAkTFAgTCRQIExQJABMUCQATFAkAExQJABMUCQATFAkAExQJABMUCQATFAkAExQAABQTAAAUEwAAExQAABQTAAAUEwAAExQAABQTAAATFAAAExQAABQTAAATFAAAExQJCBMUCQATFAkIExQICRMJFAgTCQgUEwgJFAkTCBQJCBMUCBMJFAkIExQJCBMUCAkTFAkIExQJCBMUCAkTFAkIExQJCBMACQgTAAkIEwAICRMACAkTAAkIEwAICRMACAkAAAgJAAAICQAACAkAAAkIAAAJCAAACQgAAAkIAAAJAAAACRMIFAkTCBQJExQIExQJABMUCQATFAkAExQAABQTAAAUEwAAFBMAABMUCQATCRQICRMIFAkIExQJCBMUCQgTFAgJExQJCBMUCAkTAAkIEwAICRMACQgTAAkIEwAJCBMACAkTAAgJEwAICRMACAkTAAgJEwAICRMACAkTAAgJEwAICQAACAkAAAgJAAAICQAACAkTAAgJEwAICRMACAkTAAkIEwAJCBMACQgAAAkIEwAJCBMACQgTAAkTCAAJEwgUCRMIAAkTCBQJEwgUCRMIFAkTFAgTCRQIEwkUCBMJFAgTFAkAExQJABMUCQATFAkAExQJABMUCQATFAAAFBMAABMUAAAUEwAAExQAABMUAAATFAAAExQAABMUCQATFAkAExQJCAkTFAgTCRQICRMIFBMJCBQJCBMUCAkTFAkIExQICRMACQgTAAkIEwAJCBMACQgTAAkIEwAJCBMACQgTAAgJEwAICRMACAkTAAgJEwAICRMACAkTAAgJAAAICQAACAkAAAgJAAAICQAACAkAAAgJEwAICRMACQgTAAkIEwAJCAAACQgTAAkIAAAJCBMACQgTAAkIEwAJEwgACRMIFAkAAAAJEwgUCRMIFAkTCBQJExQIEwkUCBMUCQATFAkAExQJABMUCQATFAkAExQJABMUAAAUEwAA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XwAVAF8ALQAXACMAbgAXAG4AZQAvABcAZQAvAGUAaQAtAF8APwAtAD8AFAAjABcAVgAjAFYAVwAWAC4AWAAWAFgAWQAvABYAWQAvAFkAWgAXAC8AWgAXAFoAVgBbAEIAXABbAFwAPwBCACMAVwBCAFcAXAAuAFQAXQAuAF0AWABUAF4APgBUAD4AXQBeAFUAXwBeAF8APgBVAFsAPwBVAD8AXwBiAHYAgQBiAIEAeQBkAG0AfgBkAH4AegBoAGQAegBoAHoAfAB3AHEAfwB3AH8AgQAuABYAYQAuAGEAbwBVAF4AYwBVAGMAawAjAEIAdAAjAHQAbgAWAC8AaQAWAGkAYQBbAFUAawBbAGsAZwBUAC4AbwBUAG8AdQB7AHoAfgB7AH4AgACBAH8AeACBAHgAeQB5AHgAfAB5AHwAfQB9AHwAegB9AHoAewBzAGYAewBzAHsAgABwAGAAeABwAHgAfwBqAGIAeQBqAHkAfQBsAHIAgABsAIAAfgBgAGgAfABgAHwAeABmAGoAfQBmAH0AewAhAA8AhAAhAIQAiwAOACEAiwAOAIsAggAcAIkAhQAcAIUADADmAfYBigDmAYoAHQBIAIcAgwBIAIMAKwDxAfcBiADxAYgASQAwAEUAhgAwAIYAhQBFACsAgwBFAIMAhgApABEAjwApAI8AlQAQACkAlQAQAJUAjQAnAJMAjwAnAI8AEQDpAfgBlADpAZQAKABGAJEAjQBGAI0AKgDwAfkBkgDwAZIARwAsAFwAkAAsAJAAjgBcAFcAjABcAIwAkACWANgANgGWADYB1gDYAJcA1wDYANcANgE2AdcAmQA2AZkA2QDWADYB2QDWANkAmACYANkANwGYADcB2gDZAJkA2wDZANsANwE3AdsAmwA3AZsA3ADaADcB3ADaANwAmgCaANwAOAGaADgB3QDcAJsA3gDcAN4AOAE4Ad4AnQA4AZ0A3wDdADgB3wDdAN8AnACcAN8AOQGcADkB4ADfAJ0A4QDfAOEAOQE5AeEAnwA5AZ8A4gDgADkB4gDgAOIAngCeAOIAOgGeADoB4wDiAJ8A5ADiAOQAOgE6AeQAoQA6AaEA5QDjADoB5QDjAOUAoACgAOUAOwGgADsB5gDlAKEA5wDlAOcAOwE7AecAowA7AaMA6ADmADsB6ADmAOgAogCiAOgAPAGiADwB6QDoAKMA6gDoAOoAPAE8AeoApQA8AaUA6wDpADwB6wDpAOsApACkAOsAPQGkAD0B7ADrAKUA7QDrAO0APQE9Ae0ApwA9AacA7gDsAD0B7gDsAO4ApgCmAO4APgGmAD4B7wDuAKcA8ADuAPAAPgE+AfAAqQA+AakA8QDvAD4B8QDvAPEAqACoAPEAPwGoAD8B8gDxAKkA8wDxAPMAPwE/AfMAqwA/AasA9ADyAD8B9ADyAPQAqgCqAPQAQAGqAEAB9QD0AKsA9gD0APYAQAFAAfYArQBAAa0A9wD1AEAB9wD1APcArACsAPcAQQGsAEEB+AD3AK0A+QD3APkAQQFBAfkArwBBAa8A+gD4AEEB+gD4APoArgCuAPoAQgGuAEIB+wD6AK8A/AD6APwAQgFCAfwAsQBCAbEA/QD7AEIB/QD7AP0AsACwAP0AQwGwAEMB/gD9ALEA/wD9AP8AQwFDAf8AswBDAbMAAAH+AEMBAAH+AAABsgCyAAABRAGyAEQBAQEAAbMAAgEAAQIBRAFEAQIBtQBEAbUAAwEBAUQBAwEBAQMBtAC0AAMBRQG0AEUBBAEDAbUABQEDAQUBRQFFAQUBtwBFAbcABgEEAUUBBgEEAQYBtgC2AAYBRgG2AEYBBwEGAbcACAEGAQgBRgFGAQgBuQBGAbkACQEHAUYBCQEHAQkBuAC4AAkBRwG4AEcBCgEJAbkACwEJAQsBRwFHAQsBuwBHAbsADAEKAUcBDAEKAQwBugC6AAwBSAG6AEgBDQEMAbsADgEMAQ4BSAFIAQ4BvQBIAb0ADwENAUgBDwENAQ8BvAC8AA8BSQG8AEkBEAEPAb0AEQEPAREBSQFJAREBvwBJAb8AEgEQAUkBEgEQARIBvgC+ABIBSgG+AEoBEwESAb8AFAESARQBSgFKARQBwQBKAcEAFQETAUoBFQETARUBwADAABUBSwHAAEsBFgEVAcEAFwEVARcBSwFLARcBwwBLAcMAGAEWAUsBGAEWARgBwgDCABgBTAHCAEwBGQEYAcMAGgEYARoBTAFMARoBxQBMAcUAGwEZAUwBGwEZARsBxADEABsBTQHEAE0BHAEbAcUAHQEbAR0BTQFNAR0BxwBNAccAHgEcAU0BHgEcAR4BxgDGAB4BTgHGAE4BHwEeAccAIAEeASABTgFOASAByQBOAckAIQEfAU4BIQEfASEByADIACEBTwHIAE8BIgEhAckAIwEhASMBTwFPASMBywBPAcsAJAEiAU8BJAEiASQBygDKACQBUAHKAFABJQEkAcsAJgEkASYBUAFQASYBzQBQAc0AJwElAVABJwElAScBzADMACcBUQHMAFEBKAEnAc0AKQEnASkBUQFRASkBzwBRAc8AKgEoAVEBKgEoASoBzgDOACoBUgHOAFIBKwEqAc8ALAEqASwBUgFSASwB0QBSAdEALQErAVIBLQErAS0B0ADQAC0BUwHQAFMBLgEtAdEALwEtAS8BUwFTAS8B0wBTAdMAMAEuAVMBMAEuATAB0gDSADABVAHSAFQBMQEwAdMAMgEwATIBVAFUATIB1QBUAdUAMwExAVQBMwExATMB1ADUADMBVQHUAFUBNAEzAdUANQEzATUBVQFVATUBlwBVAZcA2AA0AVUB2AA0AdgAlgCWANYAlgGWAJYBVgHWAJgAWAHWAFgBlgGZANcAlwGZAJcBWQHXAJcAVwHXAFcBlwGYANoAmAGYAJgBWAHaAJoAWgHaAFoBmAGbANsAmQGbAJkBWwHbAJkAWQHbAFkBmQGaAN0AmgGaAJoBWgHdAJwAXAHdAFwBmgGdAN4AmwGdAJsBXQHeAJsAWwHeAFsBmwGcAOAAnAGcAJwBXAHgAJ4AXgHgAF4BnAGfAOEAnQGfAJ0BXwHhAJ0AXQHhAF0BnQGeAOMAngGeAJ4BXgHjAKAAYAHjAGABngGhAOQAnwGhAJ8BYQHkAJ8AXwHkAF8BnwGgAOYAoAGgAKABYAHmAKIAYgHmAGIBoAGjAOcAoQGjAKEBYwHnAKEAYQHnAGEBoQGiAOkAogGiAKIBYgHpAKQAZAHpAGQBogGlAOoAowGlAKMBZQHqAKMAYwHqAGMBowGkAOwApAGkAKQBZAHsAKYAZgHsAGYBpAGnAO0ApQGnAKUBZwHtAKUAZQHtAGUBpQGmAO8ApgGmAKYBZgHvAKgAaAHvAGgBpgGpAPAApwGpAKcBaQHwAKcAZwHwAGcBpwGoAPIAqAGoAKgBaAHyAKoAagHyAGoBqAGrAPMAqQGrAKkBawHzAKkAaQHzAGkBqQGqAPUAqgGqAKoBagH1AKwAbAH1AGwBqgGtAPYAqwGtAKsBbQH2AKsAawH2AGsBqwGsAPgArAGsAKwBbAH4AK4AbgH4AG4BrAGvAPkArQGvAK0BbwH5AK0AbQH5AG0BrQGuAPsArgGuAK4BbgH7ALAAcAH7AHABrgGxAPwArwGxAK8BcQH8AK8AbwH8AG8BrwGwAP4AsAGwALABcAH+ALIAcgH+AHIBsAGzAP8AsQGzALEBcwH/ALEAcQH/AHEBsQGyAAEBsgGyALIBcgEBAbQAdAEBAXQBsgG1AAIBswG1ALMBdQECAbMAcwECAXMBswG0AAQBtAG0ALQBdAEEAbYAdgEEAXYBtAG3AAUBtQG3ALUBdwEFAbUAdQEFAXUBtQG2AAcBtgG2ALYBdgEHAbgAeAEHAXgBtgG5AAgBtwG5ALcBeQEIAbcAdwEIAXcBtwG4AAoBuAG4ALgBeAEKAboAegEKAXoBuAG7AAsBuQG7ALkBewELAbkAeQELAXkBuQG6AA0BugG6ALoBegENAbwAfAENAXwBugG9AA4BuwG9ALsBfQEOAbsAewEOAXsBuwG8ABABvAG8ALwBfAEQAb4AfgEQAX4BvAG/ABEBvQG/AL0BfwERAb0AfQERAX0BvQG+ABMBvgG+AL4BfgETAcAAgAETAYABvgHBABQBvwHBAL8BgQEUAb8AfwEUAX8BvwHAABYBwAHAAMABgAEWAcIAggEWAYIBwAHDABcBwQHDAMEBgwEXAcEAgQEXAYEBwQHCABkBwgHCAMIBggEZAcQAhAEZAYQBwgHFABoBwwHFAMMBhQEaAcMAgwEaAYMBwwHEABwBxAHEAMQBhAEcAcYAhgEcAYYBxAHHAB0BxQHHAMUBhwEdAcUAhQEdAYUBxQHGAB8BxgHGAMYBhgEfAcgAiAEfAYgBxgHJACABxwHJAMcBiQEgAccAhwEgAYcBxwHIACIByAHIAMgBiAEiAcoAigEiAYoByAHLACMByQHLAMkBiwEjAckAiQEjAYkByQHKACUBygHKAMoBigElAcwAjAElAYwBygHNACYBywHNAMsBjQEmAcsAiwEmAYsBywHMACgBzAHMAMwBjAEoAc4AjgEoAY4BzAHPACkBzQHPAM0BjwEpAc0AjQEpAY0BzQHOACsBzgHOAM4BjgErAdAAkAErAZABzgHRACwBzwHRAM8BkQEsAc8AjwEsAY8BzwHQAC4B0AHQANABkAEuAdIAkgEuAZIB0AHTAC8B0QHTANEBkwEvAdEAkQEvAZEB0QHSADEB0gHSANIBkgExAdQAlAExAZQB0gHVADIB0wHVANMBlQEyAdMAkwEyAZMB0wHUADQB1AHUANQBlAE0AZYAVgE0AVYB1AGXADUB1QGXANUBVwE1AdUAlQE1AZUB1QHlAeQB2wHlAdsB2AHkAeMB4QHkAeEB2wHjAeIB3gHjAd4B4QHaAdYB3AHaAdwB4AHhAd8B2QHhAdkB2wHXAdoB5AHXAeQB5QHaAeAB4wHaAeMB5AHgAd0B4gHgAeIB4wEsAI4A+QEsAPkB8AETAIwA+AETAPgB6QFYAIQA9wFYAPcB8QEOAIIA9gEOAPYB5gEtABQA7QEtAO0B9QEVAC0A9QEVAPUB7AEiABUA7AEiAOwB9AGCACIA9AGCAPQB9gFaAFkA6wFaAOsB8wFWAFoA8wFWAPMB6gFXAFYA6gFXAOoB8gGMAFcA8gGMAPIB+AGEAA8A5wGEAOcB9wFZAFgA8QFZAPEB6wGOABIA6AGOAOgB+QEUACwA8AEUAPAB7QEkABMA6QEkAOkB7wESACQA7wESAO8B6AEdAEEA7gEdAO4B5gFBACAA5wFBAOcB7gEAAIA/AAAAgAAAAAAAAACAAAAAgAAAgD9L7y40AAAAAAAAAABL7y60AACAPwAAAIAAAACAAAAAAAAAAIAAAIA/AACAPwAAAIAAAAAAAAAAgAAAAIAAAIA/S+8uNAAAAAAAAAAAS+8utAAAgD8AAACAAAAAgCL6Ir4AAACAAACAP+a+fb9u1AU+Vw6uvAAAAIBilge+8HR6v6PkIj4AAAAA4P83NRxXJD5qrnw/AAAAgGO9tz3Cayw+ppPevAAAgD8nGH6/Mbj4PXy/EzwAAACAzWf5vcFlfb9zd5a9AAAAAOM/ojUVmJe9H0x/PwAAAICbuLU9Er6+PdEfvbsAAIA/x0J+v+lV6j35G608AAAAgLJM7r28CHq/hK04vgAAAADb/1Q1tPA5vm2+ez8AAACAH9S0PaiJpT0E7UY7AACAP+7/f7/VVtY1n0kqNgAAAIC7xAQ13zoev4c+ST8AAAAAGoLPNH0+ST/NOh4/AAAAgNdqrz2zTIs8TDezvAAAgD/u/3+/vVpNNqtMODUAAACAykU6NFiIyLT8/38/AAAAgH0sJzXq/38/4N6dswAAAIDXaq89L/javAA/37sAAIA/7v9/v52PIza5TDg1AAAAgOhFOjRETSq1/P9/PwAAAIBhkEYp6v9/P+k0STQAAACA22qvPXZ9T70cP9+7AACAPwAAgD8AAACAAAAAAAAAAIAAAACAAACAP0vvLjQAAAAAAAAAAEvvLrQAAIA/AAAAgAAAAICCy2a+AAAAgAAAgD8AAIA/AAAAgAAAAAAAAACAAAAAgAAAgD9L7y40AAAAAAAAAABL7y60AACAPwAAAIAAAACAcE6VvgAAAIAAAIA/AACAPwAAAIAAAAAAAAAAgAAAAIAAAIA/S+8uNAAAAAAAAAAAS+8utAAAgD8AAACAAAAAgCcRyr4AAACAAACAPwAAgD8AAACA+///MwAAAIBI766oAQCAP0vvLjQAAAAA+///s0zvLrQAAIA/AAAAgAEAgBxFhtW+AAAAgAAAgD8AAIA/AAAAgPz//zMAAACASO+uqAEAgD9L7y40AAAAAPz//7NM7y60AACAPwAAAIAAAACAa2oIvwAAAIAAAIA/Q6IHPpK+fT+EwsMyAAAAgJK+fb9Oogc+VVyNNAAAAACcfoo0Gs92swAAgD8AAACA0L+1PqJ6qb08/xyzAACAP2uv0r5fx2c/bUvWPQAAAIBTUmm/xErRvleBQb0AAAAAAgCCtLof672rTn4/AAAAgEMJuj7XHbM9h5slPAAAgD8oCL2+GRprP+rdEb4AAAAA0ultv1bMur5NyWc9AAAAAAOA9bWK9Bw+lfl8PwAAAIAxMro+WJKBuXtRDDwAAIA/uvrvvsfNXD+ZT0O+AAAAgGMjYr+GUeq+HUTPPQAAAAADALw0KBpdPhP2eT8AAACAutK5PnVC4DzKbTk6AACAP24U+77SGl8/ckL/sgAAAIDWGl+/aRT7vrU0qzMAAAAAxmVUM54xhTMBAIA/AAAAgNLOuT5EfLo7pC60MgAAgD9uFPu+0hpfP+5/WLMAAACA1hpfv2kU+75fMtAzAAAAALlKaTMaD74zAQCAPwAAAIDSzrk+pJk2vEmNpzIAAIA/Q6IHPpK+fb+EwsOyAAAAgJK+fT9Oogc+VVyNNAAAAACcfoq0Gs92swAAgD8AAACA0L+1vqJ6qb08/xyzAACAP2uv0r5fx2e/bUvWvQAAAABTUmk/xErRvleBQb0AAAAAAgCCNLof672rTn4/AAAAgEMJur7XHbM9h5slPAAAgD8oCL2+GRprv+rdET4AAACA0ultP1bMur5NyWc9AAAAAAOA9TWK9Bw+lfl8PwAAAIAxMrq+WJKBuXtRDDwAAIA/uvrvvsfNXL+ZT0M+AAAAgGMjYj+GUeq+HUTPPQAAAIADALy0KBpdPhP2eT8AAACAutK5vnVC4DzKbTk6AACAP24U+77SGl+/ckL/MgAAAIDWGl8/aRT7vrU0qzMAAACAxmVUs54xhTMBAIA/AAAAgNLOub5EfLo7pC60MgAAgD9uFPu+0hpfv+5/WDMAAACA1hpfP2kU+75fMtAzAAAAgLlKabMaD74zAQCAPwAAAIDSzrm+pJk2vEmNpzIAAIA/4QH5vruuXz+eNXk7AAAAgEevX79IAfm+u7gKuwAAAAAAoBi015uOu2D/fz8AAACAwtG5PkBTgzsGL5M3AACAPwAAgD8AAJszAJBgMQAAAID6MeWyS28vtAEAgD8AAAAAAYCaMwEAgL9LLy20AAAAgD/4Cr6VLVm9Kb+svgAAgD8AAIA/BAGALwDWZLMAAACAAEYAM0svMbQBAIA/AAAAAA7gsKcBAIC/S+8utAAAAABB+Aq+/+TIvSm/rL4AAIA/4QH5vruuX7+eNXm7AAAAAEevXz9IAfm+u7gKuwAAAAAAoBg015uOu2D/fz8AAACAwtG5vkBTgzsGL5M3AACAPwAAgD8AAJuzAJBgsQAAAID6MeUyS28vtAEAgD8AAAAAAYCaswEAgL9LLy20AAAAAD/4Cj6VLVm9Kb+svgAAgD8AAIA/BAGArwDWZDMAAACAAEYAs0svMbQBAIA/AAAAAA7gsCcBAIC/S+8utAAAAIBB+Ao+/+TIvSm/rL4AAIA/AACAPwAAAAAAAAAAAAAAgAAAAIBL7y60AACAPwAAAAAAAAAAAACAv0vvLrQAAACA4i/YIsuvyb2GxUu+AACAPwAAgD8AAAAAAAAAAAAAAIAAAACAS+8utAAAgD8AAAAAAAAAAAAAgL9L7y60AAAAgOIv2CIynjK+hsVLvgAAgD8AAIA/AAAAgAAAAAAAAACAAAAAgAAAgD9L7y40AAAAAAAAAABL7y60AACAPwAAAICxZo69XL5VvoY1e70AAIA/AACAPwAAAIAAAAAAAAAAgAAAAIAAAIA/S+8uNAAAAAAAAAAAS+8utAAAgD8AAACAsWaOvdmFd76GNXu9AACAPwAAgD8AAACAAAAAgAAAAIAAAACAAACAP0vvLjQAAAAAAAAAAEvvLrQAAIA/AAAAgLFmjr3eLSK+uJw+PQAAgD8AAIA/AAAAgAAAAIAAAACAAAAAgAAAgD9L7y40AAAAAAAAAABL7y60AACAPwAAAICxZo69W/VDvricPj0AAIA/5r59v27UBb5XDq48AAAAgGKWBz7wdHq/o+QiPgAAAIDg/ze1HFckPmqufD8AAACAY723vcJrLD6mk968AACAPycYfr8xuPi9fL8TvAAAAIDNZ/k9wWV9v3N3lr0AAAAA4z+itRWYl70fTH8/AAAAAJu4tb0Svr490R+9uwAAgD/HQn6/6VXqvfkbrbwAAACAskzuPbwIer+ErTi+AAAAANv/VLW08Dm+bb57PwAAAAAf1LS9qImlPQTtRjsAAIA/7v9/v9VW1rWfSSq2AAAAALvEBLXfOh6/hz5JPwAAAAAags+0fT5JP806Hj8AAACA12qvvbNMizxMN7O8AACAP+7/f7+9Wk22q0w4tQAAAIDKRTq0WIjItPz/fz8AAAAAfSwnter/fz/g3p2zAAAAgNdqr70v+Nq8AD/fuwAAgD/u/3+/nY8jtrlMOLUAAAAA6EU6tERNKrX8/38/AAAAAGGQRqnq/38/6TRJNAAAAIDbaq+9dn1PvRw/37sAAIA/AACAPwAAAIAAAAAAAAAAgAAAAIAAAIA/S+8uNAAAAAAAAAAAS+8utAAAgD8AAACAsWaOPVy+Vb6GNXu9AACAPwAAgD8AAACAAAAAAAAAAIAAAACAAACAP0vvLjQAAAAAAAAAAEvvLrQAAIA/AAAAgLFmjj3ZhXe+hjV7vQAAgD8AAIA/AAAAgAAAAIAAAACAAAAAgAAAgD9L7y40AAAAAAAAAABL7y60AACAPwAAAICxZo493i0ivricPj0AAIA/AACAPwAAAIAAAACAAAAAgAAAAIAAAIA/S+8uNAAAAAAAAAAAS+8utAAAgD8AAACAsWaOPVv1Q764nD49AACAPwAAgD8AAACAAAAAAAAAAIAAAACAS+8utAAAgD8AAAAAAAAAAAAAgL9L7y60AAAAgOZqr73gwyE5ePvivAAAgD8AAIC/AAAAgAAAAAAAAACAAAAAgEvvLjQAAIA/AAAAgAAAAAAAAIA/S+8utAAAAIB4T509XZKkvaYQ0r0AAIA/AACAvwAAAIAAAAAAAAAAgAAAAIBL7y40AACAPwAAAIAAAAAAAACAP0vvLrQAAACAeE+dPR0Q/b2mENK9AACAPwAAgD8AAACAAAAAAAAAAIAAAACAS+8utAAAgD8AAAAAAAAAAAAAgL9L7y60AAAAgOZqrz3gwyE5ePvivAAAgD8AAIC/AAAAgAAAAAAAAACAAAAAAEvvLjQAAIA/AAAAgAAAAAAAAIA/S+8utAAAAIB4T529XZKkvaYQ0r0AAIA/AACAvwAAAIAAAAAAAAAAgAAAAABL7y40AACAPwAAAIAAAAAAAACAP0vvLrQAAACAeE+dvR0Q/b2mENK9AACAP8MZGD2FT9A+X2UJPcMZGD2FT9A+X2UJPZozHT3CNM8+oC4LPZSmNz3c8dA+AhAAPZSmNz3c8dA+AhAAPaCmFD2XEdE+ghcQPUu/6Tyn0M8+tGkQPUu/6Tyn0M8+tGkQPSa9pzxUJs8+NJIYPSa9pzxUJs8+NJIYPXlg8TxYo84+7vERPaas5DyCjNA+vNAWPcAdpDxC3s8+kZ8ePbhS3TwcwNE++XUnPYemDz34YtI+/g4iPVdqnjyC+tA+P8gtPdJCzTzcAtU+XktRPZrCBT1BOtY+2/dQPSrDjzzMv9M+feZRPVx2ozz5PNk+izx+Pbzmbzzu/Nc+Vi97PVj5zjwGfdo+3KSAPZS+bjwHFt4+slWQPViIOTztTt0+ODSPPWf6kTwh3d4+LXeRPcssVTxEDOA+qFyTPVingTw5YuA+R36TPeYKJzxNtt8+CTuTPTmkUDwmWOA+xQ+TPTmkUDwmWOA+xQ+TPR3cIzwyFeA+ghSTPR3cIzwyFeA+ghSTPVNsfTwbm+A+CAuTPVNsfTwbm+A+CAuTPasvTzzHJuA+dqaPPQQRIzxU2t8+BayPPVBOezw9c+A+5qCPPV6ATDyUyd4+WHNtPcygdzzUWt8+L3NtPfBfITxSON4+gXNtPe5sFjyZ+N8+S+tTPTvVLzzhUOA+S+tTPUAJ+jtQoN8+S+tTPf4gjTvmd+E+D4ZLPR6Vwzs7iN8+S+tTPf4gjTslcN8+S+tTPXDw5zuiEt4+n3NtPf4gjTvy7N0+vHNtPYKh6Tvr198+r66PPf4gjTuC1d8+WLGPPZxs6jv+F+A+CBiTPZxs6jv+F+A+CBiTPf4gjTvLGuA+jxuTPf4gjTvLGuA+jxuTPWOb7TsZr98+ND2TPf4gjTvlp98+YD+TPWwMADx5Dd0+UxiPPf4gjTsGzNw+bfyOPZ47Gzwkmtc+UKd6Pf4gjTtYN9c+Sx96PWoLMzznaNM+qR5SPf4gjTsCEtM+1FZSPZWyQTxdudA+q0EvPf4gjTs5eNA+GbswPQBmRzzCps8+dqcgPf4gjTtCb88+Wq8iPWUFSzxz8c4+Jr8aPWUFSzxz8c4+Jr8aPf4gjTuPvM4+F+wcPf4gjTuPvM4+F+wcPWI5UDzUq80+DfobPSTxrDzJ5M0+iuQZPf4gjTvics0+jw8ePWQgYDygEsk+gBkpPf4gjTtay8g+a2ArPSTYvDzlWck+ldImPTV4gjy9Er8+YDZOPSqo4TwZA78+rP1GPf4gjTtiIr8+Em9VPf0vmDwUt7E+01VyPf4gjTudlLE+/Th/Pd2LBj2N2bE+qHJlPdi1rjzyNaM++UKHPbkRHT0MQ6M+07l+Pf4gjTvZKKM+CSmPPUocwjzcBpY+beiUPUaFMD1rsZU+dGSLPf4gjTtNXJY+ZGyePerVzjytqok+qnygPcoxPT1VpIk+l3aWPf4gjTsFsYk+vIKqPcB42zz/EHg+8+OtPf4gjTvSTHg+ode2PaDUST0u1Xc+Q/CkPfz34DwGalY+ImSxPdxTTz1owFQ+u0OlPf4gjTujE1g+B5u4PaQ84DxaNzQ+Ev2gPf4gjTsvHDU+QaKpPYWYTj2FUjM+HW2hPRlp0TwBECM+bnKPPfnEPz0NTyM+1wSNPf4gjTv20CI+A+CRPZk0xDwLkRc+uTNhPXuQMj3yURY+3tNcPf4gjTsk0Bg+lZNlPWS5mTzI7w4+u/noPEQVCD2KGA0+EaHhPP4gjTsKxxA+ZFLwPFyVkTzpeAw+JpSpu1yVkTzpeAw+JpSpu3ji/zwGlQo+s56gu3ji/zwGlQo+s56gu/4gjTvMXA4+mImyu/4gjTvMXA4+mImyu9GSmjx5lhI++rEmvbHuCD39rA8+kVEgvf4gjTvzfxU+ZBItveLuvDy7QyA+WI6SvcJKKz1FRR8+X2iSvf4gjTswQiE+UrSSvRNWhzw2si0+7hWyvf4gjTsoiSs+isGwveZj6zxF2y8+U2qzvYIuYTxf3TQ+gXW7vUTmvTzCUzc+d2y8vf4gjTv8ZjI+in66vQ+wTzxvzzc+IZy/vQ+wTzxvzzc+IZy/vf4gjTuoTjU+78K+vf4gjTuoTjU+78K+vf4gjTuoTjU+78K+vc9nrDw1UDo+U3XAvc9nrDw1UDo+U3XAvbwaTjzBmzc+wIrIvf4gjTsYCjU+99fHvf4gjTsYCjU+99fHvXzSqjxqLTo+ij3JvbzoUjwUejU+ENbcvf4gjTudtzI+nW7cvf4gjTudtzI+nW7cvXygrzyMPDg+hT3dvYD4WTz8eDI+4Wr5vUCwtjzOgTU+cHD5vf4gjTsrcC8+UWX5vf4gjTsrcC8+UWX5vZz5YDzouy8+LLoMvv4gjTuhcSw+SesMvv4gjTuhcSw+SesMvlyxvTwuBjM+DokMvu57ZzzW4i4+aV8dvq4zxDyuMjI+Fu8cvv4gjTv9kis+us8dvv4gjTv9kis+us8dvr2eajzbQDE+o0Etvv4gjTuubC4+5Cguvv4gjTuubC4+5Cguvn1WxzwJFTQ+X1osviyhYTx5MDY+v3E4vv4gjTv5AzU+6Mc6vv4gjTv5AzU+6Mc6vu5Yvjz7XDc+lxs2vitEezz7AD8+A/s8vuv71zyiST8+FuI4vv4gjTtXuD4+8hNBvqAJgTySdUo+ZoA+vgDL3jwrBks+nzw6vv4gjTv45Ek+LcRCvgXHbDwgmlU+2PE9vv4gjTvU2lQ+tMFBvsZ+yTxpWVY+/CE6vjj9TTxVTl4+mFA6vvi0qjye1l0+IjQ4vv4gjTsMxl4+Dm08vrtgVzzXrGQ+YkcwvnwYtDwti2I+41kvvv4gjTuAzmY+4jQxvqnOWDy0kmg+xJkhvv4gjTvXL2s+q0givmqGtTyS9WU+2+ogvjRaUzxfEmg+lM8RvvYRsDy7bGU+FTMRvv4gjTsAuGo+EmwSvnzLSjxg8WQ+aGYCvv4gjTtyamc+oPICvjyDpzxQeGI+MdoBvuS4Qjx+kGE+a0XpvaRwnzwUS18+GFDovf4gjTvn1WM+vjrqvYZpPjwwXF8+K87VvUYhmzynN10+Z/XUvf4gjTu6gGE+8abWvbiTQzx2XF8+E5HNvbiTQzx2XF8+E5HNvXhLoDy+I10+S8XMvXhLoDy+I10+S8XMvf4gjTsvlWE+2lzOvf4gjTsvlWE+2lzOvfD5YTyo+2E++A7Lvf4gjTua1WQ+7NXLvbCxvjy2IV8+AkjKvdotlDyd7mc+XGfHvbuJAj1xpmM+hTDGvf4gjTvJNmw+Mp7Ivd1i0DwRgXQ+UOW9vb2+Pj3nIm8+G4W4vf4gjTs733k+hkXDvRID0zwn/IY+Ywq0vf4gjTsQn4c+7l67vfNeQT0+WYY+2rWsvSIgyDzN3ZQ+TbuovQJ8Nj3N4ZQ+YvChvf4gjTvN2ZQ+N4avvQ+sszxDVqM++86Zvf4gjTvaBaM+s8mevfEHIj2spqM+Q9SUvc5umjxF1LE+7/yHva/KCD3tP7I+uQCFvf4gjTugaLE+JPmKvZTqgTx9bb8+jX9qvf4gjTt5Db8+aPhtvUas4DzDyL8+CylnvcW+YDxwXMk+7lpNvQS6vTz0fsk+yQRMvf4gjTvQHsk+8mhPvb1+UDxuys0+Rhw/vf4gjTugm80+6spAvSqMrTwD2s0+JUA+vVD7TTyVAM8+tV08vVD7TTyVAM8+tV08ve4Mqzy5Cs8+Bn07ve4Mqzy5Cs8+Bn07vf4gjTua184++Q0+vf4gjTua184++Q0+vf13UzxEvM8+S1pBvTmUsDyLvc8+pnpAvf4gjTspmc8+HR1DvasNYjwe7NA+HFRPvf4gjTvN1NA+kjFRvT1JvzwE2dA+5pJOvXo4hDyI0dQ+z1J3vf4gjTuoztQ+LS96vcIS5jwsjdQ+lFB2vSdUnDx6ptw+drSYvXc6Cz2+Ytw+qciWvf4gjTvHlNw+uLqbvYYKqDxqq+Q+h/uovf4gjTveX+Q+GzKtvdfaFj2EyuQ+uVOlved4sDwaP+4+YEixvZ7mHj3q0e4+cP2svf4gjTu3p+0+AaO1veZntDybW/g+qFiwvf4gjTtyo/c+NrKzvcbDIj3DE/k+F/+svceKsTycIAE/ZnGlvafmHz1BdAE/STyjvf4gjTv4zAA/g6anvWaxqjz+ygU/fLySvf4gjTuuqwU/GAWUvUYNGT1O6gU/4nORvYqIrzwF3g0/XtIxvf4gjTtjJQ4/ly00vWvkHT2llg0/J3cvvdornzxuGhA/fpzAvLqHDT2JrA8/qOu+vP4gjTtViBA/VE3CvLIHnzyBBhA/0tszu7IHnzyBBhA/0tszu/4gjTvzsxA/0szfuv4gjTvzsxA/0szfulLLDT1OYw8/6ctvu1LLDT1OYw8/6ctvux8Chjw3rQ0/HK6NPMb76TxVFw0/YT2CPP4gjTseUw4/SqyaPN79ejzBvAo/fVILPf4gjTvz3go//ioSPSsn2jwpyAo/QuIGPQtvXDz5vAU/wslePf4gjTtneAU/ePllPc/bujyxHQY/LQpZPTBNWjyLWwA/lc6CPf4gjTtjWAA/zWqGPYfauzwTaQA/2FGCPTLeQzz4H/s+5vCKPaA+oTy0pfo+6GqHPf4gjTtXnfs+MxGPPSsdRDxTd/Y+O2+TPezUoDylbvU+mZWNPf4gjTsCgPc+3kiZPdgbLjxURPE+bhKlPZnTijwQE/A+aWyfPf4gjTuWdfI+dLiqPQJFJjxpA+4+RiexPcT8gjwwvOw+SiqsPf4gjTugSu8+RSS2PdI9DjxXqOs+D8+zPf4gjTu/Few+atS2PSTrVTzwOus+tsmwPbuBFjxS6Oc+2qeqPf4gjTtJG+g+cmGuPfdyZjxctec+Q+6mPUMNBzxbxeQ+GxGiPQaKRzxYh+Q+rSGgPf4gjTtfA+U+igCkPRjs+zvkXOI+bUibPf4gjTt+f+I+5sObPZhbNTxJOuI+9MyaPQ/8+Tt29uE+axCZPQ/8+Tt29uE+axCZPY9rMzzL2OE+cNmYPY9rMzzL2OE+cNmYPf4gjTseFOI+ZUeZPf4gjTseFOI+ZUeZPa40+Ts3TuI+1mOUPS+kMjwLLuI+DEKUPf4gjTtkbuI+oIWUPSYp9zsmuOQ+j65tPf4gjTtX5OQ+ELBtPaaYMDz0i+Q+DK1tPV1hzDshjuM+S+tTPf4gjTsrq+M+S+tTPd7QBTwVceM+S+tTPTl7MjzUwOI+S+tTPR0OfDyYauM+I6ZtPTyeVDwyN+I+NGJWPYTjizxuaeI+ApttPe4KSDwLfuE+S+tTPe/EkDzUTuE+RX1tPdilkzx9J+E+9maQPeJkjjwHnOE+uBCSPVwtljwBI+E+cfOTPVwtljwBI+E+cfOTPYM0mzzkI+E+A4+UPWeOkDzLguE+GQCWPWeOkDzLguE+GQCWPVzRlDzPnuE+dOGWPb5pgTw2zeE+ZQaYPb5pgTw2zeE+ZQaYPT4uhDy9A+I+SkmZPQcUgDzG++E+Cq+TPeNolTzAV+M+QPCaPbhGqjzeT+I+NiqXPcT1xTwUG+g+KeybPQag/DxgTek+6UmOPfip8TxgweM+BJSRPebr6zw93N4+6OOIPXKnFD3TDOQ+R4qIPVq2FD17GN0+YbtvPa+APj39z+I+OS99PRIcND3y2uY+aFmBPWrJOT0nXNw+rHddPac3cz2KLeA+GXJcPUeLZz0yQ9s+HjpPPRn8dD1JUeY+tXJiPWmWmD2SDdw++FMrPeGOiz3Cwdk+cKctPfcPrD1PjuE+mPMlPRtzpj2X2dU+Ai66PM8GvD0tUtc+iprQO88GvD0tUtc+iprQOzVBjT3C4dU+qoYGPWoukz0d4dM+M9lWPENMhD2olNM+C4C8PI3Tmj0HZtQ+kwcNOo3Tmj0HZtQ+kwcNOmDTiT2ZeNM+N3YsPAapfT1c9dI+uiShPKBahj0uRtM+hs0bPKBahj0uRtM+hs0bPC6fjj3o9tM+UoJxui6fjj3o9tM+UoJxulSLiT2rzNM+INfKulSLiT2rzNM+INfKulSLiT2rzNM+INfKulSLiT2rzNM+INfKunu2iT3C+NM+kZ1OvLA6fz0wdtM+lBS7vN6flz2ZnNQ+Q+tFvNTYgz3Lu9M+bp9SvNTYgz3Lu9M+bp9SvPnKcz3PGdM+r5G5vPnKcz3PGdM+r5G5vL2IhT3fPdM+RedUvFTKdj15htI+H8i6vLKRiz0VU9M+GL3ZurKRiz0VU9M+GL3Zutnnkj15FNE+uGpWvCoxiD22NdA+z8C+vMfImD2TK9E+Yz+/usfImD2TK9E+Yz+/uuUtqz29w8w+GGhcvJOmoD1EZMs+2+TEvLIDsD1V8sw+kNPWurIDsD1V8sw+kNPWutnvxj2VQcc+OIxivMBMvj0/z8Q+AKPJvJXyyT0Qt8c+R/QLu5XyyT0Qt8c+R/QLu0mx5D0M08A+c+FavBBA3T0LPL0+iXXIvBJ55j2di8E+ToTwuhJ55j2di8E+ToTwumdnAD49s7o+YmpLvMcE+j3SfbY+ZMK9vF83AT5Ug7s+XADGul83AT5Ug7s+XADGugzgDT4oRbU+g3BDvJyKFz4ZZLE+nxJAvDbAED42RrU+A85BuzbAED42RrU+A85Bu/i2Cj7ko7E+BNOqvBiJFD5eQ64+owOdvMGJ/j1IRaE+V5f+vHQcDD770qA+URnYvHPx2T1DG6I+I84bveMj/j1qgpw+jPSpvA/Z3T1eRZs+ah7AvKT1Cj6NZZ0+eaybvJzvAT5xwps+Uimuu5zvAT5xwps+UimuuyZD3z3BQZo+uXlxuyZD3z3BQZo+uXlxu/kuED5z35w+Ad3ju/kuED5z35w+Ad3ju1teAj5l55w+z/o/PFdo4D0epZs+0fJ/PIM/ED4l0Z0+ZFUQPGFiAz7asKE+E1K3PB1Y3j3ctaI+D2D2PP4rEj6eG6E+igOLPMZeDT6s37A++Ml+PFNVGT456qw+Pw1UPMvE+j3lV7Y+ffOaPNHaDz6UdbQ+j9fuO7dyGz6B+68+T06+O1VaAD79gbo+wS8WPDxp5D0Ko8A+8c4ePHncxz2j6cY+K0ogPEba3T2FHL0+yuumPN5dwD2sesQ+vA+pPMZqwD1Uz64+0x8VPU6doz1XcLs+BX8VPYLLqT0nKao+IhgtPSeKjz2SBKc+/P1GPeJWvz0DkJ4+lAISPSwDkD3G/Lc+XCwrPTTecT3bgLU+ryo+PXvMbz3UG8Q+ZwscPQYGSD2vWcI+CqgpPQKuiT2eIsY+LIsLPSLITj25R8w+JEcMPYREKz0HPss+4isWPfM8bT2PZs0+VZL+PP2gPT368c8+Ih8CPRfiWD3Lr9A+Ct3sPDVTUj1XjdE+jcroPDVTUj1XjdE+jcroPLixgD1GDtI+qn+YPMOwej3modI+BfOWPMOwej3modI+BfOWPOvPjT2itM8+6LihPGYViT3jxNI+Ja4bPABrlj0DldA+sg8lPP5/rT3wUcw+QNwmPHbxpD0s5Mo+WDCoPMtqUD0uItI+UOz0PPkmUD25M9M+7HsLPfCDND2Vo9E+hY4GPQrJMD0m4tI+iIUYPUU9Lj3CS9Y+GblBPSRgWD30VNY+x3AvPSHOAz3CYco+4uodPbJcHD2qr8A+Lkk4PQk1PD0zrbM+rc5RPQUTXj3PI6U+59tiPXjzfz2C8pY+zK9mPdSwpz2ZM5g+rJY2PWY5hj1HOIo+P0p3PefZrT05zIo+T6dBPbvsjT2Bang+DCGFPSTvtj3V/3g+qKNKPWc/kz1dTVU+dLSFPd7Uvj1S2lU+VUpMPd6SlT3BkDU+TOeBPXnZwz39zjc+98JEPX2gkj1H7yU+f9lmPXtexT2Cjyg+TakzPZcRjz3X6xg+/Mk7PfDaxD28hRs+HMAaPct/mD2QqwI+U+IYPf7toT2O1tg9U/XrPAYeWj04DgE+nXkwPZDwwz3nSAQ+CksBPTIGwz0jGNo98avPPEnZ2j0dfgQ+5iKDPGRS4D19XB0+r46VPC9g1T14P9c9OW5hPH3a4D2YAP89aBjSun3a4D2YAP89aBjSujmE6D13Nx4+SsOEuzmE6D13Nx4+SsOEu8Iw2T1BksE9s7hdOsIw2T1BksE9s7hdOhSf2j3QDQA+WouuvIt/4D0gQR4+dufWvJ6+1D3+tMM9Py+GvI+OxD2ubv89MgUavWV7xT3qvB0+KNQ9vbmhwz2JY8M9d2zsvHWymT29wP897do7vWSQjT0XgR4+clJxvYbUpT1Mf8I9a2MGvbSsXT1mCQA+rLBdvVIHiD0Qm8E9mZAWvao2Oz1ibO89kO7/vKJ+bT3Ifr89ADq/vH3iMT2csOk9zW7Nun3iMT2csOk9zW7Nur3TYz0tN749MJ3nOr3TYz0tN749MJ3nOrPVMz1OVvY9irjDPCKWXz2Ke9I9AtClPMrVgD37lNc9Wh8EPafAaj0ff8k93KGyPJQKcj0zg749bZKdPIH1hD30qss9kRf6PL4uiT36Xr49xz3lPGzCoz2oDsw9wanfPFSPwj1ccsw97zvFPM21pT2u/b093qfNPN08wj1hnL098xG2PLlxpz0fWLE9iJq8PHIPwj3g+bA9vYOnPAHUjD1etrE9VrHRPN3xqD3hvqY9vJyrPNAtwj3IbqY99QeZPOq1jz36Dqc9hDG+PLurrz2Sm3A9LhhkPJdltj1juRM9yO3hO2uNnT1Vu3A9QRN5PAnKwT3Qe3A9HB1PPEJmwT0PGhQ9mVTYO64KzT2kAXU9uunaOx70yD02PRU9JQVDOz0h0T0KY6o9bygqPOWB0j1vVYY91pT/ueWB0j1vVYY91pT/uQfTyz07MRY9x6buugfTyz07MRY9x6buun4azz1wdoc9CbY+vGJ2yT2/bxY9Khviu37lwj1LPYc9ALqjvEUpwj0eLhY9Fg82vFdgrj2BsoY90O22vCbstj1ryxU9lClCvC3bmT23J4Y9niHKvAevqz27aBU9E0ROvMFBjT35CIU9uc6CvDHEoz1WJhU95cYMvNxjiT1JSoQ9+I0AutxjiT1JSoQ9+I0AutrdoD3JuhQ9lBU0u9rdoD3JuhQ9lBU0u9OpkT2onXQ9OccRPLaroz1U9xM9gHFKO95Pfz3+oao9D/JwPNcGfD3yabM9w/yWPDbVpj17UgM9ZsoWO+tkqz22WBM99obrO/zVrT0IFwM9oOy/O09+rz2acO48DnisOwuStz3GjQM96aa7OxlOwT2FBAQ9MWG3OwFeuD1nfO88mL+rO7Q9wT0yiPA8JAerO57tuD1zW9Q8jATgO57tuD1zW9Q8jATgOxapsD0ZONM8kKPeOxapsD0ZONM8kKPeOycywT3NftU8i2XhOycywT3NftU8i2XhO2YwuT2Z94A8kiurPMkswT1pLII8EjCrPAU0sT2MhX88DyerPGUwuT3t0Wo8U1q/PAI0sT38cGg8Llq/PMkswT3cMm08eFq/PGUwuT3HkVQ8XH3VPMkswT3x61Y8UH3VPAI0sT2fN1I8ZX3VPGUwuT2DLu07UbMbPQI0sT3gg+g7RbMbPckswT0j2fE7XLMbPWUwuT2ZXNo7ar4gPckswT2rBt87ar4gPQI0sT2HstU7Z74gPWUwuT0pAMg7Ht4lPckswT0Aqsw7Gd4lPQI0sT1SVsM7I94lPWUwuT2gYis7krNGPQI0sT3RDyI7lbNGPckswT1utTQ7j7NGPWUwuT2VTKg4t1ZTPQI0sT3rDIK4uFZTPckswT0SU2k5tFZTPWUwuT1mfZK6RrtGPWUwuT1mfZK6RrtGPQI0sT38IqW6SbtGPQI0sT38IqW6SbtGPckswT2er3+6QrtGPckswT2er3+6QrtGPWYwuT1ExsK6oeAlPQI0sT3ia9W6neAlPcoswT2oILC6peAlPWYwuT2lZci6TakgPQI0sT08C9u6SqkgPcoswT0OwLW6UakgPWYwuT3HLsu6v2gbPcoswT0xibi6xWgbPQI0sT1a1N26uGgbPWYwuT0WZNK6fDvVPAI0sT2sCeW6DzrVPMoswT1/vr+65zzVPGYwuT0bZNK6/Vy+PMoswT2Gvr+65l++PAI0sT2xCeW6Flq+PGYwuT0gZNK67z6pPAI0sT23CeW6kTapPMoswT2Jvr+6S0epPNItuT14ntK6PILoO6TBsj3Ft+C68gvmOwGavz0rhcS6iPjqO4EouT2pWKm6kkWNO2F0rz2jALy628eHO6Lcwj2xsJa6SsOSO4k2uT3dtc06gskvufWXxj3FOOQ6TNkrOfWXxj3FOOQ6TNkrORzVqz3yMrc6GNsCuhzVqz3yMrc6GNsCusKIuT0ye1o70y/ou/lJwz0vz2M7nX7fu/lJwz0vz2M7nX7fu4vHrz00J1E7COHwu4vHrz00J1E7COHwu9DGuT1BALM7RtwlvNDGuT1BALM7RtwlvGVLsz3tea87A4sovGVLsz3tea87A4sovD1CwD2XhrY7iC0jvD1CwD2XhrY7iC0jvEfOuT0kQFQ8fgIkvCmowT2oeVY8f9IgvGf0sT2kBlI8fTInvE+UuT3OeLs8wqEXvE+UuT3OeLs8wqEXvGY1sT3lV7o8fJ8bvGY1sT3lV7o8fJ8bvDfzwT26mbw8CKQTvDfzwT26mbw8CKQTvJT9uD2yi+08f00avPL7rz0Sf+w8eRcgvDT/wT1TmO48hYMUvH4nuD0HwQQ9hKYpvDUQwj3xOAU95U4hvMk+rj0dSQQ9JP4xvBQEpz0hAgQ9n/D1u49ApD2EvAM9YNwsu49ApD2EvAM9YNwsu1kzqT1b/Os8Fdrdu0Cnqj0x37k8Ss3Ru0Cnqj0x37k8Ss3RuxB3pj0dXuw8JVcZuxB3pj0dXuw8JVcZu3hepz1m1Lk8hhODuXhepz1m1Lk8hhODuXhepz1m1Lk8hhODuUr1qD3k5O08OqUJO+9dqj2KB9A8w5uJO+9dqj2KB9A8w5uJOzn2qj0cFHY8APqpPDn2qj0NbWA8AfS+PLwQpz3GuUo8hcmoPLwQpz0YEzk8r46+PDPApT25xNk7QEeoPDPApT3xD8U7hmW+PCSrpz1VYT080vglur0Qpz2g/4A6HV+oPL0Qpz2g/4A6HV+oPLwQpz0/HUs6NWG+PLwQpz0/HUs6NWG+PDn2qj1JeMC6j8moPDn2qj1k5sO6E16+PDn2qj3rR8e6IurUPL0Qpz2WBBU6tJbUPL0Qpz2WBBU6tJbUPMv8qj0OGM+62WobPV3+qj3YVs26gKggPXczpz1byqG543AbPXczpz1byqG543AbPflDpz2Xw865P6ggPflDpz2Xw865P6ggPSrvpT0/VCw703cbPR0Jpj109Bc72aYgPYQzpz13drg7DoMbPTPApT3grbA7OHHUPLwQpz0dyCc8wZXUPDn2qj0tZks8zgfVPND8qj2uveA7JaYbPVn+qj29ds07c7EgPRQBqz3HUrk7E78lPbBDpz0MFqc7B6UgPZRlpz0kmpM7ubclPbtApj3P5QE7K8klPRjxpz2zFyk7ntc0PU0Tqz2b2B87GnI/PZldpz0Bty06asA4PRjxpz0LKy66otw0PRjxpz0LKy66otw0PcUEqz12zAu4J51KPU0Tqz17MaC6VHg/PU0Tqz17MaC6VHg/PSkBqz326ce6z9slPZZmpz007fW55dQlPZZmpz007fW55dQlPeC7qz0EbUs8AR/guzOuyD2/eQU9qjrLu97jyj1VWQU98NDhut7jyj1VWQU98NDhuiksyD0DK+88NMa7u+pYyj3wzu88Yu27uupYyj3wzu88Yu27uiLnxz3BPL08iMO1uyLnxz3BPL08iMO1uyuqyj3nhL0802slOiuqyj3nhL0802slOiuqyj3nhL0802slOqZJxz0UCFI8YnjHu9vCyj3FskQ8vR+EOaRvzD3IuOk7iJqoPKVvzD13mdQ7eXe+PNcmyz2MhL06TKWoPNcmyz2MhL06TKWoPNUmyz1jz1I8UxOpPNUmyz3r3kA8fZ6+PPdVxz3mcn08mCKqPPdVxz2Ul2c8kPu+PFtvxz3ActM8B0iYO1tvxz3ActM8B0iYO7eyxz0FE/E8GGciOzIxyD0NyAQ96twiO/dVxz39Z1I8gQrVPNUmyz1tWi8825vUPIZPxz3xhu47XqYbPQlOxz3jO9s7erEgPdkEyz2fRsc7LIMbPQv1yj1c3bU7F6UgPcVBzD3BQUo79XcbPWoozD2E0TU75aYgPeYEyz1yQBU5/nAbPeYEyz1yQBU5/nAbPaJvzD1l5L87hnjUPNcmyz1D/4U6Yp3UPNcmyz1D/4U6Yp3UPNUmyz0tf6E6k3C+PNUmyz0tf6E6k3C+PPdVxz1YNJC6Qu/UPPdVxz1fxIy6Imm+PItPxz31EZi682obPQROxz1AUpa6jaggPUdLxz0455C629slPcX0yj2/Tms4TKggPcX0yj2/Tms4TKggPfPSyj3QW6G38NQlPfPSyj3QW6G38NQlPRLyyz11rx87OcklPaBLyj1IUGO5W9w0PaBLyj1IUGO5W9w0PYs5xz1DcVK6Nng/PYs5xz1DcVK6Nng/Pbvbyj2k05E6K8A4PaBLyj2YbUY7Vdc0PcJHxz0YiMo5G51KPYs5xz0mVTs7+nE/PVxLxz3zFcc79L4lPe/Tyj07WaI7z7clPfdVxz24Q4m6/PSoPOZP0D1P4bI9RbFVPKsy0j1qMr49+xhbPB6c0j3ad8s9nKt3PMz3lj2+JjE+m6OLvX4SUD3WIDM+ghCtvVjmxT2lLC8+YW1UvTp4mT3B3UA+mr+TvRs8xD2zkT4+oFNgva9oXT3PKUM+Y1W3vV40lj0zv1U+eJKVvWSNWj0zk1Y+cFe5vQcivz0z61Q+/ZpjvaZLiz0R628+bmiUves3tz07s3A+fpdgvYFehz1lv4Y+wtCMvYcNrj2NJYc+U9dZvZ4agT2Z/ZU+24uFvTv3pj1nGZc+qk5SvTw1Xz2iM6U+72GDvUQxjj2VwKY+NN9jvTOQOz0U07M+SQdyvbVVbj09ZrU+Gw1avUdoGj3uB8E+9fVWvTCfRD3WQMI+SuZGvc1rAz3UMMo+AtZBvedTKD321so+pug3vRmP8TzkTc4+DJs2vXQRGz0Euc4+lCQvvVWN7jz5bc8+dHE0vVWN7jz5bc8+dHE0vcRJGT2Iyc8+lI0tvcRJGT2Iyc8+lI0tvUdz9jxCEtA+YYI5vVFgHj1WYtA+yZwyvQGBBT0uE9E+mH5HvaR0Kz0NUdE+LENAvZUnIT0erNQ+JZxtvbfdTj2l79Q+D9xjvWSSRD3z39w+4zuPvTLXfD1orN0+xYqGvWoMVD3gyuU+FjGavawViD3/Eec+URuOvR1xWj2Z/e8+BxGfvdbwij1QMvE+YwWRvSBxWz2w1/k+jhifvT0Pij2cm/o+AzKRvX6WVj1YiAE/cvuXvSujhj1znAE/mrqMvWuHTj1FoQU/AQeKvccAgj06WAU/IJqCvdhVUz2ueww/R4E2vaNjhD26YAs/Zos9vYvxhT06gQ8/LkULvdQ2aD33dBA/zDgDvazHlz1+jQ4/kFETvXm8nD3KABI/osjNvCYdrT3cpxE/eNXLvMxbjD26WRI/zrvPvDjWoj0DxBM/LrJ4vEe7jT2hYBM/B1SLvCbxtz1lJxQ/TrxavCNToz2VhRQ/5+bQuyNToz2VhRQ/5+bQu9sDjT3arBM/yDAEvNsDjT3arBM/yDAEvGqiuT1OXhU/PmyZu2qiuT1OXhU/PmyZu7Rvoj067xM/rnJZu2sRjj3q8xI/HIeZu/vNtj2J6hQ/R67/ujuuoT11zxI/eoWyuzuuoT11zxI/eoWyuzYkkD3e4BE/wQLYuzYkkD3e4BE/wQLYuz44sz0JvhM/NgiNuz44sz0JvhM/NgiNuzHhoD087xE/Hl4uvD4hkT0sHBE/J1E9vCShsD1MwhI/FmsfvDvrnD1aBxE/0XZ9vDZHkD38oxA/jt98vEGPqT26ahE/FA5+vLbcjT3uZA8/Iv+RvCvhmT2jNQ8/KsCbvELYgT06lA8/Gj6IvGKAgD0h9g0/G+eOvB3lbT0uqQ4/xi2EvNgOij0xQw0/UZ2ZvIIgcz0Hvg0/mXxYvP+ugj1RtQw/2XRrvP7AYD08ww4/jRxGvPuuaj0pFA4/qM8FvPuuaj0pFA4/qM8FvKAJVj0sMg8/I4Xmu6AJVj0sMg8/I4XmuzkOfz3s7gw/eZUZvDkOfz3s7gw/eZUZvEviWj2zQw4/cPS2u4I7dT0q8gw/tZLau20oQD1Hiw8/RMKWu/mQPD2Z4Q0/6jk3u2VCaz2LXQw/XmIBuzAgLj0FLAw/RBpPPHRzZj2DJQs/ujEUPGb3Jz2zYwo/jnLpPEHrYD1HtAk/qY28PPs4ET33dAY/FOJFPWcCRT2lpwY/wMovPeo8Dz33pgE/gSZ9PdXIPD0P4AI/B+hlPQNvHj3Qav8+xx6BPR3S/DyJZv0+XzqCPbTdPD0ttQA/D0t3PX5lJD13h/w+bXl5PabqNz3n2/0+KRN2PYZ4ET1BOPs+yIV7PeD9JT2KOfs+blRxPeD9JT2KOfs+blRxPbwJGT1KPfo+zAF0PbwJGT1KPfo+zAF0PRi8Mz0mOfw+1+huPRi8Mz0mOfw+1+huPUstJj3S0/o+2DRrPR2dMj1Yuvs+CKxoPUyEGj307/k+7TJuPTCqJT3Pffo+RgdiPWOfGj2crfk+ZHFlPedwMT0ZUPs+HSRfPQLzIz0iyPk+HxJTPYCVLT3Ldvo+4IJPPT7UGj0cGvk+9iFXPU5NIj2hb/g+MdlAPUbIHD1L/Pc+q21EPQD1Jz1m4vg+GnM9Pb4PJj1w3vU+klIyPUnkLz2GDvk+bRU6PXSMNj1AHfo+tjZFPQL3Mj2z7vc+kKYxPc/QPD2LBPk+hE05PZl7OT30C/c+xEotPTKMQT0Od/c+hKEwPRQnOD1Vr/U+O1YrPXkwQz3pl/U+bw8tPX1JOj3ZUvQ+6GIsPatcQj09y/M+XBgvPQ+DND03nfM+44AvPYm5PT0XZ/I+ww80PfTGKj359/I+/zs4PYLiLj2Ba/E+Jw9BPbniIz3V6fI+4XA/PYIwJD065/E+gVZIPRjLHT0i//M+ZzRBPeykGj2LAvM+f15OPUbBGD1u+vU+cptFPR1REz0wCfY+cQpVPfUGGD26Ofc+n3hJPTnkFD1SsPc+jsdWPSGsEz10/Pc+WzJjPSxsEz2ZHvg+vnFrPU2AET0FEPY+htlgPTYwET0pEvY+TcpoPUe2GT0AfvI+bglZPZSoGT15QPI+f6lgPZLDJD2CPfE+QPNRPd5cJT1Z7vA+g5VZPUZZMT1doPA+OyVKPY3vMj3jSfA+GwBSPe8SQz0DzPE+olc7PX17Rj1Ck/E+FyBDPan8Rz1hd/M+Fik1PXRjSz2mW/M+5g08PdQRST04kPU+m1QyPVkbTD3BlfU+Vlg4PSQwRz34vfc+4h43PeEWSj0Z4/c+I4c9PXTWQj2Fj/k+YcdCPeG9RT3Z0Pk+uKFKPafWOz2B0fo+XD5SPX0bPj3gLPs+LXxbPW7rQD3Qm/s+X3VhPW7rQD3Qm/s+X3VhPeFySz0rBf0+UJ9mPVvAST1YHvo+e3hPPVvAST1YHvo+e3hPPZ70WD3rFPs+ffBQPdK7Tj0iD/g+NyBBPdK7Tj0iD/g+NyBBPVuwYD2ahfg+ui4+PWZhUT05oPU+O8Y7PWZhUT05oPU+O8Y7Pb2xZT1CkvU+cR43PUaLUT1GRfM+6NpAPUaLUT1GRfM+6NpAPRSuZz0XxPI+h7Y+PT6oTD14YvE+7kNJPT6oTD14YvE+7kNJPcmrYT19lPA+Wd9KPQ+INT0d/O8+FPBXPQ+INT0d/O8+FPBXPUKFPT1OGe8+siddPQYFJj0DpfA+6RdfPQYFJj0DpfA+6RdfPQdLJz1z5e8+MhllPdLpGD1uB/I+cf9lPdLpGD1uB/I+cf9lPST+FD1defE+p9FsPaxRDz1CE/Y+X11uPaxRDz1CE/Y+X11uPUTHBT3BEPY+Fk12PS2BET25RPg+mxNxPS2BET25RPg+mxNxPbWbBz1Ht/g+enR4Pf3f4DwdoPk+VsiBPXTJ3zz09vU+bkyCPbGZDD3wTvA+WkJ4PZwaBD3in+4+tu6CPU6cKT3PUu4+AeVtPVv5TT2ALO0+CRNjPW1SLD34NOw+Jax3PVT/YT3pgeo+0jdnPQexmj0mH+o+/DdDPVychj1JhO4+UFNIPQJKqD3qGu8+6eslPXd4qD2LBvU+4HkZPecejD05YvE+KUI0PQ9Pyj1wseg+IjDxPLyryj12nPE+fRqtPKbq3T2tTuM+EAH5Oqbq3T2tTuM+EAH5Olu+4T2+a+4+wBbYulu+4T2+a+4+wBbYuqDz3j3C9+I+5PVbvOfvuj2UM9g+izc4vEuD2T1ds+I+ZXnZvEKv5j1GLu4+7Nt4vKvo4j39y+0+4hLpvBAj3D3Ba/o+RkFwvOeB2j06uPk+vx7wvKrQzj2cJAM/vJlUvMLy1D0Zc/o+wWEvusLy1D0Zc/o+wWEvut0svD0bJQQ/Coc9O90svD0bJQQ/Coc9OxnrvT0UEvs+N1CwPBc1qT3XEAI/GgLmPBYyoT0AZPs+Fz0kPQkXkD2xSQA/kOo5PX1yhT2vuPk+eD0zPdL0eT2UYf0+CftLPSliij1TVvU+wjspPUa+Xj1tFAA/GZpkPRjkbz1HBgI/0cFQPWO1hT11/QQ//j8PPULKkz1VYAc/Cy5zPBcakD0RLAk/SD6AO8RHpT1Hhwc/x6A0us7Tiz0LpQo/i7KSuwkymj1DRAk/id6lu+5PjD1lbAs/CTADvM6Vmz3arQk/p6bpu4w7jj0Xmws/+3EqvIw7jj0Xmws/+3EqvD2dmz3+CQo/e7AcvD2dmz3+CQo/e7AcvPcOkD25fQs/fmB6vFwvnD2lCAo/AntuvEeFlj3uLQw/vEqfvFpuoT0Dxgo/ccSavDl8pD3RXQ4/qY+evNQgrT15EQ0/kr2cvCSMsj0J2BA/+Ph9vAsQuT3Xqw8/5M9/vEeJuT2+XBI/as4cvKdjvT08ZBM/Z5aGu6djvT08ZBM/Z5aGuwZ9vz3ORRE/FxshvG/4wz2qRxI/CKuQu2/4wz2qRxI/CKuQu4mswz0uxg8/3m8hvF2ixz0TnxA/yRGVu12ixz0TnxA/yRGVu1mOvj0BQQ4/6i52vNiOwz2ajQ0/FLEYvJiFxj03Dw4/qPyHu5iFxj03Dw4/qPyHu+1+wD0p6Qw/aqRbvMkhvT0qggo/VxoOvNk5vz3nlwo/qYtXu9k5vz3nlwo/qYtXu2bPuj0OrQo/PaRlvKB5sz3+agg/iZYPvCFasz1X8wg/uZJcvC05tT2ZRQg/eYFUuy05tT2ZRQg/eYFUu701qD1RkQg/zxg9vOTzqD2ldwg/cYnKu+TzqD2ldwg/cYnKu8/Hqz0VVQk/TyuGvCEztT0Bogs/FTmPvN14qj1h2Ac/JxFXuz3ZuD1hXAc/fu/6t8LTwz0bNwo/2b8uunOcyT1DTQk/Xfgxu3OcyT1DTQk/XfgxuzMczD3uUg4/Oh3cuqr60T1xAA4/C19pu6r60T1xAA4/C19puxkSzj3TTRE/c4kKuwbf0z3DOxE/fXWCuwbf0z3DOxE/fXWCuxiLyj0uNhM/DFUDu7zOzz1cUBM/qgGKu7zOzz1cUBM/qgGKu2Tiwj26eRQ/V/LdukINxz3puxQ/JgmKu0INxz3puxQ/JgmKu8ltxT1+RBM/fh5MvG44zz3pzBE/T10+vNVTuz2xhRA/XQbBvMAZxz3sBg8/1OyxvPINqT3OQQ0/xrQMvfEemT0DIwo/baA0vYphuD1sqws/xAwCvRKXqz3Bigg/WP0nvW4yxT182gk/Aq7jvDWhuz1qcAY/cg0XvR6Szz1ROw0/CgWdvPlUzT28eAg/bbGuvKv+yj0XOAM/TCbyvBRR0j2FqAs/VyyJvB2azj0ThQg/jpk5vPR71D2J3Qw/GKYjvFXY1D26yg8/xZorvHWytz1J1P0+XJRhvTNrrz3ckQI/Ya9ivSdVoz1wzfs+5O+BveobvT2yivQ+SnNavcbavD0c8Ok++qxRvU6EpT2emvI+5i+AvVgjoz1oYeg+q8Z5vd40mD3aqd4+5zBvvUIQeD1ipNU+lqlPvZlCsT0H598+de5Ivdq0jz2CjtY+A3czvRkLsj3EL9g+wlDGvI7HaD1L09I+g7kcvZCrjT2iSdQ+ly2+vPPUSz1n/9E+5kExvZAdVD3Z49E+xysTvcvMSz0bVtE+pIEPvcvMSz0bVtE+pIEPvZhPOz0fEtE+OBslvevAND15fNA+iYkgvevAND15fNA+iYkgvY+WNj1dec8+08MhvXnITT2ra9A+socQvY4vRj27zcs+CfoovcY7YD1PFs0+4IEWvVVsZz2EvcM+4XM0vZZigz0J0cU+CbEfvbbNiz0me7c+RkNDvSmAnj1yz7o+rBcrvbbMpT2Rk6k+FWlIvQJsuz32IK4+UZ4vvW4pvD1E/J0+FRkwvTmcyD2T7pg+6HrUvEWazD0uL5g+93Fdu0WazD0uL5g+93FduzSawD0vF5M+y/XlvBnwxz2W+ZI+i/ZCuxnwxz2W+ZI+i/ZCu6lwxz10nYc+HcDwvAUS0T34kog+ebo0uwUS0T34kog+ebo0u/n10z0WcnI+KWn4vEZp3z2/7nQ+Gko9u0Zp3z2/7nQ+Gko9u/jT3T0FoFU+hsL8vIb+6T05l1Y+dQVfu4b+6T05l1Y+dQVfu/4e4z3TUj4+eq76vCG87j3Emj0+DeGBuyG87j3Emj0+DeGBuz2s4z1AHC8+8evuvPWt7T3oTS4+KOGJu/Wt7T3oTS4+KOGJu/2W4z3k4is+X42uPEot4z1WFzs+FkrBPJfz3T3PrFY+2jfMPKsd1D1ZhXc+h6zNPFO1xz0l04k+ZgjFPFtewT3B95M+PCa0PNhkyj3OTJk+IGmaPMdfnj1q4AE/nFl/vXWBmD3jDAU/MDBxvf2Zpj3TvQQ/cHxgvaQyZD1HNhE/7TOlu1OtVj2OnxE/oG0SvFOtVj2OnxE/oG0SvDzecT1KfBA/MyjiuzzecT1KfBA/Myjiu+tYeT2R4g8/whhEvKJVWD0zXRE/j9ynvCwhHD2+xlY+I5vGvcLj6jzW/VY+yybKvbZgID1x8Ec+OqbEvcKd+TwZMEw+CSnIvenWEz1vNzo+PaW8veZX6jxWiEA+RUzCvU9D0jyfSUM+PEPFvU9D0jyfSUM+PEPFvQda0DxrYUM+YKLNvWpB3DwJ/00+6y3KvWpB3DwJ/00+6y3KvYeP2Tw5Q04+ajrSvdXvyTzb6VY+njXMvdXvyTzb6VY+njXMvTKQxTzrI1c+lEDUvUo6zTzIYVg+P4HnvQ8d4zyXVE4+/IjlvdS+2jzgTVo+lGgBvs898zw7g04+9ngAvku06TzPHFw+HrwQvrejAj1buE4+Q94PvgZt8jw7N1w+C2wgvtDrBz1GSU4+DacfvtzO6zyElFk+pxMvvhnXAz0hv0w+vIkuvpxN+Twk3T4+kUQtviaE/DyksT4+BBUevuIR8zyqaz8+sAkOvsYt5TyJxkA+ivH8vS5b2Dw0SUI+WzjhvcN2HD5LmrA+XEePu8N2HD5LmrA+XEePu1iaJz5daas+EBWOO/nBMz4616Y+p7c7O4obJj74Mqk+ZHAjPFA7KD697as+VZlfu1A7KD697as+VZlfu93/Mz4wQac+8qMgu93/Mz4wQac+8qMguwXYKT7mdKo+/ZcYvLWhMz7TzKY+8ir/u1UOID78HK4+gJoxvIfJKD4PSqg+AA5tvFTXHj7MKas+Ua2KvLy7Mj5UaqU+XcFEvMtzJD5v6aA+KE6PvB5WMD7K+aA+Bk9WvHeRGD4Y2aA+zXSzvAb+Ij661p4+kVNLvBy9Lz4dnJ8+P/sPvO4+Fj5TEZ4+8lWDvJbeHz6cB54+uvmcu5beHz6cB54+uvmcuzKOLz7GL58+6SwsuzKOLz7GL58+6SwsuxvwHz6jup4+6ffJO7OgLz4hpJ8+EYpmO2UxIT4HEqE+RiNLPMs2MD5uCKE+dT8APK3XMj7hBqE+6ovmO8DhMj61e6U+FaflOx0bNT6X1qQ+bAXVO9W1Nj4hWqQ+cjPNO9W1Nj4hWqQ+cjPNO6beNT7wC6Y+ZpgqO0sQNj4HcKY+vI8iu0sQNj4HcKY+vI8iu1R1Nz5ReKU+g5QgO1R1Nz5ReKU+g5QgOwShNz4d2aU+T9cjuwShNz4d2aU+T9cjuwShNz4d2aU+T9cjuxKwOT4VzaQ+RDoeOxfdOT6HLKU+La4ku321OD64kqM+kujhO4pQPT605KM+z14bO7mdPD5c8KI+TnPYO2+/QT7MvaI+oOwaOyZ2PT7UP6Q+9gMluzjmQT7aGqM+NhAlu5ANPT5V46M+UmLvu0t1OT4CzqQ+0Jfwu4Z9QT4RwKI+GTbvu6ZOPD4636I+rWkyvAe/QD4PwaE+SzYyvGazOD4jwqM+WdEzvIDbOj6x4p8+zEQ1vOsuNz4Vp6A+qcw3vCJFPz7o154+P+g0vN2MOj7u0p4+wTP0u1nbNj7llJ8+xbX1u0/pPj5s1p0+9vLxu5k/Oj4BG54+vAYru0uCNj6OB58+v1nUutKdPj5YPJ0+7XnVuvycOT6YfZ0+g5v3OrRVPD56BZ0+qIM8OyfROD5D4Jw++KrEO3cINz6jQp4+zr8+O0XdNj51gJ0++OXcO4YJNj7lA58+MbC8O6mBNT5apJ8+fVlmO10dNj6+K54+rq0OPIo0Nj7B758+se4KPEe+NT56rKA+g6zjO35GNj7B8J4+tZ8vPMK3OD6B5aE+428ePBQ2OD7TY6A+nX9DPFCKOz4oo6E+UIYdPLJdOj6HMqA+BiREPG0GPj7coqA+8MMdPCI+PD6ndJ8+/udCPPfcQD4Mj6E+nwTfOxRAPj7qEJ4+b3EIPHKaQD6zJ54+lLTbOyKHPD6njZ0+LEEtPMauPT74PJ0+/C65O2X9Pz5ISZ0+4gxcOyoHPD4I1pw+ufkMPFLlOj5IkZw+tbbbO6BsOj5DX5w+UQ49PEvROj7q8pw+MhBTPJDjOD7lGpw+2tBfPA6WOT7+HZw+h0AoPGunOD7A8Js+EfRMPNQMOD78Tpw+PrIhPEuTNz48CJw+7SxRPGGpNj6wypw+BqcoPKe8Nj6oYpw+xidNPJQsNj6uUp0+nDA+PJCRNj6eopw+ojVgPCRWNj5a7p0+gqNUPCa8Nj7TGZ0+Wf9vPAuzNz4x+J4+n0JlPFmJNz4QCJ4+Ao14PIQ8OT4XzJ4+2eZmPNlmOD7AuZ0+NDR9PLSfOj5+S54+H9xkPBx0OT4nlp0+Tll4POolOT6Hjpw+dnVvPAu3Nz6lnJw+EZZ5POaFNz6DMZw+Y8RrPA5xQz5Kvpw+yFkhOwEXQz6hhZw+QOgfu8JTRz4OwZs+8lMMO64VRD4hkp0+l9DEOx0QSD7sa5w+ZAm2O2C4RT5qaqA+0KLAO/X9ST7svJ4+0y2xO2lPRj4xZqE+9JgTO3CcSj5WjJ8+lMUDO/lxRj6OvaE+cCwluz3ASj421p8+GfIlu5kJRj6VZ6E+7knuux1aSj4Gjp8+zdTnu/5KRT6/daA+VGIxvLWaST54wJ4+jZYrvC26Qz4vup0+7g40vJLqRz7RcZw+vh0uvJc7Qz5B25w+P3Dyu21HRz7KxJs+UjrsuyIIRz6hjps+CfQlu87rSj79kJo+EVTcu6mCSz5lAps+V0kfvGbcTT5cvpk+r6DLu6awSj5Oc5o+VSQnu0TTTT5Rq5k+oaUouxD1Sj6DlJo+z7TUOrPrTT7Fwpk+iCqMOg+gSz4RBps+AmCXO87PTT5TI5o+6tJgOyyTTT7+k5w+aeCSO7VuTz5+C5s+TZ1aOx0/Tj7xEp0+mWXEOsI9UD5M4po+03+BOjRqTj6TQZ0+Sa8nu2BwUD4G6Jo+s0Qpu+EHTj7cFp0+z7vYu/0UUD445po+OYbJuzhBTT5dmJw++y4dvBkwTz5sD5s+UgILvAayTT61Hpo+m14MvO2XND7B+qA+D3vYO+2XND7B+qA+D3vYO440ND543J8+dYg5O440ND543J8+dYg5OyVAND7mdJ8+jyAhuyVAND7mdJ8+jyAhuyVAND7mdJ8+jyAhuzRcMj6MzJ8+R+pGOzlMMj6VYp8+HBYpuzlMMj6VYp8+HBYpu+FqMj4DyJ8+HWsGvC7eMj6Y/qA+Hs1HvE1iND6V2J8+P4j/u01iND6V2J8+P4j/u5S+ND4x9qA+UyM+vJS+ND4x9qA+UyM+vNVxNj4xWKQ+MFY3vNVxNj4xWKQ+MFY3vL3YND7BzKQ+i7M8vDk7Nz4PdqU++57zuzk7Nz4PdqU++57zu46tNT4PBqY+vzz4uxPOEz5lMp4+6rKavJlEET4s3p0+iAeavD6SFT4h4KA++SXAvB0BEz644KA+GxvIvLBKHD5r3as+Mc+RvCYoGj6wgqw+xsCVvA3cHT5Ula4+9uNNvCckHD64fK8+lS9HvMLBGT4GMbA+AlpUvLmGFz49Uq0+uAyavKHMDz4Y4KA+flXRvOlYDj7K350+svSmvMtYsjwdJOE+y/OTPT7BGzshjuM+S+tTPQAE6jkVceM+S+tTPVhjjDomuOQ+j65tPaTeDbv0i+Q+DK1tPTg1hDo3TuI+1mOUPcQMFrsLLuI+DEKUPbQXgTp29uE+axCZPbQXgTp29uE+axCZPUcqGbvL2OE+cNmYPUcqGbvL2OE+cNmYPSOvcjrkXOI+bUibPWrqILtJOuI+9MyaPWB3wjlbxeQ+GxGiPSOkabtYh+Q+rSGgPdALFrpS6Oc+2qeqPfKjsrtctec+Q+6mPcBpjrhXqOs+D8+zPUyUkbvwOus+tsmwPScgybppA+4+RiexPRKx8bswvOw+SiqsPWrrA7tURPE+bhKlPTSGCLwQE/A+aWyfPbTwW7tTd/Y+O2+TPdmINLylbvU+mZWNPc70Wrv4H/s+5vCKPUJcNby0pfo+6GqHPWZYmruLWwA/lc6CPROUarwTaQA/2FGCPRycnrv5vAU/wMlePaKWaLyxHQY/LQpZPcK527vBvAo/fVILPayWk7wpyAo/QuIGPYDG/bs3rQ0/HK6NPEZro7xVFw0/YT2CPGbuMLyBBhA/0tszu2buMLyBBhA/0tszuyQG1bxOYw8/6ctvuyQG1bxOYw8/6ctvu7Q2MbxuGhA/fpzAvPR+1LyJrA8/qOu+vBfwUbwF3g0/XtIxvVU49byllg0/J3cvvc1BSLz+ygU/fLySvQuK67xO6gU/4nORvZD0VbycIAE/ZnGlvc88+bxBdAE/STyjvcyuW7ybW/g+qFiwvQv3/rzDE/k+F/+svdPQU7waP+4+YEixvbw897zq0e4+cP2svQ30Qrxqq+Q+h/uovS4l57yEyuQ+uVOlvVKHK7x6ptw+drSYvW7kz7y+Ytw+qciWve6f9ruI0dQ+z1J3vUKCn7wsjdQ+lFB2vVnZqbse7NA+HFRPvX5xcbwE2dA+5pJOvQCujLtEvM8+S1pBvXQHVLyLvc8+pnpAvaa0gbuVAM8+tV08vaa0gbuVAM8+tV08vd74SLy5Cs8+Bn07vd74SLy5Cs8+Bn07vX67hrtuys0+Rhw/vVT3TbwD2s0+JUA+vY47p7twXMk+7lpNvQlTbrz0fsk+yQRMvVJo7bt9bb8+jX9qvcYbmrzDyL8+CylnvaC8J7xF1LE+7/yHveAEy7ztP7I+uQCFvSI3WrxDVqM++86ZvWJ//byspqM+Q9SUvaSPgbzN3ZQ+TbuovcMzE73N4ZQ+YvChvZRyjLwn/IY+Ywq0vbMWHr0+WYY+2rWsvV7SibwRgXQ+UOW9vX52G73nIm8+G4W4vbc6G7yd7mc+XGfHvfWCvrxxpmM+hTDGveSxqbuo+2E++A7LvWJCcLy2IV8+AkjKvebKWbt2XF8+E5HNvebKWbt2XF8+E5HNvfJ1M7y+I10+S8XMvfJ1M7y+I10+S8XMvSAiRbswXF8+K87VvY8hKbynN10+Z/XUvZhfVrt+kGE+a0XpvUvAMbwUS18+GFDovfipdrtg8WQ+aGYCvnvlQbxQeGI+MdoBvm5yjLtfEmg+lM8RvuwCU7y7bGU+FTMRvlZbl7u0kmg+xJkhvtTrXbyS9WU+2+ogvnp/lLvXrGQ+YkcwvvkPW7wti2I+41kvvnS4gbtVTl4+mFA6vvNISLye1l0+IjQ4vg5Mv7sgmlU+2PE9vkbugrxpWVY+/CE6voPk6buSdUo+ZoA+voI6mLwrBks+nzw6vlxG3Lv7AD8+A/s8vm5rkbyiST8+FuI4vl0Aqbt5MDY+v3E4vt2Qb7z7XDc+lxs2vn37urvbQDE+o0Etvv7FgLwJFTQ+X1osvuC1tLvW4i4+aV8dvl5Ge7yuMjI+Fu8cvjyxp7vouy8+LLoMvrtBbrwuBjM+DokMvgSvmbv8eDI+4Wr5vYI/YLzOgTU+cHD5vXyPi7sUejU+ENbcvfsfUryMPDg+hT3dvXzzgbvBmzc+wIrIvfuDSLxqLTo+ij3JvSQehbtvzzc+IZy/vSQehbtvzzc+IZy/vaKuS7w1UDo+U3XAvaKuS7w1UDo+U3XAvQobqLtf3TQ+gXW7vYmrbrzCUzc+d2y8vSeLAbw2si0+7hWyvWfTpLxF2y8+U2qzvca8bLy7QyA+WI6SvYMCCL1FRR8+X2iSvaQEKLx5lhI++rEmveRMy7z9rA8+kVEgvboJFrzpeAw+JpSpu7oJFrzpeAw+JpSpu/lRubwGlQo+s56gu/lRubwGlQo+s56gu8lRJrzI7w4+u/noPAeaybyKGA0+EaHhPDdIe7wLkRc+uTNhPTtID73yURY+3tNcPZrYirwBECM+bnKPPbp8HL0NTyM+1wSNPSasmbxaNzQ+Ev2gPUVQK72FUjM+HW2hPXxnmrwGalY+ImSxPZwLLL1owFQ+u0OlPUDolLz/EHg+8+OtPWCMJr0u1Xc+Q/CkPWpFiLytqok+qnygPYrpGb1VpIk+l3aWPZcXd7zcBpY+beiUPQY9Db1rsZU+dGSLPbNKULzyNaM++UKHPfKS87wMQ6M+07l+Pfw+I7wUt7E+01VyPTyHxryN2bE+qHJlPdie77u9Er8+YDZOPawXm7wZA78+rP1GPcv+pbugEsk+gBkpPUuPbLzlWck+ldImPcowhrvUq80+DfobPUnBTLzJ5M0+iuQZPZyRd7tz8c4+Jr8aPZyRd7tz8c4+Jr8aPU1ZQrxUJs8+NJIYPU1ZQrxUJs8+NJIYPQcUabvCps8+dqcgPYIaO7xC3s8+kZ8ePWJGUrtdudA+q0EvPbCzL7yC+tA+P8gtPa6pF7vnaNM+qR5SPVZlErzMv9M+feZRPfipYbokmtc+UKd6PXyLxbvu/Nc+Vi97PSRJUTp5Dd0+UxiPPWqdMbvtTt0+ODSPPV2asjoZr98+ND2TPTxPz7pNtt8+CTuTPX1Vvzr+F+A+CBiTPX1Vvzr+F+A+CBiTPfzYtboyFeA+ghSTPfzYtboyFeA+ghSTPeaBwjrr198+r66PPSuAr7pU2t8+BayPPTJGyTqiEt4+n3NtPZT3obpSON4+gXNtPblZLTs7iN8+S+tTPe7igDpQoN8+S+tTPfi+FLqZ+N8+S+tTPfTQCrvhUOA+S+tTPYN9fbuUyd4+WHNtPZ3/1LvUWt8+L3NtPVodhLvHJuA+dqaPPaZa3Ls9c+A+5qCPPXYGh7smWOA+xQ+TPXYGh7smWOA+xQ+TPaqW4Lsbm+A+CAuTPaqW4Lsbm+A+CAuTPZoXkLtEDOA+qFyTPWJb7Ls5YuA+R36TPS47w7sHFt4+slWQPdPTFrwh3d4+LXeRPbnLObz5PNk+izx+PdpoiLwGfdo+3KSAPVSyhrzcAtU+XktRPbT0xLxBOtY+2/dQPTrClrwcwNE++XUnPY+82Lz4YtI+/g4iPSYcnryCjNA+vNAWPcC84ryXEdE+ghcQPcwuo7yn0M8+tGkQPcwuo7yn0M8+tGkQPQaj6byFT9A+X2UJPQaj6byFT9A+X2UJPfnPqrxYo84+7vERPbTW87zCNM8+oC4LPcILwbzCYco+4uodPUT8B70HPss+4isWPeMo8ryqr8A+Lkk4Pca9JL2vWcI+CqgpPcnsGL0zrbM+rc5RPfSVTr3bgLU+ryo+PcXKOr3PI6U+59tiPQ/Me72SBKc+/P1GPTirXL2C8pY+zK9mPbUMlr2ZM5g+rJY2PYwqab1HOIo+P0p3Pcc1nL05zIo+T6dBPTWReL2Bang+DCGFPQRLpb3V/3g+qKNKPUebgb1dTVU+dLSFPb4wrb1S2lU+VUpMPb7ug73BkDU+TOeBPVk1sr39zjc+98JEPV38gL1H7yU+f9lmPVu6s72Cjyg+TakzPe7aer3X6xg+/Mk7PdA2s728hRs+HMAaPavbhr2QqwI+U+IYPd5JkL2O1tg9U/XrPMbVNr04DgE+nXkwPXBMsr3nSAQ+CksBPRJisb0jGNo98avPPCk1yb0dfgQ+5iKDPESuzr19XB0+r46VPA+8w714P9c9OW5hPF02z72YAP89aBjSul02z72YAP89aBjSuhng1r13Nx4+SsOEuxng1r13Nx4+SsOEu6KMx71BksE9s7hdOqKMx71BksE9s7hdOvT6yL3QDQA+WouuvGvbzr0gQR4+dufWvH4aw73+tMM9Py+GvG/qsr2ubv89MgUavUXXs73qvB0+KNQ9vZn9sb2JY8M9d2zsvFUOiL29wP897do7vYfYd70XgR4+clJxvWcwlL1Mf8I9a2MGvXRkOr1mCQA+rLBdvWXGbL0Qm8E9mZAWvWruF71ibO89kO7/vGI2Sr3Ifr89ADq/vD2aDr2csOk9zW7Nuj2aDr2csOk9zW7Nun2LQL0tN749MJ3nOn2LQL0tN749MJ3nOnONEL1OVvY9irjDPOJNPL2Ke9I9AtClPFRjXr37lNc9Wh8EPWd4R70ff8k93KGyPFTCTr0zg749bZKdPMKiZr30qss9kRf6PDwVb736Xr49xz3lPEwekr2oDsw9wanfPDTrsL1ccsw97zvFPK0RlL2u/b093qfNPL2YsL1hnL098xG2PJnNlb0fWLE9iJq8PFJrsL3g+bA9vYOnPMJfdr1etrE9VrHRPL5Nl73hvqY9vJyrPLCJsL3IbqY99QeZPJQjfL36Dqc9hDG+PJsHnr2Sm3A9LhhkPHfBpL1juRM9yO3hO0vpi71Vu3A9QRN5POklsL3Qe3A9HB1PPCLCr70PGhQ9mVTYO45mu72kAXU9uunaO/5Pt702PRU9JQVDOx19v70KY6o9bygqPMXdwL1vVYY91pT/ucXdwL1vVYY91pT/uecuur07MRY9x6buuucuur07MRY9x6buul52vb1wdoc9CbY+vELSt72/bxY9Khviu15Bsb1LPYc9ALqjvCWFsL0eLhY9Fg82vDe8nL2BsoY90O22vAZIpb1ryxU9lClCvA03iL23J4Y9niHKvOcKmr27aBU9E0ROvEI7d735CIU9uc6CvBEgkr1WJhU95cYMvHh/b71JSoQ9+I0Aunh/b71JSoQ9+I0Auro5j73JuhQ9lBU0u7o5j73JuhQ9lBU0u7MFgL2onXQ9OccRPJYHkr1U9xM9gHFKO54HXL3+oao9D/JwPJe+WL3yabM9w/yWPBYxlb17UgM9ZsoWO8zAmb22WBM99obrO9wxnL0IFwM9oOy/OzDanb2acO48DnisO+vtpb3GjQM96aa7O/mpr72FBAQ9MWG3O+G5pr1nfO88mL+rO5SZr70yiPA8JAerO35Jp71zW9Q8jATgO35Jp71zW9Q8jATgO/YEn70ZONM8kKPeO/YEn70ZONM8kKPeOweOr73NftU8i2XhOweOr73NftU8i2XhO0aMp72Z94A8kiurPKmIr71pLII8EjCrPOWPn72MhX88DyerPEWMp73t0Wo8U1q/POOPn738cGg8Llq/PKmIr73cMm08eFq/PEWMp73HkVQ8XH3VPKmIr73x61Y8UH3VPOOPn72fN1I8ZX3VPEWMp72DLu07UbMbPeOPn73gg+g7RbMbPamIr70j2fE7XLMbPUWMp72ZXNo7ar4gPamIr72rBt87ar4gPeOPn72HstU7Z74gPUWMp70pAMg7Ht4lPamIr70Aqsw7Gd4lPeOPn71SVsM7I94lPUWMp72gYis7krNGPeOPn73RDyI7lbNGPamIr71utTQ7j7NGPUWMp72VTKg4t1ZTPeOPn73rDIK4uFZTPamIr70SU2k5tFZTPUWMp71mfZK6RrtGPUWMp71mfZK6RrtGPeOPn738IqW6SbtGPeOPn738IqW6SbtGPamIr72er3+6QrtGPamIr72er3+6QrtGPUaMp71ExsK6oeAlPeOPn73ia9W6neAlPaqIr72oILC6peAlPUaMp72lZci6TakgPeOPn708C9u6SqkgPaqIr70OwLW6UakgPUaMp73HLsu6v2gbPaqIr70xibi6xWgbPeOPn71a1N26uGgbPUaMp70WZNK6fDvVPOOPn72sCeW6DzrVPKqIr71/vr+65zzVPEaMp70bZNK6/Vy+PKqIr72Gvr+65l++POOPn72xCeW6Flq+PEaMp70gZNK67z6pPOOPn723CeW6kTapPKqIr72Jvr+6S0epPLKJp714ntK6PILoO4Qdob3Ft+C68gvmO+H1rb0rhcS6iPjqO2GEp72pWKm6kkWNO0HQnb2jALy628eHO4I4sb2xsJa6SsOSO2mSp73dtc06gskvudXztL3FOOQ6TNkrOdXztL3FOOQ6TNkrOfwwmr3yMrc6GNsCuvwwmr3yMrc6GNsCuqLkp70ye1o70y/ou9mlsb0vz2M7nX7fu9mlsb0vz2M7nX7fu2sjnr00J1E7COHwu2sjnr00J1E7COHwu7AiqL1BALM7RtwlvLAiqL1BALM7RtwlvEWnob3tea87A4sovEWnob3tea87A4sovB2err2XhrY7iC0jvB2err2XhrY7iC0jvCcqqL0kQFQ8fgIkvAkEsL2oeVY8f9IgvEdQoL2kBlI8fTInvC/wp73OeLs8wqEXvC/wp73OeLs8wqEXvEaRn73lV7o8fJ8bvEaRn73lV7o8fJ8bvBdPsL26mbw8CKQTvBdPsL26mbw8CKQTvHRZp72yi+08f00avNJXnr0Sf+w8eRcgvBRbsL1TmO48hYMUvF6Dpr0HwQQ9hKYpvBZssL3xOAU95U4hvKmanL0dSQQ9JP4xvPVflb0hAgQ9n/D1u2+ckr2EvAM9YNwsu2+ckr2EvAM9YNwsuzqPl71b/Os8FdrduyADmb0x37k8Ss3RuyADmb0x37k8Ss3Ru/HSlL0dXuw8JVcZu/HSlL0dXuw8JVcZu1i6lb1m1Lk8hhODuVi6lb1m1Lk8hhODuVi6lb1m1Lk8hhODuSpRl73k5O08OqUJO865mL2KB9A8w5uJO865mL2KB9A8w5uJOxpSmb0cFHY8APqpPBpSmb0NbWA8AfS+PJxslb3GuUo8hcmoPJxslb0YEzk8r46+PBMclL25xNk7QEeoPBMclL3xD8U7hmW+PAQHlr1VYT080vglup1slb2g/4A6HV+oPJ1slb2g/4A6HV+oPJxslb0/HUs6NWG+PJxslb0/HUs6NWG+PBlSmb1JeMC6j8moPBpSmb1k5sO6E16+PBlSmb3rR8e6IurUPJ1slb2WBBU6tJbUPJ1slb2WBBU6tJbUPKtYmb0OGM+62WobPT1amb3YVs26gKggPVePlb1byqG543AbPVePlb1byqG543AbPdmflb2Xw865P6ggPdmflb2Xw865P6ggPQpLlL0/VCw703cbPf5klL109Bc72aYgPWSPlb13drg7DoMbPRMclL3grbA7OHHUPJxslb0dyCc8wZXUPBpSmb0tZks8zgfVPLFYmb2uveA7JaYbPTlamb29ds07c7EgPfVcmb3HUrk7E78lPZGflb0MFqc7B6UgPXTBlb0kmpM7ubclPZuclL3P5QE7K8klPfhMlr2zFyk7ntc0PS1vmb2b2B87GnI/PXq5lb0Bty06asA4PfhMlr0LKy66otw0PfhMlr0LKy66otw0PaVgmb12zAu4J51KPS1vmb17MaC6VHg/PS1vmb17MaC6VHg/PQldmb326ce6z9slPXbClb007fW55dQlPXbClb007fW55dQlPcAXmr0EbUs8AR/guxMKt72/eQU9qjrLu74/ub1VWQU98NDhur4/ub1VWQU98NDhugmItr0DK+88NMa7u8q0uL3wzu88Yu27usq0uL3wzu88Yu27ugJDtr3BPL08iMO1uwJDtr3BPL08iMO1uwsGub3nhL0802slOgsGub3nhL0802slOgsGub3nhL0802slOoaltb0UCFI8YnjHu7seub3FskQ8vR+EOYTLur3IuOk7iJqoPIXLur13mdQ7eXe+PLeCub2MhL06TKWoPLeCub2MhL06TKWoPLWCub1jz1I8UxOpPLWCub3r3kA8fZ6+PNextb3mcn08mCKqPNextb2Ul2c8kPu+PDvLtb3ActM8B0iYOzvLtb3ActM8B0iYO5cOtr0FE/E8GGciOxKNtr0NyAQ96twiO9extb39Z1I8gQrVPLWCub1tWi8825vUPGartb3xhu47XqYbPemptb3jO9s7erEgPblgub2fRsc7LIMbPetQub1c3bU7F6UgPaWdur3BQUo79XcbPUqEur2E0TU75aYgPcZgub1yQBU5/nAbPcZgub1yQBU5/nAbPYLLur1l5L87hnjUPLeCub1D/4U6Yp3UPLeCub1D/4U6Yp3UPLWCub0tf6E6k3C+PLWCub0tf6E6k3C+PNextb1YNJC6Qu/UPNextb1fxIy6Imm+PGurtb31EZi682obPeSptb1AUpa6jaggPSentb0455C629slPaVQub2/Tms4TKggPaVQub2/Tms4TKggPdMuub3QW6G3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iYdoP0mcvT7AAdg+wzQ/Prg+Yj8i9T0+IbBbP8InOj7Ml1M/ZxA3PoEISz9mBQ4+xq9IPxJVzD0DWkY/zqnqPhDAlT7wl9c+aJaYPjwoxj643Z4+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8LDQoOCw0KDgsNCg4LDQoOCw0KDgsKDQ4LCg0JCwoNCQsKDQkLCg0JCwoNCQsKDQkLCg0JCwoNCQsKDQ4LCg0JCwoNEwsKDQ4LCg0TCwoNEwsKDRMLCg0TCwoNEwsKDRMLCg0TCwoNEwsKDRMLCg0TCwoNEwsKDRMLCg0TCwoNEwsKDRMLCg0TCwoNEwsKDRMLCg0TCwoNEwsKDRMLCg0TCwoNEwsKDRMLCg0TCwoTDQsKDRMLChMNCwoNEwsKEw0LCg0TCwoTDQsKDRMLCg0TCwoTDQsKEw0LCg0TCwoTDQsKDRMLChMNCwoNEwsKEw0LCg0TCwoTDQsKDRMLChMNCwoNCQsKEw0LCg0JCwoNCQsKEw0LChMNCwoNCQsKDQkKCxMNCgsNCQoLCRMKCw0JCQ0KCw0JCgsJEw0KCQ0TCAkTDQgNCQ4ICQgNEwkNCA4JCBMNCAkNDggJDQ4ICRMNCAkBDQgJAQ4ICQEhAQgJIQgBCSEIAQkhAQgCKwEhCAIBCCErAQIhJQECJQgBAiEAAQIlIQECISsBAiUAAQIlIQIBISUBAiUhAQIlIQIBJSEBAiUhAQIjJQECIyUBAiMAAQIjAAECJQABAiUAAQIfJQECIx8BAiUfAQIjJQECIy0BAiUfAQIfIwEfAiUBAiMfAR8CJQECHyMBHwIlAR8CJQEfAiUBHwIlAR8CJQEfAiUBHwIjAR8CIx8BAiUfAQIlHwECJQEfAiMfAQIAHwECJR8BAiUfAQIjHwEAAB8BAAAfAQAAHwEAAB8BAAAfAQAAHwEAAB8BAAAfAQAAHwEAAB8BAAAfAQAAHwAAAB8AAAAfAAAAHwAAAB8AAAAfAAAAHwAAAB8AAAAfAAAAHwAAAB8AAAAfAAAAHwAAAB8AAAAfAAAAHwAAAB8AAAAfAAAAHwAAAB8AAAAfAAAAHwAAAB8AAAAfAQAAHwEAAB8BAAAfAQAAHwEAAB8BAAAfAQAAHwEAAB8BAAAfAQAAHwEjAB8BAAAfAQgJHwEICR8BCAkBHwgJAR8ICQEfCAkBHwgJHwEICR8BCAkBHwgJAR8ICQEIHwkBCB8JAQgJHwEIHwkIAQkfAQgJAggBCR8ICQENCAkBHwgJAQ0ICQ0OCAkNDggJDRMJCA0OCQgNEwkIDQ4JDRMIDQkOCAkNEwgJDQoLCQ0TCg0JCgsKCw0JCgsNCQoLCRMLCg0JCwoTDQsKDQkLCg0JCwoNCQsKDQkLCg0JCwoTDQsKEw0LCg0JCwoNCQsKEw0LCg0JCwoTDQsKDQkLCg0TCwoTDQsKDQ4LCg0TCwoNAAsKEw0LCg0ACwoNEwsKDQALCg0ACw0KAAsKAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALCgAACwoAAAsKAAALCgAACwoAAAsKAAALCgAACwoAAAsKAAALCgAACwoAAAsKAAALCgAACwoAAAsKDQALCg0ACwoNAAsKAAALCg0TCwoNEwsKDQALCg0TCwoNEwsKDQALCg0ACwoNEwsKDRMLCg0TCwoNEwsKEw0LCg0TCwoTDQsKDRMLCg0TCwoTDQsKDRMLCg0TCwoNEwsKDRMLCg0TCwoNEwsKDRMLCg0TCwoNEwsKDQALCg0ACwoNAAsKDQALCg0ACwoNAAsKDQALCg0ACwoNAAsKDRMLCg0ACwoNAAsKDQALCg0ACwoNAAsKDQALCg0ACwoNDgsKDQ4LCg0ACwoNDgsKDQ4LCg0OCwoODQsKDQ4LDgoNCw4NCgsODQoLDg0KCw4NCgsODQoLDQ4KCw0OCgsNDgoLDQ4KCw0OCgsNDgoLDQ4KCw0OCgsNDgoLDQ4KCw0OCgsNDgoLDQ4KCw0OCgsNDgoLDQ4KCw0OCgsNDgoLDQ4KCw0OCgsNDgoNCw4KCw0OCg0LDgoNCw4KDQ4LAA0OCwoODQsADg0LAA4NCwAODQsADg0LAA4NCwAODQsADg0LAA4NCwAODQsADg0AAA4NAAAODQAADg0AAA4PAAAODwAADg8AAA4PAAAODwAADw4QAA4PEAAODxAADg8AAA8OAAAODxANDg8QAA4NDwkODxANDg0PCA4PEAAODxANDg8QDQ4PDQgODw0IDw4QAA8OEAAODxANDg8NCQ8OEAAODxANDg0PCQ8OEAAODxAADw4QAA4PDQAODxAADw4QAA4PAAAODQAADg0LAA4NAAAODQsADg0JIQ0OCQsODQkIDQ4JCA4JDQgNDgkLDQ4JIQ0OCwoNDgsKDQ4LCg0LDgoNCwoODQsOCgsNCg4LDQ4KCw0OCgsNDgoNCw4KCw0OCgsNDgoNDgsKDQsOCg0OCwAODQsADg0LAAsNDgoLDQoOCw0KDgsKDQ4LCg0OCwoNDg0KCwkNCQoLDQkOCAkNDggJCA0OCQ0IDggJDQ4ICQINAQgJIQEICQIBIQgCAQIhCCECAQACASEAAiEBAAIhAQACIQEAAiEBAAIhAwECAwQhAiEBAwIhAwACAwQAAgMhAAIhASMCAwQAAgMjBAIDIwQCASMhAgEjIQMCBAADAgQAAiMDBAIjAQADAgQAAiMBAwIjAQAEAgMAAgMBIwIjAQAEAgMjAiMEAQIEAyMCASMEAgQDIwIBIwMCASMDAgMEAAIDBAACAQMhAgMEAQIDIQQCAwQAAgMEAAIDBCECAwQAAgMEAAIDBAADAgQAAwIEAAQDAgADBAIAAwIEAAQDAgAEAwIAAwQCAAQAAAAEBQAABAMAAAQAAAAEBQAABAAAAAQFAAAEAwIABAMCAAQDAgAEBQAABAUAAAQDAgAEAAAABAIDAAQAAAAEAgMABAAAAAQCAwAEAAAABAIDAAQAAAAEAgMABAIDAAQAAAAEAAAABAMCAAQAAAADAgQAAwIEAAQFAAAEBQAABAUAAAQFAAAEBQAABAUAAAQFAAAEBQAABQQAAAUEAAAFBAAABQQAAAUEAAAFBAAABQAAAAUGAAAFAAAABQYAAAUGAAAFBgAABQYAAAUGAAAFBgAABgAAAAYFAAAGBQAABgAAAAYFAAAGBQAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYFAAAGBQAABgUAAAYFAAAGBQAABgUAAAYFAAAGBQAABQYAAAUGAAAFBgAABQYAAAUGAAAFBgAABQYAAAUGAAAFBgAABQYEAAUGBAAFBgQABQYEAAUGBAAFBAYABQQAAAUEAAAFBAAABQQAAAUEAAAFBAAABQQAAAUEAAAFBAAABQQAAAUEAAAFBAAABQQCAAQFAgAEBQIABAUCAAQFAgAEBQAABAUAAAQFAAAEBQAABAUAAAQFAAAEBQAABAUAAAQFAAAEBQAABAUAAAQFAAAFBAIABQQCAAQFAAAEBQAABQQAAAUEAAAFBAAABAUAAAUEAAAFBAAABQYAAAUGAAAFBgAABQYAAAUGAAAFBgAABQQAAAUGAAAFBgAABQYAAAUGAAAFBgAABgUAAAYFAAAGBQAABgUAAAYFAAAGBQAABgUAAAYFAAAGBQAABgUAAAYFAAAGBQAABgUAAAYFAAAFBgAABQYAAAYFAAAGBQAABgUAAAYFAAAGBQAABgUAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABQQCAAQFAAAEBQAABAUAAAQFAAAEBQAABAUAAAUEAAAFBAAABQQAAAUEAAAFBAAABQQAAAUEAAAFBgAABQYAAAUGAAAFBgAABQYAAAUGAAAFBgAABQYAAAUEAAAFBAAABAUAAAQFAAAFBgAABQYAAAYFAAAGBQAABgUAAAYFAAAGBQAABgUAAAYFAAAGBQAABgUAAAYFAAAGBQAABQYAAAUGAAAGBQAABgUAAAYFAAAGBQAABgAAAAYFAAAGBQAABgUAAAYFAAAGBQAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGBQAABgUAAAUGAAADBAIAAwQCAAMCBAAjAgEfAQIjHyMCAQABIwIAASMCAAEjAh8BIwgCAQgjAgEjAgABCAkCAQgJAggJDSMICQIfCAkNDggJDQ4JDQ4IDQ4JCA0JDggNDgkIDQkLCg0OCwkNCwoJDQsKDgsKDQkLDQoOCwoNCQsKDQkLDQoOCw0KDgsKDQkLDQoOCw0KDgsNCg4LDQoOCw0KDgsKDQ4LCg4NCw0KAAsNCg4LDQAACw0AAAsAAAALDQAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsKAAALAAAACwAAAAsAAAALAAAACw0AAAsNAAALDQoACw0KAAsKDQALCg0ACwoNAAsKDQALCg0ACwoNAAsKDQALCg0ACwoNAAsKDQALCgAACwoAAAsAAAALAAAACwAAAAsAAAALCgAACwoAAAsKDQALCg0ACwoNAAsKDQALCg0ACwoNAAsKDQALCg0ACwoNAAsKDQALDQAACw0AAAsNAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACw0AAAsNAAALDQAACw0AAAsKDQALCg0ACwoNAAsKDQALCg0ACwoNAAsKDQALCg0ACwoNAAsKDQALCg0ACwoNAAsKDQALCg0ACwoNAAsKAAALCgAACwoAAAsAAAALAAAACwAAAAsAAAALCgAACwoNAAsKDQALCg0ACwoNAAsKDQALCg0ACw4KDQsKDQALDg0ACw0AAAsNAAALDg0ACw0OAAsODQALDg0ACw0OAAsNDgALDQ4ACw4NCgsODQALDQ4ACw0OAAsNAAALDQAACwAAAAsNAAALDQAACwAAAAsAAAALDQAACwAAAAsNAAALAAAACw0AAAsAAAALDQAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALDQAACwAAAAsNAAALDQAACw0OAAsNAAALDQ4KCw4KDQsNCg4LDgoNCw0OCgsODQoLDQ4KCw0OCgsNCg4LDQ4KCw0OCgsNDgoLDQoOCw0KDgsNCg4LDQoOCw0OCg0LCg4NCw4KDQ4LCg0OCwoNDgkLDQ4JCw4NCQgODQkIDg0JCA4NCAkODQgPDg0IDwgJDQ4ICQ0CCAkNAggJAgEICQIBCAkCAQgBCQIIAQkCCAEJAgECIwgBAiMhAQIjIQIBIyECASMhAgEjIQIjAQACIwEhAiMBIQIhAQACASEAAQIhCAgBAiEICQIhCAkODQ4JDQ8LAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAAAQgJHwEfCAkBAiMfAR8CCAECIx8BHwIjAR8CIwEfAiMBHwIjAR8IAgEfCAIfAQIIAR8ICQEfCAkfAQgJHwEjAB8BIwAfASMtHwEjAB8BAAAfAQAAHwEAAB8BAAAfAAAAHwAAAB8AAAAfAAAAHwEAAB8tIwEfAQIjDw4QAA8OEAAQDw4AEBEAABAPDhEQDwAAEA8AABARAAAQEQAAEA8AABARAAAPEA4AEA8AAA8QDgAQEQAAEA8OERARDwAPEA4AEA8OERARAAAPEA4AEA8OERAPDhEQEQAAEBEAABAPDhEQEQAAEA8OERARAAAQEQAAEBEAABARAAAQEQAAEBEAABARAAAQEQAAEBEAABARAAAQEQAAEBEAABARAAAQEQAAERAAABEQAAAREAAAERAAABEQAAAREAAAERAAABEQAAAREAAAERAAABEQAAAREAAAERAAABEQAAAREAAAERAAABEQAAAREAAAERAAABEQAAAREAAAERAAABEAAAAREAAAERAAABEQAAAREAAAERAAABEQAAAREAAAERAAABEQAAAREAAAERAAABEQAAAREAAAERAAABEQAAAREAAAERAAABEQAAAREAAAERAAABEQAAAREAAAERAAABEQAAAREAAAERAAABEQAAAREAAAERAAABEQAAAREAAAERAAABEQAAAREAAAERAAABEQAAAREAAAERAAABEQAAAREAAAERAAABEQAAAREAAAERAAABEQAAAREAAAERAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAAQEQAAEBEAABARAAAQEQAAERAAABEQAAAREAAAEBEAABARAAAQEQAAEBEAABARAAAQEQAAEBEAABARAAAQEQAAEBEAABARAAAQEQAAEBEAABARAAAQEQAADw4QAA8OEAAPDhAADw4QAA8QDgAPDhAADxAOAA8OEAAPDhAADw4QAA8OEAAODxAACwoNAAsKEw0LChMNCwoTDQsKEw0LChMNCwoTDQsKEw0LChMNCwoTAAsKEwALChMNCwoTAAsKEwALChMACwoAAAsKEwALCgAACwoAAAsKAAALCgAACwoAAAsKAAALCgAACwoAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsKEwALEwoACwoTAAsKEwALChMNCwoTAAsKEw0LChMUCwoTCQsKEwkLChMJCwoTCQsKEwkLChMJCwoTCQsKEwkLChMJCwoTCQoLEwkKCxMJCRMKCxMJCgsJEw0IEwkUCAkIExQJCBMUCAkTFAgJExQICQETCAkBEwgBCR8BCAklAQgfCQEICR8BHwgJAQgfCQEfCAkBHwgJAR8ICQEfCAkfAQgJHwEICR8BAAAfAS0AHwEAAB8BAAAfAQAAHwEAAB8BAAAfAQAAHwAAAB8AAAAfAAAAHwAAAB8AAAAfAAAAHwAAAB8AAAAfAAAAHwAAAB8AAAAfAAAAHwAAAB8AAAAfAQAAHwEAAB8BAAAfAQAAHwEAAB8BAAAfASUAHwElLR8BJQIBHyUtAR8lAgEfJQIBHyUtAR8lLQEfJQIBJR8tASUfLQElLR8BJS0CASUtIwElHwIBJS0fASUtAgElLQIBJS0AASUtAAElAislAQIrASUCKyUBKwIBJQIrASUrIQElKwIBJSsAAQglIQErCCUBCAkrCAEJKwgJARMICQEUCAkTFAgJExQJCBMNCRMIFAkTDQgTCRQICRMKCxMJCgsKCxMJCgsTCQsKEwkLChMJCwoTCQsKEwkLChMJCwoTCQsKEwkLChMJCwoTDQsKEwkLChMNCwoTDQsKEw0LChMNCwoTDQsKEw0LChMNCwoTDQsKEw0LChMNCwoTDQsKEw0LChMNCwoTDQsKEw0LChMNCwoTDQsKEw0LChMNCwoTDQsKEw0LChMNCwoTDQsKEw0LChMNCwoTDQsKEw0LChMNCwoTDQsKEw0LChMNCwoTDQsKEw0LChMNCwoTDQsKExQLChMJCwoTFAsKEwkLChMUCwoTCQsKEwkLEwoUCxMKFAsKEwkLEwoUEwoLCRMLChQTCQoLExQLChMJFAgTFAkrCRMUCBMUCQgJCBMUCRMIFAgJExQICSUTAQgJKwEICSUBKwglASUrCCslAQAlASsAJSsBACUrAQAlKwEAJSsBACUrJgElJicrJSsBJiUrJgAlJicAJSYrACUrAS0lJicAJSYtJyUmLSclAS0rJQEtKyYlJwAmJScAJS0mJyUtAQAmJScAJS0BJiUtAQAnJSYAJSYBLSUtAQAnJSYtJS0nASUnJi0lAS0nJScmLSUBLSYlAS0mJSYnACUmJwAlASYrJSYnASUmKyclJicAJSYnACUmJyslJicAJSYnACUmJwAmJScAJiUnACcmJQAmJyUAJiUnACcmJQAnJiUAJiclACcAAAAnKAAAJyYAACcAAAAnKAAAJwAAACcoAAAnJiUAJyYlACcmJQAnKAAAJygAACcmJQAnAAAAJyUmACcAAAAnJSYAJwAAACclJgAnAAAAJyUmACcAAAAnJSYAJyUmACcAAAAnAAAAJyYlACcAAAAmJScAJiUnACcoAAAnKAAAJygAACcoAAAnKAAAJygAACcoAAAnKAAAKCcAACgnAAAoJwAAKCcAACgnAAAoJwAAKAAAACgpAAAoAAAAKCkAACgpAAAoKQAAKCkAACgpAAAoKQAAKQAAACkoAAApKAAAKQAAACkoAAApKAAAKQAAACkAAAApAAAAKQAAACkAAAApAAAAKQAAACkAAAApAAAAKQAAACkAAAApAAAAKQAAACkAAAApAAAAKQAAACkAAAApAAAAKQAAACkAAAApAAAAKQAAACkoAAApKAAAKSgAACkoAAApKAAAKSgAACkoAAApKAAAKCkAACgpAAAoKQAAKCkAACgpAAAoKQAAKCkAACgpAAAoKQAAKCknACgpJwAoKScAKCknACgpJwAoJykAKCcAACgnAAAoJwAAKCcAACgnAAAoJwAAKCcAACgnAAAoJwAAKCcAACgnAAAoJwAAKCclACcoJQAnKCUAJyglACcoJQAnKAAAJygAACcoAAAnKAAAJygAACcoAAAnKAAAJygAACcoAAAnKAAAJygAACcoAAAoJyUAKCclACcoAAAnKAAAKCcAACgnAAAoJwAAJygAACgnAAAoJwAAKCkAACgpAAAoKQAAKCkAACgpAAAoKQAAKCcAACgpAAAoKQAAKCkAACgpAAAoKQAAKSgAACkoAAApKAAAKSgAACkoAAApKAAAKSgAACkoAAApKAAAKSgAACkoAAApKAAAKSgAACkoAAAoKQAAKCkAACkoAAApKAAAKSgAACkoAAApKAAAKSgAACkAAAApAAAAKQAAACkAAAApAAAAKQAAACkAAAApAAAAKQAAACkAAAApAAAAKCclACcoAAAnKAAAJygAACcoAAAnKAAAJygAACgnAAAoJwAAKCcAACgnAAAoJwAAKCcAACgnAAAoKQAAKCkAACgpAAAoKQAAKCkAACgpAAAoKQAAKCkAACgnAAAoJwAAJygAACcoAAAoKQAAKCkAACkoAAApKAAAKSgAACkoAAApKAAAKSgAACkoAAApKAAAKSgAACkoAAApKAAAKCkAACgpAAApKAAAKSgAACkoAAApKAAAKQAAACkoAAApKAAAKSgAACkoAAApKAAAKQAAACkAAAApAAAAKQAAACkAAAApAAAAKQAAACkAAAApKAAAKSgAACgpAAAmJyUAJiclACYlJwAtJQEfASUtHy0lAQABLSUAAS0lAAEtJR8BLQglAQgtJQEtJQABCAklAQgJJQgJEy0ICSUfCAkTFAgJExQJExQIExQJCBMJFAgTFAkIEwkLChMUCwkTCwoJEwsKFAsKEwkLEwoUCwoTCQsKEwkLEwoUCxMKFAsKEwkLEwoUCxMKFAsTChQLEwoUCxMKFAsKExQLChQTCxMKAAsTChQLEwAACxMAAAsAAAALEwAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsKAAALAAAACwAAAAsAAAALAAAACxMAAAsTAAALEwoACxMKAAsKEwALChMACwoTAAsKEwALChMACwoTAAsKEwALChMACwoTAAsKEwALCgAACwoAAAsAAAALAAAACwAAAAsAAAALCgAACwoAAAsKEwALChMACwoTAAsKEwALChMACwoTAAsKEwALChMACwoTAAsKEwALEwAACxMAAAsTAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACxMAAAsTAAALEwAACxMAAAsKEwALChMACwoTAAsKEwALChMACwoTAAsKEwALChMACwoTAAsKEwALChMACwoTAAsKEwALChMACwoTAAsKAAALCgAACwoAAAsAAAALAAAACwAAAAsAAAALCgAACwoTAAsKEwALChMACwoTAAsKEwALEwoACwoTAAsKEwALEwoUCwoTFAsKEwALChMUCwoTFAsKExQLChMUCxQKEwsUEwoLFBMKCxQTCgsUEwoLFBMKCxMUCgsTFAoLExQKCxMUCgsTFAoLExQKCxMUCgsTFAoLExQKCxMUCgsTFAoLExQKCxMUCgsTFAoLExQKCxMUCgsTFAoLExQKCxMUCgsTFAoLExQKEwsUCgsTFAoTCxQKEwsUChMUCwATFAsKFBMLABQTCwAUEwsAFBMLABQTCwAUEwsAFBMLABQTCwAUEwsAFBMLABQTAAAUEwAAFBMAABQTAAAUFQAAFBUAABQVAAAUFQAAFBUAABUUFgAUFRYAFBUWABQVAAAVFAAAFBUWExQVFgAUExUJFBUWExQTFQgUFRYAFBUWExQVFhMUFRMIFBUTCBUUFgAVFBYAFBUWExQVEwkVFBYAFBUWExQTFQkVFBYAFBUWABUUFgAUFRMAFBUWABUUFgAUFQAAFBMAABQTCwAUEwAAFBMLABQTCSsTFAkLFBMJCBQJEwgTFAkLExQLChMUCwoTCxQKEwsUCgsTChQLExQKCxMKFAsTChQLExQKCxMUCgsTChQLChMUCxMUCgsTChQLChMUCwoTFAsTFAoLExQKEwsUChMUCwoTCxQKExQLABQTCwAUEwsAFAkTFQgJFBMUEwgVFBMIFQgJEyUICRMlFBMICQgJExQUEwkIFBMJCBQTCQgTFAkLExQJCxMUCwoTFAsKEwsKFBMLFAoLEwoUCxMUCgsTChQLEwoUCxMUCgsTFAoLEwoUCxMKFAsTFAoLExQKCxMUCgsTFAoLFBMKCxQTCgsUEwALExQACxMUAAsUChMLExQACxQKEwsTChQLExQKCxMAAAsTAAALEwAACxMAAAsTAAALAAAACxMAAAsAAAALEwAACxMAAAsTFAALExQACxMUAAsTFAALFBMACxQTAAsUEwALFBMACxQKEwsTAAALEwAACxMAAAsTCgALEwAACwAAAAsTAAALAAAACxMAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACAklAQgJJQEICSUBCAEJJQgBCSUIAQklASUtCAElLSsBJS0rJQEtKyUBLSslAS0rJS0BACUtASslLQErJSsBACUBKwABJSsICAElKwgJJSsVFBYAFRQWABYVFAAWFwAAFhUUFxYVAAAWFQAAFhcAABYXAAAWFQAAFhcAABUWFAAWFQAAFRYUABYXAAAWFRQXFhcVABUWFAAWFRQXFhcAABUWFAAWFRQXFhUUFxYXAAAWFwAAFhUUFxYXAAAWFRQXFhcAABYXAAAWFwAAFhcAABYXAAAWFwAAFhcAABYXAAAWFwAAFhcAABYXAAAWFwAAFhcAABYXAAAXFgAAFxYAABcWAAAXFgAAFxYAABcWAAAXFgAAFxYAABcWAAAXFgAAFxYAABcWAAAXFgAAFxYAABcWAAAXFgAAFxYAABcWAAAXFgAAFxYAABcWAAAXFgAAFwAAABcWAAAXFgAAFxYAABcWAAAXFgAAFxYAABcWAAAXFgAAFxYAABcWAAAXFgAAFxYAABcWAAAXFgAAFxYAABcWAAAXFgAAFxYAABcWAAAXFgAAFxYAABcWAAAXFgAAFxYAABcWAAAXFgAAFxYAABcWAAAXFgAAFxYAABcWAAAXFgAAFxYAABcWAAAXFgAAFxYAABcWAAAXFgAAFxYAABcWAAAXFgAAFxYAABcWAAAXFgAAFxYAABcWAAAXFgAAFwAAABcAAAAXAAAAFwAAABcAAAAXAAAAFwAAABcAAAAXAAAAFwAAABcAAAAXAAAAFwAAABcAAAAXAAAAFwAAABcAAAAXAAAAFwAAABcAAAAXAAAAFwAAABcAAAAXAAAAFwAAABcAAAAXAAAAFwAAABcAAAAXAAAAFwAAABcAAAAXAAAAFwAAABcAAAAXAAAAFwAAABcAAAAXAAAAFwAAABYXAAAWFwAAFhcAABYXAAAXFgAAFxYAABcWAAAWFwAAFhcAABYXAAAWFwAAFhcAABYXAAAWFwAAFhcAABYXAAAWFwAAFhcAABYXAAAWFwAAFhcAABYXAAAVFBYAFRQWABUUFgAVFBYAFRYUABUUFgAVFhQAFRQWABUUFgAVFBYAFRQWABQVFgALChMUCwoTAAsKEwALChMACwoTAAsKEwALChMACwoTAAsKEwALChMACwoTAAsKEwALChMNCwoTAAsKEwALChMNCwoTDQsKEw0LChMNCwoTDQsKEw0LChMNCwoTDQsKEwALChMACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAEICR8BHwgJASUtHwEfJQgBJS0fAR8lLQEfJS0BHyUtAR8lLQEfCCUBHwglHwElCAEfCAkBHwgJHwEICR8BLQAfAS0AHwEjLR8BLQAfAQAAHwEAAB8BAAAfAQAAHwAAAB8AAAAfAAAAHwAAAB8BAAAfIy0BHwElLQsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAA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AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAACt6n8/F5WqOQAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAEDrfz8BBaY5AAAAAAAAAAA86n8/RBiuOQAAAAAAAAAAlI9/PzjjsDqb0b85AAAAAAqBfz9Xs946Yct5OQAAAAAHkn4/xlpCO2WdKzsAAAAAaxh+P3ehiTvcUVQ7AAAAABYBfj+o55s7PRtHOwAAAABapnw/EaoNPC1/kTsAAAAAlWp9P3NG5TuY3Uo7AAAAAA1Yez8a71w8gBuaOwAAAACJcH0/Lzv2O84AIzsAAAAA60h8P7riOTwEik87AAAAALiFfj8TiJ87MeBsOgAAAAC2lH0/xlcFPN7WqzoAAAAAw9J/Pwn0NDoAAAAAAAAAAPG6fz9JH4o6AAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAUaZ/P7deszoAAAAAAAAAACeUfz/0stc6AAAAAAAAAACJBn0/FEgrPFyumDoAAAAAbK58P7e8QzwIQIU6AAAAAISYez91uG48ZpksOwAAAACzVXs/7J6EPA5VBTsAAAAAMPh5Px1JnjwAw4o7AAAAACH4eT9UTac86nNNOwAAAAAvkHs/1idPPPqYmTsAAAAAVER7P7wzazzrboc7AAAAAKrAfT8GP7U7mNhUOwAAAAB1oX0/F+3KOw+xSDsAAAAAiJp/PxrwyjoAAAAAAAAAAEaifz+JdLs6AAAAAAAAAADV8H8/lbByOQAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAI7wfz8PG3c5AAAAAAAAAAD/q38/YAGoOgAAAAAAAAAA/6t/P2ABqDoAAAAAAAAAAPCnfz9iH7A6AAAAAAAAAAAt3H0/4iO9Oy2LKTsAAAAALdx9P+IjvTstiyk7AAAAAHmufj+PjzY7KvcaOwAAAABrzXs/gIhVPKJzXDsAAAAAa817P4CIVTyic1w7AAAAALhtfD8D8yk8mntqOwAAAAA4Ino/ArOkPMEvODsAAAAAOCJ6PwKzpDzBLzg7AAAAACTgeT9B56g83qFYOwAAAADYBHs/gRiQPAbH9DoAAAAA2AR7P4EYkDwGx/Q6AAAAAPNAej/Rb6c8GY0DOwAAAABRZHw/CxxXPE79fDoAAAAAUWR8PwscVzxO/Xw6AAAAAJ7Tez+QOns8XN59OgAAAAAXh38/ntLxOgAAAAAAAAAAF4d/P57S8ToAAAAAAAAAAF5wfz8Gog87AAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAA7QF/P9kTfjsAAAAAAAAAABiFej8kVaY8B32QOgAAAABdSXg/IfPoPGMV3joAAAAAEsB4P66+0jyc+Sk7AAAAAOYoeD9WysI85mPgOwAAAAAjjnY/aXMHPe2mejsAAAAAtCZ3PxGr5TxM+dU7AAAAAMGHdz+QI6Q8HKX4O93rsjvNM30/eK/MOyFqmTsAAAAAe/p7PwekHzzdesM7AAAAAK5Xfj8dKdQ7AAAAAAAAAADNIX8/JDNeOwAAAAAAAAAAvF1yP9hhDT3EhJk8AAAAAPeddT+oMu08Fh0+PAAAAABrk3Y/gGvKPDtORjwAAAAAa5N2P4Bryjw7TkY8AAAAAJgLcD+5oBQ9jEvVPAAAAACYC3A/uaAUPYxL1TwAAAAAiGh6P6isNzwVMS48AAAAAKpBSD8N0wM+R86kPY7yCzylGno/Cy1OPNgpKzwAAAAAsSB0P3MX2TxX0qI8AAAAAOT2dT9w1K088U6TPAAAAADQ9ns/9SWBPAAAAAAAAAAAxwV7Px9HnzwAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAA+GXw/ZrB5PAAAAAAAAAAAPhl8P2aweTwAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAALf18P+C0QDwAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAABM334/OFqQOwAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAHzPfz/mDkI6AAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAgot/P6P76DoAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/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AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAA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AACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/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AAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAsMoyP7tlhz5K66Q8+2KLPDGyQD/N2mo+g+OSPAAAAAAihVI/AscCPkLtKj1JkgY8ZChSP/4FiT3hE3k97FlSPWQoUj/+BYk94RN5PexZUj1sADc//mxSPmd3Vj27m9886pc1P+EpJj6SkwA+VLg4Ow4ZET/HYh0+cjcVPpIBCT4HThg/KVRGPg+KLD6cpi89Xw0bP4qImD7W/rk9CUG3OzgYHT99l68+i4sFPXnUMDw4GB0/fZevPouLBT151DA8DIsRP1uNwz6Kawk93/GCPP3sIj+ToTk+xgItPiF7WjywyjI/u2WHPkrrpDz7Yos8MbJAP83aaj6D45I8AAAAACKFUj8CxwI+Qu0qPUmSBjxkKFI//gWJPeETeT3sWVI9ZChSP/4FiT3hE3k97FlSPWwANz/+bFI+Z3dWPbub3zzqlzU/4SkmPpKTAD5UuDg7DhkRP8diHT5yNxU+kgEJPgdOGD8qVEY+D4osPp6mLz1fDRs/ioiYPtf+uT0HQbc7OBgdP32Xrz6LiwU9edQwPDgYHT99l68+i4sFPXnUMDwMixE/W43DPoprCT3g8YI8/ewiP5KhOT7HAi0+I3taPAAABgAKAAAACgACAAAAAgDHAQAAxwEDANUBBQABANUBAQAEAAUACwAHAAUABwABAAYACABHAAYARwAKAAsADAAJAAsACQAHAA8ADAALAA8ACwANAA0ACwAFAA0ABQAOAA0ADgARAA0AEQAQAA8ADQAQAA8AEAASABUAEwAQABUAEAARABMAFAASABMAEgAQABYAFwAUABYAFAATABgAFgATABgAEwAVABsAFwAWABsAFgAZABkAFgAYABkAGAAaACEAHQAZACEAGQAaAB0AHwAbAB0AGwAZACIAIwAeACIAHgAcACQAIgAcACQAHAAgACUAJwAjACUAIwAiACYAJQAiACYAIgAkACkAKAAlACkAJQAmACgAKgAnACgAJwAlACsAKgAoACsAKAApACsALQAsACsALAAqACoALAAuACoALgAnACwALQAvACwALwAuACcALgAwACcAMAAjAC4ALwAxAC4AMQAwADAAMQA0ADAANAAyACMAMAAyACMAMgAeADMANQA3ADMANwA2AB8AMwA2AB8ANgAbADYAOAAXADYAFwAbADcAOQA4ADcAOAA2ADgAOQA7ADgAOwA6ABcAOAA6ABcAOgAUADoAOwA9ADoAPQA8ABQAOgA8ABQAPAASADwAPgAPADwADwASAD0APwA+AD0APgA8AD4AQAAMAD4ADAAPAD8AQQBAAD8AQAA+AEAAQQBFAEAARQBDAAwAQABDAAwAQwAJAEIARgBHAEIARwAIAEQASABGAEQARgBCAEcARgBJAEcASQBLAEYASABKAEYASgBJAEkASgBOAEkATgBMAEsASQBMAEsATABNAE0ATABPAE0ATwBRAEwATgBQAEwAUABPAE8AUABUAE8AVABSAFEATwBSAFEAUgBTAFMAUgBVAFMAVQBWAFIAVABXAFIAVwBVAFUAWABZAFUAWQBWAFcAWgBYAFcAWABVAFkAWABbAFkAWwBdAFgAWgBcAFgAXABbAFsAXABgAFsAYABeAF0AWwBeAF0AXgBfAF8AXgBhAF8AYQBjAF4AYABiAF4AYgBhAGEAYgBmAGEAZgBkAGMAYQBkAGMAZABlAGUAZABnAGUAZwBoAGQAZgBpAGQAaQBnAGcAagBrAGcAawBoAGkAbABqAGkAagBnAGsAagBuAGsAbgBwAGoAbAByAGoAcgBuAG0AcwB0AG0AdABvAHEAdQBzAHEAcwBtAHQAcwB2AHQAdgB3AHMAdQB4AHMAeAB2AHkAewB3AHkAdwB2AHoAeQB2AHoAdgB4AH4AfAB5AH4AeQB6AHwAfQB7AHwAewB5AH8AhAB9AH8AfQB8AIEAfwB8AIEAfAB+AIYAgACDAIYAgwCIAIkAhQCAAIkAgACGAIYAiACMAIYAjACKAIkAhgCKAIkAigCNAIoAjACRAIoAkQCOAI0AigCOAI0AjgCPAI4AkgCVAI4AlQCPAJEAlACSAJEAkgCOAJIAlACZAJIAmQCWAJUAkgCWAJUAlgCXAJYAmgCdAJYAnQCXAJkAmwCaAJkAmgCWAJoAmwCfAJoAnwCeAJ0AmgCeAJ0AngChAJ4AnwCkAJ4ApACiAKEAngCiAKEAogCjAKMAogClAKMApQCmAKIApACnAKIApwClAKgAqgCmAKgApgClAKkAqAClAKkApQCnAK0AqwCoAK0AqACpAKsArACqAKsAqgCoAK4ArwCsAK4ArACrALAArgCrALAAqwCtALMArwCuALMArgCxALEArgCwALEAsACyALYAtACxALYAsQCyALQAtQCzALQAswCxALkAtQC0ALkAtAC3ALcAtAC2ALcAtgC4ALwAugC3ALwAtwC4ALoAuwC5ALoAuQC3AL0AvgC7AL0AuwC6AL8AvQC6AL8AugC8AL0AwQDDAL0AwwC+AL8AxQDBAL8AwQC9AMIAwADGAMIAxgDIAMAAxADHAMAAxwDGAMYAxwDLAMYAywDJAMgAxgDJAMgAyQDKAMoAyQDMAMoAzADNAMkAywDOAMkAzgDMAM8A0QDNAM8AzQDMANAAzwDMANAAzADOANQA0gDPANQAzwDQANIA0wDRANIA0QDPANUA1wDTANUA0wDSANYA1QDSANYA0gDUANoA2ADVANoA1QDWANgA2QDXANgA1wDVANsA3QDZANsA2QDYANwA2wDYANwA2ADaAOAA3gDbAOAA2wDcAN4A3wDdAN4A3QDbAOEA4wDfAOEA3wDeAOIA4QDeAOIA3gDgAOgA5ADhAOgA4QDiAOQA5gDjAOQA4wDhAOoA6wDnAOoA5wDlAOwA6gDlAOwA5QDpAO8A6wDqAO8A6gDtAO0A6gDsAO0A7ADuAPAA7QDuAPAA7gDxAPIA7wDtAPIA7QDwAPUA8wDwAPUA8ADxAPMA9ADyAPMA8gDwAPgA9ADzAPgA8wD2APYA8wD1APYA9QD3APsA+QD2APsA9gD3APkA+gD4APkA+AD2AP4A+gD5AP4A+QD8APwA+QD7APwA+wD9AAEB/wD8AAEB/AD9AP8AAAH+AP8A/gD8AAQBAAH/AAQB/wACAQIB/wABAQIBAQEDAQMBBgEFAQMBBQECAQIBBQEHAQIBBwEEAQUBBgEKAQUBCgEIAQcBBQEIAQcBCAEJAQkBCAELAQkBCwEPAQgBCgENAQgBDQELARMBEQEMARMBDAEOAREBEgEQAREBEAEMARYBEgERARYBEQEUARQBEQETARQBEwEVARcBFAEVARcBFQEYARkBFgEUARkBFAEXARoBFwEYARoBGAEbARwBGQEXARwBFwEaARoBGwEfARoBHwEdARwBGgEdARwBHQEeAR4BHQEgAR4BIAEhAR0BHwEiAR0BIgEgASABIwEkASABJAEhASIBJQEjASIBIwEgASYBJwEkASYBJAEjASgBJgEjASgBIwElAScBJgEpAScBKQErASYBKAEqASYBKgEpASoBLQEsASoBLAEpASkBLAEuASkBLgErASwBLQExASwBMQEvAS4BLAEvAS4BLwEwATQBMAEvATQBLwEyATIBLwExATIBMQEzAToBNgEyAToBMgEzATYBOAE0ATYBNAEyATsBPAE3ATsBNwE1AT0BOwE1AT0BNQE5AT4BQAE8AT4BPAE7AT8BPgE7AT8BOwE9AUIBQQE+AUIBPgE/AUEBQwFAAUEBQAE+ASsAQwFBASsAQQFCAUABQwFEAUABRAFFASsARAFDASsASAFGASsARgFEAUUBRAFGAUUBRgFHAUcBRgFIAUcBSAFJAUkBSAEpAEkBKQAmACsAKQBIAUsBRwFJAUsBSQFKAUkBJgAkAEkBJABKAUsBSgFMAUsBTAFPAUoBJAAgAEoBIABMAU0BIQAaAE0BGgBOAVABTQFOAVABTgFRAVUBSwFPAVUBTwFSAVMBUAFRAVMBUQFUATgBUwFUATgBVAE0ATwBVQFSATwBUgE3AVUBRQFHAVUBRwFLAUABRQFVAUABVQE8AVYBVAFRAVYBUQFXAVQBVgEwAVQBMAE0AVYBVwFaAVYBWgFYAVgBLgEwAVgBMAFWAScBWAFZAScBWQEkAS4BWAEnAS4BJwErAVgBWgFcAVgBXAFZAVoBVwGABVoBgAVbAVwBWgFbAVwBWwFdAV4BXAFdAV4BXQFgAV8BWQFcAV8BXAFeAWMBXwFeAWMBXgFhAWEBXgFgAWEBYAFiAWQBYQFiAWQBYgFlAWMBYQFkAWMBZAFmAWcBZAFlAWcBZQFqAWgBZgFkAWgBZAFnAWcBawFtAWcBbQFoAWwBawFnAWwBZwFqAWwBcAFvAWwBbwFrAWsBbwFzAWsBcwFtAXABzQFyAXABcgFvAW8BcgF4AW8BeAFzAX0BeQF0AX0BdAF3AXkBewFuAXkBbgF0AXoBbwR7AXoBewF5AX8BegF5AX8BeQF9AYEBfgF8AYEBfAGAAYABfAF2AYABdgGDAYUBgQGAAYUBgAGEAYQBgAGDAYQBgwGHAYkBhQGEAYkBhAGIAYgBhAGHAYgBhwGLAY0BiQGIAY0BiAGMAYwBiAGLAYwBiwGPAZEBjQGMAZEBjAGQAZABjAGPAZABjwGTAZUBkQGQAZUBkAGUAZQBkAGTAZQBkwGXAZwBlQGUAZwBlAGYAZgBlAGXAZgBlwGbAZ0BnAGYAZ0BmAGZAZkBmAGbAZkBmwHHBKABlQGcAaABnAGeAZ8BngGcAZ8BnAGdAZ4BnwGjAZ4BowGhAaABngGhAaABoQGiAaIBoQGlAaIBpQGnAaMBqQGlAaMBpQGhAaYBpAGqAaYBqgGrAagBrAGqAagBqgGkAasBqgGtAasBrQGuAawBrwGtAawBrQGqAbIBrgGtAbIBrQGwAa8BsQGwAa8BsAGtAbQBswGwAbQBsAGxAbMBtQGyAbMBsgGwAcYEmgGzAcYEswG0AZoBlgG1AZoBtQGzAZYBkgG2AZYBtgG1AbUBtgG4AbUBuAGyAZIBjgG3AZIBtwG2AbYBtwG5AbYBuQG4AbkBuwG6AbkBugG4AbgBugGuAbgBrgGyAbwBvgGuAbwBrgG6Ab8BvAG6Ab8BugG7Ab0B3gG+Ab0BvgG8AcABvQG8AcABvAG/AcIBwAG/AcIBvwHBAcEBvwG7AcEBuwHDAcUBwgHBAcUBwQHEAcQBwQHDAcQBwwHGAQIAxQHEAQIAxAHHAccBxAHGAccBxgHIAQMAxwHIAQMAyAHJAcsByAHGAcsBxgHOAckByAHLAckBywHMAc8BcQHMAc8BzAHLAdABzwHLAdABywHOAYIBdQFxAYIBcQHPAYYBggHPAYYBzwHQAYoBhgHQAYoB0AHRAdEB0AHOAdEBzgHSAY4BigHRAY4B0QG3AbcB0QHSAbcB0gG5Ac4BxgHDAc4BwwHSAdIBwwG7AdIBuwG5AXAB0wHKAXABygHNAdMB1QEEANMBBADKAdQB1gHVAdQB1QHTAdQB0wFwAdQBcAFsAdYBDgAFANYBBQDVAREADgDWAREA1gHXAdcB1gHUAdcB1AHYAREA1wFgAREAYAFdAWAB1wHYAWAB2AFiAdgBagFlAdgBZQFiAdQBbAFqAdQBagHYAQIACgDZAQIA2QHFAdkB2gHCAdkBwgHFAUsATQDaAUsA2gHZAQoARwBLAAoASwDZAdoBTQBRANoBUQDbAcIB2gHbAcIB2wHAAdsB3AG9AdsBvQHAAVEAUwDcAVEA3AHbAdwBUwBWANwBVgDdAb0B3AHdAb0B3QHeAVkA3wHdAVkA3QFWAN8B4AHeAd8B3gHdAV0A4QHfAV0A3wFZAOEB4gHgAeEB4AHfAeMB5AHiAeMB4gHhAV8A4wHhAV8A4QFdAGMA5QHjAWMA4wFfAOUB5gHkAeUB5AHjAecB6AHmAecB5gHlAWUA5wHlAWUA5QFjAOkB5wFlAOkBZQBoAOoB6AHnAeoB5wHpAY0N7QHrAY0N6wGADYAN6wHuAYAN7gGBDe0BDALsAe0B7AHrAesB7AHvAesB7wHuAfIB8AHuAfIB7gHvAYIN8QHqAYIN6gGBDYQN9gHxAYQN8QGCDfgB9AHwAfgB8AHyAYUN+gH1AYUN9QGDDfsB+QHzAfsB8wH3AYYN/QH6AYYN+gGFDf4B/AH5Af4B+QH7AYYN/AH/AYYN/wGHDfwB/gEBAvwBAQL/AYcN/wECAocNAgKIDf8BAQIDAv8BAwICAokNdAB3AIkNdwCIDQUCBAICAgUCAgIDAgYCBAIFAgYCBQIIAooNiQ0EAooNBAIGAgsCCgIHAgsCBwIJAowNawBwAIwNcACLDe0BCgILAu0BCwIMAo0NjA0KAo0NCgLtAQwCCwINAgwCDQIPAgkCDgINAgkCDQILAhACDwINAhACDQIOAhMCEQIPAhMCDwIQAg8CEQLsAQ8C7AEMAhQCEgIRAhQCEQITAhECEgLvAREC7wHsARcCFQITAhcCEwIQAhUCFgIUAhUCFAITAhgCGQIWAhgCFgIVAhoCGAIVAhoCFQIXAhsCHgIZAhsCGQIYAh0CGwIYAh0CGAIaAhwCHwIeAhwCHgIbAjoCHAIbAjoCGwIdAiECIAIeAiECHgIfAiACIgIZAiACGQIeAiYCJAIgAiYCIAIhAiQC+AEiAiQCIgIgAigCJwIjAigCIwIlAicC+wH3AScC9wEjAioCKQInAioCJwIoAikC/gH7ASkC+wEnAikCKwIBAikCAQL+ASoCLAIrAioCKwIpAisCLQIDAisCAwIBAiwCLgItAiwCLQIrAi4CMAIvAi4CLwItAi0CLwIFAi0CBQIDAjACMwIxAjACMQIvAi8CMQIIAi8CCAIFAjQCNgI1AjQCNQIyAjICNQI3AjICNwIJAjYCOgIdAjYCHQI1AjUCHQIaAjUCGgI3AgkCNwI4AgkCOAIOAhoCFwI4AhoCOAI3AhACDgI4AhACOAIXAjkCOwI6AjkCOgI2Ap4COQI2Ap4CNgI0AjsCPQIcAjsCHAI6AjwCPwI9AjwCPQI7AqcCPAI7AqcCOwI5Aj0CPgIfAj0CHwIcAj8CQAI+Aj8CPgI9AkECPwI8AkECPAJDAkUCQAI/AkUCPwJBAkcCQgJEAkcCRAJJAkgCRgJCAkgCQgJHAkwCSAJHAkwCRwJKAkoCRwJJAkoCSQJLAk8CTQJKAk8CSgJLAk0CTgJMAk0CTAJKAk4CTQJQAk4CUAJSAk0CTwJRAk0CUQJQAlACUQJVAlACVQJTAlICUAJTAlICUwJUAlQCUwJWAlQCVgJXAlMCVQJYAlMCWAJWAlYCWQJbAlYCWwJXAlgCWgJZAlgCWQJWAlkCWgJdAlkCXQJcAlsCWQJcAlsCXAJeAlwCXQJhAlwCYQJfAl4CXAJfAl4CXwJjAmUCYAJiAmUCYgJmAmcCZAJgAmcCYAJlAmkCaAJlAmkCZQJmAmgCagJnAmgCZwJlAm0CawJoAm0CaAJpAmsCbAJqAmsCagJoAm4CcAJsAm4CbAJrAm8CbgJrAm8CawJtAm4CbwJzAm4CcwJxAnACbgJxAnACcQJyAnECdAJ2AnECdgJyAnMCdQJ0AnMCdAJxAnUCeAJ3AnUCdwJ0AnQCdwJ5AnQCeQJ2AncCeAJ7AncCewJ6AnkCdwJ6AnkCegJ8AnoCewKBAnoCgQJ9AnwCegJ9AnwCfQJ/AoIChAJ/AoICfwJ9AoYCggJ9AoYCfQKBAowChAKCAowCggKIAogCggKGAogChgKKAo8CjQKHAo8ChwKJAo0CjgKLAo0CiwKHApUCjgKNApUCjQKRApECjQKPApECjwKTApACkgKXApAClwKWApQCkAKWApQClgKYApYClwKbApYCmwKZApgClgKZApgCmQKaApkCLAIqApkCKgKaApsCLgIsApsCLAKZApcCnwKcApcCnAKbApsCnAIwApsCMAIuApwCnQIzApwCMwIwAp8CogKdAp8CnQKcAqACpAKiAqACogKfApICoAKfApICnwKXAqMCpwI5AqMCOQKeAqUCqAKnAqUCpwKjAqgCQwI8AqgCPAKnAqwCqgKpAqwCqQKmAqoCSQJEAqoCRAKpAqsCSwJJAqsCSQKqAq0CqwKqAq0CqgKsAq8CrQKsAq8CrAKuAq4CrAKmAq4CpgKwArMCrwKuArMCrgKxArECrgKwArECsAKAArYCtAKyArYCsgK1AnsCtQKyAnsCsgKBAnMCtgK1AnMCtQJ1AngCdQK1AngCtQJ7ArcCuQK0ArcCtAK2Am8CtwK2Am8CtgJzArkCtwK6ArkCugK9AroCtwJvAroCbwJtAr0CugK7Ar0CuwK/AmkCuwK6AmkCugJtAr4CwQLAAr4CwAK8AsACwwK4AsACuAK8AsICwALBAsICwQLJAsQCwwLAAsQCwALCAsMCxAKtAsMCrQKvArgCwwKvArgCrwKzAsQCxQKrAsQCqwKtAsYCxQLEAsYCxALCAsUCTwJLAsUCSwKrAk8CxQLGAk8CxgJRAlECxgLHAlECxwJVAskCxwLGAskCxgLCAlUCxwLIAlUCyAJYAsoCyALHAsoCxwLJAskCwQLLAskCywLKAsgCygLMAsgCzALNAsoCywLOAsoCzgLMAs0CzALOAs0CzgLRAssC1QLPAssCzwLOAtECzgLPAtECzwLSAloCzQLRAloC0QJdAl0C0QLSAl0C0gJhAtYC1ALTAtYC0wLQAtQCZgJiAtQCYgLTAmYC1AK7AmYCuwJpAr8CuwLUAr8C1ALWAtUCywLBAtUCwQK+AlgCyALNAlgCzQJaArAC1wKFArAChQKAAqYCoQLXAqYC1wKwAqECkwKPAqECjwLXAtcCjwKJAtcCiQKFApgCmgLYApgC2ALbApoCKgIoApoCKALYAtgCKAIlAtgCJQLZAtsC2ALZAtsC2QLcApQCmALbApQC2wLeAt4C2wLcAt4C3ALgAt8C4gLkAt8C5ALjApUC3wLjApUC4wKOAuMC5AJ+AuMCfgKDAo4C4wKDAo4CgwKLAukC5QLkAukC5ALiAuUC5wJ+AuUCfgLkAuYC/gLnAuYC5wLlAuoC5gLlAuoC5QLpAuwC6gLpAuwC6QLrAusC6QLiAusC4gLuAkwC7ALrAkwC6wJIAkgC6wLuAkgC7gJGAu0C7wJAAu0CQAJFAuEC3QLvAuEC7wLtAt0C2gLwAt0C8ALvAu8C8AI+Au8CPgJAAtoCJgIhAtoCIQLwAvACIQIfAvACHwI+AvEC8gLqAvEC6gLsAk4C8QLsAk4C7AJMAvIC8QLzAvIC8wL1AvMC8QJOAvMCTgJSAvUC8wL0AvUC9AL2AlQC9ALzAlQC8wJSAvYC+AL3AvYC9wL1AvcC+wLyAvcC8gL1AvkC9wL4AvkC+AIFA/wC+wL3AvwC9wL5AvsC/AL+AvsC/gLmAvIC+wLmAvIC5gLqAv0CAAMBA/0CAQP/AgIDAAP9AgID/QL6AgADcAJyAgADcgIBA3ACAAMCA3ACAgNsAmwCAgMDA2wCAwNqAgYDAwMCAwYDAgP6AmoCAwMEA2oCBANnAggDBAMDAwgDAwMGAwUD+AIJAwUDCQMHAwQDCAMLAwQDCwMNAwcDCQMOAwcDDgMKAw4DEAMMAw4DDAMKAwkDEwMPAwkDDwMOAw8DEQMQAw8DEAMOAxEDWwJeAhEDXgIQAxADXgJjAhADYwIMAxIDVwJbAhIDWwIRAxMDEgMRAxMDEQMPA1cCEgP0AlcC9AJUAvYC9AISA/YCEgMTAxMDCQP4AhMD+AL2AmcCBAMNA2cCDQNkAgEDcgJ2AgEDdgIUA/8CAQMUA/8CFAPoAhQDdgJ5AhQDeQJ8AugCFAN8AugCfAJ/AhkCIgIVAxkCFQMWAvgBFgMVA/gBFQMiAhQCFgIVAxQCFQMWAxQCFgMXAxQCFwMSAvgB8gEXA/gBFwMWA+8BEgIXA+8BFwPyARkDGAMAAhkDAAJ3ABgDGgP9ARgD/QEAAh0DGwMYAx0DGAMZAxsDHAMaAxsDGgMYAx4DIAMcAx4DHAMbAx8DHgMbAx8DGwMdA80AIQMeA80AHgMfAyEDIgMgAyEDIAMeAyMDJAMiAyMDIgMhA9EAIwMhA9EAIQPNACUDIwPRACUD0QDTACYDJAMjAyYDIwMlAyUD0wDXACUD1wAnAyYDJQMnAyYDJwMoAygDJwMpAygDKQMqAycD1wDZACcD2QApAykD2QDdACkD3QArAyoDKQMrAyoDKwMsAywDKwMtAywDLQMuAysD3QDfACsD3wAtAy0D3wDjAC0D4wAvAy4DLQMvAy4DLwMwAzADLwMxAzADMQMzAy8D4wDmAC8D5gAxA+sANQMyA+sAMgPnADUDNgM0AzUDNAMyA+8ANwM1A+8ANQPrADcDOAM2AzcDNgM1AzoDOAM3AzoDNwM5AzkDNwPvADkD7wDyADkDOwM8AzkDPAM6A/IA9AA7A/IAOwM5AzsD9AD4ADsD+AA9AzwDOwM9AzwDPQM+Az8DQAM+Az8DPgM9A/oAPwM9A/oAPQP4AEEDPwP6AEED+gD+AEIDQAM/A0IDPwNBAwABQwNBAwABQQP+AEMDRANCA0MDQgNBA0UDQwMAAUUDAAEEAUYDRANDA0YDQwNFA0cDRQMEAUcDBAEHAUgDRgNFA0gDRQNHA0cDSQNLA0cDSwNIAwcBSgNJAwcBSQNHA0kDSgNOA0kDTgNMA0sDSQNMA0sDTANNA08DUQNNA08DTQNMA1ADTwNMA1ADTANOA1MDTwNQA1MDUANVA1cDUQNPA1cDTwNTA1IDVANZA1IDWQNYA1YDUgNYA1YDWANaA1gDWQNeA1gDXgNcA1oDWANcA1oDXANgA1sDXQNiA1sDYgNhA18DWwNhA18DYQNjA2EDYgNlA2EDZQNkA2MDYQNkA2MDZANmA2kDZwNkA2kDZANlA2cDaANmA2cDZgNkA2wDaANnA2wDZwNqA2oDZwNpA2oDaQNrA28DbQNqA28DagNrA20DbgNsA20DbANqA3QDbgNtA3QDbQNwA3ADbQNvA3ADbwNyA3gDdgNxA3gDcQNzA3YDdwN1A3YDdQNxA3oDdwN2A3oDdgN5A3kDdgN4A3kDeAMQARIBewN5AxIBeQMQAXsDfAN6A3sDegN5A30DewMSAX0DEgEWAX4DfAN7A34DewN9A30DFgEZAX0DGQF/A34DfQN/A34DfwOAA38DGQEcAX8DHAGBA4ADfwOBA4ADgQOCA4QDgwOBA4QDgQMcAYMDhQOCA4MDggOBA4gDhgODA4gDgwOEA4YDhwOFA4YDhQODA4YDigOOA4YDjgOHA4gDjAOKA4gDigOGA4kDiwORA4kDkQOPA40DiQOPA40DjwOQA48DkgOUA48DlAOQA5EDkwOSA5EDkgOPA5IDkwOXA5IDlwOVA5QDkgOVA5QDlQOWA5UDmAOaA5UDmgOWA5cDmQOYA5cDmAOVA5sDmgOYA5sDmAOZA5YDmgOcA5YDnAOdA5sDngOcA5sDnAOaA58DnQOcA58DnAOeA5sDogOgA5sDoAOeA58DngOgA58DoAOhA6MDoQOgA6MDoAOiA5sDpgOkA5sDpAOiA6MDogOkA6MDpAOlA6cDpQOkA6cDpAOmA6cDpgOoA6cDqAOpA5sDqAOmA5sDrAOqA5sDqgOoA6kDqAOqA6kDqgOrA60DqwOqA60DqgOsA5sDrgOsA60DrAOuA60DrgOvA5sDmQOwA5sDsAOuA68DrgOwA68DsAOxA5cDsQOwA5cDsAOZA7IDtAOvA7IDrwOxA5MDsgOxA5MDsQOXA7MDtQO0A7MDtAOyA5EDswOyA5EDsgOTA7cDtgO0A7cDtAO1A7QDtgOtA7QDrQOvA7YDuAOrA7YDqwOtA7cDuQO4A7cDuAO2A7kDuwO6A7kDugO4A7gDugOpA7gDqQOrA7oDvAOnA7oDpwOpA70DvAO6A70DugO7A70DvwO+A70DvgO8A7wDvgOlA7wDpQOnA78DwQPAA78DwAO+A74DwAOjA74DowOlA8ADwgOhA8ADoQOjA8EDwwPCA8EDwgPAA8MDxQPEA8MDxAPCA8IDxAOfA8IDnwOhA8QDxgOdA8QDnQOfA8UDxwPGA8UDxgPEA8cDkAOUA8cDlAPGA8YDlAOWA8YDlgOdA8gDjQOQA8gDkAPHA8sDyAPHA8sDxwPFA8oDhwOOA8oDjgPJA80DygPJA80DyQPMA84DywPFA84DxQPDA9ADzQPMA9ADzAPPA9MD0APPA9MDzwPSA9EDzgPDA9EDwwPBA9QD0QPBA9QDwQO/A9YD0wPSA9YD0gPVA9kD1gPVA9kD1QPYA9cD1AO/A9cDvwO9A9kD2APbA9kD2wPcA9oD1wO9A9oDvQO7A90D2gO7A90DuwO5A98D3APbA98D2wPeA+ID3wPeA+ID3gPhA+AD3QO5A+ADuQO3A+MD4AO3A+MDtwO1A+ID4QPkA+ID5APlA+gD5QPkA+gD5APnA+YD4wO1A+YDtQOzA4gD6APnA4gD5wOMA4sD5gOzA4sDswORA+oD5QPoA+oD6APpA+kD6AOIA+kDiAOEAyEB6gPpAyEB6QMeAR4B6QOEAx4BhAMcAeID5QPqA+ID6gPrA+sD6gMhAesDIQHsA+0D3wPiA+0D4gPrA+8D7QPrA+8D6wPsA+4D3APfA+4D3wPtA/AD7gPtA/AD7QPvA1kBXwHvA1kB7wPsA+8DXwFjAe8DYwHwA/ID7gPwA/ID8APxA/ADYwFmAfADZgHxA/MD9QPyA/MD8gPxA2YB9gPzA2YB8wPxA/MD9gP3A/MD9wP0A/QDDgT1A/QD9QPzA2gB+AP2A2gB9gNmAfYD+AP6A/YD+gP3A2kB/QP8A2kB/AP5A/kD/AP/A/kD/wP7A/0DbQT+A/0D/gP8A/wD/gMABPwDAAT/AwAEAgQBBAAEAQT/A/8DAQQFBP8DBQT7AwIEXQQDBAIEAwQBBAEEAwQHBAEEBwQFBPcD+gMEBPcDBAQIBAgEBAQGBAgEBgQJBPcDCAQKBPcDCgT0AwoECAQJBAoECQQLBAoEDAQOBAoEDgT0AwsEDQQMBAsEDAQKBA0EzQPQAw0E0AMMBAwE0APTAwwE0wMOBA4E0wPWAw4E1gP1A8oDzQMNBMoDDQQPBA8EDQQLBA8ECwQQBIcDygMPBIcDDwSFA4UDDwQQBIUDEASCAwkEEQQQBAkEEAQLBBAEEQSAAxAEgAOCAwkEBgQSBAkEEgQRBBEEEgR+AxEEfgOAAxMEEgQGBBMEBgQUBHwDfgMSBHwDEgQTBHoDfAMTBHoDEwQVBBUEEwQUBBUEFAQWBHoDFQQXBHoDFwR3AxUEFgQYBBUEGAQXBBcEGAQcBBcEHAQaBHcDFwQaBHcDGgR1A3QDGQQdBHQDHQRuAxkEGwQeBBkEHgQdBB0EHgQgBB0EIAQfBG4DHQQfBG4DHwRsA2wDHwQhBGwDIQRoAx8EIAQiBB8EIgQhBCEEIgQkBCEEJAQjBGgDIQQjBGgDIwRmAyUEYwNmAyUEZgMjBCgEJQQjBCgEIwQkBCYEXwNjAyYEYwMlBCkEJgQlBCkEJQQoBCsEKAQkBCsEJAQuBCwEKQQoBCwEKAQrBDAELAQrBDAEKwQvBC8EKwQuBC8ELgQyBDQEMAQvBDQELwQzBDMELwQyBDMEMgQ2BDkENAQzBDkEMwQ3BDcEMwQ2BDcENgQ4BDsENwQ4BDsEOAQ+BDwEOQQ3BDwENwQ7BBsEPAQ7BBsEOwQeBB4EOwQ+BB4EPgQgBD4EOAQ2BD4ENgQ/BCAEPgQ/BCAEPwQiBD8ENgQyBD8EMgQuBCIEPwQuBCIELgQkBEAEQQQ6BEAEOgQ9BBgEQAQ9BBgEPQQcBBQEBgRBBBQEQQRABBYEFARABBYEQAQYBEEEQgQ1BEEENQQ6BAYEQwRCBAYEQgRBBEMERgRFBEMERQRCBEIERQQxBEIEMQQ1BEUESAQtBEUELQQxBEYESQRIBEYESARFBEkETARLBEkESwRIBEgESwQqBEgEKgQtBEsETgQnBEsEJwQqBEwETwROBEwETgRLBE8EVgNaA08EWgNOBE4EWgNgA04EYAMnBFEDVwNQBFEDUARRBFEEUARNBFEETQRSBE0DUQNRBE0DUQRTBFMEUQRSBFMEUgRUBFUESwNNA1UETQNTBFcEVQRTBFcEUwRUBFYESANLA1YESwNVBFgEVgRVBFgEVQRXBFoEWARXBFoEVwRZBFkEVwRUBFkEVARbBF0EWgRZBF0EWQRcBFwEWQRbBFwEWwReBAMEXQRcBAMEXARfBF8EXAReBF8EXgRgBAcEAwRfBAcEXwREBEQEXwRgBEQEYARHBFsEYQRgBFsEYAReBGEESgRHBGEERwRgBFIETQRKBFIESgRhBFQEUgRhBFQEYQRbBGIEXQQCBGIEAgRlBGIEYwRaBGIEWgRdBGQEngRjBGQEYwRiBGcEZARiBGcEYgRlBGUEAgQABGUEAARmBGgEZwRlBGgEZQRmBEADQgNkBEADZARnBD4DQANnBD4DZwRoBGkEPAM+A2kEPgNoBGsEaQRoBGsEaARmBGoEOgM8A2oEPANpBGwEagRpBGwEaQRrBP4DawRmBP4DZgQABGwEawT+A2wE/gNtBHAEagRsBHAEbARuBG0EbwRuBG0EbgRsBG4EbwR6AW4EegFxBHQEcARuBHQEbgRxBHYEdARxBHYEcQRzBHEEegF/AXEEfwFzBDYDOANwBDYDcAR0BDQDNgN0BDQDdAR2BHUEdwQwA3UEMAMzA3IEeAR3BHIEdwR1BHgEegR5BHgEeQR3BHcEeQQuA3cELgMwA3oEfAR7BHoEewR5BHkEewQsA3kELAMuA3wEfgR9BHwEfQR7BHsEfQQqA3sEKgMsA34EgAR/BH4EfwR9BH0EfwQoA30EKAMqA4AEoAGBBIAEgQR/BH8EgQQmA38EJgMoA4EEggSFBIEEhQQmA6ABogGCBKABggSBBKIBpwGEBKIBhASCBIIEhASHBIIEhwSFBIcEigSIBIcEiASFBIUEiAQkA4UEJAMmA4oEjQSLBIoEiwSIBIgEiwQiA4gEIgMkA40EjwSOBI0EjgSLBIsEjgQgA4sEIAMiA48EkgSRBI8EkQSOBI4EkQQcA44EHAMgA5IElQSUBJIElASRBJEElAQaA5EEGgMcA5UE9QH6AZUE+gGUBJQE+gH9AZQE/QEaA5cE8QH2AZcE9gGWBJgElwSWBJgElgSTBOgB6gHxAegB8QGXBOYB6AGXBOYBlwSYBOQB5gGYBOQBmASZBJkEmASTBJkEkwSQBOIB5AGZBOIBmQSaBJoEmQSQBJoEkASMBOAB4gGaBOABmgSbBJsEmgSMBJsEjASJBN4B4AGbBN4BmwScBJwEmwSJBJwEiQSGBJ0EvgHeAZ0E3gGcBIMEnQScBIMEnASGBKsBrgG+AasBvgGdBKYBqwGdBKYBnQSDBIAEkQGVAYAElQGgAY0BkQGABI0BgAR+BHwEiQGNAXwEjQF+BIUBiQF8BIUBfAR6BHgEgQGFAXgEhQF6BHIEfgGBAXIEgQF4BDoDagRwBDoDcAQ4A20E/QN7AW0EewFvBEIDRAOeBEIDngRkBEQDRgOfBEQDnwSeBJ4EnwSgBJ4EoARjBEgDVgSfBEgDnwRGA58EVgRYBJ8EWASgBFoEYwSgBFoEoARYBHsB/QNpAXsBaQFuAfUD1gPZA/UD2QPyA9kD3APuA9kD7gPyAyQBWQHsAyQB7AMhAaMEEAF4A6MEeAOhBKEEeANzA6EEcwOlBFQDowShBFQDoQRZA1kDoQSlBFkDpQReA10DpASmBF0DpgRiA6QEcgNvA6QEbwOmBKYEbwNrA6YEawNpA2IDpgRpA2IDaQNlA6cEogRVA6cEVQNQAwkBDwGiBAkBogSnBAcBCQGnBAcBpwRKA0oDpwRQA0oDUANOA6gEygDNAKgEzQAfA6oEqAQfA6oEHwMdA6kEyADKAKkEygCoBKsEqQSoBKsEqASqBKwErQSrBKwEqwSqBBkDrASqBBkDqgQdA3sAfQCtBHsArQSsBHcAewCsBHcArAQZA30AhACuBH0ArgStBK0ErgSxBK0EsQSrBIUAiQCwBIUAsASvBK8EsASzBK8EswSyBLMEtgS1BLMEtQSyBLEEtASpBLEEqQSrBLYEvgDDALYEwwC1BLQEwgDIALQEyACpBL4AtgS3BL4AtwS7ALYEswS4BLYEuAS3BLcEuAS6BLcEugS5BLsAtwS5BLsAuQS5ALkEugS8BLkEvAS7BLkAuQS7BLkAuwS1ALsEvAS+BLsEvgS9BLUAuwS9BLUAvQSzAL0EvgTABL0EwAS/BLMAvQS/BLMAvwSvAL8EwASmAL8EpgCqAK8AvwSqAK8AqgCsAMAEwQSjAMAEowCmAL4EwgTBBL4EwQTABMIElwCdAMIEnQDBBMEEnQChAMEEoQCjAMMElQCXAMMElwDCBLwEwwTCBLwEwgS+BMQEjwCVAMQElQDDBLoExATDBLoEwwS8BMUEjQCPAMUEjwDEBLgExQTEBLgExAS6BLAEiQCNALAEjQDFBLMEsATFBLMExQS4BMsExgS0AcsEtAHIBMgEtAGxAcgEsQHKBM0EywTIBM0EyATJBMkEyATKBMkEygTkBM8E0QTHBM8ExwTMBNAEzwTMBNAEzATOBNQE0gTPBNQEzwTQBNIE0wTRBNIE0QTPBNIE1QTXBNIE1wTTBNQE1gTVBNQE1QTSBNUE1gTZBNUE2QTYBNcE1QTYBNcE2ATaBNkE3gTcBNkE3ATYBNgE3ASpAdgEqQHaBNsE3QTgBNsE4ATfBKgB2wTfBKgB3wSsAeAE4gThBOAE4QTfBN8E4QSvAd8ErwGsAeEEygSxAeEEsQGvAeIE5ATKBOIEygThBOAEZQXjBOAE4wTiBOQE4gTjBOQE4wTlBOgEyQTkBOgE5ATlBOsE6ATlBOsE5QTmBOMEXgXmBOME5gTlBOkEzQTJBOkEyQToBO0E6QToBO0E6ATrBPEE7wTsBPEE7ATwBPAE7ATnBPAE5wTyBPEE8ATzBPEE8wT2BPAE8gT0BPAE9ATzBPME9AQYBfMEGAX1BPYE8wT1BPYE9QT3BPkE8QT2BPkE9gT4BPgE9gT3BPgE9wT6BP0E+QT4BP0E+AT7BPsE+AT6BPsE+gT8BP4E+wT8BP4E/AQABf8E/QT7BP8E+wT+BAIF/wT+BAIF/gQBBQEF/gQABQEFAAUDBQUFAgUBBQUFAQUEBQQFAQUDBQQFAwUGBQUFBAUHBQUFBwUKBQQFBgUIBQQFCAUHBQcFCAUfBQcFHwUJBQoFBwUJBQoFCQULBQwFCgULBQwFCwUOBQ0FBQUKBQ0FCgUMBRAFDQUMBRAFDAUPBQ8FDAUOBQ8FDgURBRAFDwUSBRAFEgXyBBIFDwURBRIFEQUTBfQE8gQSBfQEEgUUBRQFEgUTBRQFEwUVBRgF9AQUBRgFFAUWBRYFFAUVBRYFFQUXBRkFFgUXBRkFFwUbBRoFGAUWBRoFFgUZBR0FGgUZBR0FGQUcBRwFGQUbBRwFGwUeBQYFHQUcBQYFHAUIBQgFHAUeBQgFHgUfBR4FGwUhBR4FIQUgBR8FHgUgBR8FIAUjBSAFIQUzBSAFMwUiBSMFIAUiBSMFIgUkBSUFIwUkBSUFJAUmBQkFHwUjBQkFIwUlBQsFCQUlBQsFJQUnBScFJQUmBScFJgUoBSkFJwUoBSkFKAUqBQ4FCwUnBQ4FJwUpBREFDgUpBREFKQUrBSsFKQUqBSsFKgUsBREFKwUtBREFLQUTBS0FKwUsBS0FLAUuBRUFEwUtBRUFLQUvBS8FLQUuBS8FLgUwBRcFFQUvBRcFLwUxBTEFLwUwBTEFMAUyBSEFMQUyBSEFMgUzBRcFMQUhBRcFIQUbBTAFNAUzBTAFMwUyBTQFNQUiBTQFIgUzBSwFNAUwBSwFMAUuBSwFKgU1BSwFNQU0BSoFKAUmBSoFJgU1BTUFJgUkBTUFJAUiBR0FBgU3BR0FNwU2BRoFHQU2BRoFNgU5BTYFNwVJBTYFSQU4BTkFNgU4BTkFOAU6BRoFOQU7BRoFOwUYBTsFOQU6BTsFOgU8BT0FOwU8BT0FPAU+BfUEGAU7BfUEOwU9BfcE9QQ9BfcEPQU/BT8FPQU+BT8FPgVABfoE9wQ/BfoEPwVBBUEFPwVABUEFQAVCBfwE+gRBBfwEQQVDBUMFQQVCBUMFQgVEBUUFQwVEBUUFRAVGBfwEQwVFBfwERQUABQMFAAVFBQMFRQVHBUcFRQVGBUcFRgVIBQYFAwVHBQYFRwU3BTcFRwVIBTcFSAVJBUgFRgVLBUgFSwVKBUkFSAVKBUkFSgVNBUoFSwVdBUoFXQVMBU0FSgVMBU0FTAVOBU8FTQVOBU8FTgVQBTgFSQVNBTgFTQVPBToFOAVPBToFTwVRBVEFTwVQBVEFUAVSBToFUQVTBToFUwU8BVMFUQVSBVMFUgVUBVUFUwVUBVUFVAVWBT4FPAVTBT4FUwVVBUAFPgVVBUAFVQVXBVcFVQVWBVcFVgVYBUIFQAVXBUIFVwVZBVkFVwVYBVkFWAVaBUQFQgVZBUQFWQVbBVsFWQVaBVsFWgVcBUYFRAVbBUYFWwVLBUsFWwVcBUsFXAVdBV0FXAVaBV0FWgVMBUwFWgVYBUwFWAVOBU4FWAVWBU4FVgVQBVAFVgVUBVAFVAVSBecEXwUQBecEEAXyBGEFDQUQBWEFEAVfBWUFYAVeBWUFXgXjBGQFBQUNBWQFDQVhBWYFYgVgBWYFYAVlBd0EZgVlBd0EZQXgBGgFagVjBWgFYwVnBdkEaAVnBdkEZwXeBNYEaQVoBdYEaAXZBGkFbAVqBWkFagVoBW0F/wQCBW0FAgVrBWsFAgUFBWsFBQVkBXAFbgVsBXAFbAVpBW0FbwX9BG0F/QT/BP0EbwVyBf0EcgX5BG4FcAVzBW4FcwVxBXEFcwXqBHEF6gTuBPkEcgXvBPkE7wTxBHAF1ATQBHAF0ARzBXMF0ATOBHMFzgTqBNYE1ARwBdYEcAVpBdcE2gR0BdcEdAV2BakBdQV0BakBdAXaBHcFdgV0BXcFdAV1BXgFdgV3BXgFdwV5BdME1wR2BdMEdgV4BdMEeAV6BdMEegXRBHkFewV6BXkFegV4BccE0QR6BccEegV7BccEewV8BccEfAWZAXkFfQV8BXkFfAV7BZ0BmQF8BZ0BfAV9BXcFfgV9BXcFfQV5BX0FfgWfAX0FnwGdAZ8BfgV/BZ8BfwWjAXcFdQV/BXcFfwV+BakBowF/BakBfwV1BVsBFQARAFsBEQBdAYAFGAAVAIAFFQBbAVcBUQFOAVcBTgGABRoAGACABRoAgAVOAUIBPwGDBUIBgwWBBSsAQgGBBSsAgQWCBYEFgwWEBYEFhAWCBT8BPQGFBT8BhQWDBYMFhQWGBYMFhgWEBYUFhwWJBYUFiQWGBT0BOQGHBT0BhwWFBYgFiwWMBYgFjAWKBToBMwGLBToBiwWIBYsFMwExAYsFMQGNBYwFiwWNBYwFjQWOBZAFjgWNBZAFjQWPBY8FjQUxAY8FMQEtASoBkQWPBSoBjwUtAZEFkgWQBZEFkAWPBZMFkQUqAZMFKgEoAZQFkgWRBZQFkQWTBZMFlQWWBZMFlgWUBSgBJQGVBSgBlQWTBZcFmAWWBZcFlgWVBSIBlwWVBSIBlQUlAZoFmAWXBZoFlwWZBZkFlwUiAZkFIgEfAZwFmgWZBZwFmQWbBZsFmQUfAZsFHwEbAZsFGwEYAZsFGAGdBZwFmwWdBZwFnQWeBZ0FGAEVAZ0FFQGfBZ4FnQWfBZ4FnwWgBZ8FFQETAZ8FEwGhBaAFnwWhBaAFoQWiBaEFpAWmBaEFpgWiBRMBDgGkBRMBpAWhBacFowUNAacFDQEKAagFpQWjBagFowWnBaoFqAWnBaoFpwWpBakFpwUKAakFCgEGAQMBqwWpBQMBqQUGAasFrAWqBasFqgWpBasFAwEBAasFAQGtBawFqwWtBawFrQWuBa0FrwWwBa0FsAWuBQEB/QCvBQEBrwWtBa8F/QD7AK8F+wCxBbAFrwWxBbAFsQWyBbEFswW0BbEFtAWyBfsA9wCzBfsAswWxBbMF9wD1ALMF9QC1BbQFswW1BbQFtQW2BbUFtwW4BbUFuAW2BfUA8QC3BfUAtwW1BbcF8QDuALcF7gC5BbgFtwW5BbgFuQW6BbkF7gDsALkF7AC7BboFuQW7BboFuwW8BbsFvgXABbsFwAW8BewA6QC+BewAvgW7Bb0FwQXCBb0FwgW/BegA4gDBBegAwQW9BeIA4ADDBeIAwwXBBcEFwwXEBcEFxAXCBcMFxQXGBcMFxgXEBeAA3ADFBeAAxQXDBdwA2gDHBdwAxwXFBcUFxwXIBcUFyAXGBccFyQXKBccFygXIBdoA1gDJBdoAyQXHBdYA1ADLBdYAywXJBckFywXMBckFzAXKBcsFzQXOBcsFzgXMBdQA0ADNBdQAzQXLBdAAzgDPBdAAzwXNBc0FzwXQBc0F0AXOBdIF0AXPBdIFzwXRBdEFzwXOANEFzgDLANQF0gXRBdQF0QXTBdMF0QXLANMFywDHANUF0wXHANUFxwDEANcF1AXTBdcF0wXVBdkF2gXYBdkF2AXWBb8A2QXWBb8A1gXFANkF2wXcBdkF3AXaBb8AvADbBb8A2wXZBdsF3QXeBdsF3gXcBbwAuADdBbwA3QXbBd0FuAC2AN0FtgDfBd4F3QXfBd4F3wXgBd8F4QXiBd8F4gXgBbYAsgDhBbYA4QXfBeEFsgCwAOEFsADjBeIF4QXjBeIF4wXkBeMF5QXmBeMF5gXkBbAArQDlBbAA5QXjBeUF5wXoBeUF6AXmBa0AqQDnBa0A5wXlBakApwDpBakA6QXnBecF6QXqBecF6gXoBewF6gXpBewF6QXrBesF6QWnAOsFpwCkAO4F7AXrBe4F6wXtBe0F6wWkAO0FpACgAO8F7QWgAO8FoACcAPAF7gXtBfAF7QXvBZgA8QXvBZgA7wWcAPEF8gXwBfEF8AXvBfQF8gXxBfQF8QXzBfMF8QWYAPMFmACTAJAA9QXzBZAA8wWTAPUF9gX0BfUF9AXzBfgF9gX1BfgF9QX3BfcF9QWQAPcFkACLAPkF9wWLAPkFiwCHAPoF+AX3BfoF9wX5BfkFhwCCAPkFggD8BfoF+QX8BfoF/AX+BYEAfgD/BYEA/wX7BfsF/wUABvsFAAb9Bf8FAQYCBv8FAgYABn4AegABBn4AAQb/BXoAeAADBnoAAwYBBgEGAwYEBgEGBAYCBgYGBAYDBgYGAwYFBgUGAwZ4AAUGeAB1AAcGCQYGBgcGBgYFBnEABwYFBnEABQZ1AAwGCgYIBgwGCAYLBgsGCAZyAAsGcgBsAA0GDgYMBg0GDAYLBmkADQYLBmkACwZsABAGDgYNBhAGDQYPBg8GDQZpAA8GaQBmABIGEAYPBhIGDwYRBhEGDwZmABEGZgBiABMGEQZiABMGYgBgABQGEgYRBhQGEQYTBhYGFAYTBhYGEwYVBhUGEwZgABUGYABcABcGFQZcABcGXABaABgGFgYVBhgGFQYXBhkGGgYYBhkGGAYXBlcAGQYXBlcAFwZaABwGGgYZBhwGGQYbBhsGGQZXABsGVwBUAB4GHAYbBh4GGwYdBh0GGwZUAB0GVABQAB8GHQZQAB8GUABOACAGHgYdBiAGHQYfBiIGIAYfBiIGHwYhBiEGHwZOACEGTgBKACMGIQZKACMGSgBIACQGIgYhBiQGIQYjBiUGJwYkBiUGJAYjBkQAJQYjBkQAIwZIACoGKAYmBioGJgYpBikGJgZFACkGRQBBAD8AKwYpBj8AKQZBACsGLAYqBisGKgYpBi0GLgYsBi0GLAYrBj0ALQYrBj0AKwY/ADAGLgYtBjAGLQYvBi8GLQY9AC8GPQA7ADEGLwY7ADEGOwA5ADIGMAYvBjIGLwYxBjcAMwYxBjcAMQY5ADMGNAYyBjMGMgYxBjgGNAYzBjgGMwY2BjYGMwY3ADYGNwA1ADkGNQY0ADkGNAAxADoGNwY1BjoGNQY5BjsGOQYxADsGMQAvADwGOgY5BjwGOQY7Bj4GPAY7Bj4GOwY9Bj0GOwYvAD0GLwAtACsAPgY9BisAPQYtACsAQAY/BisAPwY+Bj8GQQY8Bj8GPAY+BkAGQgZBBkAGQQY/BkIGRAZDBkIGQwZBBkEGQwY6BkEGOgY8BkMGRQY3BkMGNwY6BkQGRwZFBkQGRQZDBkYGSQY0BkYGNAY4BkgGSgZJBkgGSQZGBkkGSgZMBkkGTAZLBjQGSQZLBjQGSwYyBksGTQYwBksGMAYyBkwGTgZNBkwGTQZLBk0GTwYuBk0GLgYwBk4GUAZPBk4GTwZNBlEGTwZQBlEGUAZSBiwGLgZPBiwGTwZRBlEGUgZUBlEGVAZTBiwGUQZTBiwGUwYqBlMGVgYoBlMGKAYqBlQGWAZWBlQGVgZTBlUGWQYkBlUGJAYnBlcGWgZZBlcGWQZVBlkGWwYiBlkGIgYkBloGXAZbBloGWwZZBlsGXAZeBlsGXgZdBiIGWwZdBiIGXQYgBl0GXwYeBl0GHgYgBl4GYAZfBl4GXwZdBl8GYAZiBl8GYgZhBh4GXwZhBh4GYQYcBmEGYwYaBmEGGgYcBmIGZAZjBmIGYwZhBhgGGgZjBhgGYwZlBmUGYwZkBmUGZAZmBhYGGAZlBhYGZQZnBmcGZQZmBmcGZgZoBmkGZwZoBmkGaAZqBhQGFgZnBhQGZwZpBhIGFAZpBhIGaQZrBmsGaQZqBmsGagZsBm0GawZsBm0GbAZuBhAGEgZrBhAGawZtBm8GDgYQBm8GEAZtBnAGbwZtBnAGbQZuBpsNjg1xBpsNcQZzBo4Njw10Bo4NdAZxBnMGcQZyBnMGcgaSBnEGdAZ1BnEGdQZyBngGdQZ0BngGdAZ2BpANjw1wBpANcAZ3BpINkA13BpINdwZ8Bn4GeAZ2Bn4GdgZ6BpMNkQ17BpMNewaABoEGfQZ5BoEGeQZ/BpQNkw2ABpQNgAaDBoQGgQZ/BoQGfwaCBpQNlQ2FBpQNhQaCBoIGhQaHBoIGhwaEBpUNlg2IBpUNiAaFBoUGiAaJBoUGiQaHBpcNlg0EBpcNBAYGBosGiQaIBosGiAaKBowGjgaLBowGiwaKBpgNjAaKBpgNigaXDZEGjwaNBpEGjQaQBpoNmQ0KBpoNCgYMBnMGkgaRBnMGkQaQBpsNcwaQBpsNkAaaDZIGlQaTBpIGkwaRBo8GkQaTBo8GkwaUBpYGlAaTBpYGkwaVBpkGlgaVBpkGlQaXBpUGkgZyBpUGcgaXBpoGmQaXBpoGlwaYBpcGcgZ1BpcGdQaYBp0GlgaZBp0GmQabBpsGmQaaBpsGmgacBp4GmwacBp4GnAafBqAGnQabBqAGmwaeBqEGngafBqEGnwakBqMGoAaeBqMGngahBqIGoQakBqIGpAalBsAGowahBsAGoQaiBqcGpQakBqcGpAamBqYGpAafBqYGnwaoBqwGpwamBqwGpgaqBqoGpgaoBqoGqAZ+Bq4GqwapBq4GqQatBq0GqQZ9Bq0GfQaBBrAGrgatBrAGrQavBq8GrQaBBq8GgQaEBq8GhAaHBq8GhwaxBrAGrwaxBrAGsQayBrEGhwaJBrEGiQazBrIGsQazBrIGswa0BrQGswa1BrQGtQa2BrMGiQaLBrMGiwa1BrYGtQa3BrYGtwa5BrUGiwaOBrUGjga3BroGuAa7BroGuwa8BrgGjwa9BrgGvQa7BrwGuwajBrwGowbABrsGvQagBrsGoAajBo8GlAa+Bo8Gvga9BqAGvQa+BqAGvgadBpYGnQa+BpYGvgaUBr8GvAbABr8GwAbBBiQHuga8BiQHvAa/BsEGwAaiBsEGogbDBsIGwQbDBsIGwwbFBi0HvwbBBi0HwQbCBsMGogalBsMGpQbEBsUGwwbEBsUGxAbGBscGyQbCBscGwgbFBssGxwbFBssGxQbGBs0GzwbKBs0GygbIBs4GzQbIBs4GyAbMBtIG0AbNBtIGzQbOBtAG0QbPBtAGzwbNBtUG0QbQBtUG0AbTBtMG0AbSBtMG0gbUBtQG2AbWBtQG1gbTBtMG1gbXBtMG1wbVBtYG2QbbBtYG2wbXBtgG2gbZBtgG2QbWBtoG3QbcBtoG3AbZBtkG3AbeBtkG3gbbBtwG3QbhBtwG4QbfBt4G3AbfBt4G3wbgBt8G4gbjBt8G4wbgBuEG5AbiBuEG4gbfBuIG5QbnBuIG5wbjBuQG6QblBuQG5QbiBusG7AboBusG6AbmBu0G6wbmBu0G5gbqBu8G7AbrBu8G6wbuBu4G6wbtBu4G7QbwBvMG7wbuBvMG7gbxBvEG7gbwBvEG8AbyBvQG8QbyBvQG8gb2BvUG8wbxBvUG8Qb0BvQG9wb5BvQG+Qb1BvYG+Ab3BvYG9wb0BvcG+Ab8BvcG/Ab6BvkG9wb6BvkG+gb7BvsG+gb9BvsG/Qb+BvoG/Ab/BvoG/wb9Bv0GAAcBB/0GAQf+Bv8GAgcAB/8GAAf9BgAHAwcHBwAHBwcBBwIHBQcDBwIHAwcABwgHAwcFBwgHBQcKBwwHBwcDBwwHAwcIBxIHDgcIBxIHCAcKBw4HEAcMBw4HDAcIBxUHDwcNBxUHDQcTBxMHDQcRBxMHEQcUBxsHFwcTBxsHEwcUBxcHGQcVBxcHFQcTBxYHHAcdBxYHHQcYBxoHHgccBxoHHAcWBxwHHwchBxwHIQcdBx4HIAcfBx4HHwccBx8HIAewBh8HsAayBiEHHweyBiEHsga0Bh0HIQciBx0HIgclByEHtAa2BiEHtgYiByIHtga5BiIHuQYjByUHIgcjByUHIwcoByYHJQcoByYHKAcqBxgHHQclBxgHJQcmBykHJAe/BikHvwYtBysHKQctBysHLQcuBy4HLQfCBi4HwgbJBjIHLAcvBzIHLwcwBzAHLwfKBjAHygbPBjEHMAfPBjEHzwbRBjMHMgcwBzMHMAcxBzUHNAcyBzUHMgczBzQHNgcsBzQHLAcyBzkHNwc0BzkHNAc1BzcHBgc2BzcHNgc0BzwHOwc4BzwHOAc6BwEHBwc4BwEHOAc7B/kG+wY7B/kGOwc8B/4GAQc7B/4GOwf7Bj0HPAc6Bz0HOgc/B/UG+QY8B/UGPAc9Bz8HQwdABz8HQAc9B0AH8wb1BkAH9QY9B0MHRQdBB0MHQQdAB+8G8wZAB+8GQAdBB0QHQgdGB0QHRgdHB0YHQgc+B0YHPgdJB0gHTwdHB0gHRwdGB0oHSAdGB0oHRgdJB0kHNQczB0kHMwdKBz4HOQc1Bz4HNQdJB0oHMwcxB0oHMQdLB0wHSAdKB0wHSgdLB0sHMQfRBksH0QbVBtUG1wZMB9UGTAdLB9cG2wZNB9cGTQdMB08HSAdMB08HTAdNB9sG3gZOB9sGTgdNB1AHTwdNB1AHTQdOB08HUAdRB08HUQdHB04HUwdSB04HUgdQB1AHUgdUB1AHVAdRB1MHVwdUB1MHVAdSB1EHVAdVB1EHVQdbB1cHWAdVB1cHVQdUB+AG4wZXB+AGVwdTB+MG5wZYB+MGWAdXB1wHVgdZB1wHWQdaB1oHWQfoBloH6AbsBuwG7wZBB+wGQQdaB0UHXAdaB0UHWgdBB1sHRAdHB1sHRwdRB94G4AZTB94GUwdOBzYHBgcLBzYHCwddBywHNgddBywHXQcnBycHXQcVBycHFQcZB10HCwcPB10HDwcVBx4HYQdeBx4HXgcgByAHXgeuBiAHrgawBl4HXwerBl4HqwauBmEHYgdfB2EHXwdeBxoHZAdhBxoHYQceB2QHZgdiB2QHYgdhB2UHaQdqB2UHagdoBxsHFAdpBxsHaQdlB2kHCQcEB2kHBAdqBxQHEQcJBxQHCQdpB28HaAdqB28HagdrB2sHagcEB2sHBAdtB2wHawdtB2wHbQeEB3AHbwdrB3AHawdsB3IHcQdvB3IHbwdwB3EHdAdoB3EHaAdvB9IGzgZxB9IGcQdyB84GzAZ0B84GdAdxB3MHywbGBnMHxgZ1B2cHcwd1B2cHdQdjB2MHdQd2B2MHdgdgB3UHxgbEBnUHxAZ2B2AHdgenBmAHpwasBnYHxAalBnYHpQanBncHcgdwB3cHcAd4B9QG0gZyB9QGcgd3B3gHewd5B3gHeQd3B3kH2AbUBnkH1AZ3B3sHfAd6B3sHegd5B9oG2AZ5B9oGeQd6B3wHewd9B3wHfQd+B30Hewd4B30HeAeBB38Hiwd+B38Hfgd9B4IHfwd9B4IHfQeBB4EHbAeEB4EHhAeCB3gHcAdsB3gHbAeBB4MHhQeHB4MHhweGB4gHgAeDB4gHgweGB4YHhwf4BoYH+Ab2BvYG8gaIB/YGiAeGB/IG8AaJB/IGiQeIB4wHgAeIB4wHiAeJB/AG7QaKB/AGigeJB44HjAeJB44HiQeKB4sHjQePB4sHjwd+B4oHkweRB4oHkQeOB40HkAeUB40HlAePB5QHkAeSB5QHkgeWB48HlAeVB48HlQeZB5UHlAeWB5UHlgeXB5cHlgfkBpcH5AbhBpYHkgfpBpYH6QbkBpgHlwfhBpgH4QbdBpkHlQeXB5kHlweYB90G2gZ6B90GegeYB3wHmQeYB3wHmAd6B5kHfAd+B5kHfgePB+0G6gaTB+0GkweKB4cHmgf8BocH/Ab4BoUHbgeaB4UHmgeHB5oHAgf/BpoH/wb8Bm4HBQcCB24HAgeaB58GnAabB58GmweoBn4GqAabB34GmwecB5oGnAebB5oGmwecBpoGmAadB5oGnQecB34GnAedB34GnQd4BnUGeAadB3UGnQeYBp8HBAaGBp8HhgaeB54HhgaDBp4HgwagB6MHnweeB6MHngehB6EHngegB6EHoAeiB6QHoQeiB6QHogemB6UHowehB6UHoQekB9AFpQekB9AFpAenB6cHpAemB6cHpgeoB6kHpweoB6kHqAeqB84F0AWnB84FpwepB6sHzAXOBasHzgWpB6wHqwepB6wHqQeqB6sHrQfKBasHygXMBawHrgetB6wHrQerB64HsAevB64HrwetB60HrwfIBa0HyAXKBa8HsQfGBa8HxgXIBbAHsgexB7AHsQevB7IHtAezB7IHswexB7EHswfEBbEHxAXGBbMHtQfCBbMHwgXEBbQHtge1B7QHtQezB7YHuQe3B7YHtwe1B7UHtwe/BbUHvwXCBbwFwAW4B7wFuAe7B7sHuAe6B7sHuge8B7oFvAW7B7oFuwe9B70Huwe8B70HvAe+B8AHvwe9B8AHvQe+B78HuAW6Bb8HugW9B78HwAfCB78HwgfBB7gFvwfBB7gFwQe2BcEHwwe0BcEHtAW2BcIHxAfDB8IHwwfBB8UHwwfEB8UHxAfGB7IFtAXDB7IFwwfFB8cHsAWyBccHsgXFB8gHxwfFB8gHxQfGB64FsAXHB64FxwfJB8kHxwfIB8kHyAfKB8sHrAWuBcsHrgXJB8wHywfJB8wHyQfKB80HqgWsBc0HrAXLB84HzQfLB84HywfMB80HzgfRB80H0QfPB6oFzQfPB6oFzwfQB88H0gfUB88H1AfQB9EH0wfSB9EH0gfPB9UH0gfTB9UH0wfXB9YH1AfSB9YH0gfVB9gH2gfWB9gH1gfVB9wH2AfVB9wH1QfXB9kH3gffB9kH3wfbB90H4AfeB90H3gfZB94H4QfjB94H4wffB+AH5gfhB+AH4QfeB+IH5wfoB+IH6AfkB+UH6QfnB+UH5wfiB+cH6gfrB+cH6wfoB+kH7AfqB+kH6gfnB+8H6wfqB+8H6gftB+0H6gfsB+0H7AfuB/IH8AftB/IH7QfuB/AH8QfvB/AH7wftB/UH8QfwB/UH8AfzB/MH8AfyB/MH8gf0B/sH9wfzB/sH8wf0B/cH+Qf1B/cH9QfzB/4H+Af2B/4H9gf8B/wH9gf6B/wH+gf9BwAI/wf8BwAI/Af9B/8HpgX+B/8H/gf8B6IFpgX/B6IF/wcBCAEI/wcACAEIAAgCCAMIoAWiBQMIogUBCAQIAwgBCAQIAQgCCAMIBQieBQMIngWgBQQIBggFCAQIBQgDCAUIBwicBQUInAWeBQYICAgHCAYIBwgFCAoInAUHCAoIBwgJCAkIBwgICAkICAgLCA4ICggJCA4ICQgMCAwICQgLCAwICwgNCAwIDQgUCAwIFAgQCA4IDAgQCA4IEAgSCA8IFQgXCA8IFwgRCBMIFggVCBMIFQgPCBUIFggaCBUIGggYCBcIFQgYCBcIGAgZCBgIGwgdCBgIHQgZCBoIHAgbCBoIGwgYCBsIHAggCBsIIAgeCB0IGwgeCB0IHggfCCEIHwgeCCEIHgggCBwIIwgiCBwIIgggCCEIIAgiCCEIIggkCCUIJAgiCCUIIggjCCEIJAgmCCEIJggoCCUIJwgmCCUIJggkCCkIKAgmCCkIJggnCCEIKAgqCCEIKggsCCkIKwgqCCkIKggoCC0ILAgqCC0IKggrCC0ILwguCC0ILggsCCEILAguCCEILggwCCEIMAgyCC8IMQgwCC8IMAguCDMIMggwCDMIMAgxCCEIMgg0CDMINQg0CDMINAgyCCEINAg2CCEINggfCDUINwg2CDUINgg0CB0IHwg2CB0INgg3CDgINwg1CDgINQg6CBkIHQg3CBkINwg4CDkIOAg6CDkIOgg7CBcIGQg4CBcIOAg5CD0IOwg6CD0IOgg8CDoINQgzCDoIMwg8CDwIMwgxCDwIMQg+CD0IPAg+CD0IPgg/CD8IPghACD8IQAhBCD4IMQgvCD4ILwhACEAILwgtCEAILQhCCEMIQQhACEMIQAhCCEMIQghECEMIRAhFCEIILQgrCEIIKwhECEUIRAhGCEUIRghHCEQIKwgpCEQIKQhGCEYIKQgnCEYIJwhICEcIRghICEcISAhJCEkISAhKCEkISghLCEgIJwglCEgIJQhKCEoIJQgjCEoIIwhMCEsISghMCEsITAhNCE0ITAgaCE0IGggWCEwIIwgcCEwIHAgaCE4ITQgWCE4IFggTCFEISwhNCFEITQhOCFAITwgUCFAIFAgNCFMIUghPCFMITwhQCFQISQhLCFQISwhRCFYIVQhSCFYIUghTCFkIWAhVCFkIVQhWCFcIRwhJCFcISQhUCFoIRQhHCFoIRwhXCFwIWwhYCFwIWAhZCF8IXghbCF8IWwhcCF0IQwhFCF0IRQhaCF8IYghhCF8IYQheCGAIQQhDCGAIQwhdCGMIPwhBCGMIQQhgCGUIZAhhCGUIYQhiCGgIZwhkCGgIZAhlCGYIPQg/CGYIPwhjCGkIOwg9CGkIPQhmCGgIawhqCGgIaghnCG4IbQhqCG4IaghrCGwIOQg7CGwIOwhpCA4IEghtCA4IbQhuCBEIFwg5CBEIOQhsCHAIbwhuCHAIbghrCG8ICggOCG8IDghuCJgFmgVvCJgFbwhwCJoFnAUKCJoFCghvCGgIcQhwCGgIcAhrCHEIcgiYBXEImAVwCHMIcQhoCHMIaAhlCHUIcghxCHUIcQhzCHQIcwhlCHQIZQhiCHYIdQhzCHYIcwh0CHgIcgh1CHgIdQh3CHUIdgh5CHUIeQh3CHcIegh7CHcIewh4CHkIfQh6CHkIegh3CHoIfAhcCnoIXAp7CH0Ifgh8CH0IfAh6CH8IgAh+CH8Ifgh9CHkIgQh/CHkIfwh9CIIIhQiACIIIgAh/CIQIggh/CIQIfwiBCIIIhAiJCIIIiQiGCIcIhQiCCIcIggiGCIcIhgiKCIcIigiLCIYIiQiPCIYIjwiKCIsIigiNCIsIjQjrCIoIjwiTCIoIkwiNCJgIkgiOCJgIjgiUCJQIjgiICJQIiAiWCJUIlAiWCJUIlggOCZoImAiUCJoIlAiVCJwImwiXCJwIlwiZCJsIngiRCJsIkQiXCKAInwibCKAImwicCJ8IogieCJ8IngibCKQIowifCKQInwigCKMIpgiiCKMIogifCKgIpwijCKgIowikCKcIqgimCKcIpgijCKwIqwinCKwIpwioCKsIrgiqCKsIqginCLAIrwirCLAIqwisCK8IsgiuCK8IrgirCLcIswivCLcIrwiwCLMItgiyCLMIsgivCLgItAizCLgIswi3CLQIowm2CLQItgizCLsIuQi3CLsItwiwCLoIuAi3CLoItwi5CLkIvAi+CLkIvgi6CLsIvQi8CLsIvAi5CL0IwgjACL0IwAi8CL4IvAjACL4IwAjECMEIxgjFCMEIxQi/CMMIvwjFCMMIxQjHCMYIyQjICMYIyAjFCMcIxQjICMcIyAjKCM0IywjICM0IyAjJCMoIyAjLCMoIywjMCM8IzAjLCM8IywjOCM4IywjNCM4IzQjQCKIJzwjOCKIJzgi1CLUIzgjQCLUI0AixCLEI0AjRCLEI0QitCNAIzQjTCNAI0wjRCK0I0QjSCK0I0gipCNEI0wjUCNEI1AjSCNQI0wjVCNQI1QjWCNMIzQjJCNMIyQjVCNcI1QjJCNcIyQjYCNkI1gjVCNkI1QjXCGIG1wjYCGIG2AhkBmAG2QjXCGAG1whiBl4G2gjZCF4G2QhgBtoI2wjWCNoI1gjZCFwG3AjaCFwG2gheBtwI3QjbCNwI2wjaCFoG3gjcCFoG3AhcBt4I3wjdCN4I3QjcCFcG4AjeCFcG3ghaBuAI4gjfCOAI3wjeCOQI4QhYBuQIWAZUBuYI4wjhCOYI4QjkCOUI5AhUBuUIVAZSBucI5gjkCOcI5AjlCIsI6wjjCIsI4wjmCOcIhwiLCOcIiwjmCOkI6AjnCOkI5wjlCOcI6AiFCOcIhQiHCHwIfgjoCHwI6AjpCOgIfgiACOgIgAiFCFAG6QjlCFAG5QhSBlAGXAp8CFAGfAjpCOII6gjsCOII7AjfCO4I7AjqCO4I6giMCO8I7QjsCO8I7AjuCOwI7QjdCOwI3QjfCJ0I7giMCJ0IjAiQCKEI7wjuCKEI7gidCKUI8AjvCKUI7wihCPAI8QjtCPAI7QjvCKkI0gjwCKkI8AilCNII1AjxCNII8QjwCO0I8QjbCO0I2wjdCPEI1AjWCPEI1gjbCPII8whkBvIIZAbYCMYI8gjYCMYI2AjJCMEI9AjyCMEI8gjGCPQI9gjzCPQI8wjyCL0I+Aj1CL0I9QjCCPgI+Qj3CPgI9wj1CLsI+gj4CLsI+Ai9CPoIrAf5CPoI+Qj4CPsIrgesB/sIrAf6CPwI+wj6CPwI+gi7CP4I/Qj7CP4I+wj8CP0IsAeuB/0Irgf7CAAJ/wj9CAAJ/Qj+CP8IsgewB/8IsAf9CAIJAQn/CAIJ/wgACQEJtAeyBwEJsgf/CAQJAwkBCQQJAQkCCQMJtge0BwMJtAcBCQcJBQkDCQcJAwkECQUJuQe2BwUJtgcDCboHBgkJCboHCQm8BwYJCAkLCQYJCwkJCbwHCQkKCbwHCgm+BwkJCwkMCQkJDAkKCQwJCwmVCAwJlQgOCQsJCAmaCAsJmgiVCA8JDQkMCQ8JDAkOCQoJDAkNCQoJDQkXCQ8JDgmWCA8JlggQCRAJEwkRCRAJEQkPCQ0JDwkRCQ0JEQkUCREJEgkVCREJFQkUCRMJIwkSCRMJEgkRCRQJFQkYCRQJGAkWCQ0JFAkWCQ0JFgkXCRcJFgnCBxcJwgfABxYJGAnEBxYJxAfCB8QHGAkZCcQHGQnGBxgJFQkbCRgJGwkZCcYHGQkaCcYHGgnIBxkJGwkcCRkJHAkaCRwJGwkdCRwJHQkeCRsJFQkSCRsJEgkdCR0JHwkgCR0JIAkeCRIJIwkfCRIJHwkdCR8JIQk3CR8JNwkgCSMJJAkhCSMJIQkfCScJJAkjCScJIwkTCSYJNAkiCSYJIgklCSkJJgklCSkJJQkoCYMIJwkTCYMIEwkQCYQIgQgpCYQIKQkoCYEIKwkqCYEIKgkpCSoJLAkmCSoJJgkpCSoJKwkvCSoJLwktCSwJKgktCSwJLQkuCS4JLQlcCC4JXAhZCC0JLwlfCC0JXwhcCF8ILwl0CF8IdAhiCC8JKwl2CC8Jdgh0CDAJLglZCDAJWQhWCDIJLAkuCTIJLgkwCTEJMAlWCDEJVghTCDMJMgkwCTMJMAkxCSYJLAkyCSYJMgk0CTIJMwk1CTIJNQk0CTQJNQk4CTQJOAkiCTUJMwmMCTUJjAk2CTUJNgk5CTUJOQk4CYsJOgk4CYsJOAk5CToJQQk9CToJPQk4CTgJPQlACTgJQAk8CTcJOwmECTcJhAkgCUEJQgk+CUEJPgk9CT0JPgljCT0JYwlACUUJRAlBCUUJQQk6CUQJRglCCUQJQglBCUkJSAlECUkJRAlFCUgJSglGCUgJRglECQAI/QdICQAISAlJCf0H+gdKCf0HSglICfsH9AdMCfsHTAlLCUsJTAlNCUsJTQlHCUwJTglPCUwJTwlNCfQH8gdOCfQHTglMCfIH7gdQCfIHUAlOCU4JUAlRCU4JUQlPCVAJUglTCVAJUwlRCe4H7AdSCe4HUglQCVQJUgnsB1QJ7AfpB1cJUwlSCVcJUglUCVUJVAnpB1UJ6QflB1kJVwlUCVkJVAlVCVoJXQlTCVoJUwlXCVwJWglXCVwJVwlZCWAJXglaCWAJWglcCV4JYQldCV4JXQlaCWQJYgleCWQJXglgCWIJZQlhCWIJYQleCT8JZgliCT8JYglkCWYJZwllCWYJZQliCWgJaQlnCWgJZwlmCUMJaAlmCUMJZgk/CUcJTQloCUcJaAlDCU0JTwlpCU0JaQloCWkJagllCWkJZQlnCU8JUQlqCU8JaglpCWoJXQlhCWoJYQllCVEJUwldCVEJXQlqCUAJYwlfCUAJXwlrCWsJXwlbCWsJWwluCTwJQAlrCTwJawltCW0JawluCW0JbglwCXAJbglxCXAJcQlzCW4JWwlYCW4JWAlxCXEJWAlWCXEJVgl0CXMJcQl0CXMJdAl2CXYJdAngB3YJ4AfdB3QJVgnmB3QJ5gfgB9cHdwl1CdcHdQncB3cJeAlyCXcJcgl1CdMHeQl3CdMHdwnXB3kJegl4CXkJeAl3CXsJeQnTB3sJ0wfRB30Jegl5CX0JeQl7CXwJewnRB3wJ0QfOB34JfQl7CX4Jewl8CYAJfwl9CYAJfQl+CX8JgQl6CX8Jegl9CR4Jggl/CR4JfwmACYIJgwmBCYIJgQl/CSAJhAmCCSAJggkeCYQJhQmDCYQJgwmCCTsJbAmFCTsJhQmECYEJgwmFCYEJhQmGCYYJhQlsCYYJbAlvCXgJhglvCXgJbwlyCXoJgQmGCXoJhgl4CRwJHgmACRwJgAmHCYAJfgmICYAJiAmHCYkJhwmICYkJiAmKCRoJHAmHCRoJhwmJCcoHiQmKCcoHignMB8gHGgmJCcgHiQnKB84HzAeKCc4Higl8CYoJiAl+CYoJfgl8CQAISQmLCQAIiwkCCEkJRQk6CUkJOgmLCQIIiwk5CQIIOQkECDYJBggECDYJBAg5CYwJCAgGCIwJBgg2CY0JjAkzCY0JMwkxCQsICAiMCQsIjAmNCVAIjQkxCVAIMQlTCA0ICwiNCQ0IjQlQCHYIKwmBCHYIgQh5CMAHvgcKCcAHCgkXCZYIiAiDCJYIgwgQCQcJBAmcCAcJnAiZCAQJAgmgCAQJoAicCKAIAgkACaAIAAmkCAAJ/gioCAAJqAikCKgI/gj8CKgI/AisCPwIuwiwCPwIsAisCPcI+QiOCfcIjgmQCfkIrAeqB/kIqgeOCZAJjgmRCZAJkQmTCY4JqgeoB44JqAeRCZMJkQmUCZMJlAmVCZEJqAemB5EJpgeUCZUJlAmXCZUJlwmYCZQJpgeiB5QJogeXCZgJlwmaCZgJmgmbCZcJogegB5cJoAeaCZsJmgmABpsJgAZ7BpoJoAeDBpoJgwaABp0JnAl8Bp0JfAZ3Bp4JmQmcCZ4JnAmdCW4GnQl3Bm4GdwZwBmwGngmdCWwGnQluBmoGnwmeCWoGnglsBp8JlgmZCZ8JmQmeCWgGoAmfCWgGnwlqBqAJkgmWCaAJlgmfCWYGoQmgCWYGoAloBqEJjwmSCaEJkgmgCWQG8wihCWQGoQlmBvMI9giPCfMIjwmhCacJpAnPCKcJzwiiCaQJpgnMCKQJzAjPCKkJpQmkCakJpAmnCaUJwAmmCaUJpgmkCasJqAmjCasJowmtCawJqgmoCawJqAmrCbAJrAmrCbAJqwmuCa4JqwmtCa4JrQmvCa4JrwmzCa4JswmxCbAJrgmxCbAJsQmyCbEJtAm1CbEJtQmyCbMJtgm0CbMJtAmxCbUJtAm4CbUJuAm6CbQJtgnECLQJxAi4CbcJuwm8CbcJvAm5CcMIxwi7CcMIuwm3CbwJuwm9CbwJvQm+CbsJxwjKCLsJygi9Cb0JygjMCL0JzAimCb4JvQmmCb4JpgnACbwJvgm/CbwJvwlBCsAJwQm/CcAJvwm+CcQJwQnACcQJwAmlCccJwgnBCccJwQnECb8JwQnCCb8Jwgk6CsUJxAmlCcUJpQmpCckJxwnECckJxAnFCc0JzAnICc0JyAnLCcwJzgnDCcwJwwnICc0J0gnPCc0JzwnMCcwJzwnQCcwJ0AnOCc8J0Qn0Cc8J9AnQCdIJ0wnRCdIJ0QnPCdUJ1AnSCdUJ0gnNCdQJ1gnTCdQJ0wnSCdkJ1wnUCdkJ1AnVCdcJ2AnWCdcJ1gnUCdoJ3AnYCdoJ2AnXCdsJ2gnXCdsJ1wnZCd4J3QnaCd4J2gnbCd0J3wncCd0J3AnaCeEJ4AndCeEJ3QneCeAJ4gnfCeAJ3wndCeEJ5gnjCeEJ4wngCeAJ4wnkCeAJ5AniCeMJ5Qn7CeMJ+wnkCeYJ5wnlCeYJ5QnjCegJ6gnnCegJ5wnmCekJ6AnmCekJ5gnhCewJ6wnoCewJ6AnpCesJ7QnqCesJ6gnoCewJzgnuCewJ7gnrCe4J7wntCe4J7QnrCdAJ8AnuCdAJ7gnOCfAJ8QnvCfAJ7wnuCfQJ8gnwCfQJ8AnQCfIJ8wnxCfIJ8QnwCfUJ9wnzCfUJ8wnyCfYJ9QnyCfYJ8gn0CfkJ+An1CfkJ9Qn2CfgJ+gn3CfgJ9wn1CeIJ5An4CeIJ+An5CeQJ+wn6CeQJ+gn4CfoJ/An9CfoJ/Qn3CfsJ/wn8CfsJ/An6CfwJ/gkPCvwJDwr9Cf8JAAr+Cf8J/gn8CQEKAgoACgEKAAr/CeUJAQr/CeUJ/wn7CecJAwoBCucJAQrlCQMKBAoCCgMKAgoBCgUKBgoECgUKBAoDCuoJBQoDCuoJAwrnCe0JBwoFCu0JBQrqCQcKCAoGCgcKBgoFCu0J7wkJCu0JCQoHCgkKCgoICgkKCAoHCvEJCwoJCvEJCQrvCQsKDAoKCgsKCgoJCvMJDQoLCvMJCwrxCQ0KDgoMCg0KDAoLCv0JDwoOCv0JDgoNCvMJ9wn9CfMJ/QkNCgwKDgoPCgwKDwoQChAKDwr+CRAK/gkRCggKCgoMCggKDAoQCggKEAoRCggKEQoGCgYKEQoCCgYKAgoEChEK/gkAChEKAAoCCvkJEgoTCvkJEwriCfYJFQoSCvYJEgr5CRIKFAolChIKJQoTChUKFgoUChUKFAoSCvYJ9AkXCvYJFwoVChcKGAoWChcKFgoVChkKGgoYChkKGAoXCtEJGQoXCtEJFwr0CdMJGwoZCtMJGQrRCRsKHAoaChsKGgoZCtYJHQobCtYJGwrTCR0KHgocCh0KHAobCtgJHwodCtgJHQrWCR8KIAoeCh8KHgodCiEKIgogCiEKIAofCtgJ3AkhCtgJIQofCt8JIwohCt8JIQrcCSMKJAoiCiMKIgohCuIJEwojCuIJIwrfCRMKJQokChMKJAojCiQKJgonCiQKJwoiCiUKKQomCiUKJgokCiYKKAo5CiYKOQonCikKKgooCikKKAomCisKLAoqCisKKgopChQKKwopChQKKQolChYKLQorChYKKwoUCi0KLgosCi0KLAorChYKGAovChYKLwotCi8KMAouCi8KLgotCjEKMgowCjEKMAovChoKMQovChoKLwoYChwKMwoxChwKMQoaCjMKNAoyCjMKMgoxCh4KNQozCh4KMwocCjUKNgo0CjUKNAozCiAKNwo1CiAKNQoeCjcKOAo2CjcKNgo1CiIKJwo3CiIKNwogCicKOQo4CicKOAo3CjkKKAo2CjkKNgo4CigKKgo0CigKNAo2CioKLAoyCioKMgo0CiwKLgowCiwKMAoyCsMJzgnsCcMJ7Ak7Cj0KOwrsCT0K7AnpCUEKvwk6CkEKOgo8CkAKPQrpCUAK6QnhCUIKQQo8CkIKPAo+CrkJvAlBCrkJQQpCCkQKQwo/CkQKPwpGCrUJuglDCrUJQwpECrIJtQlECrIJRApFCkUKRApGCkUKRgpICkkKRwreCUkK3gnbCUcKQArhCUcK4QneCUwKRQpICkwKSApKCkkK2wnZCUkK2QlLCtkJ1QlOCtkJTgpLCkoKTQpPCkoKTwpMCk0KygnGCU0KxglPCtUJzQnLCdUJywlOCkwKTwqsCUwKrAmwCU8KxgmqCU8KqgmsCbIJRQpMCrIJTAqwCbMJUgpQCrMJUAq2CcQItglQCsQIUApRClMKUQpQClMKUApSClQKVQpTClQKUwpSCq8JVApSCq8JUgqzCa8JrQlWCq8JVgpUClUKVApWClUKVgpXCqMJVwpWCqMJVgqtCaMJtAhYCqMJWApXClUKVwpYClUKWApZCrgIWQpYCrgIWAq0CFMKVQpZClMKWQpaClkKuAi6CFkKughaCroIvghbCroIWwpaClMKWgpbClMKWwpRCsQIUQpbCsQIWwq+CF0KXApQBl0KUAZOBnsIXApdCnsIXQpeCl4KXQpfCl4KXwpgCl8KXQpOBl8KTgZMBmAKXwphCmAKYQpkCkoGYQpfCkoGXwpMBmMKYQpKBmMKSgZIBmcKZAphCmcKYQpjCmoKZQpkCmoKZApnCnMKYApkCnMKZAplCmgKZgpiCmgKYgpyCmsKaQpmCmsKZgpoCooFjAVlCooFZQpqCoYFiQVpCoYFaQprCmsKaApuCmsKbgpsCoQFhgVrCoQFawpsCmwKbgpwCmwKcAptCoQFbAptCoQFbQqCBWgKcgpvCmgKbwpuCm4KbwpxCm4KcQpwCisAbQpwCisAcApxCm8KQgZABm8KQAZxCisAcQpABm8KcgpEBm8KRAZCBnIKYgpHBnIKRwZEBisAggVtCmUKjAWOBWUKjgVzCnMKdApeCnMKXgpgCnQKcwqOBXQKjgWQBZQFlgV4CJQFeAh0CpAFkgWUBZAFlAV0CnQKeAh7CHQKewheCpYFmAVyCJYFcgh4CHcKdQr+B3cK/gemBXUKeAr4B3UK+Af+B9sH3wd1CtsHdQp3Ct8H4wd4Ct8HeAp1CuQH6Ad6CuQHegp5CnkKegr1B3kK9Qf5B3oK7wfxB3oK8Qf1B+gH6wfvB+gH7wd6CnsK1gfaB3sK2gd2CqgFewp2CqgFdgqlBaoF0Ad7CqoFewqoBdAH1AfWB9AH1gd7CnwKpQfQBXwK0AXSBX4KowelB34KpQd8Cn0KfArSBX0K0gXUBX8Kfgp8Cn8KfAp9CoAKfgp/CoAKfwqBCp8Howd+Cp8HfgqACgIGgAqBCgIGgQoABgQGnweACgQGgAoCBgAGgQqCCgAGggr9BYEKfwqFCoEKhQqCCv4FgwqECv4FhAr6BYMKhgqHCoMKhwqECocKhgqJCocKiQqKCoUKfwp9CoUKfQqICooKiQrYBYoK2AXaBYgKfQrUBYgK1AXXBdoF3AWLCtoFiwqKCooKiwqMCooKjAqHCosKjQqOCosKjgqMCtwF3gWNCtwFjQqLCo0KjwqQCo0KkAqOCt4F4AWPCt4FjwqNCo8KkQqSCo8KkgqQCuAF4gWRCuAFkQqPCpEKkwqUCpEKlAqSCuIF5AWTCuIFkwqRCpMK6AXqBZMK6gWUCuQF5gXoBeQF6AWTCpQK6gXsBZQK7AWVCpIKlAqVCpIKlQqWCpYKlQrwBZYK8AXyBZUK7AXuBZUK7gXwBZcKlgryBZcK8gX0BZAKkgqWCpAKlgqXCpgKlwr0BZgK9AX2BY4KkAqXCo4KlwqYCpkKmAr2BZkK9gX4BYwKjgqYCowKmAqZCoQKmQr4BYQK+AX6BYcKjAqZCocKmQqECpoKmwrDCpoKwwqcCp0KmgqcCp0KnAqgCp8KnQqgCp8KoAqiCqIKoAqjCqIKowqlCqAKnAqmCqAKpgqjCqUKowqnCqUKpwqpCqYKqgqnCqYKpwqjCqwKqQqnCqwKpwqqCqwKqgqtCqwKrQqwCqYKrgqtCqYKrQqqCrIKsAqtCrIKrQquCrEKtAqzCrEKswqvCqsKrwqzCqsKswq1CrYKtQqzCrYKswq0CqsKtQq3CqsKtwqoCrYKuAq3CrYKtwq1CqQKqAq3CqQKtwq4CroKuQq4CroKuAq2CrkKoQqkCrkKpAq4CrwKuwq5CrwKuQq6CrsKngqhCrsKoQq5Cr0KvAq6Cr0KugrACr4KvQrACr4KwArBCsEKwAq0CsEKtAqxCsAKugq2CsAKtgq0CsMKwgqyCsMKsgquCpsKvwrCCpsKwgrDCpwKwwquCpwKrgqmCsQKxwrtCsQK7QrGCskKywrICskKyArFCsoKzArLCsoKywrJCswKzgrNCswKzQrLCssKzQrPCssKzwrICs4K0grRCs4K0QrNCs8KzQrRCs8K0QrTCtUK0wrRCtUK0QrSCtYK2QrXCtYK1wrUCtAK1ArXCtAK1wrYCtoK2ArXCtoK1wrZCtoK2QrbCtoK2wrcCtYK3grbCtYK2wrZCt8K3ArbCt8K2wreCtUK0grhCtUK4QrdCuAK3QrhCuAK4QriCs4K4grhCs4K4QrSCuUK4AriCuUK4grjCuMK4grOCuMKzgrMCugK5QrjCugK4wrmCuYK4wrMCuYKzArKCukK6wrkCukK5ArnCuoK7ArrCuoK6wrpCuwK2grcCuwK3ArrCusK3ArfCusK3wrkCu0K2AraCu0K2grsCsYK7QrsCsYK7ArqCscK0ArYCscK2ArtCu4K8QoXC+4KFwvwCvMK9QryCvMK8grvCvQK9gr1CvQK9QrzCvYK+Ar3CvYK9wr1CvUK9wr6CvUK+gryCvgK/Ar7CvgK+wr3CvoK9wr7CvoK+wr+CgAL/gr7CgAL+wr8Cv8KAwsBC/8KAQv9CvkK/QoBC/kKAQsCCwQLAgsBCwQLAQsDCwQLAwsFCwQLBQsGC/8KBwsFC/8KBQsDCwkLBgsFCwkLBQsHCwAL/AoLCwALCwsICwoLCAsLCwoLCwsMC/gKDAsLC/gKCwv8Cg8LCgsMCw8LDAsNCw0LDAv4Cg0L+Ar2ChILDwsNCxILDQsQCxALDQv2ChAL9gr0ChMLFQsOCxMLDgsRCxQLFgsVCxQLFQsTCxYLBAsGCxYLBgsVCxULBgsJCxULCQsOCxcLAgsECxcLBAsWC/AKFwsWC/AKFgsUC/EK+QoCC/EKAgsXCxgLGgtBCxgLQQsZCxsLHgsaCxsLGgsYCxwLHwseCxwLHgsbCx8LIgshCx8LIQseCx4LIQskCx4LJAsaCyILJgslCyILJQshCyQLIQslCyQLJQsoCykLKAslCykLJQsmCykLLQsrCykLKwsoCyQLKAsrCyQLKwssCy8LLAsrCy8LKwstCzALLgsxCzALMQsyCyoLMwsxCyoLMQsuCzQLMgsxCzQLMQszCyoLJws1CyoLNQszCzQLMws1CzQLNQs2CyMLNgs1CyMLNQsnCzgLNAs2CzgLNgs3CzcLNgsjCzcLIwsgCzoLOAs3CzoLNws5CzkLNwsgCzkLIAsdCzsLPgs4CzsLOAs6Cz0LQAs+Cz0LPgs7C0ALMAsyC0ALMgs+Cz4LMgs0Cz4LNAs4C0ELLAsvC0ELLws/CxkLQQs/CxkLPws8CxoLJAssCxoLLAtBC0MLRgtrC0MLawtEC0cLSQtFC0cLRQtCC0gLSgtJC0gLSQtHC0oLTAtLC0oLSwtJC0kLSwtNC0kLTQtFC0wLUAtPC0wLTwtLC00LSwtPC00LTwtRC1MLUQtPC1MLTwtQC1QLVwtVC1QLVQtSC04LUgtVC04LVQtWC1gLVgtVC1gLVQtXC1gLVwtZC1gLWQtaC1QLXAtZC1QLWQtXC14LWgtZC14LWQtcC1MLUAtfC1MLXwtbC10LWwtfC10LXwtgC0wLYAtfC0wLXwtQC2ILXQtgC2ILYAthC2ELYAtMC2ELTAtKC2ULYgthC2ULYQtkC2QLYQtKC2QLSgtIC2cLaQtjC2cLYwtmC2gLagtpC2gLaQtnC2oLWAtaC2oLWgtpC2kLWgteC2kLXgtjC2sLVgtYC2sLWAtqC0QLawtqC0QLagtoC0YLTgtWC0YLVgtrC20LcAuVC20LlQtuC3ELcwtvC3ELbwtsC3ILdAtzC3ILcwtxC3QLdgt1C3QLdQtzC3MLdQt3C3MLdwtvC3YLegt5C3YLeQt1C3cLdQt5C3cLeQt7C30Lewt5C30LeQt6C34LgQt/C34Lfwt8C3gLfAt/C3gLfwuAC4ILgAt/C4ILfwuBC4ILgQuDC4ILgwuEC34LhguDC34LgwuBC4gLhAuDC4gLgwuGC30LeguJC30LiQuFC4cLhQuJC4cLiQuKC3YLiguJC3YLiQt6C4wLhwuKC4wLiguLC4sLigt2C4sLdgt0C48LjAuLC48LiwuOC44Liwt0C44LdAtyC5ELkwuNC5ELjQuQC5ILlAuTC5ILkwuRC5QLgguEC5QLhAuTC5MLhAuIC5MLiAuNC5ULgAuCC5ULgguUC24LlQuUC24LlAuSC3ALeAuAC3ALgAuVC5cLmgu/C5cLvwuYC5sLnQuZC5sLmQuWC5wLngudC5wLnQubC54LoAufC54LnwudC50LnwuhC50LoQuZC6ALpAujC6ALowufC6ELnwujC6ELowumC6gLpgujC6gLowukC6cLqwupC6cLqQulC6ILpQupC6ILqQuqC6wLqgupC6wLqQurC6wLqwutC6wLrQuuC6cLrwutC6cLrQurC7ELrgutC7ELrQuvC6gLpAuzC6gLswuwC7ILsAuzC7ILswu0C6ALtAuzC6ALswukC7YLsgu0C7YLtAu1C7ULtAugC7ULoAueC7kLtgu1C7kLtQu4C7gLtQueC7gLngucC7sLvQu3C7sLtwu6C7wLvgu9C7wLvQu7C74LrAuuC74Lrgu9C70LrguxC70LsQu3C78LqgusC78LrAu+C5gLvwu+C5gLvgu8C5oLoguqC5oLqgu/C8ELwgvpC8EL6QvEC8ULwAvDC8ULwwvHC8YLxQvHC8YLxwvIC8gLxwvJC8gLyQvKC8cLwwvLC8cLywvJC8oLyQvNC8oLzQvOC8sLzwvNC8sLzQvJC9ELzgvNC9ELzQvPC9IL0AvTC9IL0wvVC8wL1AvTC8wL0wvQC9YL1QvTC9YL0wvUC9YL2AvXC9YL1wvVC9IL1QvXC9IL1wvaC9wL2gvXC9wL1wvYC9EL2QvdC9EL3QvOC9sL3gvdC9sL3QvZC8oLzgvdC8oL3QveC+AL3wveC+AL3gvbC98LyAvKC98LygveC+ML4gvfC+ML3wvgC+ILxgvIC+ILyAvfC+UL5AvhC+UL4QvnC+YL5QvnC+YL5wvoC+gL5wvYC+gL2AvWC+cL4QvcC+cL3AvYC+kL6AvWC+kL1gvUC8IL5gvoC8IL6AvpC8QL6QvUC8QL1AvMC+oL6wsTDOoLEwzsC+0L6gvsC+0L7AvwC+8L7QvwC+8L8AvyC/IL8AvzC/IL8wv1C/AL7Av2C/AL9gvzC/UL8wv3C/UL9wv5C/YL+gv3C/YL9wvzC/wL+Qv3C/wL9wv6C/wL+gv9C/wL/QsADPYL/gv9C/YL/Qv6CwIMAAz9CwIM/Qv+CwEMBAwDDAEMAwz/C/sL/wsDDPsLAwwFDAYMBQwDDAYMAwwEDPsLBQwHDPsLBwz4CwYMCAwHDAYMBwwFDPQL+AsHDPQLBwwIDAoMCQwIDAoMCAwGDAkM8Qv0CwkM9AsIDAwMCwwJDAwMCQwKDAsM7gvxCwsM8QsJDA0MDAwKDA0MCgwQDA4MDQwQDA4MEAwRDBEMEAwEDBEMBAwBDBAMCgwGDBAMBgwEDBMMEgwCDBMMAgz+C+sLDwwSDOsLEgwTDOwLEwz+C+wL/gv2CxQMGQyPDBQMjwwXDBgMIAwbDBgMGwwVDBwMHwwaDBwMGgwWDB4MLAwfDB4MHwwcDCAMIgwdDCAMHQwbDCEMIwwiDCEMIgwgDHAMIQwgDHAMIAwYDCMMJQwkDCMMJAwiDCIMJAwnDCIMJwwdDCUMggwmDCUMJgwkDCQMJgwpDCQMKQwnDCgMKgwsDCgMLAweDCkMLQwqDCkMKgwoDCoMKwyQDCoMkAwsDC0MLgwrDC0MKwwqDC8MMQwuDC8MLgwtDCYMLwwtDCYMLQwpDDAMMgwxDDAMMQwvDIIMMAwvDIIMLwwmDDIMNAwzDDIMMwwxDDEMMww2DDEMNgwuDDQMjgw1DDQMNQwzDDMMNQw3DDMMNww2DDYMNww7DDYMOww4DC4MNgw4DC4MOAwrDCsMOAw5DCsMOQyQDDgMOww9DDgMPQw5DDUMPgw6DDUMOgw3DD4MQAw8DD4MPAw6DD8MQQxADD8MQAw+DI4MPww+DI4MPgw1DEEMQwxCDEEMQgxADEAMQgxGDEAMRgw8DEMMVwxFDEMMRQxCDEIMRQxJDEIMSQxGDDkMPQxHDDkMRwxLDEsMRwxKDEsMSgxODJAMOQxLDJAMSwxMDEwMSwxODEwMTgxQDE8MTQxRDE8MUQxSDE0MSAxEDE0MRAxRDFIMUQxTDFIMUwxUDFEMRAxWDFEMVgxTDFQMUwxVDFQMVQxoDFMMVgxYDFMMWAxVDFwMWQxXDFwMVwxDDFUMWAxaDFUMWgxlDF8MWwxZDF8MWQxcDF0MXAxDDF0MQwxBDGEMXwxcDGEMXAxdDGUMWgxeDGUMXgxiDGIMXgxgDGIMYAxkDGMMYgxkDGMMZAx5DGYMZQxiDGYMYgxjDGgMVQxlDGgMZQxmDGkMaAxmDGkMZgxnDGcMZgxjDGcMYwx3DGoMVAxoDGoMaAxpDG8MagxpDG8MaQxrDGsMaQxnDGsMZwxtDG4MdAxxDG4McQxsDGwMcQwhDGwMIQxwDHEMcgwjDHEMIwwhDHQMdgxyDHQMcgxxDHMMdwx4DHMMeAx1DG0MZwx3DG0MdwxzDHcMYwx5DHcMeQx4DHgMeQx7DHgMewx6DHUMeAx6DHUMegx9DHoMewyGDHoMhgx8DH0Megx8DH0MfAx/DH4MfwyBDH4MgQyADHYMfgyADHYMgAxyDHIMgAwlDHIMJQwjDIAMgQyCDIAMggwlDIEMgwwwDIEMMAyCDH8MfAyDDH8MgwyBDIMMhAwyDIMMMgwwDHwMhgyEDHwMhAyDDIQMhQw0DIQMNAwyDIYMhwyFDIYMhQyEDHsMiQyHDHsMhwyGDIkMigyIDIkMiAyHDIcMiAyNDIcMjQyFDHkMZAyJDHkMiQx7DGQMYAyKDGQMigyJDIsMYQxdDIsMXQyMDIgMiwyMDIgMjAyNDIwMXQxBDIwMQQw/DI0MjAw/DI0MPwyODIUMjQyODIUMjgw0DBcMjwxqDBcMagxvDI8MUgxUDI8MVAxqDBkMTwxSDBkMUgyPDB8MTAxQDB8MUAwaDCwMkAxMDCwMTAwfDJEMkwzGDJEMxgySDJIMlwyUDJIMlAyRDJQMlgyTDJQMkwyRDJUMogyWDJUMlgyUDJcMmQyVDJcMlQyUDJgMmgyZDJgMmQyXDMUMmAyXDMUMlwySDJoMnAybDJoMmwyZDJkMmwyeDJkMngyVDJwMyQydDJwMnQybDJsMnQyfDJsMnwyeDJ4MoAyiDJ4MogyVDJ8MowygDJ8MoAyeDKAMoQzHDKAMxwyiDKMMpAyhDKMMoQygDKUMpwykDKUMpAyjDJ0MpQyjDJ0MowyfDKYMqAynDKYMpwylDMkMpgylDMkMpQydDKgMqgypDKgMqQynDKcMqQysDKcMrAykDKoMyAyrDKoMqwypDKkMqwytDKkMrQysDKwMrQywDKwMsAyuDKQMrAyuDKQMrgyhDKEMrgyvDKEMrwzHDK4MsAyxDK4MsQyvDKsMsgywDKsMsAytDLIMtAyxDLIMsQywDLMMtQy0DLMMtAyyDMgMswyyDMgMsgyrDLUMtwy2DLUMtgy0DLQMtgy5DLQMuQyxDLcMwwy4DLcMuAy2DLYMuAy6DLYMugy5DK8MsQy5DK8MuQy7DLsMuQy6DLsMugy9DMcMrwy7DMcMuwy8DLwMuwy9DLwMvQy+DL4MvQy/DL4MvwzADL0Mugy4DL0MuAy/DMAMvwzBDMAMwQzCDL8MuAzDDL8MwwzBDMYMwAzCDMYMwgzEDJIMxgzEDJIMxAzFDJMMvgzADJMMwAzGDJYMvAy+DJYMvgyTDKIMxwy8DKIMvAyWDMoMywz/DMoM/wzMDMsMygzNDMsMzQzQDM0MygzMDM0MzAzPDM4MzQzPDM4MzwzbDNAMzQzODNAMzgzSDNEM0AzSDNEM0gzTDP4MywzQDP4M0AzRDNMM0gzUDNMM1AzVDNIMzgzXDNIM1wzUDNUM1AzWDNUM1gwCDdQM1wzYDNQM2AzWDNcMzgzbDNcM2wzZDNgM1wzZDNgM2QzcDNkM2wwADdkMAA3aDNwM2QzaDNwM2gzdDN4M3AzdDN4M3QzgDNYM2AzcDNYM3AzeDN8M3gzgDN8M4AzhDAIN1gzeDAIN3gzfDOEM4AziDOEM4gzjDOAM3QzlDOAM5QziDOMM4gzkDOMM5AwBDeIM5QzmDOIM5gzkDOUM5wzpDOUM6QzmDN0M2gznDN0M5wzlDNoMAA3oDNoM6AznDOcM6AzqDOcM6gzpDOQM5gzpDOQM6QzrDOsM6QzqDOsM6gztDOwM6wztDOwM7QzuDAEN5AzrDAEN6wzsDO4M7QzvDO4M7wzwDO0M6gzyDO0M8gzvDPAM7wzxDPAM8Qz8DO8M8gzzDO8M8wzxDOgM9AzyDOgM8gzqDPQM9gzzDPQM8wzyDAAN9Qz0DAAN9AzoDPUM9wz2DPUM9gz0DPcM+Qz4DPcM+Az2DPYM+AzxDPYM8QzzDPkM+wz6DPkM+gz4DPgM+gz8DPgM/AzxDP8M/Qz7DP8M+wz5DMsM/gz9DMsM/Qz/DMwM/wz5DMwM+Qz3DM8MzAz3DM8M9wz1DNsMzwz1DNsM9QwADQMNCA1+DQMNfg0GDQcNDw0KDQcNCg0EDQsNDg0JDQsNCQ0FDQ0NGw0ODQ0NDg0LDQ8NEQ0MDQ8NDA0KDRANEg0RDRANEQ0PDV8NEA0PDV8NDw0HDRINFA0TDRINEw0RDRENEw0WDRENFg0MDRQNcQ0VDRQNFQ0TDRMNFQ0YDRMNGA0WDRcNGQ0bDRcNGw0NDRgNHA0ZDRgNGQ0XDRkNGg1/DRkNfw0bDRwNHQ0aDRwNGg0ZDR4NIA0dDR4NHQ0cDRUNHg0cDRUNHA0YDR8NIQ0gDR8NIA0eDXENHw0eDXENHg0VDSENIw0iDSENIg0gDSANIg0lDSANJQ0dDSMNfQ0kDSMNJA0iDSINJA0mDSINJg0lDSUNJg0qDSUNKg0nDR0NJQ0nDR0NJw0aDRoNJw0oDRoNKA1/DScNKg0sDScNLA0oDSQNLQ0pDSQNKQ0mDS0NLw0rDS0NKw0pDS4NMA0vDS4NLw0tDX0NLg0tDX0NLQ0kDTANMg0xDTANMQ0vDS8NMQ01DS8NNQ0rDTINRg00DTINNA0xDTENNA04DTENOA01DSgNLA02DSgNNg06DToNNg05DToNOQ09DX8NKA06DX8NOg07DTsNOg09DTsNPQ0/DT4NPA1ADT4NQA1BDTwNNw0zDTwNMw1ADUENQA1CDUENQg1DDUANMw1FDUANRQ1CDUMNQg1EDUMNRA1XDUINRQ1HDUINRw1EDUsNSA1GDUsNRg0yDUQNRw1JDUQNSQ1UDU4NSg1IDU4NSA1LDUwNSw0yDUwNMg0wDVANTg1LDVANSw1MDVQNSQ1NDVQNTQ1RDVENTQ1PDVENTw1TDVINUQ1TDVINUw1oDVUNVA1RDVUNUQ1SDVcNRA1UDVcNVA1VDVgNVw1VDVgNVQ1WDVYNVQ1SDVYNUg1mDVkNQw1XDVkNVw1YDV4NWQ1YDV4NWA1aDVoNWA1WDVoNVg1cDV0NYw1gDV0NYA1bDVsNYA0QDVsNEA1fDWANYQ0SDWANEg0QDWMNZQ1hDWMNYQ1gDWINZg1nDWINZw1kDVwNVg1mDVwNZg1iDWYNUg1oDWYNaA1nDWcNaA1qDWcNag1pDWQNZw1pDWQNaQ1sDWkNag11DWkNdQ1rDWwNaQ1rDWwNaw1uDW0Nbg1wDW0NcA1vDWUNbQ1vDWUNbw1hDWENbw0UDWENFA0SDW8NcA1xDW8NcQ0UDXANcg0fDXANHw1xDW4Naw1yDW4Ncg1wDXINcw0hDXINIQ0fDWsNdQ1zDWsNcw1yDXMNdA0jDXMNIw0hDXUNdg10DXUNdA1zDWoNeA12DWoNdg11DXgNeQ13DXgNdw12DXYNdw18DXYNfA10DWgNUw14DWgNeA1qDVMNTw15DVMNeQ14DXoNUA1MDXoNTA17DXcNeg17DXcNew18DXsNTA0wDXsNMA0uDXwNew0uDXwNLg19DXQNfA19DXQNfQ0jDQYNfg1ZDQYNWQ1eDX4NQQ1DDX4NQw1ZDQgNPg1BDQgNQQ1+DQ4NOw0/DQ4NPw0JDRsNfw07DRsNOw0ODWgAawCMDWgAjA2NDQoCjA2LDQoCiw0HAm8AdACJDW8AiQ2KDQQCiQ2IDQQCiA0CAgAChw2IDQACiA13AP0Bhg2HDf0Bhw0AAvwBhg2FDfwBhQ35AfkBhQ2DDfkBgw3zAfQBhA2CDfQBgg3wAfABgg2BDfABgQ3uAekBgA2BDekBgQ3qAWgAjQ2ADWgAgA3pAQ4Gmw2aDQ4Gmg0MBpAGjQaZDZAGmQ2aDQkGmA2XDQkGlw0GBooGiAaWDYoGlg2XDYYGBAaWDYYGlg2VDYMGhgaVDYMGlQ2UDYIGfwaTDYIGkw2UDX8GeQaRDX8GkQ2TDXoGdgaQDXoGkA2SDXYGdAaPDXYGjw2QDW8GcAaPDW8Gjw2ODQ4GbwaODQ4Gjg2bDauqKj2rqqo9AAAAPquqKj5VVVU+AACAPlVVlT6rqqo+AADAPlVV1T6rquo+AAAAP6uqCj9VVRU/AAAgP6uqKj9VVTU/AABAP6uqSj9VVVU/AABgP6uqaj9VVXU/AACAP1VVhT+rqoo/AACQP1VVlT+rqpo/AACgP1VVpT+rqqo/AACwP1VVtT+rqro/AADAP1VVxT+rqso/AADQP1VV1T+rqto/AADgP1VV5T+rquo/AADwP1VV9T+rqvo/AAAAQKuqAkBVVQVAAAAIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEzvrjMAAAAAAAAAAAAAgD9M764zAAAAAAAAAAAAAIA/TO+uMwAAAAAAAAAAAACAP0zvrjMAAAAAAAAAAAAAgD9M764zAAAAAAAAAAAAAIA/TO+uMwAAAAAAAAAAAACAP0zvrjMAAAAAAAAAAAAAgD9M764zAAAAAAAAAAAAAIA/TO+uMwAAAAAAAAAAAACAP0zvrjMAAAAAAAAAAAAAgD9M764zAAAAAAAAAAAAAIA/TO+uMwAAAAAAAAAAAACAP0zvrjMAAAAAAAAAAAAAgD9M764zAAAAAAAAAAAAAIA/TO+uMwAAAAAAAAAAAACAP0zvrjMAAAAAAAAAAAAAgD9M764zAAAAAAAAAAAAAIA/TO+uMwAAAAAAAAAAAACAP0zvrjMAAAAAAAAAAAAAgD9M764zAAAAAAAAAAAAAIA/TO+uMwAAAAAAAAAAAACAP0zvrjMAAAAAAAAAAAAAgD9M764zAAAAAAAAAAAAAIA/TO+uMwAAAAAAAAAAAACAP0zvrjMAAAAAAAAAAAAAgD9M764zAAAAAAAAAAAAAIA/TO+uMwAAAAAAAAAAAACAP0zvrjMAAAAAAAAAAAAAgD9M764zAAAAAAAAAAAAAIA/TO+uMwAAAAAAAAAAAACAP0zvrjMAAAAAAAAAAAAAgD9M764zAAAAAAAAAAAAAIA/TO+uMwAAAAAAAAAAAACAP0zvrjMAAAAAAAAAAAAAgD9M764zAAAAAAAAAAAAAIA/TO+uMwAAAAAAAAAAAACAP0zvrjMAAAAAAAAAAAAAgD9M764zAAAAAAAAAAAAAIA/TO+uMwAAAAAAAAAAAACAP0zvrjMAAAAAAAAAAAAAgD9M764zAAAAAAAAAAAAAIA/TO+uMwAAAAAAAAAAAACAP0zvrjMAAAAAAAAAAAAAgD9M764zAAAAAAAAAAAAAIA/TO+uMwAAAAAAAAAAAACAP0zvrjMAAAAAAAAAAAAAgD9M764zAAAAAAAAAAAAAIA/TO+uMwAAAAAAAAAAAACAP0zvrjMAAAAAAAAAAAAAgD9M764zAAAAAAAAAAAAAIA/TO+uMwAAAAAAAAAAAACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAAAAi+iI+AAAAAAAAAAAi+iI+AAAAAAAAAAAi+iI+AAAAAAAAAAAi+iI+AAAAAAAAAAAi+iI+AAAAAAAAAAAi+iI+AAAAAAAAAAAi+iI+AAAAAAAAAAAi+iI+AAAAAAAAAAAi+iI+AAAAAAAAAAAi+iI+AAAAAAAAAAAi+iI+AAAAAAAAAAAi+iI+AAAAAAAAAAAi+iI+AAAAAAAAAAAi+iI+AAAAAAAAAAAi+iI+AAAAAAAAAAAi+iI+AAAAAAAAAAAi+iI+AAAAAAAAAAAi+iI+AAAAAAAAAAAi+iI+AAAAAAAAAAAi+iI+AAAAAAAAAAAi+iI+AAAAAAAAAAAi+iI+AAAAAAAAAAAi+iI+AAAAAAAAAAAi+iI+AAAAAAAAAAAi+iI+AAAAAAAAAAAi+iI+AAAAAAAAAAAi+iI+AAAAAAAAAAAi+iI+AAAAAAAAAAAi+iI+AAAAAAAAAAAi+iI+AAAAAAAAAAAi+iI+AAAAAAAAAAAi+iI+AAAAAAAAAAAi+iI+AAAAAAAAAAAi+iI+AAAAAAAAAAAi+iI+AAAAAAAAAAAi+iI+AAAAAAAAAAAi+iI+AAAAAAAAAAAi+iI+AAAAAAAAAAAi+iI+AAAAAAAAAAAi+iI+AAAAAAAAAAAi+iI+AAAAAAAAAAAi+iI+AAAAAAAAAAAi+iI+AAAAAAAAAAAi+iI+AAAAAAAAAAAi+iI+AAAAAAAAAAAi+iI+AAAAAAAAAAAi+iI+AAAAAAAAAAAi+iI+AAAAAAAAAAAi+iI+AAAAAAAAAAAi+iI+AAAAAAAAAAAi+iI+AAAAAAAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/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HQCAPxUAgD8DAIA/HQCAPxUAgD8DAIA/HQCAPxUAgD8DAIA/HQCAPxUAgD8DAIA/HQCAPxUAgD8DAIA/HQCAPxUAgD8DAIA/HQCAPxUAgD8DAIA/HQCAPxUAgD8DAIA/HQCAPxUAgD8DAIA/HQCAPxUAgD8DAIA/HQCAPxUAgD8DAIA/HQCAPxUAgD8DAIA/HQCAPxUAgD8DAIA/HQCAPxUAgD8DAIA/HQCAPxUAgD8DAIA/HQCAPxUAgD8DAIA/HQCAPxUAgD8DAIA/HQCAPxUAgD8DAIA/HQCAPxUAgD8DAIA/HQCAPxUAgD8DAIA/HQCAPxUAgD8DAIA/HQCAPxUAgD8DAIA/HQCAPxUAgD8DAIA/HQCAPxUAgD8DAIA/HQCAPxUAgD8DAIA/HQCAPwTGADLfCqQ9sFQMMATGADLfCqQ9sFQMMATGADLfCqQ9sFQMMATGADLfCqQ9sFQMMATGADLfCqQ9sFQMMATGADLfCqQ9sFQMMATGADLfCqQ9sFQMMATGADLfCqQ9sFQMMATGADLfCqQ9sFQMMATGADLfCqQ9sFQMMATGADLfCqQ9sFQMMATGADLfCqQ9sFQMMATGADLfCqQ9sFQMMATGADLfCqQ9sFQMMATGADLfCqQ9sFQMMATGADLfCqQ9sFQMMATGADLfCqQ9sFQMMATGADLfCqQ9sFQMMATGADLfCqQ9sFQMMATGADLfCqQ9sFQMMATGADLfCqQ9sFQMMATGADLfCqQ9sFQMMATGADLfCqQ9sFQMMATGADLfCqQ9sFQMMATGADLfCqQ9sFQMMATGADLfCqQ9sFQMMATGADLfCqQ9sFQMMATGADLfCqQ9sFQMMATGADLfCqQ9sFQMMATGADLfCqQ9sFQMMATGADLfCqQ9sFQMMATGADLfCqQ9sFQMMATGADLfCqQ9sFQMMATGADLfCqQ9sFQMMATGADLfCqQ9sFQMMATGADLfCqQ9sFQMMATGADLfCqQ9sFQMMATGADLfCqQ9sFQMMATGADLfCqQ9sFQMMATGADLfCqQ9sFQMMATGADLfCqQ9sFQMMATGADLfCqQ9sFQMMATGADLfCqQ9sFQMMATGADLfCqQ9sFQMMATGADLfCqQ9sFQMMATGADLfCqQ9sFQMMATGADLfCqQ9sFQMMATGADLfCqQ9sFQMMATGADLfCqQ9sFQMMATGADLfCqQ9sFQMMATGADLfCqQ9sFQMMLJe8L2I33S572qvuxo6fj+yXvC9iN90ue9qr7saOn4/sl7wvYjfdLnvaq+7Gjp+P7Je8L2I33S572qvuxo6fj+yXvC9iN90ue9qr7saOn4/sl7wvYjfdLnvaq+7Gjp+P7Je8L2I33S572qvuxo6fj+yXvC9iN90ue9qr7saOn4/sl7wvYjfdLnvaq+7Gjp+P7Je8L2I33S572qvuxo6fj+yXvC9iN90ue9qr7saOn4/sl7wvYjfdLnvaq+7Gjp+P7Je8L2I33S572qvuxo6fj+yXvC9iN90ue9qr7saOn4/sl7wvYjfdLnvaq+7Gjp+P7Je8L2I33S572qvuxo6fj+yXvC9iN90ue9qr7saOn4/sl7wvYjfdLnvaq+7Gjp+P7Je8L2I33S572qvuxo6fj+yXvC9iN90ue9qr7saOn4/sl7wvYjfdLnvaq+7Gjp+P7Je8L2I33S572qvuxo6fj+yXvC9iN90ue9qr7saOn4/sl7wvYjfdLnvaq+7Gjp+P7Je8L2I33S572qvuxo6fj+yXvC9iN90ue9qr7saOn4/sl7wvYjfdLnvaq+7Gjp+P7Je8L2I33S572qvuxo6fj+yXvC9iN90ue9qr7saOn4/sl7wvYjfdLnvaq+7Gjp+P7Je8L2I33S572qvuxo6fj+yXvC9iN90ue9qr7saOn4/sl7wvYjfdLnvaq+7Gjp+P7Je8L2I33S572qvuxo6fj+yXvC9iN90ue9qr7saOn4/sl7wvYjfdLnvaq+7Gjp+P7Je8L2I33S572qvuxo6fj+yXvC9iN90ue9qr7saOn4/sl7wvYjfdLnvaq+7Gjp+P7Je8L2I33S572qvuxo6fj+yXvC9iN90ue9qr7saOn4/sl7wvYjfdLnvaq+7Gjp+P7Je8L2I33S572qvuxo6fj+yXvC9iN90ue9qr7saOn4/sl7wvYjfdLnvaq+7Gjp+P7Je8L2I33S572qvuxo6fj+yXvC9iN90ue9qr7saOn4/sl7wvYjfdLnvaq+7Gjp+P7Je8L2I33S572qvuxo6fj+yXvC9iN90ue9qr7saOn4/sl7wvYjfdLnvaq+7Gjp+P///fz/1/38/9/9/P///fz/1/38/9/9/P///fz/1/38/9/9/P///fz/1/38/9/9/P///fz/1/38/9/9/P///fz/1/38/9/9/P///fz/1/38/9/9/P///fz/1/38/9/9/P///fz/1/38/9/9/P///fz/1/38/9/9/P///fz/1/38/9/9/P///fz/1/38/9/9/P///fz/1/38/9/9/P///fz/1/38/9/9/P///fz/1/38/9/9/P///fz/1/38/9/9/P///fz/1/38/9/9/P///fz/1/38/9/9/P///fz/1/38/9/9/P///fz/1/38/9/9/P///fz/1/38/9/9/P///fz/1/38/9/9/P///fz/1/38/9/9/P///fz/1/38/9/9/P///fz/1/38/9/9/P///fz/1/38/9/9/P///fz/1/38/9/9/P///fz/1/38/9/9/P///fz/1/38/9/9/P///fz/1/38/9/9/P///fz/1/38/9/9/P///fz/1/38/9/9/P///fz/1/38/9/9/P///fz/1/38/9/9/P///fz/1/38/9/9/P///fz/1/38/9/9/P///fz/1/38/9/9/P///fz/1/38/9/9/P///fz/1/38/9/9/P///fz/1/38/9/9/P///fz/1/38/9/9/P///fz/1/38/9/9/P///fz/1/38/9/9/P///fz/1/38/9/9/P///fz/1/38/9/9/P///fz/1/38/9/9/P///fz/1/38/9/9/P///fz/1/38/9/9/P///fz/1/38/9/9/P///fz/1/38/9/9/P///fz/1/38/9/9/P8QOsrGc8FM8s4QUscQOsrGc8FM8s4QUscQOsrGc8FM8s4QUscQOsrGc8FM8s4QUscQOsrGc8FM8s4QUscQOsrGc8FM8s4QUscQOsrGc8FM8s4QUscQOsrGc8FM8s4QUscQOsrGc8FM8s4QUscQOsrGc8FM8s4QUscQOsrGc8FM8s4QUscQOsrGc8FM8s4QUscQOsrGc8FM8s4QUscQOsrGc8FM8s4QUscQOsrGc8FM8s4QUscQOsrGc8FM8s4QUscQOsrGc8FM8s4QUscQOsrGc8FM8s4QUscQOsrGc8FM8s4QUscQOsrGc8FM8s4QUscQOsrGc8FM8s4QUscQOsrGc8FM8s4QUscQOsrGc8FM8s4QUscQOsrGc8FM8s4QUscQOsrGc8FM8s4QUscQOsrGc8FM8s4QUscQOsrGc8FM8s4QUscQOsrGc8FM8s4QUscQOsrGc8FM8s4QUscQOsrGc8FM8s4QUscQOsrGc8FM8s4QUscQOsrGc8FM8s4QUscQOsrGc8FM8s4QUscQOsrGc8FM8s4QUscQOsrGc8FM8s4QUscQOsrGc8FM8s4QUscQOsrGc8FM8s4QUscQOsrGc8FM8s4QUscQOsrGc8FM8s4QUscQOsrGc8FM8s4QUscQOsrGc8FM8s4QUscQOsrGc8FM8s4QUscQOsrGc8FM8s4QUscQOsrGc8FM8s4QUscQOsrGc8FM8s4QUscQOsrGc8FM8s4QUscQOsrGc8FM8s4QUscQOsrGc8FM8s4QUscQOsrGc8FM8s4QUscQOsrGc8FM8s4QUscQOsrGc8FM8s4QUsaUgXr1UW7c5i4Exu1Gffz+lIF69VFu3OYuBMbtRn38/pSBevVRbtzmLgTG7UZ9/P6UgXr1UW7c5i4Exu1Gffz+lIF69VFu3OYuBMbtRn38/pSBevVRbtzmLgTG7UZ9/P6UgXr1UW7c5i4Exu1Gffz+lIF69VFu3OYuBMbtRn38/pSBevVRbtzmLgTG7UZ9/P6UgXr1UW7c5i4Exu1Gffz+lIF69VFu3OYuBMbtRn38/pSBevVRbtzmLgTG7UZ9/P6UgXr1UW7c5i4Exu1Gffz+lIF69VFu3OYuBMbtRn38/pSBevVRbtzmLgTG7UZ9/P6UgXr1UW7c5i4Exu1Gffz+lIF69VFu3OYuBMbtRn38/pSBevVRbtzmLgTG7UZ9/P6UgXr1UW7c5i4Exu1Gffz+lIF69VFu3OYuBMbtRn38/pSBevVRbtzmLgTG7UZ9/P6UgXr1UW7c5i4Exu1Gffz+lIF69VFu3OYuBMbtRn38/pSBevVRbtzmLgTG7UZ9/P6UgXr1UW7c5i4Exu1Gffz+lIF69VFu3OYuBMbtRn38/pSBevVRbtzmLgTG7UZ9/P6UgXr1UW7c5i4Exu1Gffz+lIF69VFu3OYuBMbtRn38/pSBevVRbtzmLgTG7UZ9/P6UgXr1UW7c5i4Exu1Gffz+lIF69VFu3OYuBMbtRn38/pSBevVRbtzmLgTG7UZ9/P6UgXr1UW7c5i4Exu1Gffz+lIF69VFu3OYuBMbtRn38/pSBevVRbtzmLgTG7UZ9/P6UgXr1UW7c5i4Exu1Gffz+lIF69VFu3OYuBMbtRn38/pSBevVRbtzmLgTG7UZ9/P6UgXr1UW7c5i4Exu1Gffz+lIF69VFu3OYuBMbtRn38/pSBevVRbtzmLgTG7UZ9/P6UgXr1UW7c5i4Exu1Gffz+lIF69VFu3OYuBMbtRn38/pSBevVRbtzmLgTG7UZ9/P6UgXr1UW7c5i4Exu1Gffz+lIF69VFu3OYuBMbtRn38/pSBevVRbtzmLgTG7UZ9/P6UgXr1UW7c5i4Exu1Gffz+lIF69VFu3OYuBMbtRn38/pSBevVRbtzmLgTG7UZ9/P/7/fz///38///9/P/7/fz///38///9/P/7/fz///38///9/P/7/fz///38///9/P/7/fz///38///9/P/7/fz///38///9/P/7/fz///38///9/P/7/fz///38///9/P/7/fz///38///9/P/7/fz///38///9/P/7/fz///38///9/P/7/fz///38///9/P/7/fz///38///9/P/7/fz///38///9/P/7/fz///38///9/P/7/fz///38///9/P/7/fz///38///9/P/7/fz///38///9/P/7/fz///38///9/P/7/fz///38///9/P/7/fz///38///9/P/7/fz///38///9/P/7/fz///38///9/P/7/fz///38///9/P/7/fz///38///9/P/7/fz///38///9/P/7/fz///38///9/P/7/fz///38///9/P/7/fz///38///9/P/7/fz///38///9/P/7/fz///38///9/P/7/fz///38///9/P/7/fz///38///9/P/7/fz///38///9/P/7/fz///38///9/P/7/fz///38///9/P/7/fz///38///9/P/7/fz///38///9/P/7/fz///38///9/P/7/fz///38///9/P/7/fz///38///9/P/7/fz///38///9/P/7/fz///38///9/P/7/fz///38///9/P/7/fz///38///9/P/7/fz///38///9/P/7/fz///38///9/P/7/fz///38///9/P/7/fz///38///9/P/7/fz///38///9/P/7/fz///38///9/P6eZErL3III9CjiPsaeZErL3III9CjiPsaeZErL3III9CjiPsaeZErL3III9CjiPsaeZErL3III9CjiPsaeZErL3III9CjiPsaeZErL3III9CjiPsaeZErL3III9CjiPsaeZErL3III9CjiPsaeZErL3III9CjiPsaeZErL3III9CjiPsaeZErL3III9CjiPsaeZErL3III9CjiPsaeZErL3III9CjiPsaeZErL3III9CjiPsaeZErL3III9CjiPsaeZErL3III9CjiPsaeZErL3III9CjiPsaeZErL3III9CjiPsaeZErL3III9CjiPsaeZErL3III9CjiPsaeZErL3III9CjiPsaeZErL3III9CjiPsaeZErL3III9CjiPsaeZErL3III9CjiPsaeZErL3III9CjiPsaeZErL3III9CjiPsaeZErL3III9CjiPsaeZErL3III9CjiPsaeZErL3III9CjiPsaeZErL3III9CjiPsaeZErL3III9CjiPsaeZErL3III9CjiPsaeZErL3III9CjiPsaeZErL3III9CjiPsaeZErL3III9CjiPsaeZErL3III9CjiPsaeZErL3III9CjiPsaeZErL3III9CjiPsaeZErL3III9CjiPsaeZErL3III9CjiPsaeZErL3III9CjiPsaeZErL3III9CjiPsaeZErL3III9CjiPsaeZErL3III9CjiPsaeZErL3III9CjiPsaeZErL3III9CjiPsaeZErL3III9CjiPsaeZErL3III9CjiPsaeZErL3III9CjiPsaeZErL3III9CjiPsY4bBD9v9Ye8IW9lvd/EWj+OGwQ/b/WHvCFvZb3fxFo/jhsEP2/1h7whb2W938RaP44bBD9v9Ye8IW9lvd/EWj+OGwQ/b/WHvCFvZb3fxFo/jhsEP2/1h7whb2W938RaP44bBD9v9Ye8IW9lvd/EWj+OGwQ/b/WHvCFvZb3fxFo/jhsEP2/1h7whb2W938RaP44bBD9v9Ye8IW9lvd/EWj+OGwQ/b/WHvCFvZb3fxFo/jhsEP2/1h7whb2W938RaP44bBD9v9Ye8IW9lvd/EWj+OGwQ/b/WHvCFvZb3fxFo/jhsEP2/1h7whb2W938RaP44bBD9v9Ye8IW9lvd/EWj+OGwQ/b/WHvCFvZb3fxFo/jhsEP2/1h7whb2W938RaP44bBD9v9Ye8IW9lvd/EWj+OGwQ/b/WHvCFvZb3fxFo/jhsEP2/1h7whb2W938RaP44bBD9v9Ye8IW9lvd/EWj+OGwQ/b/WHvCFvZb3fxFo/jhsEP2/1h7whb2W938RaP44bBD9v9Ye8IW9lvd/EWj+OGwQ/b/WHvCFvZb3fxFo/jhsEP2/1h7whb2W938RaP44bBD9v9Ye8IW9lvd/EWj+OGwQ/b/WHvCFvZb3fxFo/jhsEP2/1h7whb2W938RaP44bBD9v9Ye8IW9lvd/EWj+OGwQ/b/WHvCFvZb3fxFo/jhsEP2/1h7whb2W938RaP44bBD9v9Ye8IW9lvd/EWj+OGwQ/b/WHvCFvZb3fxFo/jhsEP2/1h7whb2W938RaP44bBD9v9Ye8IW9lvd/EWj+OGwQ/b/WHvCFvZb3fxFo/jhsEP2/1h7whb2W938RaP44bBD9v9Ye8IW9lvd/EWj+OGwQ/b/WHvCFvZb3fxFo/jhsEP2/1h7whb2W938RaP44bBD9v9Ye8IW9lvd/EWj+OGwQ/b/WHvCFvZb3fxFo/jhsEP2/1h7whb2W938RaP44bBD9v9Ye8IW9lvd/EWj+OGwQ/b/WHvCFvZb3fxFo/jhsEP2/1h7whb2W938RaP44bBD9v9Ye8IW9lvd/EWj+OGwQ/b/WHvCFvZb3fxFo/jhsEP2/1h7whb2W938RaPwUAgD8NAIA/9v9/PwUAgD8NAIA/9v9/PwUAgD8NAIA/9v9/PwUAgD8NAIA/9v9/PwUAgD8NAIA/9v9/PwUAgD8NAIA/9v9/PwUAgD8NAIA/9v9/PwUAgD8NAIA/9v9/PwUAgD8NAIA/9v9/PwUAgD8NAIA/9v9/PwUAgD8NAIA/9v9/PwUAgD8NAIA/9v9/PwUAgD8NAIA/9v9/PwUAgD8NAIA/9v9/PwUAgD8NAIA/9v9/PwUAgD8NAIA/9v9/PwUAgD8NAIA/9v9/PwUAgD8NAIA/9v9/PwUAgD8NAIA/9v9/PwUAgD8NAIA/9v9/PwUAgD8NAIA/9v9/PwUAgD8NAIA/9v9/PwUAgD8NAIA/9v9/PwUAgD8NAIA/9v9/PwUAgD8NAIA/9v9/PwUAgD8NAIA/9v9/PwUAgD8NAIA/9v9/PwUAgD8NAIA/9v9/PwUAgD8NAIA/9v9/PwUAgD8NAIA/9v9/PwUAgD8NAIA/9v9/PwUAgD8NAIA/9v9/PwUAgD8NAIA/9v9/PwUAgD8NAIA/9v9/PwUAgD8NAIA/9v9/PwUAgD8NAIA/9v9/PwUAgD8NAIA/9v9/PwUAgD8NAIA/9v9/PwUAgD8NAIA/9v9/PwUAgD8NAIA/9v9/PwUAgD8NAIA/9v9/PwUAgD8NAIA/9v9/PwUAgD8NAIA/9v9/PwUAgD8NAIA/9v9/PwUAgD8NAIA/9v9/PwUAgD8NAIA/9v9/PwUAgD8NAIA/9v9/PwUAgD8NAIA/9v9/PwUAgD8NAIA/9v9/PwUAgD8NAIA/9v9/PwUAgD8NAIA/9v9/P/T5LzL5dwo9aT8FMfT5LzL5dwo9aT8FMfT5LzL5dwo9aT8FMfT5LzL5dwo9aT8FMfT5LzL5dwo9aT8FMfT5LzL5dwo9aT8FMfT5LzL5dwo9aT8FMfT5LzL5dwo9aT8FMfT5LzL5dwo9aT8FMfT5LzL5dwo9aT8FMfT5LzL5dwo9aT8FMfT5LzL5dwo9aT8FMfT5LzL5dwo9aT8FMfT5LzL5dwo9aT8FMfT5LzL5dwo9aT8FMfT5LzL5dwo9aT8FMfT5LzL5dwo9aT8FMfT5LzL5dwo9aT8FMfT5LzL5dwo9aT8FMfT5LzL5dwo9aT8FMfT5LzL5dwo9aT8FMfT5LzL5dwo9aT8FMfT5LzL5dwo9aT8FMfT5LzL5dwo9aT8FMfT5LzL5dwo9aT8FMfT5LzL5dwo9aT8FMfT5LzL5dwo9aT8FMfT5LzL5dwo9aT8FMfT5LzL5dwo9aT8FMfT5LzL5dwo9aT8FMfT5LzL5dwo9aT8FMfT5LzL5dwo9aT8FMfT5LzL5dwo9aT8FMfT5LzL5dwo9aT8FMfT5LzL5dwo9aT8FMfT5LzL5dwo9aT8FMfT5LzL5dwo9aT8FMfT5LzL5dwo9aT8FMfT5LzL5dwo9aT8FMfT5LzL5dwo9aT8FMfT5LzL5dwo9aT8FMfT5LzL5dwo9aT8FMfT5LzL5dwo9aT8FMfT5LzL5dwo9aT8FMfT5LzL5dwo9aT8FMfT5LzL5dwo9aT8FMfT5LzL5dwo9aT8FMfT5LzL5dwo9aT8FMfT5LzL5dwo9aT8FMfT5LzL5dwo9aT8FMfT5LzL5dwo9aT8FMa5vpz52ZukzW5UtNJPscT+ub6c+dmbpM1uVLTST7HE/rm+nPnZm6TNblS00k+xxP65vpz52ZukzW5UtNJPscT+ub6c+dmbpM1uVLTST7HE/rm+nPnZm6TNblS00k+xxP65vpz52ZukzW5UtNJPscT+ub6c+dmbpM1uVLTST7HE/rm+nPnZm6TNblS00k+xxP65vpz52ZukzW5UtNJPscT+ub6c+dmbpM1uVLTST7HE/rm+nPnZm6TNblS00k+xxP65vpz52ZukzW5UtNJPscT+ub6c+dmbpM1uVLTST7HE/rm+nPnZm6TNblS00k+xxP65vpz52ZukzW5UtNJPscT+ub6c+dmbpM1uVLTST7HE/rm+nPnZm6TNblS00k+xxP65vpz52ZukzW5UtNJPscT+ub6c+dmbpM1uVLTST7HE/rm+nPnZm6TNblS00k+xxP65vpz52ZukzW5UtNJPscT+ub6c+dmbpM1uVLTST7HE/rm+nPnZm6TNblS00k+xxP65vpz52ZukzW5UtNJPscT+ub6c+dmbpM1uVLTST7HE/rm+nPnZm6TNblS00k+xxP65vpz52ZukzW5UtNJPscT+ub6c+dmbpM1uVLTST7HE/rm+nPnZm6TNblS00k+xxP65vpz52ZukzW5UtNJPscT+ub6c+dmbpM1uVLTST7HE/rm+nPnZm6TNblS00k+xxP65vpz52ZukzW5UtNJPscT+ub6c+dmbpM1uVLTST7HE/rm+nPnZm6TNblS00k+xxP65vpz52ZukzW5UtNJPscT+ub6c+dmbpM1uVLTST7HE/rm+nPnZm6TNblS00k+xxP65vpz52ZukzW5UtNJPscT+ub6c+dmbpM1uVLTST7HE/rm+nPnZm6TNblS00k+xxP65vpz52ZukzW5UtNJPscT+ub6c+dmbpM1uVLTST7HE/rm+nPnZm6TNblS00k+xxP65vpz52ZukzW5UtNJPscT+ub6c+dmbpM1uVLTST7HE/rm+nPnZm6TNblS00k+xxP65vpz52ZukzW5UtNJPscT+ub6c+dmbpM1uVLTST7HE/rm+nPnZm6TNblS00k+xxP/7/fz8AAIA/AQCAP/7/fz8AAIA/AQCAP/7/fz8AAIA/AQCAP/7/fz8AAIA/AQCAP/7/fz8AAIA/AQCAP/7/fz8AAIA/AQCAP/7/fz8AAIA/AQCAP/7/fz8AAIA/AQCAP/7/fz8AAIA/AQCAP/7/fz8AAIA/AQCAP/7/fz8AAIA/AQCAP/7/fz8AAIA/AQCAP/7/fz8AAIA/AQCAP/7/fz8AAIA/AQCAP/7/fz8AAIA/AQCAP/7/fz8AAIA/AQCAP/7/fz8AAIA/AQCAP/7/fz8AAIA/AQCAP/7/fz8AAIA/AQCAP/7/fz8AAIA/AQCAP/7/fz8AAIA/AQCAP/7/fz8AAIA/AQCAP/7/fz8AAIA/AQCAP/7/fz8AAIA/AQCAP/7/fz8AAIA/AQCAP/7/fz8AAIA/AQCAP/7/fz8AAIA/AQCAP/7/fz8AAIA/AQCAP/7/fz8AAIA/AQCAP/7/fz8AAIA/AQCAP/7/fz8AAIA/AQCAP/7/fz8AAIA/AQCAP/7/fz8AAIA/AQCAP/7/fz8AAIA/AQCAP/7/fz8AAIA/AQCAP/7/fz8AAIA/AQCAP/7/fz8AAIA/AQCAP/7/fz8AAIA/AQCAP/7/fz8AAIA/AQCAP/7/fz8AAIA/AQCAP/7/fz8AAIA/AQCAP/7/fz8AAIA/AQCAP/7/fz8AAIA/AQCAP/7/fz8AAIA/AQCAP/7/fz8AAIA/AQCAP/7/fz8AAIA/AQCAP/7/fz8AAIA/AQCAP/7/fz8AAIA/AQCAP/7/fz8AAIA/AQCAP/7/fz8AAIA/AQCAP/7/fz8AAIA/AQCAP54O+LHYAsQ88W6WL54O+LHYAsQ88W6WL54O+LHYAsQ88W6WL54O+LHYAsQ88W6WL54O+LHYAsQ88W6WL54O+LHYAsQ88W6WL54O+LHYAsQ88W6WL54O+LHYAsQ88W6WL54O+LHYAsQ88W6WL54O+LHYAsQ88W6WL54O+LHYAsQ88W6WL54O+LHYAsQ88W6WL54O+LHYAsQ88W6WL54O+LHYAsQ88W6WL54O+LHYAsQ88W6WL54O+LHYAsQ88W6WL54O+LHYAsQ88W6WL54O+LHYAsQ88W6WL54O+LHYAsQ88W6WL54O+LHYAsQ88W6WL54O+LHYAsQ88W6WL54O+LHYAsQ88W6WL54O+LHYAsQ88W6WL54O+LHYAsQ88W6WL54O+LHYAsQ88W6WL54O+LHYAsQ88W6WL54O+LHYAsQ88W6WL54O+LHYAsQ88W6WL54O+LHYAsQ88W6WL54O+LHYAsQ88W6WL54O+LHYAsQ88W6WL54O+LHYAsQ88W6WL54O+LHYAsQ88W6WL54O+LHYAsQ88W6WL54O+LHYAsQ88W6WL54O+LHYAsQ88W6WL54O+LHYAsQ88W6WL54O+LHYAsQ88W6WL54O+LHYAsQ88W6WL54O+LHYAsQ88W6WL54O+LHYAsQ88W6WL54O+LHYAsQ88W6WL54O+LHYAsQ88W6WL54O+LHYAsQ88W6WL54O+LHYAsQ88W6WL54O+LHYAsQ88W6WL54O+LHYAsQ88W6WL54O+LHYAsQ88W6WL54O+LHYAsQ88W6WL54O+LHYAsQ88W6WL54O+LHYAsQ88W6WLzoSDLSK16OpiSyntAAAgD86Egy0itejqYksp7QAAIA/OhIMtIrXo6mJLKe0AACAPzoSDLSK16OpiSyntAAAgD86Egy0itejqYksp7QAAIA/OhIMtIrXo6mJLKe0AACAPzoSDLSK16OpiSyntAAAgD86Egy0itejqYksp7QAAIA/OhIMtIrXo6mJLKe0AACAPzoSDLSK16OpiSyntAAAgD86Egy0itejqYksp7QAAIA/OhIMtIrXo6mJLKe0AACAPzoSDLSK16OpiSyntAAAgD86Egy0itejqYksp7QAAIA/OhIMtIrXo6mJLKe0AACAPzoSDLSK16OpiSyntAAAgD86Egy0itejqYksp7QAAIA/OhIMtIrXo6mJLKe0AACAPzoSDLSK16OpiSyntAAAgD86Egy0itejqYksp7QAAIA/OhIMtIrXo6mJLKe0AACAPzoSDLSK16OpiSyntAAAgD86Egy0itejqYksp7QAAIA/OhIMtIrXo6mJLKe0AACAPzoSDLSK16OpiSyntAAAgD86Egy0itejqYksp7QAAIA/OhIMtIrXo6mJLKe0AACAPzoSDLSK16OpiSyntAAAgD86Egy0itejqYksp7QAAIA/OhIMtIrXo6mJLKe0AACAPzoSDLSK16OpiSyntAAAgD86Egy0itejqYksp7QAAIA/OhIMtIrXo6mJLKe0AACAPzoSDLSK16OpiSyntAAAgD86Egy0itejqYksp7QAAIA/OhIMtIrXo6mJLKe0AACAPzoSDLSK16OpiSyntAAAgD86Egy0itejqYksp7QAAIA/OhIMtIrXo6mJLKe0AACAPzoSDLSK16OpiSyntAAAgD86Egy0itejqYksp7QAAIA/OhIMtIrXo6mJLKe0AACAPzoSDLSK16OpiSyntAAAgD86Egy0itejqYksp7QAAIA/OhIMtIrXo6mJLKe0AACAPzoSDLSK16OpiSyntAAAgD86Egy0itejqYksp7QAAIA/OhIMtIrXo6mJLKe0AACAPzoSDLSK16OpiSyntAAAgD86Egy0itejqYksp7QAAIA/OhIMtIrXo6mJLKe0AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAAAC+ooc9AAAAAAAAAAC+ooc9AAAAAAAAAAC+ooc9AAAAAAAAAAC+ooc9AAAAAAAAAAC+ooc9AAAAAAAAAAC+ooc9AAAAAAAAAAC+ooc9AAAAAAAAAAC+ooc9AAAAAAAAAAC+ooc9AAAAAAAAAAC+ooc9AAAAAAAAAAC+ooc9AAAAAAAAAAC+ooc9AAAAAAAAAAC+ooc9AAAAAAAAAAC+ooc9AAAAAAAAAAC+ooc9AAAAAAAAAAC+ooc9AAAAAAAAAAC+ooc9AAAAAAAAAAC+ooc9AAAAAAAAAAC+ooc9AAAAAAAAAAC+ooc9AAAAAAAAAAC+ooc9AAAAAAAAAAC+ooc9AAAAAAAAAAC+ooc9AAAAAAAAAAC+ooc9AAAAAAAAAAC+ooc9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cYN/P/9M8jBS438z7EzyvFTjfz+LHQIw7P1/M4cdArzv/X8//v//D/z/fzMAAAAcAACAPwAAgD///38/AACAPwAAgD///38/AACAPwAAgD///38/AACAPwAAgD///38/AACAPwAAgD///38/AACAPwAAgD///38/AACAPwAAgD///38/AACAPwAAgD///38/AACAPwAAgD///38/AACAPwAAgD///38/AACAPwAAgD///38/AACAP///fz///38/AACAP/3/fz/+/38/AACAPwAAgD///38/AACAPwAAgD///38/AACAP///fz///38/AACAP///fz///38/AACAP///fz///38/AACAPwAAgD///38/AACAPwAAgD///38/AACAPwEAgD///38/AACAP///fz///38/AACAP///fz///38/AACAPwAAgD///38/AACAP///fz/+/38/AACAPwAAgD8AAIA/AACAPwEAgD///38/AACAPwEAgD8AAIA/AACAPwAAgD///38/AACAP/7/fz///38/AACAPwAAgD8AAIA/AACAP///fz///38/AACAPwAAgD///38/AACAPwAAgD///38/AACAPwAAgD///38/AACAP///fz///38/AACAPwEAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD///38/AACAP///fz///38/AACAPwAAgD///38/AACAPwAAgD/+/38/AACAPwAAgD/9/38/AACAPwAAgD///38/AACAPwAAgD///38/AACAPwAAgD///38/AACAPwAAgD///38/AACAPwAAgD8AAIA/AACAP/3/fz/+/38/AACAPwAAgD8AAIA/AACAPwAAgD///38/AACAPwEAgJw8Ou09AQAAKAEAgJw8Ou09AQAAKAEAgJw8Ou09AQAAKAEAgJw8Ou09AQAAKAEAgJw8Ou09AQAAKAEAgJw8Ou09AQAAKAEAgJw8Ou09AQAAKAEAgJw8Ou09AQAAKAEAgJw8Ou09AQAAKAEAgJw8Ou09AQAAKAEAgJw8Ou09AQAAKKj//zBCOu09AAAApwDAFag/Ou09AAAUqACA3KdKOu09AACMqAAAgqdIOu09AACIqP//vzJBOu09AACgJwEAADJCOu09AAAAp////7JAOu09//9/p///v7JAOu09//8/GwEAgDI/Ou09AQAgp/3/f7JBOu09AABgp///37I/Ou09/v+/pgYAgDE+Ou09AABAJwAAJCdCOu09AAAAp/z//7FCOu09AABAp/7//7E+Ou09/v9/GgAAwLJDOu09AgCAJgEAgLJBOu09AAAAKACApKdAOu09AABgKN//fzFAOu09AADAp70AALBBOu09AADYpsT/fzE4Ou09AAAgJ/f//zI8Ou09AAAQKOz/fzJBOu09AAAAKAoAgLJCOu09////pvv/PzM+Ou09//+fJ9X//zE+Ou09AADAp9b//zE+Ou09AADAJwAApKhBOu09AAAQKAoAoLJAOu09AADgpwUAMLM9Ou09/f//pq//fzFEOu09AACAJgoAwLJAOu09AADAp+v/fzJAOu09AAAgKBUAALI8Ou09AAAgKNf//zFAOu09//9/Jtv//zFDOu09AAAQKOD//zE6Ou09AABAJ8j/fzFCOu09AAAEKABIRKhCOu09AABiqAEAgJw8Ou09AQAAKIAAAIAAAIAnAACAkAAAgD+AAACAAACAJwAAgJAAAIA/gAAAgAAAgCcAAICQAACAP4AAAIAAAIAnAACAkAAAgD+AAACAAACAJwAAgJAAAIA/gAAAgAAAgCcAAICQAACAP4AAAIAAAIAnAACAkAAAgD+AAACAAACAJwAAgJAAAIA/gAAAgAAAgCcAAICQAACAP4AAAIAAAIAnAACAkAAAgD+AAACAAACAJwAAgJAAAIA/AACAmAAAuCcAAICwAACAPwAA4KcAAIAnAAAAMgAAgD8AAICnAACAJwAAgA8AAIA/AABApwAAoCcAAICyAACAPwAAACcAAEAnAAAAjwAAgD8AAIAmAACIJwAAgDIAAIA/AACApgAAkCcAAACyAACAPwAAgCYAADAnAAAAMgAAgD8AAECmAAB4JwAAQA4AAIA/AAAAAAAAmCcAAAAAAACAPwAAgKUAAIwnAACADQAAgD8AAIAmAACgJ////7EAAIA/AAAAAAAAcCcAAAAAAACAPwAAAAAAAKAnAAAAAAAAgD8AAIAmAACQJwAAgI4AAIA/AAAAAAAAkCcAAAAAAACAPwIAgCYAANAnAgCAjgAAgD8BACAoAQDgJwEAALIAAIA/AAAAJwAAoCcAAACPAACAPwAA/KcAAAgnAAD8DwAAgD8AAGAnAAAgKAAAYI8AAIA///9/JgAAgCcAAICyAACAPwEAgCcAAIAnAQAAsgAAgD8AAKCnAAAAJwAAoA8AAIA/AACApgAAoKcAAICyAACAPwAAQKcAAACnAAAAsgAAgD8AAAAAAAAkKAAAAAAAAIA/AAAApgAAWCcAAAAOAACAPwAAAKYAAIQnAAAADgAAgD8AAIAZAABIKAAAgDEAAIA/AAAAmgAAgKcAAACyAACAP///f6YAAMCmAAAAMgAAgD8AAICnAACAJwAAgA8AAIA/AACAJgAAoCcAAICOAACAP/z/fyb8/3+n/P9/jgAAgD8AAICmAQDAJ///fw4AAIA/AACApgAAgCYAAIAOAACAPwAAAKYAAACmAAAADgAAgD8AAHinAAC8JwAAgDAAAIA/gAAAgAAAgCcAAICQAACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAP///fz///38/AACAP/7/fz/+/38/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAP///fz///38/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwEAgD8BAIA/AACAP///fz///38/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/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t/8/rm71ni3e64k8tf5vrvB1ZTKSYSuxdCIAMgAAgD/wdWUykmErsXQiADIAAIA/8HVlMpJhK7F0IgAyAACAP/B1ZTKSYSuxdCIAMgAAgD/wdWUykmErsXQiADIAAIA/8HVlMpJhK7F0IgAyAACAP/B1ZTKSYSuxdCIAMgAAgD/wdWUykmErsXQiADIAAIA/8HVlMpJhK7F0IgAyAACAP/B1ZTKSYSuxdCIAMgAAgD/wdWUykmErsXQiADIAAIA/8LVjMmNiJbGuPIAyAACAP/D1ZDKCYiWxAADsLQAAgD/wdWgyUmIlsZw3ADIAAIA/8MVjMtJhJrEA2H6xAACAP/BiYDKy4Sex0NGAMAAAgD/we2UyMmInscg5ATEAAIA/8HVjMjJiJbGwo/+xAACAP/BVYzKSYiOxfFP/sQAAgD/wNWMy8mElsXhw/7EAAIA/8DVkMrJhJ7EAEHgsAACAP/D1YTLSYSWxAG6OLQAAgD/w9WMy8mAtsb66/zEAAIA/8BVlMlJiIbFZSAAyAACAP/DlYTJSYiexALCkLQAAgD/wrWQysmEnsQCwgiwAAIA/sJxkMtJBJ7EACEwtAACAP/ARZTIy4iWxARgDLQAAgD/w1WMyUmEmsebxP7IAAIA/8NVhMvJhJ7FIn/+xAACAP/D1ZTIyYiWxANTMLQAAgD/w9WEyVGEtsRLwvzIAAIA/8HVlMgRiLbFkEMAyAACAP/B1ZDLDYC2xA4d/MgAAgD/w9WAylGElsRICADMAAIA/8PVhMsNhJbHvC4AyAACAP/A1ZDKxYiexMod/sgAAgD/wlWQykmArsVAa/zEAAIA/8HVkMnNiKbE/LIAyAACAP/AVZjLiYSWxQKd/sQAAgD/whWMy0mEnsQAwFiwAAIA/8LViMoJhKbFUh38xAACAP/B1YTJiYiWxAJrALQAAgD/wtWEygmIlsQC8yy0AAIA/8HViMgRhLbE04L8yAACAP/B1YjKEYjGxli/AMgAAgD/wdWUygmEpscAWADIAAIA/8PViMlNjKbEza4AyAACAP/B1ZDLkYSmxiBvAMgAAgD/w9WMys2EpsY/8fzIAAIA/8HVlMpJhK7F0IgAyAACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAP/7/fz///38///9/P///fz8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AQCAPwAAgD8AAIA///9/PwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwEAgD8BAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD///38///9/PwAAgD///38/AACAPwAAgD///38/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AQCAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA///9/PwAAgD8AAIA/AACAPwAAgD///38///9/PwAAgD8AAIA/AACAP///fz///38///9/PwAAgD///38///9/PwAAgD8AAIA///9/PwEAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD///38///9/P///fz8AAIA/AACAPwAAgD///38/AACAPwAAgD8AAIA/AACAP///fz///38/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAP/RhD71v0JE95rE2sPRhD71v0JE95rE2sPRhD71v0JE95rE2sPRhD71v0JE95rE2sPRhD71v0JE95rE2sPRhD71v0JE95rE2sPRhD71v0JE95rE2sPRhD71v0JE95rE2sPRhD71v0JE95rE2sPRhD71v0JE95rE2sPRhD71v0JE95rE2sPNhD7110JE9C7I2sPZhD7100JE95rE2sPVhD71v0JE9ybE2sPVhD71w0JE9TbE2sPJhD71w0JE987E2sPJhD71v0JE9A7I2sO9hD71y0JE9a7I2sOthD71y0JE9u7E2sPdhD71q0JE9TLE2sPthD71t0JE9/7E2sPxhD71v0JE9DrI2sPNhD71z0JE9S7I2sPFhD71y0JE9GrI2sPVhD71s0JE90bE2sPFhD71y0JE96LE2sO1hD71q0JE9MrI2sPRhD7110JE927E2sPVhD71x0JE9GLI2sPdhD71w0JE9ArI2sPVhD71y0JE9KrI2sPRhD7110JE9QbI2sPVhD7100JE9KLI2sPJhD7110JE9b7I2sPNhD71u0JE9Y7E2sPNhD71w0JE94bE2sPphD7100JE9RrI2sPthD71y0JE90LE2sPthD7100JE9ybE2sPZhD71y0JE9FbI2sPphD71w0JE9R7I2sOthD71u0JE9ZLE2sABiD7120JE9WrI2sABiD71v0JE9crI2sPlhD71u0JE9n7E2sPZhD71s0JE9rrE2sPdhD71v0JE9zLE2sPVhD71w0JE9erE2sPVhD71u0JE947E2sPZhD71o0JE9TrE2sPRhD71v0JE95rE2sHtyQrNpTtIy75ooP5aiQD97ckKzaU7SMu+aKD+WokA/e3JCs2lO0jLvmig/lqJAP3tyQrNpTtIy75ooP5aiQD97ckKzaU7SMu+aKD+WokA/e3JCs2lO0jLvmig/lqJAP3tyQrNpTtIy75ooP5aiQD97ckKzaU7SMu+aKD+WokA/e3JCs2lO0jLvmig/lqJAP3tyQrNpTtIy75ooP5aiQD97ckKzaU7SMu+aKD+WokA/e3JCs2pO0jLvmig/lqJAP3pyQrNoTtIy75ooP5aiQD98ckKzbE7SMu+aKD+WokA/e3JCs2pO0jLvmig/lqJAP3xyQrNqTtIy75ooP5aiQD97ckKza07SMu6aKD+XokA/e3JCs2pO0jLvmig/lqJAP3pyQrNoTtIy7pooP5eiQD97ckKzaE7SMu+aKD+WokA/e3JCs2xO0jLvmig/lqJAP3pyQrNoTtIy75ooP5aiQD97ckKzaE7SMu6aKD+XokA/e3JCs2ZO0jLvmig/lqJAP3pyQrNsTtIy75ooP5aiQD96ckKzaU7SMu+aKD+WokA/fHJCs21O0jLvmig/lqJAP3pyQrNmTtIy75ooP5aiQD98ckKzaU7SMu+aKD+WokA/fHJCs2xO0jLvmig/lqJAP3xyQrNsTtIy75ooP5aiQD97ckKzak7SMu+aKD+WokA/fHJCs2xO0jLvmig/lqJAP3xyQrNsTtIy75ooP5aiQD97ckKzaU7SMu+aKD+WokA/fHJCs2lO0jLvmig/lqJAP3tyQrNqTtIy75ooP5aiQD96ckKzbU7SMu+aKD+WokA/enJCs2lO0jLvmig/lqJAP3tyQrNpTtIy75ooP5aiQD96ckKzZ07SMu6aKD+XokA/e3JCs2pO0jLvmig/lqJAP3pyQrNqTtIy75ooP5aiQD98ckKzak7SMu+aKD+WokA/enJCs2hO0jLvmig/lqJAP3pyQrNsTtIy75ooP5aiQD97ckKzbE7SMu+aKD+WokA/enJCs2lO0jLvmig/lqJAP3tyQrNsTtIy75ooP5aiQD97ckKzaU7SMu+aKD+WokA/e3JCs2lO0jLvmig/lqJAP/7/fz/+/38/AACAP/7/fz/+/38/AACAP/7/fz/+/38/AACAP/7/fz/+/38/AACAP/7/fz/+/38/AACAP/7/fz/+/38/AACAP/7/fz/+/38/AACAP/7/fz/+/38/AACAP/7/fz/+/38/AACAP/7/fz/+/38/AACAP/7/fz/+/38/AACAP/7/fz/+/38/AACAP/7/fz/+/38/AACAP/7/fz/+/38/AACAP/7/fz/+/38/AACAP/7/fz/8/38/AACAP/7/fz/+/38/AACAPwAAgD8AAIA/AACAP/7/fz/9/38/AACAP/7/fz/+/38/AACAPwAAgD8AAIA/AACAP/7/fz/+/38/AACAP/7/fz/+/38/AACAPwAAgD8AAIA/AACAP/7/fz/9/38/AACAPwAAgD/+/38/AACAPwAAgD8AAIA/AACAP/7/fz/+/38/AACAP/7/fz/+/38/AACAP/7/fz/+/38/AACAPwAAgD8AAIA/AACAPwAAgD/+/38/AACAPwAAgD8AAIA/AACAP/7/fz/+/38/AACAPwAAgD/+/38/AACAP/7/fz/+/38/AACAPwAAgD/+/38/AACAPwAAgD/+/38/AACAPwAAgD8AAIA/AACAP/7/fz8AAIA/AACAPwAAgD8AAIA/AACAP/7/fz/+/38/AACAP/7/fz8AAIA/AACAP/7/fz/+/38/AACAPwAAgD8AAIA/AACAP/7/fz/+/38/AACAP/7/fz/9/38/AACAP/7/fz/+/38/AACAP/7/fz/9/38/AACAP/7/fz/+/38/AACAP/7/fz/+/38/AACAPw+fmbLfnQ09omqQsA+fmbLfnQ09omqQsA+fmbLfnQ09omqQsA+fmbLfnQ09omqQsA+fmbLfnQ09omqQsA+fmbLfnQ09omqQsA+fmbLfnQ09omqQsA+fmbLfnQ09omqQsA+fmbLfnQ09omqQsA+fmbLfnQ09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/v9/P/3/fz/9/38//v9/P/z/fz/9/38//v9/P/z/fz///38//v9/P/7/fz/9/38//v9/P///fz8AAIA//v9/P/7/fz///38//v9/P/3/fz/8/38//v9/P/z/fz/9/38//v9/P/3/fz/9/38//v9/P/z/fz8AAIA//v9/P/7/fz/9/38//v9/P/3/fz/9/38//v9/P/z/fz/8/38//v9/P/7/fz///38//v9/P/3/fz/9/38//v9/P/3/fz/9/38//v9/P/z/fz/9/38//v9/P/7/fz8AAIA//v9/P/3/fz/9/38//v9/P/3/fz/9/38//v9/P/7/fz///38//v9/P/7/fz/9/38//v9/P///fz/9/38//v9/P/3/fz/9/38//v9/P///fz/9/38//v9/P/3/fz/9/38//v9/P/3/fz/9/38//v9/P/7/fz///38//v9/P/3/fz/9/38//v9/P/3/fz/7/38//v9/P/z/fz/9/38//v9/P/3/fz/9/38//v9/P/z/fz/7/38//v9/P/3/fz/9/38//v9/P/z/fz/9/38//v9/PxfrCjthCim9b+pZvRfrCjthCim9b+pZvRfrCjthCim9b+pZvRfrCjthCim9b+pZvRfrCjthCim9b+pZvRfrCjthCim9b+pZvRfrCjthCim9b+pZvRfrCjthCim9b+pZvRfrCjthCim9b+pZvRfrCjthCim9b+pZvRfrCjthCim9b+pZvafqCjthCim9b+pZvbrqCjtkCim9b+pZvT7qCjtlCim9b+pZvZfqCjtnCim9b+pZvX3qCjtrCim9cOpZvfnpCjtmCim9b+pZvZDqCjtpCim9cOpZvcPqCjtnCim9b+pZvZzrCjttCim9b+pZvV3qCjtmCim9cOpZvRXqCjtnCim9cOpZvcnpCjtpCim9b+pZvZfqCjtwCim9bupZvcvqCjtiCim9b+pZvYnqCjtoCim9b+pZveDpCjtsCim9bepZvcfpCjtcCim9bupZvQjrCjtlCim9b+pZvdnpCjtkCim9b+pZvaHqCjthCim9cOpZvR3rCjtmCim9b+pZvZ/qCjtqCim9cOpZvfrqCjtiCim9b+pZvarqCjtfCim9b+pZveTpCjtuCim9bupZvRPqCjtnCim9b+pZvRLqCjtjCim9bupZvb7qCjtmCim9b+pZvVTqCjtrCim9b+pZvYHqCjtkCim9bupZvXrqCjtjCim9b+pZvWTqCjtoCim9b+pZvSjqCjtmCim9b+pZve3pCjtzCim9bupZvRfqCjtnCim9cOpZvULrCjtgCim9b+pZvYHqCjtnCim9cepZvW3rCjtkCim9b+pZvZ3qCjtqCim9b+pZvRfrCjthCim9b+pZvUcTt74qZBy/SbYbP67ftz5HE7e+KmQcv0m2Gz+u37c+RxO3vipkHL9Jths/rt+3PkcTt74qZBy/SbYbP67ftz5HE7e+KmQcv0m2Gz+u37c+RxO3vipkHL9Jths/rt+3PkcTt74qZBy/SbYbP67ftz5HE7e+KmQcv0m2Gz+u37c+RxO3vipkHL9Jths/rt+3PkcTt74qZBy/SbYbP67ftz5HE7e+KmQcv0m2Gz+u37c+RxO3vipkHL9Jths/rt+3PkcTt74qZBy/SbYbP67ftz5IE7e+KWQcv0q2Gz+w37c+RxO3vipkHL9Jths/rt+3PkcTt74qZBy/SbYbP67ftz5HE7e+KmQcv0m2Gz+u37c+RxO3vipkHL9Jths/rt+3PkgTt74pZBy/SrYbP6/ftz5HE7e+KmQcv0m2Gz+u37c+RxO3vipkHL9Jths/rt+3PkcTt74qZBy/SbYbP67ftz5HE7e+KmQcv0m2Gz+u37c+RxO3vipkHL9Jths/rt+3PkcTt74qZBy/SbYbP67ftz5HE7e+KmQcv0m2Gz+u37c+SBO3vilkHL9Kths/r9+3PkcTt74qZBy/SbYbP67ftz5HE7e+KmQcv0m2Gz+u37c+RxO3vipkHL9Jths/rt+3PkcTt74qZBy/SbYbP67ftz5HE7e+KmQcv0m2Gz+u37c+SBO3vilkHL9Kths/sN+3PkcTt74qZBy/SbYbP67ftz5HE7e+KmQcv0m2Gz+u37c+RxO3vipkHL9Jths/rt+3PkcTt74qZBy/SbYbP67ftz5HE7e+KmQcv0m2Gz+u37c+SBO3vilkHL9Kths/sN+3PkcTt74qZBy/SbYbP67ftz5IE7e+KWQcv0q2Gz+w37c+SBO3vilkHL9Kths/r9+3PkgTt74pZBy/SrYbP7Dftz5HE7e+KmQcv0m2Gz+u37c+RxO3vipkHL9Kths/rt+3PkcTt74qZBy/SbYbP67ftz5HE7e+KmQcv0m2Gz+u37c+RxO3vipkHL9Jths/rt+3PkcTt74qZBy/SrYbP67ftz5HE7e+KmQcv0q2Gz+u37c+RxO3vipkHL9Jths/rt+3Pv//fz8AAIA//f9/P///fz8AAIA//f9/P///fz8AAIA//f9/P///fz8AAIA//f9/P///fz8AAIA//f9/P///fz8AAIA//f9/P///fz8AAIA//f9/P///fz8AAIA//f9/P///fz8AAIA//f9/P///fz8AAIA//f9/P///fz8AAIA//f9/P///fz8AAIA//v9/P/3/fz8AAIA//f9/P///fz8AAIA//v9/P///fz8AAIA//f9/P/3/fz8AAIA//v9/P///fz8AAIA//f9/P/3/fz8AAIA//v9/P///fz8AAIA/AACAP///fz/+/38//f9/PwAAgD8AAIA/AACAPwAAgD8AAIA//P9/PwAAgD8AAIA/AACAP/3/fz/+/38//v9/P/3/fz8AAIA//v9/P/3/fz8AAIA//v9/P///fz/+/38//f9/PwAAgD/+/38//f9/P///fz8AAIA//f9/P///fz8AAIA//f9/PwAAgD8AAIA//v9/P///fz8AAIA//f9/PwAAgD8AAIA//v9/P///fz/+/38//P9/P/3/fz8AAIA//P9/P///fz8AAIA//v9/PwAAgD8AAIA//v9/P///fz8AAIA/AACAP///fz8AAIA/AACAP///fz8AAIA/AACAP/3/fz8AAIA//v9/P///fz8AAIA//v9/P///fz8AAIA/AACAPwAAgD8AAIA//f9/P///fz8AAIA//v9/P///fz8AAIA//f9/P///fz8AAIA//v9/P///fz8BAIA/AACAP///fz8AAIA//f9/P///fz8AAIA//f9/P///fz8AAIA//f9/P0TwELJrnDg9Q2SbskTwELJrnDg9Q2SbskTwELJrnDg9Q2SbskTwELJrnDg9Q2SbskTwELJrnDg9Q2SbskTwELJrnDg9Q2SbskTwELJrnDg9Q2SbskTwELJrnDg9Q2SbskTwELJrnDg9Q2SbskTwELJrnDg9Q2SbskTwELJrnDg9Q2SbshfPArJrnDg9nUn7sgdz+7JsnDg9V67qssE/orFsnDg95jaqs8MvZDBtnDg9dQppskgyirJtnDg98O4UMd0vTbFunDg9jWNJsj/dhrJunDg990sNs0nRfTJsnDg9ZuiAsvyqgLBsnDg9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/v9/P/3/fz///38//v9/P/7/fz/9/38//v9/P///fz8AAIA//v9/P/7/fz///38//v9/P/3/fz/9/38//v9/P/7/fz/9/38//v9/P/7/fz///38//v9/P///fz/9/38//v9/P/3/fz/9/38//v9/P/7/fz/9/38//v9/P/3/fz/9/38//v9/P/3/fz/9/38//v9/P/3/fz///38//v9/P/3/fz/9/38//v9/P/z/fz/9/38//v9/P/z/fz/9/38//v9/P/3/fz/8/38//v9/P/3/fz/9/38//v9/P///fz8AAIA//v9/P/z/fz/9/38//v9/PxfrCrthCim9b+pZvRfrCrthCim9b+pZvRfrCrthCim9b+pZvRfrCrthCim9b+pZvRfrCrthCim9b+pZvRfrCrthCim9b+pZvRfrCrthCim9b+pZvRfrCrthCim9b+pZvRfrCrthCim9b+pZvRfrCrthCim9b+pZvRfrCrthCim9b+pZvT/rCrtlCim9b+pZvULqCrtnCim9b+pZvU3qCrtvCim9bupZvTDqCrteCim9b+pZvaLqCrtiCim9b+pZvW3qCrtpCim9b+pZvT7qCrtkCim9cOpZvczqCrtoCim9b+pZvYHqCrtcCim9b+pZvenqCrtkCim9cOpZvYPqCrtgCim9cOpZvXDqCrtiCim9b+pZvbjqCrtqCim9b+pZvXrqCrtfCim9bupZvWDqCrtkCim9b+pZvQrqCrtmCim9bupZvffpCrtoCim9b+pZvc3qCrtnCim9b+pZvXvrCrtwCim9cepZvWLqCrttCim9b+pZvcnpCrtoCim9bepZvbDqCrtkCim9b+pZvcXqCrtsCim9cOpZvX3qCrtrCim9cOpZvWfqCrtqCim9b+pZvfvpCrthCim9b+pZvcDqCrtlCim9b+pZvUvqCrttCim9cOpZvYrrCrtqCim9b+pZvbPqCrtvCim9b+pZvVnqCrtuCim9bupZvfPqCrtnCim9b+pZvX/qCrtbCim9b+pZvWzqCrtnCim9bupZvTXqCrtrCim9b+pZvZHqCrtpCim9cOpZvTfqCrtlCim9b+pZvUbqCrtoCim9b+pZvW/qCrtjCim9b+pZvRfrCrthCim9b+pZvUcTt74qZBw/SbYbv67ftz5HE7e+KmQcP0m2G7+u37c+RxO3vipkHD9Jthu/rt+3PkcTt74qZBw/SbYbv67ftz5HE7e+KmQcP0m2G7+u37c+RxO3vipkHD9Jthu/rt+3PkcTt74qZBw/SbYbv67ftz5HE7e+KmQcP0m2G7+u37c+RxO3vipkHD9Jthu/rt+3PkcTt74qZBw/SbYbv67ftz5HE7e+KmQcP0m2G7+u37c+RxO3vipkHD9Kthu/rt+3PkgTt74pZBw/SrYbv7Dftz5HE7e+KmQcP0m2G7+u37c+RxO3vipkHD9Jthu/rt+3PkcTt74qZBw/SbYbv67ftz5HE7e+KmQcP0m2G7+u37c+RxO3vipkHD9Jthu/rt+3PkgTt74pZBw/SrYbv6/ftz5HE7e+KmQcP0m2G7+u37c+RxO3vipkHD9Jthu/rt+3PkcTt74qZBw/SbYbv67ftz5HE7e+KmQcP0m2G7+u37c+SBO3vilkHD9Kthu/sN+3PkcTt74qZBw/SbYbv67ftz5HE7e+KmQcP0m2G7+u37c+RxO3vipkHD9Jthu/rt+3PkcTt74qZBw/SrYbv67ftz5HE7e+KmQcP0m2G7+u37c+RxO3vipkHD9Kthu/rt+3PkcTt74qZBw/SrYbv67ftz5IE7e+KWQcP0q2G7+w37c+SBO3vilkHD9Kthu/r9+3PkcTt74qZBw/SbYbv67ftz5HE7e+KmQcP0m2G7+u37c+RxO3vipkHD9Jthu/rt+3PkgTt74pZBw/SrYbv6/ftz5IE7e+KWQcP0q2G7+w37c+SBO3vilkHD9Kthu/sN+3PkgTt74pZBw/SrYbv6/ftz5HE7e+KmQcP0m2G7+u37c+RxO3vipkHD9Jthu/rt+3PkgTt74pZBw/SrYbv7Dftz5HE7e+KmQcP0m2G7+u37c+RxO3vipkHD9Jthu/rt+3PkcTt74qZBw/SbYbv67ftz5HE7e+KmQcP0m2G7+u37c+SBO3vilkHD9Kthu/r9+3PkcTt74qZBw/SbYbv67ftz5HE7e+KmQcP0m2G7+u37c+RxO3vipkHD9Jthu/rt+3Pv//fz8AAIA//f9/P///fz8AAIA//f9/P///fz8AAIA//f9/P///fz8AAIA//f9/P///fz8AAIA//f9/P///fz8AAIA//f9/P///fz8AAIA//f9/P///fz8AAIA//f9/P///fz8AAIA//f9/P///fz8AAIA//f9/P///fz8AAIA//f9/P/3/fz8AAIA//f9/P///fz8AAIA//P9/P/3/fz/+/38//v9/P/3/fz8AAIA//f9/P///fz8AAIA//v9/PwAAgD8AAIA//v9/P///fz8BAIA/AACAPwAAgD8AAIA//v9/P/3/fz8AAIA//v9/P///fz8AAIA//f9/P/3/fz8AAIA//f9/P///fz8AAIA//P9/P///fz8AAIA//v9/PwAAgD8AAIA/AACAP///fz8AAIA//v9/P///fz8AAIA//v9/P///fz/+/38//v9/P///fz8AAIA//v9/PwAAgD8BAIA/AACAP///fz8AAIA//f9/PwAAgD/+/38//f9/P///fz8AAIA//v9/P/3/fz8AAIA//P9/P///fz8AAIA//v9/P///fz8AAIA//v9/P/3/fz8AAIA//f9/P/3/fz8AAIA//f9/P///fz8AAIA/AACAP///fz8AAIA//v9/P/3/fz8AAIA//v9/P/3/fz/+/38//v9/P///fz8AAIA//v9/P/3/fz8AAIA//P9/P/3/fz8AAIA//v9/P///fz8AAIA//v9/PwAAgD8AAIA//f9/PwAAgD8AAIA//v9/P///fz8AAIA//P9/P///fz8AAIA//f9/P///fz8AAIA//f9/P0TwEDJrnDg9Q2SbskTwEDJrnDg9Q2SbskTwEDJrnDg9Q2SbskTwEDJrnDg9Q2SbskTwEDJrnDg9Q2SbskTwEDJrnDg9Q2SbskTwEDJrnDg9Q2SbskTwEDJrnDg9Q2SbskTwEDJrnDg9Q2SbskTwEDJrnDg9Q2SbskTwEDJrnDg9Q2SbsudPNTJrnDg9Edl/s/lXhDFsnDg9a2pFs60YWrJunDg9L2JEs/xWjTFvnDg901Eqs2aADzFunDg9z90mszPo3bBrnDg9xsnEsjNgsrBunDg9zvu5sjpALrFvnDg9yXgHM/cNXrFtnDg9Cc+msbWlnbJunDg9KACnsnHvnLJsnDg92aA8MRZjurJtnDg9h5CTMlpWJbFtnDg9ILGxsnx9tbFsnDg9+ZTisXXPB7JonDg9G0ogs5DFLjFvnDg9yRiSsyZx1jFsnDg9I+knsz19CjJvnDg9j2GVsv9Kl7BsnDg9hmqpsnJ1vrFtnDg9aaFpsyVQmzJunDg9O4zSssljsDFsnDg9AwZcs6el0K9tnDg9wQSNMrQpizJtnDg9GKEYMeVwj7BunDg9wkvnMfefD7NunDg9UxiCMa0lpDFsnDg9TwNOMpJwrjJsnDg9/FfPsYzJPLJsnDg9UCYfMi1WvbJonDg9Agz/srejvrFsnDg9AG+eMo4eK7JsnDg9+HzhMSrv4DJqnDg9L2r/shKhkzJunDg9/IShsVeIhTJtnDg9nl0fsrk/rbBvnDg9CsTWsTcYpjJsnDg9HzS5skgJEzJrnDg9/V11s3mcQjJrnDg9N7Ubs0TwEDJrnDg9Q2SbsjT/X7D83vIyAYAaswAAgD80/1+w/N7yMgGAGrMAAIA/NP9fsPze8jIBgBqzAACAPzT/X7D83vIyAYAaswAAgD80/1+w/N7yMgGAGrMAAIA/NP9fsPze8jIBgBqzAACAPzT/X7D83vIyAYAaswAAgD80/1+w/N7yMgGAGrMAAIA/NP9fsPze8jIBgBqzAACAPzT/X7D83vIyAYAaswAAgD80/1+w/N7yMgGAGrMAAIA/gv9fsADf7jIAgBqzAACAP/r/X7AA3/IyAIAaswAAgD/E/1+wAN+yMgCAGrMAAIA/9v9fsADf8jIAgBqzAACAPzYAYLAA3/IyAYAaswAAgD+TAGCwgG95MwCAGrMAAIA/mf9fsIBvOTMBgBqzAACAPwIAYLAA3/Iy/38aswAAgD8KAGCwAN/yMv5/GrMAAIA/AgBgsADf8jL/fxqzAACAP6T/X7D/vWUy/38aswAAgD/0/1+wAb5lMgCAGrMAAIA/1P9fsADfsjIBgBqzAACAPzYAYLCAbxkzAYAaswAAgD8rAGCwgG95MwGAGrMAAIA/vv9fsADf8jIBgBqzAACAP3AAYLAA3/IyAIAaswAAgD8IAGCwgG85MwCAGrMAAIA/5P9fsADf0jIAgBqzAACAPyz/X7AA3/IyAYAaswAAgD+W/1+wAN/SMgCAGrMAAIA/6P9fsIBvCTMAgBqzAACAPxgAYLCAbxkz/38aswAAgD9wAGCwAN/yMgGAGrMAAIA/lv9fsADfsjL+fxqzAACAP/z/X7ABvmUyAIAaswAAgD+w/1+wgG8ZMwCAGrMAAIA/vv9fsADf8jIAgBqzAACAP7j/X7ABvmUyAIAaswAAgD8QAGCwAb5lMgCAGrMAAIA/YgBgsADf8jIBgBqzAACAPzAAYLAA37Iy/38aswAAgD9GAGCwGBDSsACAGrMAAIA/ev9fsAO+ZTIAgBqzAACAP1AAYLCAbxkzAYAaswAAgD+Y/1+wAb5lMgCAGrMAAIA/Gv9fsADf0jIAgBqzAACAP/b/X7AA3+IyAIAaswAAgD/W/1+wAN/yMgGAGrMAAIA/NP9fsPze8jIBgBqzAACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8BAIA/AACAPwAAgD8AAIA/AACAP/7/fz8AAIA//v9/PwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAP///fz8AAIA///9/P///fz8AAIA///9/PwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8BAIA/AACAP///fz8AAIA///9/PwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwEAgD8AAIA/AQCAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8BAIA/AACAPwAAgD8BAIA/AACAPwAAgD8AAIA/AACAP///fz8AAIA///9/PwAAgD8AAIA/AACAPwAAgD/+/38/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAP///fz8AAIA///9/PwEAgD8BAIA/AQCAPwAAgD8AAIA/AACAPwAAgD8BAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAP+Iv2KKQLSM9zK/JveIv2KKQLSM9zK/JveIv2KKQLSM9zK/JveIv2KKQLSM9zK/JveIv2KKQLSM9zK/JveIv2KKQLSM9zK/JveIv2KKQLSM9zK/JveIv2KKQLSM9zK/JveIv2KKQLSM9zK/JveIv2KKQLSM9zK/JveIv2KKQLSM9zK/JveIv2KKQLSM9zK/JveIv2KKQLSM9zK/JveIv2KKQLSM9zK/JveIv2KKQLSM9zK/JveIv2KKQLSM9zK/JveIv2KKQLSM9zK/JveIv2KKQLSM9zK/JveIv2KKQLSM9zK/JveIv2KKQLSM9zK/JveIv2KKQLSM9zK/JveIv2KKQLSM9zK/JveIv2KKQLSM9zK/JveIv2KKQLSM9zK/JveIv2KKQLSM9zK/JveIv2KKQLSM9zK/JveIv2KKQLSM9zK/JveIv2KKQLSM9zK/JveIv2KKQLSM9zK/JveIv2KKQLSM9zK/JveIv2KKQLSM9zK/JveIv2KKQLSM9zK/JveIv2KKQLSM9zK/JveIv2KKQLSM9zK/JveIv2KKQLSM9zK/JveIv2KKQLSM9zK/JveIv2KKQLSM9zK/JveIv2KKQLSM9zK/JveIv2KKQLSM9zK/JveIv2KKQLSM9zK/JveIv2KKQLSM9zK/JveIv2KKQLSM9zK/JveIv2KKQLSM9zK/JveIv2KKQLSM9zK/JveIv2KKQLSM9zK/JveIv2KKQLSM9zK/JveIv2KKQLSM9zK/JveIv2KKQLSM9zK/JveIv2KKQLSM9zK/JveIv2KKQLSM9zK/JveIv2KKQLSM9zK/JvfQENb8AAAAAAAAAAPIENT/0BDW/AAAAAAAAAADyBDU/9AQ1vwAAAAAAAAAA8gQ1P/QENb8AAAAAAAAAAPIENT/0BDW/AAAAAAAAAADyBDU/9AQ1vwAAAAAAAAAA8gQ1P/QENb8AAAAAAAAAAPIENT/0BDW/AAAAAAAAAADyBDU/9AQ1vwAAAAAAAAAA8gQ1P/QENb8AAAAAAAAAAPIENT/0BDW/AAAAAAAAAADyBDU/9AQ1vwAAAAAAAAAA8gQ1P/QENb8AAAAAAAAAAPIENT/0BDW/AAAAAAAAAADyBDU/9AQ1vwAAAAAAAAAA8gQ1P/QENb8AAAAAAAAAAPIENT/0BDW/AAAAAAAAAADyBDU/9AQ1vwAAAAAAAAAA8gQ1P/QENb8AAAAAAAAAAPIENT/0BDW/AAAAAAAAAADyBDU/9AQ1vwAAAAAAAAAA8gQ1P/QENb8AAAAAAAAAAPIENT/0BDW/AAAAAAAAAADyBDU/9AQ1vwAAAAAAAAAA8gQ1P/QENb8AAAAAAAAAAPIENT/0BDW/AAAAAAAAAADyBDU/9AQ1vwAAAAAAAAAA8gQ1P/QENb8AAAAAAAAAAPIENT/0BDW/AAAAAAAAAADyBDU/9AQ1vwAAAAAAAAAA8gQ1P/QENb8AAAAAAAAAAPIENT/0BDW/AAAAAAAAAADyBDU/9AQ1vwAAAAAAAAAA8gQ1P/QENb8AAAAAAAAAAPIENT/0BDW/AAAAAAAAAADyBDU/9AQ1vwAAAAAAAAAA8gQ1P/QENb8AAAAAAAAAAPIENT/0BDW/AAAAAAAAAADyBDU/9AQ1vwAAAAAAAAAA8gQ1P/QENb8AAAAAAAAAAPIENT/0BDW/AAAAAAAAAADyBDU/9AQ1vwAAAAAAAAAA8gQ1P/QENb8AAAAAAAAAAPIENT/0BDW/AAAAAAAAAADyBDU/9AQ1vwAAAAAAAAAA8gQ1P/QENb8AAAAAAAAAAPIENT/0BDW/AAAAAAAAAADyBDU/9AQ1vwAAAAAAAAAA8gQ1P/QENb8AAAAAAAAAAPIENT/0BDW/AAAAAAAAAADyBDU/9AQ1vwAAAAAAAAAA8gQ1PwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAAACZjJs9AAAAAAAAAACZjJs9AAAAAAAAAACZjJs9AAAAAAAAAACZjJs9AAAAAAAAAACZjJs9AAAAAAAAAACZjJs9AAAAAAAAAACZjJs9AAAAAAAAAACZjJs9AAAAAAAAAACZjJs9AAAAAAAAAACZjJs9AAAAAAAAAACZjJs9AAAAAAAAAACZjJs9AAAAAAAAAACZjJs9AAAAAAAAAACZjJs9AAAAAAAAAACZjJs9AAAAAAAAAACZjJs9AAAAAAAAAACZjJs9AAAAAAAAAACZjJs9AAAAAAAAAACZjJs9AAAAAAAAAACZjJs9AAAAAAAAAACZjJs9AAAAAAAAAACZjJs9AAAAAAAAAACZjJs9AAAAAAAAAACZjJs9AAAAAAAAAACZjJs9AAAAAAAAAACZjJs9AAAAAAAAAACZjJs9AAAAAAAAAACZjJs9AAAAAAAAAACZjJs9AAAAAAAAAACZjJs9AAAAAAAAAACZjJs9AAAAAAAAAACZjJs9AAAAAAAAAACZjJs9AAAAAAAAAACZjJs9AAAAAAAAAACZjJs9AAAAAAAAAACZjJs9AAAAAAAAAACZjJs9AAAAAAAAAACZjJs9AAAAAAAAAACZjJs9AAAAAAAAAACZjJs9AAAAAAAAAACZjJs9AAAAAAAAAACZjJs9AAAAAAAAAACZjJs9AAAAAAAAAACZjJs9AAAAAAAAAACZjJs9AAAAAAAAAACZjJs9AAAAAAAAAACZjJs9AAAAAAAAAACZjJs9AAAAAAAAAACZjJs9AAAAAAAAAACZjJs9AAAAAAAAAACZjJs9AAAAAAAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAP7Fmjj3nEEs9hjV7PbFmjj3nEEs9hjV7PbFmjj3nEEs9hjV7PbFmjj3nEEs9hjV7PbFmjj3nEEs9hjV7PbFmjj3nEEs9hjV7PbFmjj3nEEs9hjV7PbFmjj3nEEs9hjV7PbFmjj3nEEs9hjV7PbFmjj3nEEs9hjV7PbFmjj3nEEs9hjV7PbFmjj3nEEs9hjV7PbFmjj3nEEs9hjV7PbFmjj3nEEs9hjV7PbFmjj3nEEs9hjV7PbFmjj3nEEs9hjV7PbFmjj3nEEs9hjV7PbFmjj3nEEs9hjV7PbFmjj3nEEs9hjV7PbFmjj3nEEs9hjV7PbFmjj3nEEs9hjV7PbFmjj3nEEs9hjV7PbFmjj3nEEs9hjV7PbFmjj3nEEs9hjV7PbFmjj3nEEs9hjV7PbFmjj3nEEs9hjV7PbFmjj3nEEs9hjV7PbFmjj3nEEs9hjV7PbFmjj3nEEs9hjV7PbFmjj3nEEs9hjV7PbFmjj3nEEs9hjV7PbFmjj3nEEs9hjV7PbFmjj3nEEs9hjV7PbFmjj3nEEs9hjV7PbFmjj3nEEs9hjV7PbFmjj3nEEs9hjV7PbFmjj3nEEs9hjV7PbFmjj3nEEs9hjV7PbFmjj3nEEs9hjV7PbFmjj3nEEs9hjV7PbFmjj3nEEs9hjV7PbFmjj3nEEs9hjV7PbFmjj3nEEs9hjV7PbFmjj3nEEs9hjV7PbFmjj3nEEs9hjV7PbFmjj3nEEs9hjV7PbFmjj3nEEs9hjV7PbFmjj3nEEs9hjV7PbFmjj3nEEs9hjV7PbFmjj3nEEs9hjV7PbFmjj3nEEs9hjV7PSNdBjirB4q73O8wOmf/fz8jXQY4qweKu9zvMDpn/38/I10GOKsHirvc7zA6Z/9/PyNdBjirB4q73O8wOmf/fz8jXQY4qweKu9zvMDpn/38/I10GOKsHirvc7zA6Z/9/PyNdBjirB4q73O8wOmf/fz8jXQY4qweKu9zvMDpn/38/I10GOKsHirvc7zA6Z/9/PyNdBjirB4q73O8wOmf/fz8jXQY4qweKu9zvMDpn/38/I10GOKsHirvc7zA6Z/9/PyNdBjirB4q73O8wOmf/fz8jXQY4qweKu9zvMDpn/38/I10GOKsHirvc7zA6Z/9/PyNdBjirB4q73O8wOmf/fz8jXQY4qweKu9zvMDpn/38/I10GOKsHirvc7zA6Z/9/PyNdBjirB4q73O8wOmf/fz8jXQY4qweKu9zvMDpn/38/I10GOKsHirvc7zA6Z/9/PyNdBjirB4q73O8wOmf/fz8jXQY4qweKu9zvMDpn/38/I10GOKsHirvc7zA6Z/9/PyNdBjirB4q73O8wOmf/fz8jXQY4qweKu9zvMDpn/38/I10GOKsHirvc7zA6Z/9/PyNdBjirB4q73O8wOmf/fz8jXQY4qweKu9zvMDpn/38/I10GOKsHirvc7zA6Z/9/PyNdBjirB4q73O8wOmf/fz8jXQY4qweKu9zvMDpn/38/I10GOKsHirvc7zA6Z/9/PyNdBjirB4q73O8wOmf/fz8jXQY4qweKu9zvMDpn/38/I10GOKsHirvc7zA6Z/9/PyNdBjirB4q73O8wOmf/fz8jXQY4qweKu9zvMDpn/38/I10GOKsHirvc7zA6Z/9/PyNdBjirB4q73O8wOmf/fz8jXQY4qweKu9zvMDpn/38/I10GOKsHirvc7zA6Z/9/PyNdBjirB4q73O8wOmf/fz8jXQY4qweKu9zvMDpn/38/I10GOKsHirvc7zA6Z/9/PyNdBjirB4q73O8wOmf/fz8jXQY4qweKu9zvMDpn/38/I10GOKsHirvc7zA6Z/9/PyNdBjirB4q73O8wOmf/fz8jXQY4qweKu9zvMDpn/38/I10GOKsHirvc7zA6Z/9/PwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAk7HzHQc9AABkMAAAk7HzHQc9AABkMAAAk7HzHQc9AABkMAAAk7HzHQc9AABkMAAAk7HzHQc9AABkMAAAk7HzHQc9AABkMAAAk7HzHQc9AABkMAAAk7HzHQc9AABkMAAAk7HzHQc9AABkMAAAk7HzHQc9AABkMAAAk7HzHQc9AABkMAAAk7HzHQc9AABkMAAAk7HzHQc9AABkMAAAk7HzHQc9AABkMAAAk7HzHQc9AABkMAAAk7HzHQc9AABkMAAAk7HzHQc9AABkMAAAk7HzHQc9AABkMAAAk7HzHQc9AABkMAAAk7HzHQc9AABkMAAAk7HzHQc9AABkMAAAk7HzHQc9AABkMAAAk7HzHQc9AABkMAAAk7HzHQc9AABkMAAAk7HzHQc9AABkMAAAk7HzHQc9AABkMAAAk7HzHQc9AABkMAAAk7HzHQc9AABkMAAAk7HzHQc9AABkMAAAk7HzHQc9AABkMAAAk7HzHQc9AABkMAAAk7HzHQc9AABkMAAAk7HzHQc9AABkMAAAk7HzHQc9AABkMAAAk7HzHQc9AABkMAAAk7HzHQc9AABkMAAAk7HzHQc9AABkMAAAk7HzHQc9AABkMAAAk7HzHQc9AABkMAAAk7HzHQc9AABkMAAAk7HzHQc9AABkMAAAk7HzHQc9AABkMAAAk7HzHQc9AABkMAAAk7HzHQc9AABkMAAAk7HzHQc9AABkMAAAk7HzHQc9AABkMAAAk7HzHQc9AABkMAAAk7HzHQc9AABkMAAAk7HzHQc9AABkMAAAk7HzHQc9AABkMAAAk7HzHQc9AABkMAAAACwAAMCnAAAArgAAgD8AAAAsAADApwAAAK4AAIA/AAAALAAAwKcAAACuAACAPwAAACwAAMCnAAAArgAAgD8AAAAsAADApwAAAK4AAIA/AAAALAAAwKcAAACuAACAPwAAACwAAMCnAAAArgAAgD8AAAAsAADApwAAAK4AAIA/AAAALAAAwKcAAACuAACAPwAAACwAAMCnAAAArgAAgD8AAAAsAADApwAAAK4AAIA/AAAALAAAwKcAAACuAACAPwAAACwAAMCnAAAArgAAgD8AAAAsAADApwAAAK4AAIA/AAAALAAAwKcAAACuAACAPwAAACwAAMCnAAAArgAAgD8AAAAsAADApwAAAK4AAIA/AAAALAAAwKcAAACuAACAPwAAACwAAMCnAAAArgAAgD8AAAAsAADApwAAAK4AAIA/AAAALAAAwKcAAACuAACAPwAAACwAAMCnAAAArgAAgD8AAAAsAADApwAAAK4AAIA/AAAALAAAwKcAAACuAACAPwAAACwAAMCnAAAArgAAgD8AAAAsAADApwAAAK4AAIA/AAAALAAAwKcAAACuAACAPwAAACwAAMCnAAAArgAAgD8AAAAsAADApwAAAK4AAIA/AAAALAAAwKcAAACuAACAPwAAACwAAMCnAAAArgAAgD8AAAAsAADApwAAAK4AAIA/AAAALAAAwKcAAACuAACAPwAAACwAAMCnAAAArgAAgD8AAAAsAADApwAAAK4AAIA/AAAALAAAwKcAAACuAACAPwAAACwAAMCnAAAArgAAgD8AAAAsAADApwAAAK4AAIA/AAAALAAAwKcAAACuAACAPwAAACwAAMCnAAAArgAAgD8AAAAsAADApwAAAK4AAIA/AAAALAAAwKcAAACuAACAPwAAACwAAMCnAAAArgAAgD8AAAAsAADApwAAAK4AAIA/AAAALAAAwKcAAACuAACAPwAAACwAAMCnAAAArgAAgD8AAAAsAADApwAAAK4AAIA/AAAALAAAwKcAAACuAACAPwAAACwAAMCnAAAArgAAgD8AAAAsAADApwAAAK4AAIA/AAAALAAAwKcAAACuAACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAP7Fmjj2CQ0y6Fp4+vbFmjj2CQ0y6Fp4+vbFmjj2CQ0y6Fp4+vbFmjj2CQ0y6Fp4+vbFmjj2CQ0y6Fp4+vbFmjj2CQ0y6Fp4+vbFmjj2CQ0y6Fp4+vbFmjj2CQ0y6Fp4+vbFmjj2CQ0y6Fp4+vbFmjj2CQ0y6Fp4+vbFmjj2CQ0y6Fp4+vbFmjj2CQ0y6Fp4+vbFmjj2CQ0y6Fp4+vbFmjj2CQ0y6Fp4+vbFmjj2CQ0y6Fp4+vbFmjj2CQ0y6Fp4+vbFmjj2CQ0y6Fp4+vbFmjj2CQ0y6Fp4+vbFmjj2CQ0y6Fp4+vbFmjj2CQ0y6Fp4+vbFmjj2CQ0y6Fp4+vbFmjj2CQ0y6Fp4+vbFmjj2CQ0y6Fp4+vbFmjj2CQ0y6Fp4+vbFmjj2CQ0y6Fp4+vbFmjj2CQ0y6Fp4+vbFmjj2CQ0y6Fp4+vbFmjj2CQ0y6Fp4+vbFmjj2CQ0y6Fp4+vbFmjj2CQ0y6Fp4+vbFmjj2CQ0y6Fp4+vbFmjj2CQ0y6Fp4+vbFmjj2CQ0y6Fp4+vbFmjj2CQ0y6Fp4+vbFmjj2CQ0y6Fp4+vbFmjj2CQ0y6Fp4+vbFmjj2CQ0y6Fp4+vbFmjj2CQ0y6Fp4+vbFmjj2CQ0y6Fp4+vbFmjj2CQ0y6Fp4+vbFmjj2CQ0y6Fp4+vbFmjj2CQ0y6Fp4+vbFmjj2CQ0y6Fp4+vbFmjj2CQ0y6Fp4+vbFmjj2CQ0y6Fp4+vbFmjj2CQ0y6Fp4+vbFmjj2CQ0y6Fp4+vbFmjj2CQ0y6Fp4+vbFmjj2CQ0y6Fp4+vbFmjj2CQ0y6Fp4+vbFmjj2CQ0y6Fp4+vdu4gTc71Re7eaHCOdL/fz/buIE3O9UXu3mhwjnS/38/27iBNzvVF7t5ocI50v9/P9u4gTc71Re7eaHCOdL/fz/buIE3O9UXu3mhwjnS/38/27iBNzvVF7t5ocI50v9/P9u4gTc71Re7eaHCOdL/fz/buIE3O9UXu3mhwjnS/38/27iBNzvVF7t5ocI50v9/P9u4gTc71Re7eaHCOdL/fz/buIE3O9UXu3mhwjnS/38/27iBNzvVF7t5ocI50v9/P9u4gTc71Re7eaHCOdL/fz/buIE3O9UXu3mhwjnS/38/27iBNzvVF7t5ocI50v9/P9u4gTc71Re7eaHCOdL/fz/buIE3O9UXu3mhwjnS/38/27iBNzvVF7t5ocI50v9/P9u4gTc71Re7eaHCOdL/fz/buIE3O9UXu3mhwjnS/38/27iBNzvVF7t5ocI50v9/P9u4gTc71Re7eaHCOdL/fz/buIE3O9UXu3mhwjnS/38/27iBNzvVF7t5ocI50v9/P9u4gTc71Re7eaHCOdL/fz/buIE3O9UXu3mhwjnS/38/27iBNzvVF7t5ocI50v9/P9u4gTc71Re7eaHCOdL/fz/buIE3O9UXu3mhwjnS/38/27iBNzvVF7t5ocI50v9/P9u4gTc71Re7eaHCOdL/fz/buIE3O9UXu3mhwjnS/38/27iBNzvVF7t5ocI50v9/P9u4gTc71Re7eaHCOdL/fz/buIE3O9UXu3mhwjnS/38/27iBNzvVF7t5ocI50v9/P9u4gTc71Re7eaHCOdL/fz/buIE3O9UXu3mhwjnS/38/27iBNzvVF7t5ocI50v9/P9u4gTc71Re7eaHCOdL/fz/buIE3O9UXu3mhwjnS/38/27iBNzvVF7t5ocI50v9/P9u4gTc71Re7eaHCOdL/fz/buIE3O9UXu3mhwjnS/38/27iBNzvVF7t5ocI50v9/P9u4gTc71Re7eaHCOdL/fz/buIE3O9UXu3mhwjnS/38/27iBNzvVF7t5ocI50v9/P9u4gTc71Re7eaHCOdL/fz/buIE3O9UXu3mhwjnS/38/27iBNzvVF7t5ocI50v9/P/3/fz+0/38/tv9/P/3/fz+0/38/tv9/P/3/fz+0/38/tv9/P/3/fz+0/38/tv9/P/3/fz+0/38/tv9/P/3/fz+0/38/tv9/P/3/fz+0/38/tv9/P/3/fz+0/38/tv9/P/3/fz+0/38/tv9/P/3/fz+0/38/tv9/P/3/fz+0/38/tv9/P/3/fz+0/38/tv9/P/3/fz+0/38/tv9/P/3/fz+0/38/tv9/P/3/fz+0/38/tv9/P/3/fz+0/38/tv9/P/3/fz+0/38/tv9/P/3/fz+0/38/tv9/P/3/fz+0/38/tv9/P/3/fz+0/38/tv9/P/3/fz+0/38/tv9/P/3/fz+0/38/tv9/P/3/fz+0/38/tv9/P/3/fz+0/38/tv9/P/3/fz+0/38/tv9/P/3/fz+0/38/tv9/P/3/fz+0/38/tv9/P/3/fz+0/38/tv9/P/3/fz+0/38/tv9/P/3/fz+0/38/tv9/P/3/fz+0/38/tv9/P/3/fz+0/38/tv9/P/3/fz+0/38/tv9/P/3/fz+0/38/tv9/P/3/fz+0/38/tv9/P/3/fz+0/38/tv9/P/3/fz+0/38/tv9/P/3/fz+0/38/tv9/P/3/fz+0/38/tv9/P/3/fz+0/38/tv9/P/3/fz+0/38/tv9/P/3/fz+0/38/tv9/P/3/fz+0/38/tv9/P/3/fz+0/38/tv9/P/3/fz+0/38/tv9/P/3/fz+0/38/tv9/P/3/fz+0/38/tv9/P/3/fz+0/38/tv9/P/3/fz+0/38/tv9/P/3/fz+0/38/tv9/P/3/fz+0/38/tv9/PwCAjbH3HQc9ANCkMACAjbH3HQc9ANCkMACAjbH3HQc9ANCkMACAjbH3HQc9ANCkMACAjbH3HQc9ANCkMACAjbH3HQc9ANCkMACAjbH3HQc9ANCkMACAjbH3HQc9ANCkMACAjbH3HQc9ANCkMACAjbH3HQc9ANCkMACAjbH3HQc9ANCkMACAjbH3HQc9ANCkMACAjbH3HQc9ANCkMACAjbH3HQc9ANCkMACAjbH3HQc9ANCkMACAjbH3HQc9ANCkMACAjbH3HQc9ANCkMACAjbH3HQc9ANCkMACAjbH3HQc9ANCkMACAjbH3HQc9ANCkMACAjbH3HQc9ANCkMACAjbH3HQc9ANCkMACAjbH3HQc9ANCkMACAjbH3HQc9ANCkMACAjbH3HQc9ANCkMACAjbH3HQc9ANCkMACAjbH3HQc9ANCkMACAjbH3HQc9ANCkMACAjbH3HQc9ANCkMACAjbH3HQc9ANCkMACAjbH3HQc9ANCkMACAjbH3HQc9ANCkMACAjbH3HQc9ANCkMACAjbH3HQc9ANCkMACAjbH3HQc9ANCkMACAjbH3HQc9ANCkMACAjbH3HQc9ANCkMACAjbH3HQc9ANCkMACAjbH3HQc9ANCkMACAjbH3HQc9ANCkMACAjbH3HQc9ANCkMACAjbH3HQc9ANCkMACAjbH3HQc9ANCkMACAjbH3HQc9ANCkMACAjbH3HQc9ANCkMACAjbH3HQc9ANCkMACAjbH3HQc9ANCkMACAjbH3HQc9ANCkMACAjbH3HQc9ANCkMACAjbH3HQc9ANCkMACAjbH3HQc9ANCkMAAAYCsAAGopAgCmKgAAgD8AAGArAABqKQIApioAAIA/AABgKwAAaikCAKYqAACAPwAAYCsAAGopAgCmKgAAgD8AAGArAABqKQIApioAAIA/AABgKwAAaikCAKYqAACAPwAAYCsAAGopAgCmKgAAgD8AAGArAABqKQIApioAAIA/AABgKwAAaikCAKYqAACAPwAAYCsAAGopAgCmKgAAgD8AAGArAABqKQIApioAAIA/AABgKwAAaikCAKYqAACAPwAAYCsAAGopAgCmKgAAgD8AAGArAABqKQIApioAAIA/AABgKwAAaikCAKYqAACAPwAAYCsAAGopAgCmKgAAgD8AAGArAABqKQIApioAAIA/AABgKwAAaikCAKYqAACAPwAAYCsAAGopAgCmKgAAgD8AAGArAABqKQIApioAAIA/AABgKwAAaikCAKYqAACAPwAAYCsAAGopAgCmKgAAgD8AAGArAABqKQIApioAAIA/AABgKwAAaikCAKYqAACAPwAAYCsAAGopAgCmKgAAgD8AAGArAABqKQIApioAAIA/AABgKwAAaikCAKYqAACAPwAAYCsAAGopAgCmKgAAgD8AAGArAABqKQIApioAAIA/AABgKwAAaikCAKYqAACAPwAAYCsAAGopAgCmKgAAgD8AAGArAABqKQIApioAAIA/AABgKwAAaikCAKYqAACAPwAAYCsAAGopAgCmKgAAgD8AAGArAABqKQIApioAAIA/AABgKwAAaikCAKYqAACAPwAAYCsAAGopAgCmKgAAgD8AAGArAABqKQIApioAAIA/AABgKwAAaikCAKYqAACAPwAAYCsAAGopAgCmKgAAgD8AAGArAABqKQIApioAAIA/AABgKwAAaikCAKYqAACAPwAAYCsAAGopAgCmKgAAgD8AAGArAABqKQIApioAAIA/AABgKwAAaikCAKYqAACAPwAAYCsAAGopAgCmKgAAgD8AAGArAABqKQIApioAAIA/AABgKwAAaikCAKYqAACAPwAAYCsAAGopAgCmKgAAgD8AAGArAABqKQIApioAAIA/AABgKwAAaikCAKYqAACAPwAAgD8BAIA/AACAPwAAgD8BAIA/AACAPwAAgD8BAIA/AACAPwAAgD8BAIA/AACAPwAAgD8BAIA/AACAPwAAgD8BAIA/AACAPwAAgD8BAIA/AACAPwAAgD8BAIA/AACAPwAAgD8BAIA/AACAPwAAgD8BAIA/AACAPwAAgD8BAIA/AACAPwAAgD8BAIA/AACAPwAAgD8BAIA/AACAPwAAgD8BAIA/AACAPwAAgD8BAIA/AACAPwAAgD8BAIA/AACAPwAAgD8BAIA/AACAPwAAgD8BAIA/AACAPwAAgD8BAIA/AACAPwAAgD8BAIA/AACAPwAAgD8BAIA/AACAPwAAgD8BAIA/AACAPwAAgD8BAIA/AACAPwAAgD8BAIA/AACAPwAAgD8BAIA/AACAPwAAgD8BAIA/AACAPwAAgD8BAIA/AACAPwAAgD8BAIA/AACAPwAAgD8BAIA/AACAPwAAgD8BAIA/AACAPwAAgD8BAIA/AACAPwAAgD8BAIA/AACAPwAAgD8BAIA/AACAPwAAgD8BAIA/AACAPwAAgD8BAIA/AACAPwAAgD8BAIA/AACAPwAAgD8BAIA/AACAPwAAgD8BAIA/AACAPwAAgD8BAIA/AACAPwAAgD8BAIA/AACAPwAAgD8BAIA/AACAPwAAgD8BAIA/AACAPwAAgD8BAIA/AACAPwAAgD8BAIA/AACAPwAAgD8BAIA/AACAPwAAgD8BAIA/AACAPwAAgD8BAIA/AACAPwAAgD8BAIA/AACAPwAAgD8BAIA/AACAPwAAgD8BAIA/AACAPwAAgD8BAIA/AACAPwPfh723Z7I8G1VXuQPfh723Z7I8G1VXuQPfh723Z7I8G1VXuQPfh723Z7I8G1VXuQPfh723Z7I8G1VXuQPfh723Z7I8G1VXuQPfh723Z7I8G1VXuQPfh723Z7I8G1VXuQPfh723Z7I8G1VXuQPfh723Z7I8G1VXuQPfh723Z7I8G1VXuQPfh723Z7I8G1VXuQPfh723Z7I8G1VXuQPfh723Z7I8G1VXuQPfh723Z7I8G1VXuQPfh723Z7I8G1VXuQPfh723Z7I8G1VXuQPfh723Z7I8G1VXuQPfh723Z7I8G1VXuQPfh723Z7I8G1VXuQPfh723Z7I8G1VXuQPfh723Z7I8G1VXuQPfh723Z7I8G1VXuQPfh723Z7I8G1VXuQPfh723Z7I8G1VXuQPfh723Z7I8G1VXuQPfh723Z7I8G1VXuQPfh723Z7I8G1VXuQPfh723Z7I8G1VXuQPfh723Z7I8G1VXuQPfh723Z7I8G1VXuQPfh723Z7I8G1VXuQPfh723Z7I8G1VXuQPfh723Z7I8G1VXuQPfh723Z7I8G1VXuQPfh723Z7I8G1VXuQPfh723Z7I8G1VXuQPfh723Z7I8G1VXuQPfh723Z7I8G1VXuQPfh723Z7I8G1VXuQPfh723Z7I8G1VXuQPfh723Z7I8G1VXuQPfh723Z7I8G1VXuQPfh723Z7I8G1VXuQPfh723Z7I8G1VXuQPfh723Z7I8G1VXuQPfh723Z7I8G1VXuQPfh723Z7I8G1VXuQPfh723Z7I8G1VXuQPfh723Z7I8G1VXuQPfh723Z7I8G1VXuSrAjzrMBqU9c5l+PxYgiD0qwI86zAalPXOZfj8WIIg9KsCPOswGpT1zmX4/FiCIPSrAjzrMBqU9c5l+PxYgiD0qwI86zAalPXOZfj8WIIg9KsCPOswGpT1zmX4/FiCIPSrAjzrMBqU9c5l+PxYgiD0qwI86zAalPXOZfj8WIIg9KsCPOswGpT1zmX4/FiCIPSrAjzrMBqU9c5l+PxYgiD0qwI86zAalPXOZfj8WIIg9KsCPOswGpT1zmX4/FiCIPSrAjzrMBqU9c5l+PxYgiD0qwI86zAalPXOZfj8WIIg9KsCPOswGpT1zmX4/FiCIPSrAjzrMBqU9c5l+PxYgiD0qwI86zAalPXOZfj8WIIg9KsCPOswGpT1zmX4/FiCIPSrAjzrMBqU9c5l+PxYgiD0qwI86zAalPXOZfj8WIIg9KsCPOswGpT1zmX4/FiCIPSrAjzrMBqU9c5l+PxYgiD0qwI86zAalPXOZfj8WIIg9KsCPOswGpT1zmX4/FiCIPSrAjzrMBqU9c5l+PxYgiD0qwI86zAalPXOZfj8WIIg9KsCPOswGpT1zmX4/FiCIPSrAjzrMBqU9c5l+PxYgiD0qwI86zAalPXOZfj8WIIg9KsCPOswGpT1zmX4/FiCIPSrAjzrMBqU9c5l+PxYgiD0qwI86zAalPXOZfj8WIIg9KsCPOswGpT1zmX4/FiCIPSrAjzrMBqU9c5l+PxYgiD0qwI86zAalPXOZfj8WIIg9KsCPOswGpT1zmX4/FiCIPSrAjzrMBqU9c5l+PxYgiD0qwI86zAalPXOZfj8WIIg9KsCPOswGpT1zmX4/FiCIPSrAjzrMBqU9c5l+PxYgiD0qwI86zAalPXOZfj8WIIg9KsCPOswGpT1zmX4/FiCIPSrAjzrMBqU9c5l+PxYgiD0qwI86zAalPXOZfj8WIIg9KsCPOswGpT1zmX4/FiCIPSrAjzrMBqU9c5l+PxYgiD0qwI86zAalPXOZfj8WIIg9KsCPOswGpT1zmX4/FiCIPSrAjzrMBqU9c5l+PxYgiD0qwI86zAalPXOZfj8WIIg9KsCPOswGpT1zmX4/FiCIPRUAgD8CAIA/HwCAPxUAgD8CAIA/HwCAPxUAgD8CAIA/HwCAPxUAgD8CAIA/HwCAPxUAgD8CAIA/HwCAPxUAgD8CAIA/HwCAPxUAgD8CAIA/HwCAPxUAgD8CAIA/HwCAPxUAgD8CAIA/HwCAPxUAgD8CAIA/HwCAPxUAgD8CAIA/HwCAPxUAgD8CAIA/HwCAPxUAgD8CAIA/HwCAPxUAgD8CAIA/HwCAPxUAgD8CAIA/HwCAPxUAgD8CAIA/HwCAPxUAgD8CAIA/HwCAPxUAgD8CAIA/HwCAPxUAgD8CAIA/HwCAPxUAgD8CAIA/HwCAPxUAgD8CAIA/HwCAPxUAgD8CAIA/HwCAPxUAgD8CAIA/HwCAPxUAgD8CAIA/HwCAPxUAgD8CAIA/HwCAPxUAgD8CAIA/HwCAPxUAgD8CAIA/HwCAPxUAgD8CAIA/HwCAPxUAgD8CAIA/HwCAPxUAgD8CAIA/HwCAPxUAgD8CAIA/HwCAPxUAgD8CAIA/HwCAPxUAgD8CAIA/HwCAPxUAgD8CAIA/HwCAPxUAgD8CAIA/HwCAPxUAgD8CAIA/HwCAPxUAgD8CAIA/HwCAPxUAgD8CAIA/HwCAPxUAgD8CAIA/HwCAPxUAgD8CAIA/HwCAPxUAgD8CAIA/HwCAPxUAgD8CAIA/HwCAPxUAgD8CAIA/HwCAPxUAgD8CAIA/HwCAPxUAgD8CAIA/HwCAPxUAgD8CAIA/HwCAPxUAgD8CAIA/HwCAPxUAgD8CAIA/HwCAPxUAgD8CAIA/HwCAPxUAgD8CAIA/HwCAPxUAgD8CAIA/HwCAP0G75DHhCqQ9Aq16sUG75DHhCqQ9Aq16sUG75DHhCqQ9Aq16sUG75DHhCqQ9Aq16sUG75DHhCqQ9Aq16sUG75DHhCqQ9Aq16sUG75DHhCqQ9Aq16sUG75DHhCqQ9Aq16sUG75DHhCqQ9Aq16sUG75DHhCqQ9Aq16sUG75DHhCqQ9Aq16sUG75DHhCqQ9Aq16sUG75DHhCqQ9Aq16sUG75DHhCqQ9Aq16sUG75DHhCqQ9Aq16sUG75DHhCqQ9Aq16sUG75DHhCqQ9Aq16sUG75DHhCqQ9Aq16sUG75DHhCqQ9Aq16sUG75DHhCqQ9Aq16sUG75DHhCqQ9Aq16sUG75DHhCqQ9Aq16sUG75DHhCqQ9Aq16sUG75DHhCqQ9Aq16sUG75DHhCqQ9Aq16sUG75DHhCqQ9Aq16sUG75DHhCqQ9Aq16sUG75DHhCqQ9Aq16sUG75DHhCqQ9Aq16sUG75DHhCqQ9Aq16sUG75DHhCqQ9Aq16sUG75DHhCqQ9Aq16sUG75DHhCqQ9Aq16sUG75DHhCqQ9Aq16sUG75DHhCqQ9Aq16sUG75DHhCqQ9Aq16sUG75DHhCqQ9Aq16sUG75DHhCqQ9Aq16sUG75DHhCqQ9Aq16sUG75DHhCqQ9Aq16sUG75DHhCqQ9Aq16sUG75DHhCqQ9Aq16sUG75DHhCqQ9Aq16sUG75DHhCqQ9Aq16sUG75DHhCqQ9Aq16sUG75DHhCqQ9Aq16sUG75DHhCqQ9Aq16sUG75DHhCqQ9Aq16sUG75DHhCqQ9Aq16sUG75DHhCqQ9Aq16sUG75DHhCqQ9Aq16sZBd8L2p33Q5FWqvOx46fj+QXfC9qd90ORVqrzseOn4/kF3wvanfdDkVaq87Hjp+P5Bd8L2p33Q5FWqvOx46fj+QXfC9qd90ORVqrzseOn4/kF3wvanfdDkVaq87Hjp+P5Bd8L2p33Q5FWqvOx46fj+QXfC9qd90ORVqrzseOn4/kF3wvanfdDkVaq87Hjp+P5Bd8L2p33Q5FWqvOx46fj+QXfC9qd90ORVqrzseOn4/kF3wvanfdDkVaq87Hjp+P5Bd8L2p33Q5FWqvOx46fj+QXfC9qd90ORVqrzseOn4/kF3wvanfdDkVaq87Hjp+P5Bd8L2p33Q5FWqvOx46fj+QXfC9qd90ORVqrzseOn4/kF3wvanfdDkVaq87Hjp+P5Bd8L2p33Q5FWqvOx46fj+QXfC9qd90ORVqrzseOn4/kF3wvanfdDkVaq87Hjp+P5Bd8L2p33Q5FWqvOx46fj+QXfC9qd90ORVqrzseOn4/kF3wvanfdDkVaq87Hjp+P5Bd8L2p33Q5FWqvOx46fj+QXfC9qd90ORVqrzseOn4/kF3wvanfdDkVaq87Hjp+P5Bd8L2p33Q5FWqvOx46fj+QXfC9qd90ORVqrzseOn4/kF3wvanfdDkVaq87Hjp+P5Bd8L2p33Q5FWqvOx46fj+QXfC9qd90ORVqrzseOn4/kF3wvanfdDkVaq87Hjp+P5Bd8L2p33Q5FWqvOx46fj+QXfC9qd90ORVqrzseOn4/kF3wvanfdDkVaq87Hjp+P5Bd8L2p33Q5FWqvOx46fj+QXfC9qd90ORVqrzseOn4/kF3wvanfdDkVaq87Hjp+P5Bd8L2p33Q5FWqvOx46fj+QXfC9qd90ORVqrzseOn4/kF3wvanfdDkVaq87Hjp+P5Bd8L2p33Q5FWqvOx46fj+QXfC9qd90ORVqrzseOn4/kF3wvanfdDkVaq87Hjp+P5Bd8L2p33Q5FWqvOx46fj+QXfC9qd90ORVqrzseOn4/kF3wvanfdDkVaq87Hjp+P5Bd8L2p33Q5FWqvOx46fj+QXfC9qd90ORVqrzseOn4/kF3wvanfdDkVaq87Hjp+PwAAgD/3/38/+f9/PwAAgD/3/38/+f9/PwAAgD/3/38/+f9/PwAAgD/3/38/+f9/PwAAgD/3/38/+f9/PwAAgD/3/38/+f9/PwAAgD/3/38/+f9/PwAAgD/3/38/+f9/PwAAgD/3/38/+f9/PwAAgD/3/38/+f9/PwAAgD/3/38/+f9/PwAAgD/3/38/+f9/PwAAgD/3/38/+f9/PwAAgD/3/38/+f9/PwAAgD/3/38/+f9/PwAAgD/3/38/+f9/PwAAgD/3/38/+f9/PwAAgD/3/38/+f9/PwAAgD/3/38/+f9/PwAAgD/3/38/+f9/PwAAgD/3/38/+f9/PwAAgD/3/38/+f9/PwAAgD/3/38/+f9/PwAAgD/3/38/+f9/PwAAgD/3/38/+f9/PwAAgD/3/38/+f9/PwAAgD/3/38/+f9/PwAAgD/3/38/+f9/PwAAgD/3/38/+f9/PwAAgD/3/38/+f9/PwAAgD/3/38/+f9/PwAAgD/3/38/+f9/PwAAgD/3/38/+f9/PwAAgD/3/38/+f9/PwAAgD/3/38/+f9/PwAAgD/3/38/+f9/PwAAgD/3/38/+f9/PwAAgD/3/38/+f9/PwAAgD/3/38/+f9/PwAAgD/3/38/+f9/PwAAgD/3/38/+f9/PwAAgD/3/38/+f9/PwAAgD/3/38/+f9/PwAAgD/3/38/+f9/PwAAgD/3/38/+f9/PwAAgD/3/38/+f9/PwAAgD/3/38/+f9/PwAAgD/3/38/+f9/PwAAgD/3/38/+f9/PwAAgD/3/38/+f9/PwAAgD/3/38/+f9/P2fBGTGa8FM8kdG2MGfBGTGa8FM8kdG2MGfBGTGa8FM8kdG2MGfBGTGa8FM8kdG2MGfBGTGa8FM8kdG2MGfBGTGa8FM8kdG2MGfBGTGa8FM8kdG2MGfBGTGa8FM8kdG2MGfBGTGa8FM8kdG2MGfBGTGa8FM8kdG2MGfBGTGa8FM8kdG2MGfBGTGa8FM8kdG2MGfBGTGa8FM8kdG2MGfBGTGa8FM8kdG2MGfBGTGa8FM8kdG2MGfBGTGa8FM8kdG2MGfBGTGa8FM8kdG2MGfBGTGa8FM8kdG2MGfBGTGa8FM8kdG2MGfBGTGa8FM8kdG2MGfBGTGa8FM8kdG2MGfBGTGa8FM8kdG2MGfBGTGa8FM8kdG2MGfBGTGa8FM8kdG2MGfBGTGa8FM8kdG2MGfBGTGa8FM8kdG2MGfBGTGa8FM8kdG2MGfBGTGa8FM8kdG2MGfBGTGa8FM8kdG2MGfBGTGa8FM8kdG2MGfBGTGa8FM8kdG2MGfBGTGa8FM8kdG2MGfBGTGa8FM8kdG2MGfBGTGa8FM8kdG2MGfBGTGa8FM8kdG2MGfBGTGa8FM8kdG2MGfBGTGa8FM8kdG2MGfBGTGa8FM8kdG2MGfBGTGa8FM8kdG2MGfBGTGa8FM8kdG2MGfBGTGa8FM8kdG2MGfBGTGa8FM8kdG2MGfBGTGa8FM8kdG2MGfBGTGa8FM8kdG2MGfBGTGa8FM8kdG2MGfBGTGa8FM8kdG2MGfBGTGa8FM8kdG2MGfBGTGa8FM8kdG2MGfBGTGa8FM8kdG2MGfBGTGa8FM8kdG2MGfBGTGa8FM8kdG2MHseXr1WW7e5zn8xO1Offz97Hl69Vlu3uc5/MTtTn38/ex5evVZbt7nOfzE7U59/P3seXr1WW7e5zn8xO1Offz97Hl69Vlu3uc5/MTtTn38/ex5evVZbt7nOfzE7U59/P3seXr1WW7e5zn8xO1Offz97Hl69Vlu3uc5/MTtTn38/ex5evVZbt7nOfzE7U59/P3seXr1WW7e5zn8xO1Offz97Hl69Vlu3uc5/MTtTn38/ex5evVZbt7nOfzE7U59/P3seXr1WW7e5zn8xO1Offz97Hl69Vlu3uc5/MTtTn38/ex5evVZbt7nOfzE7U59/P3seXr1WW7e5zn8xO1Offz97Hl69Vlu3uc5/MTtTn38/ex5evVZbt7nOfzE7U59/P3seXr1WW7e5zn8xO1Offz97Hl69Vlu3uc5/MTtTn38/ex5evVZbt7nOfzE7U59/P3seXr1WW7e5zn8xO1Offz97Hl69Vlu3uc5/MTtTn38/ex5evVZbt7nOfzE7U59/P3seXr1WW7e5zn8xO1Offz97Hl69Vlu3uc5/MTtTn38/ex5evVZbt7nOfzE7U59/P3seXr1WW7e5zn8xO1Offz97Hl69Vlu3uc5/MTtTn38/ex5evVZbt7nOfzE7U59/P3seXr1WW7e5zn8xO1Offz97Hl69Vlu3uc5/MTtTn38/ex5evVZbt7nOfzE7U59/P3seXr1WW7e5zn8xO1Offz97Hl69Vlu3uc5/MTtTn38/ex5evVZbt7nOfzE7U59/P3seXr1WW7e5zn8xO1Offz97Hl69Vlu3uc5/MTtTn38/ex5evVZbt7nOfzE7U59/P3seXr1WW7e5zn8xO1Offz97Hl69Vlu3uc5/MTtTn38/ex5evVZbt7nOfzE7U59/P3seXr1WW7e5zn8xO1Offz97Hl69Vlu3uc5/MTtTn38/ex5evVZbt7nOfzE7U59/P3seXr1WW7e5zn8xO1Offz97Hl69Vlu3uc5/MTtTn38/ex5evVZbt7nOfzE7U59/P3seXr1WW7e5zn8xO1Offz97Hl69Vlu3uc5/MTtTn38/ex5evVZbt7nOfzE7U59/PwAAgD/9/38//P9/PwAAgD/9/38//P9/PwAAgD/9/38//P9/PwAAgD/9/38//P9/PwAAgD/9/38//P9/PwAAgD/9/38//P9/PwAAgD/9/38//P9/PwAAgD/9/38//P9/PwAAgD/9/38//P9/PwAAgD/9/38//P9/PwAAgD/9/38//P9/PwAAgD/9/38//P9/PwAAgD/9/38//P9/PwAAgD/9/38//P9/PwAAgD/9/38//P9/PwAAgD/9/38//P9/PwAAgD/9/38//P9/PwAAgD/9/38//P9/PwAAgD/9/38//P9/PwAAgD/9/38//P9/PwAAgD/9/38//P9/PwAAgD/9/38//P9/PwAAgD/9/38//P9/PwAAgD/9/38//P9/PwAAgD/9/38//P9/PwAAgD/9/38//P9/PwAAgD/9/38//P9/PwAAgD/9/38//P9/PwAAgD/9/38//P9/PwAAgD/9/38//P9/PwAAgD/9/38//P9/PwAAgD/9/38//P9/PwAAgD/9/38//P9/PwAAgD/9/38//P9/PwAAgD/9/38//P9/PwAAgD/9/38//P9/PwAAgD/9/38//P9/PwAAgD/9/38//P9/PwAAgD/9/38//P9/PwAAgD/9/38//P9/PwAAgD/9/38//P9/PwAAgD/9/38//P9/PwAAgD/9/38//P9/PwAAgD/9/38//P9/PwAAgD/9/38//P9/PwAAgD/9/38//P9/PwAAgD/9/38//P9/PwAAgD/9/38//P9/PwAAgD/9/38//P9/PwAAgD/9/38//P9/PwAAgD/9/38//P9/PxwVTTL4III9KBaYsRwVTTL4III9KBaYsRwVTTL4III9KBaYsRwVTTL4III9KBaYsRwVTTL4III9KBaYsRwVTTL4III9KBaYsRwVTTL4III9KBaYsRwVTTL4III9KBaYsRwVTTL4III9KBaYsRwVTTL4III9KBaYsRwVTTL4III9KBaYsRwVTTL4III9KBaYsRwVTTL4III9KBaYsRwVTTL4III9KBaYsRwVTTL4III9KBaYsRwVTTL4III9KBaYsRwVTTL4III9KBaYsRwVTTL4III9KBaYsRwVTTL4III9KBaYsRwVTTL4III9KBaYsRwVTTL4III9KBaYsRwVTTL4III9KBaYsRwVTTL4III9KBaYsRwVTTL4III9KBaYsRwVTTL4III9KBaYsRwVTTL4III9KBaYsRwVTTL4III9KBaYsRwVTTL4III9KBaYsRwVTTL4III9KBaYsRwVTTL4III9KBaYsRwVTTL4III9KBaYsRwVTTL4III9KBaYsRwVTTL4III9KBaYsRwVTTL4III9KBaYsRwVTTL4III9KBaYsRwVTTL4III9KBaYsRwVTTL4III9KBaYsRwVTTL4III9KBaYsRwVTTL4III9KBaYsRwVTTL4III9KBaYsRwVTTL4III9KBaYsRwVTTL4III9KBaYsRwVTTL4III9KBaYsRwVTTL4III9KBaYsRwVTTL4III9KBaYsRwVTTL4III9KBaYsRwVTTL4III9KBaYsRwVTTL4III9KBaYsRwVTTL4III9KBaYsRwVTTL4III9KBaYsRwVTTL4III9KBaYsYwbBD+U9Yc8Sm9lPeTEWj+MGwQ/lPWHPEpvZT3kxFo/jBsEP5T1hzxKb2U95MRaP4wbBD+U9Yc8Sm9lPeTEWj+MGwQ/lPWHPEpvZT3kxFo/jBsEP5T1hzxKb2U95MRaP4wbBD+U9Yc8Sm9lPeTEWj+MGwQ/lPWHPEpvZT3kxFo/jBsEP5T1hzxKb2U95MRaP4wbBD+U9Yc8Sm9lPeTEWj+MGwQ/lPWHPEpvZT3kxFo/jBsEP5T1hzxKb2U95MRaP4wbBD+U9Yc8Sm9lPeTEWj+MGwQ/lPWHPEpvZT3kxFo/jBsEP5T1hzxKb2U95MRaP4wbBD+U9Yc8Sm9lPeTEWj+MGwQ/lPWHPEpvZT3kxFo/jBsEP5T1hzxKb2U95MRaP4wbBD+U9Yc8Sm9lPeTEWj+MGwQ/lPWHPEpvZT3kxFo/jBsEP5T1hzxKb2U95MRaP4wbBD+U9Yc8Sm9lPeTEWj+MGwQ/lPWHPEpvZT3kxFo/jBsEP5T1hzxKb2U95MRaP4wbBD+U9Yc8Sm9lPeTEWj+MGwQ/lPWHPEpvZT3kxFo/jBsEP5T1hzxKb2U95MRaP4wbBD+U9Yc8Sm9lPeTEWj+MGwQ/lPWHPEpvZT3kxFo/jBsEP5T1hzxKb2U95MRaP4wbBD+U9Yc8Sm9lPeTEWj+MGwQ/lPWHPEpvZT3kxFo/jBsEP5T1hzxKb2U95MRaP4wbBD+U9Yc8Sm9lPeTEWj+MGwQ/lPWHPEpvZT3kxFo/jBsEP5T1hzxKb2U95MRaP4wbBD+U9Yc8Sm9lPeTEWj+MGwQ/lPWHPEpvZT3kxFo/jBsEP5T1hzxKb2U95MRaP4wbBD+U9Yc8Sm9lPeTEWj+MGwQ/lPWHPEpvZT3kxFo/jBsEP5T1hzxKb2U95MRaP4wbBD+U9Yc8Sm9lPeTEWj+MGwQ/lPWHPEpvZT3kxFo/jBsEP5T1hzxKb2U95MRaP4wbBD+U9Yc8Sm9lPeTEWj+MGwQ/lPWHPEpvZT3kxFo/jBsEP5T1hzxKb2U95MRaP4wbBD+U9Yc8Sm9lPeTEWj+MGwQ/lPWHPEpvZT3kxFo/jBsEP5T1hzxKb2U95MRaPwUAgD8MAIA/+f9/PwUAgD8MAIA/+f9/PwUAgD8MAIA/+f9/PwUAgD8MAIA/+f9/PwUAgD8MAIA/+f9/PwUAgD8MAIA/+f9/PwUAgD8MAIA/+f9/PwUAgD8MAIA/+f9/PwUAgD8MAIA/+f9/PwUAgD8MAIA/+f9/PwUAgD8MAIA/+f9/PwUAgD8MAIA/+f9/PwUAgD8MAIA/+f9/PwUAgD8MAIA/+f9/PwUAgD8MAIA/+f9/PwUAgD8MAIA/+f9/PwUAgD8MAIA/+f9/PwUAgD8MAIA/+f9/PwUAgD8MAIA/+f9/PwUAgD8MAIA/+f9/PwUAgD8MAIA/+f9/PwUAgD8MAIA/+f9/PwUAgD8MAIA/+f9/PwUAgD8MAIA/+f9/PwUAgD8MAIA/+f9/PwUAgD8MAIA/+f9/PwUAgD8MAIA/+f9/PwUAgD8MAIA/+f9/PwUAgD8MAIA/+f9/PwUAgD8MAIA/+f9/PwUAgD8MAIA/+f9/PwUAgD8MAIA/+f9/PwUAgD8MAIA/+f9/PwUAgD8MAIA/+f9/PwUAgD8MAIA/+f9/PwUAgD8MAIA/+f9/PwUAgD8MAIA/+f9/PwUAgD8MAIA/+f9/PwUAgD8MAIA/+f9/PwUAgD8MAIA/+f9/PwUAgD8MAIA/+f9/PwUAgD8MAIA/+f9/PwUAgD8MAIA/+f9/PwUAgD8MAIA/+f9/PwUAgD8MAIA/+f9/PwUAgD8MAIA/+f9/PwUAgD8MAIA/+f9/PwUAgD8MAIA/+f9/PwUAgD8MAIA/+f9/PwUAgD8MAIA/+f9/PwUAgD8MAIA/+f9/P9SRgjH5dwo9xi02MdSRgjH5dwo9xi02MdSRgjH5dwo9xi02MdSRgjH5dwo9xi02MdSRgjH5dwo9xi02MdSRgjH5dwo9xi02MdSRgjH5dwo9xi02MdSRgjH5dwo9xi02MdSRgjH5dwo9xi02MdSRgjH5dwo9xi02MdSRgjH5dwo9xi02MdSRgjH5dwo9xi02MdSRgjH5dwo9xi02MdSRgjH5dwo9xi02MdSRgjH5dwo9xi02MdSRgjH5dwo9xi02MdSRgjH5dwo9xi02MdSRgjH5dwo9xi02MdSRgjH5dwo9xi02MdSRgjH5dwo9xi02MdSRgjH5dwo9xi02MdSRgjH5dwo9xi02MdSRgjH5dwo9xi02MdSRgjH5dwo9xi02MdSRgjH5dwo9xi02MdSRgjH5dwo9xi02MdSRgjH5dwo9xi02MdSRgjH5dwo9xi02MdSRgjH5dwo9xi02MdSRgjH5dwo9xi02MdSRgjH5dwo9xi02MdSRgjH5dwo9xi02MdSRgjH5dwo9xi02MdSRgjH5dwo9xi02MdSRgjH5dwo9xi02MdSRgjH5dwo9xi02MdSRgjH5dwo9xi02MdSRgjH5dwo9xi02MdSRgjH5dwo9xi02MdSRgjH5dwo9xi02MdSRgjH5dwo9xi02MdSRgjH5dwo9xi02MdSRgjH5dwo9xi02MdSRgjH5dwo9xi02MdSRgjH5dwo9xi02MdSRgjH5dwo9xi02MdSRgjH5dwo9xi02MdSRgjH5dwo9xi02MdSRgjH5dwo9xi02MdSRgjH5dwo9xi02MdSRgjH5dwo9xi02Ma9vpz53ZumzYJUttJLscT+vb6c+d2bps2CVLbSS7HE/r2+nPndm6bNglS20kuxxP69vpz53ZumzYJUttJLscT+vb6c+d2bps2CVLbSS7HE/r2+nPndm6bNglS20kuxxP69vpz53ZumzYJUttJLscT+vb6c+d2bps2CVLbSS7HE/r2+nPndm6bNglS20kuxxP69vpz53ZumzYJUttJLscT+vb6c+d2bps2CVLbSS7HE/r2+nPndm6bNglS20kuxxP69vpz53ZumzYJUttJLscT+vb6c+d2bps2CVLbSS7HE/r2+nPndm6bNglS20kuxxP69vpz53ZumzYJUttJLscT+vb6c+d2bps2CVLbSS7HE/r2+nPndm6bNglS20kuxxP69vpz53ZumzYJUttJLscT+vb6c+d2bps2CVLbSS7HE/r2+nPndm6bNglS20kuxxP69vpz53ZumzYJUttJLscT+vb6c+d2bps2CVLbSS7HE/r2+nPndm6bNglS20kuxxP69vpz53ZumzYJUttJLscT+vb6c+d2bps2CVLbSS7HE/r2+nPndm6bNglS20kuxxP69vpz53ZumzYJUttJLscT+vb6c+d2bps2CVLbSS7HE/r2+nPndm6bNglS20kuxxP69vpz53ZumzYJUttJLscT+vb6c+d2bps2CVLbSS7HE/r2+nPndm6bNglS20kuxxP69vpz53ZumzYJUttJLscT+vb6c+d2bps2CVLbSS7HE/r2+nPndm6bNglS20kuxxP69vpz53ZumzYJUttJLscT+vb6c+d2bps2CVLbSS7HE/r2+nPndm6bNglS20kuxxP69vpz53ZumzYJUttJLscT+vb6c+d2bps2CVLbSS7HE/r2+nPndm6bNglS20kuxxP69vpz53ZumzYJUttJLscT+vb6c+d2bps2CVLbSS7HE/r2+nPndm6bNglS20kuxxP69vpz53ZumzYJUttJLscT+vb6c+d2bps2CVLbSS7HE/r2+nPndm6bNglS20kuxxP69vpz53ZumzYJUttJLscT+vb6c+d2bps2CVLbSS7HE/r2+nPndm6bNglS20kuxxP/7/fz///38/AQCAP/7/fz///38/AQCAP/7/fz///38/AQCAP/7/fz///38/AQCAP/7/fz///38/AQCAP/7/fz///38/AQCAP/7/fz///38/AQCAP/7/fz///38/AQCAP/7/fz///38/AQCAP/7/fz///38/AQCAP/7/fz///38/AQCAP/7/fz///38/AQCAP/7/fz///38/AQCAP/7/fz///38/AQCAP/7/fz///38/AQCAP/7/fz///38/AQCAP/7/fz///38/AQCAP/7/fz///38/AQCAP/7/fz///38/AQCAP/7/fz///38/AQCAP/7/fz///38/AQCAP/7/fz///38/AQCAP/7/fz///38/AQCAP/7/fz///38/AQCAP/7/fz///38/AQCAP/7/fz///38/AQCAP/7/fz///38/AQCAP/7/fz///38/AQCAP/7/fz///38/AQCAP/7/fz///38/AQCAP/7/fz///38/AQCAP/7/fz///38/AQCAP/7/fz///38/AQCAP/7/fz///38/AQCAP/7/fz///38/AQCAP/7/fz///38/AQCAP/7/fz///38/AQCAP/7/fz///38/AQCAP/7/fz///38/AQCAP/7/fz///38/AQCAP/7/fz///38/AQCAP/7/fz///38/AQCAP/7/fz///38/AQCAP/7/fz///38/AQCAP/7/fz///38/AQCAP/7/fz///38/AQCAP/7/fz///38/AQCAP/7/fz///38/AQCAP/7/fz///38/AQCAP/7/fz///38/AQCAP/7/fz///38/AQCAP7ywdrDaAsQ81s72L7ywdrDaAsQ81s72L7ywdrDaAsQ81s72L7ywdrDaAsQ81s72L7ywdrDaAsQ81s72L7ywdrDaAsQ81s72L7ywdrDaAsQ81s72L7ywdrDaAsQ81s72L7ywdrDaAsQ81s72L7ywdrDaAsQ81s72L7ywdrDaAsQ81s72L7ywdrDaAsQ81s72L7ywdrDaAsQ81s72L7ywdrDaAsQ81s72L7ywdrDaAsQ81s72L7ywdrDaAsQ81s72L7ywdrDaAsQ81s72L7ywdrDaAsQ81s72L7ywdrDaAsQ81s72L7ywdrDaAsQ81s72L7ywdrDaAsQ81s72L7ywdrDaAsQ81s72L7ywdrDaAsQ81s72L7ywdrDaAsQ81s72L7ywdrDaAsQ81s72L7ywdrDaAsQ81s72L7ywdrDaAsQ81s72L7ywdrDaAsQ81s72L7ywdrDaAsQ81s72L7ywdrDaAsQ81s72L7ywdrDaAsQ81s72L7ywdrDaAsQ81s72L7ywdrDaAsQ81s72L7ywdrDaAsQ81s72L7ywdrDaAsQ81s72L7ywdrDaAsQ81s72L7ywdrDaAsQ81s72L7ywdrDaAsQ81s72L7ywdrDaAsQ81s72L7ywdrDaAsQ81s72L7ywdrDaAsQ81s72L7ywdrDaAsQ81s72L7ywdrDaAsQ81s72L7ywdrDaAsQ81s72L7ywdrDaAsQ81s72L7ywdrDaAsQ81s72L7ywdrDaAsQ81s72L7ywdrDaAsQ81s72L7ywdrDaAsQ81s72L7ywdrDaAsQ81s72L7ywdrDaAsQ81s72LzoSDLQHHQkpiSynNAAAgD86Egy0Bx0JKYkspzQAAIA/OhIMtAcdCSmJLKc0AACAPzoSDLQHHQkpiSynNAAAgD86Egy0Bx0JKYkspzQAAIA/OhIMtAcdCSmJLKc0AACAPzoSDLQHHQkpiSynNAAAgD86Egy0Bx0JKYkspzQAAIA/OhIMtAcdCSmJLKc0AACAPzoSDLQHHQkpiSynNAAAgD86Egy0Bx0JKYkspzQAAIA/OhIMtAcdCSmJLKc0AACAPzoSDLQHHQkpiSynNAAAgD86Egy0Bx0JKYkspzQAAIA/OhIMtAcdCSmJLKc0AACAPzoSDLQHHQkpiSynNAAAgD86Egy0Bx0JKYkspzQAAIA/OhIMtAcdCSmJLKc0AACAPzoSDLQHHQkpiSynNAAAgD86Egy0Bx0JKYkspzQAAIA/OhIMtAcdCSmJLKc0AACAPzoSDLQHHQkpiSynNAAAgD86Egy0Bx0JKYkspzQAAIA/OhIMtAcdCSmJLKc0AACAPzoSDLQHHQkpiSynNAAAgD86Egy0Bx0JKYkspzQAAIA/OhIMtAcdCSmJLKc0AACAPzoSDLQHHQkpiSynNAAAgD86Egy0Bx0JKYkspzQAAIA/OhIMtAcdCSmJLKc0AACAPzoSDLQHHQkpiSynNAAAgD86Egy0Bx0JKYkspzQAAIA/OhIMtAcdCSmJLKc0AACAPzoSDLQHHQkpiSynNAAAgD86Egy0Bx0JKYkspzQAAIA/OhIMtAcdCSmJLKc0AACAPzoSDLQHHQkpiSynNAAAgD86Egy0Bx0JKYkspzQAAIA/OhIMtAcdCSmJLKc0AACAPzoSDLQHHQkpiSynNAAAgD86Egy0Bx0JKYkspzQAAIA/OhIMtAcdCSmJLKc0AACAPzoSDLQHHQkpiSynNAAAgD86Egy0Bx0JKYkspzQAAIA/OhIMtAcdCSmJLKc0AACAPzoSDLQHHQkpiSynNAAAgD86Egy0Bx0JKYkspzQAAIA/OhIMtAcdCSmJLKc0AACAPzoSDLQHHQkpiSynNAAAgD86Egy0Bx0JKYkspzQAAIA/OhIMtAcdCSmJLKc0AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/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AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAApDHzHQc9AACNsAAApDHzHQc9AACNsAAApDHzHQc9AACNsAAApDHzHQc9AACNsAAApDHzHQc9AACNsAAApDHzHQc9AACNsAAApDHzHQc9AACNsAAApDHzHQc9AACNsAAApDHzHQc9AACNsAAApDHzHQc9AACNsAAApDHzHQc9AACNsAAApDHzHQc9AACNsAAApDHzHQc9AACNsAAApDHzHQc9AACNsAAApDHzHQc9AACNsAAApDHzHQc9AACNsAAApDHzHQc9AACNsAAApDHzHQc9AACNsAAApDHzHQc9AACNsAAApDHzHQc9AACNsAAApDHzHQc9AACNsAAApDHzHQc9AACNsAAApDHzHQc9AACNsAAApDHzHQc9AACNsAAApDHzHQc9AACNsAAApDHzHQc9AACNsAAApDHzHQc9AACNsAAApDHzHQc9AACNsAAApDHzHQc9AACNsAAApDHzHQc9AACNsAAApDHzHQc9AACNsAAApDHzHQc9AACNsAAApDHzHQc9AACNsAAApDHzHQc9AACNsAAApDHzHQc9AACNsAAApDHzHQc9AACNsAAApDHzHQc9AACNsAAApDHzHQc9AACNsAAApDHzHQc9AACNsAAApDHzHQc9AACNsAAApDHzHQc9AACNsAAApDHzHQc9AACNsAAApDHzHQc9AACNsAAApDHzHQc9AACNsAAApDHzHQc9AACNsAAApDHzHQc9AACNsAAApDHzHQc9AACNsAAApDHzHQc9AACNsAAApDHzHQc9AACNsAAApDHzHQc9AACNsAAApDHzHQc9AACNsAAAECyA/3+vAAAALgAAgD8AABAsgP9/rwAAAC4AAIA/AAAQLID/f68AAAAuAACAPwAAECyA/3+vAAAALgAAgD8AABAsgP9/rwAAAC4AAIA/AAAQLID/f68AAAAuAACAPwAAECyA/3+vAAAALgAAgD8AABAsgP9/rwAAAC4AAIA/AAAQLID/f68AAAAuAACAPwAAECyA/3+vAAAALgAAgD8AABAsgP9/rwAAAC4AAIA/AAAQLID/f68AAAAuAACAPwAAECyA/3+vAAAALgAAgD8AABAsgP9/rwAAAC4AAIA/AAAQLID/f68AAAAuAACAPwAAECyA/3+vAAAALgAAgD8AABAsgP9/rwAAAC4AAIA/AAAQLID/f68AAAAuAACAPwAAECyA/3+vAAAALgAAgD8AABAsgP9/rwAAAC4AAIA/AAAQLID/f68AAAAuAACAPwAAECyA/3+vAAAALgAAgD8AABAsgP9/rwAAAC4AAIA/AAAQLID/f68AAAAuAACAPwAAECyA/3+vAAAALgAAgD8AABAsgP9/rwAAAC4AAIA/AAAQLID/f68AAAAuAACAPwAAECyA/3+vAAAALgAAgD8AABAsgP9/rwAAAC4AAIA/AAAQLID/f68AAAAuAACAPwAAECyA/3+vAAAALgAAgD8AABAsgP9/rwAAAC4AAIA/AAAQLID/f68AAAAuAACAPwAAECyA/3+vAAAALgAAgD8AABAsgP9/rwAAAC4AAIA/AAAQLID/f68AAAAuAACAPwAAECyA/3+vAAAALgAAgD8AABAsgP9/rwAAAC4AAIA/AAAQLID/f68AAAAuAACAPwAAECyA/3+vAAAALgAAgD8AABAsgP9/rwAAAC4AAIA/AAAQLID/f68AAAAuAACAPwAAECyA/3+vAAAALgAAgD8AABAsgP9/rwAAAC4AAIA/AAAQLID/f68AAAAuAACAPwAAECyA/3+vAAAALgAAgD8AABAsgP9/rwAAAC4AAIA/AAAQLID/f68AAAAuAACAPwAAECyA/3+vAAAALgAAgD8AABAsgP9/rwAAAC4AAIA/AAAQLID/f68AAAAuAACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAP7Fmjr2CQ0y6uJw+vbFmjr2CQ0y6uJw+vbFmjr2CQ0y6uJw+vbFmjr2CQ0y6uJw+vbFmjr2CQ0y6uJw+vbFmjr2CQ0y6uJw+vbFmjr2CQ0y6uJw+vbFmjr2CQ0y6uJw+vbFmjr2CQ0y6uJw+vbFmjr2CQ0y6uJw+vbFmjr2CQ0y6uJw+vbFmjr2CQ0y6uJw+vbFmjr2CQ0y6uJw+vbFmjr2CQ0y6uJw+vbFmjr2CQ0y6uJw+vbFmjr2CQ0y6uJw+vbFmjr2CQ0y6uJw+vbFmjr2CQ0y6uJw+vbFmjr2CQ0y6uJw+vbFmjr2CQ0y6uJw+vbFmjr2CQ0y6uJw+vbFmjr2CQ0y6uJw+vbFmjr2CQ0y6uJw+vbFmjr2CQ0y6uJw+vbFmjr2CQ0y6uJw+vbFmjr2CQ0y6uJw+vbFmjr2CQ0y6uJw+vbFmjr2CQ0y6uJw+vbFmjr2CQ0y6uJw+vbFmjr2CQ0y6uJw+vbFmjr2CQ0y6uJw+vbFmjr2CQ0y6uJw+vbFmjr2CQ0y6uJw+vbFmjr2CQ0y6uJw+vbFmjr2CQ0y6uJw+vbFmjr2CQ0y6uJw+vbFmjr2CQ0y6uJw+vbFmjr2CQ0y6uJw+vbFmjr2CQ0y6uJw+vbFmjr2CQ0y6uJw+vbFmjr2CQ0y6uJw+vbFmjr2CQ0y6uJw+vbFmjr2CQ0y6uJw+vbFmjr2CQ0y6uJw+vbFmjr2CQ0y6uJw+vbFmjr2CQ0y6uJw+vbFmjr2CQ0y6uJw+vbFmjr2CQ0y6uJw+vbFmjr2CQ0y6uJw+vbFmjr2CQ0y6uJw+vbFmjr2CQ0y6uJw+vWgblDcR1Rc7BZ7CudL/fz9oG5Q3EdUXOwWewrnS/38/aBuUNxHVFzsFnsK50v9/P2gblDcR1Rc7BZ7CudL/fz9oG5Q3EdUXOwWewrnS/38/aBuUNxHVFzsFnsK50v9/P2gblDcR1Rc7BZ7CudL/fz9oG5Q3EdUXOwWewrnS/38/aBuUNxHVFzsFnsK50v9/P2gblDcR1Rc7BZ7CudL/fz9oG5Q3EdUXOwWewrnS/38/aBuUNxHVFzsFnsK50v9/P2gblDcR1Rc7BZ7CudL/fz9oG5Q3EdUXOwWewrnS/38/aBuUNxHVFzsFnsK50v9/P2gblDcR1Rc7BZ7CudL/fz9oG5Q3EdUXOwWewrnS/38/aBuUNxHVFzsFnsK50v9/P2gblDcR1Rc7BZ7CudL/fz9oG5Q3EdUXOwWewrnS/38/aBuUNxHVFzsFnsK50v9/P2gblDcR1Rc7BZ7CudL/fz9oG5Q3EdUXOwWewrnS/38/aBuUNxHVFzsFnsK50v9/P2gblDcR1Rc7BZ7CudL/fz9oG5Q3EdUXOwWewrnS/38/aBuUNxHVFzsFnsK50v9/P2gblDcR1Rc7BZ7CudL/fz9oG5Q3EdUXOwWewrnS/38/aBuUNxHVFzsFnsK50v9/P2gblDcR1Rc7BZ7CudL/fz9oG5Q3EdUXOwWewrnS/38/aBuUNxHVFzsFnsK50v9/P2gblDcR1Rc7BZ7CudL/fz9oG5Q3EdUXOwWewrnS/38/aBuUNxHVFzsFnsK50v9/P2gblDcR1Rc7BZ7CudL/fz9oG5Q3EdUXOwWewrnS/38/aBuUNxHVFzsFnsK50v9/P2gblDcR1Rc7BZ7CudL/fz9oG5Q3EdUXOwWewrnS/38/aBuUNxHVFzsFnsK50v9/P2gblDcR1Rc7BZ7CudL/fz9oG5Q3EdUXOwWewrnS/38/aBuUNxHVFzsFnsK50v9/P2gblDcR1Rc7BZ7CudL/fz9oG5Q3EdUXOwWewrnS/38/aBuUNxHVFzsFnsK50v9/P2gblDcR1Rc7BZ7CudL/fz9oG5Q3EdUXOwWewrnS/38/aBuUNxHVFzsFnsK50v9/P/3/fz+1/38/t/9/P/3/fz+1/38/t/9/P/3/fz+1/38/t/9/P/3/fz+1/38/t/9/P/3/fz+1/38/t/9/P/3/fz+1/38/t/9/P/3/fz+1/38/t/9/P/3/fz+1/38/t/9/P/3/fz+1/38/t/9/P/3/fz+1/38/t/9/P/3/fz+1/38/t/9/P/3/fz+1/38/t/9/P/3/fz+1/38/t/9/P/3/fz+1/38/t/9/P/3/fz+1/38/t/9/P/3/fz+1/38/t/9/P/3/fz+1/38/t/9/P/3/fz+1/38/t/9/P/3/fz+1/38/t/9/P/3/fz+1/38/t/9/P/3/fz+1/38/t/9/P/3/fz+1/38/t/9/P/3/fz+1/38/t/9/P/3/fz+1/38/t/9/P/3/fz+1/38/t/9/P/3/fz+1/38/t/9/P/3/fz+1/38/t/9/P/3/fz+1/38/t/9/P/3/fz+1/38/t/9/P/3/fz+1/38/t/9/P/3/fz+1/38/t/9/P/3/fz+1/38/t/9/P/3/fz+1/38/t/9/P/3/fz+1/38/t/9/P/3/fz+1/38/t/9/P/3/fz+1/38/t/9/P/3/fz+1/38/t/9/P/3/fz+1/38/t/9/P/3/fz+1/38/t/9/P/3/fz+1/38/t/9/P/3/fz+1/38/t/9/P/3/fz+1/38/t/9/P/3/fz+1/38/t/9/P/3/fz+1/38/t/9/P/3/fz+1/38/t/9/P/3/fz+1/38/t/9/P/3/fz+1/38/t/9/P/3/fz+1/38/t/9/P/3/fz+1/38/t/9/P/3/fz+1/38/t/9/P/3/fz+1/38/t/9/PwBAcLL1HQc9ALDlsABAcLL1HQc9ALDlsABAcLL1HQc9ALDlsABAcLL1HQc9ALDlsABAcLL1HQc9ALDlsABAcLL1HQc9ALDlsABAcLL1HQc9ALDlsABAcLL1HQc9ALDlsABAcLL1HQc9ALDlsABAcLL1HQc9ALDlsABAcLL1HQc9ALDlsABAcLL1HQc9ALDlsABAcLL1HQc9ALDlsABAcLL1HQc9ALDlsABAcLL1HQc9ALDlsABAcLL1HQc9ALDlsABAcLL1HQc9ALDlsABAcLL1HQc9ALDlsABAcLL1HQc9ALDlsABAcLL1HQc9ALDlsABAcLL1HQc9ALDlsABAcLL1HQc9ALDlsABAcLL1HQc9ALDlsABAcLL1HQc9ALDlsABAcLL1HQc9ALDlsABAcLL1HQc9ALDlsABAcLL1HQc9ALDlsABAcLL1HQc9ALDlsABAcLL1HQc9ALDlsABAcLL1HQc9ALDlsABAcLL1HQc9ALDlsABAcLL1HQc9ALDlsABAcLL1HQc9ALDlsABAcLL1HQc9ALDlsABAcLL1HQc9ALDlsABAcLL1HQc9ALDlsABAcLL1HQc9ALDlsABAcLL1HQc9ALDlsABAcLL1HQc9ALDlsABAcLL1HQc9ALDlsABAcLL1HQc9ALDlsABAcLL1HQc9ALDlsABAcLL1HQc9ALDlsABAcLL1HQc9ALDlsABAcLL1HQc9ALDlsABAcLL1HQc9ALDlsABAcLL1HQc9ALDlsABAcLL1HQc9ALDlsABAcLL1HQc9ALDlsABAcLL1HQc9ALDlsABAcLL1HQc9ALDlsAAAQCsA4P8uABB6LQAAgD8AAEArAOD/LgAQei0AAIA/AABAKwDg/y4AEHotAACAPwAAQCsA4P8uABB6LQAAgD8AAEArAOD/LgAQei0AAIA/AABAKwDg/y4AEHotAACAPwAAQCsA4P8uABB6LQAAgD8AAEArAOD/LgAQei0AAIA/AABAKwDg/y4AEHotAACAPwAAQCsA4P8uABB6LQAAgD8AAEArAOD/LgAQei0AAIA/AABAKwDg/y4AEHotAACAPwAAQCsA4P8uABB6LQAAgD8AAEArAOD/LgAQei0AAIA/AABAKwDg/y4AEHotAACAPwAAQCsA4P8uABB6LQAAgD8AAEArAOD/LgAQei0AAIA/AABAKwDg/y4AEHotAACAPwAAQCsA4P8uABB6LQAAgD8AAEArAOD/LgAQei0AAIA/AABAKwDg/y4AEHotAACAPwAAQCsA4P8uABB6LQAAgD8AAEArAOD/LgAQei0AAIA/AABAKwDg/y4AEHotAACAPwAAQCsA4P8uABB6LQAAgD8AAEArAOD/LgAQei0AAIA/AABAKwDg/y4AEHotAACAPwAAQCsA4P8uABB6LQAAgD8AAEArAOD/LgAQei0AAIA/AABAKwDg/y4AEHotAACAPwAAQCsA4P8uABB6LQAAgD8AAEArAOD/LgAQei0AAIA/AABAKwDg/y4AEHotAACAPwAAQCsA4P8uABB6LQAAgD8AAEArAOD/LgAQei0AAIA/AABAKwDg/y4AEHotAACAPwAAQCsA4P8uABB6LQAAgD8AAEArAOD/LgAQei0AAIA/AABAKwDg/y4AEHotAACAPwAAQCsA4P8uABB6LQAAgD8AAEArAOD/LgAQei0AAIA/AABAKwDg/y4AEHotAACAPwAAQCsA4P8uABB6LQAAgD8AAEArAOD/LgAQei0AAIA/AABAKwDg/y4AEHotAACAPwAAQCsA4P8uABB6LQAAgD8AAEArAOD/LgAQei0AAIA/AABAKwDg/y4AEHotAACAPwAAQCsA4P8uABB6LQAAgD8AAEArAOD/LgAQei0AAIA/AABAKwDg/y4AEHotAACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAP+Zqrz14++I84MMhOeZqrz14++I84MMhOeZqrz14++I84MMhOeZqrz14++I84MMhOeZqrz14++I84MMhOeZqrz14++I84MMhOeZqrz14++I84MMhOeZqrz14++I84MMhOeZqrz14++I84MMhOeZqrz14++I84MMhOeZqrz14++I84MMhOeZqrz14++I84MMhOeZqrz14++I84MMhOeZqrz14++I84MMhOeZqrz14++I84MMhOeZqrz14++I84MMhOeZqrz14++I84MMhOeZqrz14++I84MMhOeZqrz14++I84MMhOeZqrz14++I84MMhOeZqrz14++I84MMhOeZqrz14++I84MMhOeZqrz14++I84MMhOeZqrz14++I84MMhOeZqrz14++I84MMhOeZqrz14++I84MMhOeZqrz14++I84MMhOeZqrz14++I84MMhOeZqrz14++I84MMhOeZqrz14++I84MMhOeZqrz14++I84MMhOeZqrz14++I84MMhOeZqrz14++I84MMhOeZqrz14++I84MMhOeZqrz14++I84MMhOeZqrz14++I84MMhOeZqrz14++I84MMhOeZqrz14++I84MMhOeZqrz14++I84MMhOeZqrz14++I84MMhOeZqrz14++I84MMhOeZqrz14++I84MMhOeZqrz14++I84MMhOeZqrz14++I84MMhOeZqrz14++I84MMhOeZqrz14++I84MMhOeZqrz14++I84MMhOeZqrz14++I84MMhOeZqrz14++I84MMhOeZqrz14++I84MMhOeZqrz14++I84MMhOfQENb8AAAAAAAAAAPIENT/0BDW/AAAAAAAAAADyBDU/9AQ1vwAAAAAAAAAA8gQ1P/QENb8AAAAAAAAAAPIENT/0BDW/AAAAAAAAAADyBDU/9AQ1vwAAAAAAAAAA8gQ1P/QENb8AAAAAAAAAAPIENT/0BDW/AAAAAAAAAADyBDU/9AQ1vwAAAAAAAAAA8gQ1P/QENb8AAAAAAAAAAPIENT/0BDW/AAAAAAAAAADyBDU/9AQ1vwAAAAAAAAAA8gQ1P/QENb8AAAAAAAAAAPIENT/0BDW/AAAAAAAAAADyBDU/9AQ1vwAAAAAAAAAA8gQ1P/QENb8AAAAAAAAAAPIENT/0BDW/AAAAAAAAAADyBDU/9AQ1vwAAAAAAAAAA8gQ1P/QENb8AAAAAAAAAAPIENT/0BDW/AAAAAAAAAADyBDU/9AQ1vwAAAAAAAAAA8gQ1P/QENb8AAAAAAAAAAPIENT/0BDW/AAAAAAAAAADyBDU/9AQ1vwAAAAAAAAAA8gQ1P/QENb8AAAAAAAAAAPIENT/0BDW/AAAAAAAAAADyBDU/9AQ1vwAAAAAAAAAA8gQ1P/QENb8AAAAAAAAAAPIENT/0BDW/AAAAAAAAAADyBDU/9AQ1vwAAAAAAAAAA8gQ1P/QENb8AAAAAAAAAAPIENT/0BDW/AAAAAAAAAADyBDU/9AQ1vwAAAAAAAAAA8gQ1P/QENb8AAAAAAAAAAPIENT/0BDW/AAAAAAAAAADyBDU/9AQ1vwAAAAAAAAAA8gQ1P/QENb8AAAAAAAAAAPIENT/0BDW/AAAAAAAAAADyBDU/9AQ1vwAAAAAAAAAA8gQ1P/QENb8AAAAAAAAAAPIENT/0BDW/AAAAAAAAAADyBDU/9AQ1vwAAAAAAAAAA8gQ1P/QENb8AAAAAAAAAAPIENT/0BDW/AAAAAAAAAADyBDU/9AQ1vwAAAAAAAAAA8gQ1P/QENb8AAAAAAAAAAPIENT/0BDW/AAAAAAAAAADyBDU/9AQ1vwAAAAAAAAAA8gQ1P/QENb8AAAAAAAAAAPIENT/0BDW/AAAAAAAAAADyBDU/9AQ1vwAAAAAAAAAA8gQ1PwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAP3DbELx8QaS9yFGZPXDbELx8QaS9yFGZPXDbELx8QaS9yFGZPXDbELx8QaS9yFGZPXDbELx8QaS9yFGZPXDbELx8QaS9yFGZPXDbELx8QaS9yFGZPXDbELx8QaS9yFGZPXDbELx8QaS9yFGZPXDbELx8QaS9yFGZPXDbELx8QaS9yFGZPXDbELx8QaS9yFGZPXDbELx8QaS9yFGZPXDbELx8QaS9yFGZPXDbELx8QaS9yFGZPXDbELx8QaS9yFGZPXDbELx8QaS9yFGZPXDbELx8QaS9yFGZPXDbELx8QaS9yFGZPXDbELx8QaS9yFGZPXDbELx8QaS9yFGZPXDbELx8QaS9yFGZPXDbELx8QaS9yFGZPXDbELx8QaS9yFGZPXDbELx8QaS9yFGZPXDbELx8QaS9yFGZPXDbELx8QaS9yFGZPXDbELx8QaS9yFGZPXDbELx8QaS9yFGZPXDbELx8QaS9yFGZPXDbELx8QaS9yFGZPXDbELx8QaS9yFGZPXDbELx8QaS9yFGZPXDbELx8QaS9yFGZPXDbELx8QaS9yFGZPXDbELx8QaS9yFGZPXDbELx8QaS9yFGZPXDbELx8QaS9yFGZPXDbELx8QaS9yFGZPXDbELx8QaS9yFGZPXDbELx8QaS9yFGZPXDbELx8QaS9yFGZPXDbELx8QaS9yFGZPXDbELx8QaS9yFGZPXDbELx8QaS9yFGZPXDbELx8QaS9yFGZPXDbELx8QaS9yFGZPXDbELx8QaS9yFGZPXDbELx8QaS9yFGZPXDbELx8QaS9yFGZPXDbELx8QaS9yFGZPQAAAIAAAACAAACAvy69OzMAAACAAAAAgAAAgL8uvTszAAAAgAAAAIAAAIC/Lr07MwAAAIAAAACAAACAvy69OzMAAACAAAAAgAAAgL8uvTszAAAAgAAAAIAAAIC/Lr07MwAAAIAAAACAAACAvy69OzMAAACAAAAAgAAAgL8uvTszAAAAgAAAAIAAAIC/Lr07MwAAAIAAAACAAACAvy69OzMAAACAAAAAgAAAgL8uvTszAAAAgAAAAIAAAIC/Lr07MwAAAIAAAACAAACAvy69OzMAAACAAAAAgAAAgL8uvTszAAAAgAAAAIAAAIC/Lr07MwAAAIAAAACAAACAvy69OzMAAACAAAAAgAAAgL8uvTszAAAAgAAAAIAAAIC/Lr07MwAAAIAAAACAAACAvy69OzMAAACAAAAAgAAAgL8uvTszAAAAgAAAAIAAAIC/Lr07MwAAAIAAAACAAACAvy69OzMAAACAAAAAgAAAgL8uvTszAAAAgAAAAIAAAIC/Lr07MwAAAIAAAACAAACAvy69OzMAAACAAAAAgAAAgL8uvTszAAAAgAAAAIAAAIC/Lr07MwAAAIAAAACAAACAvy69OzMAAACAAAAAgAAAgL8uvTszAAAAgAAAAIAAAIC/Lr07MwAAAIAAAACAAACAvy69OzMAAACAAAAAgAAAgL8uvTszAAAAgAAAAIAAAIC/Lr07MwAAAIAAAACAAACAvy69OzMAAACAAAAAgAAAgL8uvTszAAAAgAAAAIAAAIC/Lr07MwAAAIAAAACAAACAvy69OzMAAACAAAAAgAAAgL8uvTszAAAAgAAAAIAAAIC/Lr07MwAAAIAAAACAAACAvy69OzMAAACAAAAAgAAAgL8uvTszAAAAgAAAAIAAAIC/Lr07MwAAAIAAAACAAACAvy69OzMAAACAAAAAgAAAgL8uvTszAAAAgAAAAIAAAIC/Lr07MwAAAIAAAACAAACAvy69OzMAAACAAAAAgAAAgL8uvTszAAAAgAAAAIAAAIC/Lr07MwAAAIAAAACAAACAvy69OzMAAACAAAAAgAAAgL8uvTszAAAAgAAAAIAAAIC/Lr07MwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAP27UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAAAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAP+Zqr714++I84MMhOeZqr714++I84MMhOeZqr714++I84MMhOeZqr714++I84MMhOeZqr714++I84MMhOeZqr714++I84MMhOeZqr714++I84MMhOeZqr714++I84MMhOeZqr714++I84MMhOeZqr714++I84MMhOeZqr714++I84MMhOeZqr714++I84MMhOeZqr714++I84MMhOeZqr714++I84MMhOeZqr714++I84MMhOeZqr714++I84MMhOeZqr714++I84MMhOeZqr714++I84MMhOeZqr714++I84MMhOeZqr714++I84MMhOeZqr714++I84MMhOeZqr714++I84MMhOeZqr714++I84MMhOeZqr714++I84MMhOeZqr714++I84MMhOeZqr714++I84MMhOeZqr714++I84MMhOeZqr714++I84MMhOeZqr714++I84MMhOeZqr714++I84MMhOeZqr714++I84MMhOeZqr714++I84MMhOeZqr714++I84MMhOeZqr714++I84MMhOeZqr714++I84MMhOeZqr714++I84MMhOeZqr714++I84MMhOeZqr714++I84MMhOeZqr714++I84MMhOeZqr714++I84MMhOeZqr714++I84MMhOeZqr714++I84MMhOeZqr714++I84MMhOeZqr714++I84MMhOeZqr714++I84MMhOeZqr714++I84MMhOeZqr714++I84MMhOeZqr714++I84MMhOeZqr714++I84MMhOeZqr714++I84MMhOeZqr714++I84MMhOfQENb8AAAAAAAAAAPIENT/0BDW/AAAAAAAAAADyBDU/9AQ1vwAAAAAAAAAA8gQ1P/QENb8AAAAAAAAAAPIENT/0BDW/AAAAAAAAAADyBDU/9AQ1vwAAAAAAAAAA8gQ1P/QENb8AAAAAAAAAAPIENT/0BDW/AAAAAAAAAADyBDU/9AQ1vwAAAAAAAAAA8gQ1P/QENb8AAAAAAAAAAPIENT/0BDW/AAAAAAAAAADyBDU/9AQ1vwAAAAAAAAAA8gQ1P/QENb8AAAAAAAAAAPIENT/0BDW/AAAAAAAAAADyBDU/9AQ1vwAAAAAAAAAA8gQ1P/QENb8AAAAAAAAAAPIENT/0BDW/AAAAAAAAAADyBDU/9AQ1vwAAAAAAAAAA8gQ1P/QENb8AAAAAAAAAAPIENT/0BDW/AAAAAAAAAADyBDU/9AQ1vwAAAAAAAAAA8gQ1P/QENb8AAAAAAAAAAPIENT/0BDW/AAAAAAAAAADyBDU/9AQ1vwAAAAAAAAAA8gQ1P/QENb8AAAAAAAAAAPIENT/0BDW/AAAAAAAAAADyBDU/9AQ1vwAAAAAAAAAA8gQ1P/QENb8AAAAAAAAAAPIENT/0BDW/AAAAAAAAAADyBDU/9AQ1vwAAAAAAAAAA8gQ1P/QENb8AAAAAAAAAAPIENT/0BDW/AAAAAAAAAADyBDU/9AQ1vwAAAAAAAAAA8gQ1P/QENb8AAAAAAAAAAPIENT/0BDW/AAAAAAAAAADyBDU/9AQ1vwAAAAAAAAAA8gQ1P/QENb8AAAAAAAAAAPIENT/0BDW/AAAAAAAAAADyBDU/9AQ1vwAAAAAAAAAA8gQ1P/QENb8AAAAAAAAAAPIENT/0BDW/AAAAAAAAAADyBDU/9AQ1vwAAAAAAAAAA8gQ1P/QENb8AAAAAAAAAAPIENT/0BDW/AAAAAAAAAADyBDU/9AQ1vwAAAAAAAAAA8gQ1P/QENb8AAAAAAAAAAPIENT/0BDW/AAAAAAAAAADyBDU/9AQ1vwAAAAAAAAAA8gQ1P/QENb8AAAAAAAAAAPIENT/0BDW/AAAAAAAAAADyBDU/9AQ1vwAAAAAAAAAA8gQ1PwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAP3DbEDx8QaS9yFGZPXDbEDx8QaS9yFGZPXDbEDx8QaS9yFGZPXDbEDx8QaS9yFGZPXDbEDx8QaS9yFGZPXDbEDx8QaS9yFGZPXDbEDx8QaS9yFGZPXDbEDx8QaS9yFGZPXDbEDx8QaS9yFGZPXDbEDx8QaS9yFGZPXDbEDx8QaS9yFGZPXDbEDx8QaS9yFGZPXDbEDx8QaS9yFGZPXDbEDx8QaS9yFGZPXDbEDx8QaS9yFGZPXDbEDx8QaS9yFGZPXDbEDx8QaS9yFGZPXDbEDx8QaS9yFGZPXDbEDx8QaS9yFGZPXDbEDx8QaS9yFGZPXDbEDx8QaS9yFGZPXDbEDx8QaS9yFGZPXDbEDx8QaS9yFGZPXDbEDx8QaS9yFGZPXDbEDx8QaS9yFGZPXDbEDx8QaS9yFGZPXDbEDx8QaS9yFGZPXDbEDx8QaS9yFGZPXDbEDx8QaS9yFGZPXDbEDx8QaS9yFGZPXDbEDx8QaS9yFGZPXDbEDx8QaS9yFGZPXDbEDx8QaS9yFGZPXDbEDx8QaS9yFGZPXDbEDx8QaS9yFGZPXDbEDx8QaS9yFGZPXDbEDx8QaS9yFGZPXDbEDx8QaS9yFGZPXDbEDx8QaS9yFGZPXDbEDx8QaS9yFGZPXDbEDx8QaS9yFGZPXDbEDx8QaS9yFGZPXDbEDx8QaS9yFGZPXDbEDx8QaS9yFGZPXDbEDx8QaS9yFGZPXDbEDx8QaS9yFGZPXDbEDx8QaS9yFGZPXDbEDx8QaS9yFGZPXDbEDx8QaS9yFGZPXDbEDx8QaS9yFGZPXDbEDx8QaS9yFGZPQAAAIAAAACAAACAvy69OzMAAACAAAAAgAAAgL8uvTszAAAAgAAAAIAAAIC/Lr07MwAAAIAAAACAAACAvy69OzMAAACAAAAAgAAAgL8uvTszAAAAgAAAAIAAAIC/Lr07MwAAAIAAAACAAACAvy69OzMAAACAAAAAgAAAgL8uvTszAAAAgAAAAIAAAIC/Lr07MwAAAIAAAACAAACAvy69OzMAAACAAAAAgAAAgL8uvTszAAAAgAAAAIAAAIC/Lr07MwAAAIAAAACAAACAvy69OzMAAACAAAAAgAAAgL8uvTszAAAAgAAAAIAAAIC/Lr07MwAAAIAAAACAAACAvy69OzMAAACAAAAAgAAAgL8uvTszAAAAgAAAAIAAAIC/Lr07MwAAAIAAAACAAACAvy69OzMAAACAAAAAgAAAgL8uvTszAAAAgAAAAIAAAIC/Lr07MwAAAIAAAACAAACAvy69OzMAAACAAAAAgAAAgL8uvTszAAAAgAAAAIAAAIC/Lr07MwAAAIAAAACAAACAvy69OzMAAACAAAAAgAAAgL8uvTszAAAAgAAAAIAAAIC/Lr07MwAAAIAAAACAAACAvy69OzMAAACAAAAAgAAAgL8uvTszAAAAgAAAAIAAAIC/Lr07MwAAAIAAAACAAACAvy69OzMAAACAAAAAgAAAgL8uvTszAAAAgAAAAIAAAIC/Lr07MwAAAIAAAACAAACAvy69OzMAAACAAAAAgAAAgL8uvTszAAAAgAAAAIAAAIC/Lr07MwAAAIAAAACAAACAvy69OzMAAACAAAAAgAAAgL8uvTszAAAAgAAAAIAAAIC/Lr07MwAAAIAAAACAAACAvy69OzMAAACAAAAAgAAAgL8uvTszAAAAgAAAAIAAAIC/Lr07MwAAAIAAAACAAACAvy69OzMAAACAAAAAgAAAgL8uvTszAAAAgAAAAIAAAIC/Lr07MwAAAIAAAACAAACAvy69OzMAAACAAAAAgAAAgL8uvTszAAAAgAAAAIAAAIC/Lr07MwAAAIAAAACAAACAvy69OzMAAACAAAAAgAAAgL8uvTszAAAAgAAAAIAAAIC/Lr07MwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAP27UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAG7UjLGA+zA9AAAAAAAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgEvvrrMAAAAAAAAAgAAAgD9L766zAAAAAAAAAIAAAIA/S++uswAAAAAAAACAAACAP0vvrrMAAAAAAAAAgAAAgD9L766zAAAAAAAAAIAAAIA/S++uswAAAAAAAACAAACAP0vvrrMAAAAAAAAAgAAAgD9L766zAAAAAAAAAIAAAIA/S++uswAAAAAAAACAAACAP0vvrrMAAAAAAAAAgAAAgD9L766zAAAAAAAAAIAAAIA/S++uswAAAAAAAACAAACAP0vvrrMAAAAAAAAAgAAAgD9L766zAAAAAAAAAIAAAIA/S++uswAAAAAAAACAAACAP0vvrrMAAAAAAAAAgAAAgD9L766zAAAAAAAAAIAAAIA/S++uswAAAAAAAACAAACAP0vvrrMAAAAAAAAAgAAAgD9L766zAAAAAAAAAIAAAIA/S++uswAAAAAAAACAAACAP0vvrrMAAAAAAAAAgAAAgD9L766zAAAAAAAAAIAAAIA/S++uswAAAAAAAACAAACAP0vvrrMAAAAAAAAAgAAAgD9L766zAAAAAAAAAIAAAIA/S++uswAAAAAAAACAAACAP0vvrrMAAAAAAAAAgAAAgD9L766zAAAAAAAAAIAAAIA/S++uswAAAAAAAACAAACAP0vvrrMAAAAAAAAAgAAAgD9L766zAAAAAAAAAIAAAIA/S++uswAAAAAAAACAAACAP0vvrrMAAAAAAAAAgAAAgD9L766zAAAAAAAAAIAAAIA/S++uswAAAAAAAACAAACAP0vvrrMAAAAAAAAAgAAAgD9L766zAAAAAAAAAIAAAIA/S++uswAAAAAAAACAAACAP0vvrrMAAAAAAAAAgAAAgD9L766zAAAAAAAAAIAAAIA/S++uswAAAAAAAACAAACAP0vvrrMAAAAAAAAAgAAAgD9L766zAAAAAAAAAIAAAIA/S++uswAAAAAAAACAAACAP0vvrrMAAAAAAAAAgAAAgD9L766zAAAAAAAAAIAAAIA/S++uswAAAAAAAACAAACAP0vvrrMAAAAAAAAAgAAAgD9L766zAAAAAAAAAIAAAIA/S++uswAAAAAAAACAAACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPw==" - } - ] -} diff --git a/Dependencies.bat b/Dependencies.bat index 44185ff8..ba411815 100644 --- a/Dependencies.bat +++ b/Dependencies.bat @@ -6,7 +6,7 @@ echo --------------------------------------------------- echo "SHADE DEPENDENCIES (Default - All in 10 Seconds)" echo "A - All" echo "B - VMA" -echo "C - msdf" +echo "C - FontCompiler" echo "D - ModelCompiler" echo "E - spdlog" echo "F - reactphysics3d" @@ -28,7 +28,7 @@ set _e=%ERRORLEVEL% if %_e%==1 goto VMA if %_e%==2 goto VMA -if %_e%==3 goto MSDF +if %_e%==3 goto FontCompiler if %_e%==4 goto ModelCompiler if %_e%==5 goto spdlog if %_e%==6 goto reactphysics3d @@ -47,12 +47,13 @@ if %_e%==16 goto fmod echo -----------------------VMA---------------------------- rmdir "Dependencies/VMA" /S /Q git clone https://github.com/SHADE-DP/VulkanMemoryAllocator.git "Dependencies/VMA" -if %_e%==2 (goto :done) else (goto :MSDF) +if %_e%==2 (goto :done) else (goto :FontCompiler) -:MSDF -echo -----------------------MSDF---------------------------- -rmdir "Dependencies/msdf" /S /Q -git clone --recurse-submodules https://github.com/SHADE-DP/msdf-atlas-gen.git "Dependencies/msdf" +:FontCompiler +echo -----------------------FontCompiler---------------------------- +rmdir "Dependencies/FontCompiler" /S /Q +git clone https://github.com/SHADE-DP/FontCompiler.git "Dependencies/FontCompiler" +git clone --recurse-submodules https://github.com/SHADE-DP/msdf-atlas-gen "Dependencies/FontCompiler/Dependencies/msdf" if %_e%==3 (goto :done) else (goto :ModelCompiler) :ModelCompiler diff --git a/Dependencies.lua b/Dependencies.lua index 2e24222b..fe75c3f4 100644 --- a/Dependencies.lua +++ b/Dependencies.lua @@ -3,8 +3,9 @@ IncludeDir["ModelCompiler"] = "%{wks.location}\\Dependencies\\ModelCompiler" IncludeDir["imgui"] = "%{wks.location}\\Dependencies\\imgui" IncludeDir["imguizmo"] = "%{wks.location}\\Dependencies\\imguizmo" IncludeDir["imnodes"] = "%{wks.location}\\Dependencies\\imnodes" -IncludeDir["msdf_atlas_gen"] = "%{wks.location}\\Dependencies\\msdf" -IncludeDir["msdfgen"] = "%{wks.location}\\Dependencies\\msdf\\msdfgen" +IncludeDir["FontCompiler"] = "%{wks.location}\\Dependencies\\FontCompiler" +IncludeDir["msdf_atlas_gen"] = "%{wks.location}\\Dependencies\\FontCompiler\\Dependencies\\msdf" +IncludeDir["msdfgen"] = "%{wks.location}\\Dependencies\\FontCompiler\\Dependencies\\msdf\\msdfgen" IncludeDir["spdlog"] = "%{wks.location}\\Dependencies\\spdlog" IncludeDir["tracy"] = "%{wks.location}\\Dependencies\\tracy" IncludeDir["VMA"] = "%{wks.location}\\Dependencies\\VMA" diff --git a/SHADE_Application/premake5.lua b/SHADE_Application/premake5.lua index 395c3a48..014df726 100644 --- a/SHADE_Application/premake5.lua +++ b/SHADE_Application/premake5.lua @@ -38,7 +38,9 @@ project "SHADE_Application" "%{IncludeDir.spdlog}/include", "%{IncludeDir.tinyddsloader}", "%{IncludeDir.reactphysics3d}\\include", - "%{IncludeDir.yamlcpp}" + "%{IncludeDir.yamlcpp}", + "%{IncludeDir.msdf_atlas_gen}", + "%{IncludeDir.msdfgen}" } externalwarnings "Off" @@ -75,7 +77,11 @@ project "SHADE_Application" "26439", "26451", "26437", - "4275" + "4275", + "4633", + "4634", + "4635", + "4638" } linkoptions { "-IGNORE:4006" } diff --git a/SHADE_Application/src/Application/SBApplication.cpp b/SHADE_Application/src/Application/SBApplication.cpp index 6b67dbce..1a00941f 100644 --- a/SHADE_Application/src/Application/SBApplication.cpp +++ b/SHADE_Application/src/Application/SBApplication.cpp @@ -8,8 +8,8 @@ //#include "Scenes/SBEditorScene.h" #endif // SHEDITOR -#include "Tools/SHLogger.h" -#include "Tools/SHFileUtilties.h" +#include "Tools/Logger/SHLogger.h" +#include "Tools/Utilities/SHFileUtilties.h" #include #include @@ -24,14 +24,16 @@ #include "Scene/SHSceneManager.h" // Systems -#include "Scripting/SHScriptEngine.h" -#include "Physics/SHPhysicsSystem.h" -#include "Math/Transform/SHTransformSystem.h" -#include "Input/SHInputManager.h" -#include "FRC/SHFramerateController.h" #include "AudioSystem/SHAudioSystem.h" #include "Camera/SHCameraSystem.h" +#include "FRC/SHFramerateController.h" #include "Graphics/MiddleEnd/Interface/SHDebugDrawSystem.h" +#include "Input/SHInputManager.h" +#include "Math/Transform/SHTransformSystem.h" +#include "Physics/System/SHPhysicsSystem.h" +#include "Physics/System/SHPhysicsDebugDrawSystem.h" +#include "Scripting/SHScriptEngine.h" +#include "UI/SHUISystem.h" // Components #include "Graphics/MiddleEnd/Interface/SHRenderable.h" @@ -39,12 +41,11 @@ #include "Scenes/SBTestScene.h" - #include "Assets/SHAssetManager.h" #include "Scenes/SBMainScene.h" #include "Serialization/Configurations/SHConfigurationManager.h" -#include "Tools/SHLogger.h" +#include "Tools/Logger/SHLogger.h" #include "Tools/SHDebugDraw.h" using namespace SHADE; @@ -60,6 +61,8 @@ namespace Sandbox _In_ INT nCmdShow ) { + SHLOG_INFO_D("Initialising SHADE engine") + // Set working directory SHFileUtilities::SetWorkDirToExecDir(); WindowData wndData{}; @@ -67,16 +70,25 @@ namespace Sandbox window.Create(hInstance, hPrevInstance, lpCmdLine, nCmdShow, wndData); // Create Systems - SHSystemManager::CreateSystem(); + SHSystemManager::CreateSystem(); - SHSystemManager::CreateSystem(); SHSystemManager::CreateSystem(); - SHGraphicsSystem* graphicsSystem = static_cast(SHSystemManager::GetSystem()); + SHSystemManager::CreateSystem(); + SHSystemManager::CreateSystem(); + SHSystemManager::CreateSystem(); SHSystemManager::CreateSystem(); - SHSystemManager::CreateSystem(); + SHSystemManager::CreateSystem(); + + //std::system("FontCompiler.exe ../../Assets/Fonts/SegoeUI.ttf"); + //std::system("FontCompiler.exe ../../Assets/Fonts/ALGER.ttf"); + + SHSystemManager::CreateSystem(); + SHGraphicsSystem* graphicsSystem = static_cast(SHSystemManager::GetSystem()); + SHPhysicsSystem* physicsSystem = SHSystemManager::GetSystem(); // Link up SHDebugDraw + SHSystemManager::CreateSystem(); SHDebugDraw::Init(SHSystemManager::GetSystem()); #ifdef SHEDITOR @@ -101,16 +113,20 @@ namespace Sandbox SHSystemManager::RegisterRoutine(); SHSystemManager::RegisterRoutine(); SHSystemManager::RegisterRoutine(); - SHSystemManager::RegisterRoutine(); + + SHSystemManager::RegisterRoutine(); SHSystemManager::RegisterRoutine(); SHSystemManager::RegisterRoutine(); SHSystemManager::RegisterRoutine(); + SHSystemManager::RegisterRoutine(); SHSystemManager::RegisterRoutine(); SHSystemManager::RegisterRoutine(); //SHSystemManager::RegisterRoutine(); + SHSystemManager::RegisterRoutine(); + SHSystemManager::RegisterRoutine(); SHSystemManager::RegisterRoutine(); #ifdef SHEDITOR @@ -127,7 +143,7 @@ namespace Sandbox //SHComponentManager::CreateComponentSparseSet(); SHAssetManager::Load(); - + //auto font = SHAssetManager::GetData(176667660); SHSystemManager::RegisterRoutine(); @@ -147,25 +163,48 @@ namespace Sandbox void SBApplication::Update(void) { SHGraphicsSystem* graphicsSystem = SHADE::SHSystemManager::GetSystem(); + +#ifdef SHEDITOR SHEditor* editor = SHADE::SHSystemManager::GetSystem(); +#endif + //TODO: Change true to window is open while (!window.WindowShouldClose()) { SHFrameRateController::UpdateFRC(); SHInputManager::UpdateInput(SHFrameRateController::GetRawDeltaTime()); SHSceneManager::UpdateSceneManager(); + #ifdef SHEDITOR if(editor->editorState == SHEditor::State::PLAY) - SHSceneManager::SceneUpdate(0.016f); -#endif - SHSystemManager::RunRoutines(editor->editorState != SHEditor::State::PLAY, 0.016f); - editor->PollPicking(); +#endif + SHSceneManager::SceneUpdate(0.016f); +#ifdef SHEDITOR + SHSystemManager::RunRoutines(editor->editorState != SHEditor::State::PLAY, SHFrameRateController::GetRawDeltaTime()); + editor->PollPicking(); +#else + SHSystemManager::RunRoutines(false, SHFrameRateController::GetRawDeltaTime()); +#endif + // TODO: Move into an Editor menu static bool drawColliders = false; if (SHInputManager::GetKeyDown(SHInputManager::SH_KEYCODE::F10)) { drawColliders = !drawColliders; - SHSystemManager::GetSystem()->SetDrawColliders(drawColliders); + SHSystemManager::GetSystem()->SetDebugDrawFlag(SHPhysicsDebugDrawSystem::DebugDrawFlags::COLLIDER, drawColliders); + } + static bool drawRays = false; + if (SHInputManager::GetKeyDown(SHInputManager::SH_KEYCODE::F11)) + { + drawRays = !drawRays; + SHSystemManager::GetSystem()->SetDebugDrawFlag(SHPhysicsDebugDrawSystem::DebugDrawFlags::RAYCASTS, drawRays); + } + static bool drawContacts = false; + if (SHInputManager::GetKeyDown(SHInputManager::SH_KEYCODE::F9)) + { + drawContacts = !drawContacts; + SHSystemManager::GetSystem()->SetDebugDrawFlag(SHPhysicsDebugDrawSystem::DebugDrawFlags::CONTACT_POINTS, drawContacts); + SHSystemManager::GetSystem()->SetDebugDrawFlag(SHPhysicsDebugDrawSystem::DebugDrawFlags::CONTACT_NORMALS, drawContacts); } } // Finish all graphics jobs first diff --git a/SHADE_Application/src/Scenes/SBMainScene.cpp b/SHADE_Application/src/Scenes/SBMainScene.cpp index 34190915..521dd275 100644 --- a/SHADE_Application/src/Scenes/SBMainScene.cpp +++ b/SHADE_Application/src/Scenes/SBMainScene.cpp @@ -7,12 +7,14 @@ #include "Graphics/MiddleEnd/Interface/SHRenderable.h" #include "Scene/SHSceneManager.h" #include "Graphics/MiddleEnd/Interface/SHGraphicsSystem.h" +#include "Physics/System/SHPhysicsSystem.h" #include "Scripting/SHScriptEngine.h" #include "Math/Transform/SHTransformComponent.h" #include "Graphics/MiddleEnd/Interface/SHMaterialInstance.h" -#include "Physics/Components/SHRigidBodyComponent.h" -#include "Physics/Components/SHColliderComponent.h" +#include "Physics/Interface/SHRigidBodyComponent.h" +#include "Physics/Interface/SHColliderComponent.h" #include "Graphics/MiddleEnd/Lights/SHLightComponent.h" +#include "Graphics/MiddleEnd/TextRendering/SHTextRenderableComponent.h" #include "Assets/SHAssetManager.h" #include "Camera/SHCameraComponent.h" @@ -41,6 +43,32 @@ namespace Sandbox void SBMainScene::Init() { sceneName = SHSerialization::DeserializeSceneFromFile(sceneAssetID); + + #ifndef SHEDITOR + + auto* physicsSystem = SHSystemManager::GetSystem(); + if (!physicsSystem) + { + SHLOGV_CRITICAL("Failed to get the physics system for building the scene!") + return; + } + + physicsSystem->BuildScene(SHSceneManager::GetCurrentSceneGraph()); + + #endif + + /*-----------------------------------------------------------------------*/ + /* TESTING CODE */ + /*-----------------------------------------------------------------------*/ + //testText = SHEntityManager::CreateEntity(MAX_EID, "Test Text"); + //auto gfxSystem =SHSystemManager::GetSystem(); + + //auto textComp = SHComponentManager::GetComponent(testText); + + //textComp->SetFont(gfxSystem->GetFontLibrary().GetFonts()[0]); + /*-----------------------------------------------------------------------*/ + /* TESTING CODE */ + /*-----------------------------------------------------------------------*/ } void SBMainScene::Update(float dt) diff --git a/SHADE_Application/src/Scenes/SBMainScene.h b/SHADE_Application/src/Scenes/SBMainScene.h index 7bd10118..18d43e33 100644 --- a/SHADE_Application/src/Scenes/SBMainScene.h +++ b/SHADE_Application/src/Scenes/SBMainScene.h @@ -12,6 +12,8 @@ namespace Sandbox EntityID testObj; std::vector stressTestObjects; + EntityID testText; + public: virtual void Load(); virtual void Init(); diff --git a/SHADE_Application/src/Scenes/SBTestScene.cpp b/SHADE_Application/src/Scenes/SBTestScene.cpp index 8281f114..bcc7f09d 100644 --- a/SHADE_Application/src/Scenes/SBTestScene.cpp +++ b/SHADE_Application/src/Scenes/SBTestScene.cpp @@ -10,8 +10,8 @@ #include "Scripting/SHScriptEngine.h" #include "Math/Transform/SHTransformComponent.h" #include "Graphics/MiddleEnd/Interface/SHMaterialInstance.h" -#include "Physics/Components/SHRigidBodyComponent.h" -#include "Physics/Components/SHColliderComponent.h" +#include "Physics/Interface/SHRigidBodyComponent.h" +#include "Physics/Interface/SHColliderComponent.h" #include "Graphics/MiddleEnd/Lights/SHLightComponent.h" #include "Assets/SHAssetManager.h" diff --git a/SHADE_Application/src/WinMain.cpp b/SHADE_Application/src/WinMain.cpp index f672cead..9dcab1ab 100644 --- a/SHADE_Application/src/WinMain.cpp +++ b/SHADE_Application/src/WinMain.cpp @@ -1,6 +1,6 @@ #include "SBpch.h" #include -#include +#include #include #include "Application/SBApplication.h" diff --git a/SHADE_CSharp/premake5.lua b/SHADE_CSharp/premake5.lua index 2d6c1edb..8844b84c 100644 --- a/SHADE_CSharp/premake5.lua +++ b/SHADE_CSharp/premake5.lua @@ -27,6 +27,12 @@ project "SHADE_CSharp" warnings 'Extra' + postbuildcommands + { + "xcopy /r /y /q \"%{outputdir}\\net5.0\\SHADE_CSharp.xml\" \"%{outputdir}\"", + "xcopy /r /y /q \"%{outputdir}\\net5.0\\SHADE_CSharp.pdb\" \"%{outputdir}\"" + } + filter "configurations:Debug" symbols "On" defines {"_DEBUG"} @@ -41,12 +47,21 @@ project "SHADE_CSharp" require "vstudio" - function platformsElement(cfg) + function platformsElementCS(cfg) _p(2,'x64') end + function configElementCS(cfg) + _p(2,'Debug;Release;Publish') + end + function docsElementCS(cfg) + _p(2,'true') + end + function docsLocationElementCS(cfg) + _p(2,'$(OutDir)') + end premake.override(premake.vstudio.cs2005.elements, "projectProperties", function (oldfn, cfg) return table.join(oldfn(cfg), { - platformsElement, + platformsElementCS, configElementCS, docsElementCS, docsLocationElementCS, }) end) \ No newline at end of file diff --git a/SHADE_Engine/premake5.lua b/SHADE_Engine/premake5.lua index 42f95520..7fb7291d 100644 --- a/SHADE_Engine/premake5.lua +++ b/SHADE_Engine/premake5.lua @@ -78,7 +78,11 @@ project "SHADE_Engine" "26439", "26451", "26437", - "4275" + "4275", + "4633", + "4634", + "4635", + "4638" } linkoptions { "-IGNORE:4006" } @@ -118,6 +122,7 @@ project "SHADE_Engine" { "xcopy /r /y /q \"%{IncludeDir.ModelCompiler}\\bin\\Debug\\assimp-vc142-mtd.dll\" \"$(OutDir)\"", "xcopy /r /y /q \"%{IncludeDir.ModelCompiler}\\bin\\Debug\\ModelCompiler.exe\" \"$(OutDir)\"", + "xcopy /r /y /q \"%{IncludeDir.FontCompiler}\\bin\\Debug\\FontCompiler.exe\" \"$(OutDir)\"", "xcopy /r /y /q \"%{IncludeDir.fmod}\\lib\\fmodL.dll\" \"$(OutDir)\"", "xcopy /r /y /q \"%{IncludeDir.fmod}\\lib\\fmodstudioL.dll\" \"$(OutDir)\"" } @@ -127,6 +132,7 @@ project "SHADE_Engine" { "xcopy /r /y /q \"%{IncludeDir.ModelCompiler}\\bin\\Release\\assimp-vc142-mt.dll\" \"$(OutDir)\"", "xcopy /r /y /q \"%{IncludeDir.ModelCompiler}\\bin\\Release\\ModelCompiler.exe\" \"$(OutDir)\"", + "xcopy /r /y /q \"%{IncludeDir.FontCompiler}\\bin\\Release\\FontCompiler.exe\" \"$(OutDir)\"", "xcopy /r /y /q \"%{IncludeDir.fmod}\\lib\\fmod.dll\" \"$(OutDir)\"", "xcopy /r /y /q \"%{IncludeDir.fmod}\\lib\\fmodstudio.dll\" \"$(OutDir)\"" } diff --git a/SHADE_Engine/src/Assets/Asset Types/SHFontAsset.h b/SHADE_Engine/src/Assets/Asset Types/SHFontAsset.h new file mode 100644 index 00000000..8d2cb67a --- /dev/null +++ b/SHADE_Engine/src/Assets/Asset Types/SHFontAsset.h @@ -0,0 +1,47 @@ +#pragma once + +#include "SHAssetData.h" +#include "SH_API.h" +#include +#include +#include "msdf-atlas-gen/msdf-atlas-gen.h" +#include "math/SHMatrix.h" + +namespace SHADE +{ + struct SH_API SHFontAsset : SHAssetData + { + using GlyphData = SHMatrix; + static constexpr uint32_t NUM_CHANNELS = 3; + static constexpr uint32_t BYTES_PER_CHANNEL = 3; + static constexpr uint8_t BASELINE_LEFT_MATRIX_INDEX_ROW = 3; + static constexpr uint8_t BASELINE_LEFT_MATRIX_INDEX_COL = 2; + static constexpr uint8_t BASELINE_BOTTOM_MATRIX_INDEX_ROW = 3; + static constexpr uint8_t BASELINE_BOTTOM_MATRIX_INDEX_COL = 3; + + /*-----------------------------------------------------------------------*/ + /* MEMBER VARIABLES */ + /*-----------------------------------------------------------------------*/ + //! Name of the shader file (without parent path) + std::string fontName; + + //! Glyphs. Corresponds to the transformation container below. + std::vector glyphs; + + //! Data containing character and uv transformation data and other misc data + std::vector glyphTransformations; + + //! The actual data of the atlas to go into the binary. Was unique_ptr, vector easier to copy. + std::vector bitmapData; + + //! Width of the bitmap + uint32_t bitmapWidth; + + //! Height of the bitmap + uint32_t bitmapHeight; + + //! Font geometry required to get kerning from + msdf_atlas::FontGeometry fontGeometry; + + }; +} \ No newline at end of file diff --git a/SHADE_Engine/src/Assets/Libraries/Loaders/SHFontLoader.cpp b/SHADE_Engine/src/Assets/Libraries/Loaders/SHFontLoader.cpp new file mode 100644 index 00000000..7217b551 --- /dev/null +++ b/SHADE_Engine/src/Assets/Libraries/Loaders/SHFontLoader.cpp @@ -0,0 +1,83 @@ +#include "SHpch.h" +#include "SHFontLoader.h" +#include "Assets/Asset Types/SHFontAsset.h" +#include "Graphics/MiddleEnd/TextRendering/SHFreetypeInstance.h" +#include "msdf-atlas-gen/msdf-atlas-gen.h" + +#include +#include +#include +#include + +namespace SHADE +{ + SHADE::SHAssetData* SHFontLoader::Load(AssetPath path) + { + auto newFontAsset = new SHFontAsset(); + + std::ifstream file{ path.string(), std::ios::in | std::ios::binary }; + if (!file.is_open()) + { + SHLOG_ERROR("Unable to open compiled font file: {}", path.string()); + return nullptr; + } + + // Attempt to load font geometry for advance data + auto ttfFilePath = path.string(); + ttfFilePath = ttfFilePath.substr(0, ttfFilePath.find_last_of('.')); + ttfFilePath += TTF_EXTENSION.data(); + msdfgen::FontHandle* fontHandle = nullptr; + fontHandle = msdfgen::loadFont(SHFreetypeInstance::GetFreetypeHandle(), ttfFilePath.c_str()); + newFontAsset->fontGeometry.loadCharset(fontHandle, 1.0f, msdf_atlas::Charset::ASCII); + + uint32_t numGlyphs = 0; + + // read how many glyphs we have + file.read (reinterpret_cast(&numGlyphs), sizeof (uint32_t)); + + newFontAsset->glyphs.resize(numGlyphs); + newFontAsset->glyphTransformations.resize(numGlyphs); + + for (uint32_t i = 0; i < numGlyphs; ++i) + { + // Read the data for the glyph + file.read(reinterpret_cast(&newFontAsset->glyphs[i]), sizeof(msdf_atlas::unicode_t)); + } + + for (uint32_t i = 0; i < numGlyphs; ++i) + { + // Read the data for the glyph transformations + file.read(reinterpret_cast(&newFontAsset->glyphTransformations[i]), sizeof(SHMatrix)); + } + + // read the width + file.read(reinterpret_cast(&newFontAsset->bitmapWidth), sizeof(SHFontAsset::bitmapWidth)); + + // read the height + file.read(reinterpret_cast(&newFontAsset->bitmapHeight), sizeof(SHFontAsset::bitmapHeight)); + + uint32_t bytesRequired = 0; + file.read(reinterpret_cast(&bytesRequired), sizeof(uint32_t)); + + // Read the bitmap + newFontAsset->bitmapData.resize(bytesRequired); + file.read(reinterpret_cast(newFontAsset->bitmapData.data()), bytesRequired); + + + file.close(); + + return newFontAsset; + } + + void SHFontLoader::Write(SHAssetData const* data, AssetPath path) + { + /* + Stuff to write to binary file : + - Interleaved per character data + - codepoint (actual character) + - 4x4 Matrix data (stores UV transform + extra data) + - Actual atlas texture + */ + } + +} \ No newline at end of file diff --git a/SHADE_Engine/src/Assets/Libraries/Loaders/SHFontLoader.h b/SHADE_Engine/src/Assets/Libraries/Loaders/SHFontLoader.h new file mode 100644 index 00000000..7221d2f2 --- /dev/null +++ b/SHADE_Engine/src/Assets/Libraries/Loaders/SHFontLoader.h @@ -0,0 +1,24 @@ +/*************************************************************************//** + * \file SHSFontLoader.h + * \author Loh Xiao Qi + * \date 23 10 2022 + * \brief + * + * Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. + *****************************************************************************/ + +#pragma once + +#include "Assets/Libraries/Loaders/SHAssetLoader.h" + +namespace SHADE +{ + struct SHFontLoader : SHAssetLoader + { + + SHAssetData* Load(AssetPath path) override; + void Write(SHAssetData const* data, AssetPath path) override; + }; +} diff --git a/SHADE_Engine/src/Assets/SHAssetMacros.h b/SHADE_Engine/src/Assets/SHAssetMacros.h index 92c4b69e..566e34e2 100644 --- a/SHADE_Engine/src/Assets/SHAssetMacros.h +++ b/SHADE_Engine/src/Assets/SHAssetMacros.h @@ -40,6 +40,8 @@ typedef FMOD::Sound* SHSound; // Asset Meta Version constexpr std::string_view ASSET_META_VER { "1.0" }; +constexpr AssetID INVALID_ASSET_ID {0}; + // Asset type enum enum class AssetType : AssetTypeMeta { @@ -52,6 +54,8 @@ enum class AssetType : AssetTypeMeta PREFAB, MATERIAL, MESH, + SCRIPT, + FONT, MAX_COUNT }; constexpr size_t TYPE_COUNT{ static_cast(AssetType::MAX_COUNT) }; @@ -65,8 +69,9 @@ constexpr std::string_view ASSET_ROOT {"../../Assets"}; constexpr std::string_view BUILT_IN_ASSET_ROOT{ "../../Built_In" }; #endif -// COMPILER PATHS +// COMPILER EXE constexpr std::string_view MODEL_COMPILER_EXE{ "ModelCompiler.exe" }; +constexpr std::string_view FONT_COMPILER_EXE{ "FontCompiler.exe" }; // INTERNAL ASSET PATHS constexpr std::string_view SCENE_FOLDER{ "/Scenes/" }; @@ -79,38 +84,45 @@ constexpr std::string_view META_EXTENSION {".shmeta"}; constexpr std::string_view AUDIO_EXTENSION {".ogg"}; constexpr std::string_view AUDIO_WAV_EXTENSION {".wav"}; constexpr std::string_view SHADER_EXTENSION{ ".shshader" }; -constexpr std::string_view SHADER_BUILT_IN_EXTENSION{".shshaderb"}; +constexpr std::string_view SHADER_BUILT_IN_EXTENSION{ ".shshaderb" }; +constexpr std::string_view FONT_EXTENSION{ ".shfont" }; constexpr std::string_view SCRIPT_EXTENSION {".cs"}; constexpr std::string_view SCENE_EXTENSION {".shade"}; constexpr std::string_view PREFAB_EXTENSION {".shprefab"}; constexpr std::string_view MATERIAL_EXTENSION {".shmat"}; constexpr std::string_view TEXTURE_EXTENSION {".shtex"}; -constexpr std::string_view MODEL_EXTENSION {".shmodel"}; +constexpr std::string_view MODEL_EXTENSION{ ".shmodel" }; constexpr std::string_view EXTENSIONS[] = { AUDIO_EXTENSION, SHADER_EXTENSION, SHADER_BUILT_IN_EXTENSION, - MATERIAL_EXTENSION, - TEXTURE_EXTENSION, + TEXTURE_EXTENSION, MODEL_EXTENSION, - SCRIPT_EXTENSION, - SCENE_EXTENSION, + SCENE_EXTENSION, PREFAB_EXTENSION, + MATERIAL_EXTENSION, + "dummy", + SCRIPT_EXTENSION, + FONT_EXTENSION, AUDIO_WAV_EXTENSION, }; +constexpr size_t EXTENSIONS_COUNT{ 11 }; + // EXTERNAL EXTENSIONS constexpr std::string_view GLSL_EXTENSION{ ".glsl" }; constexpr std::string_view DDS_EXTENSION{ ".dds" }; constexpr std::string_view FBX_EXTENSION{ ".fbx" }; constexpr std::string_view GLTF_EXTENSION{ ".gltf" }; +constexpr std::string_view TTF_EXTENSION{ ".ttf" }; constexpr std::string_view EXTERNALS[] = { GLSL_EXTENSION, DDS_EXTENSION, FBX_EXTENSION, - GLTF_EXTENSION + GLTF_EXTENSION, + TTF_EXTENSION }; // SHADER IDENTIFIERS @@ -125,11 +137,4 @@ constexpr std::pair SHADER_IDENTIFIERS[ }; constexpr size_t SHADER_TYPE_MAX_COUNT{ 3 }; - -// Error flags -constexpr std::string_view FILE_NOT_FOUND_ERR {"FILE NOT FOUND"}; -constexpr std::string_view META_NOT_FOUND_ERR {"META NOT FOUND"}; -constexpr std::string_view ASSET_NOT_FOUND_ERR {"ASSET NOT FOUND"}; -constexpr std::string_view EXT_DOES_NOT_EXIST {"TYPE DOES NOT HAVE EXTENSION DEFINED"}; - #endif // !SH_ASSET_MACROS_H diff --git a/SHADE_Engine/src/Assets/SHAssetManager.cpp b/SHADE_Engine/src/Assets/SHAssetManager.cpp index 3fd71a8e..5d8a0f13 100644 --- a/SHADE_Engine/src/Assets/SHAssetManager.cpp +++ b/SHADE_Engine/src/Assets/SHAssetManager.cpp @@ -20,6 +20,7 @@ #include "Libraries/Loaders/SHTextureLoader.h" #include "Libraries/Loaders/SHShaderSourceLoader.h" #include "Libraries/Loaders/SHTextBasedLoader.h" +#include "Libraries/Loaders/SHFontLoader.h" //#include "Libraries/Compilers/SHMeshCompiler.h" #include "Libraries/Compilers/SHTextureCompiler.h" @@ -83,7 +84,7 @@ namespace SHADE AssetPath SHAssetManager::GenerateLocalPath(AssetPath path) noexcept { - if (!IsRecognised(path.extension().string().c_str())) + if (!SHFileSystem::IsRecognised(path.extension().string().c_str())) { //TODO:ASSERT UNRECOGNISED FILE TYPE return std::filesystem::path(); @@ -143,7 +144,29 @@ namespace SHADE return result; } - /**************************************************************************** + AssetType SHAssetManager::GetType(AssetID id) noexcept + { + if (assetCollection.contains(id)) + { + return assetCollection[id].type; + } + + SHLOG_WARNING("AssetID {}, does not belong to an asset", id) + + return AssetType::INVALID; + } + + std::optional SHAssetManager::GetAsset(AssetID id) noexcept + { + if (assetCollection.contains(id)) + { + return assetCollection[id]; + } + + return {}; + } + + /**************************************************************************** * \brief Create record for new asset. CAN ONLY CREATE FOR CUSTOM * ASSETS CREATED BY THE ENGINE. * @@ -161,21 +184,39 @@ namespace SHADE newPath += PREFAB_FOLDER; newPath += name; newPath += PREFAB_EXTENSION; - data = new SHPrefabAsset(); + { + auto prefab = new SHPrefabAsset(); + prefab->name = name; + + data = prefab; + } + break; case AssetType::SCENE: newPath += SCENE_FOLDER; newPath += name; newPath += SCENE_EXTENSION; - data = new SHSceneAsset(); + + { + auto scene = new SHSceneAsset(); + scene->name = name; + + data = scene; + } break; case AssetType::MATERIAL: newPath += MATERIAL_FOLDER; newPath += name; newPath += MATERIAL_EXTENSION; - data = new SHMaterialAsset(); + + { + auto material = new SHMaterialAsset(); + material->name = name; + + data = material; + } break; default: @@ -192,7 +233,7 @@ namespace SHADE false }; - assetCollection.insert({ + auto result = assetCollection.emplace( id, SHAsset( name, @@ -201,10 +242,13 @@ namespace SHADE newPath, false ) - }); + ); assetData.emplace(id, data); + SHAssetMetaHandler::WriteMetaData(asset); + SaveAsset(id); + return id; } @@ -338,7 +382,7 @@ namespace SHADE return result; } - void SHAssetManager::CompileAsset(AssetPath const& path) noexcept + void SHAssetManager::CompileAsset(AssetPath const& path, bool genMeta) noexcept { if (!std::filesystem::exists(path)) { @@ -349,7 +393,13 @@ namespace SHADE auto const ext{ path.extension().string() }; if (ext == GLSL_EXTENSION.data()) { - newPath = SHShaderSourceCompiler::LoadAndCompileShader(path).value(); + auto value { SHShaderSourceCompiler::LoadAndCompileShader(path) }; + if (!value.has_value()) + { + SHLOG_ERROR("Shader compile failed: {}", path.string()); + return; + } + newPath = value.value(); } else if (ext == GLTF_EXTENSION.data() || ext == FBX_EXTENSION.data()) { @@ -360,10 +410,37 @@ namespace SHADE std::string modelPath = path.string().substr(0, path.string().find_last_of('.')); modelPath += MODEL_EXTENSION; newPath = modelPath; + } + else if (ext == DDS_EXTENSION.data()) + { + auto pathGen = SHTextureCompiler::CompileTextureAsset(path); + if (!pathGen.has_value()) + { + SHLOG_ERROR("Texture Compilation Failed for: {}", path.string()); + return; + } + newPath = pathGen.value(); + } + else if (ext == TTF_EXTENSION.data()) + { + std::string command = FONT_COMPILER_EXE.data(); + command += " " + path.string(); + std::system(command.c_str()); - GenerateNewMeta(newPath); + std::string fontPath = path.string().substr(0, path.string().find_last_of('.')); + fontPath += FONT_EXTENSION; + newPath = fontPath; + } + else + { + SHLOG_WARNING("File Type compilation not yet Implemented: {}", path.string()); + return; } + if (genMeta) + { + GenerateNewMeta(newPath); + } } FolderPointer SHAssetManager::GetRootFolder() noexcept @@ -371,18 +448,12 @@ namespace SHADE return folderRoot; } - bool SHAssetManager::IsRecognised(char const* ext) noexcept - { - for (auto const& e : EXTENSIONS) - { - if (strcmp(ext, e.data()) == 0) - { - return true; - } - } - - return false; - } + void SHAssetManager::RefreshDirectory() noexcept + { + SHFileSystem::DestroyDirectory(folderRoot); + //assetCollection.clear(); + BuildAssetCollection(); + } SHAsset SHAssetManager::CreateAssetFromPath(AssetPath path) noexcept { @@ -396,51 +467,6 @@ namespace SHADE return result; } - void SHAssetManager::CompileAll() noexcept - { - std::vector paths; - - for (auto const& dir : std::filesystem::recursive_directory_iterator{ ASSET_ROOT }) - { - if (dir.is_regular_file()) - { - for (auto const& ext : EXTERNALS) - { - if (dir.path().extension().string() == ext.data()) - { - paths.push_back(dir.path()); - } - } - } - } - - for (auto const& path : paths) - { - AssetPath newPath; - auto const ext{ path.extension().string() }; - if (ext == GLSL_EXTENSION.data()) - { - newPath = SHShaderSourceCompiler::LoadAndCompileShader(path).value(); - } - else if (ext == DDS_EXTENSION.data()) - { - newPath = SHTextureCompiler::CompileTextureAsset(path).value(); - } - else if (ext == GLTF_EXTENSION.data() || ext == FBX_EXTENSION.data()) - { - std::string command = MODEL_COMPILER_EXE.data(); - command += " " + path.string(); - std::system(command.c_str()); - - std::string modelPath = path.string().substr(0, path.string().find_last_of('.')); - modelPath += MODEL_EXTENSION; - newPath = modelPath; - } - - GenerateNewMeta(newPath); - } - } - bool SHAssetManager::DeleteLocalFile(AssetPath path) noexcept { //TODO Move this to dedicated library @@ -457,6 +483,8 @@ namespace SHADE loaders[static_cast(AssetType::PREFAB)] = loaders[static_cast(AssetType::SCENE)]; loaders[static_cast(AssetType::MATERIAL)] = loaders[static_cast(AssetType::SCENE)]; loaders[static_cast(AssetType::MESH)] = nullptr; + loaders[static_cast(AssetType::SCRIPT)] = nullptr; + loaders[static_cast(AssetType::FONT)] = dynamic_cast(new SHFontLoader()); } /**************************************************************************** @@ -536,7 +564,7 @@ namespace SHADE { } - void SHAssetManager::GenerateNewMeta(AssetPath path) noexcept + std::optional SHAssetManager::GenerateNewMeta(AssetPath path) noexcept { auto const ext = path.extension().string(); if (ext == SHADER_BUILT_IN_EXTENSION.data()) @@ -552,12 +580,12 @@ namespace SHADE assetCollection.emplace(newAsset.id, newAsset); SHAssetMetaHandler::WriteMetaData(newAsset); } - else if (ext == TEXTURE_EXTENSION.data()) + else if (ext == TEXTURE_EXTENSION) { SHAsset newAsset{ path.stem().string(), - GenerateAssetID(AssetType::SHADER_BUILT_IN), - AssetType::SHADER_BUILT_IN, + GenerateAssetID(AssetType::TEXTURE), + AssetType::TEXTURE, path, false }; @@ -597,11 +625,63 @@ namespace SHADE SHAssetMetaHandler::WriteMetaData(assetCollection[newAsset.id]); } + else if (ext == SCRIPT_EXTENSION) + { + SHAsset newAsset{ + path.stem().string(), + GenerateAssetID(AssetType::SCRIPT), + AssetType::SCRIPT, + path, + false + }; + assetCollection.emplace(newAsset.id, newAsset); + SHAssetMetaHandler::WriteMetaData(newAsset); + + return newAsset.id; + } + else if (ext == SCENE_EXTENSION) + { + SHAsset newAsset{ + path.stem().string(), + GenerateAssetID(AssetType::SCENE), + AssetType::SCENE, + path, + false + }; + assetCollection.emplace(newAsset.id, newAsset); + SHAssetMetaHandler::WriteMetaData(newAsset); + + return newAsset.id; + } + else if (ext == FONT_EXTENSION) + { + SHAsset newAsset{ + path.stem().string(), + GenerateAssetID(AssetType::FONT), + AssetType::FONT, + path, + false + }; + assetCollection.emplace(newAsset.id, newAsset); + SHAssetMetaHandler::WriteMetaData(newAsset); + + return newAsset.id; + } } void SHAssetManager::BuildAssetCollection() noexcept { - SHFileSystem::BuildDirectory(ASSET_ROOT.data(), folderRoot, assetCollection); + std::vector toGenNew; + SHFileSystem::BuildDirectory(ASSET_ROOT.data(), folderRoot, assetCollection, toGenNew); + + for (auto& file : toGenNew) + { + auto newID{ GenerateNewMeta(file->path) }; + if (newID.has_value()) + { + file->assetMeta = &assetCollection[newID.value()]; + } + } for (auto& asset : std::ranges::views::values(assetCollection)) { @@ -611,6 +691,12 @@ namespace SHADE for (auto i{ 0 }; i < asset.subAssets.size(); ++i) { auto const id = asset.subAssets[i]->id; + + if (assetCollection.contains(id)) + { + continue; + } + assetCollection[id] = *asset.subAssets[i]; delete asset.subAssets[i]; asset.subAssets[i] = &assetCollection[id]; diff --git a/SHADE_Engine/src/Assets/SHAssetManager.h b/SHADE_Engine/src/Assets/SHAssetManager.h index ba10d84f..6cac6c71 100644 --- a/SHADE_Engine/src/Assets/SHAssetManager.h +++ b/SHADE_Engine/src/Assets/SHAssetManager.h @@ -50,6 +50,9 @@ namespace SHADE * \return const& to unordered_map ****************************************************************************/ static std::vector GetAllAssets() noexcept; + static std::optional GetAsset(AssetID id) noexcept; + + static AssetType GetType(AssetID id) noexcept; /**************************************************************************** * \brief Create record for new resource. CAN ONLY CREATE FOR CUSTOM @@ -87,9 +90,10 @@ namespace SHADE static std::vector GetAllDataOfType(AssetType type) noexcept; static std::vector GetAllRecordOfType(AssetType type) noexcept; - static void CompileAsset(AssetPath const& path) noexcept; + static void CompileAsset(AssetPath const& path, bool genMeta) noexcept; static FolderPointer GetRootFolder() noexcept; + static void RefreshDirectory() noexcept; private: @@ -98,16 +102,12 @@ namespace SHADE static SHAssetData* LoadData(SHAsset const& asset) noexcept; static SHAssetData* LoadSubData(SHAsset const& asset) noexcept; static void LoadNewData(AssetPath path) noexcept; - static void GenerateNewMeta(AssetPath path) noexcept; + static std::optional GenerateNewMeta(AssetPath path) noexcept; inline static void BuildAssetCollection() noexcept; - - static bool IsRecognised(char const*) noexcept; static SHAsset CreateAssetFromPath(AssetPath path) noexcept; - static void CompileAll() noexcept; - static bool DeleteLocalFile(AssetPath path) noexcept; //TODO use this function to create asset data internall at all calls to generate id diff --git a/SHADE_Engine/src/Assets/SHAssetMetaHandler.cpp b/SHADE_Engine/src/Assets/SHAssetMetaHandler.cpp index 9ae8cde2..b5c78514 100644 --- a/SHADE_Engine/src/Assets/SHAssetMetaHandler.cpp +++ b/SHADE_Engine/src/Assets/SHAssetMetaHandler.cpp @@ -38,7 +38,7 @@ namespace SHADE ****************************************************************************/ AssetType SHAssetMetaHandler::GetTypeFromExtension(AssetExtension ext) noexcept { - for (int i{0}; i < EXTENSIONS->size(); ++i) + for (auto i{0}; i < EXTENSIONS_COUNT; ++i) { if (strcmp(ext.c_str(), EXTENSIONS[i].data()) == 0) { @@ -98,6 +98,7 @@ namespace SHADE meta.type = static_cast(type); meta.isSubAsset = false; + meta.parent = 0; // Burn Line if (std::getline(metaFile, line)) @@ -137,6 +138,7 @@ namespace SHADE metaFile.close(); meta.path = path.parent_path().string() + "/" + path.stem().string(); + meta.path.make_preferred(); return meta; } diff --git a/SHADE_Engine/src/AudioSystem/SHAudioSystem.cpp b/SHADE_Engine/src/AudioSystem/SHAudioSystem.cpp index c3c7ef03..e98d895a 100644 --- a/SHADE_Engine/src/AudioSystem/SHAudioSystem.cpp +++ b/SHADE_Engine/src/AudioSystem/SHAudioSystem.cpp @@ -17,6 +17,8 @@ #include #include +const std::string AUDIO_FOLDER_PATH{ std::string(ASSET_ROOT)+ "/Audio/" }; + namespace SHADE { SHAudioSystem::SHAudioSystem() @@ -79,15 +81,35 @@ namespace SHADE //SHResourceManager::LoadAllAudio(system, soundList); - LoadBank("../../Assets/Audio/Master.bank"); - LoadBank("../../Assets/Audio/Master.strings.bank"); - //LoadBank("../../Assets/Audio/Music.bank"); - LoadBank("../../Assets/Audio/footsteps.bank"); + LoadBank((AUDIO_FOLDER_PATH + "Master.bank").data()); + LoadBank((AUDIO_FOLDER_PATH + "Master.strings.bank").data()); + //LoadBank((AUDIO_FOLDER_PATH + "Music.bank").data()); + //LoadBank((AUDIO_FOLDER_PATH + "footsteps.bank").data()); + LoadBank((AUDIO_FOLDER_PATH + "Music.bank").data()); + LoadBank((AUDIO_FOLDER_PATH + "SFX.bank").data()); + LoadBank((AUDIO_FOLDER_PATH + "UI.bank").data()); //auto clip = CreateAudioClip("event:/Characters/sfx_footsteps_human"); //clip->Play(); //PlayEventOnce("event:/Characters/sfx_footsteps_raccoon"); //PlayEventOnce("event:/SFX/Dawn/Dawn_Attack"); + + #ifdef SHEDITOR + + // Subscribe to Editor State Change Events + const std::shared_ptr ON_PLAY_RECEIVER{ std::make_shared>(this, &SHAudioSystem::onPlay) }; + const ReceiverPtr ON_PLAY_RECEIVER_PTR = std::dynamic_pointer_cast(ON_PLAY_RECEIVER); + SHEventManager::SubscribeTo(SH_EDITOR_ON_PLAY_EVENT, ON_PLAY_RECEIVER_PTR); + + const std::shared_ptr ON_STOP_RECEIVER{ std::make_shared>(this, &SHAudioSystem::onStop) }; + const ReceiverPtr ON_STOP_RECEIVER_PTR = std::dynamic_pointer_cast(ON_STOP_RECEIVER); + SHEventManager::SubscribeTo(SH_EDITOR_ON_STOP_EVENT, ON_STOP_RECEIVER_PTR); + + const std::shared_ptr ON_PAUSE_RECEIVER{ std::make_shared>(this, &SHAudioSystem::onPause) }; + const ReceiverPtr ON_PAUSE_RECEIVER_PTR = std::dynamic_pointer_cast(ON_PAUSE_RECEIVER); + SHEventManager::SubscribeTo(SH_EDITOR_ON_PAUSE_EVENT, ON_PAUSE_RECEIVER_PTR); + + #endif } void SHADE::SHAudioSystem::Run(double dt) @@ -177,7 +199,6 @@ namespace SHADE it->second->createInstance(&event); if (event) { - event->setVolume(masterVolume * (isSFX ? sfxVolume : bgmVolume)); if (spatial) { @@ -283,6 +304,7 @@ namespace SHADE if (channel->isPlaying(&isPlaying) == FMOD_OK && isPlaying) channel->stop(); } + masterGroup->stop(); } std::optional SHAudioSystem::GetEventGUID(const char* path) @@ -408,6 +430,7 @@ namespace SHADE void SHAudioSystem::SetPaused(bool pause) { paused = pause; + masterGroup->setPaused(pause); for (auto const& channel : audioChannels) { channel->setPaused(paused); @@ -550,6 +573,27 @@ namespace SHADE return value; } + SHEventHandle SHAudioSystem::onStop(SHEventPtr onStopEvent) + { + StopAllSounds(); + + return onStopEvent->handle; + } + + SHEventHandle SHAudioSystem::onPause(SHEventPtr onStopEvent) + { + SetPaused(true); + + return onStopEvent->handle; + } + SHEventHandle SHAudioSystem::onPlay(SHEventPtr onStopEvent) + { + if(GetPaused()) + SetPaused(false); + + return onStopEvent->handle; + } + } #pragma warning(pop) diff --git a/SHADE_Engine/src/AudioSystem/SHAudioSystem.h b/SHADE_Engine/src/AudioSystem/SHAudioSystem.h index f19fcc3b..777334e6 100644 --- a/SHADE_Engine/src/AudioSystem/SHAudioSystem.h +++ b/SHADE_Engine/src/AudioSystem/SHAudioSystem.h @@ -7,9 +7,11 @@ #include "ECS_Base/System/SHSystem.h" #include "ECS_Base/System/SHSystemRoutine.h" #include "ECS_Base/SHECSMacros.h" -#include "Math/SHMath.h" +#include "Math/Vector/SHVec3.h" #include #include +#include "Events/SHEvent.h" + #include "SH_API.h" #define AUDIO_SYS_MAX_CHANNELS 1024 @@ -104,6 +106,10 @@ namespace SHADE std::vector* denseListener; AudioClipID clipID = 0; + + SHEventHandle onPlay(SHEventPtr onStopEvent); + SHEventHandle onStop(SHEventPtr onStopEvent); + SHEventHandle onPause(SHEventPtr onStopEvent); }; } diff --git a/SHADE_Engine/src/Camera/SHCameraComponent.cpp b/SHADE_Engine/src/Camera/SHCameraComponent.cpp index ac451df5..7fc71db1 100644 --- a/SHADE_Engine/src/Camera/SHCameraComponent.cpp +++ b/SHADE_Engine/src/Camera/SHCameraComponent.cpp @@ -12,7 +12,7 @@ namespace SHADE :yaw(0.0f), pitch(0.0f), roll(0.0f) , width(1920.0f), height(1080.0f), zNear(0.01f), zFar(10000.0f), fov(90.0f), movementSpeed(1.0f), turnSpeed(0.5f) , perspProj(true), dirtyView(true), dirtyProj(true) - , viewMatrix(), projMatrix() + , viewMatrix(), perspProjMatrix(), orthoProjMatrix() , position(), offset() { ComponentFamily::GetID(); @@ -213,9 +213,22 @@ namespace SHADE const SHMatrix& SHCameraComponent::GetProjMatrix() const noexcept { - return projMatrix; + if (perspProj) + return perspProjMatrix; + else + return orthoProjMatrix; } + const SHMatrix& SHCameraComponent::GetOrthoMatrix() const noexcept + { + return orthoProjMatrix; + } + + const SHMatrix& SHCameraComponent::GetPerspectiveMatrix() const noexcept + { + return orthoProjMatrix; + } + //void SHCameraComponent::SetMainCamera(size_t directorCameraIndex) noexcept //{ // auto system = SHSystemManager::GetSystem(); diff --git a/SHADE_Engine/src/Camera/SHCameraComponent.h b/SHADE_Engine/src/Camera/SHCameraComponent.h index b778b8fa..b0999fe9 100644 --- a/SHADE_Engine/src/Camera/SHCameraComponent.h +++ b/SHADE_Engine/src/Camera/SHCameraComponent.h @@ -29,12 +29,14 @@ namespace SHADE SHMatrix viewMatrix; - SHMatrix projMatrix; + SHMatrix perspProjMatrix; + SHMatrix orthoProjMatrix; SHVec3 position; bool perspProj; SHVec3 offset; + public: @@ -78,6 +80,8 @@ namespace SHADE const SHMatrix& GetViewMatrix() const noexcept; const SHMatrix& GetProjMatrix() const noexcept; + const SHMatrix& GetOrthoMatrix() const noexcept; + const SHMatrix& GetPerspectiveMatrix() const noexcept; //void SetMainCamera(size_t cameraDirectorIndex = 0) noexcept; diff --git a/SHADE_Engine/src/Camera/SHCameraDirector.cpp b/SHADE_Engine/src/Camera/SHCameraDirector.cpp index 98341098..1f97160c 100644 --- a/SHADE_Engine/src/Camera/SHCameraDirector.cpp +++ b/SHADE_Engine/src/Camera/SHCameraDirector.cpp @@ -5,7 +5,7 @@ #include "ECS_Base/Managers/SHComponentManager.h" #include "ECS_Base/SHECSMacros.h" #include "ECS_Base/Managers/SHEntityManager.h" -#include "Tools/SHLog.h" +#include "Tools/Logger/SHLog.h" namespace SHADE { @@ -15,36 +15,45 @@ namespace SHADE } - SHMatrix SHCameraDirector::GetViewMatrix() const noexcept + SHMatrix const& SHCameraDirector::GetViewMatrix() const noexcept { return viewMatrix; } - SHMatrix SHCameraDirector::GetProjMatrix() const noexcept + SHMatrix const& SHCameraDirector::GetProjMatrix() const noexcept { return projMatrix; } - SHMatrix SHCameraDirector::GetVPMatrix() const noexcept + SHMatrix const& SHCameraDirector::GetVPMatrix() const noexcept { return projMatrix * viewMatrix; } + SHCameraComponent* SHCameraDirector::GetMainCameraComponent() noexcept + { + if (mainCameraEID == MAX_EID) + { + auto& dense = SHComponentManager::GetDense(); + if (dense.size() == 0) + { + return nullptr; + } + mainCameraEID = dense[0].GetEID(); + } + SHCameraComponent* camComponent = SHComponentManager::GetComponent_s(mainCameraEID); + if (!camComponent) + { + mainCameraEID = MAX_EID; + SHLOG_WARNING("Camera Director warning: Entity does not have a camera"); + return nullptr; + } + return camComponent; + } + + void SHCameraDirector::UpdateMatrix() noexcept { - if (mainCameraEID == MAX_EID) - { - auto& dense = SHComponentManager::GetDense(); - if (dense.size() == 0) - { - return; - } - mainCameraEID = dense[0].GetEID(); - } - SHCameraComponent* camComponent = SHComponentManager::GetComponent_s(mainCameraEID); - if (!camComponent) - { - SHLOG_WARNING("Camera Director warning: Entity does not have a camera"); - } - else + SHCameraComponent* camComponent = GetMainCameraComponent(); + if(camComponent) { viewMatrix = camComponent->GetViewMatrix(); projMatrix = camComponent->GetProjMatrix(); @@ -62,6 +71,24 @@ namespace SHADE mainCameraEID = camera.GetEID(); } + SHMatrix const& SHCameraDirector::GetOrthoMatrix() noexcept + { + + SHCameraComponent* camComponent = GetMainCameraComponent(); + if (camComponent) + return camComponent->GetOrthoMatrix(); + else + return SHMatrix::Identity; + } + + SHMatrix const& SHCameraDirector::GetPerspectiveMatrix() noexcept + { + SHCameraComponent* camComponent = GetMainCameraComponent(); + if (camComponent) + return camComponent->GetPerspectiveMatrix(); + else + return SHMatrix::Identity; + } } diff --git a/SHADE_Engine/src/Camera/SHCameraDirector.h b/SHADE_Engine/src/Camera/SHCameraDirector.h index 6d5404c5..8538a824 100644 --- a/SHADE_Engine/src/Camera/SHCameraDirector.h +++ b/SHADE_Engine/src/Camera/SHCameraDirector.h @@ -23,20 +23,20 @@ namespace SHADE EntityID transitionCameraEID; - SHMatrix GetViewMatrix() const noexcept; - SHMatrix GetProjMatrix() const noexcept; - SHMatrix GetVPMatrix() const noexcept; + SHMatrix const& GetViewMatrix() const noexcept; + SHMatrix const& GetProjMatrix() const noexcept; + SHMatrix const& GetVPMatrix() const noexcept; void UpdateMatrix() noexcept; void SetMainCamera(SHCameraComponent& cam) noexcept; - + SHMatrix const& GetOrthoMatrix() noexcept; + SHMatrix const& GetPerspectiveMatrix() noexcept; private: + SHMatrix viewMatrix; + SHMatrix projMatrix; + SHCameraComponent* GetMainCameraComponent() noexcept; - protected: - SHMatrix viewMatrix; - SHMatrix projMatrix; - }; typedef Handle DirectorHandle; diff --git a/SHADE_Engine/src/Camera/SHCameraSystem.cpp b/SHADE_Engine/src/Camera/SHCameraSystem.cpp index d5bd414d..489b05a1 100644 --- a/SHADE_Engine/src/Camera/SHCameraSystem.cpp +++ b/SHADE_Engine/src/Camera/SHCameraSystem.cpp @@ -7,13 +7,15 @@ #include "ECS_Base/Managers/SHComponentManager.h" #include "Math/Transform/SHTransformComponent.h" #include - +#include "Scene/SHSceneManager.h" namespace SHADE { void SHCameraSystem::UpdateEditorCamera(double dt) noexcept { + + auto& camera = editorCamera; SHVec3 view, right, UP; GetCameraAxis(camera, view, right, UP); @@ -61,63 +63,43 @@ namespace SHADE } UpdateCameraComponent(editorCamera); + } + + void SHCameraSystem::UpdateEditorArm(double dt,bool active ,SHVec3 const& targetPos) noexcept + { + if (active == false) + { + editorCameraArm.offset = SHVec3{0.0f}; + return; + } + + editorCamera.SetPosition(targetPos); + double mouseX, mouseY; + SHInputManager::GetMouseVelocity(&mouseX, &mouseY); + + editorCameraArm.pitch -= mouseY * dt * editorCamera.turnSpeed.x; + editorCameraArm.yaw -= mouseX * dt * editorCamera.turnSpeed.y; + + constexpr float pitchClamp = 85.0f; + + if (editorCameraArm.pitch > pitchClamp) + editorCameraArm.pitch = pitchClamp; + if (editorCameraArm.pitch < -pitchClamp) + editorCameraArm.pitch = -pitchClamp; + + editorCameraArm.armLength -= SHInputManager::GetMouseWheelVerticalDelta() * dt; + + if (editorCameraArm.armLength < 1.0f) + editorCameraArm.armLength = 1.0f; + + UpdatePivotArmComponent(editorCameraArm); + + editorCamera.offset = editorCameraArm.GetOffset(); + + CameraLookAt(editorCamera, targetPos); } - void SHCameraSystem::EditorCameraUpdate::Execute(double dt) noexcept - { - SHCameraSystem* system = static_cast(GetSystem()); - auto& camera = system->editorCamera; - SHVec3 view, right, UP; - system->GetCameraAxis(camera, view, right, UP); - if (SHInputManager::GetKey(SHInputManager::SH_KEYCODE::A)) - { - //std::cout << "Camera movement: "<UpdateCameraComponent(system->editorCamera); - - system->DecomposeViewMatrix(camera.viewMatrix, camera.pitch, camera.yaw, camera.roll, camera.position); - } void SHCameraSystem::Init(void) { @@ -125,7 +107,11 @@ namespace SHADE editorCamera.SetPitch(0.0f); editorCamera.SetYaw(0.0f); editorCamera.SetRoll(0.0f); + editorCamera.SetWidth(1080.0f); + editorCamera.SetHeight(720.0f); + editorCamera.SetFar(10000000.0f); editorCamera.movementSpeed = 2.0f; + editorCamera.perspProj = true; SHComponentManager::CreateComponentSparseSet(); SHComponentManager::CreateComponentSparseSet(); @@ -164,6 +150,9 @@ namespace SHADE void SHCameraSystem::UpdateCameraComponent(SHCameraComponent& camera) noexcept { + if (camera.isActive == false) + return; + if (SHComponentManager::HasComponent(camera.GetEID()) == true && &camera != &editorCamera) { auto transform = SHComponentManager::GetComponent(camera.GetEID()); @@ -183,11 +172,17 @@ namespace SHADE if (SHComponentManager::HasComponent(camera.GetEID())) { auto arm = SHComponentManager::GetComponent(camera.GetEID()); - camera.offset = arm->GetOffset(); - if(arm->lookAtCameraOrigin) - CameraLookAt(camera, camera.position); + if (arm->isActive == true) + { + camera.offset = arm->GetOffset(); + if (arm->lookAtCameraOrigin) + CameraLookAt(camera, camera.position); + } + } + + SHVec3 view, right, UP; @@ -219,39 +214,43 @@ namespace SHADE } if (camera.dirtyProj == true) { - if (camera.perspProj == true) - { + //Perspective projection matrix. const float ASPECT_RATIO = (camera.GetAspectRatio()); const float TAN_HALF_FOV = tan(SHMath::DegreesToRadians(camera.fov) * 0.5f); - camera.projMatrix = SHMatrix::Identity; - camera.projMatrix(0, 0) = 1.0f / (ASPECT_RATIO * TAN_HALF_FOV); - camera.projMatrix(1, 1) = 1.0f / TAN_HALF_FOV; - camera.projMatrix(2, 2) = camera.zFar / (camera.zFar - camera.zNear); - camera.projMatrix(3, 3) = 0.0f; - - camera.projMatrix(3, 2) = 1.0f; - camera.projMatrix(2, 3) = -(camera.zFar * camera.zNear) / (camera.zFar - camera.zNear); + camera.perspProjMatrix = SHMatrix::Identity; + camera.perspProjMatrix(0, 0) = 1.0f / (ASPECT_RATIO * TAN_HALF_FOV); + camera.perspProjMatrix(1, 1) = 1.0f / TAN_HALF_FOV; + camera.perspProjMatrix(2, 2) = camera.zFar / (camera.zFar - camera.zNear); + camera.perspProjMatrix(3, 3) = 0.0f; + + camera.perspProjMatrix(3, 2) = 1.0f; + camera.perspProjMatrix(2, 3) = -(camera.zFar * camera.zNear) / (camera.zFar - camera.zNear); - camera.dirtyProj = false; - } - else - { - //const float R = camera.width * 0.5f; - //const float L = -R; - //const float T = camera.height * 0.5f; - //const float B = -T; + + //Orthographic projection matrix - //camera.projMatrix = SHMatrix::Identity; - //camera.projMatrix(0, 0) = 2.0f / (R - L); - //camera.projMatrix(1, 1) = 2.0f / (B - T); - //camera.projMatrix(2, 2) = 1.0f / (camera.zFar - camera.zNear); - //camera.projMatrix(3, 0) = -(R + L) / (R - L); - //camera.projMatrix(3, 1) = -(B + T) / (B - T); - //camera.projMatrix(3, 2) = -camera.zNear / (camera.zFar - camera.zNear); + const float right = camera.GetWidth() * 0.5f; + const float left = -right; + const float top = camera.GetHeight() * 0.5f; + const float btm = -top; + const float n = camera.GetNear(); + const float f = camera.GetFar(); + + camera.orthoProjMatrix = SHMatrix::Identity; + camera.orthoProjMatrix(0, 0) = 2.0f / (right - left); + camera.orthoProjMatrix(1, 1) = 2.0f / (btm - top); + camera.orthoProjMatrix(2, 2) = 1.0f / (f-n); + camera.orthoProjMatrix(0, 3) = -(right + left) / (right - left); + camera.orthoProjMatrix(1, 3) = -(btm + top) / (btm - top); + camera.orthoProjMatrix(2, 3) = -n / (f-n); + camera.orthoProjMatrix(3, 3) = 1.0f; + + //camera.orthoProjMatrix = SHMatrix::OrthographicRH(camera.GetWidth(), camera.GetHeight(), camera.GetNear(), camera.GetFar()); + //camera.projMatrix.Transpose(); camera.dirtyProj = false; - } + } } @@ -261,8 +260,6 @@ namespace SHADE SHVec3 up = { 0.0f,1.0f,0.0f }; - - target = SHVec3::RotateX(target, SHMath::DegreesToRadians(camera.pitch)); target = SHVec3::RotateY(target, SHMath::DegreesToRadians(camera.yaw)); target += camera.position; @@ -287,13 +284,18 @@ namespace SHADE for (auto& pivot : pivotDense) { - system->UpdatePivotArmComponent(pivot); + if(SHSceneManager::CheckNodeAndComponentsActive(pivot.GetEID())) + system->UpdatePivotArmComponent(pivot); } for (auto& cam : dense) { - system->UpdateCameraComponent(cam); + if (SHSceneManager::CheckNodeAndComponentsActive(cam.GetEID())) + system->UpdateCameraComponent(cam); } + + + for (auto& handle : system->directorHandleList) { handle->UpdateMatrix(); @@ -399,7 +401,7 @@ namespace SHADE SHVec3 up = { 0.0f,1.0f,0.0f }; - ////SHVec3::RotateZ(target, SHMath::DegreesToRadians(camera.roll)); + //SHVec3::RotateZ(target, SHMath::DegreesToRadians(camera.roll)); //target = SHVec3::Normalise(target); diff --git a/SHADE_Engine/src/Camera/SHCameraSystem.h b/SHADE_Engine/src/Camera/SHCameraSystem.h index 98fd442f..9c8157f4 100644 --- a/SHADE_Engine/src/Camera/SHCameraSystem.h +++ b/SHADE_Engine/src/Camera/SHCameraSystem.h @@ -5,6 +5,7 @@ #include "ECS_Base/System/SHSystemRoutine.h" #include "Resource/SHResourceLibrary.h" #include "SHCameraDirector.h" +#include "SHCameraArmComponent.h" #include "SH_API.h" namespace SHADE @@ -18,6 +19,7 @@ namespace SHADE //A camera component that represents editor camera. //This is not tied to any entity. Hence this EID should not be used. SHCameraComponent editorCamera; + SHCameraArmComponent editorCameraArm; SHResourceLibrary directorLibrary; std::vector directorHandleList; @@ -34,15 +36,6 @@ namespace SHADE void Init (void); void Exit (void); - class SH_API EditorCameraUpdate final : public SHSystemRoutine - { - public: - - EditorCameraUpdate() : SHSystemRoutine("Editor Camera Update", true) { }; - virtual void Execute(double dt) noexcept override final; - - }; - friend class EditorCameraUpdate; class SH_API CameraSystemUpdate final: public SHSystemRoutine { @@ -63,6 +56,7 @@ namespace SHADE void DecomposeViewMatrix(SHMatrix const& matrix, float& pitch, float& yaw, float& roll, SHVec3& pos) noexcept; void SetCameraViewMatrix(SHCameraComponent& camera, SHMatrix const& viewMatrix) noexcept; void CameraLookAt(SHCameraComponent& camera, SHVec3 target) noexcept; + void UpdateEditorArm(double dt,bool active ,SHVec3 const& targetPos) noexcept; }; diff --git a/SHADE_Engine/src/ECS_Base/Managers/SHEntityManager.cpp b/SHADE_Engine/src/ECS_Base/Managers/SHEntityManager.cpp index 6ce4f277..1c603c57 100644 --- a/SHADE_Engine/src/ECS_Base/Managers/SHEntityManager.cpp +++ b/SHADE_Engine/src/ECS_Base/Managers/SHEntityManager.cpp @@ -146,7 +146,7 @@ namespace SHADE //Call all the children to Destroy themselves first before the parent is destroyed. if (entityVec[eIndex]) { - auto& children = SHSceneManager::GetCurrentSceneGraph().GetChildren(eID); + auto children = SHSceneManager::GetCurrentSceneGraph().GetChildren(eID); for (auto& child : children) { DestroyEntity(child->GetEntityID()); @@ -218,7 +218,7 @@ namespace SHADE EntityID result = MAX_EID; for (auto& entity : entityVec) { - if (entity->name == name) + if (entity && entity->name == name) result = entity->GetEID(); } return result; diff --git a/SHADE_Engine/src/ECS_Base/UnitTesting/SHECSUnitTest.cpp b/SHADE_Engine/src/ECS_Base/UnitTesting/SHECSUnitTest.cpp index 050d0c2e..db41d848 100644 --- a/SHADE_Engine/src/ECS_Base/UnitTesting/SHECSUnitTest.cpp +++ b/SHADE_Engine/src/ECS_Base/UnitTesting/SHECSUnitTest.cpp @@ -5,7 +5,7 @@ #include "../Managers/SHSystemManager.h" #include "SHTestComponents.h" #include "SHTestSystems.h" -#include "Tools/SHLogger.h" +#include "Tools/Logger/SHLogger.h" diff --git a/SHADE_Engine/src/Editor/Command/SHCommandManager.cpp b/SHADE_Engine/src/Editor/Command/SHCommandManager.cpp index 3c0ee5dd..b86f9247 100644 --- a/SHADE_Engine/src/Editor/Command/SHCommandManager.cpp +++ b/SHADE_Engine/src/Editor/Command/SHCommandManager.cpp @@ -10,63 +10,102 @@ namespace SHADE { - SHCommandManager::CommandStack SHCommandManager::undoStack{}; - SHCommandManager::CommandStack SHCommandManager::redoStack{}; + + SHCommandManager::CommandStack SHCommandManager::undoStack(defaultStackSize); + SHCommandManager::CommandStack SHCommandManager::redoStack(defaultStackSize); + SHCommandManager::CommandStack SHCommandManager::secondaryUndoStack(defaultStackSize); + SHCommandManager::CommandStack SHCommandManager::secondaryRedoStack(defaultStackSize); + + SHCommandManager::CommandStackPtr SHCommandManager::pCurrUndoStack(&undoStack); + SHCommandManager::CommandStackPtr SHCommandManager::pCurrRedoStack(&redoStack); void SHCommandManager::PerformCommand(BaseCommandPtr commandPtr, bool const& overrideValue) { - redoStack = CommandStack(); + *pCurrRedoStack = CommandStack(defaultStackSize); commandPtr->Execute(); - if (overrideValue && !undoStack.empty()) + if (overrideValue && !pCurrUndoStack->Empty()) { - undoStack.top()->Merge(commandPtr); + pCurrUndoStack->Top()->Merge(commandPtr); } else { - undoStack.push(commandPtr); + pCurrUndoStack->Push(commandPtr); } } void SHCommandManager::RegisterCommand(BaseCommandPtr commandPtr) { - undoStack.push(commandPtr); + pCurrUndoStack->Push(commandPtr); } void SHCommandManager::UndoCommand() { - if (undoStack.empty()) + if (pCurrUndoStack->Empty()) return; - undoStack.top()->Undo(); - redoStack.push(undoStack.top()); - undoStack.pop(); + pCurrUndoStack->Top()->Undo(); + pCurrRedoStack->Push(pCurrUndoStack->Top()); + pCurrUndoStack->Pop(); } void SHCommandManager::RedoCommand() { - if (redoStack.empty()) + if (pCurrRedoStack->Empty()) return; - redoStack.top()->Execute(); - undoStack.push(redoStack.top()); - redoStack.pop(); + pCurrRedoStack->Top()->Execute(); + pCurrUndoStack->Push(pCurrRedoStack->Top()); + pCurrRedoStack->Pop(); } std::size_t SHCommandManager::GetUndoStackSize() { - return undoStack.size(); + return pCurrUndoStack->Size(); } std::size_t SHCommandManager::GetRedoStackSize() { - return redoStack.size(); + return pCurrRedoStack->Size(); } void SHCommandManager::PopLatestCommandFromRedoStack() { - redoStack.pop(); + pCurrRedoStack->Pop(); } void SHCommandManager::PopLatestCommandFromUndoStack() { - undoStack.pop(); + pCurrUndoStack->Pop(); } + + void SHCommandManager::SwapStacks() + { + if (pCurrUndoStack == &undoStack) + { + pCurrUndoStack = &secondaryUndoStack; + } + else + { + secondaryUndoStack.Clear(); + pCurrUndoStack = &undoStack; + } + + if (pCurrRedoStack == &redoStack) + { + pCurrRedoStack = &secondaryRedoStack; + } + else + { + secondaryRedoStack.Clear(); + pCurrRedoStack = &redoStack; + } + } + + void SHCommandManager::ClearAll() + { + undoStack.Clear(); + redoStack.Clear(); + + secondaryUndoStack.Clear(); + secondaryRedoStack.Clear(); + } + }//namespace SHADE diff --git a/SHADE_Engine/src/Editor/Command/SHCommandManager.h b/SHADE_Engine/src/Editor/Command/SHCommandManager.h index a514c464..178347b5 100644 --- a/SHADE_Engine/src/Editor/Command/SHCommandManager.h +++ b/SHADE_Engine/src/Editor/Command/SHCommandManager.h @@ -10,6 +10,7 @@ //#==============================================================# #include "SHCommand.hpp" #include "SH_API.h" +#include "Tools/SHDeque.h" namespace SHADE { @@ -22,7 +23,8 @@ namespace SHADE using BaseCommandPtr = std::shared_ptr; template using SHCommandPtr = std::shared_ptr>; - using CommandStack = std::stack; + using CommandStack = SHDeque; + using CommandStackPtr = CommandStack*; static void PerformCommand(BaseCommandPtr commandPtr, bool const& overrideValue = false); static void RegisterCommand(BaseCommandPtr commandPtr); @@ -34,8 +36,17 @@ namespace SHADE static void PopLatestCommandFromRedoStack(); static void PopLatestCommandFromUndoStack(); + static void SwapStacks(); + static void ClearAll(); + + static constexpr CommandStack::SizeType defaultStackSize = 100; private: + static CommandStackPtr pCurrUndoStack; + static CommandStackPtr pCurrRedoStack; + static CommandStack undoStack; + static CommandStack secondaryUndoStack; static CommandStack redoStack; + static CommandStack secondaryRedoStack; }; }//namespace SHADE diff --git a/SHADE_Engine/src/Editor/DragDrop/SHDragDrop.cpp b/SHADE_Engine/src/Editor/DragDrop/SHDragDrop.cpp index 97fd8a22..4c56d032 100644 --- a/SHADE_Engine/src/Editor/DragDrop/SHDragDrop.cpp +++ b/SHADE_Engine/src/Editor/DragDrop/SHDragDrop.cpp @@ -5,6 +5,7 @@ namespace SHADE { bool SHDragDrop::hasDragDrop = false; + SHDragDrop::DragDropTag SHDragDrop::currentDragDropTag{}; bool SHDragDrop::BeginSource(ImGuiDragDropFlags const flags) { return ImGui::BeginDragDropSource(flags); } @@ -16,6 +17,10 @@ namespace SHADE { return ImGui::BeginDragDropTarget(); } void SHDragDrop::EndTarget() - { ImGui::EndDragDropTarget(); hasDragDrop = false;} + { + ImGui::EndDragDropTarget(); + hasDragDrop = false; + currentDragDropTag = {}; + } } diff --git a/SHADE_Engine/src/Editor/DragDrop/SHDragDrop.hpp b/SHADE_Engine/src/Editor/DragDrop/SHDragDrop.hpp index ce0615e1..50930e4f 100644 --- a/SHADE_Engine/src/Editor/DragDrop/SHDragDrop.hpp +++ b/SHADE_Engine/src/Editor/DragDrop/SHDragDrop.hpp @@ -19,9 +19,13 @@ namespace SHADE static void EndSource(); template - static bool SetPayload(std::string_view const type, T* object, ImGuiCond const cond = 0) + static bool SetPayload(DragDropTag const& type, T* object, ImGuiCond const cond = 0) { hasDragDrop = ImGui::SetDragDropPayload(type.data(), static_cast(object), sizeof(T), cond); + + hasDragDrop = true; + currentDragDropTag = type; + return hasDragDrop; } @@ -32,13 +36,16 @@ namespace SHADE static void EndTarget(); template - static T* AcceptPayload(std::string_view const type, ImGuiDragDropFlags const flags = 0) + static T* AcceptPayload(DragDropTag const& type, ImGuiDragDropFlags const flags = 0) { if (const ImGuiPayload* payload = ImGui::AcceptDragDropPayload(type.data(), flags)) + { return static_cast(payload->Data); + } return nullptr; } static bool hasDragDrop; + static DragDropTag currentDragDropTag; }; } \ No newline at end of file diff --git a/SHADE_Engine/src/Editor/EditorWindow/AssetBrowser/SHAssetBrowser.cpp b/SHADE_Engine/src/Editor/EditorWindow/AssetBrowser/SHAssetBrowser.cpp index 37b8ecd4..66b3c962 100644 --- a/SHADE_Engine/src/Editor/EditorWindow/AssetBrowser/SHAssetBrowser.cpp +++ b/SHADE_Engine/src/Editor/EditorWindow/AssetBrowser/SHAssetBrowser.cpp @@ -13,11 +13,12 @@ #include "Editor/SHEditor.h" #include "Editor/DragDrop/SHDragDrop.hpp" #include "Editor/EditorWindow/MaterialInspector/SHMaterialInspector.h" +#include "Editor/EditorWindow/SHEditorWindowManager.h" namespace SHADE { SHAssetBrowser::SHAssetBrowser() - :SHEditorWindow("\xee\x8b\x87 Asset Browser", ImGuiWindowFlags_MenuBar), rootFolder(SHAssetManager::GetRootFolder()), prevFolder(rootFolder), currentFolder(rootFolder), assetBeingCreated(std::nullopt) + :SHEditorWindow("\xee\x8b\x87 Asset Browser", ImGuiWindowFlags_MenuBar), rootFolder(SHAssetManager::GetRootFolder()), prevFolder(rootFolder), currentFolder(rootFolder) { } @@ -34,23 +35,48 @@ namespace SHADE RecursivelyDrawTree(rootFolder); DrawMenuBar(); DrawCurrentFolder(); + DrawAssetBeingCreated(); + } ImGui::End(); + if(refreshQueued) + Refresh(); + } + + void SHAssetBrowser::QueueRefresh() noexcept + { + refreshQueued = true; + } + + void SHAssetBrowser::Refresh() noexcept + { + SHAssetManager::RefreshDirectory(); + rootFolder = SHAssetManager::GetRootFolder(); + refreshQueued = false; } void SHAssetBrowser::DrawMenuBar() { if (ImGui::BeginMenuBar()) { - + if(ImGui::SmallButton(ICON_MD_SYNC)) + { + QueueRefresh(); + } + if(ImGui::SmallButton(ICON_FA_CIRCLE_PLUS)) + { + isAssetBeingCreated = true; + } ImGui::EndMenuBar(); } } + //if !compiled, set genMeta to true + ImRect SHAssetBrowser::RecursivelyDrawTree(FolderPointer folder) { auto const& subFolders = folder->subFolders; - auto const& files = folder->files; + auto files = folder->files; const bool isSelected = std::ranges::find(selectedFolders, folder) != selectedFolders.end(); ImGuiTreeNodeFlags flags = (subFolders.empty() && files.empty()) ? ImGuiTreeNodeFlags_Leaf : ImGuiTreeNodeFlags_OpenOnArrow; if (isSelected) @@ -62,21 +88,10 @@ namespace SHADE ImGuiID folderID = ImGui::GetItemID(); const ImRect nodeRect = ImRect(ImGui::GetItemRectMin(), ImGui::GetItemRectMax()); - if (ImGui::BeginPopupContextItem()) - { - if (ImGui::BeginMenu("Create Asset")) - { - //TODO: Change to rttr type enum align - if (ImGui::Selectable("Material")) - { - assetBeingCreated = { folder, AssetType::MATERIAL, "New Material" }; - ImGui::TreeNodeSetOpen(folderID, true); - isOpen = true; - } - ImGui::EndMenu(); - } - ImGui::EndPopup(); - } + //if (ImGui::BeginPopupContextItem()) + //{ + // ImGui::EndPopup(); + //} if (ImGui::IsItemClicked()) { @@ -94,25 +109,21 @@ namespace SHADE ImVec2 vertLineEnd = vertLineStart; for (auto const& subFolder : subFolders) { - const float horizontalLineSize = 8.0f; + const float horizontalLineSize = (subFolder->subFolders.empty() && subFolder->files.empty()) ? 25.0f : 8.0f; const ImRect childRect = RecursivelyDrawTree(subFolder); const float midPoint = (childRect.Min.y + childRect.Max.y) * 0.5f; drawList->AddLine(ImVec2(vertLineStart.x, midPoint), ImVec2(vertLineStart.x + horizontalLineSize, midPoint), treeLineColor, 1); vertLineEnd.y = midPoint; } - for (auto const& file : files) + for (auto& file : files) { - if(file.assetMeta == nullptr) - continue; - const float horizontalLineSize = 25.0f; - const ImRect childRect = DrawFile(file.assetMeta); + const float horizontalLineSize = (file.assetMeta && !file.assetMeta->subAssets.empty()) ? 8.0f : 25.0f; + const ImRect childRect = DrawFile(file); const float midPoint = (childRect.Min.y + childRect.Max.y) * 0.5f; drawList->AddLine(ImVec2(vertLineStart.x, midPoint), ImVec2(vertLineStart.x + horizontalLineSize, midPoint), treeLineColor, 1); vertLineEnd.y = midPoint; } drawList->AddLine(vertLineStart, vertLineEnd, treeLineColor, 1); - if(assetBeingCreated.has_value() && std::get<0>(assetBeingCreated.value()) == folder) - DrawAssetBeingCreated(); ImGui::TreePop(); } @@ -148,7 +159,36 @@ namespace SHADE //} } - ImRect SHAssetBrowser::DrawFile(SHAsset const* const asset) noexcept + ImRect SHAssetBrowser::DrawFile(SHFile& file) noexcept + { + if(file.compilable) + { + ImGuiTreeNodeFlags flags = ImGuiTreeNodeFlags_Leaf; + static constexpr std::string_view icon = ICON_MD_FILE_PRESENT; + ImGui::PushID(file.name.data()); + bool const isOpen = ImGui::TreeNodeEx(file.name.data(), flags, "%s %s%s", icon.data(), file.name.data(), file.ext.data()); + const ImRect nodeRect = ImRect(ImGui::GetItemRectMin(), ImGui::GetItemRectMax()); + if(ImGui::BeginPopupContextItem()) + { + if(ImGui::Selectable("Compile")) + { + SHAssetManager::CompileAsset(file.path, !file.compiled); + QueueRefresh(); + } + ImGui::EndPopup(); + } + ImGui::TreePop(); + ImGui::PopID(); + return nodeRect; + } + if(file.assetMeta) + { + const ImRect childRect = DrawAsset(file.assetMeta, file.ext); + return childRect; + } + } + + ImRect SHAssetBrowser::DrawAsset(SHAsset const* const asset, FileExt const& ext /*= ""*/) noexcept { if (asset == nullptr) return ImRect(ImGui::GetItemRectMin(), ImGui::GetItemRectMax()); @@ -173,7 +213,7 @@ namespace SHADE default:; } - bool const isOpen = ImGui::TreeNodeEx(asset, flags, "%s %s", icon.data(), asset->name.data()); + bool const isOpen = ImGui::TreeNodeEx(asset, flags, "%s %s%s", icon.data(), asset->name.data(), ext.data()); const ImRect nodeRect = ImRect(ImGui::GetItemRectMin(), ImGui::GetItemRectMax()); if (SHDragDrop::BeginSource()) { @@ -212,7 +252,6 @@ namespace SHADE case AssetType::MAX_COUNT: break; default:; } - } //TODO: Combine Draw asset and Draw Folder recursive drawing @@ -227,7 +266,7 @@ namespace SHADE for(auto const& subAsset : asset->subAssets) { const float horizontalLineSize = 25.0f; - const ImRect childRect = DrawFile(subAsset); + const ImRect childRect = DrawAsset(subAsset); const float midPoint = (childRect.Min.y + childRect.Max.y) * 0.5f; drawList->AddLine(ImVec2(vertLineStart.x, midPoint), ImVec2(vertLineStart.x + horizontalLineSize, midPoint), treeLineColor, 1); vertLineEnd.y = midPoint; @@ -240,19 +279,52 @@ namespace SHADE void SHAssetBrowser::DrawAssetBeingCreated() noexcept { - if (!assetBeingCreated.has_value()) - return; - auto& path = std::get<0>(assetBeingCreated.value()); - auto& type = std::get<1>(assetBeingCreated.value()); - auto& assetName = std::get<2>(assetBeingCreated.value()); - if (ImGui::InputText("##newAssetName", &assetName, ImGuiInputTextFlags_EnterReturnsTrue)) + if(isAssetBeingCreated) + ImGui::OpenPopup(newAssetPopup.data()); + + if(ImGui::BeginPopupModal(newAssetPopup.data(), &isAssetBeingCreated)) { - AssetID assetId = SHAssetManager::CreateNewAsset(type, assetName); - if (auto matInspector = SHEditorWindowManager::GetEditorWindow()) + ImGui::RadioButton("Material", true); + ImGui::SameLine(); + if (ImGui::InputText("##newAssetName", &nameOfAssetBeingCreated, ImGuiInputTextFlags_EnterReturnsTrue | ImGuiInputTextFlags_CharsNoBlank | ImGuiInputTextFlags_AutoSelectAll)) { - matInspector->OpenMaterial(assetId, true); + AssetID assetId = SHAssetManager::CreateNewAsset(AssetType::MATERIAL, nameOfAssetBeingCreated); + if (auto matInspector = SHEditorWindowManager::GetEditorWindow()) + { + matInspector->OpenMaterial(assetId, true); + } + nameOfAssetBeingCreated.clear(); + QueueRefresh(); + isAssetBeingCreated = false; + ImGui::CloseCurrentPopup(); } - assetBeingCreated.reset(); + ImGui::EndPopup(); } + //if (ImGui::BeginMenu("Create Asset")) + //{ + // //TODO: Change to rttr type enum align + // if (ImGui::Selectable("Material")) + // { + // assetBeingCreated = { folder, AssetType::MATERIAL, "NewMaterial" }; + // ImGui::TreeNodeSetOpen(folderID, true); + // isOpen = true; + // } + // ImGui::EndMenu(); + //} + //if (!assetBeingCreated.has_value()) + // return; + //auto& path = std::get<0>(assetBeingCreated.value()); + //auto& type = std::get<1>(assetBeingCreated.value()); + //auto& assetName = std::get<2>(assetBeingCreated.value()); + //if (ImGui::InputText("##newAssetName", &assetName, ImGuiInputTextFlags_EnterReturnsTrue | ImGuiInputTextFlags_CharsNoBlank | ImGuiInputTextFlags_AutoSelectAll)) + //{ + // AssetID assetId = SHAssetManager::CreateNewAsset(type, assetName); + // if (auto matInspector = SHEditorWindowManager::GetEditorWindow()) + // { + // matInspector->OpenMaterial(assetId, true); + // } + // assetBeingCreated.reset(); + // QueueRefresh(); + //} } } diff --git a/SHADE_Engine/src/Editor/EditorWindow/AssetBrowser/SHAssetBrowser.h b/SHADE_Engine/src/Editor/EditorWindow/AssetBrowser/SHAssetBrowser.h index 00023ebe..6d3c5eb4 100644 --- a/SHADE_Engine/src/Editor/EditorWindow/AssetBrowser/SHAssetBrowser.h +++ b/SHADE_Engine/src/Editor/EditorWindow/AssetBrowser/SHAssetBrowser.h @@ -10,24 +10,29 @@ namespace SHADE class SHAssetBrowser final : public SHEditorWindow { public: - using AssetEntry = std::tuple; SHAssetBrowser(); void Init(); void Update(); - void Refresh(); + void QueueRefresh() noexcept; private: void DrawMenuBar(); ImRect RecursivelyDrawTree(FolderPointer folder); void DrawCurrentFolder(); - ImRect DrawFile(SHAsset const* const asset) noexcept; + ImRect DrawFile(SHFile& file) noexcept; + ImRect DrawAsset(SHAsset const* const asset, FileExt const& ext = "") noexcept; void DrawAssetBeingCreated() noexcept; + void Refresh() noexcept; + FolderPointer rootFolder, prevFolder, currentFolder; - std::optional assetBeingCreated; std::vector selectedFolders; std::vector selectedAssets; static constexpr float tileWidth = 50.0f; + bool refreshQueued = false; + bool isAssetBeingCreated = false; + static constexpr std::string_view newAssetPopup = "Create New Asset"; + std::string nameOfAssetBeingCreated; }; } diff --git a/SHADE_Engine/src/Editor/EditorWindow/HierarchyPanel/SHHierarchyPanel.cpp b/SHADE_Engine/src/Editor/EditorWindow/HierarchyPanel/SHHierarchyPanel.cpp index ff65ba58..2235f831 100644 --- a/SHADE_Engine/src/Editor/EditorWindow/HierarchyPanel/SHHierarchyPanel.cpp +++ b/SHADE_Engine/src/Editor/EditorWindow/HierarchyPanel/SHHierarchyPanel.cpp @@ -15,6 +15,7 @@ #include "Editor/DragDrop/SHDragDrop.hpp" #include "Tools/SHException.h" #include "Editor/IconsMaterialDesign.h" +#include "SHHierarchyPanelCommands.h" //#==============================================================# //|| Library Includes || @@ -22,7 +23,7 @@ #include #include "Serialization/SHSerialization.h" -#include "Tools/SHClipboardUtilities.h" +#include "Tools/Utilities/SHClipboardUtilities.h" namespace SHADE @@ -105,14 +106,24 @@ namespace SHADE PasteEntities(editor->selectedEntities.back()); } } + if(ImGui::IsKeyReleased(ImGuiKey_Delete)) + { + DeleteSelectedEntities(); + } } } if(ImGui::IsWindowHovered() && !ImGui::IsAnyItemHovered() && ImGui::IsMouseReleased(ImGuiMouseButton_Left)) { - ParentSelectedEntities(MAX_EID, draggingEntities); - draggingEntities.clear(); - ImGui::ClearDragDrop(); + if(ImGui::IsDragDropActive()) + { + if (SHDragDrop::currentDragDropTag == SHDragDrop::DRAG_EID) + { + ParentSelectedEntities(MAX_EID, draggingEntities); + draggingEntities.clear(); + ImGui::ClearDragDrop(); + } + } } ImGui::End(); } @@ -225,8 +236,9 @@ namespace SHADE { ParentSelectedEntities(eid, draggingEntities); draggingEntities.clear(); - SHDragDrop::EndTarget(); + //ImGui::ClearDragDrop(); } + SHDragDrop::EndTarget(); } //Context menu @@ -255,9 +267,10 @@ namespace SHADE PasteEntities(eid); skipFrame = true; } - if (ImGui::Selectable(std::format("{} Delete", ICON_MD_DELETE).data())) + if (ImGui::Selectable(std::format("{} Delete selected", ICON_MD_DELETE).data())) { - SHEntityManager::DestroyEntity(eid); + //SHEntityManager::DestroyEntity(eid); + DeleteSelectedEntities(); } if ((currentNode->GetParent() != sceneGraph.GetRoot()) && ImGui::Selectable(std::format("{} Unparent Selected", ICON_MD_NORTH_WEST).data())) @@ -282,9 +295,12 @@ namespace SHADE } else editor->selectedEntities.clear(); } - else if (!ImGui::IsKeyDown(ImGuiKey_LeftCtrl)) - editor->selectedEntities.clear(); - editor->selectedEntities.push_back(eid); + else + { + if (!ImGui::IsKeyDown(ImGuiKey_LeftCtrl)) + editor->selectedEntities.clear(); + editor->selectedEntities.push_back(eid); + } }//if not selected else { @@ -330,13 +346,16 @@ namespace SHADE SHEntityManager::CreateEntity(MAX_EID, "DefaultChild", parentEID); } - void SHHierarchyPanel::ParentSelectedEntities(EntityID parentEID, std::vector const& entities) const noexcept + void SHHierarchyPanel::ParentSelectedEntities(EntityID parentEID, std::vector const& entities) noexcept { auto const& sceneGraph = SHSceneManager::GetCurrentSceneGraph(); + + std::vector entitiesToParent = CleanUpEIDList(entities); + //auto const editor = SHSystemManager::GetSystem(); SHEntityParentCommand::EntityParentData entityParentData; std::vector parentedEIDS; - for (auto const& eid : entities) + for (auto const& eid : entitiesToParent) { if(eid == parentEID) continue; @@ -365,14 +384,16 @@ namespace SHADE if (eid == beginEID || eid == endEID) { startSelecting = true; - editor->selectedEntities.push_back(eid); + if(std::ranges::find(editor->selectedEntities, eid) == editor->selectedEntities.end()) + editor->selectedEntities.push_back(eid); } } else { if (!endSelecting) { - editor->selectedEntities.push_back(eid); + if (std::ranges::find(editor->selectedEntities, eid) == editor->selectedEntities.end()) + editor->selectedEntities.push_back(eid); if (eid == endEID || eid == beginEID) { endSelecting = true; @@ -397,47 +418,38 @@ namespace SHADE void SHHierarchyPanel::CopySelectedEntities() { const auto editor = SHSystemManager::GetSystem(); - SHClipboardUtilities::WriteToClipboard(SHSerialization::SerializeEntitiesToString(editor->selectedEntities)); + std::vector entitiesToCopy = CleanUpEIDList(editor->selectedEntities); + SHClipboardUtilities::WriteToClipboard(SHSerialization::SerializeEntitiesToString(entitiesToCopy)); } void SHHierarchyPanel::PasteEntities(EntityID parentEID) { - SetScrollTo(SHSerialization::DeserializeEntitiesFromString(SHClipboardUtilities::GetDataFromClipboard(), parentEID)); + //SetScrollTo(SHSerialization::DeserializeEntitiesFromString(SHClipboardUtilities::GetDataFromClipboard(), parentEID).front()); + SHCommandManager::PerformCommand(std::make_shared(SHClipboardUtilities::GetDataFromClipboard(), parentEID)); } - void SHCreateEntityCommand::Execute() + void SHHierarchyPanel::DeleteSelectedEntities() { - EntityID newEID = SHEntityManager::CreateEntity(eid); - if (eid == MAX_EID) - eid = newEID; + const auto editor = SHSystemManager::GetSystem(); + std::vector entitiesToDelete = CleanUpEIDList(editor->selectedEntities); + SHCommandManager::PerformCommand(std::make_shared(entitiesToDelete)); } - void SHCreateEntityCommand::Undo() + std::vector SHHierarchyPanel::CleanUpEIDList(std::vector const& entities) { - SHEntityManager::DestroyEntity(eid); + std::vector result; + auto const& sceneGraph = SHSceneManager::GetCurrentSceneGraph(); + + std::ranges::copy_if(entities, std::back_inserter(result), [&sceneGraph, &entities](EntityID const& eid) + { + EntityID parentEID = sceneGraph.GetParent(eid)->GetEntityID(); + if (parentEID == MAX_EID) + return true; + if (std::ranges::find(entities, parentEID) == entities.end()) + return true; + return false; + }); + return result; } - void SHEntityParentCommand::Execute() - { - auto& sceneGraph = SHSceneManager::GetCurrentSceneGraph(); - for (auto const& eid : entities) - { - if (entityParentData[eid].newParentEID == MAX_EID) - sceneGraph.SetParent(eid, nullptr); - else - sceneGraph.SetParent(eid, entityParentData[eid].newParentEID); - } - } - - void SHEntityParentCommand::Undo() - { - auto& sceneGraph = SHSceneManager::GetCurrentSceneGraph(); - for (auto const& eid : entities) - { - if (entityParentData[eid].oldParentEID == MAX_EID) - sceneGraph.SetParent(eid, nullptr); - else - sceneGraph.SetParent(eid, entityParentData[eid].oldParentEID); - } - } }//namespace SHADE diff --git a/SHADE_Engine/src/Editor/EditorWindow/HierarchyPanel/SHHierarchyPanel.h b/SHADE_Engine/src/Editor/EditorWindow/HierarchyPanel/SHHierarchyPanel.h index 64f841d6..9278a0a3 100644 --- a/SHADE_Engine/src/Editor/EditorWindow/HierarchyPanel/SHHierarchyPanel.h +++ b/SHADE_Engine/src/Editor/EditorWindow/HierarchyPanel/SHHierarchyPanel.h @@ -10,7 +10,6 @@ #include "imgui_internal.h" #include "ECS_Base/SHECSMacros.h" #include "Editor/EditorWindow/SHEditorWindow.h" -#include "Editor/Command/SHCommand.hpp" namespace SHADE { class SHSceneNode; @@ -28,11 +27,13 @@ namespace SHADE void DrawMenuBar() const noexcept; ImRect RecursivelyDrawEntityNode(SHSceneNode* const); void CreateChildEntity(EntityID parentEID) const noexcept; - void ParentSelectedEntities(EntityID parentEID, std::vector const& entities) const noexcept; + void ParentSelectedEntities(EntityID parentEID, std::vector const& entities) noexcept; void SelectRangeOfEntities(EntityID beginEID, EntityID EndEID); void SelectAllEntities(); void CopySelectedEntities(); void PasteEntities(EntityID parentEID = MAX_EID); + void DeleteSelectedEntities(); + std::vector CleanUpEIDList(std::vector const& entities); bool skipFrame = false; std::string filter; bool isAnyNodeSelected = false; @@ -41,33 +42,4 @@ namespace SHADE };//class SHHierarchyPanel - //Might move to a different file - class SHCreateEntityCommand final : public SHBaseCommand - { - public: - void Execute() override; - void Undo() override; - private: - EntityID eid = MAX_EID; - }; - - class SHEntityParentCommand final : public SHBaseCommand - { - public: - struct Data - { - EntityID oldParentEID = MAX_EID; - EntityID newParentEID = MAX_EID; - }; - using EntityParentData = std::unordered_map; - - SHEntityParentCommand(std::vector entityIDs, EntityParentData inEntityParentData):entities(entityIDs),entityParentData(inEntityParentData){} - - void Execute() override; - void Undo() override; - private: - std::vector entities; - std::unordered_map entityParentData; - }; - }//namespace SHADE diff --git a/SHADE_Engine/src/Editor/EditorWindow/HierarchyPanel/SHHierarchyPanelCommands.cpp b/SHADE_Engine/src/Editor/EditorWindow/HierarchyPanel/SHHierarchyPanelCommands.cpp new file mode 100644 index 00000000..78545829 --- /dev/null +++ b/SHADE_Engine/src/Editor/EditorWindow/HierarchyPanel/SHHierarchyPanelCommands.cpp @@ -0,0 +1,84 @@ +#include "SHpch.h" +#include "SHHierarchyPanelCommands.h" +#include "ECS_Base/Managers/SHEntityManager.h" +#include "Scene/SHSceneManager.h" +#include "Serialization/SHSerialization.h" +#include "SHHierarchyPanel.h" +#include "Editor/EditorWindow/SHEditorWindowManager.h" + +namespace SHADE +{ + void SHCreateEntityCommand::Execute() + { + EntityID newEID = SHEntityManager::CreateEntity(eid); + if (eid == MAX_EID) + eid = newEID; + } + + void SHCreateEntityCommand::Undo() + { + SHEntityManager::DestroyEntity(eid); + } + + void SHEntityParentCommand::Execute() + { + auto& sceneGraph = SHSceneManager::GetCurrentSceneGraph(); + for (auto const& eid : entities) + { + if (entityParentData[eid].newParentEID == MAX_EID) + sceneGraph.SetParent(eid, nullptr); + else + sceneGraph.SetParent(eid, entityParentData[eid].newParentEID); + } + } + + void SHEntityParentCommand::Undo() + { + auto& sceneGraph = SHSceneManager::GetCurrentSceneGraph(); + for (auto const& eid : entities) + { + if (entityParentData[eid].oldParentEID == MAX_EID) + sceneGraph.SetParent(eid, nullptr); + else + sceneGraph.SetParent(eid, entityParentData[eid].oldParentEID); + } + } + + void SHPasteEntitiesCommand::Execute() + { + data.createdEntities.clear(); + data.createdEntities = SHSerialization::DeserializeEntitiesFromString(data.entityData, data.parentEID); + data.entityData = SHSerialization::ResolveSerializedEntityIndices(data.entityData, data.createdEntities); + SHEditorWindowManager::GetEditorWindow()->SetScrollTo(data.createdEntities.begin()->second); + } + + void SHPasteEntitiesCommand::Undo() + { + for (auto const& [oldEID, newEID] : data.createdEntities) + { + SHEntityManager::DestroyEntity(newEID); + } + } + + void SHDeleteEntitiesCommand::Execute() + { + if(!data.createdEntities.empty()) + { + for(auto& eid : data.entitiesToDelete) + { + eid = data.createdEntities[eid]; + } + } + data.entityData = SHSerialization::SerializeEntitiesToString(data.entitiesToDelete); + for (auto const& eid : data.entitiesToDelete) + { + SHEntityManager::DestroyEntity(eid); + } + } + + void SHDeleteEntitiesCommand::Undo() + { + data.createdEntities = SHSerialization::DeserializeEntitiesFromString(data.entityData); + data.entityData = SHSerialization::ResolveSerializedEntityIndices(data.entityData, data.createdEntities); + } +} diff --git a/SHADE_Engine/src/Editor/EditorWindow/HierarchyPanel/SHHierarchyPanelCommands.h b/SHADE_Engine/src/Editor/EditorWindow/HierarchyPanel/SHHierarchyPanelCommands.h new file mode 100644 index 00000000..fccd9489 --- /dev/null +++ b/SHADE_Engine/src/Editor/EditorWindow/HierarchyPanel/SHHierarchyPanelCommands.h @@ -0,0 +1,72 @@ +#pragma once + +#include + +#include "ECS_Base/SHECSMacros.h" +#include "Editor/Command/SHCommand.hpp" +#include "Serialization/SHSerialization.h" +namespace SHADE +{ + class SHCreateEntityCommand final : public SHBaseCommand + { + public: + void Execute() override; + void Undo() override; + private: + EntityID eid = MAX_EID; + }; + + class SHEntityParentCommand final : public SHBaseCommand + { + public: + struct Data + { + EntityID oldParentEID = MAX_EID; + EntityID newParentEID = MAX_EID; + }; + using EntityParentData = std::unordered_map; + + SHEntityParentCommand(std::vector entityIDs, EntityParentData inEntityParentData) :entities(entityIDs), entityParentData(inEntityParentData) {} + + void Execute() override; + void Undo() override; + private: + std::vector entities{}; + std::unordered_map entityParentData{}; + }; + + class SHPasteEntitiesCommand final : public SHBaseCommand + { + public: + struct Data + { + EntityID parentEID{MAX_EID}; + std::string entityData{}; + SHSerialization::CreatedEntitiesList createdEntities{}; + }; + SHPasteEntitiesCommand() = delete; + SHPasteEntitiesCommand(std::string const& serializedEntityData, EntityID parentEid = MAX_EID):data({parentEid, serializedEntityData, {}}){} + + void Execute() override; + void Undo() override; + private: + Data data; + }; + + class SHDeleteEntitiesCommand final : public SHBaseCommand + { + public: + struct Data + { + std::vector entitiesToDelete{}; + SHSerialization::CreatedEntitiesList createdEntities{}; + std::string entityData{}; + }; + SHDeleteEntitiesCommand() = delete; + SHDeleteEntitiesCommand(std::vector entitiesToBeDeleted): data{entitiesToBeDeleted}{} + void Execute() override; + void Undo() override; + private: + Data data; + }; +} diff --git a/SHADE_Engine/src/Editor/EditorWindow/Inspector/SHEditorComponentView.hpp b/SHADE_Engine/src/Editor/EditorWindow/Inspector/SHEditorComponentView.hpp index 85d10c1a..0f3dce3e 100644 --- a/SHADE_Engine/src/Editor/EditorWindow/Inspector/SHEditorComponentView.hpp +++ b/SHADE_Engine/src/Editor/EditorWindow/Inspector/SHEditorComponentView.hpp @@ -15,7 +15,7 @@ #include "Editor/SHEditorWidgets.hpp" #include "Graphics/MiddleEnd/Interface/SHRenderable.h" #include "Graphics/MiddleEnd/Lights/SHLightComponent.h" -#include "Physics/Components/SHColliderComponent.h" +#include "Physics/Interface/SHColliderComponent.h" #include "Reflection/SHReflectionMetadata.h" #include "Resource/SHResourceManager.h" @@ -68,10 +68,10 @@ namespace SHADE { if (!component) return; + const auto componentType = rttr::type::get(); ImGui::PushID(SHFamilyID::GetID()); SHEditorWidgets::CheckBox("##IsActive", [component]() {return component->isActive; }, [component](bool const& active) {component->isActive = active; }, "Is Component Active"); - ImGui::PopID(); ImGui::SameLine(); if (ImGui::CollapsingHeader(componentType.get_name().data())) { @@ -216,6 +216,96 @@ namespace SHADE } } else DrawContextMenu(component); + ImGui::PopID(); + + } + + template<> + static void DrawComponent(SHRigidBodyComponent* component) + { + if(!component) + return; + ImGui::PushID(SHFamilyID::GetID()); + + const auto componentType = rttr::type::get(); + SHEditorWidgets::CheckBox("##IsActive", [component]() {return component->isActive; }, [component](bool const& active) {component->isActive = active; }, "Is Component Active"); + ImGui::SameLine(); + if (ImGui::CollapsingHeader(componentType.get_name().data())) + { + DrawContextMenu(component); + + SHRigidBodyComponent::Type rbType = component->GetType(); + + auto enumAlign = rttr::type::get().get_enumeration(); + auto names = enumAlign.get_names(); + std::vector list; + for (auto const& name : names) + list.push_back(name.data()); + SHEditorWidgets::ComboBox("Type", list, [component] {return static_cast(component->GetType()); }, [component, enumAlign](int const& idx) + { + auto values = enumAlign.get_values(); + auto it = std::next(values.begin(), idx); + component->SetType((*it).convert()); + }, "RigidBody Type"); + + + if(rbType == SHRigidBodyComponent::Type::DYNAMIC) //Dynamic only fields + { + SHEditorWidgets::CheckBox("Use Gravity", [component]{return component->IsGravityEnabled();}, [component](bool const& value){component->SetGravityEnabled(value);}, "Gravity"); + //SHEditorWidgets::DragFloat("Mass", [component] {return component->GetMass(); }, [component](float const& value) {component->SetMass(value); }, "Mass"); + } + if (rbType == SHRigidBodyComponent::Type::DYNAMIC || rbType == SHRigidBodyComponent::Type::KINEMATIC) //Dynamic or Kinematic only fields + { + SHEditorWidgets::DragFloat("Drag", [component] {return component->GetDrag(); }, [component](float const& value) {component->SetDrag(value); }, "Drag"); + SHEditorWidgets::DragFloat("Angular Drag", [component] {return component->GetAngularDrag(); }, [component](float const& value) {component->SetAngularDrag(value); }, "Angular Drag"); + + SHEditorWidgets::CheckBox("Interpolate", [component] {return component->IsInterpolating(); }, [component](bool const& value) {component->SetInterpolate(value); }, "Interpolate"); + + SHEditorWidgets::BeginPanel(std::format("{} Constraints", ICON_FA_LOCK).data(), { ImGui::GetContentRegionAvail().x, ImGui::GetContentRegionAvail().y }); + + SHEditorWidgets::TextLabel("Freeze Position"); + ImGui::PushID("FreezePos"); + SHEditorWidgets::CheckBox("X", [component] {return component->GetFreezePositionX(); }, [component](bool const& value) {component->SetFreezePositionX(value); }, "Freeze Position - X"); ImGui::SameLine(); + SHEditorWidgets::CheckBox("Y", [component] {return component->GetFreezePositionY(); }, [component](bool const& value) {component->SetFreezePositionY(value); }, "Freeze Position - Y"); ImGui::SameLine(); + SHEditorWidgets::CheckBox("Z", [component] {return component->GetFreezePositionZ(); }, [component](bool const& value) {component->SetFreezePositionZ(value); }, "Freeze Position - Z"); + ImGui::PopID(); + + + SHEditorWidgets::TextLabel("Freeze Rotation"); + ImGui::PushID("FreezeRot"); + SHEditorWidgets::CheckBox("X", [component] {return component->GetFreezeRotationX(); }, [component](bool const& value) {component->SetFreezeRotationX(value); }, "Freeze Rotation - X"); ImGui::SameLine(); + SHEditorWidgets::CheckBox("Y", [component] {return component->GetFreezeRotationY(); }, [component](bool const& value) {component->SetFreezeRotationY(value); }, "Freeze Rotation - Y"); ImGui::SameLine(); + SHEditorWidgets::CheckBox("Z", [component] {return component->GetFreezeRotationZ(); }, [component](bool const& value) {component->SetFreezeRotationZ(value); }, "Freeze Rotation - Z"); + ImGui::PopID(); + + SHEditorWidgets::EndPanel(); + } + + //Debug Info (Read-Only) + if(ImGui::CollapsingHeader("Debug Information", ImGuiTreeNodeFlags_DefaultOpen))//Dynamic or Kinematic only fields + { + SHEditorWidgets::DragFloat("Mass", [component] { return component->GetMass(); }, [](float value){}, "Mass", 0.1f, 0.0f, std::numeric_limits::infinity(), "%.3f", ImGuiSliderFlags_ReadOnly); + SHEditorWidgets::DragVec3("Position", { "X", "Y", "Z" }, [component] {return component->GetPosition(); }, [](SHVec3 const& value) {}, false, "Position", 0.1f, "%.3f", 0.0f, 0.0f, ImGuiSliderFlags_ReadOnly); + SHEditorWidgets::DragVec3("Rotation", { "X", "Y", "Z" }, [component] {return component->GetRotation(); }, [](SHVec3 const& value) {}, false, "Rotation", 0.1f, "%.3f", 0.0f, 0.0f, ImGuiSliderFlags_ReadOnly); + if (rbType == SHRigidBodyComponent::Type::DYNAMIC || rbType == SHRigidBodyComponent::Type::KINEMATIC) //Dynamic or Kinematic only fields + { + SHEditorWidgets::DragVec3("Velocity", { "X", "Y", "Z" }, [component] {return component->GetLinearVelocity(); }, [](SHVec3 const& value) {}, false, "Linear Velocity", 0.1f, "%.3f", 0.0f, 0.0f, ImGuiSliderFlags_ReadOnly); + SHEditorWidgets::DragVec3("Angular\nVelocity", { "X", "Y", "Z" }, [component] {return component->GetAngularVelocity(); }, [](SHVec3 const& value) {}, false, "Angular Velocity", 0.1f, "%.3f", 0.0f, 0.0f, ImGuiSliderFlags_ReadOnly); + } + if (rbType == SHRigidBodyComponent::Type::DYNAMIC) //Dynamic only fields + { + SHEditorWidgets::DragVec3("Force", { "X", "Y", "Z" }, [component] {return component->GetForce(); }, [](SHVec3 const& value) {}, false, "Force", 0.1f, "%.3f", 0.0f, 0.0f, ImGuiSliderFlags_ReadOnly); + SHEditorWidgets::DragVec3("Torque", { "X", "Y", "Z" }, [component] {return component->GetTorque(); }, [](SHVec3 const& value) {}, false, "Torque", 0.1f, "%.3f", 0.0f, 0.0f, ImGuiSliderFlags_ReadOnly); + SHEditorWidgets::CheckBox("Is Asleep", [component] {return component->GetIsSleeping(); }, [](bool value) {}, "If the Rigid Body is asleep"); + } + } + + } + else + { + DrawContextMenu(component); + } + ImGui::PopID(); } template<> @@ -223,6 +313,7 @@ namespace SHADE { if (!component) return; + ImGui::PushID(SHFamilyID::GetID()); const auto componentType = rttr::type::get(*component); SHEditorWidgets::CheckBox("##IsActive", [component]() {return component->isActive; }, [component](bool const& active) {component->isActive = active; }, "Is Component Active"); @@ -242,25 +333,25 @@ namespace SHADE auto cursorPos = ImGui::GetCursorPos(); //collider->IsTrigger - if (collider->GetType() == SHCollisionShape::Type::BOX) { SHEditorWidgets::BeginPanel(std::format("{} Box #{}", ICON_FA_CUBE, i).data(), { ImGui::GetContentRegionAvail().x, ImGui::GetContentRegionAvail().y }); - auto box = reinterpret_cast(collider->GetShape()); + + const auto* BOX = reinterpret_cast(collider->GetShape()); SHEditorWidgets::DragVec3 ( "Half Extents", { "X", "Y", "Z" }, - [box] { return box->GetRelativeExtents(); }, + [BOX] { return BOX->GetRelativeExtents(); }, [collider](SHVec3 const& vec) { collider->SetBoundingBox(vec); }); } else if (collider->GetType() == SHCollisionShape::Type::SPHERE) { SHEditorWidgets::BeginPanel(std::format("{} Sphere #{}", ICON_MD_CIRCLE, i).data(), { ImGui::GetContentRegionAvail().x, ImGui::GetContentRegionAvail().y }); - auto sphere = reinterpret_cast(collider->GetShape()); + const auto* SPHERE = reinterpret_cast(collider->GetShape()); SHEditorWidgets::DragFloat ( "Radius", - [sphere] { return sphere->GetRelativeRadius(); }, + [SPHERE] { return SPHERE->GetRelativeRadius(); }, [collider](float const& value) { collider->SetBoundingSphere(value); }); } else if (collider->GetType() == SHCollisionShape::Type::CAPSULE) @@ -269,32 +360,30 @@ namespace SHADE } { + SHEditorWidgets::CheckBox("Is Trigger", [collider] { return collider->IsTrigger(); }, [collider](bool value) { collider->SetIsTrigger(value); }); + + if(ImGui::CollapsingHeader("Physics Material")) + { + SHEditorWidgets::DragFloat("Friction", [collider] { return collider->GetFriction(); }, [collider](float value) { collider->SetFriction(value); }, "Friction", 0.05f, 0.0f, 1.0f); + SHEditorWidgets::DragFloat("Bounciness", [collider] { return collider->GetBounciness(); }, [collider](float value) { collider->SetBounciness(value); }, "Bounciness", 0.05f, 0.0f, 1.0f); + SHEditorWidgets::DragFloat("Mass Density", [collider] { return collider->GetDensity(); }, [collider](float value) { collider->SetDensity(value); }, "Mass Density", 0.1f, 0.0f); + } + SHEditorWidgets::BeginPanel("Offsets",{ ImGui::GetContentRegionAvail().x, 30.0f }); SHEditorWidgets::DragVec3("Position", { "X", "Y", "Z" }, [&collider] {return collider->GetPositionOffset(); }, [&collider](SHVec3 const& vec) {collider->SetPositionOffset(vec); }); SHEditorWidgets::DragVec3("Rotation", { "X", "Y", "Z" }, [&collider] { auto offset = collider->GetRotationOffset(); - offset.x = SHMath::RadiansToDegrees(offset.x); - offset.y = SHMath::RadiansToDegrees(offset.y); - offset.z = SHMath::RadiansToDegrees(offset.z); return offset; }, [&collider](SHVec3 const& vec) { - const SHVec3 vecInRad - { - SHMath::DegreesToRadians(vec.x) - , SHMath::DegreesToRadians(vec.y) - , SHMath::DegreesToRadians(vec.z) - }; - collider->SetRotationOffset(vecInRad); - }); + collider->SetRotationOffset(vec); + }, true); SHEditorWidgets::EndPanel(); } - SHEditorWidgets::CheckBox("Is Trigger", [collider] { return collider->IsTrigger(); }, [collider](bool value) { collider->SetIsTrigger(value); }); - if (ImGui::Button(std::format("{} Remove Collider #{}", ICON_MD_REMOVE, i).data())) { colliderToDelete = i; @@ -322,6 +411,7 @@ namespace SHADE } } else DrawContextMenu(component); + ImGui::PopID(); } template<> @@ -329,6 +419,7 @@ namespace SHADE { if (!component) return; + ImGui::PushID(SHFamilyID::GetID()); const auto componentType = rttr::type::get(*component); SHEditorWidgets::CheckBox("##IsActive", [component]() {return component->isActive; }, [component](bool const& active) {component->isActive = active; }, "Is Component Active"); ImGui::SameLine(); @@ -352,6 +443,7 @@ namespace SHADE { DrawContextMenu(component); } + ImGui::PopID(); } template<> @@ -359,6 +451,7 @@ namespace SHADE { if (!component) return; + ImGui::PushID(SHFamilyID::GetID()); const auto componentType = rttr::type::get(*component); SHEditorWidgets::CheckBox("##IsActive", [component]() {return component->isActive; }, [component](bool const& active) {component->isActive = active; }, "Is Component Active"); ImGui::SameLine(); @@ -367,27 +460,39 @@ namespace SHADE DrawContextMenu(component); Handle const& mesh = component->GetMesh(); Handle const& mat = component->GetMaterial(); - - SHEditorWidgets::DragDropReadOnlyField("Mesh", std::to_string(SHResourceManager::GetAssetID(mesh).value_or(0)).data(), [component]() + const auto MESH_NAME = SHResourceManager::GetAssetName(mesh).value_or(""); + SHEditorWidgets::DragDropReadOnlyField("Mesh", MESH_NAME, [component]() { Handle const& mesh = component->GetMesh(); return SHResourceManager::GetAssetID(mesh).value_or(0); }, [component](AssetID const& id) { + if(SHAssetManager::GetType(id) != AssetType::MESH) + { + SHLOG_WARNING("Attempted to assign non mesh asset to Renderable Mesh property!") + return; + } component->SetMesh(SHResourceManager::LoadOrGet(id)); SHResourceManager::FinaliseChanges(); }, SHDragDrop::DRAG_RESOURCE); - SHEditorWidgets::DragDropReadOnlyField("Material", mat ? std::to_string(SHResourceManager::GetAssetID(mat->GetBaseMaterial()).value_or(0)).data() : "", [component]() - { - Handle const& mat = component->GetMaterial(); - if(!mat) - return static_cast(0); - return SHResourceManager::GetAssetID(mat->GetBaseMaterial()).value_or(0); - }, + const auto MAT_NAME = mat ? SHResourceManager::GetAssetName(mat->GetBaseMaterial()).value_or("") : ""; + SHEditorWidgets::DragDropReadOnlyField("Material", MAT_NAME, + [component]() + { + Handle const& mat = component->GetMaterial(); + if (!mat) + return static_cast(0); + return SHResourceManager::GetAssetID(mat->GetBaseMaterial()).value_or(0); + }, [component](AssetID const& id) { + if (SHAssetManager::GetType(id) != AssetType::MATERIAL) + { + SHLOG_WARNING("Attempted to assign non material asset to Renderable Mesh property!") + return; + } auto gfxSystem = SHSystemManager::GetSystem(); component->SetMaterial(gfxSystem->AddOrGetBaseMaterialInstance(SHResourceManager::LoadOrGet(id))); }, SHDragDrop::DRAG_RESOURCE); @@ -396,5 +501,54 @@ namespace SHADE { DrawContextMenu(component); } + ImGui::PopID(); + } + + template<> + static void DrawComponent(SHTextRenderableComponent* component) + { + if (!component) + return; + ImGui::PushID(SHFamilyID::GetID()); + const auto componentType = rttr::type::get(*component); + SHEditorWidgets::CheckBox("##IsActive", [component]() {return component->isActive; }, [component](bool const& active) {component->isActive = active; }, "Is Component Active"); + ImGui::SameLine(); + if (ImGui::CollapsingHeader(componentType.get_name().data())) + { + DrawContextMenu(component); + Handle const& font = component->GetFont(); + const auto FONT_NAME = SHResourceManager::GetAssetName(font).value_or(""); + SHEditorWidgets::DragDropReadOnlyField("Font", FONT_NAME, [component]() + { + Handle const& font = component->GetFont(); + return SHResourceManager::GetAssetID(font).value_or(0); + }, + [component](AssetID const& id) + { + if (SHAssetManager::GetType(id) != AssetType::FONT) + { + SHLOG_WARNING("Attempted to assign non font asset to TextRendererComponent Font property!") + return; + } + component->SetFont(SHResourceManager::LoadOrGet(id)); + SHResourceManager::FinaliseChanges(); + }, SHDragDrop::DRAG_RESOURCE); + + SHEditorWidgets::InputText("Text", + [component](void) + { + return component->GetText(); + }, + [component](std::string const& val) + { + component->SetText(val); + } + ); + } + else + { + DrawContextMenu(component); + } + ImGui::PopID(); } } diff --git a/SHADE_Engine/src/Editor/EditorWindow/Inspector/SHEditorInspector.cpp b/SHADE_Engine/src/Editor/EditorWindow/Inspector/SHEditorInspector.cpp index 2fecae25..c4287e6f 100644 --- a/SHADE_Engine/src/Editor/EditorWindow/Inspector/SHEditorInspector.cpp +++ b/SHADE_Engine/src/Editor/EditorWindow/Inspector/SHEditorInspector.cpp @@ -14,11 +14,15 @@ #include "Scripting/SHScriptEngine.h" #include "ECS_Base/Managers/SHSystemManager.h" -#include "Physics/Components/SHRigidBodyComponent.h" -#include "Physics/Components/SHColliderComponent.h" +#include "Physics/Interface/SHRigidBodyComponent.h" +#include "Physics/Interface/SHColliderComponent.h" #include "Camera/SHCameraComponent.h" #include "Camera/SHCameraArmComponent.h" +#include "UI/SHUIComponent.h" +#include "UI/SHCanvasComponent.h" #include "SHEditorComponentView.h" +#include "AudioSystem/SHAudioListenerComponent.h" +#include "Graphics/MiddleEnd/TextRendering/SHTextRenderableComponent.h" namespace SHADE { @@ -93,13 +97,14 @@ namespace SHADE { EntityID const& eid = editor->selectedEntities[0]; SHEntity* entity = SHEntityManager::GetEntityByID(eid); - if(!entity) + SHSceneNode* entityNode = SHSceneManager::GetCurrentSceneGraph().GetNode(eid); + if(!entity || !entityNode) { ImGui::End(); return; } ImGui::TextColored(ImGuiColors::green, "EID: %zu", eid); - SHEditorWidgets::CheckBox("##IsActive", [entity]()->bool {return entity->GetActive(); }, [entity](bool const& active) {entity->SetActive(active); }); + SHEditorWidgets::CheckBox("##IsActive", [entityNode]()->bool {return entityNode->IsActive(); }, [entityNode](bool const& active) {entityNode->SetActive(active); }); ImGui::SameLine(); ImGui::InputText("##EntityName", &entity->name); @@ -127,10 +132,23 @@ namespace SHADE if (auto cameraComponent = SHComponentManager::GetComponent_s(eid)) { DrawComponent(cameraComponent); - }if (auto cameraArmComponent = SHComponentManager::GetComponent_s(eid)) + } + if (auto cameraArmComponent = SHComponentManager::GetComponent_s(eid)) { DrawComponent(cameraArmComponent); } + if (auto canvasComponent= SHComponentManager::GetComponent_s(eid)) + { + DrawComponent(canvasComponent); + } + if (auto uiComponent = SHComponentManager::GetComponent_s(eid)) + { + DrawComponent(uiComponent); + } + if (auto textRendererComponent = SHComponentManager::GetComponent_s(eid)) + { + DrawComponent(textRendererComponent); + } ImGui::Separator(); // Render Scripts SHScriptEngine* scriptEngine = static_cast(SHSystemManager::GetSystem()); @@ -142,12 +160,14 @@ namespace SHADE DrawAddComponentButton(eid); DrawAddComponentButton(eid); DrawAddComponentButton(eid); + DrawAddComponentButton(eid); // Components that require Transforms DrawAddComponentWithEnforcedComponentButton(eid); DrawAddComponentWithEnforcedComponentButton(eid); DrawAddComponentWithEnforcedComponentButton(eid); + DrawAddComponentWithEnforcedComponentButton(eid); ImGui::EndMenu(); diff --git a/SHADE_Engine/src/Editor/EditorWindow/MaterialInspector/SHMaterialInspector.cpp b/SHADE_Engine/src/Editor/EditorWindow/MaterialInspector/SHMaterialInspector.cpp index 13ecb9fa..9dbb9542 100644 --- a/SHADE_Engine/src/Editor/EditorWindow/MaterialInspector/SHMaterialInspector.cpp +++ b/SHADE_Engine/src/Editor/EditorWindow/MaterialInspector/SHMaterialInspector.cpp @@ -78,7 +78,26 @@ namespace SHADE ImGui::BeginDisabled(!isDirty); if(ImGui::Button(std::format("{} Save", ICON_MD_SAVE).data())) { - //save + auto gfxSystem = SHSystemManager::GetSystem(); + // Replace Material if it's been instantiated + auto matHandle = SHResourceManager::Get(currentViewedMaterial); + if (matHandle) + { + // - Get Shader Modules + auto vertShader = SHResourceManager::LoadOrGet(currentMatSpec->vertexShader); + auto fragShader = SHResourceManager::LoadOrGet(currentMatSpec->fragShader); + if (vertShader && fragShader && gfxSystem) + { + // - Retrieve pipeline from pipeline library + auto renderPass = gfxSystem->GetPrimaryRenderpass(); + auto subPass = renderPass->GetSubpass(currentMatSpec->subpassName); + auto pipeline = renderPass->GetOrCreatePipeline({ vertShader, fragShader }, subPass); + // - Set Pipeline + matHandle->SetPipeline(pipeline); + } + } + + // Save Properties if(auto matAsset = SHAssetManager::GetData(currentViewedMaterial)) { YAML::Emitter out; @@ -102,7 +121,20 @@ namespace SHADE currentMaterial->SetProperty(VARIABLE->offset, PROP_NODE.as()); break; case SHADE::SHShaderBlockInterface::Variable::Type::INT: - currentMaterial->SetProperty(VARIABLE->offset, PROP_NODE.as()); + { + Handle texture = SHResourceManager::LoadOrGet(PROP_NODE.as()); + // HACK: Need to split this out to a separate pass before loading the materials and subsequently, the scenes + gfxSystem->BuildTextures(); + if (texture) + { + matHandle->SetProperty(VARIABLE->offset, texture->TextureArrayIndex); + } + else + { + SHLOG_WARNING("[] Attempted to load invalid texture! Setting to 0."); + matHandle->SetProperty(VARIABLE->offset, 0); + } + } break; case SHADE::SHShaderBlockInterface::Variable::Type::VECTOR2: currentMaterial->SetProperty(VARIABLE->offset, PROP_NODE.as()); @@ -136,12 +168,45 @@ namespace SHADE { /*if(!shaderModule) return;*/ - auto gfxSystem = SHSystemManager::GetSystem(); - auto interface = gfxSystem->GetDefaultMaterialInstance()->GetBaseMaterial()->GetShaderBlockInterface(); //auto interface = shaderModule->GetReflectedData().GetDescriptorBindingInfo().GetShaderBlockInterface(SHGraphicsConstants::DescriptorSetIndex::PER_INSTANCE, SHGraphicsConstants::DescriptorSetBindings::BATCHED_PER_INST_DATA); - int const varCount = static_cast(interface->GetVariableCount()); + // Shader + bool shaderChanged = false; + const auto* VERT_SHADER_INFO = SHAssetManager::GetData(currentMatSpec->vertexShader); + const std::string VERT_SHADER_NAME = VERT_SHADER_INFO ? VERT_SHADER_INFO->name : "Unknown Shader"; + isDirty |= SHEditorWidgets::DragDropReadOnlyField + ( + "Fragment Shader", VERT_SHADER_NAME.data(), + [this]() { return currentMatSpec->vertexShader; }, + [this](const AssetID& id) { currentMatSpec->vertexShader = id; }, + SHDragDrop::DRAG_RESOURCE + ); + const auto* FRAG_SHADER_INFO = SHAssetManager::GetData(currentMatSpec->fragShader); + const std::string FRAG_SHADER_NAME = FRAG_SHADER_INFO ? FRAG_SHADER_INFO->name : "Unknown Shader"; + isDirty |= SHEditorWidgets::DragDropReadOnlyField + ( + "Fragment Shader", FRAG_SHADER_NAME.data(), + [this]() { return currentMatSpec->fragShader; }, + [this](const AssetID& id) { currentMatSpec->fragShader = id; }, + SHDragDrop::DRAG_RESOURCE + ); + // Load the shader to access it's data + auto fragShader = SHResourceManager::LoadOrGet(currentMatSpec->fragShader); + if (!fragShader) + return; + + // Get interface for the shader combination + auto interface = fragShader->GetReflectedData().GetDescriptorBindingInfo().GetShaderBlockInterface + ( + SHGraphicsConstants::DescriptorSetIndex::PER_INSTANCE, + SHGraphicsConstants::DescriptorSetBindings::BATCHED_PER_INST_DATA + ); + if (!interface) + return; + + // Properties + int const varCount = static_cast(interface->GetVariableCount()); for (int i = 0; i < varCount; ++i) { auto variable = interface->GetVariable(i); diff --git a/SHADE_Engine/src/Editor/EditorWindow/MenuBar/SHEditorMenuBar.cpp b/SHADE_Engine/src/Editor/EditorWindow/MenuBar/SHEditorMenuBar.cpp index c18f0c8c..a1335e19 100644 --- a/SHADE_Engine/src/Editor/EditorWindow/MenuBar/SHEditorMenuBar.cpp +++ b/SHADE_Engine/src/Editor/EditorWindow/MenuBar/SHEditorMenuBar.cpp @@ -20,9 +20,13 @@ #include "Assets/SHAssetManager.h" #include "Assets/Asset Types/SHSceneAsset.h" +#include "ECS_Base/Managers/SHEntityManager.h" #include "Scene/SHSceneManager.h" #include "Serialization/SHSerialization.h" #include "Serialization/Configurations/SHConfigurationManager.h" +#include "Editor/EditorWindow/SHEditorWindowManager.h" + +const std::string LAYOUT_FOLDER_PATH{ std::string(ASSET_ROOT) + "/Editor/Layouts" }; namespace SHADE { @@ -32,7 +36,7 @@ namespace SHADE constexpr ImGuiWindowFlags dockspaceFlags = ImGuiDockNodeFlags_PassthruCentralNode; - //#==============================================================# + //#==============================================================# //|| Public Member Functions || //#==============================================================# SHEditorMenuBar::SHEditorMenuBar() @@ -43,8 +47,7 @@ namespace SHADE void SHEditorMenuBar::Init() { SHEditorWindow::Init(); - constexpr std::string_view path = "../../Assets/Editor/Layouts"; - for(auto const& entry : std::filesystem::directory_iterator(path)) + for(auto const& entry : std::filesystem::directory_iterator(LAYOUT_FOLDER_PATH)) { layoutPaths.push_back(entry.path()); } @@ -219,41 +222,29 @@ namespace SHADE ImGui::BeginDisabled(editor->editorState == SHEditor::State::PLAY); if(ImGui::SmallButton(ICON_MD_PLAY_ARROW)) { - if(editor->SaveScene()) + if(editor->editorState == SHEditor::State::STOP) { - const SHEditorStateChangeEvent STATE_CHANGE_EVENT + if (editor->SaveScene()) { - .previousState = editor->editorState - }; - editor->editorState = SHEditor::State::PLAY; - - SHEventManager::BroadcastEvent(STATE_CHANGE_EVENT, SH_EDITOR_ON_PLAY_EVENT); + editor->Play(); + } + } + else + { + editor->Play(); } } ImGui::EndDisabled(); - ImGui::BeginDisabled(editor->editorState == SHEditor::State::PAUSE); + ImGui::BeginDisabled(editor->editorState == SHEditor::State::STOP || editor->editorState == SHEditor::State::PAUSE); if(ImGui::SmallButton(ICON_MD_PAUSE)) { - const SHEditorStateChangeEvent STATE_CHANGE_EVENT - { - .previousState = editor->editorState - }; - editor->editorState = SHEditor::State::PAUSE; - - SHEventManager::BroadcastEvent(STATE_CHANGE_EVENT, SH_EDITOR_ON_PAUSE_EVENT); + editor->Pause(); } ImGui::EndDisabled(); ImGui::BeginDisabled(editor->editorState == SHEditor::State::STOP); if(ImGui::SmallButton(ICON_MD_STOP)) { - const SHEditorStateChangeEvent STATE_CHANGE_EVENT - { - .previousState = editor->editorState - }; - editor->editorState = SHEditor::State::STOP; - - SHEventManager::BroadcastEvent(STATE_CHANGE_EVENT, SH_EDITOR_ON_STOP_EVENT); - editor->LoadScene(SHSceneManager::GetCurrentSceneAssetID()); + editor->Stop(); } ImGui::EndDisabled(); ImGui::EndMenuBar(); @@ -266,11 +257,13 @@ namespace SHADE ImGui::PushStyleVar(ImGuiStyleVar_WindowRounding, 0.0f); ImGui::PushStyleVar(ImGuiStyleVar_WindowBorderSize, 0.0f); ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, { ImVec2(0.0f, 0.0f) }); + ImGui::PushStyleColor(ImGuiCol_WindowBg, ImGui::GetStyle().Colors[ImGuiCol_MenuBarBg]); if (ImGui::BeginViewportSideBar("MainStatusBar", ImGui::GetMainViewport(), ImGuiDir_Down, menuBarHeight, editorMenuBarFlags)) { - ImGui::Text("Entity count: "); + ImGui::Text("Entity count: %zu", SHEntityManager::GetEntityCount()); } ImGui::End(); + ImGui::PopStyleColor(); ImGui::PopStyleVar(3); } diff --git a/SHADE_Engine/src/Editor/EditorWindow/SHEditorWindowManager.cpp b/SHADE_Engine/src/Editor/EditorWindow/SHEditorWindowManager.cpp new file mode 100644 index 00000000..420b5414 --- /dev/null +++ b/SHADE_Engine/src/Editor/EditorWindow/SHEditorWindowManager.cpp @@ -0,0 +1,8 @@ +#include "SHpch.h" +#include "SHEditorWindowManager.h" + +namespace SHADE +{ + SHEditorWindowManager::EditorWindowMap SHEditorWindowManager::editorWindows{}; + SHEditorWindowManager::EditorWindowID SHEditorWindowManager::windowCount{}; +} diff --git a/SHADE_Engine/src/Editor/EditorWindow/SHEditorWindowManager.h b/SHADE_Engine/src/Editor/EditorWindow/SHEditorWindowManager.h new file mode 100644 index 00000000..60730f0e --- /dev/null +++ b/SHADE_Engine/src/Editor/EditorWindow/SHEditorWindowManager.h @@ -0,0 +1,77 @@ +#pragma once + +#include +#include +#include "SHEditorWindow.h" +#include "Tools/Logger/SHLog.h" + +namespace SHADE +{ + class SH_API SHEditorWindowManager + { + public: + //#==============================================================# + //|| Type Aliases || + //#==============================================================# + using EditorWindowID = uint8_t; + using EditorWindowPtr = std::unique_ptr; + using EditorWindowMap = std::unordered_map; + /** + * @brief Get ID for the Editor Window Type + * + * @tparam T Type of Editor Window + * @return EditorWindowID ID of Editor Window Type + */ + template , bool> = true> + static EditorWindowID GetEditorWindowID() + { + static EditorWindowID id; + static bool idCreated = false; + if (!idCreated) + { + id = windowCount++; + idCreated = true; + } + return id; + } + + /** + * @brief Create an Editor Window + * + * @tparam T Type of Editor Window to create + */ + template , bool> = true> + static void CreateEditorWindow() + { + static bool isCreated = false; + if (!isCreated) + { + editorWindows[GetEditorWindowID()] = std::make_unique(); + isCreated = true; + } + else + { + SHLog::Warning("Attempt to create duplicate of Editor window type"); + } + } + + /** + * @brief Get pointer to the Editor Window + * + * @tparam T Type of editor window to retrieve + * @return T* Pointer to the editor window + */ + template , bool> = true> + static T* GetEditorWindow() + { + return reinterpret_cast(editorWindows[GetEditorWindowID()].get()); + } + + static EditorWindowMap editorWindows; + private: + // Number of windows; used for Editor Window ID Generation + static EditorWindowID windowCount; + // Map of Editor Windows + friend class SHEditor; + }; +} diff --git a/SHADE_Engine/src/Editor/EditorWindow/ViewportWindow/SHEditorViewport.cpp b/SHADE_Engine/src/Editor/EditorWindow/ViewportWindow/SHEditorViewport.cpp index d6ef8d19..93f4a615 100644 --- a/SHADE_Engine/src/Editor/EditorWindow/ViewportWindow/SHEditorViewport.cpp +++ b/SHADE_Engine/src/Editor/EditorWindow/ViewportWindow/SHEditorViewport.cpp @@ -14,6 +14,7 @@ #include "Camera/SHCameraSystem.h" #include "FRC/SHFramerateController.h" +#include "../../SHEditorWidgets.hpp" constexpr std::string_view windowName = "\xef\x80\x95 Viewport"; @@ -33,12 +34,31 @@ namespace SHADE void SHEditorViewport::Update() { SHEditorWindow::Update(); - if (shouldUpdateCamera) + auto camSystem = SHSystemManager::GetSystem(); + SHEditor* editor = SHSystemManager::GetSystem(); + + if (!editor->selectedEntities.empty()) + { + if (SHTransformComponent* transform = SHComponentManager::GetComponent_s(editor->selectedEntities.front())) + { + targetPos = transform->GetWorldPosition(); + } + else + { + targetPos = {}; + } + } + else + { + targetPos = {}; + } + if (shouldUpdateCamera || shouldUpdateCamArm) { - auto camSystem = SHSystemManager::GetSystem(); camSystem->UpdateEditorCamera(SHFrameRateController::GetRawDeltaTime()); shouldUpdateCamera = false; } + camSystem->UpdateEditorArm(SHFrameRateController::GetRawDeltaTime(), shouldUpdateCamArm, targetPos); + ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, ImVec2(0.0f, 0.0f)); if (Begin()) @@ -51,7 +71,6 @@ namespace SHADE beginCursorPos = ImGui::GetCursorScreenPos(); viewportMousePos = { mousePos.x - beginCursorPos.x, mousePos.y - beginCursorPos.y }; gfxSystem->GetMousePickSystem()->SetViewportMousePos(viewportMousePos); - ImGui::Image((ImTextureID)descriptorSet, { beginContentRegionAvailable.x, beginContentRegionAvailable.y }); if (ImGui::IsWindowHovered() && ImGui::IsMouseDown(ImGuiMouseButton_Right)) @@ -64,24 +83,28 @@ namespace SHADE shouldUpdateCamera = true; } - if (ImGui::IsWindowFocused() && !ImGui::IsMouseDown(ImGuiMouseButton_Right)) + + shouldUpdateCamArm = ImGui::IsWindowHovered() && ImGui::IsKeyDown(ImGuiKey_LeftAlt) && ImGui::IsMouseDown(ImGuiMouseButton_Left); + + if (editor->editorState != SHEditor::State::PLAY && !ImGui::IsAnyItemActive() && !ImGui::IsMouseDown(ImGuiMouseButton_Right)) { - if (ImGui::IsKeyReleased(ImGuiKey_Q)) + if (ImGui::IsKeyReleased(ImGuiKey_W)) { transformGizmo.operation = SHTransformGizmo::Operation::TRANSLATE; } - if (ImGui::IsKeyReleased(ImGuiKey_W)) + if (ImGui::IsKeyReleased(ImGuiKey_E)) { transformGizmo.operation = SHTransformGizmo::Operation::ROTATE; } - if (ImGui::IsKeyReleased(ImGuiKey_E)) + if (ImGui::IsKeyReleased(ImGuiKey_R)) { transformGizmo.operation = SHTransformGizmo::Operation::SCALE; } } } ImGuizmo::SetRect(beginCursorPos.x, beginCursorPos.y, beginContentRegionAvailable.x, beginContentRegionAvailable.y); - transformGizmo.Draw(); + if(editor->editorState != SHEditor::State::PLAY) + transformGizmo.Draw(); ImGui::End(); ImGui::PopStyleVar(); } @@ -129,7 +152,7 @@ namespace SHADE if (ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled)) { ImGui::BeginTooltip(); - ImGui::Text("Translate [Q]"); + ImGui::Text("Translate [W]"); ImGui::EndTooltip(); } if (isTranslate) @@ -147,7 +170,7 @@ namespace SHADE if (ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled)) { ImGui::BeginTooltip(); - ImGui::Text("Rotate [W]"); + ImGui::Text("Rotate [E]"); ImGui::EndTooltip(); } if (isRotate) @@ -165,12 +188,19 @@ namespace SHADE if (ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled)) { ImGui::BeginTooltip(); - ImGui::Text("Scale [E]"); + ImGui::Text("Scale [R]"); ImGui::EndTooltip(); } if (isScale) ImGui::PopStyleColor(); ImGui::EndDisabled(); + + auto camSystem = SHSystemManager::GetSystem(); + auto editorCamera = camSystem->GetEditorCamera(); + //ImGui::SetNextItemWidth(10.0f); + SHEditorWidgets::SliderFloat("CamSpeed", 0.0f, 5.0f, [editorCamera] {return editorCamera->movementSpeed; }, [editorCamera](float const& value) {editorCamera->movementSpeed = value; }); + SHEditorWidgets::DragVec3("TurnSpeed", { "X", "Y", "Z" }, [editorCamera] {return editorCamera->turnSpeed; }, [editorCamera](SHVec3 const& value) {editorCamera->turnSpeed = value; }); + ImGui::EndMenuBar(); } } diff --git a/SHADE_Engine/src/Editor/EditorWindow/ViewportWindow/SHEditorViewport.h b/SHADE_Engine/src/Editor/EditorWindow/ViewportWindow/SHEditorViewport.h index 0fae4317..8f49c514 100644 --- a/SHADE_Engine/src/Editor/EditorWindow/ViewportWindow/SHEditorViewport.h +++ b/SHADE_Engine/src/Editor/EditorWindow/ViewportWindow/SHEditorViewport.h @@ -29,5 +29,7 @@ namespace SHADE void DrawMenuBar() noexcept; SHVec2 beginCursorPos; bool shouldUpdateCamera = false; + bool shouldUpdateCamArm = false; + SHVec3 targetPos; };//class SHEditorViewport }//namespace SHADE diff --git a/SHADE_Engine/src/Editor/Gizmos/SHTransformGizmo.cpp b/SHADE_Engine/src/Editor/Gizmos/SHTransformGizmo.cpp index e3bbc809..deea62fc 100644 --- a/SHADE_Engine/src/Editor/Gizmos/SHTransformGizmo.cpp +++ b/SHADE_Engine/src/Editor/Gizmos/SHTransformGizmo.cpp @@ -11,6 +11,8 @@ #include "Camera/SHCameraSystem.h" #include "Editor/Command/SHCommandManager.h" #include "Editor/EditorWindow/ViewportWindow/SHEditorViewport.h" +#include "Editor/EditorWindow/SHEditorWindowManager.h" + namespace SHADE { void SHTransformGizmo::Init() diff --git a/SHADE_Engine/src/Editor/SHEditor.cpp b/SHADE_Engine/src/Editor/SHEditor.cpp index 19d147e6..abddf457 100644 --- a/SHADE_Engine/src/Editor/SHEditor.cpp +++ b/SHADE_Engine/src/Editor/SHEditor.cpp @@ -10,7 +10,7 @@ //#==============================================================# //|| SHADE Includes || //#==============================================================# -#include "Tools/SHLogger.h" +#include "Tools/Logger/SHLogger.h" #include "Tools/SHException.h" #include "ECS_Base/Managers/SHSystemManager.h" @@ -29,6 +29,7 @@ //#==============================================================# //|| Editor Window Includes || //#==============================================================# +#include "EditorWindow/SHEditorWindowManager.h" #include "EditorWindow/SHEditorWindowIncludes.h" //#==============================================================# @@ -65,6 +66,10 @@ RTTR_REGISTRATION ); } +const std::string USER_LAYOUT_PATH{ std::string(ASSET_ROOT) + "/Editor/Layouts/UserLayout.ini" }; +const std::string DEFAULT_LAYOUT_PATH{ std::string(ASSET_ROOT) + "/Editor/Layouts/Default.ini" }; +const std::string FONT_FOLDER_PATH{ std::string(ASSET_ROOT) + "/Editor/Fonts/"}; + namespace SHADE { @@ -73,8 +78,6 @@ namespace SHADE //#==============================================================# //Handle SHEditor::imguiCommandPool; //Handle SHEditor::imguiCommandBuffer; - SHEditorWindowManager::EditorWindowMap SHEditorWindowManager::editorWindows{}; - SHEditorWindowManager::EditorWindowID SHEditorWindowManager::windowCount{}; //std::vector SHEditor::selectedEntities; //#==============================================================# @@ -106,7 +109,7 @@ namespace SHADE io->ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard; // Enable Keyboard Controls io->ConfigFlags |= ImGuiConfigFlags_ViewportsEnable; //Enable for Multi-Viewports io->ConfigFlags |= ImGuiConfigFlags_DockingEnable; //Enable docking - io->IniFilename = "../../Assets/Editor/Layouts/UserLayout.ini"; + io->IniFilename = USER_LAYOUT_PATH.data(); io->ConfigWindowsMoveFromTitleBarOnly = true; InitLayout(); @@ -164,7 +167,19 @@ namespace SHADE { SHCommandManager::UndoCommand(); } - + if(ImGui::IsKeyReleased(ImGuiKey_F5)) + { + Play(); + } + else if (ImGui::IsKeyReleased(ImGuiKey_F6)) + { + Pause(); + } + else if (ImGui::IsKeyReleased(ImGuiKey_F7)) + { + Stop(); + } + Render(); } @@ -236,20 +251,20 @@ namespace SHADE { if(!std::filesystem::exists(io->IniFilename)) { - std::filesystem::copy_file("../../Assets/Editor/Layouts/Default.ini", io->IniFilename); + std::filesystem::copy_file(DEFAULT_LAYOUT_PATH.data(), io->IniFilename); } //eventually load preferred layout here } void SHEditor::InitFonts() noexcept { - ImFont* mainFont = io->Fonts->AddFontFromFileTTF("../../Assets/Editor/Fonts/Segoe UI.ttf", 20.f);//TODO: Change to config based assets path + ImFont* mainFont = io->Fonts->AddFontFromFileTTF(std::string(FONT_FOLDER_PATH + "Segoe UI.ttf").data(), 20.f);//TODO: Change to config based assets path ImFontConfig icons_config{}; icons_config.MergeMode = true; icons_config.GlyphOffset.y = 5.f; constexpr ImWchar icon_ranges_fa[] = { ICON_MIN_FA, ICON_MAX_FA, 0 }; - ImFont* UIFontFA = io->Fonts->AddFontFromFileTTF("../../Assets/Editor/Fonts/fa-solid-900.ttf", 20.f, &icons_config, icon_ranges_fa); //TODO: Change to config based assets path + ImFont* UIFontFA = io->Fonts->AddFontFromFileTTF(std::string(FONT_FOLDER_PATH + "fa-solid-900.ttf").data(), 20.f, &icons_config, icon_ranges_fa); //TODO: Change to config based assets path constexpr ImWchar icon_ranges_md[] = { ICON_MIN_MD, ICON_MAX_16_MD, 0 }; - ImFont* UIFontMD = io->Fonts->AddFontFromFileTTF("../../Assets/Editor/Fonts/MaterialIcons-Regular.ttf", 20.f, &icons_config, icon_ranges_md); //TODO: Change to config based assets path + ImFont* UIFontMD = io->Fonts->AddFontFromFileTTF(std::string(FONT_FOLDER_PATH + "MaterialIcons-Regular.ttf").data(), 20.f, &icons_config, icon_ranges_md); //TODO: Change to config based assets path io->Fonts->Build(); } @@ -501,7 +516,7 @@ namespace SHADE ImGui_ImplVulkan_DestroyFontUploadObjects(); - renderGraph->GetNode("ImGui Node")->GetSubpass("ImGui Draw")->AddExteriorDrawCalls([](Handle& cmd) + renderGraph->GetNode("ImGui Node")->GetSubpass("ImGui Draw")->AddExteriorDrawCalls([](Handle& cmd, uint32_t frameIndex) { cmd->BeginLabeledSegment("ImGui Draw"); ImGui_ImplVulkan_RenderDrawData(ImGui::GetDrawData(), cmd->GetVkCommandBuffer()); @@ -593,6 +608,52 @@ namespace SHADE } } + void SHEditor::Play() + { + if(editorState == State::PLAY) + return; + if (editorState == State::STOP && SaveScene()) + { + const SHEditorStateChangeEvent STATE_CHANGE_EVENT + { + .previousState = editorState + }; + editorState = State::PLAY; + SHCommandManager::SwapStacks(); + SHEventManager::BroadcastEvent(STATE_CHANGE_EVENT, SH_EDITOR_ON_PLAY_EVENT); + } + else if (editorState == State::PAUSE) + { + editorState = State::PLAY; + } + } + + void SHEditor::Pause() + { + if (editorState == State::PAUSE) + return; + const SHEditorStateChangeEvent STATE_CHANGE_EVENT + { + .previousState = editorState + }; + editorState = State::PAUSE; + SHEventManager::BroadcastEvent(STATE_CHANGE_EVENT, SH_EDITOR_ON_PAUSE_EVENT); + } + + void SHEditor::Stop() + { + if (editorState == State::STOP) + return; + const SHEditorStateChangeEvent STATE_CHANGE_EVENT + { + .previousState = editorState + }; + editorState = SHEditor::State::STOP; + SHCommandManager::SwapStacks(); + SHEventManager::BroadcastEvent(STATE_CHANGE_EVENT, SH_EDITOR_ON_STOP_EVENT); + LoadScene(SHSceneManager::GetCurrentSceneAssetID()); + } + void SHEditor::NewFrame() { SDL_Event event; diff --git a/SHADE_Engine/src/Editor/SHEditor.h b/SHADE_Engine/src/Editor/SHEditor.h index 0f5a3aaa..0a485109 100644 --- a/SHADE_Engine/src/Editor/SHEditor.h +++ b/SHADE_Engine/src/Editor/SHEditor.h @@ -15,7 +15,7 @@ #include "ECS_Base/System/SHSystemRoutine.h" #include "Resource/SHHandle.h" #include "EditorWindow/SHEditorWindow.h" -#include "Tools/SHLog.h" +#include "Tools/Logger/SHLog.h" #include "Gizmos/SHTransformGizmo.h" #include "Events/SHEventDefines.h" #include "Events/SHEvent.h" @@ -36,73 +36,7 @@ namespace SHADE class SHVkCommandBuffer; class SHVkCommandPool; - class SHEditorWindowManager - { - public: - //#==============================================================# - //|| Type Aliases || - //#==============================================================# - using EditorWindowID = uint8_t; - using EditorWindowPtr = std::unique_ptr; - using EditorWindowMap = std::unordered_map; - /** - * @brief Get ID for the Editor Window Type - * - * @tparam T Type of Editor Window - * @return EditorWindowID ID of Editor Window Type - */ - template , bool> = true> - static EditorWindowID GetEditorWindowID() - { - static EditorWindowID id; - static bool idCreated = false; - if (!idCreated) - { - id = windowCount++; - idCreated = true; - } - return id; - } - /** - * @brief Create an Editor Window - * - * @tparam T Type of Editor Window to create - */ - template , bool> = true> - static void CreateEditorWindow() - { - static bool isCreated = false; - if (!isCreated) - { - editorWindows[GetEditorWindowID()] = std::make_unique(); - isCreated = true; - } - else - { - SHLog::Warning("Attempt to create duplicate of Editor window type"); - } - } - - /** - * @brief Get pointer to the Editor Window - * - * @tparam T Type of editor window to retrieve - * @return T* Pointer to the editor window - */ - template , bool> = true> - static T* GetEditorWindow() - { - return reinterpret_cast(editorWindows[GetEditorWindowID()].get()); - } - - static EditorWindowMap editorWindows; - private: - // Number of windows; used for Editor Window ID Generation - static EditorWindowID windowCount; - // Map of Editor Windows - friend class SHEditor; - }; /** * @brief SHEditor static class contains editor variables and implementation of editor functions. @@ -184,6 +118,10 @@ namespace SHADE void LoadScene(AssetID const& assetID) noexcept; + void Play(); + void Pause(); + void Stop(); + // List of selected entities std::vector selectedEntities; diff --git a/SHADE_Engine/src/Editor/SHEditorUI.cpp b/SHADE_Engine/src/Editor/SHEditorUI.cpp index 49cfbfd6..b9783020 100644 --- a/SHADE_Engine/src/Editor/SHEditorUI.cpp +++ b/SHADE_Engine/src/Editor/SHEditorUI.cpp @@ -4,9 +4,9 @@ \par email: kahwei.tng\@digipen.edu \date Nov 7, 2021 \brief Contains the implementation of the EditorUI class. - + Copyright (C) 2021 DigiPen Institute of Technology. -Reproduction or disclosure of this file or its contents without the prior written consent +Reproduction or disclosure of this file or its contents without the prior written consent of DigiPen Institute of Technology is prohibited. *//*************************************************************************************/ // Precompiled Header @@ -15,8 +15,10 @@ of DigiPen Institute of Technology is prohibited. #include "SHEditorUI.h" // External Dependencies #include +// Project Includes #include "SHEditorWidgets.hpp" #include "ECS_Base/Managers/SHEntityManager.h" +#include "Assets/SHAssetManager.h" namespace SHADE { @@ -53,11 +55,14 @@ namespace SHADE /*-----------------------------------------------------------------------------------*/ /* ImGui Wrapper Functions - Organizers */ /*-----------------------------------------------------------------------------------*/ - bool SHEditorUI::CollapsingHeader(const std::string& title) + bool SHEditorUI::CollapsingHeader(const std::string& title, bool* isHovered) { - return ImGui::CollapsingHeader(title.c_str(), ImGuiTreeNodeFlags_DefaultOpen); + const bool OPENED = ImGui::CollapsingHeader(title.c_str(), ImGuiTreeNodeFlags_DefaultOpen); + if (isHovered) + *isHovered = ImGui::IsItemHovered(); + return OPENED; } - + void SHEditorUI::SameLine() { ImGui::SameLine(); @@ -75,7 +80,7 @@ namespace SHADE bool SHEditorUI::BeginMenu(const std::string& label) { - return ImGui::BeginMenu(label.data()); + return ImGui::BeginMenu(label.data()); } bool SHEditorUI::BeginMenu(const std::string& label, const char* icon) @@ -95,7 +100,7 @@ namespace SHADE void SHEditorUI::EndTooltip() { - ImGui::EndTooltip(); + ImGui::EndTooltip(); } /*-----------------------------------------------------------------------------------*/ @@ -143,7 +148,7 @@ namespace SHADE bool SHEditorUI::Selectable(const std::string& label) { - return ImGui::Selectable(label.data()); + return ImGui::Selectable(label.data()); } bool SHEditorUI::Selectable(const std::string& label, const char* icon) @@ -153,28 +158,41 @@ namespace SHADE bool SHEditorUI::InputCheckbox(const std::string& label, bool& value, bool* isHovered) { - ImGui::Text(label.c_str()); + if (!label.empty()) + { + ImGui::Text(label.c_str()); + ImGui::SameLine(); + } if (isHovered) - *isHovered = ImGui::IsItemHovered(); - ImGui::SameLine(); + *isHovered = ImGui::IsItemHovered(); return ImGui::Checkbox("##", &value); } bool SHEditorUI::InputInt(const std::string& label, int& value, bool* isHovered) { - ImGui::Text(label.c_str()); + if (!label.empty()) + { + ImGui::Text(label.c_str()); + ImGui::SameLine(); + } if (isHovered) - *isHovered = ImGui::IsItemHovered(); + *isHovered = ImGui::IsItemHovered(); ImGui::SameLine(); - return ImGui::InputInt("##", &value, - 1, 10, - ImGuiInputTextFlags_EnterReturnsTrue); + return ImGui::DragInt("##", &value, 0.001f, + std::numeric_limits::min(), + std::numeric_limits::max(), + "%d", + ImGuiInputTextFlags_EnterReturnsTrue); } bool SHEditorUI::InputUnsignedInt(const std::string& label, unsigned int& value, bool* isHovered) { int signedVal = static_cast(value); - ImGui::Text(label.c_str()); + if (!label.empty()) + { + ImGui::Text(label.c_str()); + ImGui::SameLine(); + } if (isHovered) - *isHovered = ImGui::IsItemHovered(); + *isHovered = ImGui::IsItemHovered(); ImGui::SameLine(); const bool CHANGED = InputInt("##", signedVal); if (CHANGED) @@ -186,79 +204,82 @@ namespace SHADE } bool SHEditorUI::InputFloat(const std::string& label, float& value, bool* isHovered) { - ImGui::Text(label.c_str()); + if (!label.empty()) + { + ImGui::Text(label.c_str()); + ImGui::SameLine(); + } if (isHovered) - *isHovered = ImGui::IsItemHovered(); + *isHovered = ImGui::IsItemHovered(); ImGui::SameLine(); - return ImGui::InputFloat("##", &value, - 0.1f, 1.0f, "%.3f", - ImGuiInputTextFlags_EnterReturnsTrue); + return ImGui::DragFloat("##", &value, 0.001f, + std::numeric_limits::lowest(), + std::numeric_limits::max(), + "%.3f", + ImGuiInputTextFlags_EnterReturnsTrue); } bool SHEditorUI::InputDouble(const std::string& label, double& value, bool* isHovered) { - ImGui::Text(label.c_str()); - if (isHovered) - *isHovered = ImGui::IsItemHovered(); - ImGui::SameLine(); - return ImGui::InputDouble("##", &value, - 0.1, 1.0, "%.3f", - ImGuiInputTextFlags_EnterReturnsTrue); + float val = value; + const bool CHANGED = InputFloat(label, val, isHovered); + if (CHANGED) + { + value = static_cast(val); + } + return CHANGED; } - bool SHEditorUI::InputAngle(const std::string& label, double& value, bool* isHovered) - { - ImGui::Text(label.c_str()); - if (isHovered) - *isHovered = ImGui::IsItemHovered(); - ImGui::SameLine(); - return ImGui::InputDouble("##", &value, - 1.0, 45.0, "%.3f", - ImGuiInputTextFlags_EnterReturnsTrue); - } - bool SHEditorUI::InputSlider(const std::string& label, int min, int max, int& value, bool* isHovered /*= nullptr*/) { + if (!label.empty()) + { ImGui::Text(label.c_str()); - if (isHovered) - *isHovered = ImGui::IsItemHovered(); ImGui::SameLine(); - return ImGui::SliderInt("##", &value, - static_cast(min), static_cast(max), "%d", - ImGuiInputTextFlags_EnterReturnsTrue); + } + if (isHovered) + *isHovered = ImGui::IsItemHovered(); + ImGui::SameLine(); + return ImGui::SliderInt("##", &value, + static_cast(min), static_cast(max), "%d", + ImGuiInputTextFlags_EnterReturnsTrue); } bool SHEditorUI::InputSlider(const std::string& label, unsigned int min, unsigned int max, unsigned int& value, bool* isHovered /*= nullptr*/) { - int val = static_cast(value); - const bool CHANGED = InputSlider(label, min, max, val, isHovered); - if (CHANGED) - { - value = static_cast(val); - } + int val = static_cast(value); + const bool CHANGED = InputSlider(label, min, max, val, isHovered); + if (CHANGED) + { + value = static_cast(val); + } - return CHANGED; + return CHANGED; } bool SHEditorUI::InputSlider(const std::string& label, float min, float max, float& value, bool* isHovered) { + if (!label.empty()) + { ImGui::Text(label.c_str()); - if (isHovered) - *isHovered = ImGui::IsItemHovered(); ImGui::SameLine(); - return ImGui::SliderFloat("##", &value, - static_cast(min), static_cast(max), "%.3f", - ImGuiInputTextFlags_EnterReturnsTrue); + } + if (isHovered) + *isHovered = ImGui::IsItemHovered(); + ImGui::SameLine(); + return ImGui::SliderFloat("##", &value, + static_cast(min), static_cast(max), "%.3f", + ImGuiInputTextFlags_EnterReturnsTrue); } bool SHEditorUI::InputSlider(const std::string& label, double min, double max, double& value, bool* isHovered /*= nullptr*/) { - float val = static_cast(value); - const bool CHANGED = InputSlider(label, min, max, val, isHovered); - if (CHANGED) - { - value = static_cast(val); - } + float val = static_cast(value); + const bool CHANGED = InputSlider(label, min, max, val, isHovered); + if (CHANGED) + { + value = static_cast(val); + } - return CHANGED; + return CHANGED; } bool SHEditorUI::InputVec2(const std::string& label, SHVec2& value, bool* isHovered) @@ -266,19 +287,23 @@ namespace SHADE static const std::vector COMPONENT_LABELS = { "X", "Y" }; return SHEditorWidgets::DragN(label, COMPONENT_LABELS, { &value.x, &value.y }, 0.1f, "%.3f", float{}, float{}, 0, isHovered); } - bool SHEditorUI::InputVec3(const std::string& label, SHVec3& value, bool* isHovered, float speed) + bool SHEditorUI::InputVec3(const std::string& label, SHVec3& value, bool* isHovered) { - static const std::vector COMPONENT_LABELS = { "X", "Y", "Z"}; - return SHEditorWidgets::DragN(label, COMPONENT_LABELS, { &value.x, &value.y, &value.z }, speed, "%.3f", float{}, float{}, 0, isHovered); + static const std::vector COMPONENT_LABELS = { "X", "Y", "Z" }; + return SHEditorWidgets::DragN(label, COMPONENT_LABELS, { &value.x, &value.y, &value.z }, 0.1f, "%.3f", float{}, float{}, 0, isHovered); } bool SHEditorUI::InputTextField(const std::string& label, std::string& value, bool* isHovered) { std::array buffer = { '\0' }; strcpy_s(buffer.data(), TEXT_FIELD_MAX_LENGTH, value.c_str()); - ImGui::Text(label.c_str()); + if (!label.empty()) + { + ImGui::Text(label.c_str()); + ImGui::SameLine(); + } if (isHovered) - *isHovered = ImGui::IsItemHovered(); + *isHovered = ImGui::IsItemHovered(); ImGui::SameLine(); const bool CHANGED = ImGui::InputText("##", &buffer[0], TEXT_FIELD_MAX_LENGTH); if (CHANGED) @@ -290,7 +315,11 @@ namespace SHADE bool SHEditorUI::InputGameObjectField(const std::string& label, uint32_t& value, bool* isHovered, bool alwaysNull) { - ImGui::Text(label.c_str()); + if (!label.empty()) + { + ImGui::Text(label.c_str()); + ImGui::SameLine(); + } if (isHovered) *isHovered = ImGui::IsItemHovered(); ImGui::SameLine(); @@ -324,15 +353,66 @@ namespace SHADE return changed; } + bool SHEditorUI::InputAssetField(const std::string& label, AssetID& value, AssetType type, bool* isHovered) + { + // Label + if (!label.empty()) + { + ImGui::Text(label.c_str()); + ImGui::SameLine(); + } + // Hover tracking + if (isHovered) + *isHovered = ImGui::IsItemHovered(); + ImGui::SameLine(); + + // Attempt to get the asset's data for rendering editor + auto asset = SHAssetManager::GetAsset(value); + std::string assetName; + if (asset.has_value()) + { + assetName = asset.value().name; + } + + // Editor + bool changed = ImGui::InputText("##", &assetName, ImGuiInputTextFlags_ReadOnly); + if (SHDragDrop::BeginTarget()) + { + if (AssetID* payload = SHDragDrop::AcceptPayload(SHDragDrop::DRAG_RESOURCE)) + { + // Check if type matches + auto draggedAsset = SHAssetManager::GetAsset(*payload); + if (draggedAsset.has_value() && draggedAsset.value().type == type) + { + value = draggedAsset.value().id; + changed = true; + } + SHDragDrop::EndTarget(); + } + } + ImGui::SameLine(); + if (ImGui::Button("Clear")) + { + value = INVALID_ASSET_ID; + changed = true; + } + + return changed; + } + bool SHEditorUI::InputEnumCombo(const std::string& label, int& v, const std::vector& enumNames, bool* isHovered) { // Clamp input value const std::string& INITIAL_NAME = v >= static_cast(enumNames.size()) ? "Unknown" : enumNames[v]; bool b = false; - ImGui::Text(label.c_str()); + if (!label.empty()) + { + ImGui::Text(label.c_str()); + ImGui::SameLine(); + } if (isHovered) - *isHovered = ImGui::IsItemHovered(); + *isHovered = ImGui::IsItemHovered(); ImGui::SameLine(); if (ImGui::BeginCombo("##", INITIAL_NAME.c_str(), ImGuiComboFlags_None)) { diff --git a/SHADE_Engine/src/Editor/SHEditorUI.h b/SHADE_Engine/src/Editor/SHEditorUI.h index 4e8f4400..cd87f46b 100644 --- a/SHADE_Engine/src/Editor/SHEditorUI.h +++ b/SHADE_Engine/src/Editor/SHEditorUI.h @@ -19,6 +19,7 @@ of DigiPen Institute of Technology is prohibited. #include "Math/Vector/SHVec3.h" #include "Math/Vector/SHVec4.h" #include "Math/SHMatrix.h" +#include "Assets/SHAssetMacros.h" namespace SHADE { @@ -85,8 +86,9 @@ namespace SHADE /// Wraps up ImGui::CollapsingHeader(). /// /// Label for the header. + /// Label used to identify this widget. - /// Reference to the variable to store the result. - /// Reference to the variable to store the result. /// Label used to identify this widget. /// Reference to the variable to store the result. @@ -320,6 +311,13 @@ namespace SHADE /// True if the value was changed. static bool InputGameObjectField(const std::string& label, uint32_t& value, bool* isHovered = nullptr, bool alwaysNull = false); /// + /// Creates a drag field widget for Asset input. + /// + /// Label used to identify this widget. + /// Reference to the variable to store the result. + /// The type of enum to input. diff --git a/SHADE_Engine/src/Editor/SHEditorWidgets.hpp b/SHADE_Engine/src/Editor/SHEditorWidgets.hpp index 0855d68d..2681e916 100644 --- a/SHADE_Engine/src/Editor/SHEditorWidgets.hpp +++ b/SHADE_Engine/src/Editor/SHEditorWidgets.hpp @@ -166,14 +166,14 @@ namespace SHADE const ImGuiWindow* const window = ImGui::GetCurrentWindow(); if (window->SkipItems) return false; - + static constexpr float defaultLabelColWidth = 80.0f; const ImGuiContext& g = *GImGui; bool valueChanged = false; ImGui::BeginGroup(); ImGui::PushID(label.c_str()); PushMultiItemsWidthsAndLabels(componentLabels, 0.0f); ImGui::BeginColumns("DragVecCol", 2, ImGuiOldColumnFlags_NoBorder | ImGuiOldColumnFlags_NoResize); - ImGui::SetColumnWidth(-1, 80.0f); + ImGui::SetColumnWidth(-1, defaultLabelColWidth); ImGui::Text(label.c_str()); if (isHovered) *isHovered |= ImGui::IsItemHovered(); @@ -219,7 +219,7 @@ namespace SHADE } bool const changed = DragN(label, componentLabels, { &values.x, &values.y }, speed, displayFormat, valueMin, valueMax, flags); static bool startRecording = false; - if (changed) + if (!(flags & ImGuiSliderFlags_ReadOnly) && changed) { if(isAnAngleInRad) { @@ -255,7 +255,7 @@ namespace SHADE bool isHovered = false; bool const changed = DragN(label, componentLabels, { &values.x, &values.y, &values.z }, speed, displayFormat, valueMin, valueMax, flags, &isHovered); static bool startRecording = false; - if (changed) + if (!(flags & ImGuiSliderFlags_ReadOnly) && changed) { SHVec3 old = get(); if(isAnAngleInRad) @@ -293,7 +293,7 @@ namespace SHADE } bool const changed = DragN(label, componentLabels, { &values.x, &values.y, &values.z, &values.w }, speed, displayFormat, valueMin, valueMax, flags); static bool startRecording = false; - if (changed) + if (!(flags & ImGuiSliderFlags_ReadOnly) && changed) { if(isAnAngleInRad) { @@ -422,7 +422,7 @@ namespace SHADE ImGui::BeginGroup(); ImGui::PushID(label.data()); TextLabel(label); - bool changed = ImGui::InputText("##", &text, ImGuiInputTextFlags_ReadOnly, nullptr, nullptr); + bool changed = ImGui::InputText("##inputText", &text, ImGuiInputTextFlags_ReadOnly, nullptr, nullptr); if(SHDragDrop::BeginTarget()) { if(T* payload = SHDragDrop::AcceptPayload(dragDropTag)) @@ -454,7 +454,7 @@ namespace SHADE ImGui::BeginGroup(); ImGui::PushID(label.data()); TextLabel(label); - const bool hasChange = ImGui::DragScalar("##", data_type, &value, speed, &p_min, &p_max, displayFormat, flags); + const bool hasChange = ImGui::DragScalar("##dragScalar", data_type, &value, speed, &p_min, &p_max, displayFormat, flags); static bool startRecording = false; if (hasChange) { @@ -487,7 +487,7 @@ namespace SHADE ImGui::BeginGroup(); ImGui::PushID(label.data()); TextLabel(label); - const bool hasChange = ImGui::DragFloat("##", &value, speed, p_min, p_max, displayFormat, flags); + const bool hasChange = ImGui::DragFloat("##dragFloat", &value, speed, p_min, p_max, displayFormat, flags); static bool startRecording = false; if (hasChange) { @@ -520,7 +520,7 @@ namespace SHADE ImGui::BeginGroup(); ImGui::PushID(label.data()); TextLabel(label); - const bool hasChange = ImGui::DragInt("##", &value, speed, p_min, p_max, displayFormat, flags); + const bool hasChange = ImGui::DragInt("##dragInt", &value, speed, p_min, p_max, displayFormat, flags); static bool startRecording = false; if (hasChange) { @@ -553,7 +553,7 @@ namespace SHADE ImGui::BeginGroup(); ImGui::PushID(label.data()); TextLabel(label); - bool const hasChange = ImGui::SliderScalar("##", data_type, &value, &min, &max, displayFormat, flags); + bool const hasChange = ImGui::SliderScalar("##sliderScalar", data_type, &value, &min, &max, displayFormat, flags); static bool startRecording = false; if (hasChange) { @@ -587,7 +587,8 @@ namespace SHADE ImGui::BeginGroup(); ImGui::PushID(label.data()); TextLabel(label); - bool const hasChange = ImGui::SliderFloat("##", &value, min, max, displayFormat, flags); + ImGui::SetNextItemWidth(ImGui::CalcTextSize(displayFormat).x + ImGui::GetStyle().ItemInnerSpacing.x * 2.0f); + bool const hasChange = ImGui::SliderFloat("##sliderFloat", &value, min, max, displayFormat, flags); static bool startRecording = false; if (hasChange) { @@ -621,7 +622,7 @@ namespace SHADE ImGui::BeginGroup(); ImGui::PushID(label.data()); TextLabel(label); - bool const hasChange = ImGui::SliderInt("##", &value, min, max, displayFormat, flags); + bool const hasChange = ImGui::SliderInt("##sliderInt", &value, min, max, displayFormat, flags); static bool startRecording = false; if (hasChange) { diff --git a/SHADE_Engine/src/FRC/SHFramerateController.cpp b/SHADE_Engine/src/FRC/SHFramerateController.cpp index 0791d628..02e0f430 100644 --- a/SHADE_Engine/src/FRC/SHFramerateController.cpp +++ b/SHADE_Engine/src/FRC/SHFramerateController.cpp @@ -12,11 +12,11 @@ //TODO Legacy code. Delete soon +#include + #include #include -#include #include "SHFramerateController.h" -#include "../Tools/SHLogger.h" namespace SHADE { diff --git a/SHADE_Engine/src/Filesystem/SHFileSystem.cpp b/SHADE_Engine/src/Filesystem/SHFileSystem.cpp index 4c0971e6..a28f70ca 100644 --- a/SHADE_Engine/src/Filesystem/SHFileSystem.cpp +++ b/SHADE_Engine/src/Filesystem/SHFileSystem.cpp @@ -12,6 +12,7 @@ #include "SHFileSystem.h" #include #include +#include #include "Assets/SHAssetMetaHandler.h" @@ -24,29 +25,94 @@ namespace SHADE return true; } - void SHFileSystem::BuildDirectory(FolderPath path, FolderPointer& root, std::unordered_map& assetCollection) noexcept + bool SHFileSystem::IsRecognised(char const* ext) noexcept + { + for (auto const& e : EXTENSIONS) + { + if (strcmp(ext, e.data()) == 0) + { + return true; + } + } + + return false; + } + + bool SHFileSystem::IsCompilable(std::string ext) noexcept + { + for (auto const& external : EXTERNALS) + { + if (ext == external) + { + return true; + } + } + + return false; + } + + bool SHFileSystem::MatchExtention(FileExt raw, FileExt compiled) noexcept + { + if (raw == GLSL_EXTENSION) + { + if (compiled == SHADER_EXTENSION || + compiled == SHADER_BUILT_IN_EXTENSION) + { + return true; + } + } + else if (raw == DDS_EXTENSION) + { + if (compiled == TEXTURE_EXTENSION) + { + return true; + } + } + else if (raw == FBX_EXTENSION) + { + if (compiled == MODEL_EXTENSION) + { + return true; + } + } + else if (raw == GLTF_EXTENSION) + { + if (compiled == MODEL_EXTENSION) + { + return true; + } + } + + return false; + } + + void SHFileSystem::BuildDirectory( + FolderPath path, + FolderPointer& root, + std::unordered_map& assetCollection, + std::vector& toGenerate) noexcept { - std::queue folderQueue; + std::stack folderStack; root = new SHFolder("root"); root->path = path; - folderQueue.push(root); + folderStack.push(root); - while (!folderQueue.empty()) + while (!folderStack.empty()) { - auto const folder = folderQueue.front(); - folderQueue.pop(); + auto const folder = folderStack.top(); + folderStack.pop(); std::vector assets; - for (auto const& dirEntry : std::filesystem::directory_iterator(folder->path)) + // Get all subfolders/files in this current folder + for (auto& dirEntry : std::filesystem::directory_iterator(folder->path)) { - auto const& path = dirEntry.path(); + auto path = dirEntry.path(); + path.make_preferred(); if (!dirEntry.is_directory()) { if (path.extension().string() == META_EXTENSION) { - //auto asset = SHAssetMetaHandler::RetrieveMetaData(path); - //assetCollection.insert({ asset.id, asset }); assets.push_back(SHAssetMetaHandler::RetrieveMetaData(path)); } else @@ -55,28 +121,101 @@ namespace SHADE path.stem().string(), path.string(), path.extension().string(), - nullptr + nullptr, + IsCompilable(path.extension().string()), + false ); } continue; } + // If item is folder + if (path.stem().string() == "bin" + || path.stem().string() == "obj" + || !std::filesystem::exists(path)) + { + SHLOG_INFO("[FileSystem] Skipped paths in directory building: {}", path.string()); + continue; + } + auto newFolder{ folder->CreateSubFolderHere(path.stem().string()) }; - folderQueue.push(newFolder); + folderStack.push(newFolder); } - for (auto const& asset : assets) + for (auto& file : folder->files) { - assetCollection.emplace(asset.id, asset); - for(auto& file : folder->files) + if (!IsRecognised(file.ext.c_str())) { + continue; + } + + bool found{ false }; + for (auto const& asset : assets) + { + if (!assetCollection.contains(asset.id)) + { + assetCollection.emplace(asset.id, asset); + } if (file.name == asset.name) { - file.assetMeta = &assetCollection[asset.id]; - break; + AssetPath path{ file.path }; + if (SHAssetMetaHandler::GetTypeFromExtension(path.extension().string()) == asset.type) + { + file.assetMeta = &assetCollection[asset.id]; + found = true; + break; + } + } + } + + if (!found) + { + toGenerate.push_back(&file); + } + } + + for (auto i {0}; i < folder->files.size(); ++i) + { + auto& file = folder->files[i]; + if (file.compilable) + { + for (auto j{ 0 }; j < folder->files.size(); ++j) + { + auto& check = folder->files[j]; + if (i == j || check.compilable) + { + continue; + } + + if (file.name == check.name) + { + if (MatchExtention(file.ext, check.ext)) + { + file.compiled = true; + } + } } } } } } + + void SHFileSystem::DestroyDirectory(FolderPointer root) noexcept + { + std::stack folderStack; + folderStack.push(root); + + while(!folderStack.empty()) + { + auto const folder = folderStack.top(); + folderStack.pop(); + + for (auto const& ptr : folder->subFolders) + { + folderStack.push(ptr); + } + + delete folder; + } + } } diff --git a/SHADE_Engine/src/Filesystem/SHFileSystem.h b/SHADE_Engine/src/Filesystem/SHFileSystem.h index 956d3916..4bace233 100644 --- a/SHADE_Engine/src/Filesystem/SHFileSystem.h +++ b/SHADE_Engine/src/Filesystem/SHFileSystem.h @@ -19,10 +19,17 @@ namespace SHADE class SHFileSystem { public: - static void BuildDirectory(FolderPath path, FolderPointer& root, std::unordered_map& assetCollection) noexcept; + static void BuildDirectory( + FolderPath path, + FolderPointer& root, + std::unordered_map& assetCollection, + std::vector& toGenerate) noexcept; + static void DestroyDirectory(FolderPointer root) noexcept; + static bool IsRecognised(char const*) noexcept; private: static bool DeleteFolder(FolderPointer location) noexcept; - + static bool IsCompilable(std::string ext) noexcept; + static bool MatchExtention(FileExt raw, FileExt compiled) noexcept; }; } \ No newline at end of file diff --git a/SHADE_Engine/src/Filesystem/SHFolder.h b/SHADE_Engine/src/Filesystem/SHFolder.h index 54e95033..234e6f19 100644 --- a/SHADE_Engine/src/Filesystem/SHFolder.h +++ b/SHADE_Engine/src/Filesystem/SHFolder.h @@ -33,6 +33,8 @@ namespace SHADE FilePath path; FileExt ext; SHAsset const* assetMeta; + bool compilable; + bool compiled; }; class SHFolder diff --git a/SHADE_Engine/src/Graphics/Buffers/SHVkBuffer.cpp b/SHADE_Engine/src/Graphics/Buffers/SHVkBuffer.cpp index 36108628..8d9c01e6 100644 --- a/SHADE_Engine/src/Graphics/Buffers/SHVkBuffer.cpp +++ b/SHADE_Engine/src/Graphics/Buffers/SHVkBuffer.cpp @@ -25,12 +25,9 @@ namespace SHADE { if (cmdBufferHdl && (bufferUsageFlags & vk::BufferUsageFlagBits::eTransferDst)) { - vk::BufferCopy copyRegion - { - .srcOffset = 0, - .dstOffset = 0, - .size = sizeStored, - }; + vk::BufferCopy copyRegion{}; + PrepareBufferCopy(copyRegion); + cmdBufferHdl->GetVkCommandBuffer().copyBuffer(stagingBuffer, vkBuffer, 1, ©Region); } } @@ -54,6 +51,13 @@ namespace SHADE vmaFlushAllocation(vmaAllocator, alloc, srcOffset, dstOffset); } + void SHVkBuffer::PrepareBufferCopy(vk::BufferCopy& bufferCopy) noexcept + { + bufferCopy.srcOffset = 0; + bufferCopy.dstOffset = 0; + bufferCopy.size = sizeStored; + } + vk::Buffer SHVkBuffer::GetVkBuffer(void) const noexcept { return vkBuffer; diff --git a/SHADE_Engine/src/Graphics/Buffers/SHVkBuffer.h b/SHADE_Engine/src/Graphics/Buffers/SHVkBuffer.h index 1119342c..edcc968f 100644 --- a/SHADE_Engine/src/Graphics/Buffers/SHVkBuffer.h +++ b/SHADE_Engine/src/Graphics/Buffers/SHVkBuffer.h @@ -106,6 +106,7 @@ namespace SHADE void ResizeNoCopy (uint32_t newSize); void ResizeReplace (uint32_t newSize, void* data, uint32_t srcSize); void FlushAllocation (uint32_t srcOffset, uint32_t dstOffset) noexcept; + void PrepareBufferCopy (vk::BufferCopy& bufferCopy) noexcept; /*-----------------------------------------------------------------------*/ /* SETTERS AND GETTERS */ diff --git a/SHADE_Engine/src/Graphics/Commands/SHVkCommandBuffer.cpp b/SHADE_Engine/src/Graphics/Commands/SHVkCommandBuffer.cpp index cc35303b..05fd4288 100644 --- a/SHADE_Engine/src/Graphics/Commands/SHVkCommandBuffer.cpp +++ b/SHADE_Engine/src/Graphics/Commands/SHVkCommandBuffer.cpp @@ -3,7 +3,7 @@ #include "SHVkCommandPool.h" #include "Graphics/Devices/SHVkLogicalDevice.h" #include "SHVkCommandPool.h" -#include "Tools/SHLogger.h" +#include "Tools/Logger/SHLogger.h" #include "Graphics/Renderpass/SHVkRenderpass.h" #include "Graphics/Framebuffer/SHVkFramebuffer.h" #include "Graphics/Pipeline/SHVkPipeline.h" diff --git a/SHADE_Engine/src/Graphics/Commands/SHVkCommandPool.cpp b/SHADE_Engine/src/Graphics/Commands/SHVkCommandPool.cpp index 375ece4d..fc9769d9 100644 --- a/SHADE_Engine/src/Graphics/Commands/SHVkCommandPool.cpp +++ b/SHADE_Engine/src/Graphics/Commands/SHVkCommandPool.cpp @@ -3,7 +3,7 @@ #include "Graphics/Devices/SHVkLogicalDevice.h" #include "Graphics/Instance/SHVkInstance.h" #include "Resource/SHResourceLibrary.h" -#include "Tools/SHLogger.h" +#include "Tools/Logger/SHLogger.h" namespace SHADE { diff --git a/SHADE_Engine/src/Graphics/Debugging/SHValidationLayersQuery.cpp b/SHADE_Engine/src/Graphics/Debugging/SHValidationLayersQuery.cpp index 420fa9e5..0dba5c5b 100644 --- a/SHADE_Engine/src/Graphics/Debugging/SHValidationLayersQuery.cpp +++ b/SHADE_Engine/src/Graphics/Debugging/SHValidationLayersQuery.cpp @@ -1,6 +1,6 @@ #include "SHPch.h" #include "SHValidationLayersQuery.h" -#include "Tools/SHLogger.h" +#include "Tools/Logger/SHLogger.h" namespace SHADE { diff --git a/SHADE_Engine/src/Graphics/Debugging/SHVkDebugMessenger.cpp b/SHADE_Engine/src/Graphics/Debugging/SHVkDebugMessenger.cpp index 3ca5c94d..fd7d55e9 100644 --- a/SHADE_Engine/src/Graphics/Debugging/SHVkDebugMessenger.cpp +++ b/SHADE_Engine/src/Graphics/Debugging/SHVkDebugMessenger.cpp @@ -3,8 +3,8 @@ #include "SHVkDebugMessenger.h" #include "SHVulkanDebugUtil.h" #include "Graphics/Instance/SHVkInstance.h" -#include "Tools/SHLogger.h" -//#include "Tools/SHLogger.h" +#include "Tools/Logger/SHLogger.h" +//#include "Tools/Logger/SHLogger.h" namespace SHADE { diff --git a/SHADE_Engine/src/Graphics/Debugging/SHVulkanDebugUtil.cpp b/SHADE_Engine/src/Graphics/Debugging/SHVulkanDebugUtil.cpp index fd39da24..eea07ed6 100644 --- a/SHADE_Engine/src/Graphics/Debugging/SHVulkanDebugUtil.cpp +++ b/SHADE_Engine/src/Graphics/Debugging/SHVulkanDebugUtil.cpp @@ -1,6 +1,6 @@ #include "SHPch.h" #include "SHVulkanDebugUtil.h" -#include "Tools/SHLogger.h" +#include "Tools/Logger/SHLogger.h" namespace SHADE { diff --git a/SHADE_Engine/src/Graphics/Descriptors/SHVkDescriptorPool.h b/SHADE_Engine/src/Graphics/Descriptors/SHVkDescriptorPool.h index c822829a..1e8d6a3e 100644 --- a/SHADE_Engine/src/Graphics/Descriptors/SHVkDescriptorPool.h +++ b/SHADE_Engine/src/Graphics/Descriptors/SHVkDescriptorPool.h @@ -38,11 +38,11 @@ namespace SHADE /// std::vector Limits = { - { vk::DescriptorType::eCombinedImageSampler, 100 }, - { vk::DescriptorType::eUniformBuffer, 100 }, - { vk::DescriptorType::eUniformBufferDynamic, 100 }, - { vk::DescriptorType::eStorageImage, 100}, - { vk::DescriptorType::eStorageBufferDynamic, 100 } + { vk::DescriptorType::eCombinedImageSampler, 1000 }, + { vk::DescriptorType::eUniformBuffer, 1000 }, + { vk::DescriptorType::eUniformBufferDynamic, 1000 }, + { vk::DescriptorType::eStorageImage, 1000 }, + { vk::DescriptorType::eStorageBufferDynamic, 1000 } }; /// /// Maximum number of descriptor sets allowed diff --git a/SHADE_Engine/src/Graphics/Descriptors/SHVkDescriptorSetGroup.cpp b/SHADE_Engine/src/Graphics/Descriptors/SHVkDescriptorSetGroup.cpp index de68c583..adb51586 100644 --- a/SHADE_Engine/src/Graphics/Descriptors/SHVkDescriptorSetGroup.cpp +++ b/SHADE_Engine/src/Graphics/Descriptors/SHVkDescriptorSetGroup.cpp @@ -6,7 +6,7 @@ #include "SHVkDescriptorPool.h" #include "Graphics/Devices/SHVkLogicalDevice.h" #include "Graphics/Descriptors/SHVkDescriptorSetLayout.h" -#include "Tools/SHLogger.h" +#include "Tools/Logger/SHLogger.h" #include "Graphics/Images/SHVkImage.h" #include "Graphics/Images/SHVkImageView.h" #include "Graphics/Images/SHVkSampler.h" diff --git a/SHADE_Engine/src/Graphics/Devices/SHVkLogicalDevice.cpp b/SHADE_Engine/src/Graphics/Devices/SHVkLogicalDevice.cpp index 808ce750..95cf2e91 100644 --- a/SHADE_Engine/src/Graphics/Devices/SHVkLogicalDevice.cpp +++ b/SHADE_Engine/src/Graphics/Devices/SHVkLogicalDevice.cpp @@ -2,7 +2,7 @@ #include "SHVkLogicalDevice.h" #include "SHVkPhysicalDevice.h" #include "Graphics/Instance/SHVkInstance.h" -#include "Tools/SHLogger.h" +#include "Tools/Logger/SHLogger.h" #include "Graphics/Windowing/Surface/SHVkSurface.h" #include "Graphics/Swapchain/SHVkSwapchain.h" #include "Graphics/Commands/SHVkCommandPool.h" @@ -459,7 +459,7 @@ namespace SHADE return SHVkInstance::GetResourceManager().Create(GetHandle(), &vmaAllocator, w, h, levels, format, usage, create); } - Handle SHVkLogicalDevice::CreateImage(SHImageCreateParams const& imageDetails, unsigned char* data, uint32_t dataSize, std::span inMipOffsets, VmaMemoryUsage memUsage, VmaAllocationCreateFlags allocFlags) noexcept + Handle SHVkLogicalDevice::CreateImage(SHImageCreateParams const& imageDetails, unsigned char* data, uint32_t dataSize, std::vector const& inMipOffsets, VmaMemoryUsage memUsage, VmaAllocationCreateFlags allocFlags) noexcept { return SHVkInstance::GetResourceManager().Create(GetHandle(), &vmaAllocator, imageDetails, data, dataSize, inMipOffsets, memUsage, allocFlags); } diff --git a/SHADE_Engine/src/Graphics/Devices/SHVkLogicalDevice.h b/SHADE_Engine/src/Graphics/Devices/SHVkLogicalDevice.h index 158c20b2..ed09b482 100644 --- a/SHADE_Engine/src/Graphics/Devices/SHVkLogicalDevice.h +++ b/SHADE_Engine/src/Graphics/Devices/SHVkLogicalDevice.h @@ -162,7 +162,7 @@ namespace SHADE SHImageCreateParams const& imageDetails, unsigned char* data, uint32_t dataSize, - std::span inMipOffsets, + std::vector const& inMipOffsets, VmaMemoryUsage memUsage, VmaAllocationCreateFlags allocFlags ) noexcept; diff --git a/SHADE_Engine/src/Graphics/Devices/SHVkPhysicalDevice.cpp b/SHADE_Engine/src/Graphics/Devices/SHVkPhysicalDevice.cpp index 53b352b7..1f40a533 100644 --- a/SHADE_Engine/src/Graphics/Devices/SHVkPhysicalDevice.cpp +++ b/SHADE_Engine/src/Graphics/Devices/SHVkPhysicalDevice.cpp @@ -3,7 +3,7 @@ #include #include #include -#include "Tools/SHLogger.h" +#include "Tools/Logger/SHLogger.h" namespace SHADE { diff --git a/SHADE_Engine/src/Graphics/Devices/SHVkPhysicalDeviceLibrary.cpp b/SHADE_Engine/src/Graphics/Devices/SHVkPhysicalDeviceLibrary.cpp index 3cf0a8e6..050ca769 100644 --- a/SHADE_Engine/src/Graphics/Devices/SHVkPhysicalDeviceLibrary.cpp +++ b/SHADE_Engine/src/Graphics/Devices/SHVkPhysicalDeviceLibrary.cpp @@ -3,7 +3,7 @@ #include #include "SHVkPhysicalDeviceLibrary.h" #include "Graphics/Instance/SHVkInstance.h" -#include "Tools/SHLogger.h" +#include "Tools/Logger/SHLogger.h" namespace SHADE { diff --git a/SHADE_Engine/src/Graphics/Framebuffer/SHVkFramebuffer.cpp b/SHADE_Engine/src/Graphics/Framebuffer/SHVkFramebuffer.cpp index 76e627d3..7a46c473 100644 --- a/SHADE_Engine/src/Graphics/Framebuffer/SHVkFramebuffer.cpp +++ b/SHADE_Engine/src/Graphics/Framebuffer/SHVkFramebuffer.cpp @@ -3,7 +3,7 @@ #include "Graphics/Images/SHVkImageView.h" #include "Graphics/Images/SHVkImage.h" #include "Graphics/Renderpass/SHVkRenderpass.h" -#include "Tools/SHLogger.h" +#include "Tools/Logger/SHLogger.h" #include "Graphics/Devices/SHVkLogicalDevice.h" namespace SHADE diff --git a/SHADE_Engine/src/Graphics/Images/SHVkImage.cpp b/SHADE_Engine/src/Graphics/Images/SHVkImage.cpp index 33bed1b5..53703924 100644 --- a/SHADE_Engine/src/Graphics/Images/SHVkImage.cpp +++ b/SHADE_Engine/src/Graphics/Images/SHVkImage.cpp @@ -2,7 +2,7 @@ #include "SHVkImage.h" #include "Graphics/Devices/SHVkLogicalDevice.h" #include "Graphics/Debugging/SHVulkanDebugUtil.h" -#include "Tools/SHLogger.h" +#include "Tools/Logger/SHLogger.h" #include "SHVkImageView.h" #include "Graphics/Instance/SHVkInstance.h" #include "Graphics/Buffers/SHVkBuffer.h" @@ -123,7 +123,7 @@ namespace SHADE SHImageCreateParams const& imageDetails, const unsigned char* data, uint32_t dataSize, - std::span inMipOffsets, + std::vector const& inMipOffsets, VmaMemoryUsage memUsage, VmaAllocationCreateFlags allocFlags ) noexcept @@ -311,6 +311,22 @@ namespace SHADE CreateFramebufferImage(); } + void SHVkImage::PrepareImageCopy(std::vector& bufferImageCopy) noexcept + { + for (uint32_t i = 0; i < mipOffsets.size(); ++i) + { + bufferImageCopy[i].bufferOffset = mipOffsets[i]; + bufferImageCopy[i].bufferRowLength = 0; // for padding + bufferImageCopy[i].bufferImageHeight = 0; // for padding + bufferImageCopy[i].imageSubresource.aspectMask = vk::ImageAspectFlagBits::eColor; // TODO: Need to change this to base it off image format. + bufferImageCopy[i].imageSubresource.mipLevel = i; + bufferImageCopy[i].imageSubresource.baseArrayLayer = 0; // TODO: Array textures not supported yet + bufferImageCopy[i].imageSubresource.layerCount = layerCount; + bufferImageCopy[i].imageOffset = vk::Offset3D{ 0,0,0 }; + bufferImageCopy[i].imageExtent = vk::Extent3D{ width >> i, height >> i, 1 }; + } + } + void SHVkImage::LinkWithExteriorImage(vk::Image inVkImage, vk::ImageType type, uint32_t inWidth, uint32_t inHeight, uint32_t inDepth, uint32_t layers, uint8_t levels, vk::Format format, vk::ImageUsageFlags flags) noexcept { vkImage = inVkImage; @@ -405,4 +421,9 @@ namespace SHADE return height; } + uint32_t SHVkImage::GetMipLevels(void) const noexcept + { + return mipLevelCount; + } + } diff --git a/SHADE_Engine/src/Graphics/Images/SHVkImage.h b/SHADE_Engine/src/Graphics/Images/SHVkImage.h index ba459def..98d8d0af 100644 --- a/SHADE_Engine/src/Graphics/Images/SHVkImage.h +++ b/SHADE_Engine/src/Graphics/Images/SHVkImage.h @@ -102,7 +102,7 @@ namespace SHADE vk::Buffer stagingBuffer; //! Mipmap offsets for initializing the vk::BufferImageCopy during transfer to GPU resource - std::span mipOffsets; + std::vector mipOffsets; //! Handle to the device that creates these images Handle device; @@ -125,7 +125,7 @@ namespace SHADE SHImageCreateParams const& imageDetails, const unsigned char* data, uint32_t dataSize, - std::span inMipOffsets, + std::vector const& inMipOffsets, VmaMemoryUsage memUsage, VmaAllocationCreateFlags allocFlags ) noexcept; @@ -142,6 +142,7 @@ namespace SHADE void TransferToDeviceResource (Handle cmdBufferHdl) noexcept; void PrepareImageTransitionInfo (vk::ImageLayout oldLayout, vk::ImageLayout newLayout, vk::ImageMemoryBarrier& barrier) noexcept; void HandleResizeFramebufferImage(uint32_t newWidth, uint32_t newHeight) noexcept; + void PrepareImageCopy (std::vector& bufferImageCopy) noexcept; /*-----------------------------------------------------------------------*/ /* GETTERS AND SETTERS */ @@ -153,6 +154,7 @@ namespace SHADE vk::Format GetImageFormat (void) const noexcept; uint32_t GetWidth (void) const noexcept; uint32_t GetHeight (void) const noexcept; + uint32_t GetMipLevels (void) const noexcept; }; } diff --git a/SHADE_Engine/src/Graphics/Images/SHVkImageView.cpp b/SHADE_Engine/src/Graphics/Images/SHVkImageView.cpp index 44b5718c..d07c66b7 100644 --- a/SHADE_Engine/src/Graphics/Images/SHVkImageView.cpp +++ b/SHADE_Engine/src/Graphics/Images/SHVkImageView.cpp @@ -2,7 +2,7 @@ #include "SHVkImageView.h" #include "SHVkImage.h" #include "Graphics/Devices/SHVkLogicalDevice.h" -#include "Tools/SHLogger.h" +#include "Tools/Logger/SHLogger.h" namespace SHADE { diff --git a/SHADE_Engine/src/Graphics/Instance/SHVkInstance.cpp b/SHADE_Engine/src/Graphics/Instance/SHVkInstance.cpp index edfe4b46..237c6fee 100644 --- a/SHADE_Engine/src/Graphics/Instance/SHVkInstance.cpp +++ b/SHADE_Engine/src/Graphics/Instance/SHVkInstance.cpp @@ -3,7 +3,7 @@ #include "Graphics/Debugging/SHValidationLayersQuery.h" #include "Graphics/Debugging/SHVkDebugMessenger.h" #include "Graphics/Devices/SHVkPhysicalDeviceLibrary.h" -#include "Tools/SHLogger.h" +#include "Tools/Logger/SHLogger.h" #include "Graphics/Devices/SHVkPhysicalDeviceLibrary.h" //#include diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHBatch.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHBatch.cpp index 1829096f..9b4b02b0 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHBatch.cpp +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHBatch.cpp @@ -27,6 +27,8 @@ of DigiPen Institute of Technology is prohibited. #include "Math/Transform/SHTransformComponent.h" #include "Graphics/MiddleEnd/GlobalData/SHGraphicsGlobalData.h" #include "Graphics/Descriptors/SHVkDescriptorPool.h" +#include "Scene/SHSceneManager.h" +#include "UI/SHUIComponent.h" namespace SHADE { @@ -43,6 +45,85 @@ namespace SHADE setAllDirtyFlags(); } + SHBatch::SHBatch(SHBatch&& rhs) + : device { rhs.device } + , pipeline { rhs.pipeline } + , referencedMatInstances { std::move(rhs.referencedMatInstances) } + , matBufferDirty { std::move(rhs.matBufferDirty) } + , subBatches { std::move(rhs.subBatches) } + , drawData { std::move(rhs.drawData) } + , transformData { std::move(rhs.transformData) } + , instancedIntegerData { std::move(rhs.instancedIntegerData) } + , matPropsData { std::move(rhs.matPropsData) } + , matPropsDataSize { rhs.matPropsDataSize } + , singleMatPropAlignedSize { rhs.singleMatPropAlignedSize } + , singleMatPropSize { rhs.singleMatPropSize } + , isCPUBuffersDirty { rhs.isCPUBuffersDirty } + , drawDataBuffer { rhs.drawDataBuffer } + , transformDataBuffer { rhs.transformDataBuffer } + , instancedIntegerBuffer { rhs.instancedIntegerBuffer } + , matPropsBuffer { rhs.matPropsBuffer } + , matPropsDescSet { rhs.matPropsDescSet } + { + rhs.drawDataBuffer = {}; + rhs.transformDataBuffer = {}; + rhs.instancedIntegerBuffer = {}; + rhs.matPropsBuffer = {}; + rhs.matPropsDescSet = {}; + } + + SHBatch& SHBatch::operator=(SHBatch&& rhs) + { + if (this == &rhs) + return *this; + + device = rhs.device ; + pipeline = rhs.pipeline ; + referencedMatInstances = std::move(rhs.referencedMatInstances); + matBufferDirty = std::move(rhs.matBufferDirty) ; + subBatches = std::move(rhs.subBatches) ; + drawData = std::move(rhs.drawData) ; + transformData = std::move(rhs.transformData) ; + instancedIntegerData = std::move(rhs.instancedIntegerData) ; + matPropsData = std::move(rhs.matPropsData) ; + matPropsDataSize = rhs.matPropsDataSize ; + singleMatPropAlignedSize = rhs.singleMatPropAlignedSize ; + singleMatPropSize = rhs.singleMatPropSize ; + isCPUBuffersDirty = rhs.isCPUBuffersDirty ; + drawDataBuffer = rhs.drawDataBuffer ; + transformDataBuffer = rhs.transformDataBuffer ; + instancedIntegerBuffer = rhs.instancedIntegerBuffer ; + matPropsBuffer = rhs.matPropsBuffer ; + matPropsDescSet = rhs.matPropsDescSet ; + + // Unset values + rhs.drawDataBuffer = {}; + rhs.transformDataBuffer = {}; + rhs.instancedIntegerBuffer = {}; + rhs.matPropsBuffer = {}; + rhs.matPropsDescSet = {}; + + return *this; + } + + SHBatch::~SHBatch() + { + // Free GPU buffers + for (int i = 0; i < SHGraphicsConstants::NUM_FRAME_BUFFERS; ++i) + { + if (drawDataBuffer[i]) + drawDataBuffer[i].Free(); + if (transformDataBuffer[i]) + transformDataBuffer[i].Free(); + if (instancedIntegerBuffer[i]) + instancedIntegerBuffer[i].Free(); + if (matPropsBuffer[i]) + matPropsBuffer[i].Free(); + if (matPropsDescSet[i]) + matPropsDescSet[i].Free(); + } + } + void SHBatch::Add(const SHRenderable* renderable) { // Ignore if null @@ -139,9 +220,13 @@ namespace SHADE for (int i = 0; i < SHGraphicsConstants::NUM_FRAME_BUFFERS; ++i) { drawDataBuffer[i].Free(); + drawDataBuffer[i] = {}; transformDataBuffer[i].Free(); + transformDataBuffer[i] = {}; instancedIntegerBuffer[i].Free(); + instancedIntegerBuffer[i] = {}; matPropsBuffer[i].Free(); + matPropsBuffer[i] = {}; } } @@ -223,7 +308,28 @@ namespace SHADE auto transform = SHComponentManager::GetComponent(rendId); if (transform) { - transformData.emplace_back(transform->GetTRS()); + if (SHSceneManager::CheckNodeAndComponentsActive(rendId)) + { + auto uiComp = SHComponentManager::GetComponent_s(rendId); + if (uiComp) + { + transformData.emplace_back(uiComp->GetMatrix()); + } + else + transformData.emplace_back(transform->GetTRS()); + } + else + { + // Should be deactivated + static const SHMatrix ZERO_MTX = + { + 0.0f, 0.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 0.0f, 0.0f + }; + transformData.emplace_back(ZERO_MTX); + } } else { @@ -345,15 +451,30 @@ namespace SHADE for (auto rendId : subBatch.Renderables) { // Transform - auto transform = SHComponentManager::GetComponent_s(rendId); - if (!transform) + auto transform = SHComponentManager::GetComponent_s(rendId); + if (transform) { - SHLOG_WARNING("[SHBatch] Entity contianing a SHRenderable with no SHTransformComponent found!"); - transformData.emplace_back(); + if (SHSceneManager::CheckNodeAndComponentsActive(rendId)) + { + transformData.emplace_back(transform->GetTRS()); + } + else + { + // Should be deactivated + static const SHMatrix ZERO_MTX = + { + 0.0f, 0.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 0.0f, 0.0f + }; + transformData.emplace_back(ZERO_MTX); + } } else { - transformData.emplace_back(transform->GetTRS()); + SHLOG_WARNING("[SHBatch] Entity contianing a SHRenderable with no SHTransformComponent found!"); + transformData.emplace_back(); } const SHRenderable* renderable = SHComponentManager::GetComponent(rendId); @@ -428,9 +549,13 @@ namespace SHADE return; } + // Nothing to draw + if (subBatches.empty()) + return; + // Bind all required objects before drawing static std::array dynamicOffset{ 0 }; - cmdBuffer->BeginLabeledSegment("SHBatch"); + cmdBuffer->BeginLabeledSegment("SHBatch for Pipeline #" + std::to_string(pipeline.GetId().Data.Index)); cmdBuffer->BindPipeline(pipeline); cmdBuffer->BindVertexBuffer(SHGraphicsConstants::VertexBufferBindings::TRANSFORM, transformDataBuffer[frameIndex], 0); cmdBuffer->BindVertexBuffer(SHGraphicsConstants::VertexBufferBindings::INTEGER_DATA, instancedIntegerBuffer[frameIndex], 0); diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHBatch.h b/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHBatch.h index c9dd4eda..dd4d33fd 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHBatch.h +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHBatch.h @@ -71,6 +71,11 @@ namespace SHADE /* Constructor/Destructors */ /*-----------------------------------------------------------------------------*/ SHBatch(Handle pipeline); + SHBatch(const SHBatch&) = delete; + SHBatch(SHBatch&& rhs); + SHBatch& operator=(const SHBatch&) = delete; + SHBatch& operator=(SHBatch&& rhs); + ~SHBatch(); /*-----------------------------------------------------------------------------*/ /* Usage Functions */ @@ -117,7 +122,7 @@ namespace SHADE std::unique_ptr matPropsData; Byte matPropsDataSize = 0; Byte singleMatPropAlignedSize = 0; - Byte singleMatPropSize = 0; + Byte singleMatPropSize = 0; bool isCPUBuffersDirty = true; // GPU Buffers TripleBuffer drawDataBuffer; diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHBatcher.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHBatcher.cpp index dc44e7f9..41aebeb6 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHBatcher.cpp +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHBatcher.cpp @@ -22,7 +22,7 @@ of DigiPen Institute of Technology is prohibited. #include "Graphics/MiddleEnd/Interface/SHMaterialInstance.h" #include "Graphics/Pipeline/SHVkPipeline.h" #include "ECS_Base/Managers/SHComponentManager.h" -#include "Tools/SHLogger.h" +#include "Tools/Logger/SHLogger.h" namespace SHADE { diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHSuperBatch.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHSuperBatch.cpp index b827652e..ec19691f 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHSuperBatch.cpp +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHSuperBatch.cpp @@ -55,13 +55,14 @@ namespace SHADE void SHSuperBatch::Remove(const SHRenderable* renderable) noexcept { - const Handle PIPELINE = renderable->GetMaterial()->GetBaseMaterial()->GetPipeline(); + Handle baseMat = (renderable->HasMaterialChanged() ? renderable->GetPrevMaterial() : renderable->GetMaterial())->GetBaseMaterial(); + const Handle PIPELINE = baseMat->HasPipelineChanged() ? baseMat->GetPrevPipeline() : baseMat->GetPipeline(); // Check if we have a Batch with the same pipeline yet auto batch = std::find_if(batches.begin(), batches.end(), [&](const SHBatch& batch) - { - return batch.GetPipeline() == PIPELINE; - }); + { + return batch.GetPipeline() == PIPELINE; + }); // Attempt to remove if it exists if (batch == batches.end()) @@ -69,9 +70,9 @@ namespace SHADE batch->Remove(renderable); - // If batch is empty, remove batch - if (batch->IsEmpty()) - batches.erase(batch); + // TODO: If the pipeline is unloaded, we remove the batch + /*if (batch->IsEmpty() && !batch->GetPipeline()) + batches.erase(batch);*/ } void SHSuperBatch::Clear() noexcept diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/GlobalData/SHGraphicsGlobalData.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/GlobalData/SHGraphicsGlobalData.cpp index 53adf2fe..d0fbaf2c 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/GlobalData/SHGraphicsGlobalData.cpp +++ b/SHADE_Engine/src/Graphics/MiddleEnd/GlobalData/SHGraphicsGlobalData.cpp @@ -5,7 +5,7 @@ #include "Graphics/Pipeline/SHVkPipelineLayout.h" #include "Graphics/Descriptors/SHVkDescriptorSetLayout.h" #include "Graphics/MiddleEnd/Lights/SHLightData.h" -#include "Tools/SHUtilities.h" +#include "Tools/Utilities/SHUtilities.h" namespace SHADE { @@ -60,7 +60,7 @@ namespace SHADE }); - for (uint32_t i = 1; i <= SHUtilities::ToUnderlying(SH_LIGHT_TYPE::NUM_TYPES); ++i) + for (uint32_t i = 1; i <= SHUtilities::ConvertEnum(SH_LIGHT_TYPE::NUM_TYPES); ++i) { lightBindings.push_back (SHVkDescriptorSetLayout::Binding { @@ -97,6 +97,8 @@ namespace SHADE Handle materialDataPerInstanceLayout = logicalDevice->CreateDescriptorSetLayout(SHGraphicsConstants::DescriptorSetIndex::PER_INSTANCE, { materialDataBinding }); SET_VK_OBJ_NAME(logicalDevice, vk::ObjectType::eDescriptorSetLayout, materialDataPerInstanceLayout->GetVkHandle(), "[Descriptor Set Layout] Material Globals"); + + globalDescSetLayouts.push_back(staticGlobalLayout); globalDescSetLayouts.push_back(dynamicGlobalLayout); globalDescSetLayouts.push_back(cameraDataGlobalLayout); diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHDebugDrawSystem.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHDebugDrawSystem.cpp index daa6a23d..0bfa89a2 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHDebugDrawSystem.cpp +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHDebugDrawSystem.cpp @@ -90,7 +90,7 @@ namespace SHADE auto const& RENDERERS = GFX_SYSTEM->GetDefaultViewport()->GetRenderers(); auto renderGraph = RENDERERS[SHGraphicsConstants::RenderGraphIndices::WORLD]->GetRenderGraph(); auto subPass = renderGraph->GetNode("Debug Draw")->GetSubpass("Debug Draw"); - subPass->AddExteriorDrawCalls([this, GFX_SYSTEM](Handle& cmdBuffer) + subPass->AddExteriorDrawCalls([this, GFX_SYSTEM](Handle& cmdBuffer, uint32_t frameIndex) { // Get Current frame index const uint32_t FRAME_IDX = GFX_SYSTEM->GetCurrentFrameIndex(); @@ -106,7 +106,7 @@ namespace SHADE } }); auto subPassWithDepth = renderGraph->GetNode("Debug Draw with Depth")->GetSubpass("Debug Draw with Depth"); - subPassWithDepth->AddExteriorDrawCalls([this, GFX_SYSTEM](Handle& cmdBuffer) + subPassWithDepth->AddExteriorDrawCalls([this, GFX_SYSTEM](Handle& cmdBuffer, uint32_t frameIndex) { // Get Current frame index const uint32_t FRAME_IDX = GFX_SYSTEM->GetCurrentFrameIndex(); @@ -317,13 +317,14 @@ namespace SHADE void SHDebugDrawSystem::drawSphere(std::vector& storage, const SHVec4& color, const SHVec3& pos, double radius) { - if (spherePoints.empty()) + //if (spherePoints.empty()) { + spherePoints.clear(); // Generate static const SHMeshData SPHERE = SHPrimitiveGenerator::Sphere(); for (const auto& idx : SPHERE.Indices) { - spherePoints.emplace_back(SPHERE.VertexPositions[idx] * radius); + spherePoints.emplace_back(SPHERE.VertexPositions[idx] * radius + pos); } } drawLineSet(storage, color, spherePoints.begin(), spherePoints.end()); diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsConstants.h b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsConstants.h index 0a67cd9f..e6051841 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsConstants.h +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsConstants.h @@ -66,7 +66,9 @@ namespace SHADE /***************************************************************************/ /*! \brief - DescriptorSet Index for render graph resources. + DescriptorSet Index for render graph resources. Unlike the sets from + 1 to 3 and 6, this set index does not have hard coded bindings and is + NOT part of the layouts included in the global data. */ /***************************************************************************/ static constexpr uint32_t RENDERGRAPH_RESOURCE = 4; @@ -75,13 +77,21 @@ namespace SHADE \brief DescriptorSet Index for render graph node compute resources. For data that we wish to pass to compute shaders in the render graph, this is - the set to use. Unlike the sets from 1 to 3, this set index does not have + the set to use. Unlike the sets from 1 to 3 and 6, this set index does not have hard coded bindings and is NOT part of the layouts included in the global data. */ /***************************************************************************/ static constexpr uint32_t RENDERGRAPH_NODE_COMPUTE_RESOURCE = 5; + /***************************************************************************/ + /*! + \brief + To store font data. + + */ + /***************************************************************************/ + static constexpr uint32_t FONT_DATA = 4; }; struct DescriptorSetBindings @@ -107,7 +117,7 @@ namespace SHADE /***************************************************************************/ /*! \brief - DescriptorSet binding for combined image sampler data. + DescriptorSet binding for light data. */ /***************************************************************************/ @@ -116,7 +126,7 @@ namespace SHADE /***************************************************************************/ /*! \brief - DescriptorSet binding for lights. + DescriptorSet binding for camera data. */ /***************************************************************************/ @@ -130,6 +140,24 @@ namespace SHADE /***************************************************************************/ static constexpr uint32_t BATCHED_PER_INST_DATA = 0; + /***************************************************************************/ + /*! + \brief + Descriptor set binding for font bitmaps. + + */ + /***************************************************************************/ + static constexpr uint32_t FONT_BITMAP_DATA = 0; + + /***************************************************************************/ + /*! + \brief + Descriptor set binding for font matrix data. + + */ + /***************************************************************************/ + static constexpr uint32_t FONT_MATRIX_DATA = 1; + }; struct VertexBufferBindings @@ -177,6 +205,10 @@ namespace SHADE /***************************************************************************/ static constexpr uint32_t INTEGER_DATA = 5; + static constexpr uint32_t CALCULATED_GLYPH_POSITION = 0; + static constexpr uint32_t GLYPH_INDEX = 1; + + }; /*******************************************************************************/ diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.cpp index 15c8ec5d..af09c819 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.cpp +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.cpp @@ -42,6 +42,8 @@ of DigiPen Institute of Technology is prohibited. #include "Graphics/SHVkUtil.h" #include "Graphics/RenderGraph/SHRenderGraphNodeCompute.h" #include "../Meshes/SHPrimitiveGenerator.h" +#include "Graphics/MiddleEnd/TextRendering/SHFreetypeInstance.h" +#include "Graphics/MiddleEnd/TextRendering/SHTextRenderingSubSystem.h" namespace SHADE { @@ -82,7 +84,7 @@ namespace SHADE if (width == 0 || height == 0) return; - PrepareResize(resizeWidth, resizeHeight); + PrepareResize(width, height); }); window->RegisterWindowCloseCallback([&](void) @@ -115,14 +117,29 @@ namespace SHADE // Create generic command buffer graphicsCmdPool = device->CreateCommandPool(SH_QUEUE_FAMILY_ARRAY_INDEX::GRAPHICS, SH_CMD_POOL_RESET::POOL_BASED, true); + SHFreetypeInstance::Init(); + + //SHAssetManager::CompileAsset("../../Assets/Shaders/Text_VS.glsl", false); + //SHAssetManager::CompileAsset("../../Assets/Shaders/Text_FS.glsl", false); + //SHAssetManager::CompileAsset("../../Assets/Shaders/TestCube_VS.glsl", false); + //SHAssetManager::CompileAsset("../../Assets/Shaders/UI_VS.glsl", false); + //SHAssetManager::CompileAsset("../../Assets/Shaders/UI_FS.glsl", false); + //SHAssetManager::CompileAsset("../../Assets/Models/Quad.gltf", false); + //SHAssetManager::CompileAsset("../../Assets/Shaders/ToSwapchain_VS.glsl", false); + //SHAssetManager::CompileAsset("../../Assets/Shaders/ToSwapchain_FS.glsl", false); + // Load Built In Shaders - static constexpr AssetID VS_DEFAULT = 39210065; defaultVertShader = SHResourceManager::LoadOrGet(VS_DEFAULT); - static constexpr AssetID FS_DEFAULT = 46377769; defaultFragShader = SHResourceManager::LoadOrGet(FS_DEFAULT); - static constexpr AssetID VS_DEBUG = 48002439; debugVertShader = SHResourceManager::LoadOrGet(VS_DEBUG); - static constexpr AssetID FS_DEBUG = 36671027; debugFragShader = SHResourceManager::LoadOrGet(FS_DEBUG); - static constexpr AssetID CS_COMPOSITE = 45072428; deferredCompositeShader = SHResourceManager::LoadOrGet(CS_COMPOSITE); - static constexpr AssetID SSAO = 38430899; ssaoShader = SHResourceManager::LoadOrGet(SSAO); - static constexpr AssetID SSAO_BLUR = 39760835; ssaoBlurShader = SHResourceManager::LoadOrGet(SSAO_BLUR); + static constexpr AssetID VS_DEFAULT = 39210065; defaultVertShader = SHResourceManager::LoadOrGet(VS_DEFAULT); + static constexpr AssetID FS_DEFAULT = 46377769; defaultFragShader = SHResourceManager::LoadOrGet(FS_DEFAULT); + static constexpr AssetID VS_DEBUG = 48002439; debugVertShader = SHResourceManager::LoadOrGet(VS_DEBUG); + static constexpr AssetID FS_DEBUG = 36671027; debugFragShader = SHResourceManager::LoadOrGet(FS_DEBUG); + static constexpr AssetID CS_COMPOSITE = 45072428; deferredCompositeShader = SHResourceManager::LoadOrGet(CS_COMPOSITE); + static constexpr AssetID SSAO = 38430899; ssaoShader = SHResourceManager::LoadOrGet(SSAO); + static constexpr AssetID SSAO_BLUR = 39760835; ssaoBlurShader = SHResourceManager::LoadOrGet(SSAO_BLUR); + static constexpr AssetID TEXT_VS = 39816727; textVS = SHResourceManager::LoadOrGet(TEXT_VS); + static constexpr AssetID TEXT_FS = 38024754; textFS = SHResourceManager::LoadOrGet(TEXT_FS); + static constexpr AssetID RENDER_SC_VS = 48082949; renderToSwapchainVS = SHResourceManager::LoadOrGet(RENDER_SC_VS); + static constexpr AssetID RENDER_SC_FS = 36869006; renderToSwapchainFS = SHResourceManager::LoadOrGet(RENDER_SC_FS); } void SHGraphicsSystem::InitSceneRenderGraph(void) noexcept @@ -149,6 +166,8 @@ namespace SHADE worldCamera->SetLookAt(SHVec3(0.0f, 0.0f, 0.0f), SHVec3(0.0f, 0.0f, -2.0f), SHVec3(0.0f, 1.0f, 0.0f)); worldCamera->SetPerspective(90.0f, static_cast(windowDims.first), static_cast(windowDims.second), 0.0f, 100.0f); + worldCameraDirector = cameraSystem->CreateDirector(); + // Create Default Viewport worldViewport = AddViewport(vk::Viewport(0.0f, 0.0f, static_cast(window->GetWindowSize().first), static_cast(window->GetWindowSize().second), 0.0f, 1.0f)); @@ -162,20 +181,21 @@ namespace SHADE } /*-----------------------------------------------------------------------*/ - /* SCENE RENDER GRAPH RESOURCES */ + /* WORLD RENDER GRAPH RESOURCES */ /*-----------------------------------------------------------------------*/ // Initialize world render graph - worldRenderGraph->Init("World Render Graph", device, swapchain); - worldRenderGraph->AddResource("Position", { SH_ATT_DESC_TYPE_FLAGS::COLOR, SH_ATT_DESC_TYPE_FLAGS::INPUT, SH_ATT_DESC_TYPE_FLAGS::STORAGE }, windowDims.first, windowDims.second, vk::Format::eR32G32B32A32Sfloat); - worldRenderGraph->AddResource("Normals", { SH_ATT_DESC_TYPE_FLAGS::COLOR, SH_ATT_DESC_TYPE_FLAGS::INPUT, SH_ATT_DESC_TYPE_FLAGS::STORAGE }, windowDims.first, windowDims.second, vk::Format::eR32G32B32A32Sfloat); + worldRenderGraph->Init("World Render Graph", device, swapchain, &resourceManager); + worldRenderGraph->AddResource("Position", { SH_RENDER_GRAPH_RESOURCE_FLAGS::COLOR, SH_RENDER_GRAPH_RESOURCE_FLAGS::INPUT, SH_RENDER_GRAPH_RESOURCE_FLAGS::STORAGE }, windowDims.first, windowDims.second, vk::Format::eR32G32B32A32Sfloat); + worldRenderGraph->AddResource("Normals", { SH_RENDER_GRAPH_RESOURCE_FLAGS::COLOR, SH_RENDER_GRAPH_RESOURCE_FLAGS::INPUT, SH_RENDER_GRAPH_RESOURCE_FLAGS::STORAGE }, windowDims.first, windowDims.second, vk::Format::eR32G32B32A32Sfloat); //worldRenderGraph->AddResource("Tangents", { SH_ATT_DESC_TYPE_FLAGS::COLOR, SH_ATT_DESC_TYPE_FLAGS::INPUT, SH_ATT_DESC_TYPE_FLAGS::STORAGE }, windowDims.first, windowDims.second, vk::Format::eR32G32B32A32Sfloat); - worldRenderGraph->AddResource("Albedo", { SH_ATT_DESC_TYPE_FLAGS::COLOR, SH_ATT_DESC_TYPE_FLAGS::INPUT, SH_ATT_DESC_TYPE_FLAGS::STORAGE }, windowDims.first, windowDims.second); - worldRenderGraph->AddResource("Depth Buffer", { SH_ATT_DESC_TYPE_FLAGS::DEPTH_STENCIL }, windowDims.first, windowDims.second, vk::Format::eD32SfloatS8Uint); - worldRenderGraph->AddResource("Entity ID", { SH_ATT_DESC_TYPE_FLAGS::COLOR }, windowDims.first, windowDims.second, vk::Format::eR32Uint, 1, vk::ImageUsageFlagBits::eTransferSrc); - worldRenderGraph->AddResource("Light Layer Indices", { SH_ATT_DESC_TYPE_FLAGS::COLOR, SH_ATT_DESC_TYPE_FLAGS::INPUT, SH_ATT_DESC_TYPE_FLAGS::STORAGE }, windowDims.first, windowDims.second, vk::Format::eR32Uint, 1, vk::ImageUsageFlagBits::eTransferSrc); - worldRenderGraph->AddResource("Scene", { SH_ATT_DESC_TYPE_FLAGS::COLOR, SH_ATT_DESC_TYPE_FLAGS::INPUT, SH_ATT_DESC_TYPE_FLAGS::STORAGE }, windowDims.first, windowDims.second); - worldRenderGraph->AddResource("SSAO", { SH_ATT_DESC_TYPE_FLAGS::COLOR, SH_ATT_DESC_TYPE_FLAGS::INPUT, SH_ATT_DESC_TYPE_FLAGS::STORAGE }, windowDims.first, windowDims.second, vk::Format::eR8Unorm); - worldRenderGraph->AddResource("SSAO Blur", { SH_ATT_DESC_TYPE_FLAGS::COLOR, SH_ATT_DESC_TYPE_FLAGS::INPUT, SH_ATT_DESC_TYPE_FLAGS::STORAGE }, windowDims.first, windowDims.second, vk::Format::eR8Unorm); + worldRenderGraph->AddResource("Albedo", { SH_RENDER_GRAPH_RESOURCE_FLAGS::COLOR, SH_RENDER_GRAPH_RESOURCE_FLAGS::INPUT, SH_RENDER_GRAPH_RESOURCE_FLAGS::STORAGE }, windowDims.first, windowDims.second); + worldRenderGraph->AddResource("Depth Buffer", { SH_RENDER_GRAPH_RESOURCE_FLAGS::DEPTH_STENCIL }, windowDims.first, windowDims.second, vk::Format::eD32SfloatS8Uint); + worldRenderGraph->AddResource("Entity ID", { SH_RENDER_GRAPH_RESOURCE_FLAGS::COLOR, SH_RENDER_GRAPH_RESOURCE_FLAGS::SHARED }, windowDims.first, windowDims.second, vk::Format::eR32Uint, 1, vk::ImageUsageFlagBits::eTransferSrc); + worldRenderGraph->AddResource("Light Layer Indices", { SH_RENDER_GRAPH_RESOURCE_FLAGS::COLOR, SH_RENDER_GRAPH_RESOURCE_FLAGS::INPUT, SH_RENDER_GRAPH_RESOURCE_FLAGS::STORAGE }, windowDims.first, windowDims.second, vk::Format::eR32Uint, 1, vk::ImageUsageFlagBits::eTransferSrc); + worldRenderGraph->AddResource("Scene", { SH_RENDER_GRAPH_RESOURCE_FLAGS::COLOR, SH_RENDER_GRAPH_RESOURCE_FLAGS::INPUT, SH_RENDER_GRAPH_RESOURCE_FLAGS::STORAGE, SH_RENDER_GRAPH_RESOURCE_FLAGS::SHARED }, windowDims.first, windowDims.second); + worldRenderGraph->AddResource("SSAO", { SH_RENDER_GRAPH_RESOURCE_FLAGS::COLOR, SH_RENDER_GRAPH_RESOURCE_FLAGS::INPUT, SH_RENDER_GRAPH_RESOURCE_FLAGS::STORAGE }, windowDims.first, windowDims.second, vk::Format::eR8Unorm); + worldRenderGraph->AddResource("SSAO Blur", { SH_RENDER_GRAPH_RESOURCE_FLAGS::COLOR, SH_RENDER_GRAPH_RESOURCE_FLAGS::INPUT, SH_RENDER_GRAPH_RESOURCE_FLAGS::STORAGE }, windowDims.first, windowDims.second, vk::Format::eR8Unorm); + /*-----------------------------------------------------------------------*/ /* MAIN NODE */ @@ -205,7 +225,7 @@ namespace SHADE gBufferSubpass->AddColorOutput("Normals"); //gBufferSubpass->AddColorOutput("Tangents"); gBufferSubpass->AddColorOutput("Albedo"); - gBufferSubpass->AddDepthOutput("Depth Buffer", SH_ATT_DESC_TYPE_FLAGS::DEPTH_STENCIL); + gBufferSubpass->AddDepthOutput("Depth Buffer", SH_RENDER_GRAPH_RESOURCE_FLAGS::DEPTH_STENCIL); /*-----------------------------------------------------------------------*/ /* SSAO PASS AND DATA INIT */ @@ -250,25 +270,66 @@ namespace SHADE /*-----------------------------------------------------------------------*/ gBufferNode->AddNodeCompute("Deferred Composite", deferredCompositeShader, {"Position", "Normals", "Albedo", "Light Layer Indices", "SSAO Blur", "Scene"}); - // Dummy Node - auto dummyNode = worldRenderGraph->AddNode("Dummy Pass", { "Scene" }, { "Debug Draw" }); // no predecessors - auto dummySubpass = dummyNode->AddSubpass("Dummy Subpass"); - dummySubpass->AddInput("Scene"); + { + //// Dummy Node to transition scene render graph resource + //auto dummyNode = worldRenderGraph->AddNode("Dummy Pass", { "Scene" }, { "Debug Draw" }); // no predecessors + //auto dummySubpass = dummyNode->AddSubpass("Dummy Subpass"); + //dummySubpass->AddInput("Scene"); + } /*-----------------------------------------------------------------------*/ - /* GENERATE RENDER GRAPH */ + /* GENERATE WORLD RENDER GRAPH */ /*-----------------------------------------------------------------------*/ // Generate world render graph worldRenderGraph->Generate(); + + /*-----------------------------------------------------------------------*/ + /* SCREEN RENDER GRAPH */ + /*-----------------------------------------------------------------------*/ + // Initialize screen render graph + screenRenderGraph = resourceManager.Create(); + screenRenderGraph->Init("Screen Render Graph", device, swapchain, &resourceManager); + screenRenderGraph->LinkNonOwningResource(worldRenderGraph, "Scene"); + screenRenderGraph->LinkNonOwningResource(worldRenderGraph, "Entity ID"); + screenRenderGraph->AddResource("Present", { SH_RENDER_GRAPH_RESOURCE_FLAGS::COLOR_PRESENT }, windowDims.first, windowDims.second); + + auto screenSpaceNode = screenRenderGraph->AddNode("Screen Space Pass", { "Scene", "Entity ID"}, {}); + auto uiSubpass = screenSpaceNode->AddSubpass("UI"); + uiSubpass->AddColorOutput("Scene"); + uiSubpass->AddColorOutput("Entity ID"); + uiSubpass->AddExteriorDrawCalls([=](Handle& cmdBuffer, uint32_t frameIndex) + { + textRenderingSubSystem->Render(cmdBuffer, frameIndex); + }); + +#ifdef SHEDITOR + { + // Dummy Node to transition scene render graph resource + auto dummyNode = screenRenderGraph->AddNode("Dummy Pass", { "Scene" }, { "Screen Space Pass" }); // no predecessors + auto dummySubpass = dummyNode->AddSubpass("Dummy Subpass"); + dummySubpass->AddInput("Scene"); + } + +#else + screenRenderGraph->AddRenderToSwapchainNode("Scene", "Present", {"Screen Space Pass"}, {renderToSwapchainVS, renderToSwapchainFS}); +#endif + + screenRenderGraph->Generate(); + /*-----------------------------------------------------------------------*/ /* BIND RENDER GRAPH TO RENDERER */ /*-----------------------------------------------------------------------*/ // Add world renderer to default viewport worldRenderer = worldViewport->AddRenderer(resourceManager, swapchain->GetNumImages(), renderContextCmdPools, descPool, SHGraphicsGlobalData::GetDescSetLayouts()[SHGraphicsConstants::DescriptorSetIndex::HIGH_FREQUENCY_GLOBALS], worldRenderGraph); worldRenderer->SetCamera(worldCamera); + worldRenderer->SetCameraDirector(worldCameraDirector); + + // Add screen renderer to default viewport + screenRenderer = worldViewport->AddRenderer(resourceManager, swapchain->GetNumImages(), renderContextCmdPools, descPool, SHGraphicsGlobalData::GetDescSetLayouts()[SHGraphicsConstants::DescriptorSetIndex::HIGH_FREQUENCY_GLOBALS], screenRenderGraph); + screenRenderer->SetCamera(screenCamera); + screenRenderer->SetCameraDirector(worldCameraDirector); - worldRenderer->SetCameraDirector(cameraSystem->CreateDirector()); // Create debug draw pipeline debugDrawPipeline = createDebugDrawPipeline(debugDrawNode->GetRenderpass(), debugDrawSubpass); @@ -315,6 +376,16 @@ namespace SHADE lightingSubSystem = resourceManager.Create(); lightingSubSystem->Init(device, descPool); + + textRenderingSubSystem = resourceManager.Create(); + + // initialize the text renderer + auto uiNode = screenRenderGraph->GetNode("Screen Space Pass"); + textRenderingSubSystem->Init(device, uiNode->GetRenderpass(), uiNode->GetSubpass("UI"), descPool, textVS, textFS, [=](Handle cmdBuffer, uint32_t frameIndex) + { + screenRenderer->BindDescSet(cmdBuffer, frameIndex); + }); + } void SHGraphicsSystem::InitBuiltInResources(void) @@ -355,8 +426,8 @@ namespace SHADE for (uint32_t i = 0; i < renderContextCmdPools.size(); ++i) renderContextCmdPools[i] = renderContext.GetFrameData(i).cmdPoolHdls[0]; - editorRenderGraph->Init("Editor Render Graph", device, swapchain); - editorRenderGraph->AddResource("Present", { SH_ATT_DESC_TYPE_FLAGS::COLOR_PRESENT }, windowDims.first, windowDims.second); + editorRenderGraph->Init("Editor Render Graph", device, swapchain, &resourceManager); + editorRenderGraph->AddResource("Present", { SH_RENDER_GRAPH_RESOURCE_FLAGS::COLOR_PRESENT }, windowDims.first, windowDims.second); auto imguiNode = editorRenderGraph->AddNode("ImGui Node", { "Present"}, {}); @@ -385,6 +456,7 @@ namespace SHADE void SHGraphicsSystem::Exit(void) { + SHFreetypeInstance::Exit(); } #pragma endregion INIT_EXIT @@ -454,6 +526,8 @@ namespace SHADE #endif } + textRenderingSubSystem->Run(frameIndex); + // For every viewport for (int vpIndex = 0; vpIndex < static_cast(viewports.size()); ++vpIndex) { @@ -513,7 +587,7 @@ namespace SHADE { auto editorSystem = SHSystemManager::GetSystem(); if (editorSystem->editorState != SHEditor::State::PLAY) - worldRenderer->UpdateDataAndBind(currentCmdBuffer, frameIndex, cameraSystem->GetEditorCamera()->GetViewMatrix(), cameraSystem->GetEditorCamera()->GetProjMatrix()); + worldRenderer->UpdateDataAndBind(currentCmdBuffer, frameIndex, cameraSystem->GetEditorCamera()->GetViewMatrix(), cameraSystem->GetEditorCamera()->GetProjMatrix(), cameraSystem->GetEditorCamera()->GetOrthoMatrix()); else renderers[renIndex]->UpdateDataAndBind(currentCmdBuffer, frameIndex); } @@ -570,13 +644,6 @@ namespace SHADE return; } - // Finalise all batches - for (auto vp : viewports) - for (auto renderer : vp->GetRenderers()) - { - renderer->GetRenderGraph()->FinaliseBatch(renderContext.GetCurrentFrame(), descPool); - } - // Resize auto windowDims = window->GetWindowSize(); if (renderContext.GetResizeAndReset()) @@ -591,6 +658,13 @@ namespace SHADE // #BackEndTest: For for the fence initialized by queue submit renderContext.WaitForFence(); + // Finalise all batches + for (auto vp : viewports) + for (auto renderer : vp->GetRenderers()) + { + renderer->GetRenderGraph()->FinaliseBatch(renderContext.GetCurrentFrame(), descPool); + } + // #BackEndTest: Acquire the next image in the swapchain available renderContext.AcquireNextIamge(); const uint32_t CURR_FRAME_IDX_2 = renderContext.GetCurrentFrame(); @@ -602,8 +676,6 @@ namespace SHADE if (currFrameData.cmdPoolHdls.empty()) throw std::runtime_error("No command pools available!"); currFrameData.cmdPoolHdls[0]->Reset(); - - } /***************************************************************************/ @@ -710,6 +782,11 @@ namespace SHADE return resourceManager.Create(materialInst->GetBaseMaterial()); } + std::pair, typename SHResourceHub::dense_iterator> SHGraphicsSystem::GetAllMaterialInstances() + { + return resourceManager.GetDenseAccess(); + } + void SHGraphicsSystem::RemoveMaterialInstance(Handle materialInstance) { resourceManager.Free(materialInstance); @@ -758,7 +835,7 @@ namespace SHADE /*---------------------------------------------------------------------------------*/ Handle SHGraphicsSystem::AddTexture(const SHTextureAsset& texAsset) { - const int MIPS = texAsset.mipOffsets.size(); + const int MIPS = static_cast (texAsset.mipOffsets.size()); auto sampler = samplerCache.GetSampler(device, SHVkSamplerParams { .maxLod = static_cast(MIPS) }); SET_VK_OBJ_NAME(device, vk::ObjectType::eSampler, sampler->GetVkSampler(), "[Sampler] Mips " + std::to_string(MIPS)); return texLibrary.Add(texAsset, sampler); @@ -766,7 +843,7 @@ namespace SHADE SHADE::Handle SHGraphicsSystem::AddTexture(uint32_t pixelCount, const SHTexture::PixelChannel* const pixelData, uint32_t width, uint32_t height, SHTexture::TextureFormat format, std::vector mipOffsets) { - const int MIPS = mipOffsets.size(); + const int MIPS = static_cast (mipOffsets.size()); auto sampler = samplerCache.GetSampler(device, SHVkSamplerParams{ .maxLod = static_cast(MIPS) }); SET_VK_OBJ_NAME(device, vk::ObjectType::eSampler, sampler->GetVkSampler(), "[Sampler] Mips " + std::to_string(MIPS)); return texLibrary.Add(pixelCount, pixelData, width, height, format, mipOffsets, sampler); @@ -795,6 +872,19 @@ namespace SHADE return texLibrary.GetTextureHandle(textureId); } + /*---------------------------------------------------------------------------------*/ + /* Font Registration Functions */ + /*---------------------------------------------------------------------------------*/ + Handle SHGraphicsSystem::AddFont(SHFontAsset const& fontAsset) noexcept + { + return fontLibrary.AddFont(device, resourceManager, fontAsset); + } + + void SHGraphicsSystem::BuildFonts(void) noexcept + { + fontLibrary.BuildFonts(device, graphicsQueue, graphicsCmdPool, descPool, textRenderingSubSystem->GetFontDataDescSetLayout(), resourceManager); + } + #pragma endregion ADD_REMOVE #pragma region ROUTINES @@ -807,7 +897,7 @@ namespace SHADE void SHGraphicsSystem::BeginRoutine::Execute(double) noexcept { - SHResourceManager::FinaliseChanges(); + // Begin rendering reinterpret_cast(system)->BeginRender(); } @@ -833,8 +923,38 @@ namespace SHADE void SHGraphicsSystem::EndRoutine::Execute(double) noexcept { reinterpret_cast(system)->EndRender(); + + // Reset all material isDirty + auto gfxSystem = reinterpret_cast(system); + auto [matBegin, matEnd] = gfxSystem->resourceManager.GetDenseAccess(); + for (auto iter = matBegin; iter != matEnd; ++iter) + { + iter->ClearChangeFlag(); + } } - + + SHGraphicsSystem::PrepareRenderRoutine::PrepareRenderRoutine() + : SHSystemRoutine("Graphics System Pre-Render", true) + {} + + void SHGraphicsSystem::PrepareRenderRoutine::Execute(double) noexcept + { + // Finish up, loading, unloading any resources + SHResourceManager::FinaliseChanges(); + + // Clean up and update all materials + auto gfxSystem = reinterpret_cast(system); + auto [matInstBegin, matInstEnd] = gfxSystem->resourceManager.GetDenseAccess(); + for (auto iter = matInstBegin; iter != matInstEnd; ++iter) + { + auto baseMat = iter->GetBaseMaterial(); + if (baseMat && baseMat->HasPipelineChanged()) + { + iter->ResetProperties(); + } + } + } + /*-----------------------------------------------------------------------------------*/ /* System Routine Functions - BatcherDispatcherRoutine */ /*-----------------------------------------------------------------------------------*/ @@ -844,22 +964,26 @@ namespace SHADE void SHGraphicsSystem::BatcherDispatcherRoutine::Execute(double) noexcept { - auto& renderables = SHComponentManager::GetDense(); + auto& renderables = SHComponentManager::GetDense(); for (auto& renderable : renderables) { + // Check if the material instance is now unused + renderable.CleanUpMaterials(); + if (!renderable.HasChanged()) - continue; + continue; // Remove from the SuperBatch it is previously in (prevMat if mat has changed) Handle prevMaterial = renderable.HasMaterialChanged() ? renderable.GetPrevMaterial() : renderable.GetMaterial(); if (prevMaterial) { - Handle oldSuperBatch = prevMaterial->GetBaseMaterial()->GetPipeline()->GetPipelineState().GetSubpass()->GetSuperBatch(); + Handle baseMat = prevMaterial->GetBaseMaterial(); + Handle prevPipeline = baseMat->HasPipelineChanged() ? baseMat->GetPrevPipeline() : baseMat->GetPipeline(); + Handle oldSuperBatch = prevPipeline->GetPipelineState().GetSubpass()->GetSuperBatch(); oldSuperBatch->Remove(&renderable); } - - // Add to new SuperBatch if there is a material - // Add to new SuperBatch if there is a material and a mesh to render + + // Add to new SuperBatch if there is a material and a mesh to render Handle newMatInstance = renderable.GetMaterial(); if (newMatInstance && renderable.GetMesh()) { @@ -870,11 +994,20 @@ namespace SHADE // Unset change flag renderable.ResetChangedFlag(); } + + // Unset all material old pipeline since we would have finished processing + auto gfxSystem = reinterpret_cast(system); + auto [matBegin, matEnd] = gfxSystem->resourceManager.GetDenseAccess(); + for (auto iter = matBegin; iter != matEnd; ++iter) + { + iter->ForgetOldPipeline(); + } } #pragma endregion ROUTINES #pragma region MISC + void SHGraphicsSystem::PrepareResize(uint32_t newWidth, uint32_t newHeight) noexcept { resizeWidth = newWidth; @@ -901,7 +1034,12 @@ namespace SHADE renderContext.HandleResize(); worldRenderGraph->HandleResize(resizeWidth, resizeHeight); + +#ifdef SHEDITOR editorRenderGraph->HandleResize(windowDims.first, windowDims.second); +#endif + + screenRenderGraph->HandleResize(resizeWidth, resizeHeight); mousePickSystem->HandleResize(); postOffscreenRender->HandleResize(); @@ -909,7 +1047,8 @@ namespace SHADE worldViewport->SetWidth(static_cast(resizeWidth)); worldViewport->SetHeight(static_cast(resizeHeight)); - worldCamera->SetPerspective(90.0f, static_cast(resizeWidth), static_cast(resizeHeight), 0.0f, 100.0f); + //worldCamera->SetPerspective(90.0f, static_cast(resizeWidth), static_cast(resizeHeight), 0.0f, 100.0f); + //screenCamera->SetOrthographic(static_cast(resizeWidth), static_cast(resizeHeight), 0.01f, 100.0f); auto cameraSystem = SHSystemManager::GetSystem(); #ifdef SHEDITOR @@ -921,8 +1060,6 @@ namespace SHADE for (auto& semaHandle : graphSemaphores) semaHandle = device->CreateSemaphore(); - - } void SHGraphicsSystem::AwaitGraphicsExecution() @@ -941,6 +1078,11 @@ namespace SHADE return worldRenderGraph->GetNode(G_BUFFER_RENDER_GRAPH_NODE_NAME.data()); } + SHADE::SHFontLibrary const& SHGraphicsSystem::GetFontLibrary(void) const noexcept + { + return fontLibrary; + } + Handle SHGraphicsSystem::createDebugDrawPipeline(Handle renderPass, Handle subpass) { auto pipelineLayout = resourceManager.Create diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.h b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.h index a5a5ada0..8c65f233 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.h +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.h @@ -32,6 +32,8 @@ of DigiPen Institute of Technology is prohibited. #include "Graphics/MiddleEnd/Interface/SHPostOffscreenRenderSystem.h" #include "Graphics/MiddleEnd/Lights/SHLightingSubSystem.h" #include "Graphics/MiddleEnd/PostProcessing/SHSSAO.h" +#include "Camera/SHCameraDirector.h" +#include "Graphics/MiddleEnd/TextRendering/SHFontLibrary.h" namespace SHADE { @@ -54,6 +56,7 @@ namespace SHADE class SHMaterial; class SHMaterialInstance; class SHMousePickSystem; + class SHTextRenderingSubSystem; /*---------------------------------------------------------------------------------*/ /* Type Definitions */ @@ -95,25 +98,31 @@ namespace SHADE class SH_API BeginRoutine final : public SHSystemRoutine { public: - BeginRoutine(); + BeginRoutine(); virtual void Execute(double dt) noexcept override final; }; class SH_API RenderRoutine final : public SHSystemRoutine { public: - RenderRoutine(); + RenderRoutine(); virtual void Execute(double dt) noexcept override final; }; class SH_API EndRoutine final : public SHSystemRoutine { public: - EndRoutine(); + EndRoutine(); + virtual void Execute(double dt) noexcept override final; + }; + class SH_API PrepareRenderRoutine final : public SHSystemRoutine + { + public: + PrepareRenderRoutine(); virtual void Execute(double dt) noexcept override final; }; class SH_API BatcherDispatcherRoutine final : public SHSystemRoutine { public: - BatcherDispatcherRoutine(); + BatcherDispatcherRoutine(); virtual void Execute(double dt) noexcept override final; }; @@ -156,6 +165,7 @@ namespace SHADE Handle AddOrGetBaseMaterialInstance(); Handle AddOrGetBaseMaterialInstance(Handle material); Handle AddMaterialInstanceCopy(Handle materialInst); + std::pair, typename SHResourceHub::dense_iterator> GetAllMaterialInstances(); void RemoveMaterialInstance(Handle materialInstance); Handle GetDefaultMaterial() { return defaultMaterial; } Handle GetDefaultMaterialInstance() { return AddOrGetBaseMaterialInstance(defaultMaterial); } @@ -166,10 +176,10 @@ namespace SHADE /*******************************************************************************/ /*! - \brief - Adds a mesh to the Mesh Library. But this does not mean that the meshes have - been added yet. A call to "BuildBuffers()" is required to transfer all - meshes into the GPU. + \brief + Adds a mesh to the Mesh Library. But this does not mean that the meshes have + been added yet. A call to "BuildBuffers()" is required to transfer all + meshes into the GPU. \param vertexCount Number of vertices in this Mesh. @@ -319,6 +329,22 @@ namespace SHADE */ /***************************************************************************/ Handle GetDefaultTexture() const noexcept { return defaultTexture; } + /***************************************************************************/ + /*! + + \brief + Adds a font into the font library. + + \param fontAsset + Font asset to add. + + \return + Handle to the new font. + + */ + /***************************************************************************/ + Handle AddFont (SHFontAsset const& fontAsset) noexcept; + void BuildFonts (void) noexcept; void PrepareResize(uint32_t newWidth, uint32_t newHeight) noexcept; void HandleResize(void) noexcept; @@ -348,6 +374,7 @@ namespace SHADE Handle GetDebugDrawPipeline(void) const noexcept { return debugDrawPipeline; } Handle GetDebugDrawDepthPipeline(void) const noexcept { return debugDrawDepthPipeline; } uint32_t GetCurrentFrameIndex(void) const noexcept { return renderContext.GetCurrentFrame(); } + SHFontLibrary const& GetFontLibrary (void) const noexcept; /*-----------------------------------------------------------------------------*/ /* Getters */ @@ -384,6 +411,7 @@ namespace SHADE SHResourceHub resourceManager; SHMeshLibrary meshLibrary; SHTextureLibrary texLibrary; + SHFontLibrary fontLibrary; SHSamplerCache samplerCache; SHMaterialInstanceCache materialInstanceCache; @@ -391,18 +419,20 @@ namespace SHADE #ifdef SHEDITOR Handle editorViewport; Handle editorRenderer; - Handle editorRenderGraph; #endif Handle worldViewport; // Whole screen - std::vector> viewports; // Additional viewports + std::vector> viewports; // Additional viewports - // Temp renderers + // Renderers Handle worldRenderer; + Handle screenRenderer; // Temp Cameras Handle worldCamera; Handle screenCamera; + DirectorHandle worldCameraDirector; + // Built-In Shaders Handle defaultVertShader; @@ -412,7 +442,13 @@ namespace SHADE Handle deferredCompositeShader; Handle ssaoShader; Handle ssaoBlurShader; + Handle textVS; + Handle textFS; + Handle renderToSwapchainVS; + Handle renderToSwapchainFS; + // Fonts + Handle testFont; // Built-In Materials Handle defaultMaterial; @@ -427,11 +463,16 @@ namespace SHADE // Render Graphs Handle worldRenderGraph; + Handle screenRenderGraph; +#ifdef SHEDITOR + Handle editorRenderGraph; +#endif // Sub systems Handle mousePickSystem; Handle postOffscreenRender; Handle lightingSubSystem; + Handle textRenderingSubSystem; Handle ssaoStorage; uint32_t resizeWidth = 1; diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHMaterial.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHMaterial.cpp index b27f48b9..1a007b95 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHMaterial.cpp +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHMaterial.cpp @@ -6,91 +6,113 @@ #include "Graphics/Shaders/BlockInterface/SHShaderBlockInterface.h" #include "Math/Vector/SHVec3.h" #include "Math/Vector/SHVec4.h" +#include "ECS_Base/Managers/SHSystemManager.h" +#include "SHGraphicsSystem.h" +#include "SHMaterialInstance.h" namespace SHADE { - /*---------------------------------------------------------------------------------*/ - /* Pipeline Functions */ - /*---------------------------------------------------------------------------------*/ - void SHMaterial::SetPipeline(Handle _pipeline) - { - pipeline = _pipeline; + /*-----------------------------------------------------------------------------------*/ + /* Pipeline Functions */ + /*-----------------------------------------------------------------------------------*/ + void SHMaterial::SetPipeline(Handle _pipeline) + { + // Reassignment, we ignore + if (_pipeline == pipeline) + return; - // Set up properties based on the pipeline - if (!pipeline) - { - // Clear memory and all that - propMemory.reset(); - return; - } + // Mark old pipeline and set new pipeline + oldPipeline = pipeline; + pipeline = _pipeline; - // Allocate memory for properties - const Handle SHADER_INFO = GetShaderBlockInterface(); - propMemorySize = SHADER_INFO ? SHADER_INFO->GetBytesRequired() : 0; - if (propMemorySize <= 0) - { - propMemory.reset(); - } - else - { - propMemory.reset(new char[propMemorySize]); - } - ResetProperties(); - } - - Handle SHMaterial::GetPipeline() const - { - return pipeline; - } - - /*---------------------------------------------------------------------------------*/ - /* Property Functions */ - /*---------------------------------------------------------------------------------*/ - void SHMaterial::ResetProperties() + // Set up properties based on the pipeline + if (pipeline) { - // Reset all the properties to default values - if (propMemory) - memset(propMemory.get(), 0, propMemorySize); + // Allocate memory for properties + const Handle SHADER_INFO = GetShaderBlockInterface(); + propMemorySize = SHADER_INFO ? SHADER_INFO->GetBytesRequired() : 0; + if (propMemorySize <= 0) + { + propMemory.reset(); + } + else + { + propMemory.reset(new char[propMemorySize]); + } + } + + // Reset since pipeline changed + ResetProperties(); + } - // Initialize Vectors to all 1.0 by default - const Handle SHADER_INFO = GetShaderBlockInterface(); - for (int i = 0; i < SHADER_INFO->GetVariableCount(); ++i) - { - const auto& VAR = SHADER_INFO->GetVariable(i); - switch (VAR->type) - { - case SHShaderBlockInterface::Variable::Type::VECTOR3: - setPropertyUnsafe(VAR->offset, SHVec3::One); - break; - case SHShaderBlockInterface::Variable::Type::VECTOR4: - setPropertyUnsafe(VAR->offset, SHVec4::One); - break; - } - } + Handle SHMaterial::GetPipeline() const + { + return pipeline; + } + + /*-----------------------------------------------------------------------------------*/ + /* Property Functions */ + /*-----------------------------------------------------------------------------------*/ + void SHMaterial::ResetProperties() + { + // Reset all the properties to default values + if (propMemory) + memset(propMemory.get(), 0, propMemorySize); + + // Initialize Vectors to all 1.0 by default + const Handle SHADER_INFO = GetShaderBlockInterface(); + for (int i = 0; i < SHADER_INFO->GetVariableCount(); ++i) + { + const auto& VAR = SHADER_INFO->GetVariable(i); + switch (VAR->type) + { + case SHShaderBlockInterface::Variable::Type::VECTOR3: + setPropertyUnsafe(VAR->offset, SHVec3::One); + break; + case SHShaderBlockInterface::Variable::Type::VECTOR4: + setPropertyUnsafe(VAR->offset, SHVec4::One); + break; + } } - void SHMaterial::ExportProperties(void* dest) const noexcept - { - if (propMemory) - memcpy(dest, propMemory.get(), propMemorySize); - } + propertiesChanged = true; + } - size_t SHMaterial::GetPropertiesMemorySize() const noexcept - { - const Handle SHADER_INFO = GetShaderBlockInterface(); - return SHADER_INFO ? SHADER_INFO->GetBytesRequired() : 0; - } + void SHMaterial::ExportProperties(void* dest) const noexcept + { + if (propMemory) + memcpy(dest, propMemory.get(), propMemorySize); + } - /*---------------------------------------------------------------------------------*/ - /* Helper Functions */ - /*---------------------------------------------------------------------------------*/ - Handle SHMaterial::GetShaderBlockInterface() const noexcept - { - return pipeline->GetPipelineLayout()->GetShaderBlockInterface - ( - SHGraphicsConstants::DescriptorSetIndex::PER_INSTANCE, - SHGraphicsConstants::DescriptorSetBindings::BATCHED_PER_INST_DATA, - vk::ShaderStageFlagBits::eFragment - ); - } + size_t SHMaterial::GetPropertiesMemorySize() const noexcept + { + const Handle SHADER_INFO = GetShaderBlockInterface(); + return SHADER_INFO ? SHADER_INFO->GetBytesRequired() : 0; + } + + /*-----------------------------------------------------------------------------------*/ + /* Helper Functions */ + /*-----------------------------------------------------------------------------------*/ + Handle SHMaterial::GetShaderBlockInterface() const noexcept + { + return pipeline->GetPipelineLayout()->GetShaderBlockInterface + ( + SHGraphicsConstants::DescriptorSetIndex::PER_INSTANCE, + SHGraphicsConstants::DescriptorSetBindings::BATCHED_PER_INST_DATA, + vk::ShaderStageFlagBits::eFragment + ); + } + + /*-----------------------------------------------------------------------------------*/ + /* Query Functions */ + /*-----------------------------------------------------------------------------------*/ + void SHMaterial::ClearChangeFlag() noexcept + { + propertiesChanged = false; + } + + void SHMaterial::ForgetOldPipeline() noexcept + { + oldPipeline = {}; + } } diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHMaterial.h b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHMaterial.h index 964f9e34..7913d912 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHMaterial.h +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHMaterial.h @@ -17,6 +17,7 @@ of DigiPen Institute of Technology is prohibited. // Project Includes #include "Resource/SHHandle.h" #include "SHCommonTypes.h" +#include "SH_API.h" namespace SHADE { @@ -35,7 +36,7 @@ namespace SHADE Describes a Pipeline along with it's associated properties for this instance. */ /***********************************************************************************/ - class SHMaterial + class SH_API SHMaterial : public ISelfHandle { public: /*-----------------------------------------------------------------------------*/ @@ -43,6 +44,7 @@ namespace SHADE /*-----------------------------------------------------------------------------*/ void SetPipeline(Handle _pipeline); Handle GetPipeline() const; + Handle GetPrevPipeline() const { return oldPipeline; }; /*-----------------------------------------------------------------------------*/ /* Property Functions */ @@ -67,6 +69,11 @@ namespace SHADE /* Query Functions */ /*-----------------------------------------------------------------------------*/ Handle GetShaderBlockInterface() const noexcept; + bool HasPipelineChanged() const noexcept { return oldPipeline; } + bool HasPropertiesChanged() const noexcept { return propertiesChanged; } + bool HasChanged() const noexcept { return oldPipeline || propertiesChanged; } + void ClearChangeFlag() noexcept; + void ForgetOldPipeline() noexcept; private: /*-----------------------------------------------------------------------------*/ @@ -75,6 +82,8 @@ namespace SHADE Handle pipeline; std::unique_ptr propMemory; Byte propMemorySize = 0; + bool propertiesChanged = true; + Handle oldPipeline; /*-----------------------------------------------------------------------------*/ /* Helper Functions */ diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHMaterial.hpp b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHMaterial.hpp index f81cfa5c..880fba69 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHMaterial.hpp +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHMaterial.hpp @@ -33,8 +33,7 @@ namespace SHADE } // Get offset and modify the memory directly - T* dataPtr = reinterpret_cast(propMemory.get() + PROP_INFO->offset); - *dataPtr = value; + setPropertyUnsafe(PROP_INFO->offset, value); } template @@ -85,6 +84,12 @@ namespace SHADE template void SHMaterial::setPropertyUnsafe(uint32_t memOffset, const T& value) { + // Size check + if (memOffset + sizeof(T) > propMemorySize) + { + throw std::runtime_error("Attempted to write to out of bounds MaterialInstance properties memory"); + } (*reinterpret_cast(propMemory.get() + memOffset)) = value; + propertiesChanged = true; } } diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHMaterialInstance.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHMaterialInstance.cpp index 350580bf..7526538f 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHMaterialInstance.cpp +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHMaterialInstance.cpp @@ -15,7 +15,7 @@ of DigiPen Institute of Technology is prohibited. #include "SHGraphicsConstants.h" #include "SHMaterial.h" #include "Graphics/Pipeline/SHVkPipeline.h" -#include "Tools/SHLogger.h" +#include "Tools/Logger/SHLogger.h" namespace SHADE { @@ -31,11 +31,11 @@ namespace SHADE /*-----------------------------------------------------------------------------------*/ void SHMaterialInstance::ResetProperties() noexcept { - // Reset all the properties to default values memset(dataStore.get(), 0, dataStoreSize); overrideData.clear(); dataStore.reset(); + dataWasChanged = true; } void SHMaterialInstance::ExportProperties(void* dest) @@ -65,9 +65,17 @@ namespace SHADE dataWasChanged = false; } - /*---------------------------------------------------------------------------------*/ - /* Helper Functions */ - /*---------------------------------------------------------------------------------*/ + /*-----------------------------------------------------------------------------------*/ + /* Query Functions */ + /*-----------------------------------------------------------------------------------*/ + bool SHMaterialInstance::HasChanged() const noexcept + { + return dataWasChanged || (baseMaterial && baseMaterial->HasChanged()); + } + + /*-----------------------------------------------------------------------------------*/ + /* Helper Functions */ + /*-----------------------------------------------------------------------------------*/ Handle SHMaterialInstance::getShaderBlockInterface() const noexcept { return baseMaterial->GetPipeline()->GetPipelineLayout()->GetShaderBlockInterface diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHMaterialInstance.h b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHMaterialInstance.h index b6fcc830..57e3dfce 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHMaterialInstance.h +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHMaterialInstance.h @@ -43,9 +43,9 @@ namespace SHADE /*-----------------------------------------------------------------------------*/ struct OverrideData { - size_t Index; - size_t DataSize; - size_t StoredDataOffset; + uint32_t Index; + uint32_t DataSize; + uint32_t StoredDataOffset; }; /*-----------------------------------------------------------------------------*/ @@ -69,7 +69,8 @@ namespace SHADE /* Getter Functions */ /*-----------------------------------------------------------------------------*/ Handle GetBaseMaterial() const noexcept { return baseMaterial; } - bool HasChanged() const noexcept { return dataWasChanged; } + bool HasChanged() const noexcept; + bool IsBlank() const noexcept { return overrideData.empty(); } // No overrides private: /*-----------------------------------------------------------------------------*/ diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHMaterialInstance.hpp b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHMaterialInstance.hpp index e70631ea..7bd1c106 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHMaterialInstance.hpp +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHMaterialInstance.hpp @@ -11,6 +11,7 @@ of DigiPen Institute of Technology is prohibited. *//*************************************************************************************/ #pragma once #include "SHMaterialInstance.h" +#include "SHMaterial.h" namespace SHADE { @@ -34,26 +35,45 @@ namespace SHADE dataStore.reset(new char[dataStoreSize]); } - OverrideData od; - od.Index = SHADER_INFO->GetVariableIndex(key); - od.DataSize = sizeof(T); - if (overrideData.empty()) + // Check if this was stored before + const uint32_t VAR_IDX = SHADER_INFO->GetVariableIndex(key); + auto existingOverride = std::find_if(overrideData.begin(), overrideData.end(), [&](const OverrideData& od) { - od.StoredDataOffset = 0; - } - else + return od.Index == VAR_IDX; + }); + + // Otherwise, create it + if (existingOverride == overrideData.end()) { - const OverrideData& lastInsertedData = overrideData.back(); - od.StoredDataOffset = lastInsertedData.StoredDataOffset + lastInsertedData.DataSize; + OverrideData od; + od.Index = VAR_IDX; + od.DataSize = sizeof(T); + + if (overrideData.empty()) + { + od.StoredDataOffset = 0; + } + else + { + const OverrideData& lastInsertedData = overrideData.back(); + od.StoredDataOffset = lastInsertedData.StoredDataOffset + lastInsertedData.DataSize; + } + + // Size check + if (od.StoredDataOffset + sizeof(T) > dataStoreSize) + { + throw std::runtime_error("Attempted to write to out of bounds MaterialInstance properties memory"); + } + + // Save the override data information + overrideData.emplace_back(std::move(od)); + existingOverride = overrideData.end() - 1; } // Get offset and modify the memory directly - T* dataPtr = reinterpret_cast(dataStore.get() + od.StoredDataOffset); + T* dataPtr = reinterpret_cast(dataStore.get() + existingOverride->StoredDataOffset); *dataPtr = value; - - // Save the override data information - overrideData.emplace_back(std::move(od)); - + // Flag dataWasChanged = true; } @@ -70,11 +90,22 @@ namespace SHADE // Search Override Data for the property uint32_t PROP_IDX = SHADER_INFO->GetVariableIndex(key); auto prop = std::find_if(overrideData.begin(), overrideData.end(), [&](const OverrideData& data) - { - return PROP_IDX == data.Index; - }); + { + return PROP_IDX == data.Index; + }); + + // No overrides, we get from the base material instead if (prop == overrideData.end()) - throw std::invalid_argument("Attempted to get an property that was not set previously!"); + { + if (baseMaterial) + { + return baseMaterial->GetProperty(key); + } + else + { + throw std::invalid_argument("Attempted to get an property that was not set previously!"); + } + } // Get offset and return the memory directly T* dataPtr = reinterpret_cast(dataStore.get() + prop->StoredDataOffset); diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHRenderable.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHRenderable.cpp index 57762324..c7578137 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHRenderable.cpp +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHRenderable.cpp @@ -34,8 +34,11 @@ namespace SHADE void SHRenderable::OnDestroy() { // Remove from SuperBatch - Handle superBatch = sharedMaterial->GetBaseMaterial()->GetPipeline()->GetPipelineState().GetSubpass()->GetSuperBatch(); - superBatch->Remove(this); + if (sharedMaterial) + { + Handle superBatch = sharedMaterial->GetBaseMaterial()->GetPipeline()->GetPipelineState().GetSubpass()->GetSuperBatch(); + superBatch->Remove(this); + } // Free resources if (material) @@ -73,6 +76,12 @@ namespace SHADE sharedMaterial = materialInstance; } + void SHRenderable::SetMaterial(Handle material) + { + SHGraphicsSystem* gfxSystem = SHSystemManager::GetSystem(); + SetMaterial(gfxSystem->AddOrGetBaseMaterialInstance(material)); + } + Handle SHRenderable::GetMaterial() const { if (material) @@ -88,11 +97,20 @@ namespace SHADE { SHGraphicsSystem* gfxSystem = SHSystemManager::GetSystem(); material = gfxSystem->AddMaterialInstanceCopy(sharedMaterial); + matChanged = true; } return material; } + void SHRenderable::CleanUpMaterials() noexcept + { + if (material && material->IsBlank()) + { + SetMaterial(sharedMaterial); + } + } + /*-----------------------------------------------------------------------------------*/ /* Mesh Functions */ /*-----------------------------------------------------------------------------------*/ @@ -111,6 +129,20 @@ namespace SHADE return lightLayer; } + bool SHRenderable::HasChanged() const noexcept + { + if (matChanged || meshChanged) + return true; + + // If the underlying material has changed + auto mat = GetMaterial(); + if (mat) + { + return mat->HasChanged(); + } + return false; + } + /*-----------------------------------------------------------------------------------*/ /* Batcher Dispatcher Functions */ /*-----------------------------------------------------------------------------------*/ diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHRenderable.h b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHRenderable.h index 8893c43b..39132ca0 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHRenderable.h +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHRenderable.h @@ -48,11 +48,16 @@ namespace SHADE /*-------------------------------------------------------------------------------*/ /* Material Functions */ /*-------------------------------------------------------------------------------*/ + void SetMaterial(Handle material); void SetMaterial(Handle materialInstance); Handle GetMaterial() const; Handle GetModifiableMaterial(); Handle GetPrevMaterial() const noexcept { return oldMaterial; } bool HasMaterialChanged() const noexcept { return matChanged; } + /// + /// Clears the modifiable material if it is unused. + /// + void CleanUpMaterials() noexcept; /*-------------------------------------------------------------------------------*/ /* Mesh Functions */ @@ -70,7 +75,7 @@ namespace SHADE /*-------------------------------------------------------------------------------*/ /* Batcher Dispatcher Functions */ /*-------------------------------------------------------------------------------*/ - bool HasChanged() const noexcept { return matChanged || meshChanged; } // Whether or not the mesh or material has changed + bool HasChanged() const noexcept; // Whether or not the mesh or material has changed void ResetChangedFlag(); // TODO: Lock it so that only SHBatcherDispatcher can access this private: diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHRenderer.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHRenderer.cpp index 63d374eb..e47055df 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHRenderer.cpp +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHRenderer.cpp @@ -90,17 +90,22 @@ namespace SHADE if (camera && cameraDirector) { //UpdateDataAndBind(cmdBuffer, frameIndex, SHMatrix::Transpose(cameraDirector->GetVPMatrix())); - UpdateDataAndBind(cmdBuffer, frameIndex, cameraDirector->GetViewMatrix(), cameraDirector->GetProjMatrix()); + UpdateDataAndBind(cmdBuffer, frameIndex, cameraDirector->GetViewMatrix(), cameraDirector->GetProjMatrix(), cameraDirector->GetOrthoMatrix()); } } - void SHRenderer::UpdateDataAndBind(Handle cmdBuffer, uint32_t frameIndex, SHMatrix const& viewMatrix, SHMatrix const& projMatrix) noexcept + void SHRenderer::UpdateDataAndBind(Handle cmdBuffer, uint32_t frameIndex, SHMatrix const& viewMatrix, SHMatrix const& projMatrix, SHMatrix const& orthoMatrix) noexcept { - SetViewProjectionMatrix(viewMatrix, projMatrix); + SetViewProjectionMatrix(viewMatrix, projMatrix, orthoMatrix); //cpuCameraData.viewProjectionMatrix = camera->GetViewProjectionMatrix(); cameraBuffer->WriteToMemory(&cpuCameraData, sizeof(SHShaderCameraData), 0, cameraDataAlignedSize * frameIndex); + BindDescSet(cmdBuffer, frameIndex); + } + + void SHRenderer::BindDescSet(Handle cmdBuffer, uint32_t frameIndex) noexcept + { std::array dynamicOffsets{ frameIndex * cameraDataAlignedSize }; cmdBuffer->BindDescriptorSet(cameraDescriptorSet, SH_PIPELINE_TYPE::GRAPHICS, SHGraphicsConstants::DescriptorSetIndex::HIGH_FREQUENCY_GLOBALS, std::span{ dynamicOffsets.data(), 1 }); @@ -111,12 +116,13 @@ namespace SHADE { } - void SHRenderer::SetViewProjectionMatrix(SHMatrix const& viewMatrix, SHMatrix const& projMatrix) noexcept + void SHRenderer::SetViewProjectionMatrix(SHMatrix const& viewMatrix, SHMatrix const& projMatrix, SHMatrix const& orthoMatrix) noexcept { //cpuCameraData.viewProjectionMatrix = camera->GetViewMatrix() * camera->GetProjectionMatrix(); cpuCameraData.viewProjectionMatrix = SHMatrix::Transpose(projMatrix * viewMatrix); cpuCameraData.viewMatrix = SHMatrix::Transpose(viewMatrix); cpuCameraData.projectionMatrix = SHMatrix::Transpose(projMatrix); + cpuCameraData.orthoMatrix = SHMatrix::Transpose (orthoMatrix); } Handle SHRenderer::GetRenderGraph(void) const noexcept diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHRenderer.h b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHRenderer.h index 140cf53b..83291700 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHRenderer.h +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHRenderer.h @@ -48,6 +48,7 @@ namespace SHADE SHMatrix viewProjectionMatrix; SHMatrix viewMatrix; SHMatrix projectionMatrix; + SHMatrix orthoMatrix; }; /*---------------------------------------------------------------------------------*/ @@ -63,6 +64,7 @@ namespace SHADE /***********************************************************************************/ class SHRenderer { + public: /*-----------------------------------------------------------------------------*/ /* Constructor/Destructors */ @@ -81,9 +83,10 @@ namespace SHADE /*-----------------------------------------------------------------------------*/ void Draw(uint32_t frameIndex, Handle descPool) noexcept; void UpdateDataAndBind(Handle cmdBuffer, uint32_t frameIndex) noexcept; - void UpdateDataAndBind(Handle cmdBuffer, uint32_t frameIndex, SHMatrix const& viewMatrix, SHMatrix const& projMatrix) noexcept; + void UpdateDataAndBind(Handle cmdBuffer, uint32_t frameIndex, SHMatrix const& viewMatrix, SHMatrix const& projMatrix, SHMatrix const& orthoMatrix) noexcept; + void BindDescSet (Handle cmdBuffer, uint32_t frameIndex) noexcept; void UpdateCameraDataToBuffer (void) noexcept; - void SetViewProjectionMatrix (SHMatrix const& viewMatrix, SHMatrix const& projMatrix) noexcept; + void SetViewProjectionMatrix (SHMatrix const& viewMatrix, SHMatrix const& projMatrix, SHMatrix const& orthoMatrix) noexcept; /*-----------------------------------------------------------------------------*/ /* Setters and Getters */ diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHViewport.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHViewport.cpp index df9e244e..7bd0049f 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHViewport.cpp +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHViewport.cpp @@ -15,7 +15,7 @@ of DigiPen Institute of Technology is prohibited. #include "Graphics/Commands/SHVkCommandBuffer.h" #include "Graphics/Instance/SHVkInstance.h" -#include "Tools/SHLogger.h" +#include "Tools/Logger/SHLogger.h" #include "SHRenderer.h" #include "Resource/SHResourceLibrary.h" #include "Graphics/RenderGraph/SHRenderGraph.h" diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Lights/SHLightingSubSystem.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/Lights/SHLightingSubSystem.cpp index 02bd8f1f..3d5a5773 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Lights/SHLightingSubSystem.cpp +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Lights/SHLightingSubSystem.cpp @@ -1,7 +1,7 @@ #include "SHpch.h" #include "SHLightingSubSystem.h" #include "Graphics/MiddleEnd/GlobalData/SHGraphicsGlobalData.h" -#include "Tools/SHUtilities.h" +#include "Tools/Utilities/SHUtilities.h" #include "Graphics/Devices/SHVkLogicalDevice.h" #include "Graphics/Buffers/SHVkBuffer.h" #include "Graphics/Descriptors/SHVkDescriptorSetGroup.h" @@ -379,7 +379,7 @@ namespace SHADE SHComponentManager::CreateComponentSparseSet(); logicalDevice = device; - uint32_t constexpr NUM_LIGHT_TYPES = SHUtilities::ToUnderlying(SH_LIGHT_TYPE::NUM_TYPES); + uint32_t constexpr NUM_LIGHT_TYPES = SHUtilities::ConvertEnum(SH_LIGHT_TYPE::NUM_TYPES); std::vector variableSizes{ NUM_LIGHT_TYPES }; std::fill (variableSizes.begin(), variableSizes.end(), 1); @@ -423,15 +423,14 @@ namespace SHADE /*! \brief - Loops through every single light component and checks for dirty light - data. If light data is dirty, rewrite to the CPU container. We also want - to bind the descriptor set for the light data. + Loops through every single light component and writes light data to CPU + then GPU. */ /***************************************************************************/ void SHLightingSubSystem::Run(SHMatrix const& viewMat, uint32_t frameIndex) noexcept { - static uint32_t constexpr NUM_LIGHT_TYPES = SHUtilities::ToUnderlying(SH_LIGHT_TYPE::NUM_TYPES); + static uint32_t constexpr NUM_LIGHT_TYPES = SHUtilities::ConvertEnum(SH_LIGHT_TYPE::NUM_TYPES); auto& lightComps = SHComponentManager::GetDense(); bool expanded = false; @@ -451,7 +450,7 @@ namespace SHADE for (auto& light : lightComps) { - auto enumValue = SHUtilities::ToUnderlying(light.GetLightData().type); + auto enumValue = SHUtilities::ConvertEnum(light.GetLightData().type); // First we want to make sure the light is already bound to the system. if it // isn't, we write it to the correct buffer. @@ -491,7 +490,7 @@ namespace SHADE // is a new buffer. If some expansion was detected, update descriptor sets. if (expanded) { - uint32_t constexpr NUM_LIGHT_TYPES = SHUtilities::ToUnderlying(SH_LIGHT_TYPE::NUM_TYPES); + uint32_t constexpr NUM_LIGHT_TYPES = SHUtilities::ConvertEnum(SH_LIGHT_TYPE::NUM_TYPES); for (uint32_t i = 0; i < NUM_LIGHT_TYPES; ++i) { UpdateDescSet(i); diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/PerFrame/SHRenderContext.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/PerFrame/SHRenderContext.cpp index 1d24d6f7..b12ac75d 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/PerFrame/SHRenderContext.cpp +++ b/SHADE_Engine/src/Graphics/MiddleEnd/PerFrame/SHRenderContext.cpp @@ -1,6 +1,6 @@ #include "SHPch.h" #include "SHRenderContext.h" -#include "Tools/SHLogger.h" +#include "Tools/Logger/SHLogger.h" #include "Graphics/Devices/SHVkLogicalDevice.h" #include "Graphics/Swapchain/SHVkSwapchain.h" diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Pipeline/SHPipelineLibrary.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/Pipeline/SHPipelineLibrary.cpp index 495a3d37..05bd8813 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Pipeline/SHPipelineLibrary.cpp +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Pipeline/SHPipelineLibrary.cpp @@ -34,7 +34,7 @@ namespace SHADE { colorBlendState.attachments.push_back(vk::PipelineColorBlendAttachmentState { - .blendEnable = SHVkUtil::IsBlendCompatible (subpass->GetFormatFromAttachmentReference(att.attachment)) ? true : false, + .blendEnable = SHVkUtil::IsBlendCompatible(subpass->GetFormatFromAttachmentReference(att.attachment)), .srcColorBlendFactor = vk::BlendFactor::eSrcAlpha, .dstColorBlendFactor = vk::BlendFactor::eOneMinusSrcAlpha, .colorBlendOp = vk::BlendOp::eAdd, diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/PostProcessing/SHSSAO.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/PostProcessing/SHSSAO.cpp index 2bf32fd8..db5b08c3 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/PostProcessing/SHSSAO.cpp +++ b/SHADE_Engine/src/Graphics/MiddleEnd/PostProcessing/SHSSAO.cpp @@ -76,7 +76,7 @@ namespace SHADE }; uint32_t mipOffset = 0; - rotationVectorsImage = logicalDevice->CreateImage(imageDetails, reinterpret_cast( rotationVectors.data()), static_cast(sizeof(rotationVectors)), {&mipOffset, 1}, VMA_MEMORY_USAGE_AUTO, {}); + rotationVectorsImage = logicalDevice->CreateImage(imageDetails, reinterpret_cast(rotationVectors.data()), static_cast(sizeof(rotationVectors)), { mipOffset }, VMA_MEMORY_USAGE_AUTO, {}); vk::ImageMemoryBarrier transferBarrier{}; rotationVectorsImage->PrepareImageTransitionInfo(vk::ImageLayout::eUndefined, vk::ImageLayout::eTransferDstOptimal, transferBarrier); diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/TextRendering/SHFont.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/TextRendering/SHFont.cpp new file mode 100644 index 00000000..3dd54ca5 --- /dev/null +++ b/SHADE_Engine/src/Graphics/MiddleEnd/TextRendering/SHFont.cpp @@ -0,0 +1,160 @@ +#include "SHpch.h" +#include "SHFont.h" +#include "Graphics/Devices/SHVkLogicalDevice.h" +#include "Graphics/MiddleEnd/GlobalData/SHGraphicsGlobalData.h" +#include "Graphics/Descriptors/SHVkDescriptorSetGroup.h" +#include "Graphics/Buffers/SHVkBuffer.h" +#include "Graphics/Images/SHVkSampler.h" + +namespace SHADE +{ + /***************************************************************************/ + /*! + + \brief + Non-default ctor. Prepares objects in staging buffers with data from + SHFontAsset. + + \param inLogicalDeviceHdl + Logical device required for vulkan object creation. + + \param asset + Font asset to copy data from. + + */ + /***************************************************************************/ + SHFont::SHFont(Handle inLogicalDeviceHdl, SHFontAsset const& asset) noexcept + { + /*-----------------------------------------------------------------------*/ + /* PREPARE GPU DATA */ + /*-----------------------------------------------------------------------*/ + + // assign device for convenient usage + logicalDevice = inLogicalDeviceHdl; + + // Copy the font data + fontAsset = asset; + + SHImageCreateParams imageParams + { + .imageType = vk::ImageType::e2D, + .width = fontAsset.bitmapWidth, + .height = fontAsset.bitmapHeight, + .depth = 1, + .levels = 1, + .arrayLayers = 1, + .imageFormat = vk::Format::eR8G8B8A8Unorm, + //.imageFormat = vk::Format::eR32Sfloat, + //.imageFormat = vk::Format::eR32G32B32Sfloat, + .usageFlags = vk::ImageUsageFlagBits::eSampled | vk::ImageUsageFlagBits::eTransferDst, + .createFlags = {} + }; + + uint32_t bytesRequired = asset.bitmapData.size(); + uint32_t mipOffset = 0; + + // Create the image + bitmapDataImage = logicalDevice->CreateImage(imageParams, fontAsset.bitmapData.data(), bytesRequired, { mipOffset }, VmaMemoryUsage::VMA_MEMORY_USAGE_AUTO, {}); + + // Amount of data required to hold matrices for all glyphs + uint32_t glyphDataSize = fontAsset.glyphTransformations.size() * sizeof (SHMatrix); + + // For indexing + for (uint32_t i = 0; i < fontAsset.glyphs.size(); ++i) + unicodeIndexing.emplace(fontAsset.glyphs[i], i); + + // allocate GPU buffer for matrices + matrixDataBuffer = logicalDevice->CreateBuffer(glyphDataSize, fontAsset.glyphTransformations.data(), glyphDataSize, vk::BufferUsageFlagBits::eTransferDst | vk::BufferUsageFlagBits::eStorageBuffer, VMA_MEMORY_USAGE_AUTO, {}); + + sampler = logicalDevice->CreateSampler(SHVkSamplerParams{}); + + } + + /***************************************************************************/ + /*! + + \brief + Transfers data from staging buffers to GPU. Does not issue any of the + barriers (we want this done outside). + + \param commandBuffer + Command buffer used to + + \return + + */ + /***************************************************************************/ + void SHFont::TransferToGPU(Handle commandBuffer) noexcept + { + /*-----------------------------------------------------------------------*/ + /* COMMANDS TO TRANSFER TO DEVICE MEMORY */ + /*-----------------------------------------------------------------------*/ + // Transfer to device memory + bitmapDataImage->TransferToDeviceResource(commandBuffer); + + // Transfer to GPU buffer + matrixDataBuffer->TransferToDeviceResource(commandBuffer); + } + + void SHFont::DoPostTransfer(Handle descPool, Handle layout) noexcept + { + /*-----------------------------------------------------------------------*/ + /* CREATE IMAGE VIEW */ + /*-----------------------------------------------------------------------*/ + // Create the image view to the device resource + SHImageViewDetails viewDetails + { + .viewType = vk::ImageViewType::e2D, + .format = bitmapDataImage->GetImageFormat(), + .imageAspectFlags = vk::ImageAspectFlagBits::eColor, + .baseMipLevel = 0, + .mipLevelCount = 1, + .baseArrayLayer = 0, + .layerCount = 1, + }; + bitmapDataImageView = bitmapDataImage->CreateImageView(logicalDevice, bitmapDataImage, viewDetails); + + /*-----------------------------------------------------------------------*/ + /* DESCRIPTORS */ + /*-----------------------------------------------------------------------*/ + // allocate desc set for the bitmap and matrix data + descSet = descPool->Allocate({ layout }, { 1 }); + + auto viewLayoutSampler = std::make_tuple(bitmapDataImageView, sampler, vk::ImageLayout::eShaderReadOnlyOptimal); + descSet->ModifyWriteDescImage(SHGraphicsConstants::DescriptorSetIndex::FONT_DATA, SHGraphicsConstants::DescriptorSetBindings::FONT_BITMAP_DATA, {&viewLayoutSampler, 1}); + + descSet->ModifyWriteDescBuffer(SHGraphicsConstants::DescriptorSetIndex::FONT_DATA, + SHGraphicsConstants::DescriptorSetBindings::FONT_MATRIX_DATA, { &matrixDataBuffer, 1 }, 0, fontAsset.glyphTransformations.size() * sizeof(SHMatrix)); + + // Bind image and buffer to desc set. + descSet->UpdateDescriptorSetImages(SHGraphicsConstants::DescriptorSetIndex::FONT_DATA, SHGraphicsConstants::DescriptorSetBindings::FONT_BITMAP_DATA); + descSet->UpdateDescriptorSetBuffer(SHGraphicsConstants::DescriptorSetIndex::FONT_DATA, SHGraphicsConstants::DescriptorSetBindings::FONT_MATRIX_DATA); + + } + + std::unordered_map SHFont::GetUnicodeIndexing(void) const noexcept + { + return unicodeIndexing; + } + + SHFontAsset const& SHFont::GetFontAsset(void) const noexcept + { + return fontAsset; + } + + Handle SHFont::GetImage(void) const noexcept + { + return bitmapDataImage; + } + + Handle SHFont::GetMatrixBuffer(void) const noexcept + { + return matrixDataBuffer; + } + + Handle SHFont::GetDescriptorSet(void) const noexcept + { + return descSet; + } + +} \ No newline at end of file diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/TextRendering/SHFont.h b/SHADE_Engine/src/Graphics/MiddleEnd/TextRendering/SHFont.h new file mode 100644 index 00000000..1439281a --- /dev/null +++ b/SHADE_Engine/src/Graphics/MiddleEnd/TextRendering/SHFont.h @@ -0,0 +1,72 @@ +#pragma once + +#include "Resource/SHHandle.h" +#include "msdf-atlas-gen/msdf-atlas-gen.h" +#include "Assets/Asset Types/SHFontAsset.h" + +namespace SHADE +{ + class SHVkLogicalDevice; + class SHVkDescriptorPool; + class SHVkDescriptorSetGroup; + class SHVkDescriptorSetLayout; + class SHVkCommandBuffer; + class SHVkCommandPool; + class SHVkImage; + class SHVkImageView; + class SHVkBuffer; + class SHVkQueue; + class SHVkSampler; + + class SHFont + { + private: + //! Device for creation and destruction + Handle logicalDevice; + + //! Font asset contains exactly what we need, so we'll use it + SHFontAsset fontAsset; + + //! Device memory that stores bitmap data + Handle bitmapDataImage; + + //! View to device memory + Handle bitmapDataImageView; + + //! Device memory that stores matrix data + Handle matrixDataBuffer; + + //! Descriptor set required to store the bitmap AND matrix data for the UV and quad transformation + Handle descSet; + + Handle sampler; + + //! Used for getting the correct indices into the matrix data buffer + std::unordered_map unicodeIndexing; + + ////! To transition images for transfer ops + //vk::ImageMemoryBarrier preTransferBarrier; + + ////! To transition images for shader reads + //vk::ImageMemoryBarrier postTransferBarrier; + + public: + /*-----------------------------------------------------------------------*/ + /* PUBLIC MEMBER FUNCTIONS */ + /*-----------------------------------------------------------------------*/ + SHFont (Handle inLogicalDeviceHdl, SHFontAsset const& asset) noexcept; + void TransferToGPU (Handle commandBuffer) noexcept; + void DoPostTransfer (Handle descPool, Handle layout) noexcept; + + + /*-----------------------------------------------------------------------*/ + /* SETTERS AND GETTERS */ + /*-----------------------------------------------------------------------*/ + std::unordered_map GetUnicodeIndexing (void) const noexcept; + SHFontAsset const& GetFontAsset (void) const noexcept; + Handle GetImage (void) const noexcept; + Handle GetMatrixBuffer (void) const noexcept; + Handle GetDescriptorSet (void) const noexcept; + + }; +} diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/TextRendering/SHFontAtlasData.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/TextRendering/SHFontAtlasData.cpp new file mode 100644 index 00000000..6ea1bceb --- /dev/null +++ b/SHADE_Engine/src/Graphics/MiddleEnd/TextRendering/SHFontAtlasData.cpp @@ -0,0 +1,7 @@ +#include "SHpch.h" +#include "SHFontAtlasData.h" + +namespace SHADE +{ + +} diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/TextRendering/SHFontAtlasData.h b/SHADE_Engine/src/Graphics/MiddleEnd/TextRendering/SHFontAtlasData.h new file mode 100644 index 00000000..1e6e7470 --- /dev/null +++ b/SHADE_Engine/src/Graphics/MiddleEnd/TextRendering/SHFontAtlasData.h @@ -0,0 +1,7 @@ +#pragma once + + +namespace SHADE +{ + +} diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/TextRendering/SHFontLibrary.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/TextRendering/SHFontLibrary.cpp new file mode 100644 index 00000000..3ae5c2ec --- /dev/null +++ b/SHADE_Engine/src/Graphics/MiddleEnd/TextRendering/SHFontLibrary.cpp @@ -0,0 +1,108 @@ +#include "SHpch.h" +#include "SHFontLibrary.h" +#include "Graphics/Images/SHVkImage.h" +#include "Graphics/Commands/SHVkCommandPool.h" +#include "Graphics/Devices/SHVkLogicalDevice.h" +#include "Graphics/Synchronization/SHVkFence.h" +#include "Graphics/Buffers/SHVkBuffer.h" + +namespace SHADE +{ + /***************************************************************************/ + /*! + + \brief + For adding fonts to the library + + \param asset + The asset we want to create an SHFont from. + + */ + /***************************************************************************/ + Handle SHFontLibrary::AddFont(Handle logicalDevice, SHResourceHub& resourceHub, SHFontAsset const& asset) noexcept + { + // Create new font + Handle newFont = resourceHub.Create(logicalDevice, asset); + + // emplace new barriers and prepare them for transfer ops + preTransferBarriers.emplace_back(); + postTransferBarriers.emplace_back(); + newFont->GetImage()->PrepareImageTransitionInfo(vk::ImageLayout::eUndefined, vk::ImageLayout::eTransferDstOptimal, preTransferBarriers[preTransferBarriers.size() - 1]); + newFont->GetImage()->PrepareImageTransitionInfo(vk::ImageLayout::eTransferDstOptimal, vk::ImageLayout::eShaderReadOnlyOptimal, postTransferBarriers[postTransferBarriers.size() - 1]); + + unpreparedFonts.emplace_back (newFont); + + return newFont; + } + + /***************************************************************************/ + /*! + + \brief + Transfers staging buffer font memory to the GPU for optimized access. + + \param cmdBuffer + Command buffer to record the transfer operations. + + \param descPool + + \return + + */ + /***************************************************************************/ + void SHFontLibrary::BuildFonts(Handle logicalDevice, Handle queue, Handle cmdPool, Handle descPool, Handle layout, SHResourceHub& resourceHub) noexcept + { + // create fence to wait on after transfer + Handle finishCopyFence = resourceHub.Create(logicalDevice); + finishCopyFence->Reset(); + + // allocate new command buffer + Handle transferCommandBuffer = cmdPool->RequestCommandBuffer(SH_CMD_BUFFER_TYPE::PRIMARY); + + // Begin recording transfer ops + transferCommandBuffer->BeginRecording(); + { + // Transition image to dst + transferCommandBuffer->PipelineBarrier(vk::PipelineStageFlagBits::eTopOfPipe, vk::PipelineStageFlagBits::eTransfer, {}, {}, {}, preTransferBarriers); + + // Transfer data from staging to image + for (auto& font : unpreparedFonts) + font->TransferToGPU(transferCommandBuffer); + + // Transition dst to shader read + transferCommandBuffer->PipelineBarrier(vk::PipelineStageFlagBits::eTransfer, vk::PipelineStageFlagBits::eFragmentShader, {}, {}, {}, postTransferBarriers); + } + + // End recording for transfer ops + transferCommandBuffer->EndRecording(); + + // Submit command buffer to queue + queue->SubmitCommandBuffer({transferCommandBuffer}, {}, {}, vk::PipelineStageFlagBits::eTransfer, finishCopyFence); + + // wait for copy to finish + finishCopyFence->Wait(true, std::numeric_limits::max()); + + // Prepare image views and desc sets + for (auto& font : unpreparedFonts) + font->DoPostTransfer(descPool, layout); + + // Free the command buffer and fence + transferCommandBuffer.Free(); + resourceHub.Free(finishCopyFence); + + // Once unprepared fonts are now ready for use, push them into container + uint32_t i = static_cast (unpreparedFonts.size()); + std::copy (unpreparedFonts.begin(), unpreparedFonts.end(), std::back_inserter(fonts)); + + // All fonts have been prepared for GPU usage + unpreparedFonts.clear(); + preTransferBarriers.clear(); + postTransferBarriers.clear(); + } + + std::vector> const& SHFontLibrary::GetFonts(void) const noexcept + { + return fonts; + } + +} \ No newline at end of file diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/TextRendering/SHFontLibrary.h b/SHADE_Engine/src/Graphics/MiddleEnd/TextRendering/SHFontLibrary.h new file mode 100644 index 00000000..a3762e6b --- /dev/null +++ b/SHADE_Engine/src/Graphics/MiddleEnd/TextRendering/SHFontLibrary.h @@ -0,0 +1,36 @@ +#pragma once + +#include "SHFont.h" +#include +#include "Graphics/SHVulkanIncludes.h" + +namespace SHADE +{ + class SHVkLogicalDevice; + class SHVkDescriptorPool; + class SHVkCommandPool; + class SHVkCommandBuffer; + class SHVkQueue; + class SHVkDescriptorSetLayout; + + class SH_API SHFontLibrary + { + private: + //! Handles to all the fonts usable in SHTextRendererComponents + std::vector> fonts; + + //! Fonts that have yet to be properly prepared for usage + std::vector> unpreparedFonts; + + //! For transitioning images for transfer operations + std::vector preTransferBarriers; + + //! For transitioning images for shader reads + std::vector postTransferBarriers; + + public: + Handle AddFont (Handle logicalDevice, SHResourceHub& resourceHub, SHFontAsset const& asset) noexcept; + void BuildFonts (Handle logicalDevice, Handle queue, Handle cmdPool, Handle descPool, Handle layout, SHResourceHub& resourceHub) noexcept; + std::vector> const& GetFonts (void) const noexcept; + }; +} diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/TextRendering/SHFreetypeInstance.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/TextRendering/SHFreetypeInstance.cpp new file mode 100644 index 00000000..9e629020 --- /dev/null +++ b/SHADE_Engine/src/Graphics/MiddleEnd/TextRendering/SHFreetypeInstance.cpp @@ -0,0 +1,27 @@ +#include "SHpch.h" +#include "SHFreetypeInstance.h" +#include "msdf-atlas-gen/msdf-atlas-gen.h" +#include "msdfgen-ext.h" + +namespace SHADE +{ + + msdfgen::FreetypeHandle* SHFreetypeInstance::freetypeHandle = nullptr; + + void SHFreetypeInstance::Init(void) noexcept + { + // initialize freetype + freetypeHandle = msdfgen::initializeFreetype(); + } + + void SHFreetypeInstance::Exit(void) noexcept + { + msdfgen::deinitializeFreetype(freetypeHandle); + } + + msdfgen::FreetypeHandle* SHFreetypeInstance::GetFreetypeHandle(void) noexcept + { + return freetypeHandle; + } + +} \ No newline at end of file diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/TextRendering/SHFreetypeInstance.h b/SHADE_Engine/src/Graphics/MiddleEnd/TextRendering/SHFreetypeInstance.h new file mode 100644 index 00000000..4d1bed9c --- /dev/null +++ b/SHADE_Engine/src/Graphics/MiddleEnd/TextRendering/SHFreetypeInstance.h @@ -0,0 +1,23 @@ +#pragma once + +namespace msdfgen +{ + class FreetypeHandle; +} + +namespace SHADE +{ + class SHFreetypeInstance + { + private: + //! Only need this to be initialized once + static msdfgen::FreetypeHandle* freetypeHandle; + + public: + static void Init (void) noexcept; + static void Exit (void) noexcept; + + static msdfgen::FreetypeHandle* GetFreetypeHandle(void) noexcept; + + }; +} diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/TextRendering/SHTextRenderableComponent.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/TextRendering/SHTextRenderableComponent.cpp new file mode 100644 index 00000000..b407b599 --- /dev/null +++ b/SHADE_Engine/src/Graphics/MiddleEnd/TextRendering/SHTextRenderableComponent.cpp @@ -0,0 +1,95 @@ +#include "SHpch.h" +#include "SHTextRenderableComponent.h" + +namespace SHADE +{ + + void SHTextRenderableComponent::MakeDirty(void) noexcept + { + requiresRecompute = true; + } + + void SHTextRenderableComponent::Clean(void) noexcept + { + requiresRecompute = false; + } + + /***************************************************************************/ + /*! + + \brief + On create the text has nothing. + + */ + /***************************************************************************/ + void SHTextRenderableComponent::OnCreate(void) + { + text = "My name is Brandon."; + requiresRecompute = true; + + // Default white color. + color = SHColour::WHITE; + } + + void SHTextRenderableComponent::OnDestroy(void) + { + + } + + /***************************************************************************/ + /*! + + \brief + Sets the text to be rendered. + + \param newText + + + \return + + */ + /***************************************************************************/ + void SHTextRenderableComponent::SetText(std::string_view newText) noexcept + { + text = newText; + MakeDirty(); + } + + void SHTextRenderableComponent::SetFont(Handle font) noexcept + { + fontHandle = font; + MakeDirty(); + } + + /***************************************************************************/ + /*! + + \brief + Getter for the text required to render. + + \return + + + */ + /***************************************************************************/ + std::string const& SHTextRenderableComponent::GetText(void) const noexcept + { + return text; + } + + Handle SHTextRenderableComponent::GetFont(void) const noexcept + { + return fontHandle; + } + +} + +namespace rttr +{ + RTTR_REGISTRATION + { + using namespace SHADE; + + registration::class_("Text Renderer Component"); + }; +} diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/TextRendering/SHTextRenderableComponent.h b/SHADE_Engine/src/Graphics/MiddleEnd/TextRendering/SHTextRenderableComponent.h new file mode 100644 index 00000000..ef907409 --- /dev/null +++ b/SHADE_Engine/src/Graphics/MiddleEnd/TextRendering/SHTextRenderableComponent.h @@ -0,0 +1,65 @@ +#pragma once + +#include +#include +#include "ECS_Base/Components/SHComponent.h" +#include "Math/SHColour.h" +#include "Resource/SHHandle.h" +#include + +namespace SHADE +{ + class SHFont; + class SHVkDescriptorSetGroup; + class SHVkBuffer; + + class SH_API SHTextRenderableComponent final : public SHComponent + { + public: + static constexpr uint32_t MAX_CHARACTERS = 500; + + private: + using TextIndexingType = uint32_t; + + private: + //! Text required to be rendered + std::string text; + + //! Color of the text + SHColour color; + + //! Requires to recompute the positions of each glyph/character + bool requiresRecompute; + + //! Handle to the font used to render the text + Handle fontHandle; + + //! We want to index into the buffer with matrices + Handle indexingDataBuffer; + + //! character position data for each letter in the text + Handle charPositionDataBuffer; + + void MakeDirty (void) noexcept; + void Clean (void) noexcept; + + public: + void OnCreate(void) override final; + void OnDestroy(void) override final; + + /*-----------------------------------------------------------------------*/ + /* SETTERS AND GETTERS */ + /*-----------------------------------------------------------------------*/ + void SetText (std::string_view newText) noexcept; + void SetFont (Handle font) noexcept; + + std::string const& GetText (void) const noexcept; + Handle GetFont (void) const noexcept; + + friend class SHTextRenderingSubSystem; + + RTTR_ENABLE() + + }; +} + diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/TextRendering/SHTextRenderingSubSystem.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/TextRendering/SHTextRenderingSubSystem.cpp new file mode 100644 index 00000000..6748311e --- /dev/null +++ b/SHADE_Engine/src/Graphics/MiddleEnd/TextRendering/SHTextRenderingSubSystem.cpp @@ -0,0 +1,242 @@ +#include "SHpch.h" +#include "SHTextRenderingSubSystem.h" +#include "Graphics/MiddleEnd/TextRendering/SHTextRenderableComponent.h" +#include "ECS_Base/Managers/SHComponentManager.h" +#include "Math/Vector/SHVec4.h" +#include "Graphics/Devices/SHVkLogicalDevice.h" +#include "Graphics/MiddleEnd/TextRendering/SHFont.h" +#include "Graphics/Buffers/SHVkBuffer.h" +#include "Graphics/MiddleEnd/GlobalData/SHGraphicsGlobalData.h" +#include "Graphics/Pipeline/SHVkPipeline.h" +#include "Graphics/SHVkUtil.h" +#include "Graphics/RenderGraph/SHSubpass.h" +#include "Math/Transform/SHTransformComponent.h" + +namespace SHADE +{ + void SHTextRenderingSubSystem::RecomputePositions(SHTextRenderableComponent& textComp) noexcept + { + if (textComp.text.empty() || !textComp.fontHandle) + return; + + // Create the buffer + if (!textComp.indexingDataBuffer) + textComp.indexingDataBuffer = logicalDevice->CreateBuffer(SHTextRenderableComponent::MAX_CHARACTERS * sizeof(uint32_t), nullptr, SHTextRenderableComponent::MAX_CHARACTERS * sizeof(uint32_t), vk::BufferUsageFlagBits::eVertexBuffer, VMA_MEMORY_USAGE_AUTO, VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT | VMA_ALLOCATION_CREATE_MAPPED_BIT); + + if (!textComp.charPositionDataBuffer) + textComp.charPositionDataBuffer = logicalDevice->CreateBuffer(SHTextRenderableComponent::MAX_CHARACTERS * sizeof(SHVec4), nullptr, SHTextRenderableComponent::MAX_CHARACTERS * sizeof(SHVec4), vk::BufferUsageFlagBits::eVertexBuffer, VMA_MEMORY_USAGE_AUTO, VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT | VMA_ALLOCATION_CREATE_MAPPED_BIT); + + // For indexing font transformation in the shader + std::vector indexingData; + + // For placing glyphs correctly + std::vector charPositionData; + + // Baseline relative to entity with this component + SHVec4 baselineOrigin{ 0.0f, 0.0f, 0.0f, 1.0f }; + + // Number of characters in the string + uint32_t numChars = static_cast(textComp.text.size()); + + // Get a ref to the transform indices + auto const& glyphTransformIndices = textComp.fontHandle->GetUnicodeIndexing(); + + // Get a ref to the glyph transformations + auto const& glyphTransforms = textComp.fontHandle->GetFontAsset().glyphTransformations; + + bool dueNextLine = false; + + // for every character + for (uint32_t i = 0; i < numChars; ++i) + { + SHTextRenderableComponent::TextIndexingType index = glyphTransformIndices.at(textComp.text[i]); + + // Copy baseline + SHVec4 characterPos = baselineOrigin; + + // Get where to draw the glyph relative to the baseline + characterPos[0] += glyphTransforms[index].m[SHFontAsset::BASELINE_LEFT_MATRIX_INDEX_ROW][SHFontAsset::BASELINE_LEFT_MATRIX_INDEX_COL]; // Inside the matrix but not used in the shader so this value has no positional value + characterPos[1] += glyphTransforms[index].m[SHFontAsset::BASELINE_BOTTOM_MATRIX_INDEX_ROW][SHFontAsset::BASELINE_BOTTOM_MATRIX_INDEX_COL]; // Inside the matrix but not used in the shader so this value has no positional value + + indexingData.push_back(index); + charPositionData.push_back(characterPos); + + // if not the last character + if (i != numChars - 1) + { + // Get the advance and move the baseline + double advance = 0.0; + textComp.fontHandle->GetFontAsset().fontGeometry.getAdvance(advance, textComp.text[i], textComp.text[static_cast(i) + 1]); + baselineOrigin[0] += static_cast(advance); + + //if (baselineOrigin[0] >= textComp.estimatedLineLength) + //{ + // dueNextLine = true; + //} + } + + //if (dueNextLine && textComp.renderedText[i] == ' ') + //{ + // baselineOrigin[0] = 0.0f; + // baselineOrigin[1] -= textComp.lineSpacing; + // dueNextLine = false; + //} + } + + textComp.indexingDataBuffer->WriteToMemory(indexingData.data(), static_cast(indexingData.size()) * sizeof (SHTextRenderableComponent::TextIndexingType),0, 0); + textComp.charPositionDataBuffer->WriteToMemory(charPositionData.data(), static_cast(charPositionData.size()) * sizeof (SHVec4), 0, 0); + + indexingData.clear(); + charPositionData.clear(); + + } + + void SHTextRenderingSubSystem::Init(Handle device, Handle compatibleRenderpass, Handle subpass, Handle descPool, Handle textVS, Handle textFS, std::function, uint32_t)> const& bindFunction) noexcept + { + SHComponentManager::CreateComponentSparseSet(); + + cameraDescSetBind = bindFunction; + + logicalDevice = device; + + // prepare pipeline layout params + SHPipelineLayoutParams plParams + { + .shaderModules = {textVS, textFS}, + .globalDescSetLayouts = SHGraphicsGlobalData::GetDescSetLayouts() + }; + + pipelineLayout = logicalDevice->CreatePipelineLayout(plParams); + + // Create pipeline + pipeline = logicalDevice->CreateGraphicsPipeline(pipelineLayout, nullptr, compatibleRenderpass, subpass); + + // vertex input state of the pipeline + SHVertexInputState vertexInputState; + + // Configure vertex attributes + vertexInputState.AddBinding(true, false, { SHVertexAttribute(SHAttribFormat::FLOAT_4D) }); // location = 0 (character position data) + vertexInputState.AddBinding(true, false, { SHVertexAttribute(SHAttribFormat::UINT32_1D) }); // location = 1 (glyph index to index matrices) + + // Set vertex state for new pipeline + pipeline->GetPipelineState().SetVertexInputState(vertexInputState); + + SHColorBlendState colorBlendState{}; + colorBlendState.logic_op_enable = VK_FALSE; + colorBlendState.logic_op = vk::LogicOp::eCopy; + + auto const& subpassColorReferences = subpass->GetColorAttachmentReferences(); + colorBlendState.attachments.reserve(static_cast(subpassColorReferences.size())); + + for (auto& att : subpassColorReferences) + { + colorBlendState.attachments.push_back(vk::PipelineColorBlendAttachmentState + { + .blendEnable = SHVkUtil::IsBlendCompatible(subpass->GetFormatFromAttachmentReference(att.attachment)) ? true : false, + .srcColorBlendFactor = vk::BlendFactor::eSrcAlpha, + .dstColorBlendFactor = vk::BlendFactor::eOneMinusSrcAlpha, + .colorBlendOp = vk::BlendOp::eAdd, + .srcAlphaBlendFactor = vk::BlendFactor::eOne, + .dstAlphaBlendFactor = vk::BlendFactor::eZero, + .alphaBlendOp = vk::BlendOp::eAdd, + .colorWriteMask = vk::ColorComponentFlagBits::eR | vk::ColorComponentFlagBits::eG | vk::ColorComponentFlagBits::eB | vk::ColorComponentFlagBits::eA, + } + ); + } + + pipeline->GetPipelineState().SetColorBlenState(colorBlendState); + + SHInputAssemblyState inputAssembly{}; + inputAssembly.topology = vk::PrimitiveTopology::eTriangleFan; + pipeline->GetPipelineState().SetInputAssemblyState(inputAssembly); + + SHRasterizationState rasterState{}; + rasterState.frontFacingOrientation = vk::FrontFace::eClockwise; + pipeline->GetPipelineState().SetRasterizationState(rasterState); + + // Construct pipeline + pipeline->ConstructPipeline(); + + SHVkDescriptorSetLayout::Binding fontBitmapBinding + { + .Type = vk::DescriptorType::eCombinedImageSampler, + .Stage = vk::ShaderStageFlagBits::eFragment, + .BindPoint = SHGraphicsConstants::DescriptorSetBindings::FONT_BITMAP_DATA, + .DescriptorCount = 1, + }; + + SHVkDescriptorSetLayout::Binding fontMatrixBinding + { + .Type = vk::DescriptorType::eStorageBuffer, + .Stage = vk::ShaderStageFlagBits::eVertex, + .BindPoint = SHGraphicsConstants::DescriptorSetBindings::FONT_MATRIX_DATA, + .DescriptorCount = 1, + }; + + fontDataDescSetLayout = logicalDevice->CreateDescriptorSetLayout(SHGraphicsConstants::DescriptorSetIndex::FONT_DATA, { fontBitmapBinding, fontMatrixBinding }); + + } + + void SHTextRenderingSubSystem::Run(uint32_t frameIndex) noexcept + { + auto& textRendererComps = SHComponentManager::GetDense(); + + for (auto& comp : textRendererComps) + { + // If the component is dirty + if (comp.requiresRecompute) + { + RecomputePositions(comp); + comp.Clean(); + } + } + } + + void SHTextRenderingSubSystem::Render(Handle cmdBuffer, uint32_t frameIndex) noexcept + { + auto& textRendererComps = SHComponentManager::GetDense(); + for (auto& comp : textRendererComps) + { + auto* transform = SHComponentManager::GetComponent(comp.GetEID()); + + Handle fontHandle = comp.fontHandle; + if (fontHandle && transform) + { + // bind the pipeline + cmdBuffer->BindPipeline(pipeline); + + // bind VBO (position and indices) + cmdBuffer->BindVertexBuffer(SHGraphicsConstants::VertexBufferBindings::CALCULATED_GLYPH_POSITION, comp.charPositionDataBuffer, 0); + cmdBuffer->BindVertexBuffer(SHGraphicsConstants::VertexBufferBindings::GLYPH_INDEX, comp.indexingDataBuffer, 0); + + cameraDescSetBind(cmdBuffer, frameIndex); + + // bind descriptors for font (matrices) + cmdBuffer->BindDescriptorSet(fontHandle->GetDescriptorSet(), SH_PIPELINE_TYPE::GRAPHICS, SHGraphicsConstants::DescriptorSetIndex::FONT_DATA, {}); + + cmdBuffer->SetPushConstantVariable("TestPushConstant.worldTransform", transform->GetTRS(), SH_PIPELINE_TYPE::GRAPHICS); + cmdBuffer->SetPushConstantVariable("TestPushConstant.eid", comp.GetEID(), SH_PIPELINE_TYPE::GRAPHICS); + cmdBuffer->SetPushConstantVariable("TestPushConstant.textColor", SHVec3 (1.0f, 1.0f, 1.0f), SH_PIPELINE_TYPE::GRAPHICS); + + cmdBuffer->SubmitPushConstants(SH_PIPELINE_TYPE::GRAPHICS); + + // call draw call + cmdBuffer->DrawArrays(4, comp.text.size(), 0, 0); + //glDrawArraysInstanced(GL_TRIANGLE_FAN, 0, 4, static_cast(textComp.lastRenderedCharacterIndex) + 1); + + } + + } + } + + void SHTextRenderingSubSystem::Exit(void) noexcept + { + + } + + Handle SHTextRenderingSubSystem::GetFontDataDescSetLayout(void) const noexcept + { + return fontDataDescSetLayout; + } + +} \ No newline at end of file diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/TextRendering/SHTextRenderingSubSystem.h b/SHADE_Engine/src/Graphics/MiddleEnd/TextRendering/SHTextRenderingSubSystem.h new file mode 100644 index 00000000..05ab01da --- /dev/null +++ b/SHADE_Engine/src/Graphics/MiddleEnd/TextRendering/SHTextRenderingSubSystem.h @@ -0,0 +1,65 @@ +#pragma once + +#include "Resource/SHHandle.h" +#include "Graphics/Pipeline/SHPipelineState.h" +#include "Math/SHMatrix.h" +#include "Math/Vector/SHVec3.h" + +namespace SHADE +{ + class SHVkLogicalDevice; + class SHVkDescriptorPool; + class SHVkDescriptorSetGroup; + class SHVkDescriptorSetLayout; + class SHVkBuffer; + class SHLightComponent; + class SHVkCommandBuffer; + class SHTextRenderableComponent; + class SHVkPipeline; + class SHVkPipelineLayout; + class SHVkRenderpass; + class SHSubpass; + class SHVkShaderModule; + + class SHTextRenderingSubSystem + { + private: + struct ShaderPushConstantData + { + SHMatrix worldTransform; + uint32_t eid; + SHVec3 textColor; + }; + + //! Logical device for creation and destruction + Handle logicalDevice; + + //! Pipeline for rendering the text + Handle pipeline; + + //! Pipeline layout for the pipeline + Handle pipelineLayout; + + //! Descriptor set for font data access in shaders + Handle fontDataDescSetLayout; + + //! Super temporary. Global descriptor set needs to be revamped along with + //! entire graphics system. + std::function, uint32_t)> cameraDescSetBind; + + private: + void RecomputePositions(SHTextRenderableComponent& textComp) noexcept; + + public: + void Init(Handle device, Handle compatibleRenderpass, Handle subpass, Handle descPool, Handle textVS, Handle textFS, std::function, uint32_t)> const& bindFunction) noexcept; + void Run(uint32_t frameIndex) noexcept; + + void Render (Handle cmdBuffer, uint32_t frameIndex) noexcept; + void Exit(void) noexcept; + + + Handle GetFontDataDescSetLayout (void) const noexcept; + + + }; +} diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Textures/SHTextureLibrary.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/Textures/SHTextureLibrary.cpp index b92ccddf..dfb3f3b9 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Textures/SHTextureLibrary.cpp +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Textures/SHTextureLibrary.cpp @@ -19,7 +19,7 @@ of DigiPen Institute of Technology is prohibited. #include "Graphics/Buffers/SHVkBuffer.h" #include "Graphics/Commands/SHVkCommandBuffer.h" #include "Graphics/SHVkUtil.h" -#include "Tools/SHLogger.h" +#include "Tools/Logger/SHLogger.h" #include "Graphics/MiddleEnd/Interface/SHGraphicsConstants.h" #include "Graphics/Descriptors/SHVkDescriptorSetGroup.h" #include "Graphics/Images/SHVkImage.h" diff --git a/SHADE_Engine/src/Graphics/Pipeline/SHVkPipelineLayout.cpp b/SHADE_Engine/src/Graphics/Pipeline/SHVkPipelineLayout.cpp index 47b2e010..0333aa09 100644 --- a/SHADE_Engine/src/Graphics/Pipeline/SHVkPipelineLayout.cpp +++ b/SHADE_Engine/src/Graphics/Pipeline/SHVkPipelineLayout.cpp @@ -2,7 +2,7 @@ #include "SHVkPipelineLayout.h" #include "Graphics/Devices/SHVkLogicalDevice.h" #include "Graphics/Shaders/SHVkShaderModule.h" -#include "Tools/SHLogger.h" +#include "Tools/Logger/SHLogger.h" #include "Graphics/Instance/SHVkInstance.h" namespace SHADE @@ -79,9 +79,9 @@ namespace SHADE startOffset += pcInfo.size; } + stageFlags |= shaderModule->GetShaderStageFlagBits(); } - stageFlags |= shaderModule->GetShaderStageFlagBits(); } // After all the sizes of the push constant blocks have been added, record the size in the interface diff --git a/SHADE_Engine/src/Graphics/Queues/SHVkQueue.cpp b/SHADE_Engine/src/Graphics/Queues/SHVkQueue.cpp index dcb3ff6a..4d8b0d76 100644 --- a/SHADE_Engine/src/Graphics/Queues/SHVkQueue.cpp +++ b/SHADE_Engine/src/Graphics/Queues/SHVkQueue.cpp @@ -1,6 +1,6 @@ #include "SHPch.h" #include "SHVkQueue.h" -#include "Tools/SHLogger.h" +#include "Tools/Logger/SHLogger.h" #include "Graphics/Devices/SHVkLogicalDevice.h" #include "Graphics/Synchronization/SHVkSemaphore.h" #include "Graphics/Synchronization/SHVkFence.h" diff --git a/SHADE_Engine/src/Graphics/RenderGraph/SHAttachmentDescriptionType.h b/SHADE_Engine/src/Graphics/RenderGraph/SHAttachmentDescriptionType.h index c4d44ea8..16c07cdf 100644 --- a/SHADE_Engine/src/Graphics/RenderGraph/SHAttachmentDescriptionType.h +++ b/SHADE_Engine/src/Graphics/RenderGraph/SHAttachmentDescriptionType.h @@ -3,7 +3,7 @@ namespace SHADE { // Used for attachment description creation for renderpass node - enum class SH_ATT_DESC_TYPE_FLAGS + enum class SH_RENDER_GRAPH_RESOURCE_FLAGS { COLOR = 0x01, COLOR_PRESENT = 0x02, @@ -11,7 +11,8 @@ namespace SHADE STENCIL = 0x08, DEPTH_STENCIL = 0x10, INPUT = 0x20, - STORAGE = 0x40 + STORAGE = 0x40, + SHARED = 0x80 // if resource is meant to be used across render graphs, mark this flag }; } diff --git a/SHADE_Engine/src/Graphics/RenderGraph/SHRenderGraph.cpp b/SHADE_Engine/src/Graphics/RenderGraph/SHRenderGraph.cpp index 500bcf04..2ffd6d13 100644 --- a/SHADE_Engine/src/Graphics/RenderGraph/SHRenderGraph.cpp +++ b/SHADE_Engine/src/Graphics/RenderGraph/SHRenderGraph.cpp @@ -7,10 +7,13 @@ #include "Graphics/Images/SHVkImageView.h" #include "Graphics/Framebuffer/SHVkFramebuffer.h" #include "Graphics/Buffers/SHVkBuffer.h" -#include "Tools/SHLogger.h" +#include "Tools/Logger/SHLogger.h" #include "SHAttachmentDescInitParams.h" #include "SHRenderGraphStorage.h" #include "Graphics/RenderGraph/SHRenderGraphNodeCompute.h" +#include "Tools/Utilities/SHUtilities.h" +#include "Graphics/MiddleEnd/GlobalData/SHGraphicsGlobalData.h" +#include "Graphics/RenderGraph/SHRenderToSwapchainImageSystem.h" namespace SHADE { @@ -49,7 +52,7 @@ namespace SHADE */ /***************************************************************************/ - void SHRenderGraph::AddResource(std::string resourceName, std::initializer_list typeFlags, uint32_t w /*= static_cast(-1)*/, uint32_t h /*= static_cast(-1)*/, vk::Format format/* = vk::Format::eB8G8R8A8Unorm*/, uint8_t levels /*= 1*/, vk::ImageUsageFlagBits usageFlags/* = {}*/, vk::ImageCreateFlagBits createFlags /*= {}*/) + void SHRenderGraph::AddResource(std::string resourceName, std::initializer_list typeFlags, uint32_t w /*= static_cast(-1)*/, uint32_t h /*= static_cast(-1)*/, vk::Format format/* = vk::Format::eB8G8R8A8Unorm*/, uint8_t levels /*= 1*/, vk::ImageUsageFlagBits usageFlags/* = {}*/, vk::ImageCreateFlagBits createFlags /*= {}*/) { // If we set to if (w == static_cast(-1) && h == static_cast(-1)) @@ -59,10 +62,41 @@ namespace SHADE format = renderGraphStorage->swapchain->GetSurfaceFormatKHR().format; } - auto resource = resourceManager->Create(renderGraphStorage, resourceName, typeFlags, format, w, h, levels, usageFlags, createFlags); + auto resource = renderGraphStorage->resourceHub->Create(renderGraphStorage, resourceName, typeFlags, format, w, h, levels, usageFlags, createFlags); renderGraphStorage->graphResources->try_emplace(resourceName, resource); } + void SHRenderGraph::LinkNonOwningResource(Handle resourceOrigin, std::string resourceName) noexcept + { + // resource to link + Handle resourceToLink = resourceOrigin->GetRenderGraphResource(resourceName); + if (!resourceToLink) + { + SHLOG_ERROR("Resource does not exist in render graph, cannot link resource."); + return; + } + + // Get the final layout of the resource from the previous render graph + vk::ImageLayout finalLayout{vk::ImageLayout::eUndefined}; + auto const& nodes = resourceOrigin->GetNodes(); + for (auto& node : nodes) + { + if (vk::ImageLayout layout = resourceToLink->GetInfoTracker()->GetLayout(node, {}); layout != vk::ImageLayout::eUndefined) + finalLayout = layout; + + for (auto& compute : node->nodeComputes) + { + if (vk::ImageLayout layout = resourceToLink->GetInfoTracker()->GetLayout(compute); layout != vk::ImageLayout::eUndefined) + finalLayout = layout; + } + } + + renderGraphStorage->graphResources->try_emplace(resourceName, resourceToLink); + + // add to this pool so that when we generate later, the attachment descriptions will make its initial layout the layout stored here + renderGraphStorage->nonOwningResourceInitialLayouts.emplace(resourceToLink.GetId().Raw, finalLayout); + } + /***************************************************************************/ /*! @@ -88,30 +122,59 @@ namespace SHADE return; } + // We first want to take all resources track their layout as undefined at the start of the node/renderpass + auto const resources = node->GetResources(); + for (auto& resource : resources) + { + resource->GetInfoTracker()->TrackLayout(node, {}, vk::ImageLayout::eUndefined); + } + // attempt to get all final layouts for all resources for (auto& subpass : node->subpasses) { for (auto& color : subpass->colorReferences) { // If final renderpass and attachment is a COLOR_PRESENT resource, make resource transition to present after last subpass - if (i == nodes.size() - 1 && (node->attResources[color.attachment]->resourceTypeFlags & static_cast(SH_ATT_DESC_TYPE_FLAGS::COLOR_PRESENT))) + if (i == nodes.size() - 1 && (node->attResources[color.attachment]->resourceTypeFlags & static_cast(SH_RENDER_GRAPH_RESOURCE_FLAGS::COLOR_PRESENT))) resourceAttFinalLayouts[color.attachment] = vk::ImageLayout::ePresentSrcKHR; else resourceAttFinalLayouts[color.attachment] = color.layout; + + node->attResources[color.attachment]->infoTracker->TrackLayout(node, subpass, color.layout); } for (auto& depth : subpass->depthReferences) + { resourceAttFinalLayouts[depth.attachment] = depth.layout; + node->attResources[depth.attachment]->infoTracker->TrackLayout(node, subpass, depth.layout); + } for (auto& input : subpass->inputReferences) + { resourceAttFinalLayouts[input.attachment] = input.layout; + node->attResources[input.attachment]->infoTracker->TrackLayout(node, subpass, input.layout); + } } for (uint32_t j = 0; j < node->attachmentDescriptions.size(); ++j) { auto& att = node->attachmentDescriptions[j]; - att.initialLayout = vk::ImageLayout::eUndefined; + auto& resource = node->attResources[j]; + + // If resource is from another render graph, use the final layout it had when it was last used in that graph. This is initialized in LinkNonOwningResource. + // We also want to load the attachment, not "don't care". + if (resource->resourceTypeFlags & SHUtilities::ConvertEnum(SH_RENDER_GRAPH_RESOURCE_FLAGS::SHARED) && + renderGraphStorage->nonOwningResourceInitialLayouts.contains(resource.GetId().Raw)) + { + att.initialLayout = renderGraphStorage->nonOwningResourceInitialLayouts.at (resource.GetId().Raw); + att.loadOp = vk::AttachmentLoadOp::eLoad; + att.stencilLoadOp = vk::AttachmentLoadOp::eLoad; + } + else + att.initialLayout = vk::ImageLayout::eUndefined; + att.finalLayout = resourceAttFinalLayouts[j]; + resource->GetInfoTracker()->TrackLayout(node, {}, att.finalLayout); } ++i; } @@ -129,11 +192,11 @@ namespace SHADE for (auto& predResource : prereq->attResources) { // if a predecessor's resource is used by this node, we want to copy the final layout from the pred to the initial of this node - if (uint64_t resourceID = predResource.GetId().Raw; node->resourceAttachmentMapping.contains(resourceID)) + if (uint64_t resourceID = predResource.GetId().Raw; node->resourceAttachmentMapping->contains(resourceID)) { // Get the resource's attachment index in BOTH the predecessor and the current node - uint32_t prereqResourceAttIndex = prereq->resourceAttachmentMapping[resourceID]; - uint32_t resourceAttIndex = node->resourceAttachmentMapping[resourceID]; + uint32_t prereqResourceAttIndex = prereq->resourceAttachmentMapping->at(resourceID); + uint32_t resourceAttIndex = node->resourceAttachmentMapping->at(resourceID); // Use the resource attachment index to get the attachment description in the renderpass auto& attDesc = node->attachmentDescriptions[resourceAttIndex]; @@ -146,12 +209,13 @@ namespace SHADE attDesc.stencilLoadOp = vk::AttachmentLoadOp::eLoad; attDesc.stencilStoreOp = vk::AttachmentStoreOp::eStore; - // TODO: Stencil load and store - // When an image is done being used in a renderpass, the image layout will end up being the finalLayout // value of the attachment description. We want this to carry over to the next renderpass; specifically // to have the initialLayout of the attachment description in the next renderpass match the finalLayout in the previous. attDesc.initialLayout = predAttDesc.finalLayout; + + // We also want to track it + predResource->GetInfoTracker()->TrackLayout(node, {}, attDesc.initialLayout); } } } @@ -225,12 +289,12 @@ namespace SHADE for (auto& inputAtt : subpass->inputReferences) { auto resource = node->attResources[inputAtt.attachment]; - if (resource->resourceTypeFlags & static_cast(SH_ATT_DESC_TYPE_FLAGS::INPUT)) + if (resource->resourceTypeFlags & static_cast(SH_RENDER_GRAPH_RESOURCE_FLAGS::INPUT)) { - if (resource->resourceTypeFlags & static_cast(SH_ATT_DESC_TYPE_FLAGS::COLOR) || - resource->resourceTypeFlags & static_cast(SH_ATT_DESC_TYPE_FLAGS::COLOR_PRESENT)) + if (resource->resourceTypeFlags & static_cast(SH_RENDER_GRAPH_RESOURCE_FLAGS::COLOR) || + resource->resourceTypeFlags & static_cast(SH_RENDER_GRAPH_RESOURCE_FLAGS::COLOR_PRESENT)) colorRead |= (1 << i); - else if (resource->resourceTypeFlags & static_cast(SH_ATT_DESC_TYPE_FLAGS::DEPTH_STENCIL)) + else if (resource->resourceTypeFlags & static_cast(SH_RENDER_GRAPH_RESOURCE_FLAGS::DEPTH_STENCIL)) depthRead |= (1 << i); } else @@ -323,6 +387,12 @@ namespace SHADE } } + void SHRenderGraph::ConfigureSubSystems(void) noexcept + { + if (renderToSwapchainImageSystem) + renderToSwapchainImageSystem->ConstructPipelines(renderGraphStorage->logicalDevice); + } + /***************************************************************************/ /*! @@ -354,17 +424,17 @@ namespace SHADE */ /***************************************************************************/ - void SHRenderGraph::Init(std::string graphName, Handle logicalDevice, Handle swapchain) noexcept + void SHRenderGraph::Init(std::string graphName, Handle logicalDevice, Handle swapchain, SHResourceHub* resourceHub) noexcept { - resourceManager = std::make_shared(); + //resourceHub = std::make_shared(); - renderGraphStorage = resourceManager->Create(); - renderGraphStorage->graphResources = resourceManager->Create>>(); + renderGraphStorage = resourceHub->Create(); + renderGraphStorage->graphResources = resourceHub->Create>>(); renderGraphStorage->logicalDevice = logicalDevice; renderGraphStorage->swapchain = swapchain; - renderGraphStorage->resourceManager = resourceManager; + renderGraphStorage->resourceHub = resourceHub; renderGraphStorage->descriptorPool = logicalDevice->CreateDescriptorPools(); name = std::move(graphName); @@ -384,7 +454,6 @@ namespace SHADE SHRenderGraph::SHRenderGraph(void) noexcept : renderGraphStorage{} , nodes{} - , resourceManager{nullptr} { } @@ -392,7 +461,6 @@ namespace SHADE : renderGraphStorage{ rhs.renderGraphStorage } , nodeIndexing{ std::move(rhs.nodeIndexing) } , nodes{ std::move(rhs.nodes) } - , resourceManager{ std::move(rhs.resourceManager) } , name { std::move(rhs.name) } { @@ -406,7 +474,6 @@ namespace SHADE renderGraphStorage = rhs.renderGraphStorage; nodeIndexing = std::move(rhs.nodeIndexing); nodes = std::move(rhs.nodes); - resourceManager = std::move(rhs.resourceManager); name = std::move(rhs.name); return *this; @@ -472,11 +539,40 @@ namespace SHADE } } - auto node = nodes.emplace_back(resourceManager->Create(nodeName, renderGraphStorage, std::move(descInitParams), std::move(predecessors))); + auto node = nodes.emplace_back(renderGraphStorage->resourceHub->Create(nodeName, renderGraphStorage, std::move(descInitParams), std::move(predecessors))); nodeIndexing.emplace(std::move(nodeName), static_cast(nodes.size()) - 1u); return node; } + void SHRenderGraph::AddRenderToSwapchainNode(std::string toSwapchainResource, std::string swapchainResource, std::initializer_list predecessorNodes, std::pair, Handle> shaderModules) noexcept + { + for (auto& node : predecessorNodes) + { + if (!nodeIndexing.contains(node)) + return; + } + + if (renderGraphStorage->graphResources->contains(toSwapchainResource) && renderGraphStorage->graphResources->contains(swapchainResource)) + { + auto newNode = AddNode("Render To Present", { ResourceInstruction (toSwapchainResource.c_str()), ResourceInstruction(swapchainResource.c_str()) }, predecessorNodes); + auto newSubpass = newNode->AddSubpass("Render"); + newSubpass->AddColorOutput(swapchainResource); + newSubpass->AddInput(toSwapchainResource); + + renderToSwapchainImageSystem = renderGraphStorage->resourceHub->Create (newNode, newSubpass, shaderModules); + + newSubpass->AddExteriorDrawCalls([=](Handle& cmdBuffer, uint32_t frameIndex) + { + cmdBuffer->BindPipeline(renderToSwapchainImageSystem->GetPipeline()); + + newSubpass->BindDescriptorInputDescriptorSets (cmdBuffer, frameIndex); + + // draw a quad. + cmdBuffer->DrawArrays(4, 1, 0, 0); + }); + } + } + /***************************************************************************/ /*! @@ -497,6 +593,7 @@ namespace SHADE ConfigureSubpasses(); ConfigureRenderpasses(); ConfigureFramebuffers(); + ConfigureSubSystems(); } /***************************************************************************/ @@ -539,7 +636,10 @@ namespace SHADE { // resize resources for (auto& [name, resource] : *renderGraphStorage->graphResources) - resource->HandleResize(newWidth, newHeight); + { + if (!renderGraphStorage->nonOwningResourceInitialLayouts.contains (resource.GetId().Raw)) + resource->HandleResize(newWidth, newHeight); + } for (auto& node : nodes) { @@ -556,6 +656,11 @@ namespace SHADE } + std::vector> const& SHRenderGraph::GetNodes(void) const noexcept + { + return nodes; + } + Handle SHRenderGraph::GetRenderGraphResource(std::string const& resourceName) const noexcept { if (renderGraphStorage->graphResources->contains(resourceName)) diff --git a/SHADE_Engine/src/Graphics/RenderGraph/SHRenderGraph.h b/SHADE_Engine/src/Graphics/RenderGraph/SHRenderGraph.h index 741cc522..0a9ed376 100644 --- a/SHADE_Engine/src/Graphics/RenderGraph/SHRenderGraph.h +++ b/SHADE_Engine/src/Graphics/RenderGraph/SHRenderGraph.h @@ -32,6 +32,7 @@ namespace SHADE class SHGraphicsGlobalData; class SHVkDescriptorPool; class SHRenderGraphStorage; + class SHRenderToSwapchainImageSystem; class SH_API SHRenderGraph { @@ -41,7 +42,7 @@ namespace SHADE std::string resourceName; bool dontClearOnLoad; - ResourceInstruction (char const* resourceName, bool dontClearOnLoad = false) noexcept; + ResourceInstruction(char const* resourceName, bool dontClearOnLoad = false) noexcept; }; private: @@ -52,6 +53,7 @@ namespace SHADE void ConfigureAttachmentDescriptions (void) noexcept; void ConfigureSubpasses (void) noexcept; void ConfigureRenderpasses (void) noexcept; + void ConfigureSubSystems (void) noexcept; void ConfigureFramebuffers (void) noexcept; /*-----------------------------------------------------------------------*/ @@ -66,12 +68,12 @@ namespace SHADE //! Render graph nodes std::vector> nodes; - //! Resource library for graph handles - std::shared_ptr resourceManager; - //! Name of the RenderGraph std::string name; + //! For rendering onto the swapchain + Handle renderToSwapchainImageSystem; + public: /*-----------------------------------------------------------------------*/ /* CTORS AND DTORS */ @@ -84,9 +86,11 @@ namespace SHADE /*-----------------------------------------------------------------------*/ /* PUBLIC MEMBER FUNCTIONS */ /*-----------------------------------------------------------------------*/ - void Init (std::string graphName, Handle logicalDevice, Handle swapchain) noexcept; - void AddResource(std::string resourceName, std::initializer_list typeFlags, uint32_t w = static_cast(-1), uint32_t h = static_cast(-1), vk::Format format = vk::Format::eB8G8R8A8Unorm, uint8_t levels = 1, vk::ImageUsageFlagBits usageFlags = {}, vk::ImageCreateFlagBits createFlags = {}); + void Init (std::string graphName, Handle logicalDevice, Handle swapchain, SHResourceHub* resourceHub) noexcept; + void AddResource(std::string resourceName, std::initializer_list typeFlags, uint32_t w = static_cast(-1), uint32_t h = static_cast(-1), vk::Format format = vk::Format::eB8G8R8A8Unorm, uint8_t levels = 1, vk::ImageUsageFlagBits usageFlags = {}, vk::ImageCreateFlagBits createFlags = {}); + void LinkNonOwningResource (Handle resourceOrigin, std::string resourceName) noexcept; Handle AddNode (std::string nodeName, std::initializer_list resourceInstruction, std::initializer_list predecessorNodes) noexcept; + void AddRenderToSwapchainNode (std::string toSwapchainResource, std::string swapchainResource, std::initializer_list predecessorNodes, std::pair, Handle> shaderModules) noexcept; void Generate (void) noexcept; void CheckForNodeComputes (void) noexcept; @@ -97,9 +101,30 @@ namespace SHADE /*-----------------------------------------------------------------------*/ /* SETTERS AND GETTERS */ /*-----------------------------------------------------------------------*/ - Handle GetNode (std::string const& nodeName) const noexcept; - Handle GetRenderGraphResource (std::string const& resourceName) const noexcept; + Handle GetNode (std::string const& nodeName) const noexcept; + std::vector> const& GetNodes (void) const noexcept; + Handle GetRenderGraphResource (std::string const& resourceName) const noexcept; }; } #endif + + + +/* Some notes here: + * - The graph wasn't implemented with the intention of it being this versatile. + * - Graphs weren't meant to share resources and hence the generating of the render graph doesn't account for it. + * However, because it was eventually necessary that some resources had to be shared and its contents carried over to + * other graphs, the functionality was implemented through a link function in SHRenderGraph.cpp to facilitate this linkage. + * This should ideally be replaced by an implementation more self-contained, perhaps through a higher level class like a canvas + * that manage the resources instead and can facilitate such linking of resources. Either that, or we allow only 1 render graph, + * but different matrices (SHRenderer) can be used in different nodes. + * - There are also way too many hash maps created for ease of access. This definitely can be cut down. + * - + * + */ + + + + + diff --git a/SHADE_Engine/src/Graphics/RenderGraph/SHRenderGraphNode.cpp b/SHADE_Engine/src/Graphics/RenderGraph/SHRenderGraphNode.cpp index b3b5b58b..0f9379fe 100644 --- a/SHADE_Engine/src/Graphics/RenderGraph/SHRenderGraphNode.cpp +++ b/SHADE_Engine/src/Graphics/RenderGraph/SHRenderGraphNode.cpp @@ -46,7 +46,7 @@ namespace SHADE for (uint32_t j = 0; j < attResources.size(); ++j) { - uint32_t imageViewIndex = (attResources[j]->resourceTypeFlags & static_cast(SH_ATT_DESC_TYPE_FLAGS::COLOR_PRESENT)) ? i : 0; + uint32_t imageViewIndex = (attResources[j]->resourceTypeFlags & static_cast(SH_RENDER_GRAPH_RESOURCE_FLAGS::COLOR_PRESENT)) ? i : 0; imageViews[j] = attResources[j]->imageViews[imageViewIndex]; // We want the minimum dimensions for the framebuffer because the image attachments referenced cannot have dimensions smaller than the framebuffer's @@ -74,7 +74,7 @@ namespace SHADE for (uint32_t j = 0; j < attResources.size(); ++j) { - uint32_t imageViewIndex = (attResources[j]->resourceTypeFlags & static_cast(SH_ATT_DESC_TYPE_FLAGS::COLOR_PRESENT)) ? i : 0; + uint32_t imageViewIndex = (attResources[j]->resourceTypeFlags & static_cast(SH_RENDER_GRAPH_RESOURCE_FLAGS::COLOR_PRESENT)) ? i : 0; imageViews[j] = attResources[j]->imageViews[imageViewIndex]; // We want the minimum dimensions for the framebuffer because the image attachments referenced cannot have dimensions smaller than the framebuffer's @@ -124,7 +124,7 @@ namespace SHADE , framebuffers{} , prereqNodes{ std::move(predecessors) } , attachmentDescriptions{} - , resourceAttachmentMapping{} + , resourceAttachmentMapping { new std::unordered_map } , attResources{ } , subpasses{} , executed{ false } @@ -160,10 +160,10 @@ namespace SHADE newDesc.format = attResources[i]->resourceFormat; - if (attResources[i]->resourceTypeFlags & static_cast(SH_ATT_DESC_TYPE_FLAGS::COLOR_PRESENT)) + if (attResources[i]->resourceTypeFlags & static_cast(SH_RENDER_GRAPH_RESOURCE_FLAGS::COLOR_PRESENT)) containsSwapchainImage = true; - resourceAttachmentMapping.try_emplace(attResources[i].GetId().Raw, i); + resourceAttachmentMapping->try_emplace(attResources[i].GetId().Raw, i); } if (!containsSwapchainImage) @@ -250,16 +250,16 @@ namespace SHADE // Add subpass to container and create mapping for it subpasses.emplace_back ( - graphStorage->resourceManager->Create + graphStorage->resourceHub->Create ( subpassName, graphStorage, GetHandle(), static_cast(subpasses.size()), - &resourceAttachmentMapping + resourceAttachmentMapping.get() ) ); subpassIndexing.try_emplace(subpassName, static_cast(subpasses.size()) - 1u); Handle subpass = subpasses.back(); - subpass->Init(*graphStorage->resourceManager); + subpass->Init(*graphStorage->resourceHub); // Register the SuperBatch batcher.RegisterSuperBatch(subpass->GetSuperBatch()); @@ -279,10 +279,18 @@ namespace SHADE nodeComputeResources.push_back(resource); } + // need to use for tracking resources + std::vector> temp (nodeComputeResources); + // Create the subpass compute with the resources - auto nodeCompute = graphStorage->resourceManager->Create(std::move(nodeName), graphStorage, computeShaderModule, std::move(nodeComputeResources), std::move (dynamicBufferBindings), nodeComputes.empty()); + auto nodeCompute = graphStorage->resourceHub->Create(std::move(nodeName), graphStorage, computeShaderModule, std::move(nodeComputeResources), std::move (dynamicBufferBindings), nodeComputes.empty()); nodeComputes.push_back(nodeCompute); + for (auto& resource : temp) + { + resource->GetInfoTracker()->TrackLayout(nodeCompute); + } + return nodeCompute; } @@ -405,4 +413,9 @@ namespace SHADE return {}; } + std::vector> const& SHRenderGraphNode::GetResources(void) const noexcept + { + return attResources; + } + } \ No newline at end of file diff --git a/SHADE_Engine/src/Graphics/RenderGraph/SHRenderGraphNode.h b/SHADE_Engine/src/Graphics/RenderGraph/SHRenderGraphNode.h index 4fdac45c..775d64f7 100644 --- a/SHADE_Engine/src/Graphics/RenderGraph/SHRenderGraphNode.h +++ b/SHADE_Engine/src/Graphics/RenderGraph/SHRenderGraphNode.h @@ -60,7 +60,7 @@ namespace SHADE std::vector spDeps; //! For indexing resources fast - std::unordered_map resourceAttachmentMapping; + std::unique_ptr> resourceAttachmentMapping; //! For indexing subpasses std::map subpassIndexing; @@ -117,6 +117,7 @@ namespace SHADE Handle GetRenderpass(void) const noexcept; Handle GetSubpass(std::string_view subpassName) const noexcept; Handle GetResource (uint32_t resourceIndex) const noexcept; + std::vector> const& GetResources (void) const noexcept; friend class SHRenderGraph; }; diff --git a/SHADE_Engine/src/Graphics/RenderGraph/SHRenderGraphNodeCompute.cpp b/SHADE_Engine/src/Graphics/RenderGraph/SHRenderGraphNodeCompute.cpp index f4a103f7..2f8fd968 100644 --- a/SHADE_Engine/src/Graphics/RenderGraph/SHRenderGraphNodeCompute.cpp +++ b/SHADE_Engine/src/Graphics/RenderGraph/SHRenderGraphNodeCompute.cpp @@ -45,6 +45,7 @@ namespace SHADE // save the resources resources = std::move (subpassComputeResources); + //Get the descriptor set layouts required to allocate. We only want the ones for allocate because //global descriptors are already bound in the main system. auto const& graphResourceLayout = computePipeline->GetPipelineLayout()->GetDescriptorSetLayoutsPipeline()[SHGraphicsConstants::DescriptorSetIndex::RENDERGRAPH_RESOURCE]; @@ -65,7 +66,7 @@ namespace SHADE if (layouts.size() == SHGraphicsConstants::DescriptorSetIndex::RENDERGRAPH_NODE_COMPUTE_RESOURCE + 1) { // create compute resources - computeResource = graphStorage->resourceManager->Create(); + computeResource = graphStorage->resourceHub->Create(); auto computeResourceLayout = layouts[SHGraphicsConstants::DescriptorSetIndex::RENDERGRAPH_NODE_COMPUTE_RESOURCE]; computeResource->descSet = graphStorage->descriptorPool->Allocate({ computeResourceLayout }, { 1 }); #ifdef _DEBUG @@ -119,7 +120,7 @@ namespace SHADE // loop through bindings and write descriptor sets for (auto& binding : pipelineDescSetLayouts->GetBindings()) { - uint32_t imageIndex = (resources[i]->resourceTypeFlags & static_cast(SH_ATT_DESC_TYPE_FLAGS::COLOR_PRESENT)) ? frameIndex : 0; + uint32_t imageIndex = (resources[i]->resourceTypeFlags & static_cast(SH_RENDER_GRAPH_RESOURCE_FLAGS::COLOR_PRESENT)) ? frameIndex : 0; SHVkDescriptorSetGroup::viewSamplerLayout vsl = std::make_tuple(resources[i]->GetImageView(imageIndex), Handle{}, vk::ImageLayout::eGeneral); graphResourceDescSets[frameIndex]->ModifyWriteDescImage(SHGraphicsConstants::DescriptorSetIndex::RENDERGRAPH_RESOURCE, binding.BindPoint, { &vsl, 1 }); @@ -154,7 +155,7 @@ namespace SHADE .newLayout = vk::ImageLayout::eGeneral, .srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED, .dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED, - .image = resource->GetImage((resource->resourceTypeFlags & static_cast(SH_ATT_DESC_TYPE_FLAGS::COLOR_PRESENT)) ? i : 0)->GetVkImage(), + .image = resource->GetImage((resource->resourceTypeFlags & static_cast(SH_RENDER_GRAPH_RESOURCE_FLAGS::COLOR_PRESENT)) ? i : 0)->GetVkImage(), .subresourceRange = vk::ImageSubresourceRange { .aspectMask = resource->imageAspectFlags, diff --git a/SHADE_Engine/src/Graphics/RenderGraph/SHRenderGraphResource.cpp b/SHADE_Engine/src/Graphics/RenderGraph/SHRenderGraphResource.cpp index 4d4099c6..ce7e1622 100644 --- a/SHADE_Engine/src/Graphics/RenderGraph/SHRenderGraphResource.cpp +++ b/SHADE_Engine/src/Graphics/RenderGraph/SHRenderGraphResource.cpp @@ -6,9 +6,41 @@ #include "Graphics/Buffers/SHVkBuffer.h" #include "Graphics/SHVkUtil.h" #include "SHRenderGraphStorage.h" +#include "Graphics/RenderGraph/SHSubpass.h" +#include "Graphics/RenderGraph/SHRenderGraphNode.h" namespace SHADE { + void SHRenderGraphResource::InfoTracker::TrackLayout(Handle node, Handle subpass, vk::ImageLayout layout) noexcept + { + NodeSubpassPair nodeSubpassPair = std::pair(node, subpass); + layoutTracker[std::hash{}(nodeSubpassPair)] = layout; + } + + + void SHRenderGraphResource::InfoTracker::TrackLayout(Handle compute) noexcept + { + computeTracker.emplace (compute.GetId().Raw); + } + + vk::ImageLayout SHRenderGraphResource::InfoTracker::GetLayout(Handle node, Handle subpass) const noexcept + { + NodeSubpassPair nodeSubpassPair = std::pair(node, subpass); + std::size_t hashedValue = std::hash{}(nodeSubpassPair); + + if (layoutTracker.contains(hashedValue)) + return layoutTracker.at(hashedValue); + else + return vk::ImageLayout::eUndefined; + } + + vk::ImageLayout SHRenderGraphResource::InfoTracker::GetLayout(Handle compute) const noexcept + { + if (computeTracker.contains (compute.GetId().Raw)) + return vk::ImageLayout::eGeneral; + else + return vk::ImageLayout::eUndefined; + } /***************************************************************************/ /*! @@ -46,7 +78,7 @@ namespace SHADE */ /***************************************************************************/ - SHRenderGraphResource::SHRenderGraphResource(Handle renderGraphStorage, std::string const& name, std::initializer_list typeFlags, vk::Format format, uint32_t w, uint32_t h, uint8_t levels, vk::ImageUsageFlagBits usageFlags, vk::ImageCreateFlagBits createFlags) noexcept + SHRenderGraphResource::SHRenderGraphResource(Handle renderGraphStorage, std::string const& name, std::initializer_list typeFlags, vk::Format format, uint32_t w, uint32_t h, uint8_t levels, vk::ImageUsageFlagBits usageFlags, vk::ImageCreateFlagBits createFlags) noexcept : graphStorage{renderGraphStorage} , resourceTypeFlags{ } , resourceFormat{ format } @@ -58,9 +90,9 @@ namespace SHADE , resourceName{ name } { // If the resource type is an arbitrary image and not swapchain image - if (typeFlags.size() == 1 && *typeFlags.begin() == SH_ATT_DESC_TYPE_FLAGS::COLOR_PRESENT) + if (typeFlags.size() == 1 && *typeFlags.begin() == SH_RENDER_GRAPH_RESOURCE_FLAGS::COLOR_PRESENT) { - resourceTypeFlags |= static_cast(SH_ATT_DESC_TYPE_FLAGS::COLOR_PRESENT); + resourceTypeFlags |= static_cast(SH_RENDER_GRAPH_RESOURCE_FLAGS::COLOR_PRESENT); // Prepare image view details SHImageViewDetails viewDetails @@ -98,30 +130,30 @@ namespace SHADE // Check the resource type and set image usage flags and image aspect flags accordingly switch (type) { - case SH_ATT_DESC_TYPE_FLAGS::COLOR: + case SH_RENDER_GRAPH_RESOURCE_FLAGS::COLOR: usage |= vk::ImageUsageFlagBits::eColorAttachment; imageAspectFlags |= vk::ImageAspectFlagBits::eColor; break; - case SH_ATT_DESC_TYPE_FLAGS::DEPTH: + case SH_RENDER_GRAPH_RESOURCE_FLAGS::DEPTH: usage |= vk::ImageUsageFlagBits::eDepthStencilAttachment; imageAspectFlags |= vk::ImageAspectFlagBits::eDepth; break; - case SH_ATT_DESC_TYPE_FLAGS::STENCIL: + case SH_RENDER_GRAPH_RESOURCE_FLAGS::STENCIL: usage |= vk::ImageUsageFlagBits::eDepthStencilAttachment; imageAspectFlags |= vk::ImageAspectFlagBits::eStencil; break; - case SH_ATT_DESC_TYPE_FLAGS::DEPTH_STENCIL: + case SH_RENDER_GRAPH_RESOURCE_FLAGS::DEPTH_STENCIL: usage |= vk::ImageUsageFlagBits::eDepthStencilAttachment; imageAspectFlags |= vk::ImageAspectFlagBits::eStencil | vk::ImageAspectFlagBits::eDepth; break; - case SH_ATT_DESC_TYPE_FLAGS::INPUT: + case SH_RENDER_GRAPH_RESOURCE_FLAGS::INPUT: usage |= vk::ImageUsageFlagBits::eInputAttachment; usage |= vk::ImageUsageFlagBits::eSampled; break; - case SH_ATT_DESC_TYPE_FLAGS::STORAGE: + case SH_RENDER_GRAPH_RESOURCE_FLAGS::STORAGE: usage |= vk::ImageUsageFlagBits::eStorage; break; - case SH_ATT_DESC_TYPE_FLAGS::COLOR_PRESENT: + case SH_RENDER_GRAPH_RESOURCE_FLAGS::COLOR_PRESENT: { SHLOG_ERROR ("COLOR_PRESENT cannot be with other resource type flags. "); return; @@ -151,6 +183,8 @@ namespace SHADE imageViews.push_back(imageView); SET_VK_OBJ_NAME(graphStorage->logicalDevice, vk::ObjectType::eImageView, imageView->GetImageView(), "[Image View] " + resourceName); } + + infoTracker = renderGraphStorage->resourceHub->Create(); } /***************************************************************************/ @@ -175,6 +209,7 @@ namespace SHADE , mipLevels{ rhs.mipLevels } , imageAspectFlags{ rhs.imageAspectFlags } , graphStorage{rhs.graphStorage} + , infoTracker {std::move (rhs.infoTracker)} { } @@ -207,6 +242,7 @@ namespace SHADE mipLevels = rhs.mipLevels; imageAspectFlags = rhs.imageAspectFlags; graphStorage = rhs.graphStorage; + infoTracker = std::move(infoTracker); return *this; } @@ -229,7 +265,7 @@ namespace SHADE width = newWidth; height = newHeight; - if ((resourceTypeFlags & static_cast(SH_ATT_DESC_TYPE_FLAGS::COLOR_PRESENT)) == 0) + if ((resourceTypeFlags & static_cast(SH_RENDER_GRAPH_RESOURCE_FLAGS::COLOR_PRESENT)) == 0) { // prepare image view details SHImageViewDetails viewDetails @@ -347,4 +383,9 @@ namespace SHADE return resourceName; } + SHADE::Handle SHRenderGraphResource::GetInfoTracker(void) const noexcept + { + return infoTracker; + } + } \ No newline at end of file diff --git a/SHADE_Engine/src/Graphics/RenderGraph/SHRenderGraphResource.h b/SHADE_Engine/src/Graphics/RenderGraph/SHRenderGraphResource.h index e2fc5d8d..7ac2b824 100644 --- a/SHADE_Engine/src/Graphics/RenderGraph/SHRenderGraphResource.h +++ b/SHADE_Engine/src/Graphics/RenderGraph/SHRenderGraphResource.h @@ -6,6 +6,7 @@ #include "Resource/SHHandle.h" #include "Graphics/SHVulkanIncludes.h" #include "SH_API.h" +#include namespace SHADE { @@ -16,11 +17,41 @@ namespace SHADE class SHVkCommandBuffer; class SHVkBuffer; class SHRenderGraphStorage; + class SHRenderGraphNode; + class SHSubpass; + class SHRenderGraphNodeCompute; static constexpr uint32_t NON_SWAPCHAIN_RESOURCE_INDEX = 0; class SH_API SHRenderGraphResource { + public: + // For keeping track of resources as it gets passed down the pipeline (between multiple render graphs) + class InfoTracker + { + private: + using NodeSubpassPair = std::pair, Handle>; + + //! key here is the render graph node and subpass name combined, value is the layout of the resource at that node and subpass + std::unordered_map layoutTracker; + + //! if a resource is involved in a compute process, record it here + std::unordered_set computeTracker; + + public: + /*-----------------------------------------------------------------------*/ + /* PUBLIC MEMBER FUNCTIONS */ + /*-----------------------------------------------------------------------*/ + void TrackLayout (Handle node, Handle subpass, vk::ImageLayout layout) noexcept; + void TrackLayout (Handle compute) noexcept; + + /*-----------------------------------------------------------------------*/ + /* SETTERS AND GETTERS */ + /*-----------------------------------------------------------------------*/ + vk::ImageLayout GetLayout(Handle node, Handle subpass) const noexcept; + vk::ImageLayout GetLayout(Handle compute) const noexcept; + }; + private: /*-----------------------------------------------------------------------*/ /* PRIVATE MEMBER VARIABLES */ @@ -62,12 +93,14 @@ namespace SHADE //! usage flags vk::ImageUsageFlags usage = {}; + //! For tracking resource states in stages of the render graphs + Handle infoTracker; public: /*-----------------------------------------------------------------------*/ /* CTORS AND DTORS */ /*-----------------------------------------------------------------------*/ - SHRenderGraphResource(Handle renderGraphStorage, std::string const& name, std::initializer_list typeFlags, vk::Format format, uint32_t w, uint32_t h, uint8_t levels, vk::ImageUsageFlagBits usageFlags, vk::ImageCreateFlagBits createFlags) noexcept; + SHRenderGraphResource(Handle renderGraphStorage, std::string const& name, std::initializer_list typeFlags, vk::Format format, uint32_t w, uint32_t h, uint8_t levels, vk::ImageUsageFlagBits usageFlags, vk::ImageCreateFlagBits createFlags) noexcept; SHRenderGraphResource(SHRenderGraphResource&& rhs) noexcept; SHRenderGraphResource& operator=(SHRenderGraphResource&& rhs) noexcept; ~SHRenderGraphResource(void) noexcept; @@ -89,6 +122,7 @@ namespace SHADE Handle GetImage (uint32_t index = NON_SWAPCHAIN_RESOURCE_INDEX) const noexcept; uint8_t GetMipLevels (void) const noexcept; std::string GetName (void) const noexcept; + Handle GetInfoTracker (void) const noexcept; friend class SHRenderGraphNode; friend class SHRenderGraph; diff --git a/SHADE_Engine/src/Graphics/RenderGraph/SHRenderGraphStorage.h b/SHADE_Engine/src/Graphics/RenderGraph/SHRenderGraphStorage.h index 54ef705a..d02d8d39 100644 --- a/SHADE_Engine/src/Graphics/RenderGraph/SHRenderGraphStorage.h +++ b/SHADE_Engine/src/Graphics/RenderGraph/SHRenderGraphStorage.h @@ -20,7 +20,7 @@ namespace SHADE Handle swapchain; //! Resource manager for creation of objects - std::shared_ptr resourceManager; + SHResourceHub* resourceHub; //! Descriptor pool for the descriptor sets to be created in the subpasses Handle descriptorPool; @@ -28,6 +28,10 @@ namespace SHADE //! For accessing resources anywhere in the graph Handle>> graphResources; + //! HACK: Because there's no interface to specify a dependency between graphs, this will help attachment descriptions + //! use the correct layout, when a resource is shared between graphs + std::unordered_map nonOwningResourceInitialLayouts{}; + //SHRenderGraphStorage(void) noexcept; //SHRenderGraphStorage(SHRenderGraphStorage&& rhs) noexcept; //SHRenderGraphStorage& operator=(SHRenderGraphStorage&& rhs) noexcept; diff --git a/SHADE_Engine/src/Graphics/RenderGraph/SHRenderToSwapchainImageSystem.cpp b/SHADE_Engine/src/Graphics/RenderGraph/SHRenderToSwapchainImageSystem.cpp new file mode 100644 index 00000000..770217ee --- /dev/null +++ b/SHADE_Engine/src/Graphics/RenderGraph/SHRenderToSwapchainImageSystem.cpp @@ -0,0 +1,66 @@ +#include "SHpch.h" +#include "SHRenderToSwapchainImageSystem.h" +#include "Graphics/Devices/SHVkLogicalDevice.h" +#include "Graphics/MiddleEnd/GlobalData/SHGraphicsGlobalData.h" +#include "Graphics/RenderGraph/SHRenderGraphNode.h" +#include "Graphics/RenderGraph/SHSubpass.h" +#include "Graphics/SHVkUtil.h" + +namespace SHADE +{ + + SHRenderToSwapchainImageSystem::SHRenderToSwapchainImageSystem(Handle node, Handle subpass, std::pair, Handle> shaders) noexcept + : renderGraphNode {node} + , subpass{subpass} + , shaderModules{shaders} + , pipeline{} + , pipelineLayout{} + { + + } + + void SHRenderToSwapchainImageSystem::ConstructPipelines(Handle logicalDevice) noexcept + { + auto pipelineLayout = logicalDevice->CreatePipelineLayout(SHPipelineLayoutParams + { + .shaderModules = {shaderModules.first, shaderModules.second}, + .globalDescSetLayouts = SHGraphicsGlobalData::GetDescSetLayouts(), + }); + + pipeline = logicalDevice->CreateGraphicsPipeline(pipelineLayout, nullptr, renderGraphNode->GetRenderpass(), subpass); + + SHInputAssemblyState inputAssembly{}; + inputAssembly.topology = vk::PrimitiveTopology::eTriangleFan; + + pipeline->GetPipelineState().SetInputAssemblyState(inputAssembly); + + SHColorBlendState colorBlendState{}; + colorBlendState.logic_op_enable = VK_FALSE; + colorBlendState.logic_op = vk::LogicOp::eCopy; + + auto const& subpassColorReference = subpass->GetColorAttachmentReferences()[0]; + colorBlendState.attachments.push_back(vk::PipelineColorBlendAttachmentState + { + .blendEnable = SHVkUtil::IsBlendCompatible(subpass->GetFormatFromAttachmentReference(subpassColorReference.attachment)), + .srcColorBlendFactor = vk::BlendFactor::eSrcAlpha, + .dstColorBlendFactor = vk::BlendFactor::eOneMinusSrcAlpha, + .colorBlendOp = vk::BlendOp::eAdd, + .srcAlphaBlendFactor = vk::BlendFactor::eOne, + .dstAlphaBlendFactor = vk::BlendFactor::eZero, + .alphaBlendOp = vk::BlendOp::eAdd, + .colorWriteMask = vk::ColorComponentFlagBits::eR | vk::ColorComponentFlagBits::eG | vk::ColorComponentFlagBits::eB | vk::ColorComponentFlagBits::eA, + } + ); + + pipeline->GetPipelineState().SetColorBlenState(colorBlendState); + + pipeline->ConstructPipeline(); + + } + + Handle SHRenderToSwapchainImageSystem::GetPipeline(void) const noexcept + { + return pipeline; + } + +} \ No newline at end of file diff --git a/SHADE_Engine/src/Graphics/RenderGraph/SHRenderToSwapchainImageSystem.h b/SHADE_Engine/src/Graphics/RenderGraph/SHRenderToSwapchainImageSystem.h new file mode 100644 index 00000000..808fd9a0 --- /dev/null +++ b/SHADE_Engine/src/Graphics/RenderGraph/SHRenderToSwapchainImageSystem.h @@ -0,0 +1,43 @@ +#pragma once + +#include "Resource/SHHandle.h" +#include + +namespace SHADE +{ + class SHVkPipeline; + class SHVkPipelineLayout; + class SHVkShaderModule; + class SHRenderGraphNode; + class SHSubpass; + class SHVkLogicalDevice; + class SHSubpass; + + + class SHRenderToSwapchainImageSystem + { + private: + //! Render Graph node to get the renderpass from to initialize the pipeline + Handle renderGraphNode; + + //! Subpass to initialize the pipeline with + Handle subpass; + + //! Shader module required to render the quad on screen + std::pair, Handle> shaderModules; + + //! pipeline required to draw the image + Handle pipeline; + + //! Pipeline layout of the pipeline + Handle pipelineLayout; + + public: + SHRenderToSwapchainImageSystem (Handle node, Handle subpass, std::pair, Handle> shaders) noexcept; + + void ConstructPipelines (Handle logicalDevice) noexcept; + + Handle GetPipeline (void) const noexcept; + + }; +} diff --git a/SHADE_Engine/src/Graphics/RenderGraph/SHSubpass.cpp b/SHADE_Engine/src/Graphics/RenderGraph/SHSubpass.cpp index 2ed84d92..c1d53632 100644 --- a/SHADE_Engine/src/Graphics/RenderGraph/SHSubpass.cpp +++ b/SHADE_Engine/src/Graphics/RenderGraph/SHSubpass.cpp @@ -40,7 +40,7 @@ namespace SHADE , inputReferences{} , name { name } , graphStorage{ renderGraphStorage } - , inputImageDescriptors {SHGraphicsConstants::NUM_FRAME_BUFFERS} + , inputImageDescriptorSets{} { } @@ -67,7 +67,7 @@ namespace SHADE , exteriorDrawCalls{ std::move(rhs.exteriorDrawCalls) } , graphStorage{ rhs.graphStorage } , inputNames{ std::move(rhs.inputNames) } - , inputImageDescriptors{ std::move(rhs.inputImageDescriptors) } + , inputImageDescriptorSets{ std::move(rhs.inputImageDescriptorSets) } , inputDescriptorLayout{ rhs.inputDescriptorLayout } , inputSamplers{ rhs.inputSamplers } , name { rhs.name } @@ -97,12 +97,12 @@ namespace SHADE colorReferences = std::move(rhs.colorReferences); depthReferences = std::move(rhs.depthReferences); inputReferences = std::move(rhs.inputReferences); - resourceAttachmentMapping = rhs.resourceAttachmentMapping; + resourceAttachmentMapping = std::move(rhs.resourceAttachmentMapping); descriptorSetLayout = rhs.descriptorSetLayout; exteriorDrawCalls = std::move(rhs.exteriorDrawCalls); graphStorage = rhs.graphStorage; inputNames = std::move(rhs.inputNames); - inputImageDescriptors = std::move(rhs.inputImageDescriptors); + inputImageDescriptorSets = std::move(rhs.inputImageDescriptorSets); inputDescriptorLayout = rhs.inputDescriptorLayout; inputSamplers = rhs.inputSamplers; name = std::move(rhs.name); @@ -148,18 +148,18 @@ namespace SHADE */ /***************************************************************************/ - void SHSubpass::AddDepthOutput(std::string resourceToReference, SH_ATT_DESC_TYPE_FLAGS attachmentDescriptionType) noexcept + void SHSubpass::AddDepthOutput(std::string resourceToReference, SH_RENDER_GRAPH_RESOURCE_FLAGS attachmentDescriptionType) noexcept { vk::ImageLayout imageLayout; switch (attachmentDescriptionType) { - case SH_ATT_DESC_TYPE_FLAGS::DEPTH: + case SH_RENDER_GRAPH_RESOURCE_FLAGS::DEPTH: imageLayout = vk::ImageLayout::eDepthAttachmentOptimal; break; - case SH_ATT_DESC_TYPE_FLAGS::STENCIL: + case SH_RENDER_GRAPH_RESOURCE_FLAGS::STENCIL: imageLayout = vk::ImageLayout::eStencilAttachmentOptimal; break; - case SH_ATT_DESC_TYPE_FLAGS::DEPTH_STENCIL: + case SH_RENDER_GRAPH_RESOURCE_FLAGS::DEPTH_STENCIL: imageLayout = vk::ImageLayout::eDepthStencilAttachmentOptimal; break; default: @@ -202,6 +202,8 @@ namespace SHADE void SHSubpass::Execute(Handle& commandBuffer, Handle descPool, uint32_t frameIndex) noexcept { commandBuffer->BeginLabeledSegment(name); + + // Ensure correct transforms are provided superBatch->UpdateBuffers(frameIndex, descPool); @@ -211,7 +213,7 @@ namespace SHADE // Draw all the exterior draw calls for (auto& drawCall : exteriorDrawCalls) { - drawCall(commandBuffer); + drawCall(commandBuffer, frameIndex); } commandBuffer->EndLabeledSegment(); } @@ -221,7 +223,15 @@ namespace SHADE UpdateWriteDescriptors(); } - void SHSubpass::AddExteriorDrawCalls(std::function&)> const& newDrawCall) noexcept + void SHSubpass::BindDescriptorInputDescriptorSets(Handle cmdBuffer, uint32_t frameIndex) const noexcept + { + if (!inputImageDescriptorSets.empty()) + { + cmdBuffer->BindDescriptorSet(inputImageDescriptorSets[frameIndex], SH_PIPELINE_TYPE::GRAPHICS, SHGraphicsConstants::DescriptorSetIndex::RENDERGRAPH_RESOURCE, { }); + } + } + + void SHSubpass::AddExteriorDrawCalls(std::function&, uint32_t)> const& newDrawCall) noexcept { exteriorDrawCalls.push_back(newDrawCall); } @@ -237,6 +247,8 @@ namespace SHADE if (inputNames.empty()) return; + inputImageDescriptorSets.resize(SHGraphicsConstants::NUM_FRAME_BUFFERS); + std::vector bindings{}; for (auto& input : inputReferences) @@ -280,8 +292,8 @@ namespace SHADE } } - //// maybe do this in handle resize? - //UpdateWriteDescriptors(); + // maybe do this in handle resize? + UpdateWriteDescriptors(); } void SHSubpass::UpdateWriteDescriptors(void) noexcept @@ -296,7 +308,7 @@ namespace SHADE // For every frame's descriptor set - for (auto& group : inputImageDescriptors) + for (auto& group : inputImageDescriptorSets) { if (group) group.Free(); @@ -315,7 +327,7 @@ namespace SHADE auto resource = graphStorage->graphResources->at(inputNames[binding.BindPoint]); // If resource is swapchain image, get the correct image, if not just get 0. - uint32_t viewIndex = (resource->resourceTypeFlags & static_cast(SH_ATT_DESC_TYPE_FLAGS::COLOR_PRESENT)) ? i : 0; + uint32_t viewIndex = (resource->resourceTypeFlags & static_cast(SH_RENDER_GRAPH_RESOURCE_FLAGS::COLOR_PRESENT)) ? i : 0; // layout is GENERAL if image is meant to be used as storage image, if not use SHADER_READ_ONLY_OPTINAL vk::ImageLayout descriptorLayout = (binding.Type == vk::DescriptorType::eStorageImage) ? vk::ImageLayout::eGeneral : vk::ImageLayout::eShaderReadOnlyOptimal; diff --git a/SHADE_Engine/src/Graphics/RenderGraph/SHSubpass.h b/SHADE_Engine/src/Graphics/RenderGraph/SHSubpass.h index c82ebdd0..69b8fd56 100644 --- a/SHADE_Engine/src/Graphics/RenderGraph/SHSubpass.h +++ b/SHADE_Engine/src/Graphics/RenderGraph/SHSubpass.h @@ -55,8 +55,11 @@ namespace SHADE //! For getting attachment reference indices using handles std::unordered_map const* resourceAttachmentMapping; - //! Descriptor set group to hold the images for input - std::vector> inputImageDescriptors; + //! Descriptor set group to hold the images for input. We have 3 here just in case + //! one of the images is a swapchain image. Practically speaking its not likely not + //! swapchain images will end up being images used in descriptor sets, but this is + //! to have the support for it. The cost is not much. + std::vector> inputImageDescriptorSets; //! Descriptor set layout for allocating descriptor set for inputs Handle inputDescriptorLayout; @@ -76,7 +79,7 @@ namespace SHADE //! after we draw everything from the batch. Because of this, these draw calls //! are always the last things drawn, so DO NOT USE THIS FUNCTIONALITY FOR ANYTHING //! COMPLEX. - std::vector&)>> exteriorDrawCalls; + std::vector&, uint32_t)>> exteriorDrawCalls; /// For identifying subpasses std::string name; @@ -95,15 +98,16 @@ namespace SHADE // Preparation functions void AddColorOutput(std::string resourceToReference) noexcept; void AddGeneralColorOutput(std::string resourceToReference) noexcept; - void AddDepthOutput(std::string resourceToReference, SH_ATT_DESC_TYPE_FLAGS attachmentDescriptionType = SH_ATT_DESC_TYPE_FLAGS::DEPTH_STENCIL) noexcept; + void AddDepthOutput(std::string resourceToReference, SH_RENDER_GRAPH_RESOURCE_FLAGS attachmentDescriptionType = SH_RENDER_GRAPH_RESOURCE_FLAGS::DEPTH_STENCIL) noexcept; void AddGeneralDepthOutput(std::string resourceToReference) noexcept; void AddInput(std::string resourceToReference) noexcept; void AddGeneralInput (std::string resourceToReference) noexcept; - void AddExteriorDrawCalls(std::function&)> const& newDrawCall) noexcept; + void AddExteriorDrawCalls(std::function&, uint32_t)> const& newDrawCall) noexcept; // Runtime functions void Execute(Handle& commandBuffer, Handle descPool, uint32_t frameIndex) noexcept; void HandleResize (void) noexcept; + void BindDescriptorInputDescriptorSets (Handle cmdBuffer, uint32_t frameIndex) const noexcept; void Init(SHResourceHub& resourceManager) noexcept; diff --git a/SHADE_Engine/src/Graphics/SHVkUtil.cpp b/SHADE_Engine/src/Graphics/SHVkUtil.cpp index a9ac543f..040433cb 100644 --- a/SHADE_Engine/src/Graphics/SHVkUtil.cpp +++ b/SHADE_Engine/src/Graphics/SHVkUtil.cpp @@ -86,8 +86,16 @@ namespace SHADE { if (bufferHandle) { - // Resize - bufferHandle->ResizeReplace(size, src, size); + // Resize if we need to resize + if (bufferHandle->GetSizeStored() < size) + { + bufferHandle->ResizeReplace(size, src, size); + } + // Otherwise just copy the data over + else + { + bufferHandle->MapWriteUnmap(src, size, 0, 0); + } } else { @@ -113,8 +121,16 @@ namespace SHADE { if (bufferHandle) { - // Resize - bufferHandle->ResizeReplace(size, src, size); // TODO: Set to host visible method? + // Resize if we need to resize + if (bufferHandle->GetSizeStored() < size) + { + bufferHandle->ResizeReplace(size, src, size); + } + // Otherwise just copy the data over + else + { + bufferHandle->WriteToMemory(src, size, 0, 0); + } } else { diff --git a/SHADE_Engine/src/Graphics/Shaders/BlockInterface/SHShaderBlockInterface.cpp b/SHADE_Engine/src/Graphics/Shaders/BlockInterface/SHShaderBlockInterface.cpp index 67c83266..dfb91193 100644 --- a/SHADE_Engine/src/Graphics/Shaders/BlockInterface/SHShaderBlockInterface.cpp +++ b/SHADE_Engine/src/Graphics/Shaders/BlockInterface/SHShaderBlockInterface.cpp @@ -1,6 +1,6 @@ #include "SHPch.h" #include "SHShaderBlockInterface.h" -#include "Tools/SHLogger.h" +#include "Tools/Logger/SHLogger.h" namespace SHADE { diff --git a/SHADE_Engine/src/Graphics/Shaders/SHShaderReflected.cpp b/SHADE_Engine/src/Graphics/Shaders/SHShaderReflected.cpp index 96fa77ab..96de87bb 100644 --- a/SHADE_Engine/src/Graphics/Shaders/SHShaderReflected.cpp +++ b/SHADE_Engine/src/Graphics/Shaders/SHShaderReflected.cpp @@ -1,6 +1,6 @@ #include "SHPch.h" #include "SHShaderReflected.h" -#include "Tools/SHLogger.h" +#include "Tools/Logger/SHLogger.h" #include "Graphics/Instance/SHVkInstance.h" diff --git a/SHADE_Engine/src/Graphics/Shaders/SHVkShaderModule.cpp b/SHADE_Engine/src/Graphics/Shaders/SHVkShaderModule.cpp index c1fac76c..fa6b3182 100644 --- a/SHADE_Engine/src/Graphics/Shaders/SHVkShaderModule.cpp +++ b/SHADE_Engine/src/Graphics/Shaders/SHVkShaderModule.cpp @@ -2,7 +2,7 @@ #include "SHVkShaderModule.h" #include "Graphics/Devices/SHVkLogicalDevice.h" #include "Graphics/Debugging/SHVulkanDebugUtil.h" -#include "Tools/SHLogger.h" +#include "Tools/Logger/SHLogger.h" namespace SHADE { diff --git a/SHADE_Engine/src/Graphics/Swapchain/SHVkSwapchain.cpp b/SHADE_Engine/src/Graphics/Swapchain/SHVkSwapchain.cpp index f46d5d17..40f917a0 100644 --- a/SHADE_Engine/src/Graphics/Swapchain/SHVkSwapchain.cpp +++ b/SHADE_Engine/src/Graphics/Swapchain/SHVkSwapchain.cpp @@ -3,7 +3,7 @@ #include "Graphics/Devices/SHVkPhysicalDevice.h" #include "Graphics/Devices/SHVkLogicalDevice.h" #include "Graphics/Windowing/Surface/SHVkSurface.h" -#include "Tools/SHLogger.h" +#include "Tools/Logger/SHLogger.h" #include "Graphics/Images/SHVkImage.h" #include "Graphics/Instance/SHVkInstance.h" diff --git a/SHADE_Engine/src/Graphics/Windowing/Surface/SHVkSurface.cpp b/SHADE_Engine/src/Graphics/Windowing/Surface/SHVkSurface.cpp index f9cb16c6..7d55ab72 100644 --- a/SHADE_Engine/src/Graphics/Windowing/Surface/SHVkSurface.cpp +++ b/SHADE_Engine/src/Graphics/Windowing/Surface/SHVkSurface.cpp @@ -4,7 +4,7 @@ #include "Graphics/Devices/SHVkLogicalDevice.h" #include "Graphics/Instance/SHVkInstance.h" #include "Graphics/Debugging/SHVulkanDebugUtil.h" -#include "Tools/SHLogger.h" +#include "Tools/Logger/SHLogger.h" namespace SHADE { diff --git a/SHADE_Engine/src/Math/Geometry/SHBoundingBox.cpp b/SHADE_Engine/src/Math/Geometry/SHBox.cpp similarity index 71% rename from SHADE_Engine/src/Math/Geometry/SHBoundingBox.cpp rename to SHADE_Engine/src/Math/Geometry/SHBox.cpp index 5bbf5e15..a52cf0d2 100644 --- a/SHADE_Engine/src/Math/Geometry/SHBoundingBox.cpp +++ b/SHADE_Engine/src/Math/Geometry/SHBox.cpp @@ -1,5 +1,5 @@ /**************************************************************************************** - * \file SHBoundingBox.cpp + * \file SHBox.cpp * \author Diren D Bharwani, diren.dbharwani, 390002520 * \brief Implementation for a 3-Dimensional Axis Aligned Bounding Box * @@ -11,7 +11,7 @@ #include // Primary Header -#include "SHBoundingBox.h" +#include "SHBox.h" // Project Headers #include "Math/SHMathHelpers.h" #include "Math/SHRay.h" @@ -24,13 +24,13 @@ namespace SHADE /* Constructors & Destructor Definitions */ /*-----------------------------------------------------------------------------------*/ - SHBoundingBox::SHBoundingBox() noexcept + SHBox::SHBox() noexcept : RelativeExtents { SHVec3::One } { type = Type::BOX; } - SHBoundingBox::SHBoundingBox(const SHVec3& c, const SHVec3& hE) noexcept + SHBox::SHBox(const SHVec3& c, const SHVec3& hE) noexcept : RelativeExtents { SHVec3::One } { type = Type::BOX; @@ -40,7 +40,7 @@ namespace SHADE } - SHBoundingBox::SHBoundingBox(const SHBoundingBox& rhs) noexcept + SHBox::SHBox(const SHBox& rhs) noexcept { if (this == &rhs) return; @@ -52,7 +52,7 @@ namespace SHADE RelativeExtents = rhs.RelativeExtents; } - SHBoundingBox::SHBoundingBox(SHBoundingBox&& rhs) noexcept + SHBox::SHBox(SHBox&& rhs) noexcept { type = Type::BOX; @@ -65,7 +65,7 @@ namespace SHADE /* Operator Overload Definitions */ /*-----------------------------------------------------------------------------------*/ - SHBoundingBox& SHBoundingBox::operator=(const SHBoundingBox& rhs) noexcept + SHBox& SHBox::operator=(const SHBox& rhs) noexcept { if (rhs.type != Type::BOX) { @@ -81,7 +81,7 @@ namespace SHADE return *this; } - SHBoundingBox& SHBoundingBox::operator=(SHBoundingBox&& rhs) noexcept + SHBox& SHBox::operator=(SHBox&& rhs) noexcept { if (rhs.type != Type::BOX) { @@ -101,27 +101,27 @@ namespace SHADE /* Getter Function Definitions */ /*-----------------------------------------------------------------------------------*/ - SHVec3 SHBoundingBox::GetCenter() const noexcept + SHVec3 SHBox::GetCenter() const noexcept { return Center; } - SHVec3 SHBoundingBox::GetWorldExtents() const noexcept + SHVec3 SHBox::GetWorldExtents() const noexcept { return Extents; } - const SHVec3& SHBoundingBox::GetRelativeExtents() const noexcept + const SHVec3& SHBox::GetRelativeExtents() const noexcept { return RelativeExtents; } - SHVec3 SHBoundingBox::GetMin() const noexcept + SHVec3 SHBox::GetMin() const noexcept { return SHVec3{ Center.x - Extents.x, Center.y - Extents.y, Center.z - Extents.z }; } - SHVec3 SHBoundingBox::GetMax() const noexcept + SHVec3 SHBox::GetMax() const noexcept { return SHVec3{ Center.x + Extents.x, Center.y + Extents.y, Center.z + Extents.z }; } @@ -130,22 +130,22 @@ namespace SHADE /* Setter Function Definitions */ /*-----------------------------------------------------------------------------------*/ - void SHBoundingBox::SetCenter(const SHVec3& newCenter) noexcept + void SHBox::SetCenter(const SHVec3& newCenter) noexcept { Center = newCenter; } - void SHBoundingBox::SetWorldExtents(const SHVec3& newWorldExtents) noexcept + void SHBox::SetWorldExtents(const SHVec3& newWorldExtents) noexcept { Extents = newWorldExtents; } - void SHBoundingBox::SetRelativeExtents(const SHVec3& newRelativeExtents) noexcept + void SHBox::SetRelativeExtents(const SHVec3& newRelativeExtents) noexcept { RelativeExtents = newRelativeExtents; } - void SHBoundingBox::SetMin(const SHVec3& min) noexcept + void SHBox::SetMin(const SHVec3& min) noexcept { const SHVec3 MAX = GetMax(); @@ -153,7 +153,7 @@ namespace SHADE Extents = SHVec3::Abs((MAX - min) * 0.5f); } - void SHBoundingBox::SetMax(const SHVec3& max) noexcept + void SHBox::SetMax(const SHVec3& max) noexcept { const SHVec3 MIN = GetMin(); @@ -161,13 +161,13 @@ namespace SHADE Extents = SHVec3::Abs((max - MIN) * 0.5f); } - void SHBoundingBox::SetMinMax(const SHVec3& min, const SHVec3& max) noexcept + void SHBox::SetMinMax(const SHVec3& min, const SHVec3& max) noexcept { Center = SHVec3::Lerp(min, max, 0.5f); Extents = SHVec3::Abs((max - min) * 0.5f); } - std::vector SHBoundingBox::GetVertices() const noexcept + std::vector SHBox::GetVertices() const noexcept { std::vector vertices{ 8 }; GetCorners(vertices.data()); @@ -178,27 +178,27 @@ namespace SHADE /* Public Function Member Definitions */ /*-----------------------------------------------------------------------------------*/ - bool SHBoundingBox::TestPoint(const SHVec3& point) noexcept + bool SHBox::TestPoint(const SHVec3& point) noexcept { return BoundingBox::Contains(point); } - bool SHBoundingBox::Raycast(const SHRay& ray, float& distance) noexcept + bool SHBox::Raycast(const SHRay& ray, float& distance) noexcept { return BoundingBox::Intersects(ray.position, ray.direction, distance); } - bool SHBoundingBox::Contains(const SHBoundingBox& rhs) const noexcept + bool SHBox::Contains(const SHBox& rhs) const noexcept { return BoundingBox::Contains(rhs); } - float SHBoundingBox::Volume() const noexcept + float SHBox::Volume() const noexcept { return 8.0f * (Extents.x * Extents.y * Extents.z); } - float SHBoundingBox::SurfaceArea() const noexcept + float SHBox::SurfaceArea() const noexcept { return 8.0f * ((Extents.x * Extents.y) + (Extents.x * Extents.z) @@ -209,21 +209,21 @@ namespace SHADE /* Static Function Member Definitions */ /*-----------------------------------------------------------------------------------*/ - SHBoundingBox SHBoundingBox::Combine(const SHBoundingBox& lhs, const SHBoundingBox& rhs) noexcept + SHBox SHBox::Combine(const SHBox& lhs, const SHBox& rhs) noexcept { - SHBoundingBox result; + SHBox result; CreateMerged(result, lhs, rhs); return result; } - bool SHBoundingBox::Intersect(const SHBoundingBox& lhs, const SHBoundingBox& rhs) noexcept + bool SHBox::Intersect(const SHBox& lhs, const SHBox& rhs) noexcept { return lhs.Intersects(rhs); } - SHBoundingBox SHBoundingBox::BuildFromBoxes(const SHBoundingBox* boxes, size_t numBoxes) noexcept + SHBox SHBox::BuildFromBoxes(const SHBox* boxes, size_t numBoxes) noexcept { - SHBoundingBox result; + SHBox result; for (size_t i = 1; i < numBoxes; ++i) CreateMerged(result, boxes[i - 1], boxes[i]); @@ -231,9 +231,9 @@ namespace SHADE return result; } - SHBoundingBox SHBoundingBox::BuildFromVertices(const SHVec3* vertices, size_t numVertices, size_t stride) noexcept + SHBox SHBox::BuildFromVertices(const SHVec3* vertices, size_t numVertices, size_t stride) noexcept { - SHBoundingBox result; + SHBox result; CreateFromPoints(result, numVertices, vertices, stride); return result; } diff --git a/SHADE_Engine/src/Math/Geometry/SHBoundingBox.h b/SHADE_Engine/src/Math/Geometry/SHBox.h similarity index 75% rename from SHADE_Engine/src/Math/Geometry/SHBoundingBox.h rename to SHADE_Engine/src/Math/Geometry/SHBox.h index e2757c17..19c80bd2 100644 --- a/SHADE_Engine/src/Math/Geometry/SHBoundingBox.h +++ b/SHADE_Engine/src/Math/Geometry/SHBox.h @@ -1,5 +1,5 @@ /**************************************************************************************** - * \file SHBoundingBox.h + * \file SHBox.h * \author Diren D Bharwani, diren.dbharwani, 390002520 * \brief Interface for a 3-Dimensional Axis Aligned Bounding Box * @@ -22,8 +22,8 @@ namespace SHADE /* Type Definitions */ /*-----------------------------------------------------------------------------------*/ - class SH_API SHBoundingBox : public SHShape, - private DirectX::BoundingBox + class SH_API SHBox : public SHShape, + private DirectX::BoundingBox { public: /*---------------------------------------------------------------------------------*/ @@ -36,19 +36,19 @@ namespace SHADE /* Constructors & Destructor */ /*---------------------------------------------------------------------------------*/ - ~SHBoundingBox () override = default; + ~SHBox () override = default; - SHBoundingBox () noexcept; - SHBoundingBox (const SHVec3& center, const SHVec3& halfExtents) noexcept; - SHBoundingBox (const SHBoundingBox& rhs) noexcept; - SHBoundingBox (SHBoundingBox&& rhs) noexcept; + SHBox () noexcept; + SHBox (const SHVec3& center, const SHVec3& halfExtents) noexcept; + SHBox (const SHBox& rhs) noexcept; + SHBox (SHBox&& rhs) noexcept; /*---------------------------------------------------------------------------------*/ /* Operator Overloads */ /*---------------------------------------------------------------------------------*/ - SHBoundingBox& operator= (const SHBoundingBox& rhs) noexcept; - SHBoundingBox& operator= (SHBoundingBox&& rhs) noexcept; + SHBox& operator= (const SHBox& rhs) noexcept; + SHBox& operator= (SHBox&& rhs) noexcept; /*---------------------------------------------------------------------------------*/ /* Getter Functions */ @@ -79,18 +79,18 @@ namespace SHADE [[nodiscard]] bool TestPoint (const SHVec3& point) noexcept override; [[nodiscard]] bool Raycast (const SHRay& ray, float& distance) noexcept override; - [[nodiscard]] bool Contains (const SHBoundingBox& rhs) const noexcept; - [[nodiscard]] float Volume () const noexcept; - [[nodiscard]] float SurfaceArea () const noexcept; + [[nodiscard]] bool Contains (const SHBox& rhs) const noexcept; + [[nodiscard]] float Volume () const noexcept; + [[nodiscard]] float SurfaceArea () const noexcept; /*---------------------------------------------------------------------------------*/ /* Static Function Members */ /*---------------------------------------------------------------------------------*/ - [[nodiscard]] static SHBoundingBox Combine (const SHBoundingBox& lhs, const SHBoundingBox& rhs) noexcept; - [[nodiscard]] static bool Intersect (const SHBoundingBox& lhs, const SHBoundingBox& rhs) noexcept; - [[nodiscard]] static SHBoundingBox BuildFromBoxes (const SHBoundingBox* boxes, size_t numBoxes) noexcept; - [[nodiscard]] static SHBoundingBox BuildFromVertices (const SHVec3* vertices, size_t numVertices, size_t stride = 0) noexcept; + [[nodiscard]] static SHBox Combine (const SHBox& lhs, const SHBox& rhs) noexcept; + [[nodiscard]] static bool Intersect (const SHBox& lhs, const SHBox& rhs) noexcept; + [[nodiscard]] static SHBox BuildFromBoxes (const SHBox* boxes, size_t numBoxes) noexcept; + [[nodiscard]] static SHBox BuildFromVertices (const SHVec3* vertices, size_t numVertices, size_t stride = 0) noexcept; private: /*---------------------------------------------------------------------------------*/ diff --git a/SHADE_Engine/src/Math/Geometry/SHBoundingSphere.cpp b/SHADE_Engine/src/Math/Geometry/SHSphere.cpp similarity index 70% rename from SHADE_Engine/src/Math/Geometry/SHBoundingSphere.cpp rename to SHADE_Engine/src/Math/Geometry/SHSphere.cpp index f843a6bb..d310e30e 100644 --- a/SHADE_Engine/src/Math/Geometry/SHBoundingSphere.cpp +++ b/SHADE_Engine/src/Math/Geometry/SHSphere.cpp @@ -11,7 +11,7 @@ #include // Primary Header -#include "SHBoundingSphere.h" +#include "SHSphere.h" // Project Headers #include "Math/SHMathHelpers.h" #include "Math/SHRay.h" @@ -24,13 +24,13 @@ namespace SHADE /* Constructors & Destructor Definitions */ /*-----------------------------------------------------------------------------------*/ - SHBoundingSphere::SHBoundingSphere() noexcept + SHSphere::SHSphere() noexcept : RelativeRadius { 1.0f } { type = Type::SPHERE; } - SHBoundingSphere::SHBoundingSphere(const SHVec3& center, float radius) noexcept + SHSphere::SHSphere(const SHVec3& center, float radius) noexcept : RelativeRadius { 1.0f } { type = Type::SPHERE; @@ -39,7 +39,7 @@ namespace SHADE Radius = radius; } - SHBoundingSphere::SHBoundingSphere(const SHBoundingSphere& rhs) noexcept + SHSphere::SHSphere(const SHSphere& rhs) noexcept { if (this == &rhs) return; @@ -51,7 +51,7 @@ namespace SHADE RelativeRadius = rhs.RelativeRadius; } - SHBoundingSphere::SHBoundingSphere(SHBoundingSphere&& rhs) noexcept + SHSphere::SHSphere(SHSphere&& rhs) noexcept { type = Type::SPHERE; @@ -64,7 +64,7 @@ namespace SHADE /* Operator Overload Definitions */ /*-----------------------------------------------------------------------------------*/ - SHBoundingSphere& SHBoundingSphere::operator=(const SHBoundingSphere& rhs) noexcept + SHSphere& SHSphere::operator=(const SHSphere& rhs) noexcept { if (rhs.type != Type::SPHERE) { @@ -80,7 +80,7 @@ namespace SHADE return *this; } - SHBoundingSphere& SHBoundingSphere::operator=(SHBoundingSphere&& rhs) noexcept + SHSphere& SHSphere::operator=(SHSphere&& rhs) noexcept { if (rhs.type != Type::SPHERE) { @@ -100,17 +100,17 @@ namespace SHADE /* Getter Function Definitions */ /*-----------------------------------------------------------------------------------*/ - SHVec3 SHBoundingSphere::GetCenter() const noexcept + SHVec3 SHSphere::GetCenter() const noexcept { return Center; } - float SHBoundingSphere::GetWorldRadius() const noexcept + float SHSphere::GetWorldRadius() const noexcept { return Radius; } - float SHBoundingSphere::GetRelativeRadius() const noexcept + float SHSphere::GetRelativeRadius() const noexcept { return RelativeRadius; } @@ -119,17 +119,17 @@ namespace SHADE /* Setter Function Definitions */ /*-----------------------------------------------------------------------------------*/ - void SHBoundingSphere::SetCenter(const SHVec3& center) noexcept + void SHSphere::SetCenter(const SHVec3& center) noexcept { Center = center; } - void SHBoundingSphere::SetWorldRadius(float newWorldRadius) noexcept + void SHSphere::SetWorldRadius(float newWorldRadius) noexcept { Radius = newWorldRadius; } - void SHBoundingSphere::SetRelativeRadius(float newRelativeRadius) noexcept + void SHSphere::SetRelativeRadius(float newRelativeRadius) noexcept { RelativeRadius = newRelativeRadius; } @@ -138,27 +138,27 @@ namespace SHADE /* Public Function Member Definitions */ /*-----------------------------------------------------------------------------------*/ - bool SHBoundingSphere::TestPoint(const SHVec3& point) noexcept + bool SHSphere::TestPoint(const SHVec3& point) noexcept { return BoundingSphere::Contains(point); } - bool SHBoundingSphere::Raycast(const SHRay& ray, float& distance) noexcept + bool SHSphere::Raycast(const SHRay& ray, float& distance) noexcept { return Intersects(ray.position, ray.direction, distance); } - bool SHBoundingSphere::Contains(const SHBoundingSphere& rhs) const noexcept + bool SHSphere::Contains(const SHSphere& rhs) const noexcept { return BoundingSphere::Contains(rhs); } - float SHBoundingSphere::Volume() const noexcept + float SHSphere::Volume() const noexcept { return (4.0f / 3.0f) * SHMath::PI * (Radius * Radius * Radius); } - float SHBoundingSphere::SurfaceArea() const noexcept + float SHSphere::SurfaceArea() const noexcept { return 4.0f * SHMath::PI * (Radius * Radius); } @@ -167,21 +167,21 @@ namespace SHADE /* Static Function Member Definitions */ /*-----------------------------------------------------------------------------------*/ - SHBoundingSphere SHBoundingSphere::Combine(const SHBoundingSphere& lhs, const SHBoundingSphere& rhs) noexcept + SHSphere SHSphere::Combine(const SHSphere& lhs, const SHSphere& rhs) noexcept { - SHBoundingSphere result; + SHSphere result; CreateMerged(result, lhs, rhs); return result; } - bool SHBoundingSphere::Intersect(const SHBoundingSphere& lhs, const SHBoundingSphere& rhs) noexcept + bool SHSphere::Intersect(const SHSphere& lhs, const SHSphere& rhs) noexcept { return lhs.Intersects(rhs); } - SHBoundingSphere SHBoundingSphere::BuildFromSpheres(const SHBoundingSphere* spheres, size_t numSpheres) noexcept + SHSphere SHSphere::BuildFromSpheres(const SHSphere* spheres, size_t numSpheres) noexcept { - SHBoundingSphere result; + SHSphere result; for (size_t i = 1; i < numSpheres; ++i) CreateMerged(result, spheres[i - 1], spheres[i]); @@ -189,9 +189,9 @@ namespace SHADE return result; } - SHBoundingSphere SHBoundingSphere::BuildFromVertices(const SHVec3* vertices, size_t numVertices, size_t stride) noexcept + SHSphere SHSphere::BuildFromVertices(const SHVec3* vertices, size_t numVertices, size_t stride) noexcept { - SHBoundingSphere result; + SHSphere result; CreateFromPoints(result, numVertices, vertices, stride); return result; } diff --git a/SHADE_Engine/src/Math/Geometry/SHBoundingSphere.h b/SHADE_Engine/src/Math/Geometry/SHSphere.h similarity index 76% rename from SHADE_Engine/src/Math/Geometry/SHBoundingSphere.h rename to SHADE_Engine/src/Math/Geometry/SHSphere.h index d94722d6..c13076aa 100644 --- a/SHADE_Engine/src/Math/Geometry/SHBoundingSphere.h +++ b/SHADE_Engine/src/Math/Geometry/SHSphere.h @@ -22,27 +22,27 @@ namespace SHADE /* Type Definitions */ /*-----------------------------------------------------------------------------------*/ - class SH_API SHBoundingSphere : public SHShape, - private DirectX::BoundingSphere + class SH_API SHSphere : public SHShape, + private DirectX::BoundingSphere { public: /*---------------------------------------------------------------------------------*/ /* Constructors & Destructor */ /*---------------------------------------------------------------------------------*/ - SHBoundingSphere () noexcept; - SHBoundingSphere (const SHVec3& center, float radius) noexcept; - SHBoundingSphere (const SHBoundingSphere& rhs) noexcept; - SHBoundingSphere (SHBoundingSphere&& rhs) noexcept; + SHSphere () noexcept; + SHSphere (const SHVec3& center, float radius) noexcept; + SHSphere (const SHSphere& rhs) noexcept; + SHSphere (SHSphere&& rhs) noexcept; - ~SHBoundingSphere () override = default; + ~SHSphere () override = default; /*---------------------------------------------------------------------------------*/ /* Operator Overloads */ /*---------------------------------------------------------------------------------*/ - SHBoundingSphere& operator= (const SHBoundingSphere& rhs) noexcept; - SHBoundingSphere& operator= (SHBoundingSphere&& rhs) noexcept; + SHSphere& operator= (const SHSphere& rhs) noexcept; + SHSphere& operator= (SHSphere&& rhs) noexcept; /*---------------------------------------------------------------------------------*/ /* Getter Functions */ @@ -67,7 +67,7 @@ namespace SHADE [[nodiscard]] bool TestPoint (const SHVec3& point) noexcept override; [[nodiscard]] bool Raycast (const SHRay& ray, float& distance) noexcept override; - [[nodiscard]] bool Contains (const SHBoundingSphere& rhs) const noexcept; + [[nodiscard]] bool Contains (const SHSphere& rhs) const noexcept; [[nodiscard]] float Volume () const noexcept; [[nodiscard]] float SurfaceArea () const noexcept; @@ -76,10 +76,10 @@ namespace SHADE /* Static Function Members */ /*---------------------------------------------------------------------------------*/ - [[nodiscard]] static SHBoundingSphere Combine (const SHBoundingSphere& lhs, const SHBoundingSphere& rhs) noexcept; - [[nodiscard]] static bool Intersect (const SHBoundingSphere& lhs, const SHBoundingSphere& rhs) noexcept; - [[nodiscard]] static SHBoundingSphere BuildFromSpheres (const SHBoundingSphere* spheres, size_t numSpheres) noexcept; - [[nodiscard]] static SHBoundingSphere BuildFromVertices (const SHVec3* vertices, size_t numVertices, size_t stride = 0) noexcept; + [[nodiscard]] static SHSphere Combine (const SHSphere& lhs, const SHSphere& rhs) noexcept; + [[nodiscard]] static bool Intersect (const SHSphere& lhs, const SHSphere& rhs) noexcept; + [[nodiscard]] static SHSphere BuildFromSpheres (const SHSphere* spheres, size_t numSpheres) noexcept; + [[nodiscard]] static SHSphere BuildFromVertices (const SHVec3* vertices, size_t numVertices, size_t stride = 0) noexcept; private: /*---------------------------------------------------------------------------------*/ diff --git a/SHADE_Engine/src/Math/SHMatrix.cpp b/SHADE_Engine/src/Math/SHMatrix.cpp index 5f082ae5..3d450a88 100644 --- a/SHADE_Engine/src/Math/SHMatrix.cpp +++ b/SHADE_Engine/src/Math/SHMatrix.cpp @@ -483,6 +483,16 @@ namespace SHADE return result; } + SHMatrix SHMatrix::Transform(const SHVec3& pos, const SHVec3& eulerAngles, const SHVec3& scale) noexcept + { + return Scale(scale) * Rotate(eulerAngles) * Translate(pos); + } + + SHMatrix SHMatrix::Transform(const SHVec3& pos, const SHQuaternion& rot, const SHVec3& scale) noexcept + { + return Scale(scale) * Rotate(rot) * Translate(pos); + } + SHMatrix SHMatrix::LookAtRH(const SHVec3& eye, const SHVec3& target, const SHVec3& up) noexcept { SHMatrix result; diff --git a/SHADE_Engine/src/Math/SHMatrix.h b/SHADE_Engine/src/Math/SHMatrix.h index 4d8f1bfe..6af8fdc9 100644 --- a/SHADE_Engine/src/Math/SHMatrix.h +++ b/SHADE_Engine/src/Math/SHMatrix.h @@ -131,34 +131,37 @@ namespace SHADE /* Static Function Members */ /*---------------------------------------------------------------------------------*/ - [[nodiscard]] static SHMatrix Transpose (const SHMatrix& matrix) noexcept; - [[nodiscard]] static SHMatrix Inverse (const SHMatrix& matrix) noexcept; + [[nodiscard]] static SHMatrix Transpose (const SHMatrix& matrix) noexcept; + [[nodiscard]] static SHMatrix Inverse (const SHMatrix& matrix) noexcept; - [[nodiscard]] static SHMatrix Translate (float x, float y, float z) noexcept; - [[nodiscard]] static SHMatrix Translate (const SHVec3& pos) noexcept; + [[nodiscard]] static SHMatrix Translate (float x, float y, float z) noexcept; + [[nodiscard]] static SHMatrix Translate (const SHVec3& pos) noexcept; - [[nodiscard]] static SHMatrix Rotate (const SHVec3& axis, float angleInRad) noexcept; - [[nodiscard]] static SHMatrix Rotate (float yaw, float pitch, float roll) noexcept; - [[nodiscard]] static SHMatrix Rotate (const SHVec3& eulerAngles) noexcept; - [[nodiscard]] static SHMatrix Rotate (const SHQuaternion& q) noexcept; - [[nodiscard]] static SHMatrix RotateX (float angleInRad) noexcept; - [[nodiscard]] static SHMatrix RotateY (float angleInRad) noexcept; - [[nodiscard]] static SHMatrix RotateZ (float angleInRad) noexcept; + [[nodiscard]] static SHMatrix Rotate (const SHVec3& axis, float angleInRad) noexcept; + [[nodiscard]] static SHMatrix Rotate (float yaw, float pitch, float roll) noexcept; + [[nodiscard]] static SHMatrix Rotate (const SHVec3& eulerAngles) noexcept; + [[nodiscard]] static SHMatrix Rotate (const SHQuaternion& q) noexcept; + [[nodiscard]] static SHMatrix RotateX (float angleInRad) noexcept; + [[nodiscard]] static SHMatrix RotateY (float angleInRad) noexcept; + [[nodiscard]] static SHMatrix RotateZ (float angleInRad) noexcept; - [[nodiscard]] static SHMatrix Scale (float uniformScaleFactor) noexcept; - [[nodiscard]] static SHMatrix Scale (float x, float y, float z) noexcept; - [[nodiscard]] static SHMatrix Scale (const SHVec3& scale) noexcept; + [[nodiscard]] static SHMatrix Scale (float uniformScaleFactor) noexcept; + [[nodiscard]] static SHMatrix Scale (float x, float y, float z) noexcept; + [[nodiscard]] static SHMatrix Scale (const SHVec3& scale) noexcept; - [[nodiscard]] static SHMatrix LookAtRH (const SHVec3& eye, const SHVec3& target, const SHVec3& up) noexcept; - [[nodiscard]] static SHMatrix LookAtLH (const SHVec3& eye, const SHVec3& target, const SHVec3& up) noexcept; - [[nodiscard]] static SHMatrix CamToWorldRH (const SHVec3& pos, const SHVec3& forward, const SHVec3& up) noexcept; - [[nodiscard]] static SHMatrix CamToWorldLH (const SHVec3& pos, const SHVec3& forward, const SHVec3& up) noexcept; - [[nodiscard]] static SHMatrix PerspectiveFovRH (float fov, float aspectRatio, float nearPlane, float farPlane) noexcept; - [[nodiscard]] static SHMatrix PerspectiveFovLH (float fov, float aspectRatio, float nearPlane, float farPlane) noexcept; - [[nodiscard]] static SHMatrix PerspectiveRH (float width, float height, float nearPlane, float farPlane) noexcept; - [[nodiscard]] static SHMatrix PerspectiveLH (float width, float height, float nearPlane, float farPlane) noexcept; - [[nodiscard]] static SHMatrix OrthographicRH (float width, float height, float nearPlane, float farPlane) noexcept; - [[nodiscard]] static SHMatrix OrthographicLH (float width, float height, float nearPlane, float farPlane) noexcept; + [[nodiscard]] static SHMatrix Transform (const SHVec3& pos, const SHVec3& eulerAngles, const SHVec3& scale) noexcept; + [[nodiscard]] static SHMatrix Transform (const SHVec3& pos, const SHQuaternion& rot, const SHVec3& scale) noexcept; + + [[nodiscard]] static SHMatrix LookAtRH (const SHVec3& eye, const SHVec3& target, const SHVec3& up) noexcept; + [[nodiscard]] static SHMatrix LookAtLH (const SHVec3& eye, const SHVec3& target, const SHVec3& up) noexcept; + [[nodiscard]] static SHMatrix CamToWorldRH (const SHVec3& pos, const SHVec3& forward, const SHVec3& up) noexcept; + [[nodiscard]] static SHMatrix CamToWorldLH (const SHVec3& pos, const SHVec3& forward, const SHVec3& up) noexcept; + [[nodiscard]] static SHMatrix PerspectiveFovRH (float fov, float aspectRatio, float nearPlane, float farPlane) noexcept; + [[nodiscard]] static SHMatrix PerspectiveFovLH (float fov, float aspectRatio, float nearPlane, float farPlane) noexcept; + [[nodiscard]] static SHMatrix PerspectiveRH (float width, float height, float nearPlane, float farPlane) noexcept; + [[nodiscard]] static SHMatrix PerspectiveLH (float width, float height, float nearPlane, float farPlane) noexcept; + [[nodiscard]] static SHMatrix OrthographicRH (float width, float height, float nearPlane, float farPlane) noexcept; + [[nodiscard]] static SHMatrix OrthographicLH (float width, float height, float nearPlane, float farPlane) noexcept; // TODO(Diren): Billboard, Shadow, Projection & Reflection }; diff --git a/SHADE_Engine/src/Math/SHQuaternion.cpp b/SHADE_Engine/src/Math/SHQuaternion.cpp index 3564916a..8904cb05 100644 --- a/SHADE_Engine/src/Math/SHQuaternion.cpp +++ b/SHADE_Engine/src/Math/SHQuaternion.cpp @@ -16,7 +16,7 @@ #include "Vector/SHVec3.h" #include "SHMatrix.h" #include "SHMathHelpers.h" -#include "Tools/SHLogger.h" +#include "Tools/Logger/SHLogger.h" using namespace DirectX; diff --git a/SHADE_Engine/src/Math/SHRay.cpp b/SHADE_Engine/src/Math/SHRay.cpp index 87f12b81..c4931aba 100644 --- a/SHADE_Engine/src/Math/SHRay.cpp +++ b/SHADE_Engine/src/Math/SHRay.cpp @@ -30,11 +30,17 @@ namespace SHADE , direction { dir } {} + SHRay::SHRay(const reactphysics3d::Ray rp3dRay) noexcept + : position { rp3dRay.point1 } + , direction { SHVec3::Normalise(rp3dRay.point2 - rp3dRay.point1) } + {} + + /*-----------------------------------------------------------------------------------*/ /* Operator Overload Definitions */ /*-----------------------------------------------------------------------------------*/ - bool SHRay::operator==(const SHRay& rhs) noexcept + bool SHRay::operator==(const SHRay& rhs) const noexcept { const XMVECTOR LHS_POS = XMLoadFloat3(&position); const XMVECTOR RHS_POS = XMLoadFloat3(&rhs.position); @@ -45,7 +51,7 @@ namespace SHADE return XMVector3Equal(LHS_POS, RHS_POS) && XMVector3NotEqual(LHS_DIR, RHS_DIR); } - bool SHRay::operator!=(const SHRay& rhs) noexcept + bool SHRay::operator!=(const SHRay& rhs) const noexcept { const XMVECTOR LHS_POS = XMLoadFloat3(&position); const XMVECTOR RHS_POS = XMLoadFloat3(&rhs.position); @@ -56,5 +62,16 @@ namespace SHADE return XMVector3NotEqual(LHS_POS, RHS_POS) || XMVector3NotEqual(LHS_DIR, RHS_DIR); } + SHRay::operator reactphysics3d::Ray() const noexcept + { + // We use 2km. Temp solution. + return reactphysics3d::Ray{ position, position + (direction * MAX_RAYCAST_DIST) }; + } + + SHRaycastResult::operator bool() const noexcept + { + return hit; + } + } // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Math/SHRay.h b/SHADE_Engine/src/Math/SHRay.h index 29d55b16..18efc224 100644 --- a/SHADE_Engine/src/Math/SHRay.h +++ b/SHADE_Engine/src/Math/SHRay.h @@ -1,7 +1,7 @@ /**************************************************************************************** * \file SHRay.h * \author Diren D Bharwani, diren.dbharwani, 390002520 - * \brief Interface for a Ray. + * \brief Interface for a Ray & Raycast Result * * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or * disclosure of this file or its contents without the prior written consent @@ -10,7 +10,7 @@ #pragma once -#include +#include // Project Headers #include "SH_API.h" @@ -29,6 +29,8 @@ namespace SHADE /* Data Members */ /*---------------------------------------------------------------------------------*/ + static constexpr float MAX_RAYCAST_DIST = 2000.0f; // We use 2km as physics typically tends to lose accuracy beyond 2km. + SHVec3 position; SHVec3 direction; @@ -36,19 +38,46 @@ namespace SHADE /* Constructors & Destructor */ /*---------------------------------------------------------------------------------*/ - SHRay() noexcept; - SHRay(const SHVec3& pos, const SHVec3& dir) noexcept; - SHRay(const SHRay& rhs) noexcept = default; - SHRay(SHRay&& rhs) noexcept = default; + SHRay () noexcept; + SHRay (const SHVec3& pos, const SHVec3& dir) noexcept; + SHRay (const reactphysics3d::Ray rp3dRay) noexcept; + + SHRay (const SHRay&) noexcept = default; + SHRay (SHRay&& ) noexcept = default; + ~SHRay() = default; /*---------------------------------------------------------------------------------*/ /* Operator Overloads */ /*---------------------------------------------------------------------------------*/ - SHRay& operator= (const SHRay& rhs) noexcept = default; - SHRay& operator= (SHRay&& rhs) noexcept = default; + SHRay& operator= (const SHRay&) noexcept = default; + SHRay& operator= (SHRay&&) noexcept = default; + + [[nodiscard]] bool operator==(const SHRay& rhs) const noexcept; + [[nodiscard]] bool operator!=(const SHRay& rhs) const noexcept; + + operator reactphysics3d::Ray() const noexcept; + }; + + struct SH_API SHRaycastResult + { + public: + /*---------------------------------------------------------------------------------*/ + /* Data Members */ + /*---------------------------------------------------------------------------------*/ + + bool hit = false; + float distance = std::numeric_limits::infinity(); + float angle = 0.0f; + + SHVec3 position; + SHVec3 normal; + + /*---------------------------------------------------------------------------------*/ + /* Operator Overloads */ + /*---------------------------------------------------------------------------------*/ + + operator bool() const noexcept; - [[nodiscard]] bool operator==(const SHRay& rhs) noexcept; - [[nodiscard]] bool operator!=(const SHRay& rhs) noexcept; }; } // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Math/Vector/SHVec2.cpp b/SHADE_Engine/src/Math/Vector/SHVec2.cpp index 195a8b14..9573be01 100644 --- a/SHADE_Engine/src/Math/Vector/SHVec2.cpp +++ b/SHADE_Engine/src/Math/Vector/SHVec2.cpp @@ -14,7 +14,7 @@ #include "SHVec2.h" // Project Headers #include "Math/SHMatrix.h" -#include "Tools/SHLogger.h" +#include "Tools/Logger/SHLogger.h" using namespace DirectX; diff --git a/SHADE_Engine/src/Math/Vector/SHVec3.cpp b/SHADE_Engine/src/Math/Vector/SHVec3.cpp index cbd8ca32..a696f341 100644 --- a/SHADE_Engine/src/Math/Vector/SHVec3.cpp +++ b/SHADE_Engine/src/Math/Vector/SHVec3.cpp @@ -15,7 +15,7 @@ // Project Headers #include "Math/SHMatrix.h" #include "Math/SHQuaternion.h" -#include "Tools/SHLogger.h" +#include "Tools/Logger/SHLogger.h" using namespace DirectX; diff --git a/SHADE_Engine/src/Math/Vector/SHVec4.cpp b/SHADE_Engine/src/Math/Vector/SHVec4.cpp index 943d540e..c6f01d9e 100644 --- a/SHADE_Engine/src/Math/Vector/SHVec4.cpp +++ b/SHADE_Engine/src/Math/Vector/SHVec4.cpp @@ -15,7 +15,7 @@ // Project Headers #include "Math/SHMatrix.h" #include "Math/SHColour.h" -#include "Tools/SHLogger.h" +#include "Tools/Logger/SHLogger.h" using namespace DirectX; diff --git a/SHADE_Engine/src/Physics/SHPhysicsUtils.cpp b/SHADE_Engine/src/Physics/Collision/SHCollisionInfo.cpp similarity index 72% rename from SHADE_Engine/src/Physics/SHPhysicsUtils.cpp rename to SHADE_Engine/src/Physics/Collision/SHCollisionInfo.cpp index 14b6cc2f..43ad05ca 100644 --- a/SHADE_Engine/src/Physics/SHPhysicsUtils.cpp +++ b/SHADE_Engine/src/Physics/Collision/SHCollisionInfo.cpp @@ -1,7 +1,7 @@ /**************************************************************************************** - * \file SHPhysicsUtils.cpp + * \file SHCollisionInfo.cpp * \author Diren D Bharwani, diren.dbharwani, 390002520 - * \brief Implementation for some Physics Utilities + * \brief Implementation for Collision Info. * * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or * disclosure of this file or its contents without the prior written consent @@ -11,7 +11,7 @@ #include // Primary Header -#include "SHPhysicsUtils.h" +#include "SHCollisionInfo.h" namespace SHADE { @@ -19,7 +19,7 @@ namespace SHADE /* Constructors & Destructor Definitions */ /*-----------------------------------------------------------------------------------*/ - SHCollisionEvent::SHCollisionEvent() noexcept + SHCollisionInfo::SHCollisionInfo() noexcept : collisionState { State::INVALID } { ids[ENTITY_A] = MAX_EID; @@ -28,7 +28,7 @@ namespace SHADE ids[COLLIDER_B] = std::numeric_limits::max(); } - SHCollisionEvent::SHCollisionEvent(EntityID entityA, EntityID entityB) noexcept + SHCollisionInfo::SHCollisionInfo(EntityID entityA, EntityID entityB) noexcept : collisionState { State::INVALID } { ids[ENTITY_A] = entityA; @@ -41,12 +41,12 @@ namespace SHADE /* Operator Overload Definitions */ /*-----------------------------------------------------------------------------------*/ - bool SHCollisionEvent::operator==(const SHCollisionEvent& rhs) const noexcept + bool SHCollisionInfo::operator==(const SHCollisionInfo& rhs) const noexcept { return value[0] == rhs.value[0] && value[1] == rhs.value[1]; } - bool SHCollisionEvent::operator!=(const SHCollisionEvent& rhs) const noexcept + bool SHCollisionInfo::operator!=(const SHCollisionInfo& rhs) const noexcept { return value[0] != rhs.value[0] || value[1] != rhs.value[1]; } @@ -55,37 +55,37 @@ namespace SHADE /* Getter Function Definitions */ /*-----------------------------------------------------------------------------------*/ - EntityID SHCollisionEvent::GetEntityA() const noexcept + EntityID SHCollisionInfo::GetEntityA() const noexcept { return ids[ENTITY_A]; } - EntityID SHCollisionEvent::GetEntityB() const noexcept + EntityID SHCollisionInfo::GetEntityB() const noexcept { return ids[ENTITY_B]; } - const SHRigidBodyComponent* SHCollisionEvent::GetRigidBodyA() const noexcept + const SHRigidBodyComponent* SHCollisionInfo::GetRigidBodyA() const noexcept { return SHComponentManager::GetComponent_s(ids[ENTITY_A]); } - const SHRigidBodyComponent* SHCollisionEvent::GetRigidBodyB() const noexcept + const SHRigidBodyComponent* SHCollisionInfo::GetRigidBodyB() const noexcept { return SHComponentManager::GetComponent_s(ids[ENTITY_B]); } - const SHCollisionShape* SHCollisionEvent::GetColliderA() const noexcept + const SHCollisionShape* SHCollisionInfo::GetColliderA() const noexcept { return &SHComponentManager::GetComponent(ids[ENTITY_A])->GetCollisionShape(ids[COLLIDER_A]); } - const SHCollisionShape* SHCollisionEvent::GetColliderB() const noexcept + const SHCollisionShape* SHCollisionInfo::GetColliderB() const noexcept { return &SHComponentManager::GetComponent(ids[ENTITY_B])->GetCollisionShape(ids[COLLIDER_B]); } - SHCollisionEvent::State SHCollisionEvent::GetCollisionState() const noexcept + SHCollisionInfo::State SHCollisionInfo::GetCollisionState() const noexcept { return collisionState; } diff --git a/SHADE_Engine/src/Physics/SHPhysicsUtils.h b/SHADE_Engine/src/Physics/Collision/SHCollisionInfo.h similarity index 71% rename from SHADE_Engine/src/Physics/SHPhysicsUtils.h rename to SHADE_Engine/src/Physics/Collision/SHCollisionInfo.h index 753f8d3b..d2dad647 100644 --- a/SHADE_Engine/src/Physics/SHPhysicsUtils.h +++ b/SHADE_Engine/src/Physics/Collision/SHCollisionInfo.h @@ -1,7 +1,7 @@ /**************************************************************************************** - * \file SHPhysicsUtils.h + * \file SHCollisionInfo.h * \author Diren D Bharwani, diren.dbharwani, 390002520 - * \brief Interface for some Physics Utilities + * \brief Interface for Collision Information for Collision & Triggers. * * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or * disclosure of this file or its contents without the prior written consent @@ -11,8 +11,8 @@ #pragma once // Project Headers -#include "Components/SHColliderComponent.h" -#include "Components/SHRigidBodyComponent.h" +#include "Physics/Interface/SHColliderComponent.h" +#include "Physics/Interface/SHRigidBodyComponent.h" namespace SHADE @@ -21,27 +21,14 @@ namespace SHADE /* Type Definitions */ /*-----------------------------------------------------------------------------------*/ - struct SHPhysicsColliderAddedEvent - { - EntityID entityID; - SHCollisionShape::Type colliderType; - int colliderIndex; - }; - - struct SHPhysicsColliderRemovedEvent - { - EntityID entityID; - int colliderIndex; - }; - - class SH_API SHCollisionEvent + class SH_API SHCollisionInfo { private: /*---------------------------------------------------------------------------------*/ /* Friends */ /*---------------------------------------------------------------------------------*/ - friend class SHPhysicsSystem; + friend class SHCollisionListener; public: /*---------------------------------------------------------------------------------*/ @@ -62,23 +49,23 @@ namespace SHADE /* Constructors & Destructor */ /*---------------------------------------------------------------------------------*/ - SHCollisionEvent () noexcept; - SHCollisionEvent (EntityID entityA, EntityID entityB) noexcept; + SHCollisionInfo () noexcept; + SHCollisionInfo (EntityID entityA, EntityID entityB) noexcept; - SHCollisionEvent (const SHCollisionEvent& rhs) = default; - SHCollisionEvent (SHCollisionEvent&& rhs) = default; - ~SHCollisionEvent () = default; + SHCollisionInfo (const SHCollisionInfo& rhs) = default; + SHCollisionInfo (SHCollisionInfo&& rhs) = default; + ~SHCollisionInfo () = default; /*---------------------------------------------------------------------------------*/ /* Operator Overloads */ /*---------------------------------------------------------------------------------*/ - bool operator== (const SHCollisionEvent& rhs) const noexcept; - bool operator!= (const SHCollisionEvent& rhs) const noexcept; + bool operator== (const SHCollisionInfo& rhs) const noexcept; + bool operator!= (const SHCollisionInfo& rhs) const noexcept; - SHCollisionEvent& operator= (const SHCollisionEvent& rhs) = default; - SHCollisionEvent& operator= (SHCollisionEvent&& rhs) = default; + SHCollisionInfo& operator= (const SHCollisionInfo& rhs) = default; + SHCollisionInfo& operator= (SHCollisionInfo&& rhs) = default; /*---------------------------------------------------------------------------------*/ /* Getter Functions */ @@ -88,8 +75,8 @@ namespace SHADE [[nodiscard]] EntityID GetEntityB () const noexcept; [[nodiscard]] const SHRigidBodyComponent* GetRigidBodyA () const noexcept; [[nodiscard]] const SHRigidBodyComponent* GetRigidBodyB () const noexcept; - [[nodiscard]] const SHCollisionShape* GetColliderA () const noexcept; - [[nodiscard]] const SHCollisionShape* GetColliderB () const noexcept; + [[nodiscard]] const SHCollisionShape* GetColliderA () const noexcept; + [[nodiscard]] const SHCollisionShape* GetColliderB () const noexcept; [[nodiscard]] State GetCollisionState () const noexcept; private: @@ -112,5 +99,4 @@ namespace SHADE State collisionState; }; - } // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/Collision/SHCollisionListener.cpp b/SHADE_Engine/src/Physics/Collision/SHCollisionListener.cpp new file mode 100644 index 00000000..f16303f4 --- /dev/null +++ b/SHADE_Engine/src/Physics/Collision/SHCollisionListener.cpp @@ -0,0 +1,242 @@ +/**************************************************************************************** + * \file SHCollisionListener.cpp + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Implementation for a Collision Listener. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#include + +// Primary Header +#include "SHCollisionListener.h" + +// Project Headers +#include "Physics/PhysicsObject/SHPhysicsObject.h" +#include "Physics/System/SHPhysicsSystem.h" +#include "Scene/SHSceneManager.h" + +/*-------------------------------------------------------------------------------------*/ +/* Local Helper Functions */ +/*-------------------------------------------------------------------------------------*/ + +uint32_t matchColliders(const SHADE::SHPhysicsObject&physicsObject, const rp3d::Entity colliderID) +{ + for (uint32_t i = 0; i < physicsObject.GetCollisionBody()->getNbColliders(); ++i) + { + const auto* collider = physicsObject.GetCollisionBody()->getCollider(i); + if (collider->getEntity() == colliderID) + return i; + } + + return std::numeric_limits::max(); +} + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Constructors & Destructor Definitions */ + /*-----------------------------------------------------------------------------------*/ + + SHCollisionListener::SHCollisionListener() noexcept + : system { nullptr } + {} + + /*-----------------------------------------------------------------------------------*/ + /* Getter Function Definitions */ + /*-----------------------------------------------------------------------------------*/ + + const std::vector& SHCollisionListener::GetCollisionInfoContainer() const noexcept + { + return collisionInfoContainer; + } + + const std::vector& SHCollisionListener::GetTriggerInfoContainer() const noexcept + { + return triggerInfoContainer; + } + + /*-----------------------------------------------------------------------------------*/ + /* Public Function Member Definitions */ + /*-----------------------------------------------------------------------------------*/ + + void SHCollisionListener::BindToSystem(SHPhysicsSystem* physicsSystem) noexcept + { + system = physicsSystem; + } + + void SHCollisionListener::BindToWorld(rp3d::PhysicsWorld* world) noexcept + { + if (!world) + return; + + world->setEventListener(this); + } + + void SHCollisionListener::CleanContainers() noexcept + { + static const auto CLEAR = [](std::vector& container) + { + for (auto eventIter = container.begin(); eventIter != container.end();) + { + const SHCollisionInfo& C_INFO = *eventIter; + + const bool CLEAR_EVENT = C_INFO.GetCollisionState() == SHCollisionInfo::State::EXIT + || C_INFO.GetCollisionState() == SHCollisionInfo::State::INVALID; + + const bool INACTIVE_OBJECT = !SHSceneManager::CheckNodeAndComponentsActive(C_INFO.GetEntityA()) + || !SHSceneManager::CheckNodeAndComponentsActive(C_INFO.GetEntityB()); + + if (CLEAR_EVENT || INACTIVE_OBJECT) + eventIter = container.erase(eventIter); + else + ++eventIter; + } + }; + + CLEAR(collisionInfoContainer); + CLEAR(triggerInfoContainer); + } + + void SHCollisionListener::ClearContainers() noexcept + { + collisionInfoContainer.clear(); + triggerInfoContainer.clear(); + } + + void SHCollisionListener::onContact(const rp3d::CollisionCallback::CallbackData& callbackData) + { + for (uint32_t i = 0; i < callbackData.getNbContactPairs(); ++i) + { + const auto CONTACT_PAIR = callbackData.getContactPair(i); + const SHCollisionInfo NEW_INFO = generateCollisionInfo(CONTACT_PAIR); + + updateInfoContainers(NEW_INFO, collisionInfoContainer); + } + } + + void SHCollisionListener::onTrigger(const rp3d::OverlapCallback::CallbackData& callbackData) + { + for (uint32_t i = 0; i < callbackData.getNbOverlappingPairs(); ++i) + { + const auto OVERLAP_PAIR = callbackData.getOverlappingPair(i); + const SHCollisionInfo NEW_INFO = generateTriggerInfo(OVERLAP_PAIR); + + updateInfoContainers(NEW_INFO, triggerInfoContainer); + } + } + + /*-----------------------------------------------------------------------------------*/ + /* Private Function Member Definitions */ + /*-----------------------------------------------------------------------------------*/ + + void SHCollisionListener::updateInfoContainers(const SHCollisionInfo& collisionEvent, std::vector& container) noexcept + { + const auto IT = std::ranges::find_if(container.begin(), container.end(), [&](const SHCollisionInfo& info) + { + const bool ENTITY_MATCH = (info.ids[0] == collisionEvent.ids[0] && info.ids[1] == collisionEvent.ids[1]) + || (info.ids[0] == collisionEvent.ids[1] && info.ids[1] == collisionEvent.ids[0]); + const bool COLLIDERS_MATCH = (info.ids[2] == collisionEvent.ids[2] && info.ids[3] == collisionEvent.ids[3]) + || (info.ids[2] == collisionEvent.ids[3] && info.ids[3] == collisionEvent.ids[2]); + return ENTITY_MATCH && COLLIDERS_MATCH; + }); + + if (IT == container.end()) + container.emplace_back(collisionEvent); + else + IT->collisionState = collisionEvent.collisionState; + } + + SHCollisionInfo SHCollisionListener::generateCollisionInfo(const rp3d::CollisionCallback::ContactPair& cp) const noexcept + { + SHCollisionInfo cInfo; + + // Update collision state + cInfo.collisionState = static_cast(cp.getEventType()); + + // Match body and collider for collision event + const rp3d::Entity body1 = cp.getBody1()->getEntity(); + const rp3d::Entity body2 = cp.getBody2()->getEntity(); + const rp3d::Entity collider1 = cp.getCollider1()->getEntity(); + const rp3d::Entity collider2 = cp.getCollider2()->getEntity(); + + // Find and match both ids + bool matched[2] = { false, false }; + + + for (auto& [entityID, physicsObject] : system->GetPhysicsObjects()) + { + // Match body 1 + if (matched[SHCollisionInfo::ENTITY_A] == false && physicsObject.GetCollisionBody()->getEntity() == body1) + { + cInfo.ids[SHCollisionInfo::ENTITY_A] = entityID; + cInfo.ids[SHCollisionInfo::COLLIDER_A] = matchColliders(physicsObject, collider1); + + matched[SHCollisionInfo::ENTITY_A] = true; + } + + // Match body 2 + if (matched[SHCollisionInfo::ENTITY_B] == false && physicsObject.GetCollisionBody()->getEntity() == body2) + { + cInfo.ids[SHCollisionInfo::ENTITY_B] = entityID; + cInfo.ids[SHCollisionInfo::COLLIDER_B] = matchColliders(physicsObject, collider2); + + matched[SHCollisionInfo::ENTITY_B] = true; + } + + if (matched[SHCollisionInfo::ENTITY_A] == true && matched[SHCollisionInfo::ENTITY_B] == true) + return cInfo; + } + + return cInfo; + } + + SHCollisionInfo SHCollisionListener::generateTriggerInfo(const rp3d::OverlapCallback::OverlapPair& cp) const noexcept + { + SHCollisionInfo cInfo; + + // Update collision state + cInfo.collisionState = static_cast(cp.getEventType()); + + // Match body and collider for collision event + const rp3d::Entity body1 = cp.getBody1()->getEntity(); + const rp3d::Entity body2 = cp.getBody2()->getEntity(); + const rp3d::Entity collider1 = cp.getCollider1()->getEntity(); + const rp3d::Entity collider2 = cp.getCollider2()->getEntity(); + + // Find and match both ids + bool matched[2] = { false, false }; + + + for (auto& [entityID, physicsObject] : system->GetPhysicsObjects()) + { + // Match body 1 + if (matched[SHCollisionInfo::ENTITY_A] == false && physicsObject.GetCollisionBody()->getEntity() == body1) + { + cInfo.ids[SHCollisionInfo::ENTITY_A] = entityID; + cInfo.ids[SHCollisionInfo::COLLIDER_A] = matchColliders(physicsObject, collider1); + + matched[SHCollisionInfo::ENTITY_A] = true; + } + + // Match body 2 + if (matched[SHCollisionInfo::ENTITY_B] == false && physicsObject.GetCollisionBody()->getEntity() == body2) + { + cInfo.ids[SHCollisionInfo::ENTITY_B] = entityID; + cInfo.ids[SHCollisionInfo::COLLIDER_B] = matchColliders(physicsObject, collider2); + + matched[SHCollisionInfo::ENTITY_B] = true; + } + + if (matched[SHCollisionInfo::ENTITY_A] == true && matched[SHCollisionInfo::ENTITY_B] == true) + return cInfo; + } + + return cInfo; + } + + + +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/Collision/SHCollisionListener.h b/SHADE_Engine/src/Physics/Collision/SHCollisionListener.h new file mode 100644 index 00000000..62882556 --- /dev/null +++ b/SHADE_Engine/src/Physics/Collision/SHCollisionListener.h @@ -0,0 +1,80 @@ +/**************************************************************************************** + * \file SHCollisionListener.h + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Interface for a Collision Listener. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#pragma once + +// External Dependencies +#include + +// Project Headers +#include "SH_API.h" +#include "SHCollisionInfo.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Forward Declarations */ + /*-----------------------------------------------------------------------------------*/ + + class SHPhysicsSystem; + + /*-----------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*-----------------------------------------------------------------------------------*/ + + class SH_API SHCollisionListener final : public rp3d::EventListener + { + public: + /*---------------------------------------------------------------------------------*/ + /* Constructors & Destructor */ + /*---------------------------------------------------------------------------------*/ + + SHCollisionListener() noexcept; + + /*---------------------------------------------------------------------------------*/ + /* Getter Functions */ + /*---------------------------------------------------------------------------------*/ + + [[nodiscard]] const std::vector& GetCollisionInfoContainer () const noexcept; + [[nodiscard]] const std::vector& GetTriggerInfoContainer () const noexcept; + + /*---------------------------------------------------------------------------------*/ + /* Function Members */ + /*---------------------------------------------------------------------------------*/ + + void BindToSystem (SHPhysicsSystem* physicsSystem) noexcept; + void BindToWorld (rp3d::PhysicsWorld* world) noexcept; + void CleanContainers () noexcept; + void ClearContainers () noexcept; + + void onContact (const rp3d::CollisionCallback::CallbackData& callbackData) override; + void onTrigger (const rp3d::OverlapCallback::CallbackData& callbackData) override; + + private: + + /*---------------------------------------------------------------------------------*/ + /* Data Members */ + /*---------------------------------------------------------------------------------*/ + + SHPhysicsSystem* system; + std::vector collisionInfoContainer; + std::vector triggerInfoContainer; + + /*---------------------------------------------------------------------------------*/ + /* Function Members */ + /*---------------------------------------------------------------------------------*/ + + static void updateInfoContainers (const SHCollisionInfo& collisionEvent, std::vector& container) noexcept; + + SHCollisionInfo generateCollisionInfo (const rp3d::CollisionCallback::ContactPair& cp) const noexcept; + SHCollisionInfo generateTriggerInfo (const rp3d::OverlapCallback::OverlapPair& cp) const noexcept; + }; + +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/Collision/SHCollisionTagMatrix.cpp b/SHADE_Engine/src/Physics/Collision/SHCollisionTagMatrix.cpp new file mode 100644 index 00000000..b687c6ca --- /dev/null +++ b/SHADE_Engine/src/Physics/Collision/SHCollisionTagMatrix.cpp @@ -0,0 +1,223 @@ +/**************************************************************************************** + * \file SHCollisionTagMatrix.cpp + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Implementation for Collision Tag Matrix for handling sets of Collision Tags. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#include +#include + +// Primary Header +#include "SHCollisionTagMatrix.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Static Data Member Definitions */ + /*-----------------------------------------------------------------------------------*/ + + SHCollisionTag SHCollisionTagMatrix::collisionTags[SHCollisionTag::NUM_LAYERS]; + + /*-----------------------------------------------------------------------------------*/ + /* Getter Function Definitions */ + /*-----------------------------------------------------------------------------------*/ + + const std::string& SHCollisionTagMatrix::GetTagName(int tagIndex) + { + if (tagIndex < 0 || tagIndex > SHCollisionTag::NUM_LAYERS) + throw std::invalid_argument("Index out of range!"); + + return collisionTags[tagIndex].GetName(); + } + + int SHCollisionTagMatrix::GetTagIndex(const std::string& tagName) noexcept + { + for (int i = 0; i < SHCollisionTag::NUM_LAYERS; ++i) + { + if (collisionTags[i].GetName() == tagName) + return i; + } + + SHLOGV_WARNING("Collision Tag {} cannot be found!", tagName) + return -1; + } + + SHCollisionTag* SHCollisionTagMatrix::GetTag(int tagIndex) + { + if (tagIndex < 0 || tagIndex > SHCollisionTag::NUM_LAYERS) + throw std::invalid_argument("Index out of range!"); + + return &collisionTags[tagIndex]; + } + + SHCollisionTag* SHCollisionTagMatrix::GetTag(const std::string& tagName) noexcept + { + for (int i = 0; i < SHCollisionTag::NUM_LAYERS; ++i) + { + if (collisionTags[i].GetName() == tagName) + return &collisionTags[i]; + } + + SHLOGV_WARNING("Collision Tag {} cannot be found!", tagName) + return nullptr; + } + + /*-----------------------------------------------------------------------------------*/ + /* Setter Function Definitions */ + /*-----------------------------------------------------------------------------------*/ + + void SHCollisionTagMatrix::SetTagName(const std::string& oldTagName, const std::string& newTagName) noexcept + { + for (auto& collisionTag : collisionTags) + { + if (collisionTag.GetName() != oldTagName) + continue; + + collisionTag.SetName(newTagName); + return; + } + + SHLOGV_WARNING("Collision tag {} cannot be found!", oldTagName) + } + + void SHCollisionTagMatrix::SetTag(const std::string& tagName, const SHCollisionTag& newTag) noexcept + { + for (auto& collisionTag : collisionTags) + { + if (collisionTag.GetName() != tagName) + continue; + + collisionTag = newTag; + return; + } + + SHLOGV_WARNING("Collision tag {} cannot be found!", tagName) + } + + void SHCollisionTagMatrix::SetTag(const std::string& tagName, uint16_t mask) noexcept + { + for (auto& collisionTag : collisionTags) + { + if (collisionTag.GetName() != tagName) + continue; + + collisionTag.SetMask(mask); + return; + } + + SHLOGV_WARNING("Collision tag {} cannot be found!", tagName) + } + + void SHCollisionTagMatrix::SetTagName(int tagIndex, const std::string& newTagName) + { + if (tagIndex < 0 || tagIndex > SHCollisionTag::NUM_LAYERS) + throw std::invalid_argument("Index out of range!"); + + collisionTags[tagIndex].SetName(newTagName); + } + + void SHCollisionTagMatrix::SetTag(int tagIndex, const SHCollisionTag& newTag) + { + if (tagIndex < 0 || tagIndex > SHCollisionTag::NUM_LAYERS) + throw std::invalid_argument("Index out of range!"); + + collisionTags[tagIndex] = newTag; + } + + void SHCollisionTagMatrix::SetTag(int tagIndex, uint16_t mask) + { + if (tagIndex < 0 || tagIndex > SHCollisionTag::NUM_LAYERS) + throw std::invalid_argument("Index out of range!"); + + collisionTags[tagIndex].SetMask(mask); + } + + /*-----------------------------------------------------------------------------------*/ + /* Public Function Member Definitions */ + /*-----------------------------------------------------------------------------------*/ + + void SHCollisionTagMatrix::Init(const std::filesystem::path& tagNameFilePath) noexcept + { + /** + * I HATE FILE IO + * + * Each line in the file should be "indextag name". + * If the line fails to follow this format, use the default tag name (index + 1) + */ + + // Populate tag names with default + for (int i = 0; i < SHCollisionTag::NUM_LAYERS; ++i) + collisionTags[i].SetName(std::to_string(i + 1)); + + std::ifstream collisionTagNamesFile { tagNameFilePath }; + + if (!collisionTagNamesFile.is_open()) + { + SHLOG_ERROR("Failed to open file for Collision Tag Names! Default tag names used!") + return; + } + + std::stringstream ss; + std::string line; + + int linesRead = 0; + while (std::getline(collisionTagNamesFile, line)) + { + // Do not read anything beyond the first 16 lines + if (linesRead >= 16) + break; + + ss << line; + ++linesRead; + + // First element is index. + int tagIndex; + ss >> tagIndex; + + // Next element is name of the tag + std::string tagName; + ss >> tagName; + + // If no tag name read, use default. + if (tagName.empty()) + { + SHLOG_ERROR + ( + "Collision tag file line {} does not match the required format of 'indextag name'. Default tag used for index {}" + , linesRead + 1 + , tagIndex + ) + + // Use default + collisionTags[tagIndex].SetName(std::to_string(tagIndex + 1)); + continue; + } + + collisionTags[tagIndex].SetName(tagName); + + ss.clear(); + } + + collisionTagNamesFile.close(); + } + + void SHCollisionTagMatrix::Exit(const std::filesystem::path& tagNameFilePath) noexcept + { + std::ofstream collisionTagNamesFile { tagNameFilePath }; + + if (!collisionTagNamesFile.is_open()) + { + SHLOG_ERROR("Failed to open file for Collision Tag Names! Tag names not saved!") + return; + } + + for (int i = 0; i < SHCollisionTag::NUM_LAYERS; ++i) + collisionTagNamesFile << i << " " << collisionTags[i].GetName() << std::endl; + + collisionTagNamesFile.close(); + } +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/Collision/SHCollisionTagMatrix.h b/SHADE_Engine/src/Physics/Collision/SHCollisionTagMatrix.h new file mode 100644 index 00000000..90018fe4 --- /dev/null +++ b/SHADE_Engine/src/Physics/Collision/SHCollisionTagMatrix.h @@ -0,0 +1,67 @@ +/**************************************************************************************** + * \file SHCollisionTagMatrix.h + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Interface for Collision Tag Matrix for handling sets of Collision Tags. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#pragma once + +#include + +// Project Includes +#include "SH_API.h" +#include "SHCollisionTags.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*-----------------------------------------------------------------------------------*/ + + class SH_API SHCollisionTagMatrix + { + public: + /*---------------------------------------------------------------------------------*/ + /* Getter Functions */ + /*---------------------------------------------------------------------------------*/ + + [[nodiscard]] static const std::string& GetTagName (int tagIndex); + [[nodiscard]] static int GetTagIndex (const std::string& tagName) noexcept; + + [[nodiscard]] static SHCollisionTag* GetTag (int tagIndex); + [[nodiscard]] static SHCollisionTag* GetTag (const std::string& tagName) noexcept; + + /*---------------------------------------------------------------------------------*/ + /* Setter Functions */ + /*---------------------------------------------------------------------------------*/ + + static void SetTagName (const std::string& oldTagName, const std::string& newTagName) noexcept; + static void SetTag (const std::string& tagName, const SHCollisionTag& newTag) noexcept; + static void SetTag (const std::string& tagName, uint16_t mask) noexcept; + + // Unsafe Setters: Can throw exceptions + + static void SetTagName (int tagIndex, const std::string& newTagName); + static void SetTag (int tagIndex, const SHCollisionTag& newTag); + static void SetTag (int tagIndex, uint16_t mask); + + + /*---------------------------------------------------------------------------------*/ + /* Function Members */ + /*---------------------------------------------------------------------------------*/ + + static void Init (const std::filesystem::path& tagNameFilePath) noexcept; + static void Exit (const std::filesystem::path& tagNameFilePath) noexcept; + + private: + /*---------------------------------------------------------------------------------*/ + /* Data Members */ + /*---------------------------------------------------------------------------------*/ + + static SHCollisionTag collisionTags[SHCollisionTag::NUM_LAYERS]; + }; +} \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/Collision/SHCollisionTags.cpp b/SHADE_Engine/src/Physics/Collision/SHCollisionTags.cpp new file mode 100644 index 00000000..b1d2d5fc --- /dev/null +++ b/SHADE_Engine/src/Physics/Collision/SHCollisionTags.cpp @@ -0,0 +1,116 @@ +/**************************************************************************************** + * \file SHCollisionTags.cpp + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Implementation for Collision Tags for filtering collisions. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#include +#include + +// Primary Header +#include "SHCollisionTags.h" +// Project Headers +#include "Tools/Utilities/SHUtilities.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Constructors & Destructor Definitions */ + /*-----------------------------------------------------------------------------------*/ + + SHCollisionTag::SHCollisionTag() noexcept + : mask { SHUtilities::ConvertEnum(Layer::ALL) } + {} + + SHCollisionTag::SHCollisionTag(uint16_t _mask) noexcept + : mask { _mask } + {} + + SHCollisionTag::SHCollisionTag(Layer layer) noexcept + : mask { SHUtilities::ConvertEnum(layer) } + {} + + /*-----------------------------------------------------------------------------------*/ + /* Operator Overload Definitions */ + /*-----------------------------------------------------------------------------------*/ + + bool SHCollisionTag::operator==(const SHCollisionTag& rhs) const noexcept + { + return mask == rhs.mask; + } + + bool SHCollisionTag::operator!=(const SHCollisionTag& rhs) const noexcept + { + return mask != rhs.mask; + } + + SHCollisionTag::operator uint16_t() const noexcept + { + return mask; + } + + /*-----------------------------------------------------------------------------------*/ + /* Getter Function Definitions */ + /*-----------------------------------------------------------------------------------*/ + + uint16_t SHCollisionTag::GetMask() const noexcept + { + return mask; + } + + const std::string& SHCollisionTag::GetName() const noexcept + { + return name; + } + + bool SHCollisionTag::GetLayerState(Layer layer) const noexcept + { + return (mask & SHUtilities::ConvertEnum(layer)) > 0; + } + + bool SHCollisionTag::GetLayerState(int layerIndex) const + { + if (layerIndex < 0 || layerIndex > NUM_LAYERS) + throw std::invalid_argument("Index out of range!"); + + return (mask & (1U << layerIndex)) > 0; + } + + /*-----------------------------------------------------------------------------------*/ + /* Setter Function Definitions */ + /*-----------------------------------------------------------------------------------*/ + + void SHCollisionTag::SetMask(uint16_t newMask) noexcept + { + mask = newMask; + } + + void SHCollisionTag::SetName(const std::string_view& newName) noexcept + { + name = newName; + } + + void SHCollisionTag::SetLayerState(Layer layer, bool state) noexcept + { + const auto VALUE = SHUtilities::ConvertEnum(layer); + state ? mask |= VALUE : mask &= ~(VALUE); + } + + void SHCollisionTag::SetLayerState(int layerIndex, bool state) + { + if (layerIndex < 0 || layerIndex > NUM_LAYERS) + throw std::invalid_argument("Index out of range!"); + + const auto VALUE = 1U << layerIndex; + state ? mask |= (VALUE) : mask &= ~(VALUE); + } +} // namespace SHADE + +SHADE::SHCollisionTag::Layer operator|(SHADE::SHCollisionTag::Layer lhs, SHADE::SHCollisionTag::Layer rhs) noexcept +{ + return static_cast(SHADE::SHUtilities::ConvertEnum(lhs) | SHADE::SHUtilities::ConvertEnum(rhs)); +} \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/Collision/SHCollisionTags.h b/SHADE_Engine/src/Physics/Collision/SHCollisionTags.h new file mode 100644 index 00000000..9c7b4364 --- /dev/null +++ b/SHADE_Engine/src/Physics/Collision/SHCollisionTags.h @@ -0,0 +1,112 @@ +/**************************************************************************************** + * \file SHCollisionTags.h + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Interface for Collision Tags for filtering collisions. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#pragma once + +#include + +// Project Headers +#include "SH_API.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*-----------------------------------------------------------------------------------*/ + + class SH_API SHCollisionTag + { + public: + /*---------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*---------------------------------------------------------------------------------*/ + + enum class Layer : uint16_t + { + _1 = 0x0001 + , _2 = 0x0002 + , _3 = 0x0004 + , _4 = 0x0008 + , _5 = 0x0010 + , _6 = 0x0020 + , _7 = 0x0040 + , _8 = 0x0080 + , _9 = 0x0100 + , _10 = 0x0200 + , _11 = 0x0400 + , _12 = 0x0800 + , _13 = 0x1000 + , _14 = 0x2000 + , _15 = 0x4000 + , _16 = 0x8000 + , ALL = 0xFFFF + }; + + /*---------------------------------------------------------------------------------*/ + /* Data Members */ + /*---------------------------------------------------------------------------------*/ + static constexpr int NUM_LAYERS = 16; + + /*---------------------------------------------------------------------------------*/ + /* Constructors & Destructor */ + /*---------------------------------------------------------------------------------*/ + + SHCollisionTag () noexcept; + SHCollisionTag (uint16_t mask) noexcept; + SHCollisionTag (Layer layer) noexcept; + + SHCollisionTag (const SHCollisionTag&) noexcept = default; + SHCollisionTag (SHCollisionTag&&) noexcept = default; + ~SHCollisionTag () = default; + + /*---------------------------------------------------------------------------------*/ + /* Operator Overloads */ + /*---------------------------------------------------------------------------------*/ + + SHCollisionTag& operator=(const SHCollisionTag&) noexcept = default; + SHCollisionTag& operator=(SHCollisionTag&&) noexcept = default; + + [[nodiscard]] bool operator==(const SHCollisionTag& rhs) const noexcept; + [[nodiscard]] bool operator!=(const SHCollisionTag& rhs) const noexcept; + + operator uint16_t() const noexcept; + + /*---------------------------------------------------------------------------------*/ + /* Getter Functions */ + /*---------------------------------------------------------------------------------*/ + + [[nodiscard]] uint16_t GetMask () const noexcept; + [[nodiscard]] const std::string& GetName () const noexcept; + [[nodiscard]] bool GetLayerState (Layer layer) const noexcept; + [[nodiscard]] bool GetLayerState (int layerIndex) const; + + /*---------------------------------------------------------------------------------*/ + /* Setter Functions */ + /*---------------------------------------------------------------------------------*/ + + void SetMask (uint16_t newMask) noexcept; + void SetName (const std::string_view& newName) noexcept; + void SetLayerState (Layer layer, bool state) noexcept; + void SetLayerState (int layerIndex, bool state); + + private: + /*---------------------------------------------------------------------------------*/ + /* Data Members */ + /*---------------------------------------------------------------------------------*/ + + uint16_t mask; + std::string name; + }; + +} // namespace SHADE + +SHADE::SHCollisionTag::Layer SH_API operator|(SHADE::SHCollisionTag::Layer lhs, SHADE::SHCollisionTag::Layer rhs) noexcept; + + diff --git a/SHADE_Engine/src/Physics/Collision/SHPhysicsRaycastResult.h b/SHADE_Engine/src/Physics/Collision/SHPhysicsRaycastResult.h new file mode 100644 index 00000000..cce01845 --- /dev/null +++ b/SHADE_Engine/src/Physics/Collision/SHPhysicsRaycastResult.h @@ -0,0 +1,34 @@ +/**************************************************************************************** + * \file SHPhysicsRaycastResult.h + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Interface for a Physics Raycast Result + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#pragma once + +// Project Includes +#include "ECS_Base/SHECSMacros.h" +#include "Math/SHRay.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*-----------------------------------------------------------------------------------*/ + + struct SH_API SHPhysicsRaycastResult : public SHRaycastResult + { + public: + /*---------------------------------------------------------------------------------*/ + /* Data Members */ + /*---------------------------------------------------------------------------------*/ + + EntityID entityHit = MAX_EID; + int shapeIndex = -1; + + }; +} diff --git a/SHADE_Engine/src/Physics/Collision/SHPhysicsRaycaster.cpp b/SHADE_Engine/src/Physics/Collision/SHPhysicsRaycaster.cpp new file mode 100644 index 00000000..11b9fcab --- /dev/null +++ b/SHADE_Engine/src/Physics/Collision/SHPhysicsRaycaster.cpp @@ -0,0 +1,350 @@ +/**************************************************************************************** + * \file SHPhysicsRaycaster.cpp + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Implementation for a Physics Raycaster. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#include + +// Primary Header +#include "SHPhysicsRaycaster.h" + +/* + * TODO(DIREN): + * Once the physics engine has been rebuilt, this whole implementation should change + * and just call PhysicsWorld.Raycast etc. + * + * SHRaycastResult can be converted to a bool when necessary. + */ + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Constructors & Destructor Definitions */ + /*-----------------------------------------------------------------------------------*/ + + SHPhysicsRaycaster::SHPhysicsRaycaster() noexcept + : world { nullptr } + {} + + /*-----------------------------------------------------------------------------------*/ + /* Getter Function Definitions */ + /*-----------------------------------------------------------------------------------*/ + + const SHPhysicsRaycaster::RaycastPairs& SHPhysicsRaycaster::GetRaycasts() const noexcept + { + return raycasts; + } + + /*-----------------------------------------------------------------------------------*/ + /* Getter Function Definitions */ + /*-----------------------------------------------------------------------------------*/ + + void SHPhysicsRaycaster::SetObjectManager(SHPhysicsObjectManager* physicsObjectManager) noexcept + { + objectManager = physicsObjectManager; + } + + /*-----------------------------------------------------------------------------------*/ + /* Public Function Member Definitions */ + /*-----------------------------------------------------------------------------------*/ + + void SHPhysicsRaycaster::BindToWorld(rp3d::PhysicsWorld* physicsWorld) noexcept + { + world = physicsWorld; + } + + void SHPhysicsRaycaster::ClearFrame() noexcept + { + raycasts.clear(); + } + + SHPhysicsRaycastResult SHPhysicsRaycaster::Raycast(const SHRay& ray, float distance) noexcept + { + // Reset temp + temp = SHPhysicsRaycastResult{}; + temp.distance = distance; + + if (!world) + { + SHLOG_ERROR("Physics world missing for raycasting!") + return temp; + } + + // If distance in infinity, cast to the default max distance of 2 km. + if (distance == std::numeric_limits::infinity()) + { + world->raycast(ray, this); + } + else + { + const SHVec3 END_POINT = ray.position + ray.direction * distance; + const rp3d::Ray RP3D_RAY{ ray.position, END_POINT }; + world->raycast(RP3D_RAY, this); + } + + // If a hit was found, populate temp info for return. + if (temp.hit) + { + temp.distance = SHVec3::Distance(ray.position, temp.position); + temp.angle = SHVec3::Angle(ray.position, temp.position); + } + + raycasts.emplace_back(ray, temp); + return temp; + } + + SHPhysicsRaycastResult SHPhysicsRaycaster::Linecast(const SHVec3& start, const SHVec3& end) noexcept + { + temp = SHPhysicsRaycastResult{}; + temp.distance = SHVec3::Distance(start, end); + + if (!world) + { + SHLOG_ERROR("Physics world missing for raycasting!") + return temp; + } + + const rp3d::Ray RP3D_RAY{ start, end }; + world->raycast(RP3D_RAY, this); + + if (temp.hit) + { + temp.distance = SHVec3::Distance(start, temp.position); + temp.angle = SHVec3::Angle(start, temp.position); + } + + raycasts.emplace_back(RP3D_RAY, temp); + return temp; + } + + SHPhysicsRaycastResult SHPhysicsRaycaster::ColliderRaycast(EntityID eid, const SHRay& ray, float distance) noexcept + { + SHPhysicsRaycastResult result; + result.distance = distance; + + // Get a valid physics object with at least 1 collider. + const auto* PHYSICS_OBJECT = validateColliderRaycast(eid); + if (!PHYSICS_OBJECT) + return result; + + auto* rp3dBody = PHYSICS_OBJECT->GetCollisionBody(); + + // Data to populate + rp3d::RaycastInfo rp3dRaycastInfo; + bool hit = false; + + if (distance == std::numeric_limits::infinity()) + { + hit = rp3dBody->raycast(ray, rp3dRaycastInfo); + } + else + { + const SHVec3 END_POINT = ray.position + ray.direction * distance; + const rp3d::Ray RP3D_RAY{ ray.position, END_POINT }; + hit = rp3dBody->raycast(RP3D_RAY, rp3dRaycastInfo); + } + + if (hit) + { + result.hit = true; + result.position = rp3dRaycastInfo.worldPoint; + result.normal = rp3dRaycastInfo.worldPoint; + result.distance = SHVec3::Distance(ray.position, result.position); + result.angle = SHVec3::Angle(ray.position, result.position); + result.entityHit = eid; + result.shapeIndex = findColliderIndex(rp3dBody, rp3dRaycastInfo.collider->getEntity()); + } + + raycasts.emplace_back(ray, result); + return result; + } + + SHPhysicsRaycastResult SHPhysicsRaycaster::ColliderRaycast(EntityID eid, int shapeIndex, const SHRay& ray, float distance) noexcept + { + SHPhysicsRaycastResult result; + result.distance = distance; + + // Get a valid physics object with at least 1 collider. + const auto* PHYSICS_OBJECT = validateColliderRaycast(eid); + if (!PHYSICS_OBJECT) + return result; + + // Boundary check for shape index + if (shapeIndex < 0 || shapeIndex >= static_cast(PHYSICS_OBJECT->GetCollisionBody()->getNbColliders())) + { + SHLOGV_WARNING("Invalid collision shape index passed in") + return result; + } + + auto* rp3dCollider = PHYSICS_OBJECT->GetCollisionBody()->getCollider(shapeIndex); + + rp3d::RaycastInfo rp3dRaycastInfo; + bool hit = false; + if (distance == std::numeric_limits::infinity()) + { + hit = rp3dCollider->raycast(ray, rp3dRaycastInfo); + } + else + { + const SHVec3 END_POINT = ray.position + ray.direction * distance; + const rp3d::Ray RP3D_RAY{ ray.position, END_POINT }; + hit = rp3dCollider->raycast(RP3D_RAY, rp3dRaycastInfo); + } + + if (hit) + { + result.hit = true; + result.position = rp3dRaycastInfo.worldPoint; + result.normal = rp3dRaycastInfo.worldPoint; + result.distance = SHVec3::Distance(ray.position, result.position); + result.angle = SHVec3::Angle(ray.position, result.position); + result.entityHit = eid; + result.shapeIndex = shapeIndex; + } + + raycasts.emplace_back(ray, result); + return result; + } + + SHPhysicsRaycastResult SHPhysicsRaycaster::ColliderLinecast(EntityID eid, const SHVec3& start, const SHVec3& end) noexcept + { + SHPhysicsRaycastResult result; + result.distance = SHVec3::Distance(start, end); + + const auto* PHYSICS_OBJECT = validateColliderRaycast(eid); + if (!PHYSICS_OBJECT) + return result; + + auto* rp3dBody = PHYSICS_OBJECT->GetCollisionBody(); + + rp3d::RaycastInfo rp3dRaycastInfo; + + const rp3d::Ray RP3D_RAY{ start, end }; + if (rp3dBody->raycast(RP3D_RAY, rp3dRaycastInfo)) + { + result.hit = true; + result.position = rp3dRaycastInfo.worldPoint; + result.normal = rp3dRaycastInfo.worldPoint; + result.distance = SHVec3::Distance(start, result.position); + result.angle = SHVec3::Angle(end, result.position); + result.entityHit = eid; + result.shapeIndex = findColliderIndex(rp3dBody, rp3dRaycastInfo.collider->getEntity()); + } + + raycasts.emplace_back(RP3D_RAY, result); + return result; + } + + SHPhysicsRaycastResult SHPhysicsRaycaster::ColliderLinecast(EntityID eid, int shapeIndex, const SHVec3& start, const SHVec3& end) noexcept + { + SHPhysicsRaycastResult result; + result.distance = SHVec3::Distance(start, end); + + const auto* PHYSICS_OBJECT = validateColliderRaycast(eid); + if (!PHYSICS_OBJECT) + return result; + + if (shapeIndex < 0 || shapeIndex >= static_cast(PHYSICS_OBJECT->GetCollisionBody()->getNbColliders())) + { + SHLOGV_WARNING("Invalid collision shape index passed in") + return result; + } + + auto* rp3dCollider = PHYSICS_OBJECT->GetCollisionBody()->getCollider(shapeIndex); + + rp3d::RaycastInfo rp3dRaycastInfo; + + const rp3d::Ray RP3D_RAY{ start, end }; + if (rp3dCollider->raycast(RP3D_RAY, rp3dRaycastInfo)) + { + result.hit = true; + result.position = rp3dRaycastInfo.worldPoint; + result.normal = rp3dRaycastInfo.worldPoint; + result.distance = SHVec3::Distance(start, result.position); + result.angle = SHVec3::Angle(end, result.position); + result.entityHit = eid; + result.shapeIndex = shapeIndex; + } + + raycasts.emplace_back(RP3D_RAY, result); + return result; + } + + rp3d::decimal SHPhysicsRaycaster::notifyRaycastHit(const rp3d::RaycastInfo& raycastInfo) + { + temp.hit = true; + temp.position = raycastInfo.worldPoint; + temp.normal = raycastInfo.worldNormal; + + if (!objectManager) + { + SHLOGV_ERROR("No physics object manager linked with raycaster to match bodies") + return 0.0f; + } + + // Compare body IDs to find the matching physics object + const auto HIT_BODY_EID = raycastInfo.body->getEntity(); + + for (const auto& [entityID, physicsObject] : objectManager->GetPhysicsObjects()) + { + const auto RP3D_BODY = physicsObject.GetCollisionBody(); + + // Match rp3d bodies + if (RP3D_BODY->getEntity() != HIT_BODY_EID) + continue; + + temp.entityHit = entityID; + + // Find collider index + if (const int INDEX = findColliderIndex(RP3D_BODY, raycastInfo.collider->getEntity()); INDEX > -1) + { + temp.shapeIndex = INDEX; + break; + } + } + + return 0.0f; + } + + /*-----------------------------------------------------------------------------------*/ + /* Private Function Member Definitions */ + /*-----------------------------------------------------------------------------------*/ + + SHPhysicsObject* SHPhysicsRaycaster::validateColliderRaycast(EntityID eid) noexcept + { + if (!objectManager) + { + SHLOGV_ERROR("No physics object manager linked with raycaster to match bodies") + return nullptr; + } + + auto* physicsObject = objectManager->GetPhysicsObject(eid); + if (!physicsObject || physicsObject->GetCollisionBody()->getNbColliders() == 0) + { + SHLOGV_WARNING("Cannot cast ray at an entity without colliders!") + return nullptr; + } + + return physicsObject; + } + + int SHPhysicsRaycaster::findColliderIndex(const rp3d::CollisionBody* rp3dBody, rp3d::Entity rp3dColliderEID) noexcept + { + const int NUM_COLLISION_SHAPES = static_cast(rp3dBody->getNbColliders()); + for (int i = 0; i < NUM_COLLISION_SHAPES; ++i) + { + const auto COLLIDER_EID = rp3dBody->getCollider(i)->getEntity(); + if (COLLIDER_EID == rp3dColliderEID) + return i; + } + + return -1; + } + + +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/Collision/SHPhysicsRaycaster.h b/SHADE_Engine/src/Physics/Collision/SHPhysicsRaycaster.h new file mode 100644 index 00000000..81165b56 --- /dev/null +++ b/SHADE_Engine/src/Physics/Collision/SHPhysicsRaycaster.h @@ -0,0 +1,131 @@ +/**************************************************************************************** + * \file SHPhysicsRaycaster.h + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Interface for a Physics Raycaster. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#pragma once + +#include + +#include + +// Project Headers +#include "Math/SHRay.h" +#include "Physics/PhysicsObject/SHPhysicsObjectManager.h" +#include "Physics/SHPhysicsWorld.h" +#include "SH_API.h" +#include "SHPhysicsRaycastResult.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*-----------------------------------------------------------------------------------*/ + + class SH_API SHPhysicsRaycaster : public reactphysics3d::RaycastCallback + { + private: + /*---------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*---------------------------------------------------------------------------------*/ + + using RaycastPair = std::pair; + using RaycastPairs = std::vector; + + public: + /*---------------------------------------------------------------------------------*/ + /* Constructors & Destructor */ + /*---------------------------------------------------------------------------------*/ + + SHPhysicsRaycaster() noexcept; + + /*---------------------------------------------------------------------------------*/ + /* Getter Functions */ + /*---------------------------------------------------------------------------------*/ + + [[nodiscard]] const RaycastPairs& GetRaycasts() const noexcept; + + /*---------------------------------------------------------------------------------*/ + /* Setter Functions */ + /*---------------------------------------------------------------------------------*/ + + void SetObjectManager(SHPhysicsObjectManager* physicsObjectManager) noexcept; + + /*---------------------------------------------------------------------------------*/ + /* Function Members */ + /*---------------------------------------------------------------------------------*/ + + void BindToWorld (rp3d::PhysicsWorld* physicsWorld) noexcept; + void ClearFrame () noexcept; + + // TODO(Diren): Filtering, return all shades ray hits + + SHPhysicsRaycastResult Raycast + ( + const SHRay& ray + , float distance = std::numeric_limits::infinity() + ) noexcept; + + SHPhysicsRaycastResult Linecast + ( + const SHVec3& start + , const SHVec3& end + ) noexcept; + + SHPhysicsRaycastResult ColliderRaycast + ( + EntityID eid + , const SHRay& ray + , float distance = std::numeric_limits::infinity() + ) noexcept; + + SHPhysicsRaycastResult ColliderRaycast + ( + EntityID eid + , int shapeIndex + , const SHRay& ray + , float distance = std::numeric_limits::infinity() + ) noexcept; + + SHPhysicsRaycastResult ColliderLinecast + ( + EntityID eid + , const SHVec3& start + , const SHVec3& end + ) noexcept; + + SHPhysicsRaycastResult ColliderLinecast + ( + EntityID eid + , int shapeIndex + , const SHVec3& start + , const SHVec3& end + ) noexcept; + + rp3d::decimal notifyRaycastHit(const rp3d::RaycastInfo& raycastInfo) override; + + private: + /*---------------------------------------------------------------------------------*/ + /* Data Members */ + /*---------------------------------------------------------------------------------*/ + + rp3d::PhysicsWorld* world; + SHPhysicsObjectManager* objectManager; // For + SHPhysicsRaycastResult temp; // Holds the temporary result after casting into the world + RaycastPairs raycasts; // Used for debug drawing + + /*---------------------------------------------------------------------------------*/ + /* Function Members */ + /*---------------------------------------------------------------------------------*/ + + SHPhysicsObject* validateColliderRaycast (EntityID eid) noexcept; + static int findColliderIndex (const rp3d::CollisionBody* rp3dBody, rp3d::Entity rp3dColliderEID) noexcept; + }; + + +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/Components/SHColliderComponent.cpp b/SHADE_Engine/src/Physics/Interface/SHColliderComponent.cpp similarity index 82% rename from SHADE_Engine/src/Physics/Components/SHColliderComponent.cpp rename to SHADE_Engine/src/Physics/Interface/SHColliderComponent.cpp index 93126fc5..135e7e42 100644 --- a/SHADE_Engine/src/Physics/Components/SHColliderComponent.cpp +++ b/SHADE_Engine/src/Physics/Interface/SHColliderComponent.cpp @@ -16,7 +16,7 @@ // Project Headers #include "ECS_Base/Managers/SHSystemManager.h" #include "Math/SHMathHelpers.h" -#include "Physics/SHPhysicsSystem.h" +#include "Physics/System/SHPhysicsSystem.h" namespace SHADE { @@ -72,7 +72,22 @@ namespace SHADE void SHColliderComponent::OnCreate() { - system = SHSystemManager::GetSystem(); + auto* physicsSystem = SHSystemManager::GetSystem(); + if (!physicsSystem) + { + SHLOG_ERROR("Physics System does not exist to link with Physics Components!") + return; + } + + system = physicsSystem; + + // Sync with transform if one already exists + if (auto* transformComponent = SHComponentManager::GetComponent_s(GetEID()); transformComponent) + { + position = transformComponent->GetWorldPosition(); + orientation = transformComponent->GetWorldOrientation(); + scale = transformComponent->GetWorldScale(); + } } void SHColliderComponent::OnDestroy() @@ -88,7 +103,7 @@ namespace SHADE { case SHCollisionShape::Type::BOX: { - auto* box = reinterpret_cast(collisionShape.GetShape()); + auto* box = reinterpret_cast(collisionShape.shape); const SHVec3& RELATIVE_EXTENTS = box->GetRelativeExtents(); // Recompute world extents based on new scale and fixed relative extents @@ -99,7 +114,7 @@ namespace SHADE } case SHCollisionShape::Type::SPHERE: { - auto* sphere = reinterpret_cast(collisionShape.GetShape()); + auto* sphere = reinterpret_cast(collisionShape.shape); const float RELATIVE_RADIUS = sphere->GetRelativeRadius(); // Recompute world radius based on new scale and fixed radius @@ -132,9 +147,10 @@ namespace SHADE collider.SetBoundingBox(halfExtents); // Notify Physics System - system->AddCollisionShape(GetEID(), &collider); + const int NEW_SHAPE_INDEX = static_cast(collisionShapes.size()) - 1; - return static_cast(collisionShapes.size()) - 1; + system->AddCollisionShape(GetEID(), NEW_SHAPE_INDEX); + return NEW_SHAPE_INDEX; } int SHColliderComponent::AddBoundingSphere(float radius, const SHVec3& posOffset) noexcept @@ -154,9 +170,10 @@ namespace SHADE collider.SetBoundingSphere(radius); // Notify Physics System - system->AddCollisionShape(GetEID(), &collider); + const int NEW_SHAPE_INDEX = static_cast(collisionShapes.size()) - 1; - return static_cast(collisionShapes.size()) - 1; + system->AddCollisionShape(GetEID(), NEW_SHAPE_INDEX); + return NEW_SHAPE_INDEX; } void SHColliderComponent::RemoveCollider(int index) diff --git a/SHADE_Engine/src/Physics/Components/SHColliderComponent.h b/SHADE_Engine/src/Physics/Interface/SHColliderComponent.h similarity index 97% rename from SHADE_Engine/src/Physics/Components/SHColliderComponent.h rename to SHADE_Engine/src/Physics/Interface/SHColliderComponent.h index 5f9b7a1b..0781f3cf 100644 --- a/SHADE_Engine/src/Physics/Components/SHColliderComponent.h +++ b/SHADE_Engine/src/Physics/Interface/SHColliderComponent.h @@ -14,9 +14,9 @@ // Project Headers #include "ECS_Base/Components/SHComponent.h" -#include "Physics/SHCollisionShape.h" -#include "Math/Geometry/SHBoundingBox.h" -#include "Math/Geometry/SHBoundingSphere.h" +#include "Math/Geometry/SHBox.h" +#include "Math/Geometry/SHSphere.h" +#include "SHCollisionShape.h" //namespace SHADE //{ diff --git a/SHADE_Engine/src/Physics/SHCollisionShape.cpp b/SHADE_Engine/src/Physics/Interface/SHCollisionShape.cpp similarity index 65% rename from SHADE_Engine/src/Physics/SHCollisionShape.cpp rename to SHADE_Engine/src/Physics/Interface/SHCollisionShape.cpp index c8f8020c..f597077f 100644 --- a/SHADE_Engine/src/Physics/SHCollisionShape.cpp +++ b/SHADE_Engine/src/Physics/Interface/SHCollisionShape.cpp @@ -13,11 +13,12 @@ // Primary Header #include "SHCollisionShape.h" // Project Headers -#include "Math/Geometry/SHBoundingBox.h" -#include "Math/Geometry/SHBoundingSphere.h" +#include "Math/Geometry/SHBox.h" +#include "Math/Geometry/SHSphere.h" #include "Math/SHMathHelpers.h" -#include "Physics/Components/SHColliderComponent.h" +#include "Physics/Collision/SHCollisionTagMatrix.h" #include "Reflection/SHReflectionMetadata.h" +#include "SHColliderComponent.h" namespace SHADE { @@ -26,23 +27,24 @@ namespace SHADE /*-----------------------------------------------------------------------------------*/ SHCollisionShape::SHCollisionShape(EntityID eid, Type colliderType, const SHPhysicsMaterial& physicsMaterial) - : type { colliderType } - , entityID { eid } - , isTrigger { false } - , dirty { true } - , shape { nullptr } - , material { physicsMaterial } + : type { colliderType } + , entityID { eid } + , isTrigger { false } + , dirty { true } + , shape { nullptr } + , material { physicsMaterial } + , collisionTag { SHCollisionTagMatrix::GetTag(0) } { switch (type) { case Type::BOX: { - shape = new SHBoundingBox{ SHVec3::Zero, SHVec3::One }; + shape = new SHBox{ SHVec3::Zero, SHVec3::One }; break; } case Type::SPHERE: { - shape = new SHBoundingSphere{ SHVec3::Zero, 0.5f }; + shape = new SHSphere{ SHVec3::Zero, 0.5f }; break; } default: break; @@ -57,6 +59,8 @@ namespace SHADE , shape { nullptr } , material { rhs.material } , positionOffset { rhs.positionOffset } + , rotationOffset { rhs.rotationOffset } + , collisionTag { rhs.collisionTag } { CopyShape(rhs.shape); } @@ -69,6 +73,8 @@ namespace SHADE , shape { nullptr } , material { rhs.material } , positionOffset { rhs.positionOffset } + , rotationOffset { rhs.rotationOffset } + , collisionTag { rhs.collisionTag } { CopyShape(rhs.shape); } @@ -93,6 +99,8 @@ namespace SHADE dirty = true; material = rhs.material; positionOffset = rhs.positionOffset; + rotationOffset = rhs.rotationOffset; + collisionTag = rhs.collisionTag; delete shape; CopyShape(rhs.shape); @@ -108,6 +116,8 @@ namespace SHADE dirty = true; material = rhs.material; positionOffset = rhs.positionOffset; + rotationOffset = rhs.rotationOffset; + collisionTag = rhs.collisionTag; delete shape; CopyShape(rhs.shape); @@ -134,6 +144,11 @@ namespace SHADE return type; } + const SHCollisionTag& SHCollisionShape::GetCollisionTag() const noexcept + { + return *collisionTag; + } + float SHCollisionShape::GetFriction() const noexcept { return material.GetFriction(); @@ -164,9 +179,8 @@ namespace SHADE return rotationOffset; } - SHShape* SHCollisionShape::GetShape() noexcept + const SHShape* SHCollisionShape::GetShape() const noexcept { - dirty = true; return shape; } @@ -178,30 +192,48 @@ namespace SHADE { dirty = true; - const auto* colliderComponent = SHComponentManager::GetComponent(entityID); + const auto* COLLIDER = SHComponentManager::GetComponent(entityID); + auto* box = reinterpret_cast(shape); + + SHVec3 correctedHalfExtents = halfExtents; + + // Get current relative halfExtents for error checking. 0 is ignored + const SHVec3& CURRENT_RELATIVE_EXTENTS = box->GetRelativeExtents(); + for (size_t i = 0; i < SHVec3::SIZE; ++i) + { + if (SHMath::CompareFloat(halfExtents[i], 0.0f)) + correctedHalfExtents[i] = CURRENT_RELATIVE_EXTENTS[i]; + } + // Set the half extents relative to world scale - const SHVec3 WORLD_EXTENTS = halfExtents * colliderComponent->GetScale() * 0.5f; + const SHVec3 WORLD_EXTENTS = correctedHalfExtents * COLLIDER->GetScale() * 0.5f; if (type != Type::BOX) { type = Type::BOX; delete shape; - shape = new SHBoundingBox{ positionOffset, WORLD_EXTENTS }; + shape = new SHBox{ positionOffset, WORLD_EXTENTS }; } - auto* box = reinterpret_cast(shape); box->SetWorldExtents(WORLD_EXTENTS); - box->SetRelativeExtents(halfExtents); + box->SetRelativeExtents(correctedHalfExtents); } void SHCollisionShape::SetBoundingSphere(float radius) { dirty = true; - const auto* colliderComponent = SHComponentManager::GetComponent(entityID); + auto* sphere = reinterpret_cast(shape); + const auto* COLLIDER = SHComponentManager::GetComponent(entityID); + + // Get current relative halfExtents for error checking. 0 is ignored + const float CURRENT_RELATIVE_RADIUS = sphere->GetRelativeRadius(); + if (SHMath::CompareFloat(radius, 0.0f)) + radius = CURRENT_RELATIVE_RADIUS; + // Set the radius relative to world scale - const SHVec3 WORLD_SCALE = colliderComponent->GetScale(); + const SHVec3 WORLD_SCALE = COLLIDER->GetScale(); const float MAX_SCALE = SHMath::Max({ WORLD_SCALE.x, WORLD_SCALE.y, WORLD_SCALE.z }); const float WORLD_RADIUS = radius * MAX_SCALE * 0.5f; @@ -210,11 +242,11 @@ namespace SHADE type = Type::SPHERE; delete shape; - shape = new SHBoundingSphere{ positionOffset, WORLD_RADIUS }; + shape = new SHSphere{ positionOffset, WORLD_RADIUS }; } - auto* sphere = reinterpret_cast(shape); sphere->SetWorldRadius(WORLD_RADIUS); + sphere->SetRelativeRadius(radius); } void SHCollisionShape::SetIsTrigger(bool trigger) noexcept @@ -223,6 +255,12 @@ namespace SHADE isTrigger = trigger; } + void SHCollisionShape::SetCollisionTag(SHCollisionTag* newCollisionTag) noexcept + { + dirty = true; + collisionTag = newCollisionTag; + } + void SHCollisionShape::SetFriction(float friction) noexcept { dirty = true; @@ -256,12 +294,12 @@ namespace SHADE { case Type::BOX: { - reinterpret_cast(shape)->SetCenter(positionOffset); + reinterpret_cast(shape)->SetCenter(positionOffset); break; } case Type::SPHERE: { - reinterpret_cast(shape)->SetCenter(positionOffset); + reinterpret_cast(shape)->SetCenter(positionOffset); break; } default: break; @@ -284,16 +322,22 @@ namespace SHADE { case Type::BOX: { - const auto* RHS_BOX = reinterpret_cast(rhs); + const auto* RHS_BOX = reinterpret_cast(rhs); + + shape = new SHBox{ positionOffset, RHS_BOX->GetWorldExtents() }; + auto* lhsBox = reinterpret_cast(shape); + lhsBox->SetRelativeExtents(RHS_BOX->GetRelativeExtents()); - shape = new SHBoundingBox{ positionOffset, RHS_BOX->GetWorldExtents() }; break; } case Type::SPHERE: { - const auto* RHS_SPHERE = reinterpret_cast(rhs); + const auto* RHS_SPHERE = reinterpret_cast(rhs); + + shape = new SHSphere{ positionOffset, RHS_SPHERE->GetWorldRadius() }; + auto* lhsSphere = reinterpret_cast(shape); + lhsSphere->SetRelativeRadius(RHS_SPHERE->GetRelativeRadius()); - shape = new SHBoundingSphere{ positionOffset, RHS_SPHERE->GetWorldRadius() }; break; } default: break; @@ -315,6 +359,10 @@ RTTR_REGISTRATION ); registration::class_("Collider") - .property("Position Offset", &SHCollisionShape::GetPositionOffset, &SHCollisionShape::SetPositionOffset) - .property("Rotation Offset", &SHCollisionShape::GetRotationOffset, &SHCollisionShape::SetRotationOffset) (metadata(META::angleInRad, true)); + .property("IsTrigger" , &SHCollisionShape::IsTrigger , &SHCollisionShape::SetIsTrigger ) + .property("Friction" , &SHCollisionShape::GetFriction , &SHCollisionShape::SetFriction ) + .property("Bounciness" , &SHCollisionShape::GetBounciness , &SHCollisionShape::SetBounciness ) + .property("Density" , &SHCollisionShape::GetDensity , &SHCollisionShape::SetDensity ) + .property("Position Offset" , &SHCollisionShape::GetPositionOffset, &SHCollisionShape::SetPositionOffset) + .property("Rotation Offset" , &SHCollisionShape::GetRotationOffset, &SHCollisionShape::SetRotationOffset) (metadata(META::angleInRad, true)); } \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/SHCollisionShape.h b/SHADE_Engine/src/Physics/Interface/SHCollisionShape.h similarity index 94% rename from SHADE_Engine/src/Physics/SHCollisionShape.h rename to SHADE_Engine/src/Physics/Interface/SHCollisionShape.h index 9c8c1d41..597814a6 100644 --- a/SHADE_Engine/src/Physics/SHCollisionShape.h +++ b/SHADE_Engine/src/Physics/Interface/SHCollisionShape.h @@ -17,6 +17,7 @@ #include "Math/Geometry/SHShape.h" #include "Math/SHQuaternion.h" #include "SHPhysicsMaterial.h" +#include "Physics/Collision/SHCollisionTags.h" namespace SHADE { @@ -74,6 +75,8 @@ namespace SHADE [[nodiscard]] Type GetType () const noexcept; + [[nodiscard]] const SHCollisionTag& GetCollisionTag () const noexcept; + [[nodiscard]] float GetFriction () const noexcept; [[nodiscard]] float GetBounciness () const noexcept; [[nodiscard]] float GetDensity () const noexcept; @@ -82,7 +85,7 @@ namespace SHADE [[nodiscard]] const SHVec3& GetPositionOffset () const noexcept; [[nodiscard]] const SHVec3& GetRotationOffset () const noexcept; - [[nodiscard]] SHShape* GetShape () noexcept; + [[nodiscard]] const SHShape* GetShape () const noexcept; /*---------------------------------------------------------------------------------*/ /* Setter Functions */ @@ -92,6 +95,7 @@ namespace SHADE void SetBoundingSphere (float radius); void SetIsTrigger (bool isTrigger) noexcept; + void SetCollisionTag (SHCollisionTag* newCollisionTag) noexcept; void SetFriction (float friction) noexcept; void SetBounciness (float bounciness) noexcept; void SetDensity (float density) noexcept; @@ -109,11 +113,15 @@ namespace SHADE EntityID entityID; // The entity this collider belongs to bool isTrigger; bool dirty; + SHShape* shape; SHPhysicsMaterial material; + SHVec3 positionOffset; SHVec3 rotationOffset; + SHCollisionTag* collisionTag; + /*---------------------------------------------------------------------------------*/ /* Function Members */ /*---------------------------------------------------------------------------------*/ diff --git a/SHADE_Engine/src/Physics/SHPhysicsMaterial.cpp b/SHADE_Engine/src/Physics/Interface/SHPhysicsMaterial.cpp similarity index 97% rename from SHADE_Engine/src/Physics/SHPhysicsMaterial.cpp rename to SHADE_Engine/src/Physics/Interface/SHPhysicsMaterial.cpp index 677e448f..95141501 100644 --- a/SHADE_Engine/src/Physics/SHPhysicsMaterial.cpp +++ b/SHADE_Engine/src/Physics/Interface/SHPhysicsMaterial.cpp @@ -44,7 +44,7 @@ namespace SHADE && SHMath::CompareFloat(density, rhs.density); } - bool SHPhysicsMaterial::operator!=(const SHPhysicsMaterial& rhs) const noexcept + bool SHPhysicsMaterial::operator!=(const SHPhysicsMaterial& rhs) const noexcept { return !SHMath::CompareFloat(friction, rhs.friction) || !SHMath::CompareFloat(bounciness, rhs.bounciness) diff --git a/SHADE_Engine/src/Physics/SHPhysicsMaterial.h b/SHADE_Engine/src/Physics/Interface/SHPhysicsMaterial.h similarity index 100% rename from SHADE_Engine/src/Physics/SHPhysicsMaterial.h rename to SHADE_Engine/src/Physics/Interface/SHPhysicsMaterial.h diff --git a/SHADE_Engine/src/Physics/Components/SHRigidBodyComponent.cpp b/SHADE_Engine/src/Physics/Interface/SHRigidBodyComponent.cpp similarity index 53% rename from SHADE_Engine/src/Physics/Components/SHRigidBodyComponent.cpp rename to SHADE_Engine/src/Physics/Interface/SHRigidBodyComponent.cpp index 369d26a5..4fddc892 100644 --- a/SHADE_Engine/src/Physics/Components/SHRigidBodyComponent.cpp +++ b/SHADE_Engine/src/Physics/Interface/SHRigidBodyComponent.cpp @@ -19,7 +19,7 @@ // Project Headers #include "ECS_Base/Managers/SHSystemManager.h" #include "Math/SHMathHelpers.h" -#include "Physics/SHPhysicsSystem.h" +#include "Physics/System/SHPhysicsSystem.h" namespace SHADE { @@ -29,9 +29,18 @@ namespace SHADE SHRigidBodyComponent::SHRigidBodyComponent() noexcept : type { Type::DYNAMIC } - , interpolate { true } - , rp3dBody { nullptr } - {} + , flags { 0 } + , dirtyFlags { std::numeric_limits::max() } + , mass { 1.0f } + , drag { 0.01f } + , angularDrag { 0.01f } + , system { nullptr } + { + // Initialise default flags + flags |= 1U << 0; // Gravity set to true + flags |= 1U << 1; // Sleeping allowed + flags |= 1U << 8; // Interpolate by default + } /*-----------------------------------------------------------------------------------*/ /* Getter Function Definitions */ @@ -39,29 +48,28 @@ namespace SHADE bool SHRigidBodyComponent::IsGravityEnabled() const noexcept { - if (rp3dBody == nullptr) - { - SHLOG_ERROR("Missing rp3dBody from Entity {}", GetEID()) - return false; - } - - return rp3dBody->isGravityEnabled(); + static constexpr int FLAG_POS = 0; + return flags & (1U << FLAG_POS); } bool SHRigidBodyComponent::IsAllowedToSleep() const noexcept { - if (rp3dBody == nullptr) - { - SHLOG_ERROR("Missing rp3dBody from Entity {}", GetEID()) - return false; - } - - return rp3dBody->isAllowedToSleep(); + static constexpr int FLAG_POS = 1; + return flags & (1U << FLAG_POS); } bool SHRigidBodyComponent::IsInterpolating() const noexcept { - return interpolate; + static constexpr int FLAG_POS = 8; + return flags & (1U << FLAG_POS); + } + + bool SHRigidBodyComponent::GetIsSleeping() const noexcept + { + if (auto* physicsObject = system->GetPhysicsObject(GetEID()); physicsObject) + return physicsObject->GetRigidBody()->isSleeping(); + + return false; } SHRigidBodyComponent::Type SHRigidBodyComponent::GetType() const noexcept @@ -69,153 +77,93 @@ namespace SHADE return type; } - float SHRigidBodyComponent::GetMass() const noexcept - { - if (rp3dBody == nullptr) - { - SHLOG_ERROR("Missing rp3dBody from Entity {}", GetEID()) - return 0.0f; - } - - return rp3dBody->getMass(); - } - - float SHRigidBodyComponent::GetDrag() const noexcept - { - if (rp3dBody == nullptr) - { - SHLOG_ERROR("Missing rp3dBody from Entity {}", GetEID()) - return 0.0f; - } - - return rp3dBody->getLinearDamping(); - } - - float SHRigidBodyComponent::GetAngularDrag() const noexcept - { - if (rp3dBody == nullptr) - { - SHLOG_ERROR("Missing rp3dBody from Entity {}", GetEID()) - return 0.0f; - } - - return rp3dBody->getAngularDamping(); - } - bool SHRigidBodyComponent::GetFreezePositionX() const noexcept { - if (rp3dBody == nullptr) - { - SHLOG_ERROR("Missing rp3dBody from Entity {}", GetEID()) - return false; - } - - const auto& LINEAR_CONSTRAINTS = rp3dBody->getLinearLockAxisFactor(); - return SHMath::CompareFloat(LINEAR_CONSTRAINTS.x, 0.0f); + static constexpr int FLAG_POS = 2; + return flags & (1U << FLAG_POS); } bool SHRigidBodyComponent::GetFreezePositionY() const noexcept { - if (rp3dBody == nullptr) - { - SHLOG_ERROR("Missing rp3dBody from Entity {}", GetEID()) - return false; - } - - const auto& LINEAR_CONSTRAINTS = rp3dBody->getLinearLockAxisFactor(); - return SHMath::CompareFloat(LINEAR_CONSTRAINTS.y, 0.0f); + static constexpr int FLAG_POS = 3; + return flags & (1U << FLAG_POS); } bool SHRigidBodyComponent::GetFreezePositionZ() const noexcept { - if (rp3dBody == nullptr) - { - SHLOG_ERROR("Missing rp3dBody from Entity {}", GetEID()) - return false; - } - - const auto& LINEAR_CONSTRAINTS = rp3dBody->getLinearLockAxisFactor(); - return SHMath::CompareFloat(LINEAR_CONSTRAINTS.z, 0.0f); + static constexpr int FLAG_POS = 4; + return flags & (1U << FLAG_POS); } bool SHRigidBodyComponent::GetFreezeRotationX() const noexcept { - if (rp3dBody == nullptr) - { - SHLOG_ERROR("Missing rp3dBody from Entity {}", GetEID()) - return false; - } - - const auto& ANGULAR_CONSTRAINTS = rp3dBody->getAngularLockAxisFactor(); - return SHMath::CompareFloat(ANGULAR_CONSTRAINTS.x, 0.0f); + static constexpr int FLAG_POS = 5; + return flags & (1U << FLAG_POS); } bool SHRigidBodyComponent::GetFreezeRotationY() const noexcept { - if (rp3dBody == nullptr) - { - SHLOG_ERROR("Missing rp3dBody from Entity {}", GetEID()) - return false; - } - - const auto& ANGULAR_CONSTRAINTS = rp3dBody->getAngularLockAxisFactor(); - return SHMath::CompareFloat(ANGULAR_CONSTRAINTS.y, 0.0f); + static constexpr int FLAG_POS = 6; + return flags & (1U << FLAG_POS); } bool SHRigidBodyComponent::GetFreezeRotationZ() const noexcept { - if (rp3dBody == nullptr) - { - SHLOG_ERROR("Missing rp3dBody from Entity {}", GetEID()) - return false; - } + static constexpr int FLAG_POS = 7; + return flags & (1U << FLAG_POS); + } - const auto& ANGULAR_CONSTRAINTS = rp3dBody->getAngularLockAxisFactor(); - return SHMath::CompareFloat(ANGULAR_CONSTRAINTS.z, 0.0f); + //bool SHRigidBodyComponent::GetAutoMass() const noexcept + //{ + // static constexpr int FLAG_POS = 9; + // return flags & (1U << FLAG_POS); + //} + + float SHRigidBodyComponent::GetMass() const noexcept + { + return mass; + } + + float SHRigidBodyComponent::GetDrag() const noexcept + { + return drag; + } + + float SHRigidBodyComponent::GetAngularDrag() const noexcept + { + return angularDrag; } SHVec3 SHRigidBodyComponent::GetForce() const noexcept { - if (rp3dBody == nullptr) - { - SHLOG_ERROR("Missing rp3dBody from Entity {}", GetEID()) - return false; - } + if (auto* physicsObject = system->GetPhysicsObject(GetEID()); physicsObject) + return physicsObject->GetRigidBody()->getForce(); - return rp3dBody->getForce(); + return SHVec3::Zero; } SHVec3 SHRigidBodyComponent::GetTorque() const noexcept { - if (rp3dBody == nullptr) - { - SHLOG_ERROR("Missing rp3dBody from Entity {}", GetEID()) - return SHVec3::Zero; - } + if (auto* physicsObject = system->GetPhysicsObject(GetEID()); physicsObject) + return physicsObject->GetRigidBody()->getTorque(); - return rp3dBody->getTorque(); + return SHVec3::Zero; } SHVec3 SHRigidBodyComponent::GetLinearVelocity() const noexcept { - if (rp3dBody == nullptr) - { - SHLOG_ERROR("Missing rp3dBody from Entity {}", GetEID()) - return SHVec3::Zero; - } + if (auto* physicsObject = system->GetPhysicsObject(GetEID()); physicsObject) + return physicsObject->GetRigidBody()->getLinearVelocity(); - return rp3dBody->getLinearVelocity(); + return SHVec3::Zero; } SHVec3 SHRigidBodyComponent::GetAngularVelocity() const noexcept { - if (rp3dBody == nullptr) - { - SHLOG_ERROR("Missing rp3dBody from Entity {}", GetEID()) - return SHVec3::Zero; - } + if (auto* physicsObject = system->GetPhysicsObject(GetEID()); physicsObject) + return physicsObject->GetRigidBody()->getAngularVelocity(); - return rp3dBody->getAngularVelocity(); + return SHVec3::Zero; } const SHVec3& SHRigidBodyComponent::GetPosition() const noexcept @@ -239,18 +187,13 @@ namespace SHADE void SHRigidBodyComponent::SetType(Type newType) noexcept { + static constexpr int FLAG_POS = 8; + if (type == newType) return; type = newType; - - if (rp3dBody == nullptr) - { - SHLOG_ERROR("Missing rp3dBody from Entity {}", GetEID()) - return; - } - - rp3dBody->setType(static_cast(type)); + dirtyFlags |= 1U << FLAG_POS; } void SHRigidBodyComponent::SetGravityEnabled(bool enableGravity) noexcept @@ -263,13 +206,8 @@ namespace SHADE return; } - if (rp3dBody == nullptr) - { - SHLOG_ERROR("Missing rp3dBody from Entity {}", GetEID()) - return; - } - - rp3dBody->enableGravity(enableGravity); + dirtyFlags |= 1U << FLAG_POS; + enableGravity ? flags |= 1U << FLAG_POS : flags &= ~(1U << FLAG_POS); } void SHRigidBodyComponent::SetIsAllowedToSleep(bool isAllowedToSleep) noexcept @@ -282,309 +220,264 @@ namespace SHADE return; } - if (rp3dBody == nullptr) - { - SHLOG_ERROR("Missing rp3dBody from Entity {}", GetEID()) - return; - } - - rp3dBody->setIsAllowedToSleep(isAllowedToSleep); + dirtyFlags |= 1U << FLAG_POS; + isAllowedToSleep ? flags |= 1U << FLAG_POS : flags &= ~(1U << FLAG_POS); } void SHRigidBodyComponent::SetFreezePositionX(bool freezePositionX) noexcept { + static constexpr int FLAG_POS = 2; + if (type == Type::STATIC) { SHLOG_WARNING("Cannot set linear constraints of a static object {}", GetEID()) return; } - if (rp3dBody == nullptr) - { - SHLOG_ERROR("Missing rp3dBody from Entity {}", GetEID()) - return; - } - - auto linearConstraints = rp3dBody->getLinearLockAxisFactor(); - linearConstraints.x = freezePositionX ? 0.0f : 1.0f; - rp3dBody->setLinearLockAxisFactor(linearConstraints); + dirtyFlags |= 1U << FLAG_POS; + freezePositionX ? flags |= 1U << FLAG_POS : flags &= ~(1U << FLAG_POS); } void SHRigidBodyComponent::SetFreezePositionY(bool freezePositionY) noexcept { + static constexpr int FLAG_POS = 3; + if (type == Type::STATIC) { SHLOG_WARNING("Cannot set linear constraints of a static object {}", GetEID()) return; } - if (rp3dBody == nullptr) - { - SHLOG_ERROR("Missing rp3dBody from Entity {}", GetEID()) - return; - } - - auto linearConstraints = rp3dBody->getLinearLockAxisFactor(); - linearConstraints.y = freezePositionY ? 0.0f : 1.0f; - rp3dBody->setLinearLockAxisFactor(linearConstraints); + dirtyFlags |= 1U << FLAG_POS; + freezePositionY ? flags |= 1U << FLAG_POS : flags &= ~(1U << FLAG_POS); } void SHRigidBodyComponent::SetFreezePositionZ(bool freezePositionZ) noexcept { + static constexpr int FLAG_POS = 4; + if (type == Type::STATIC) { SHLOG_WARNING("Cannot set linear constraints of a static object {}", GetEID()) return; } - if (rp3dBody == nullptr) - { - SHLOG_ERROR("Missing rp3dBody from Entity {}", GetEID()) - return; - } - - auto linearConstraints = rp3dBody->getLinearLockAxisFactor(); - linearConstraints.z = freezePositionZ ? 0.0f : 1.0f; - rp3dBody->setLinearLockAxisFactor(linearConstraints); + dirtyFlags |= 1U << FLAG_POS; + freezePositionZ ? flags |= 1U << FLAG_POS : flags &= ~(1U << FLAG_POS); } void SHRigidBodyComponent::SetFreezeRotationX(bool freezeRotationX) noexcept { + static constexpr int FLAG_POS = 5; + if (type == Type::STATIC) { SHLOG_WARNING("Cannot set angular constraints of a static object {}", GetEID()) return; } - if (rp3dBody == nullptr) - { - SHLOG_ERROR("Missing rp3dBody from Entity {}", GetEID()) - return; - } - - auto angularConstraints = rp3dBody->getAngularLockAxisFactor(); - angularConstraints.x = freezeRotationX ? 0.0f : 1.0f; - rp3dBody->setAngularLockAxisFactor(angularConstraints); + dirtyFlags |= 1U << FLAG_POS; + freezeRotationX ? flags |= 1U << FLAG_POS : flags &= ~(1U << FLAG_POS); } void SHRigidBodyComponent::SetFreezeRotationY(bool freezeRotationY) noexcept { + static constexpr int FLAG_POS = 6; + if (type == Type::STATIC) { SHLOG_WARNING("Cannot set angular constraints of a static object {}", GetEID()) return; } - if (rp3dBody == nullptr) - { - SHLOG_ERROR("Missing rp3dBody from Entity {}", GetEID()) - return; - } - - auto angularConstraints = rp3dBody->getAngularLockAxisFactor(); - angularConstraints.y = freezeRotationY ? 0.0f : 1.0f; - rp3dBody->setAngularLockAxisFactor(angularConstraints); + dirtyFlags |= 1U << FLAG_POS; + freezeRotationY ? flags |= 1U << FLAG_POS : flags &= ~(1U << FLAG_POS); } void SHRigidBodyComponent::SetFreezeRotationZ(bool freezeRotationZ) noexcept { + static constexpr int FLAG_POS = 7; + if (type == Type::STATIC) { SHLOG_WARNING("Cannot set angular constraints of a static object {}", GetEID()) return; } - if (rp3dBody == nullptr) - { - SHLOG_ERROR("Missing rp3dBody from Entity {}", GetEID()) - return; - } - - auto angularConstraints = rp3dBody->getAngularLockAxisFactor(); - angularConstraints.z = freezeRotationZ ? 0.0f : 1.0f; - rp3dBody->setAngularLockAxisFactor(angularConstraints); + dirtyFlags |= 1U << FLAG_POS; + freezeRotationZ ? flags |= 1U << FLAG_POS : flags &= ~(1U << FLAG_POS); } void SHRigidBodyComponent::SetInterpolate(bool allowInterpolation) noexcept { - interpolate = allowInterpolation; + static constexpr int FLAG_POS = 8; + allowInterpolation ? flags |= 1U << FLAG_POS : flags &= ~(1U << FLAG_POS); } - void SHRigidBodyComponent::SetMass(float newMass) noexcept - { - if (type != Type::DYNAMIC) - { - SHLOG_WARNING("Cannot set mass of a non-dynamic object {}", GetEID()) - return; - } + //void SHRigidBodyComponent::SetAutoMass(bool autoMass) noexcept + //{ + // static constexpr int FLAG_POS = 9; + // autoMass ? flags |= 1U << FLAG_POS : flags &= ~(1U << FLAG_POS); - if (rp3dBody == nullptr) - { - SHLOG_ERROR("Missing rp3dBody from Entity {}", GetEID()) - return; - } + // dirtyFlags |= 1U << FLAG_POS; + //} - rp3dBody->setMass(newMass); - } + //void SHRigidBodyComponent::SetMass(float newMass) noexcept + //{ + // static constexpr int FLAG_POS = 9; + + // if (newMass < 0.0f) + // return; + + // if (type != Type::DYNAMIC) + // { + // SHLOG_WARNING("Cannot set mass of a non-dynamic object {}", GetEID()) + // return; + // } + + // dirtyFlags |= 1U << FLAG_POS; + // mass = newMass; + + // // Turn off automass + // flags &= ~(1U << FLAG_POS); + //} void SHRigidBodyComponent::SetDrag(float newDrag) noexcept { + static constexpr int FLAG_POS = 10; + if (type != Type::DYNAMIC) { SHLOG_WARNING("Cannot set drag of a non-dynamic object {}", GetEID()) return; } - if (rp3dBody == nullptr) - { - SHLOG_ERROR("Missing rp3dBody from Entity {}", GetEID()) - return; - } - - rp3dBody->setLinearDamping(newDrag); + dirtyFlags |= 1U << FLAG_POS; + drag = newDrag; } void SHRigidBodyComponent::SetAngularDrag(float newAngularDrag) noexcept { + static constexpr int FLAG_POS = 11; + if (type != Type::DYNAMIC) { SHLOG_WARNING("Cannot set angular drag of a non-dynamic object {}", GetEID()) return; } - if (rp3dBody == nullptr) - { - SHLOG_ERROR("Missing rp3dBody from Entity {}", GetEID()) - return; - } - - rp3dBody->setLinearDamping(newAngularDrag); + dirtyFlags |= 1U << FLAG_POS; + angularDrag = newAngularDrag; } void SHRigidBodyComponent::SetLinearVelocity(const SHVec3& newLinearVelocity) noexcept { + if (type == Type::STATIC) { SHLOG_WARNING("Cannot set linear velocity of a static object {}", GetEID()) return; } - if (rp3dBody == nullptr) - { - SHLOG_ERROR("Missing rp3dBody from Entity {}", GetEID()) - return; - } - - rp3dBody->setLinearVelocity(newLinearVelocity); + auto* physicsObject = system->GetPhysicsObject(GetEID()); + physicsObject->GetRigidBody()->setLinearVelocity(newLinearVelocity); } void SHRigidBodyComponent::SetAngularVelocity(const SHVec3& newAngularVelocity) noexcept { + static constexpr int FLAG_POS = 13; + if (type == Type::STATIC) { SHLOG_WARNING("Cannot set angular velocity of a static object {}", GetEID()) return; } - if (rp3dBody == nullptr) - { - SHLOG_ERROR("Missing rp3dBody from Entity {}", GetEID()) - return; - } - - rp3dBody->setAngularVelocity(newAngularVelocity); + auto* physicsObject = system->GetPhysicsObject(GetEID()); + physicsObject->GetRigidBody()->setAngularVelocity(newAngularVelocity); } /*-----------------------------------------------------------------------------------*/ /* Public Function Member Definitions */ /*-----------------------------------------------------------------------------------*/ - void SHRigidBodyComponent::AddForce(const SHVec3& force) const noexcept + void SHRigidBodyComponent::OnCreate() { - if (rp3dBody == nullptr) + auto* physicsSystem = SHSystemManager::GetSystem(); + if (!physicsSystem) { - SHLOG_ERROR("Missing rp3dBody from Entity {}", GetEID()) + SHLOG_ERROR("Physics System does not exist to link with Physics Components!") return; } - rp3dBody->applyWorldForceAtCenterOfMass(force); + system = physicsSystem; + + // Sync with transform if one already exists + if (auto* transformComponent = SHComponentManager::GetComponent_s(GetEID()); transformComponent) + { + position = transformComponent->GetWorldPosition(); + orientation = transformComponent->GetWorldOrientation(); + } + } + + void SHRigidBodyComponent::AddForce(const SHVec3& force) const noexcept + { + if (auto* physicsObject = system->GetPhysicsObject(GetEID()); physicsObject) + physicsObject->GetRigidBody()->applyWorldForceAtCenterOfMass(force); } void SHRigidBodyComponent::AddForceAtLocalPos(const SHVec3& force, const SHVec3& localPos) const noexcept { - if (rp3dBody == nullptr) - { - SHLOG_ERROR("Missing rp3dBody from Entity {}", GetEID()) - return; - } - - rp3dBody->applyWorldForceAtLocalPosition(force, localPos); + if (auto* physicsObject = system->GetPhysicsObject(GetEID()); physicsObject) + physicsObject->GetRigidBody()->applyWorldForceAtLocalPosition(force, localPos); } void SHRigidBodyComponent::AddForceAtWorldPos(const SHVec3& force, const SHVec3& worldPos) const noexcept { - if (rp3dBody == nullptr) - { - SHLOG_ERROR("Missing rp3dBody from Entity {}", GetEID()) - return; - } - - rp3dBody->applyWorldForceAtWorldPosition(force, worldPos); + if (auto* physicsObject = system->GetPhysicsObject(GetEID()); physicsObject) + physicsObject->GetRigidBody()->applyWorldForceAtWorldPosition(force, worldPos); } void SHRigidBodyComponent::AddRelativeForce(const SHVec3& relativeForce) const noexcept { - if (rp3dBody == nullptr) - { - SHLOG_ERROR("Missing rp3dBody from Entity {}", GetEID()) - return; - } - - rp3dBody->applyLocalForceAtCenterOfMass(relativeForce); + if (auto* physicsObject = system->GetPhysicsObject(GetEID()); physicsObject) + physicsObject->GetRigidBody()->applyLocalForceAtCenterOfMass(relativeForce); } void SHRigidBodyComponent::AddRelativeForceAtLocalPos(const SHVec3& relativeForce, const SHVec3& localPos) const noexcept { - if (rp3dBody == nullptr) - { - SHLOG_ERROR("Missing rp3dBody from Entity {}", GetEID()) - return; - } - - rp3dBody->applyLocalForceAtLocalPosition(relativeForce, localPos); + if (auto* physicsObject = system->GetPhysicsObject(GetEID()); physicsObject) + physicsObject->GetRigidBody()->applyLocalForceAtLocalPosition(relativeForce, localPos); } void SHRigidBodyComponent::AddRelativeForceAtWorldPos(const SHVec3& relativeForce, const SHVec3& worldPos) const noexcept { - if (rp3dBody == nullptr) - { - SHLOG_ERROR("Missing rp3dBody from Entity {}", GetEID()) - return; - } - - rp3dBody->applyLocalForceAtWorldPosition(relativeForce, worldPos); + if (auto* physicsObject = system->GetPhysicsObject(GetEID()); physicsObject) + physicsObject->GetRigidBody()->applyLocalForceAtWorldPosition(relativeForce, worldPos); } void SHRigidBodyComponent::AddTorque(const SHVec3& torque) const noexcept { - if (rp3dBody == nullptr) - { - SHLOG_ERROR("Missing rp3dBody from Entity {}", GetEID()) - return; - } - - rp3dBody->applyWorldTorque(torque); + if (auto* physicsObject = system->GetPhysicsObject(GetEID()); physicsObject) + physicsObject->GetRigidBody()->applyWorldTorque(torque); } void SHRigidBodyComponent::AddRelativeTorque(const SHVec3& relativeTorque) const noexcept { - if (rp3dBody == nullptr) - { - SHLOG_ERROR("Missing rp3dBody from Entity {}", GetEID()) - return; - } + if (auto* physicsObject = system->GetPhysicsObject(GetEID()); physicsObject) + physicsObject->GetRigidBody()->applyLocalTorque(relativeTorque); + } - rp3dBody->applyLocalTorque(relativeTorque); + void SHRigidBodyComponent::ClearForces() const noexcept + { + if (auto* physicsObject = system->GetPhysicsObject(GetEID()); physicsObject) + physicsObject->GetRigidBody()->resetForce(); + } + + void SHRigidBodyComponent::ClearTorque() const noexcept + { + if (auto* physicsObject = system->GetPhysicsObject(GetEID()); physicsObject) + physicsObject->GetRigidBody()->resetTorque(); } } // namespace SHADE @@ -603,11 +496,13 @@ RTTR_REGISTRATION registration::class_("RigidBody Component") .property("Type" , &SHRigidBodyComponent::GetType , &SHRigidBodyComponent::SetType ) - .property("Mass" , &SHRigidBodyComponent::GetMass , &SHRigidBodyComponent::SetMass ) + //.property("Mass" , &SHRigidBodyComponent::GetMass , &SHRigidBodyComponent::SetMass ) .property("Drag" , &SHRigidBodyComponent::GetDrag , &SHRigidBodyComponent::SetDrag ) .property("Angular Drag" , &SHRigidBodyComponent::GetAngularDrag , &SHRigidBodyComponent::SetAngularDrag ) .property("Use Gravity" , &SHRigidBodyComponent::IsGravityEnabled , &SHRigidBodyComponent::SetGravityEnabled ) .property("Interpolate" , &SHRigidBodyComponent::IsInterpolating , &SHRigidBodyComponent::SetInterpolate ) + .property("Sleeping Enabled" , &SHRigidBodyComponent::IsAllowedToSleep , &SHRigidBodyComponent::SetIsAllowedToSleep) + //.property("Auto Mass" , &SHRigidBodyComponent::GetAutoMass , &SHRigidBodyComponent::SetAutoMass ) .property("Freeze Position X" , &SHRigidBodyComponent::GetFreezePositionX , &SHRigidBodyComponent::SetFreezePositionX ) .property("Freeze Position Y" , &SHRigidBodyComponent::GetFreezePositionY , &SHRigidBodyComponent::SetFreezePositionY ) .property("Freeze Position Z" , &SHRigidBodyComponent::GetFreezePositionZ , &SHRigidBodyComponent::SetFreezePositionZ ) diff --git a/SHADE_Engine/src/Physics/Components/SHRigidBodyComponent.h b/SHADE_Engine/src/Physics/Interface/SHRigidBodyComponent.h similarity index 75% rename from SHADE_Engine/src/Physics/Components/SHRigidBodyComponent.h rename to SHADE_Engine/src/Physics/Interface/SHRigidBodyComponent.h index ba7d2dd9..532b3312 100644 --- a/SHADE_Engine/src/Physics/Components/SHRigidBodyComponent.h +++ b/SHADE_Engine/src/Physics/Interface/SHRigidBodyComponent.h @@ -17,16 +17,6 @@ #include "Math/Vector/SHVec3.h" #include "Math/SHQuaternion.h" -//namespace SHADE -//{ -// class SHPhysicsSystem; -//} - -namespace reactphysics3d -{ - class RigidBody; -} - namespace SHADE { /*-----------------------------------------------------------------------------------*/ @@ -81,19 +71,23 @@ namespace SHADE [[nodiscard]] bool IsAllowedToSleep () const noexcept; [[nodiscard]] bool IsInterpolating () const noexcept; + [[nodiscard]] bool GetIsSleeping () const noexcept; + [[nodiscard]] Type GetType () const noexcept; - [[nodiscard]] float GetMass () const noexcept; - [[nodiscard]] float GetDrag () const noexcept; - [[nodiscard]] float GetAngularDrag () const noexcept; - + [[nodiscard]] bool GetFreezePositionX () const noexcept; [[nodiscard]] bool GetFreezePositionY () const noexcept; [[nodiscard]] bool GetFreezePositionZ () const noexcept; - [[nodiscard]] bool GetFreezeRotationX () const noexcept; [[nodiscard]] bool GetFreezeRotationY () const noexcept; [[nodiscard]] bool GetFreezeRotationZ () const noexcept; + //[[nodiscard]] bool GetAutoMass () const noexcept; + + [[nodiscard]] float GetMass () const noexcept; + [[nodiscard]] float GetDrag () const noexcept; + [[nodiscard]] float GetAngularDrag () const noexcept; + [[nodiscard]] SHVec3 GetForce () const noexcept; [[nodiscard]] SHVec3 GetTorque () const noexcept; [[nodiscard]] SHVec3 GetLinearVelocity () const noexcept; @@ -107,55 +101,68 @@ namespace SHADE /* Setter Functions */ /*---------------------------------------------------------------------------------*/ - void SetType (Type newType) noexcept; + void SetType (Type newType) noexcept; - void SetGravityEnabled (bool enableGravity) noexcept; - void SetIsAllowedToSleep(bool isAllowedToSleep) noexcept; - void SetFreezePositionX (bool freezePositionX) noexcept; - void SetFreezePositionY (bool freezePositionY) noexcept; - void SetFreezePositionZ (bool freezePositionZ) noexcept; - void SetFreezeRotationX (bool freezeRotationX) noexcept; - void SetFreezeRotationY (bool freezeRotationY) noexcept; - void SetFreezeRotationZ (bool freezeRotationZ) noexcept; - void SetInterpolate (bool allowInterpolation) noexcept; + void SetGravityEnabled (bool enableGravity) noexcept; + void SetIsAllowedToSleep (bool isAllowedToSleep) noexcept; + void SetFreezePositionX (bool freezePositionX) noexcept; + void SetFreezePositionY (bool freezePositionY) noexcept; + void SetFreezePositionZ (bool freezePositionZ) noexcept; + void SetFreezeRotationX (bool freezeRotationX) noexcept; + void SetFreezeRotationY (bool freezeRotationY) noexcept; + void SetFreezeRotationZ (bool freezeRotationZ) noexcept; + void SetInterpolate (bool allowInterpolation) noexcept; + //void SetAutoMass (bool autoMass) noexcept; - void SetMass (float newMass) noexcept; - void SetDrag (float newDrag) noexcept; - void SetAngularDrag (float newAngularDrag) noexcept; + //void SetMass (float newMass) noexcept; + void SetDrag (float newDrag) noexcept; + void SetAngularDrag (float newAngularDrag) noexcept; - void SetLinearVelocity (const SHVec3& newLinearVelocity) noexcept; - void SetAngularVelocity (const SHVec3& newAngularVelocity) noexcept; + void SetLinearVelocity (const SHVec3& newLinearVelocity) noexcept; + void SetAngularVelocity (const SHVec3& newAngularVelocity) noexcept; /*---------------------------------------------------------------------------------*/ /* Function Members */ /*---------------------------------------------------------------------------------*/ + void OnCreate () override; + void AddForce (const SHVec3& force) const noexcept; void AddForceAtLocalPos (const SHVec3& force, const SHVec3& localPos) const noexcept; void AddForceAtWorldPos (const SHVec3& force, const SHVec3& worldPos) const noexcept; - void AddRelativeForce (const SHVec3& relativeForce) const noexcept; void AddRelativeForceAtLocalPos (const SHVec3& relativeForce, const SHVec3& localPos) const noexcept; void AddRelativeForceAtWorldPos (const SHVec3& relativeForce, const SHVec3& worldPos) const noexcept; - void AddTorque (const SHVec3& torque) const noexcept; void AddRelativeTorque (const SHVec3& relativeTorque) const noexcept; + void ClearForces () const noexcept; + void ClearTorque () const noexcept; + private: /*---------------------------------------------------------------------------------*/ /* Data Members */ /*---------------------------------------------------------------------------------*/ static constexpr size_t NUM_FLAGS = 8; - static constexpr size_t NUM_DIRTY_FLAGS = 16; + static constexpr size_t NUM_DIRTY_FLAGS = 12; - Type type; - bool interpolate; + Type type; - reactphysics3d::RigidBody* rp3dBody; + uint16_t flags; // 0 0 0 0 0 0 am ip aZ aY aX lZ lY lX slp g + uint16_t dirtyFlags; // 0 0 0 0 aD d m t aZ aY aX lZ lY lX slp g - SHVec3 position; - SHQuaternion orientation; + float mass; + float drag; + float angularDrag; + + SHVec3 linearVelocity; + SHVec3 angularVelocity; + + SHPhysicsSystem* system; + + SHVec3 position; + SHQuaternion orientation; RTTR_ENABLE() }; diff --git a/SHADE_Engine/src/Physics/PhysicsObject/SHPhysicsObject.cpp b/SHADE_Engine/src/Physics/PhysicsObject/SHPhysicsObject.cpp new file mode 100644 index 00000000..71b08831 --- /dev/null +++ b/SHADE_Engine/src/Physics/PhysicsObject/SHPhysicsObject.cpp @@ -0,0 +1,431 @@ +/**************************************************************************************** + * \file SHPhysicsObject.cpp + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Implementation for a Physics Object. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#include + +// Primary Header +#include "SHPhysicsObject.h" + +// Project Headers +#include "ECS_Base/Managers/SHSystemManager.h" +#include "ECS_Base/Managers/SHComponentManager.h" +#include "Scene/SHSceneManager.h" + + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Constructors & Destructor Definitions */ + /*-----------------------------------------------------------------------------------*/ + + SHPhysicsObject::SHPhysicsObject(EntityID eid, rp3d::PhysicsCommon* physicsFactory, rp3d::PhysicsWorld* physicsWorld) noexcept + : entityID { eid } + , collidersActive { true } + , factory { physicsFactory } + , world { physicsWorld } + , rp3dBody { nullptr } + { + // Implicitly create a static body. + + const auto* TRANSFORM = SHComponentManager::GetComponent(eid); + + const rp3d::Transform RP3D_TRANSFORM { TRANSFORM->GetWorldPosition(), TRANSFORM->GetWorldOrientation() }; + + rp3dBody = world->createRigidBody(RP3D_TRANSFORM); + rp3dBody->setType(rp3d::BodyType::STATIC); + } + + SHPhysicsObject::~SHPhysicsObject() noexcept + { + factory = nullptr; + world = nullptr; + rp3dBody = nullptr; + } + + /*-----------------------------------------------------------------------------------*/ + /* Getter Function Definitions */ + /*-----------------------------------------------------------------------------------*/ + + SHVec3 SHPhysicsObject::GetPosition() const noexcept + { + return rp3dBody->getTransform().getPosition(); + } + + SHQuaternion SHPhysicsObject::GetOrientation() const noexcept + { + return rp3dBody->getTransform().getOrientation(); + } + + SHVec3 SHPhysicsObject::GetRotation() const noexcept + { + return SHQuaternion{ rp3dBody->getTransform().getOrientation() }.ToEuler(); + } + + rp3d::CollisionBody* SHPhysicsObject::GetCollisionBody() const noexcept + { + return rp3dBody; + } + + rp3d::RigidBody* SHPhysicsObject::GetRigidBody() const noexcept + { + return rp3dBody; + } + + /*-----------------------------------------------------------------------------------*/ + /* Setter Function Definitions */ + /*-----------------------------------------------------------------------------------*/ + + void SHPhysicsObject::SetStaticBody() const noexcept + { + if (!rp3dBody) + return; + + rp3dBody->setType(rp3d::BodyType::STATIC); + } + + /*-----------------------------------------------------------------------------------*/ + /* Public Function Member Definitions */ + /*-----------------------------------------------------------------------------------*/ + + int SHPhysicsObject::AddCollisionShape(int index) + { + // Get collider component + auto* colliderComponent = SHComponentManager::GetComponent_s(entityID); + if (!colliderComponent) + { + SHLOGV_ERROR("Unable to add Collision Shape to Entity {} due to Missing Collider Component!", entityID) + return -1; + } + + auto& collisionShape = colliderComponent->GetCollisionShape(index); + switch (collisionShape.GetType()) + { + // TODO(Diren): Add more collider shapes + + case SHCollisionShape::Type::BOX: + { + addBoxShape(collisionShape); + break; + } + + case SHCollisionShape::Type::SPHERE: + { + addSphereShape(collisionShape); + break; + } + default: break; + } + + auto* rp3dCollider = rp3dBody->getCollider(rp3dBody->getNbColliders() - 1); + syncColliderProperties(collisionShape, rp3dCollider); + + if (rp3dBody->getType() == rp3d::BodyType::DYNAMIC) + { + rp3dBody->updateMassPropertiesFromColliders(); + + if (auto* rigidBodyComponent = SHComponentManager::GetComponent_s(entityID); rigidBodyComponent) + rigidBodyComponent->mass = rp3dBody->getMass(); + } + + return index; + } + + void SHPhysicsObject::RemoveCollisionShape(int index) + { + const int NUM_COLLIDERS = static_cast(rp3dBody->getNbColliders()); + if (NUM_COLLIDERS == 0) + return; + + if (index < 0 || index >= NUM_COLLIDERS) + throw std::invalid_argument("Index out of range!"); + + auto* collider = rp3dBody->getCollider(index); + rp3dBody->removeCollider(collider); + + if (rp3dBody->getType() == rp3d::BodyType::DYNAMIC) + { + rp3dBody->updateMassPropertiesFromColliders(); + + auto* rigidBodyComponent = SHComponentManager::GetComponent_s(entityID); + if (rigidBodyComponent) + rigidBodyComponent->mass = rp3dBody->getMass(); + } + } + + void SHPhysicsObject::RemoveAllCollisionShapes() const noexcept + { + int numColliders = static_cast(rp3dBody->getNbColliders()); + if (numColliders == 0) + return; + + while (numColliders - 1 >= 0) + { + auto* collider = rp3dBody->getCollider(numColliders - 1); + rp3dBody->removeCollider(collider); + + --numColliders; + } + } + + void SHPhysicsObject::SyncRigidBody(SHRigidBodyComponent& component) const noexcept + { + // This state is synced in the pre-update routine + if (!rp3dBody->isActive()) + return; + + if (component.dirtyFlags == 0) + return; + + for (size_t i = 0; i < SHRigidBodyComponent::NUM_DIRTY_FLAGS; ++i) + { + if (const bool IS_DIRTY = component.dirtyFlags & (1U << i); IS_DIRTY) + { + switch (i) + { + case 0: // Gravity + { + const bool IS_ENABLED = component.flags & (1U << i); + rp3dBody->enableGravity(IS_ENABLED); + + break; + } + case 1: // Sleeping + { + const bool IS_ENABLED = component.flags & (1U << i); + rp3dBody->setIsAllowedToSleep(IS_ENABLED); + + break; + } + case 2: // Lock Position X + { + const bool IS_ENABLED = component.flags & (1U << i); + + auto positionLock = rp3dBody->getLinearLockAxisFactor(); + positionLock.x = IS_ENABLED ? 0.0f : 1.0f; + rp3dBody->setLinearLockAxisFactor(positionLock); + + break; + } + case 3: // Lock Position Y + { + const bool IS_ENABLED = component.flags & (1U << i); + + auto positionLock = rp3dBody->getLinearLockAxisFactor(); + positionLock.y = IS_ENABLED ? 0.0f : 1.0f; + rp3dBody->setLinearLockAxisFactor(positionLock); + + break; + } + case 4: // Lock Position Z + { + const bool IS_ENABLED = component.flags & (1U << i); + + auto positionLock = rp3dBody->getLinearLockAxisFactor(); + positionLock.z = IS_ENABLED ? 0.0f : 1.0f; + rp3dBody->setLinearLockAxisFactor(positionLock); + + break; + } + case 5: // Lock Rotation X + { + const bool IS_ENABLED = component.flags & (1U << i); + + auto rotationLock = rp3dBody->getAngularLockAxisFactor(); + rotationLock.x = IS_ENABLED ? 0.0f : 1.0f; + rp3dBody->setAngularLockAxisFactor(rotationLock); + + break; + } + case 6: // Lock Rotation Y + { + const bool IS_ENABLED = component.flags & (1U << i); + + auto rotationLock = rp3dBody->getAngularLockAxisFactor(); + rotationLock.y = IS_ENABLED ? 0.0f : 1.0f; + rp3dBody->setAngularLockAxisFactor(rotationLock); + + break; + } + case 7: // Lock Rotation Z + { + const bool IS_ENABLED = component.flags & (1U << i); + + auto rotationLock = rp3dBody->getAngularLockAxisFactor(); + rotationLock.z = IS_ENABLED ? 0.0f : 1.0f; + rp3dBody->setAngularLockAxisFactor(rotationLock); + + break; + } + case 8: // Type + { + rp3dBody->setType(static_cast(component.type)); + + break; + } + case 9: // Mass + { + //rp3dBody->setMass(component.mass); + + //if (component.GetAutoMass()) + //{ + // rp3dBody->updateMassPropertiesFromColliders(); + // component.mass = rp3dBody->getMass(); + //} + //else + //{ + // rp3dBody->setMass(component.mass); + // rp3dBody->updateLocalCenterOfMassFromColliders(); + // rp3dBody->updateLocalInertiaTensorFromColliders(); + //} + + break; + } + case 10: // Drag + { + rp3dBody->setLinearDamping(component.drag); + + break; + } + case 11: // Angular Drag + { + rp3dBody->setAngularDamping(component.angularDrag); + + break; + } + default: break; + } + } + } + + component.dirtyFlags = 0; + } + + void SHPhysicsObject::SyncColliders(SHColliderComponent& component) const noexcept + { + // This state is synced in the pre-update routine + if (!rp3dBody->isActive()) + return; + + const int NUM_SHAPES = static_cast(rp3dBody->getNbColliders()); + for (int i = 0; i < NUM_SHAPES; ++i) + { + auto& collisionShape = component.collisionShapes[i]; + + if (!collisionShape.dirty) + continue; + + switch (collisionShape.GetType()) + { + case SHCollisionShape::Type::BOX: syncBoxShape(i, collisionShape); break; + case SHCollisionShape::Type::SPHERE: syncSphereShape(i, collisionShape); break; + default: break; + } + + auto* rp3dCollider = rp3dBody->getCollider(i); + syncColliderProperties(collisionShape, rp3dCollider); + + collisionShape.dirty = false; + } + + // Set rigidbody mass if dynamic + auto* rigidBodyComponent = SHComponentManager::GetComponent_s(entityID); + if (rigidBodyComponent) + { + // This is generally expensive, will be optimised in the future with my own engine. + rp3dBody->updateMassPropertiesFromColliders(); + rigidBodyComponent->mass = rp3dBody->getMass(); + } + } + + /*-----------------------------------------------------------------------------------*/ + /* Private Function Member Definitions */ + /*-----------------------------------------------------------------------------------*/ + + void SHPhysicsObject::syncColliderProperties(const SHCollisionShape& collisionShape, rp3d::Collider* rp3dCollider) const noexcept + { + rp3dCollider->setIsTrigger(collisionShape.IsTrigger()); + + auto& rp3dMaterial = rp3dCollider->getMaterial(); + + rp3dMaterial.setFrictionCoefficient(collisionShape.GetFriction()); + rp3dMaterial.setBounciness(collisionShape.GetBounciness()); + rp3dMaterial.setMassDensity(collisionShape.GetDensity()); + + const unsigned short MASK_BITS = collisionShape.GetCollisionTag(); + rp3dCollider->setCollisionCategoryBits(MASK_BITS); + rp3dCollider->setCollideWithMaskBits(MASK_BITS); + } + + void SHPhysicsObject::addBoxShape(const SHCollisionShape& boxShape) const noexcept + { + const rp3d::Transform OFFSETS + { + boxShape.GetPositionOffset() + , boxShape.GetRotationOffset() + }; + + const auto* BOX = reinterpret_cast(boxShape.GetShape()); + rp3d::BoxShape* newBox = factory->createBoxShape(BOX->GetWorldExtents()); + + rp3dBody->addCollider(newBox, OFFSETS); + } + + void SHPhysicsObject::syncBoxShape(int index, const SHCollisionShape& boxShape) const noexcept + { + const auto* BOX = reinterpret_cast(boxShape.GetShape()); + + auto* rp3dCollider = rp3dBody->getCollider(index); + auto* rp3dBox = reinterpret_cast(rp3dCollider->getCollisionShape()); + + const rp3d::Transform OFFSETS + { + boxShape.GetPositionOffset() + , boxShape.GetRotationOffset() + }; + + rp3dCollider->setIsTrigger(boxShape.IsTrigger()); + rp3dCollider->setLocalToBodyTransform(OFFSETS); + + rp3dBox->setHalfExtents(BOX->GetWorldExtents()); + } + + void SHPhysicsObject::addSphereShape(const SHCollisionShape& sphereShape) const noexcept + { + const rp3d::Transform OFFSETS + { + sphereShape.GetPositionOffset() + , sphereShape.GetRotationOffset() + }; + + const auto* SPHERE = reinterpret_cast(sphereShape.GetShape()); + rp3d::SphereShape* newSphere = factory->createSphereShape(SPHERE->GetWorldRadius()); + + rp3dBody->addCollider(newSphere, OFFSETS); + } + + void SHPhysicsObject::syncSphereShape(int index, const SHCollisionShape& sphereShape) const noexcept + { + const auto* SPHERE = reinterpret_cast(sphereShape.GetShape()); + + auto* rp3dCollider = rp3dBody->getCollider(index); + auto* rp3dSphere = reinterpret_cast(rp3dCollider->getCollisionShape()); + + const rp3d::Transform OFFSETS + { + sphereShape.GetPositionOffset() + , sphereShape.GetRotationOffset() + }; + + rp3dCollider->setIsTrigger(sphereShape.IsTrigger()); + rp3dCollider->setLocalToBodyTransform(OFFSETS); + + rp3dSphere->setRadius(SPHERE->GetWorldRadius()); + } +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/SHPhysicsObject.h b/SHADE_Engine/src/Physics/PhysicsObject/SHPhysicsObject.h similarity index 65% rename from SHADE_Engine/src/Physics/SHPhysicsObject.h rename to SHADE_Engine/src/Physics/PhysicsObject/SHPhysicsObject.h index 09b70b11..c572ca2e 100644 --- a/SHADE_Engine/src/Physics/SHPhysicsObject.h +++ b/SHADE_Engine/src/Physics/PhysicsObject/SHPhysicsObject.h @@ -14,8 +14,8 @@ // Project Headers #include "Math/Transform/SHTransformComponent.h" -#include "Components/SHRigidBodyComponent.h" -#include "Components/SHColliderComponent.h" +#include "Physics/Interface/SHRigidBodyComponent.h" +#include "Physics/Interface/SHColliderComponent.h" namespace SHADE { @@ -31,6 +31,7 @@ namespace SHADE /*---------------------------------------------------------------------------------*/ friend class SHPhysicsSystem; + friend class SHPhysicsObjectManager; public: /*---------------------------------------------------------------------------------*/ @@ -53,26 +54,29 @@ namespace SHADE /* Getter Functions */ /*---------------------------------------------------------------------------------*/ - [[nodiscard]] SHVec3 GetPosition () const noexcept; - [[nodiscard]] SHQuaternion GetOrientation () const noexcept; - [[nodiscard]] SHVec3 GetRotation () const noexcept; + [[nodiscard]] SHVec3 GetPosition () const noexcept; + [[nodiscard]] SHQuaternion GetOrientation () const noexcept; + [[nodiscard]] SHVec3 GetRotation () const noexcept; + + [[nodiscard]] rp3d::CollisionBody* GetCollisionBody () const noexcept; + [[nodiscard]] rp3d::RigidBody* GetRigidBody () const noexcept; /*---------------------------------------------------------------------------------*/ /* Setter Functions */ /*---------------------------------------------------------------------------------*/ - void SetPosition (const SHVec3& position) noexcept; - void SetOrientation (const SHQuaternion& orientation) noexcept; - void SetRotation (const SHVec3& rotation) noexcept; + void SetStaticBody () const noexcept; /*---------------------------------------------------------------------------------*/ /* Function Members */ /*---------------------------------------------------------------------------------*/ - int AddCollider (SHCollisionShape* collider); - void RemoveCollider (int index); + int AddCollisionShape (int index); + void RemoveCollisionShape (int index); + void RemoveAllCollisionShapes () const noexcept; - void SyncColliders (SHColliderComponent* c) const noexcept; + void SyncRigidBody (SHRigidBodyComponent& component) const noexcept; + void SyncColliders (SHColliderComponent& component) const noexcept; private: /*---------------------------------------------------------------------------------*/ @@ -80,10 +84,28 @@ namespace SHADE /*---------------------------------------------------------------------------------*/ EntityID entityID; + bool collidersActive; // Only used to sync with SHADE components rp3d::PhysicsCommon* factory; rp3d::PhysicsWorld* world; - rp3d::CollisionBody* rp3dBody; // Can be either a collision body or a rigid body - rp3d::Transform prevTransform; // Cached transform for interpolation + + rp3d::RigidBody* rp3dBody; + rp3d::Transform prevTransform; // Cached transform for interpolation + + /*---------------------------------------------------------------------------------*/ + /* Function Members */ + /*---------------------------------------------------------------------------------*/ + + void syncColliderProperties (const SHCollisionShape& collisionShape, rp3d::Collider* rp3dCollider) const noexcept; + + // Box Shapes + + void addBoxShape (const SHCollisionShape& boxShape) const noexcept; + void syncBoxShape (int index, const SHCollisionShape& boxShape) const noexcept; + + // Sphere Shapes + + void addSphereShape (const SHCollisionShape& sphereShape) const noexcept; + void syncSphereShape (int index, const SHCollisionShape& sphereShape) const noexcept; }; } // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/PhysicsObject/SHPhysicsObjectManager.cpp b/SHADE_Engine/src/Physics/PhysicsObject/SHPhysicsObjectManager.cpp new file mode 100644 index 00000000..389983c3 --- /dev/null +++ b/SHADE_Engine/src/Physics/PhysicsObject/SHPhysicsObjectManager.cpp @@ -0,0 +1,311 @@ +/**************************************************************************************** + * \file SHPhysicsObjectManager.cpp + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Implementation for a Physics Object Manager. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#include + +// Primary Header +#include "SHPhysicsObjectManager.h" + +// Project Headers +#include "ECS_Base/Managers/SHEntityManager.h" +#include "Tools/Utilities/SHUtilities.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Static Data Member Definitions */ + /*-----------------------------------------------------------------------------------*/ + + SHPhysicsObjectManager::CommandFunctionPtr SHPhysicsObjectManager::componentFunc[3][2] + { + addRigidBody , addCollider , addCollisionShape + , removeRigidBody , removeCollider , removeCollisionShape + }; + + /*-----------------------------------------------------------------------------------*/ + /* Setter Function Definitions */ + /*-----------------------------------------------------------------------------------*/ + + void SHPhysicsObjectManager::SetFactory(rp3d::PhysicsCommon& physicsFactory) noexcept + { + factory = &physicsFactory; + } + + void SHPhysicsObjectManager::SetWorld(rp3d::PhysicsWorld* physicsWorld) noexcept + { + world = physicsWorld; + } + + /*-----------------------------------------------------------------------------------*/ + /* Getter Function Definitions */ + /*-----------------------------------------------------------------------------------*/ + + SHPhysicsObject* SHPhysicsObjectManager::GetPhysicsObject(EntityID eid) noexcept + { + const auto it = physicsObjects.find(eid); + if (it == physicsObjects.end()) + return nullptr; + + return &it->second; + } + + const SHPhysicsObjectManager::PhysicsObjectEntityMap SHPhysicsObjectManager::GetPhysicsObjects() const noexcept + { + return physicsObjects; + } + + /*-----------------------------------------------------------------------------------*/ + /* Public Function Member Definitions */ + /*-----------------------------------------------------------------------------------*/ + + void SHPhysicsObjectManager::AddRigidBody(EntityID eid) noexcept + { + const QueueCommand NEW_QUEUE_COMMAND + { + .eid = eid + , .command = QueueCommand::Command::ADD + , .component = PhysicsComponents::RIGID_BODY + }; + + commandQueue.push(NEW_QUEUE_COMMAND); + } + + void SHPhysicsObjectManager::AddCollider(EntityID eid) noexcept + { + const QueueCommand NEW_QUEUE_COMMAND + { + .eid = eid + , .command = QueueCommand::Command::ADD + , .component = PhysicsComponents::COLLIDER + }; + + commandQueue.push(NEW_QUEUE_COMMAND); + } + + void SHPhysicsObjectManager::AddCollisionShape(EntityID eid, int shapeIndex) noexcept + { + const QueueCommand NEW_QUEUE_COMMAND + { + .eid = eid + , .command = QueueCommand::Command::ADD + , .component = PhysicsComponents::COLLISION_SHAPE + , .shapeIndex = shapeIndex + }; + + commandQueue.push(NEW_QUEUE_COMMAND); + } + + void SHPhysicsObjectManager::RemoveRigidBody(EntityID eid) noexcept + { + const QueueCommand NEW_QUEUE_COMMAND + { + .eid = eid + , .command = QueueCommand::Command::REMOVE + , .component = PhysicsComponents::RIGID_BODY + }; + + commandQueue.push(NEW_QUEUE_COMMAND); + } + + void SHPhysicsObjectManager::RemoveCollider(EntityID eid) noexcept + { + const QueueCommand NEW_QUEUE_COMMAND + { + .eid = eid + , .command = QueueCommand::Command::REMOVE + , .component = PhysicsComponents::COLLIDER + }; + + commandQueue.push(NEW_QUEUE_COMMAND); + } + + void SHPhysicsObjectManager::RemoveCollisionShape(EntityID eid, int shapeIndex) noexcept + { + const QueueCommand NEW_QUEUE_COMMAND + { + .eid = eid + , .command = QueueCommand::Command::REMOVE + , .component = PhysicsComponents::COLLISION_SHAPE + , .shapeIndex = shapeIndex + }; + + commandQueue.push(NEW_QUEUE_COMMAND); + } + + void SHPhysicsObjectManager::UpdateCommands() + { + if (commandQueue.empty()) + return; + + while (!commandQueue.empty()) + { + const QueueCommand COMMAND = commandQueue.front(); + commandQueue.pop(); + + // Check validity of command + if (COMMAND.command == QueueCommand::Command::INVALID || COMMAND.component == PhysicsComponents::INVALID) + continue; + + // Get physics components + const PhysicsComponentGroup COMPONENT_GROUP + { + .eid = COMMAND.eid + , .rigidBodyComponent = SHComponentManager::GetComponent_s(COMMAND.eid) + , .colliderComponent = SHComponentManager::GetComponent_s(COMMAND.eid) + }; + + // Delete any object that is missing both components + // We infer that a remove command has been pushed for these, but we will ignore those if both components have already been removed. + if (!COMPONENT_GROUP.rigidBodyComponent && !COMPONENT_GROUP.colliderComponent) + { + destroyPhysicsObject(COMMAND.eid); + wakeAllObjects(); + continue; + } + + // Find the physics Object. If none found and attempting to add, create an object. + SHPhysicsObject* physicsObject = GetPhysicsObject(COMMAND.eid); + if (!physicsObject && COMMAND.command == QueueCommand::Command::ADD) + physicsObject = createPhysicsObject(COMMAND.eid); + + componentFunc[SHUtilities::ConvertEnum(COMMAND.command)][SHUtilities::ConvertEnum(COMMAND.component)](COMMAND, physicsObject, COMPONENT_GROUP); + + // If any removal was done, wake all objects + if (COMMAND.command == QueueCommand::Command::REMOVE) + wakeAllObjects(); + } + } + + void SHPhysicsObjectManager::RemoveAllObjects() + { + // Destroy all objects and clear + for (auto& physicsObject : physicsObjects | std::views::values) + { + world->destroyRigidBody(physicsObject.GetRigidBody()); + physicsObject.rp3dBody = nullptr; + } + + physicsObjects.clear(); + } + + /*-----------------------------------------------------------------------------------*/ + /* Private Function Member Definitions */ + /*-----------------------------------------------------------------------------------*/ + + SHPhysicsObject* SHPhysicsObjectManager::createPhysicsObject(EntityID eid) noexcept + { + // Force transforms to sync + SHVec3 worldPos = SHVec3::Zero; + SHQuaternion worldRot = SHQuaternion::Identity; + + const SHTransformComponent* TRANSFORM = nullptr; + if (SHEntityManager::IsValidEID(eid)) + TRANSFORM = SHComponentManager::GetComponent_s(eid); + + if (TRANSFORM) + { + worldPos = TRANSFORM->GetWorldPosition(); + worldRot = TRANSFORM->GetWorldOrientation(); + } + + const rp3d::Transform RP3D_TRANSFORM{ worldPos, worldRot }; + + auto& newPhysicsObject = physicsObjects.emplace(eid, SHPhysicsObject{ eid, factory, world }).first->second; + newPhysicsObject.GetRigidBody()->setTransform(RP3D_TRANSFORM); + newPhysicsObject.prevTransform = RP3D_TRANSFORM; + + return &newPhysicsObject; + } + + void SHPhysicsObjectManager::destroyPhysicsObject(EntityID eid) noexcept + { + const auto ITER = physicsObjects.find(eid); + if (ITER == physicsObjects.end()) + { + // Assume the object has already been successfully destroyed + return; + } + + world->destroyRigidBody(ITER->second.GetRigidBody()); + ITER->second.rp3dBody = nullptr; + + physicsObjects.erase(eid); + } + + void SHPhysicsObjectManager::addRigidBody(const QueueCommand&, SHPhysicsObject* physicsObject, const PhysicsComponentGroup& componentGroup) + { + SHASSERT(physicsObject != nullptr, "Valid physics object required to add body!") + + if (!componentGroup.rigidBodyComponent) + { + SHLOG_ERROR("Entity {} is missing a Rigidbody Component. Unable to update physics object!", componentGroup.eid) + return; + } + + // A static rigid body is implicitly created on creation of a physics object. + // We only need to sync rigid bodies here in the event it is non-static. + + physicsObject->SyncRigidBody(*componentGroup.rigidBodyComponent); + } + + void SHPhysicsObjectManager::addCollider(const QueueCommand&, SHPhysicsObject* physicsObject, const PhysicsComponentGroup& componentGroup) + { + SHASSERT(physicsObject != nullptr, "Valid physics object required to add collider!") + + if (!componentGroup.colliderComponent) + { + SHLOG_ERROR("Entity {} is missing a Rigidbody Component. Unable to update physics object!", componentGroup.eid) + return; + } + + const int NUM_SHAPES = static_cast(componentGroup.colliderComponent->GetCollisionShapes().size()); + for (int i = 0; i < NUM_SHAPES; ++i) + physicsObject->AddCollisionShape(i); + + physicsObject->SyncColliders(*componentGroup.colliderComponent); + } + + void SHPhysicsObjectManager::removeRigidBody(const QueueCommand&, SHPhysicsObject* physicsObject, const PhysicsComponentGroup& componentGroup) + { + SHASSERT(physicsObject != nullptr, "Valid physics object required to remove body!") + + if (componentGroup.colliderComponent) + physicsObject->SetStaticBody(); + } + + void SHPhysicsObjectManager::removeCollider(const QueueCommand&, SHPhysicsObject* physicsObject, const PhysicsComponentGroup&) + { + SHASSERT(physicsObject != nullptr, "Valid physics object required to remove collider!") + + physicsObject->RemoveAllCollisionShapes(); + } + + void SHPhysicsObjectManager::addCollisionShape(const QueueCommand& command, SHPhysicsObject* physicsObject, const PhysicsComponentGroup&) + { + SHASSERT(physicsObject != nullptr, "Valid physics object required to add collision shape!") + + physicsObject->AddCollisionShape(command.shapeIndex); + } + + void SHPhysicsObjectManager::removeCollisionShape(const QueueCommand& command, SHPhysicsObject* physicsObject, const PhysicsComponentGroup&) + { + SHASSERT(physicsObject != nullptr, "Valid physics object required to remove collision shape!") + + physicsObject->RemoveCollisionShape(command.shapeIndex); + } + + void SHPhysicsObjectManager::wakeAllObjects() noexcept + { + for (auto& physicsObject : physicsObjects | std::views::values) + physicsObject.GetRigidBody()->setIsSleeping(false); + } + + +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/PhysicsObject/SHPhysicsObjectManager.h b/SHADE_Engine/src/Physics/PhysicsObject/SHPhysicsObjectManager.h new file mode 100644 index 00000000..f41c62ad --- /dev/null +++ b/SHADE_Engine/src/Physics/PhysicsObject/SHPhysicsObjectManager.h @@ -0,0 +1,181 @@ +/**************************************************************************************** + * \file SHPhysicsObjectManager.h + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Interface for a Physics Object Manager. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#pragma once + +#include +#include + +#include + +// Project Headers +#include "SHPhysicsObject.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*-----------------------------------------------------------------------------------*/ + + class SH_API SHPhysicsObjectManager + { + private: + /*---------------------------------------------------------------------------------*/ + /* Friends */ + /*---------------------------------------------------------------------------------*/ + + friend class SHPhysicsSystem; + + /*---------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*---------------------------------------------------------------------------------*/ + + using PhysicsObjectEntityMap = std::unordered_map; + + public: + + /*---------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*---------------------------------------------------------------------------------*/ + + enum class PhysicsComponents + { + RIGID_BODY + , COLLIDER + , COLLISION_SHAPE + + , TOTAL + , INVALID = -1 + }; + + /*---------------------------------------------------------------------------------*/ + /* Constructors & Destructor */ + /*---------------------------------------------------------------------------------*/ + + SHPhysicsObjectManager () = default; + ~SHPhysicsObjectManager () = default; + + SHPhysicsObjectManager (const SHPhysicsObjectManager&) = delete; + SHPhysicsObjectManager (SHPhysicsObjectManager&&) = delete; + + /*---------------------------------------------------------------------------------*/ + /* Operator Overloads */ + /*---------------------------------------------------------------------------------*/ + + SHPhysicsObjectManager& operator=(const SHPhysicsObjectManager&) = delete; + SHPhysicsObjectManager& operator=(SHPhysicsObjectManager&&) = delete; + + /*---------------------------------------------------------------------------------*/ + /* Getter Functions */ + /*---------------------------------------------------------------------------------*/ + + [[nodiscard]] SHPhysicsObject* GetPhysicsObject (EntityID eid) noexcept; + [[nodiscard]] const PhysicsObjectEntityMap GetPhysicsObjects () const noexcept; + + /*---------------------------------------------------------------------------------*/ + /* Setter Functions */ + /*---------------------------------------------------------------------------------*/ + + void SetFactory (rp3d::PhysicsCommon& physicsFactory) noexcept; + void SetWorld (rp3d::PhysicsWorld* physicsWorld) noexcept; + + /*---------------------------------------------------------------------------------*/ + /* Function Members */ + /*---------------------------------------------------------------------------------*/ + + void AddRigidBody (EntityID eid) noexcept; + void AddCollider (EntityID eid) noexcept; + void AddCollisionShape (EntityID eid, int shapeIndex) noexcept; + + void RemoveRigidBody (EntityID eid) noexcept; + void RemoveCollider (EntityID eid) noexcept; + void RemoveCollisionShape (EntityID eid, int shapeIndex) noexcept; + + void UpdateCommands (); + void RemoveAllObjects (); + + private: + /*---------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*---------------------------------------------------------------------------------*/ + + struct QueueCommand + { + /*-------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*-------------------------------------------------------------------------------*/ + + enum class Command + { + ADD + , REMOVE + + , INVALID = -1 + }; + + /*-------------------------------------------------------------------------------*/ + /* Data Members */ + /*-------------------------------------------------------------------------------*/ + + EntityID eid = MAX_EID; + Command command = Command::INVALID; + PhysicsComponents component = PhysicsComponents::INVALID; + int shapeIndex = -1; // Only used when adding & removing collision shapes + }; + + struct PhysicsComponentGroup + { + public: + + /*-------------------------------------------------------------------------------*/ + /* Data Members */ + /*-------------------------------------------------------------------------------*/ + + + EntityID eid = MAX_EID; + SHRigidBodyComponent* rigidBodyComponent = nullptr; + SHColliderComponent* colliderComponent = nullptr; + }; + + using CommandFunctionPtr = void(*)(const QueueCommand&, SHPhysicsObject*, const PhysicsComponentGroup&); + + /*---------------------------------------------------------------------------------*/ + /* Data Members */ + /*---------------------------------------------------------------------------------*/ + + static CommandFunctionPtr componentFunc[3][2]; // 3 components, 2 commands + + rp3d::PhysicsCommon* factory = nullptr; + rp3d::PhysicsWorld* world = nullptr; + + PhysicsObjectEntityMap physicsObjects; + std::queue commandQueue; + + /*---------------------------------------------------------------------------------*/ + /* Function Members */ + /*---------------------------------------------------------------------------------*/ + + SHPhysicsObject* createPhysicsObject (EntityID eid) noexcept; + void destroyPhysicsObject (EntityID eid) noexcept; + + void wakeAllObjects () noexcept; + + static void addRigidBody (const QueueCommand& command, SHPhysicsObject* physicsObject, const PhysicsComponentGroup& componentGroup); + static void addCollider (const QueueCommand& command, SHPhysicsObject* physicsObject, const PhysicsComponentGroup& componentGroup); + static void removeRigidBody (const QueueCommand& command, SHPhysicsObject* physicsObject, const PhysicsComponentGroup& componentGroup); + static void removeCollider (const QueueCommand& command, SHPhysicsObject* physicsObject, const PhysicsComponentGroup& componentGroup); + + static void addCollisionShape (const QueueCommand& command, SHPhysicsObject* physicsObject, const PhysicsComponentGroup& componentGroup); + static void removeCollisionShape (const QueueCommand& command, SHPhysicsObject* physicsObject, const PhysicsComponentGroup& componentGroup); + + + }; + +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/SHPhysicsEvents.h b/SHADE_Engine/src/Physics/SHPhysicsEvents.h new file mode 100644 index 00000000..ae48a75b --- /dev/null +++ b/SHADE_Engine/src/Physics/SHPhysicsEvents.h @@ -0,0 +1,37 @@ +/**************************************************************************************** + * \file SHPhysicsUtils.h + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Interface for some Physics Utilities + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#pragma once + +// Project Headers +#include "Interface/SHCollisionShape.h" + + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*-----------------------------------------------------------------------------------*/ + + struct SHPhysicsColliderAddedEvent + { + EntityID entityID; + SHCollisionShape::Type colliderType; + int colliderIndex; + }; + + struct SHPhysicsColliderRemovedEvent + { + EntityID entityID; + int colliderIndex; + }; + + +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/SHPhysicsObject.cpp b/SHADE_Engine/src/Physics/SHPhysicsObject.cpp deleted file mode 100644 index 00c6943b..00000000 --- a/SHADE_Engine/src/Physics/SHPhysicsObject.cpp +++ /dev/null @@ -1,219 +0,0 @@ -/**************************************************************************************** - * \file SHPhysicsObject.cpp - * \author Diren D Bharwani, diren.dbharwani, 390002520 - * \brief Implementation for a Physics Object. - * - * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or - * disclosure of this file or its contents without the prior written consent - * of DigiPen Institute of Technology is prohibited. -****************************************************************************************/ - -#include - -// Primary Header -#include "SHPhysicsObject.h" - -// Project Headers -#include "ECS_Base/Managers/SHSystemManager.h" -#include "ECS_Base/Managers/SHComponentManager.h" - - -namespace SHADE -{ - /*-----------------------------------------------------------------------------------*/ - /* Constructors & Destructor Definitions */ - /*-----------------------------------------------------------------------------------*/ - - SHPhysicsObject::SHPhysicsObject(EntityID eid, rp3d::PhysicsCommon* physicsFactory, rp3d::PhysicsWorld* physicsWorld) noexcept - : entityID { eid } - , factory { physicsFactory } - , world { physicsWorld } - , rp3dBody { nullptr } - {} - - SHPhysicsObject::~SHPhysicsObject() noexcept - { - factory = nullptr; - world = nullptr; - rp3dBody = nullptr; - } - - /*-----------------------------------------------------------------------------------*/ - /* Getter Function Definitions */ - /*-----------------------------------------------------------------------------------*/ - - SHVec3 SHPhysicsObject::GetPosition() const noexcept - { - SHVec3 result; - - if (rp3dBody) - result = SHVec3{ rp3dBody->getTransform().getPosition() }; - - return result; - } - - SHQuaternion SHPhysicsObject::GetOrientation() const noexcept - { - SHQuaternion result; - - if (rp3dBody) - result = SHQuaternion{ rp3dBody->getTransform().getOrientation() }; - - return result; - } - - SHVec3 SHPhysicsObject::GetRotation() const noexcept - { - SHVec3 result; - - if (rp3dBody) - result = SHQuaternion{ rp3dBody->getTransform().getOrientation() }.ToEuler(); - - return result; - } - - /*-----------------------------------------------------------------------------------*/ - /* Setter Function Definitions */ - /*-----------------------------------------------------------------------------------*/ - - void SHPhysicsObject::SetPosition(const SHVec3& position) noexcept - { - if (!rp3dBody) - { - SHLOG_ERROR("Cannot set position of a non-existent physics body for Entity {}", entityID) - return; - } - - rp3d::Transform rp3dTF; - rp3dTF.setPosition(position); - rp3dTF.setOrientation(rp3dBody->getTransform().getOrientation()); - - rp3dBody->setTransform(rp3dTF); - prevTransform = rp3dTF; - } - - void SHPhysicsObject::SetOrientation(const SHQuaternion& orientation) noexcept - { - if (!rp3dBody) - { - SHLOG_ERROR("Cannot set orientation of a non-existent physics body for Entity {}", entityID) - return; - } - - rp3d::Transform rp3dTF; - rp3dTF.setPosition(rp3dBody->getTransform().getPosition()); - rp3dTF.setOrientation(orientation); - - rp3dBody->setTransform(rp3dTF); - prevTransform = rp3dTF; - } - - void SHPhysicsObject::SetRotation(const SHVec3& rotation) noexcept - { - if (!rp3dBody) - { - SHLOG_ERROR("Cannot set rotation of a non-existent physics body for Entity {}", entityID) - return; - } - - rp3d::Transform rp3dTF; - rp3dTF.setPosition(rp3dBody->getTransform().getPosition()); - rp3dTF.setOrientation(rotation); - - rp3dBody->setTransform(rp3dTF); - prevTransform = rp3dTF; - } - - /*-----------------------------------------------------------------------------------*/ - /* Public Function Member Definitions */ - /*-----------------------------------------------------------------------------------*/ - - int SHPhysicsObject::AddCollider(SHCollisionShape* collider) - { - const rp3d::Transform OFFSETS{ collider->GetPositionOffset(), collider->GetRotationOffset() }; - - switch (collider->GetType()) - { - case SHCollisionShape::Type::BOX: - { - const auto* box = reinterpret_cast(collider->GetShape()); - rp3d::BoxShape* newBox = factory->createBoxShape(box->GetWorldExtents()); - - rp3dBody->addCollider(newBox, OFFSETS); - break; - } - case SHCollisionShape::Type::SPHERE: - { - const auto* sphere = reinterpret_cast(collider->GetShape()); - rp3d::SphereShape* newSphere = factory->createSphereShape(sphere->GetWorldRadius()); - - rp3dBody->addCollider(newSphere, OFFSETS); - break; - } - // TODO(Diren): Add more collider shapes - default: break; - } - - return static_cast(rp3dBody->getNbColliders()) - 1; - } - - void SHPhysicsObject::RemoveCollider(int index) - { - const int NUM_COLLIDERS = static_cast(rp3dBody->getNbColliders()); - if (NUM_COLLIDERS == 0) - return; - - if (index < 0 || index >= NUM_COLLIDERS) - throw std::invalid_argument("Index out of range!"); - - auto* collider = rp3dBody->getCollider(index); - rp3dBody->removeCollider(collider); - } - - void SHPhysicsObject::SyncColliders(SHColliderComponent* c) const noexcept - { - int index = 0; - for (auto& collider : c->collisionShapes) - { - if (!collider.dirty) - continue; - - auto* rp3dCollider = rp3dBody->getCollider(index); - - // Update trigger flag - rp3dCollider->setIsTrigger(collider.IsTrigger()); - - // Update offsets - rp3dCollider->setLocalToBodyTransform(rp3d::Transform(collider.GetPositionOffset(), collider.GetRotationOffset())); - - switch (collider.GetType()) - { - case SHCollisionShape::Type::BOX: - { - const auto* box = reinterpret_cast(collider.GetShape()); - - auto* rp3dBoxShape = reinterpret_cast(rp3dCollider->getCollisionShape()); - rp3dBoxShape->setHalfExtents(box->GetWorldExtents()); - - break; - } - case SHCollisionShape::Type::SPHERE: - { - const auto* sphere = reinterpret_cast(collider.GetShape()); - - auto* rp3dSphereShape = reinterpret_cast(rp3dCollider->getCollisionShape()); - rp3dSphereShape->setRadius(sphere->GetWorldRadius()); - - break; - } - default: break; - } - - // TODO(Diren): Update Material - - collider.dirty = false; - ++index; - } - } - -} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/SHPhysicsSystem.cpp b/SHADE_Engine/src/Physics/SHPhysicsSystem.cpp deleted file mode 100644 index 437b5ff8..00000000 --- a/SHADE_Engine/src/Physics/SHPhysicsSystem.cpp +++ /dev/null @@ -1,856 +0,0 @@ -/**************************************************************************************** - * \file SHPhysicsSystem.cpp - * \author Diren D Bharwani, diren.dbharwani, 390002520 - * \brief Implementation for the Physics System - * - * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or - * disclosure of this file or its contents without the prior written consent - * of DigiPen Institute of Technology is prohibited. -****************************************************************************************/ - -#include - -// Primary Header -#include "SHPhysicsSystem.h" - -// Project Headers -#include "ECS_Base/Managers/SHComponentManager.h" -#include "ECS_Base/Managers/SHEntityManager.h" -#include "ECS_Base/Managers/SHSystemManager.h" -#include "Graphics/MiddleEnd/Interface/SHDebugDrawSystem.h" -#include "Math/SHMathHelpers.h" -#include "Math/Transform/SHTransformComponent.h" -#include "Scene/SHSceneManager.h" -#include "Scripting/SHScriptEngine.h" -#include "Tools/SHUtilities.h" - -namespace SHADE -{ - /*-----------------------------------------------------------------------------------*/ - /* Constructors & Destructor Definitions */ - /*-----------------------------------------------------------------------------------*/ - - SHPhysicsSystem::SHPhysicsSystem() - : worldUpdated { false } - , debugDrawFlags { 0 } - , interpolationFactor { 0.0 } - , fixedDT { 60.0 } - , world { nullptr } - {} - - SHPhysicsSystem::PhysicsPreUpdate::PhysicsPreUpdate() - : SHSystemRoutine { "Physics PreUpdate", true } - {} - - SHPhysicsSystem::PhysicsFixedUpdate::PhysicsFixedUpdate() - : SHFixedSystemRoutine { DEFAULT_FIXED_STEP, "Physics FixedUpdate", false } - {} - - SHPhysicsSystem::PhysicsPostUpdate::PhysicsPostUpdate() - : SHSystemRoutine { "Physics PostUpdate", false } - {} - - SHPhysicsSystem::PhysicsDebugDraw::PhysicsDebugDraw() - : SHSystemRoutine { "Physics DebugDraw", true } - {} - - - /*-----------------------------------------------------------------------------------*/ - /* Getter Function Definitions */ - /*-----------------------------------------------------------------------------------*/ - - double SHPhysicsSystem::GetFixedDT() const noexcept - { - return fixedDT; - } - - bool SHPhysicsSystem::IsSleepingEnabled() const noexcept - { - if (world) - return world->isSleepingEnabled(); - - SHLOGV_WARNING("No physics world has been initialised!") - return false; - } - - SHVec3 SHPhysicsSystem::GetWorldGravity() const noexcept - { - SHVec3 result; - - if (world) - { - result = world->getGravity(); - } - else - { - SHLOGV_WARNING("No physics world has been initialised!") - } - - return result; - } - - uint16_t SHPhysicsSystem::GetNumberVelocityIterations() const noexcept - { - if (world) - return world->getNbIterationsVelocitySolver(); - - SHLOGV_WARNING("No physics world has been initialised!") - return 0; - } - - uint16_t SHPhysicsSystem::GetNumberPositionIterations() const noexcept - { - if (world) - return world->getNbIterationsPositionSolver(); - - SHLOGV_WARNING("No physics world has been initialised!") - return 0; - } - - bool SHPhysicsSystem::GetDrawColliders() const noexcept - { - return debugDrawFlags & SHUtilities::ConvertEnum(DebugDrawFlags::COLLIDER); - } - - bool SHPhysicsSystem::GetDrawColliderAABBs() const noexcept - { - return debugDrawFlags & SHUtilities::ConvertEnum(DebugDrawFlags::COLLIDER_AABB); - } - - bool SHPhysicsSystem::GetDrawBroadPhase() const noexcept - { - return debugDrawFlags & SHUtilities::ConvertEnum(DebugDrawFlags::BROAD_PHASE_AABB); - } - - bool SHPhysicsSystem::GetDrawContactPoints() const noexcept - { - return debugDrawFlags & SHUtilities::ConvertEnum(DebugDrawFlags::CONTACT_POINTS); - } - - bool SHPhysicsSystem::GetDrawContactNormals() const noexcept - { - return debugDrawFlags & SHUtilities::ConvertEnum(DebugDrawFlags::CONTACT_NORMALS); - } - - const SHPhysicsSystem::CollisionEvents& SHPhysicsSystem::GetCollisionInfo() const noexcept - { - return collisionInfo; - } - - const SHPhysicsSystem::CollisionEvents& SHPhysicsSystem::GetTriggerInfo() const noexcept - { - return triggerInfo; - } - - /*-----------------------------------------------------------------------------------*/ - /* Setter Function Definitions */ - /*-----------------------------------------------------------------------------------*/ - - void SHPhysicsSystem::SetFixedDT(double fixedUpdateRate) noexcept - { - fixedDT = fixedUpdateRate; - } - - void SHPhysicsSystem::SetWorldGravity(const SHVec3& gravity) const noexcept - { - if (world) - { - world->setGravity(gravity); - } - else - { - SHLOGV_WARNING("No physics world has been initialised!") - } - } - - void SHPhysicsSystem::SetNumberVelocityIterations(uint16_t numVelIterations) const noexcept - { - if (world) - { - world->setNbIterationsVelocitySolver(numVelIterations); - } - else - { - SHLOGV_WARNING("No physics world has been initialised!") - } - } - - void SHPhysicsSystem::SetNumberPositionIterations(uint16_t numPosIterations) const noexcept - { - if (world) - { - world->setNbIterationsPositionSolver(numPosIterations); - } - else - { - SHLOGV_WARNING("No physics world has been initialised!") - } - } - - void SHPhysicsSystem::SetSleepingEnabled(bool enableSleeping) const noexcept - { - if (world) - { - world->enableSleeping(enableSleeping); - } - else - { - SHLOGV_WARNING("No physics world has been initialised!") - } - } - - void SHPhysicsSystem::SetWorldSettings(const WorldSettings& settings) const noexcept - { - if (world) - { - world->setGravity(settings.gravity); - world->setNbIterationsVelocitySolver(settings.numVelocitySolverIterations); - world->setNbIterationsPositionSolver(settings.numPositionSolverIterations); - world->enableSleeping(settings.sleepingEnabled); - } - else - { - SHLOGV_WARNING("No physics world has been initialised!") - } - } - - void SHPhysicsSystem::SetDrawColliders(bool shouldDraw) noexcept - { - static constexpr auto FLAG_VALUE = SHUtilities::ConvertEnum(DebugDrawFlags::COLLIDER); - shouldDraw ? debugDrawFlags |= FLAG_VALUE : debugDrawFlags &= ~(FLAG_VALUE); - - if (world == nullptr) - { - SHLOGV_WARNING("No physics world has been initialised!") - return; - } - - world->getDebugRenderer().setIsDebugItemDisplayed - ( - rp3d::DebugRenderer::DebugItem::COLLISION_SHAPE, - shouldDraw - ); - } - - void SHPhysicsSystem::SetDrawColliderAABBs(bool shouldDraw) noexcept - { - static constexpr auto FLAG_VALUE = SHUtilities::ConvertEnum(DebugDrawFlags::COLLIDER_AABB); - shouldDraw ? debugDrawFlags |= FLAG_VALUE : debugDrawFlags &= ~(FLAG_VALUE); - - if (world == nullptr) - { - SHLOGV_WARNING("No physics world has been initialised!") - return; - } - - world->getDebugRenderer().setIsDebugItemDisplayed - ( - rp3d::DebugRenderer::DebugItem::COLLIDER_AABB, - shouldDraw - ); - } - - void SHPhysicsSystem::SetDrawBroadPhase(bool shouldDraw) noexcept - { - static constexpr auto FLAG_VALUE = SHUtilities::ConvertEnum(DebugDrawFlags::BROAD_PHASE_AABB); - shouldDraw ? debugDrawFlags |= FLAG_VALUE : debugDrawFlags &= ~(FLAG_VALUE); - - if (world == nullptr) - { - SHLOGV_WARNING("No physics world has been initialised!") - return; - } - - world->getDebugRenderer().setIsDebugItemDisplayed - ( - rp3d::DebugRenderer::DebugItem::COLLIDER_BROADPHASE_AABB, - shouldDraw - ); - } - - void SHPhysicsSystem::SetDrawContactPoints(bool shouldDraw) noexcept - { - static constexpr auto FLAG_VALUE = SHUtilities::ConvertEnum(DebugDrawFlags::CONTACT_POINTS); - shouldDraw ? debugDrawFlags |= FLAG_VALUE : debugDrawFlags &= ~(FLAG_VALUE); - - if (world == nullptr) - { - SHLOGV_WARNING("No physics world has been initialised!") - return; - } - - world->getDebugRenderer().setIsDebugItemDisplayed - ( - rp3d::DebugRenderer::DebugItem::CONTACT_POINT, - shouldDraw - ); - } - - void SHPhysicsSystem::SetDrawContactNormals(bool shouldDraw) noexcept - { - static constexpr auto FLAG_VALUE = SHUtilities::ConvertEnum(DebugDrawFlags::CONTACT_NORMALS); - shouldDraw ? debugDrawFlags |= FLAG_VALUE : debugDrawFlags &= ~(FLAG_VALUE); - - if (world == nullptr) - { - SHLOGV_WARNING("No physics world has been initialised!") - return; - } - - world->getDebugRenderer().setIsDebugItemDisplayed - ( - rp3d::DebugRenderer::DebugItem::CONTACT_NORMAL, - shouldDraw - ); - } - - /*-----------------------------------------------------------------------------------*/ - /* Public Function Member Definitions */ - /*-----------------------------------------------------------------------------------*/ - - void SHPhysicsSystem::Init() - { - // Create a physics world with the default settings - rp3d::PhysicsWorld::WorldSettings settings; - settings.gravity = SHVec3{ 0.0f, -9.81f, 0.0f }; - settings.isSleepingEnabled = true; - settings.defaultVelocitySolverNbIterations = 8; - settings.defaultPositionSolverNbIterations = 3; - settings.defaultFrictionCoefficient = 0.4f; - settings.defaultBounciness = 0.0f; - - world = factory.createPhysicsWorld(settings); - world->setEventListener(this); - world->setIsDebugRenderingEnabled(true); - - // Set up solvers - world->setContactsPositionCorrectionTechnique(rp3d::ContactsPositionCorrectionTechnique::SPLIT_IMPULSES); - - // Subscribe to component events - - const std::shared_ptr ADD_COMPONENT_RECEIVER { std::make_shared>(this, &SHPhysicsSystem::AddPhysicsComponent) }; - const ReceiverPtr ADD_COMPONENT_RECEIVER_PTR = std::dynamic_pointer_cast(ADD_COMPONENT_RECEIVER); - SHEventManager::SubscribeTo(SH_COMPONENT_ADDED_EVENT, ADD_COMPONENT_RECEIVER_PTR); - - const std::shared_ptr REMOVE_COMPONENT_RECEIVER { std::make_shared>(this, &SHPhysicsSystem::RemovePhysicsComponent) }; - const ReceiverPtr REMOVE_COMPONENT_RECEIVER_PTR = std::dynamic_pointer_cast(REMOVE_COMPONENT_RECEIVER); - SHEventManager::SubscribeTo(SH_COMPONENT_REMOVED_EVENT, REMOVE_COMPONENT_RECEIVER_PTR); - - #ifdef SHEDITOR - const std::shared_ptr EDITOR_STOP_RECEIVER { std::make_shared>(this, &SHPhysicsSystem::ResetWorld) }; - const ReceiverPtr EDITOR_STOP_RECEIVER_PTR = std::dynamic_pointer_cast(EDITOR_STOP_RECEIVER); - SHEventManager::SubscribeTo(SH_EDITOR_ON_STOP_EVENT, EDITOR_STOP_RECEIVER_PTR); - #endif - } - - void SHPhysicsSystem::Exit() - { - factory.destroyPhysicsWorld(world); - } - - void SHPhysicsSystem::AddCollisionShape(EntityID entityID, SHCollisionShape* collider) - { - auto* physicsObject = GetPhysicsObject(entityID); - - const SHPhysicsColliderAddedEvent COLLIDER_ADDED_EVENT_DATA - { - .entityID = entityID - , .colliderType = collider->GetType() - , .colliderIndex = physicsObject->AddCollider(collider) - }; - - SHEventManager::BroadcastEvent(COLLIDER_ADDED_EVENT_DATA, SH_PHYSICS_COLLIDER_ADDED_EVENT); - } - - void SHPhysicsSystem::RemoveCollisionShape(EntityID entityID, int index) - { - auto* physicsObject = GetPhysicsObject(entityID); - physicsObject->RemoveCollider(index); - - const SHPhysicsColliderRemovedEvent COLLIDER_REMOVED_EVENT_DATA - { - .entityID = entityID - , .colliderIndex = index - }; - - SHEventManager::BroadcastEvent(COLLIDER_REMOVED_EVENT_DATA, SH_PHYSICS_COLLIDER_REMOVED_EVENT); - } - - void SHPhysicsSystem::PhysicsPreUpdate::Execute(double) noexcept - { - auto* system = reinterpret_cast(GetSystem()); - - // Sync transforms - for (auto& [entityID, physicsObject] : system->map) - { - // Ensure a valid physics Object - if (physicsObject.rp3dBody == nullptr) - continue; - - const auto* transformComponent = SHComponentManager::GetComponent_s(entityID); - auto* rigidBodyComponent = SHComponentManager::GetComponent_s(entityID); - auto* colliderComponent = SHComponentManager::GetComponent_s(entityID); - - if (transformComponent && transformComponent->HasChanged()) - { - const auto WORLD_POS = transformComponent->GetWorldPosition(); - const auto WORLD_ROT = transformComponent->GetWorldOrientation(); - const auto WORLD_SCL = transformComponent->GetWorldScale(); - - physicsObject.SetPosition(WORLD_POS); - physicsObject.SetOrientation(WORLD_ROT); - - // Sync physics component transforms - - if (rigidBodyComponent) - { - rigidBodyComponent->position = WORLD_POS; - rigidBodyComponent->orientation = WORLD_ROT; - } - - if (colliderComponent) - { - colliderComponent->position = WORLD_POS; - colliderComponent->orientation = WORLD_ROT; - colliderComponent->scale = WORLD_SCL; - - colliderComponent->RecomputeCollisionShapes(); - } - } - - // Sync rigid bodies - - if (rigidBodyComponent) - { - // Sync active states - const bool COMPONENT_ACTIVE = rigidBodyComponent->isActive; - SyncActiveStates(physicsObject, COMPONENT_ACTIVE); - - if (!COMPONENT_ACTIVE) - continue; - } - - // Sync colliders - - if (colliderComponent) - { - const bool COMPONENT_ACTIVE = colliderComponent->isActive; - SyncActiveStates(physicsObject, colliderComponent->isActive); - - if (!COMPONENT_ACTIVE) - continue; - - physicsObject.SyncColliders(colliderComponent); - } - } - } - - void SHPhysicsSystem::PhysicsFixedUpdate::Execute(double dt) noexcept - { - auto* physicsSystem = reinterpret_cast(GetSystem()); - auto* scriptingSystem = SHSystemManager::GetSystem(); - if (scriptingSystem == nullptr) - { - SHLOGV_ERROR("Unable to invoke FixedUpdate() on scripts due to missing SHScriptEngine!"); - } - - fixedTimeStep = 1.0 / physicsSystem->fixedDT; - accumulatedTime += dt; - - int count = 0; - while (accumulatedTime > fixedTimeStep) - { - if (scriptingSystem != nullptr) - scriptingSystem->ExecuteFixedUpdates(); - - physicsSystem->world->update(static_cast(fixedTimeStep)); - - accumulatedTime -= fixedTimeStep; - ++count; - } - - stats.numSteps = count; - physicsSystem->worldUpdated = count > 0; - - physicsSystem->interpolationFactor = accumulatedTime / fixedTimeStep; - } - - void SHPhysicsSystem::PhysicsPostUpdate::Execute(double) noexcept - { - auto* physicsSystem = reinterpret_cast(GetSystem()); - auto* scriptingSystem = SHSystemManager::GetSystem(); - if (scriptingSystem == nullptr) - { - SHLOGV_ERROR("Unable to invoke collision and trigger script events due to missing SHScriptEngine!"); - } - - // Interpolate transforms for rendering - if (physicsSystem->worldUpdated) - { - physicsSystem->SyncTransforms(); - - // Collision & Trigger messages - if (scriptingSystem != nullptr) - scriptingSystem->ExecuteCollisionFunctions(); - - physicsSystem->ClearInvalidCollisions(); - } - } - - void SHPhysicsSystem::PhysicsDebugDraw::Execute(double) noexcept - { - const auto* PHYSICS_SYSTEM = reinterpret_cast(GetSystem()); - if (PHYSICS_SYSTEM->debugDrawFlags == 0) - return; - - auto* debugDrawSystem = SHSystemManager::GetSystem(); - if (debugDrawSystem == nullptr) - { - SHLOGV_ERROR("Unable to debug draw physics objects due to missing SHDebugDrawSystem!"); - return; - } - - const auto& RP3D_DEBUG_RENDERER = PHYSICS_SYSTEM->world->getDebugRenderer(); - - const auto& LINES = RP3D_DEBUG_RENDERER.getLines(); - const auto& TRIANGLES = RP3D_DEBUG_RENDERER.getTriangles(); - - // Draw all lines - for (uint32_t i = 0; i < RP3D_DEBUG_RENDERER.getNbLines(); ++i) - { - const auto& LINE = LINES[i]; - debugDrawSystem->DrawLine(SHColour{ LINE.color1 }, LINE.point1, LINE.point2); - } - - for (uint32_t i = 0; i < RP3D_DEBUG_RENDERER.getNbTriangles(); ++i) - { - const auto& TRIANGLE = TRIANGLES[i]; - SHColour triColour{ TRIANGLE.color1 }; - triColour.a() = 1.0f; - debugDrawSystem->DrawTri(triColour, TRIANGLE.point1, TRIANGLE.point2, TRIANGLE.point3); - } - } - - void SHPhysicsSystem::onContact(const CallbackData& callbackData) - { - for (uint32_t i = 0; i < callbackData.getNbContactPairs(); ++i) - { - const auto CONTACT_PAIR = callbackData.getContactPair(i); - const SHCollisionEvent NEW_EVENT = GenerateCollisionEvent(CONTACT_PAIR); - - UpdateEventContainers(NEW_EVENT, collisionInfo); - } - } - - void SHPhysicsSystem::onTrigger(const rp3d::OverlapCallback::CallbackData& callbackData) - { - for (uint32_t i = 0; i < callbackData.getNbOverlappingPairs(); ++i) - { - const auto& OVERLAP_PAIR = callbackData.getOverlappingPair(i); - const SHCollisionEvent NEW_EVENT = GenerateCollisionEvent(OVERLAP_PAIR); - - UpdateEventContainers(NEW_EVENT, triggerInfo); - } - } - - /*-----------------------------------------------------------------------------------*/ - /* Private Function Member Definitions */ - /*-----------------------------------------------------------------------------------*/ - - SHPhysicsObject* SHPhysicsSystem::EnsurePhysicsObject(EntityID entityID) noexcept - { - const auto it = map.find(entityID); - if (it == map.end()) - { - auto* newPhysicsObject = &map.emplace(entityID, SHPhysicsObject{entityID, &factory, world}).first->second; - return newPhysicsObject; - } - - return &(it->second); - } - - SHPhysicsObject* SHPhysicsSystem::GetPhysicsObject(EntityID entityID) noexcept - { - const auto it = map.find(entityID); - if (it == map.end()) - { - //SHLOG_ERROR("Entity {} is not in the physics system!", entityID) - return nullptr; - } - - return &(it->second); - } - - void SHPhysicsSystem::DestroyPhysicsObject(EntityID entityID) noexcept - { - map.erase(entityID); - } - - void SHPhysicsSystem::SyncActiveStates(SHPhysicsObject& physicsObject, bool componentActive) noexcept - { - const bool RP3D_ACTIVE = physicsObject.rp3dBody->isActive(); - if (RP3D_ACTIVE != componentActive) - physicsObject.rp3dBody->setIsActive(componentActive); - } - - void SHPhysicsSystem::SyncTransforms() noexcept - { - for (auto& [entityID, physicsObject] : map) - { - rp3d::Vector3 rp3dPos; - rp3d::Quaternion rp3dRot; - - const rp3d::Transform CURRENT_TF = physicsObject.rp3dBody->getTransform(); - - auto* rigidBodyComponent = SHComponentManager::GetComponent_s(entityID); - auto* colliderComponent = SHComponentManager::GetComponent_s(entityID); - - // Check if transform should be interpolated - - if (rigidBodyComponent != nullptr) - { - if (rigidBodyComponent->GetType() == SHRigidBodyComponent::Type::STATIC) - continue; - - if (rigidBodyComponent->IsInterpolating()) - { - const rp3d::Transform PREV_TF = physicsObject.prevTransform; - const rp3d::Transform INTERPOLATED_TF = rp3d::Transform::interpolateTransforms(PREV_TF, CURRENT_TF, static_cast(interpolationFactor)); - - - rp3dPos = INTERPOLATED_TF.getPosition(); - rp3dRot = INTERPOLATED_TF.getOrientation(); - } - else - { - rp3dPos = CURRENT_TF.getPosition(); - rp3dRot = CURRENT_TF.getOrientation(); - } - - rigidBodyComponent->position = CURRENT_TF.getPosition(); - rigidBodyComponent->orientation = CURRENT_TF.getOrientation(); - - if (colliderComponent != nullptr) - { - - colliderComponent->position = CURRENT_TF.getPosition(); - colliderComponent->orientation = CURRENT_TF.getOrientation(); - } - } - else - { - rp3dPos = CURRENT_TF.getPosition(); - rp3dRot = CURRENT_TF.getOrientation(); - } - - // Convert RP3D Transform to SHADE - auto* transformComponent = SHComponentManager::GetComponent_s(entityID); - - if (transformComponent != nullptr) - { - transformComponent->SetWorldPosition(rp3dPos); - transformComponent->SetWorldOrientation(rp3dRot); - } - - // Cache transforms - physicsObject.prevTransform = CURRENT_TF; - } - } - - void SHPhysicsSystem::UpdateEventContainers(const SHCollisionEvent& collisionEvent, CollisionEvents& container) noexcept - { - const auto IT = std::ranges::find_if(container.begin(), container.end(), [&](const SHCollisionEvent& e) - { - const bool ENTITY_MATCH = (e.ids[0] == collisionEvent.ids[0] && e.ids[1] == collisionEvent.ids[1]) - || (e.ids[0] == collisionEvent.ids[1] && e.ids[1] == collisionEvent.ids[0]); - const bool COLLIDERS_MATCH = (e.ids[2] == collisionEvent.ids[2] && e.ids[3] == collisionEvent.ids[3]) - || (e.ids[2] == collisionEvent.ids[3] && e.ids[3] == collisionEvent.ids[2]); - return ENTITY_MATCH && COLLIDERS_MATCH; - }); - - if (IT == container.end()) - container.emplace_back(collisionEvent); - else - IT->collisionState = collisionEvent.collisionState; - } - - void SHPhysicsSystem::ClearInvalidCollisions() noexcept - { - static const auto CLEAR = [](CollisionEvents& container) - { - for (auto eventIter = container.begin(); eventIter != container.end();) - { - const bool CLEAR_EVENT = eventIter->GetCollisionState() == SHCollisionEvent::State::EXIT - || eventIter->GetCollisionState() == SHCollisionEvent::State::INVALID; - - if (CLEAR_EVENT) - eventIter = container.erase(eventIter); - else - ++eventIter; - } - }; - - CLEAR(collisionInfo); - CLEAR(triggerInfo); - } - - SHEventHandle SHPhysicsSystem::AddPhysicsComponent(SHEventPtr addComponentEvent) - { - const auto& EVENT_DATA = reinterpret_cast*>(addComponentEvent.get()); - - static const auto RIGID_BODY_ID = ComponentFamily::GetID(); - static const auto COLLIDER_ID = ComponentFamily::GetID(); - - const auto ADDED_ID = EVENT_DATA->data->addedComponentType; - const bool IS_PHYSICS_COMPONENT = ADDED_ID == RIGID_BODY_ID || ADDED_ID == COLLIDER_ID; - if (IS_PHYSICS_COMPONENT) - { - const EntityID ENTITY_ID = EVENT_DATA->data->eid; - auto* physicsObject = EnsurePhysicsObject(ENTITY_ID); - - auto* transformComponent = SHComponentManager::GetComponent_s(ENTITY_ID); - if (transformComponent == nullptr) - { - SHLOG_ERROR("Entity {} cannot add a Physics Component without a Transform! Component not created!", ENTITY_ID) - return EVENT_DATA->handle; - } - - auto* rigidBodyComponent = SHComponentManager::GetComponent_s(ENTITY_ID); - auto* colliderComponent = SHComponentManager::GetComponent_s(ENTITY_ID); - - if (ADDED_ID == RIGID_BODY_ID) - { - if (colliderComponent != nullptr) - { - world->destroyCollisionBody(physicsObject->rp3dBody); - physicsObject->rp3dBody = nullptr; - } - - rigidBodyComponent->position = transformComponent->GetWorldPosition(); - rigidBodyComponent->orientation = transformComponent->GetWorldOrientation(); - - physicsObject->rp3dBody = world->createRigidBody - ( - rp3d::Transform{ rigidBodyComponent->position, rigidBodyComponent->orientation } - ); - - rigidBodyComponent->rp3dBody = reinterpret_cast(physicsObject->rp3dBody); - - // Add collision shapes back into the body - if (colliderComponent != nullptr) - { - for (auto& collider : colliderComponent->collisionShapes) - physicsObject->AddCollider(&collider); - } - } - - if (ADDED_ID == COLLIDER_ID) - { - SHASSERT(colliderComponent != nullptr, "Collider Component was not added to Entity " + std::to_string(ENTITY_ID) + "!"); - - colliderComponent->position = transformComponent->GetWorldPosition(); - colliderComponent->orientation = transformComponent->GetWorldOrientation(); - colliderComponent->scale = transformComponent->GetWorldScale(); - - if (physicsObject->rp3dBody == nullptr) - { - physicsObject->rp3dBody = world->createCollisionBody - ( - rp3d::Transform{ colliderComponent->position, colliderComponent->orientation } - ); - } - - // Add Collision Shapes - for (auto& collider : colliderComponent->collisionShapes) - physicsObject->AddCollider(&collider); - } - } - - return EVENT_DATA->handle; - } - - SHEventHandle SHPhysicsSystem::RemovePhysicsComponent(SHEventPtr removeComponentEvent) - { - const auto& EVENT_DATA = reinterpret_cast*>(removeComponentEvent.get()); - - static const auto RIGID_BODY_ID = ComponentFamily::GetID(); - static const auto COLLIDER_ID = ComponentFamily::GetID(); - - const auto REMOVED_ID = EVENT_DATA->data->removedComponentType; - const bool IS_PHYSICS_COMPONENT = REMOVED_ID == RIGID_BODY_ID || REMOVED_ID == COLLIDER_ID; - if (IS_PHYSICS_COMPONENT) - { - const EntityID ENTITY_ID = EVENT_DATA->data->eid; - auto* physicsObject = GetPhysicsObject(ENTITY_ID); - - auto* rigidBodyComponent = SHComponentManager::GetComponent_s(ENTITY_ID); - auto* colliderComponent = SHComponentManager::GetComponent_s(ENTITY_ID); - - // Wake up all physics objects - for (auto& [entityID, object] : map) - { - if (SHComponentManager::HasComponent(entityID)) - reinterpret_cast(object.rp3dBody)->setIsSleeping(false); - } - - if (REMOVED_ID == RIGID_BODY_ID && physicsObject != nullptr) - { - world->destroyRigidBody(reinterpret_cast(physicsObject->rp3dBody)); - physicsObject->rp3dBody = nullptr; - - if (colliderComponent != nullptr) - { - // Preserve colliders as a collision body - physicsObject->rp3dBody = world->createCollisionBody - ( - rp3d::Transform{ colliderComponent->position, colliderComponent->orientation } - ); - - for (auto& collider : colliderComponent->collisionShapes) - physicsObject->AddCollider(&collider); - } - } - - if (REMOVED_ID == COLLIDER_ID && physicsObject != nullptr) - { - // Remove all colliders - const int NUM_COLLIDERS = static_cast(physicsObject->rp3dBody->getNbColliders()); - - for (int i = NUM_COLLIDERS - 1; i >= 0; --i) - { - auto* collider = physicsObject->rp3dBody->getCollider(i); - physicsObject->rp3dBody->removeCollider(collider); - } - - // Check for a rigidbody component - if (rigidBodyComponent == nullptr) - physicsObject->rp3dBody = nullptr; - } - - if (physicsObject != nullptr && physicsObject->rp3dBody == nullptr) - DestroyPhysicsObject(ENTITY_ID); - } - - return EVENT_DATA->handle; - } - - SHEventHandle SHPhysicsSystem::ResetWorld(SHEventPtr editorStopEvent) - { - // TODO(Diren): Rebuild world based on how scene reloading is done - - for (auto& [entityID, physicsObject] : map) - { - if (SHComponentManager::HasComponent(entityID)) - { - auto* rp3dRigidBody = reinterpret_cast(physicsObject.rp3dBody); - rp3dRigidBody->resetForce(); - rp3dRigidBody->resetTorque(); - rp3dRigidBody->setLinearVelocity(SHVec3::Zero); - rp3dRigidBody->setAngularVelocity(SHVec3::Zero); - } - } - - return editorStopEvent->handle; - } - -} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/SHPhysicsSystem.h b/SHADE_Engine/src/Physics/SHPhysicsSystem.h deleted file mode 100644 index 55575c73..00000000 --- a/SHADE_Engine/src/Physics/SHPhysicsSystem.h +++ /dev/null @@ -1,207 +0,0 @@ -/**************************************************************************************** - * \file SHPhysicsSystem.h - * \author Diren D Bharwani, diren.dbharwani, 390002520 - * \brief Interface for the Physics System - * - * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or - * disclosure of this file or its contents without the prior written consent - * of DigiPen Institute of Technology is prohibited. -****************************************************************************************/ - -#pragma once - -#include -#include - -#include - -// Project Headers -#include "Components/SHRigidBodyComponent.h" -#include "Components/SHColliderComponent.h" -#include "ECS_Base/System/SHSystemRoutine.h" -#include "ECS_Base/System/SHFixedSystemRoutine.h" -#include "Math/Transform/SHTransformComponent.h" -#include "Scene/SHSceneGraph.h" -#include "SHPhysicsObject.h" -#include "SHPhysicsUtils.h" - - -namespace SHADE -{ - - /*-----------------------------------------------------------------------------------*/ - /* Type Definitions */ - /*-----------------------------------------------------------------------------------*/ - - class SH_API SHPhysicsSystem final : public SHSystem - , public rp3d::EventListener - { - public: - /*---------------------------------------------------------------------------------*/ - /* Type Definitions */ - /*---------------------------------------------------------------------------------*/ - - struct WorldSettings - { - SHVec3 gravity; - uint16_t numVelocitySolverIterations; - uint16_t numPositionSolverIterations; - bool sleepingEnabled; - }; - - using CollisionEvents = std::vector; - - enum class DebugDrawFlags : uint8_t - { - COLLIDER = 1 - , COLLIDER_AABB = 2 - , BROAD_PHASE_AABB = 4 - , CONTACT_POINTS = 8 - , CONTACT_NORMALS = 16 - }; - - /*---------------------------------------------------------------------------------*/ - /* Constructors & Destructor */ - /*---------------------------------------------------------------------------------*/ - - SHPhysicsSystem(); - - /*---------------------------------------------------------------------------------*/ - /* Getter Functions */ - /*---------------------------------------------------------------------------------*/ - - [[nodiscard]] double GetFixedDT () const noexcept; - - [[nodiscard]] bool IsSleepingEnabled () const noexcept; - - [[nodiscard]] SHVec3 GetWorldGravity () const noexcept; - [[nodiscard]] uint16_t GetNumberVelocityIterations () const noexcept; - [[nodiscard]] uint16_t GetNumberPositionIterations () const noexcept; - - [[nodiscard]] bool GetDrawColliders () const noexcept; - [[nodiscard]] bool GetDrawColliderAABBs () const noexcept; - [[nodiscard]] bool GetDrawBroadPhase () const noexcept; - [[nodiscard]] bool GetDrawContactPoints () const noexcept; - [[nodiscard]] bool GetDrawContactNormals () const noexcept; - - [[nodiscard]] const CollisionEvents& GetCollisionInfo () const noexcept; - [[nodiscard]] const CollisionEvents& GetTriggerInfo () const noexcept; - - - /*---------------------------------------------------------------------------------*/ - /* Setter Functions */ - /*---------------------------------------------------------------------------------*/ - - void SetFixedDT (double fixedUpdateRate) noexcept; - void SetWorldGravity (const SHVec3& gravity) const noexcept; - void SetNumberVelocityIterations (uint16_t numVelIterations) const noexcept; - void SetNumberPositionIterations (uint16_t numPosIterations) const noexcept; - void SetSleepingEnabled (bool enableSleeping) const noexcept; - - void SetWorldSettings (const WorldSettings& settings) const noexcept; - - // TODO(Diren): Can the debug draw flags be done through an enum? - void SetDrawColliders (bool shouldDraw) noexcept; - void SetDrawColliderAABBs (bool shouldDraw) noexcept; - void SetDrawBroadPhase (bool shouldDraw) noexcept; - void SetDrawContactPoints (bool shouldDraw) noexcept; - void SetDrawContactNormals (bool shouldDraw) noexcept; - - /*---------------------------------------------------------------------------------*/ - /* Function Members */ - /*---------------------------------------------------------------------------------*/ - - void Init () override; - void Exit () override; - - void AddCollisionShape (EntityID entityID, SHCollisionShape* collider); - void RemoveCollisionShape (EntityID entityID, int index); - - void onContact (const rp3d::CollisionCallback::CallbackData& callbackData) override; - void onTrigger (const rp3d::OverlapCallback::CallbackData& callbackData) override; - - /*---------------------------------------------------------------------------------*/ - /* System Routines */ - /*---------------------------------------------------------------------------------*/ - - class SH_API PhysicsPreUpdate final : public SHSystemRoutine - { - public: - - PhysicsPreUpdate(); - void Execute(double dt) noexcept override; - }; - - class SH_API PhysicsFixedUpdate final : public SHFixedSystemRoutine - { - public: - - PhysicsFixedUpdate(); - void Execute (double dt) noexcept override; - }; - - class SH_API PhysicsPostUpdate final : public SHSystemRoutine - { - public: - - PhysicsPostUpdate(); - void Execute(double dt) noexcept override; - }; - - class SH_API PhysicsDebugDraw final : public SHSystemRoutine - { - public: - PhysicsDebugDraw(); - void Execute(double dt) noexcept override; - }; - - private: - /*---------------------------------------------------------------------------------*/ - /* Type Definitions */ - /*---------------------------------------------------------------------------------*/ - - using EntityObjectMap = std::unordered_map; - - /*---------------------------------------------------------------------------------*/ - /* Data Members */ - /*---------------------------------------------------------------------------------*/ - - bool worldUpdated; - uint8_t debugDrawFlags; - - double interpolationFactor; - double fixedDT; - - rp3d::PhysicsWorld* world; - rp3d::PhysicsCommon factory; - - EntityObjectMap map; - CollisionEvents collisionInfo; - CollisionEvents triggerInfo; - - /*---------------------------------------------------------------------------------*/ - /* Function Members */ - /*---------------------------------------------------------------------------------*/ - - SHPhysicsObject* EnsurePhysicsObject (EntityID entityID) noexcept; - SHPhysicsObject* GetPhysicsObject (EntityID entityID) noexcept; - void DestroyPhysicsObject (EntityID entityID) noexcept; - - static void SyncActiveStates (SHPhysicsObject& physicsObject, bool componentActive) noexcept; - void SyncTransforms () noexcept; - - static void UpdateEventContainers (const SHCollisionEvent& collisionEvent, CollisionEvents& container) noexcept; - void ClearInvalidCollisions () noexcept; - - SHEventHandle AddPhysicsComponent (SHEventPtr addComponentEvent); - SHEventHandle RemovePhysicsComponent (SHEventPtr removeComponentEvent); - SHEventHandle ResetWorld (SHEventPtr editorStopEvent); - - template - || std::is_same_v>> - SHCollisionEvent GenerateCollisionEvent (const RP3DCollisionPair& cp) noexcept; - }; -} // namespace SHADE - -#include "SHPhysicsSystem.hpp" \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/SHPhysicsSystem.hpp b/SHADE_Engine/src/Physics/SHPhysicsSystem.hpp deleted file mode 100644 index 957fb3aa..00000000 --- a/SHADE_Engine/src/Physics/SHPhysicsSystem.hpp +++ /dev/null @@ -1,84 +0,0 @@ -/**************************************************************************************** - * \file SHPhysicsSystem.hpp - * \author Diren D Bharwani, diren.dbharwani, 390002520 - * \brief Implementation for templated functions the Physics System - * - * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or - * disclosure of this file or its contents without the prior written consent - * of DigiPen Institute of Technology is prohibited. -****************************************************************************************/ - -#pragma once - -#include - -// Primary Header -#include "SHPhysicsSystem.h" - -namespace SHADE -{ - /*-----------------------------------------------------------------------------------*/ - /* Private Function Member Definitions */ - /*-----------------------------------------------------------------------------------*/ - - template - SHCollisionEvent SHPhysicsSystem::GenerateCollisionEvent(const RP3DCollisionPair& cp) noexcept - { - static const auto MATCH_COLLIDER = [] - ( - const SHPhysicsObject& physicsObject - , const rp3d::Entity colliderID - )->uint32_t - { - for (uint32_t i = 0; i < physicsObject.rp3dBody->getNbColliders(); ++i) - { - const auto* collider = physicsObject.rp3dBody->getCollider(i); - if (collider->getEntity() == colliderID) - return i; - } - - return std::numeric_limits::max(); - }; - - SHCollisionEvent cInfo; - - // Update collision state - cInfo.collisionState = static_cast(cp.getEventType()); - - // Match body and collider for collision event - const rp3d::Entity body1 = cp.getBody1()->getEntity(); - const rp3d::Entity body2 = cp.getBody2()->getEntity(); - const rp3d::Entity collider1 = cp.getCollider1()->getEntity(); - const rp3d::Entity collider2 = cp.getCollider2()->getEntity(); - - // Find and match both ids - bool matched[2] = { false, false }; - - - for (auto& [entityID, physicsObject] : map) - { - // Match body 1 - if (matched[SHCollisionEvent::ENTITY_A] == false && physicsObject.rp3dBody->getEntity() == body1) - { - cInfo.ids[SHCollisionEvent::ENTITY_A] = entityID; - cInfo.ids[SHCollisionEvent::COLLIDER_A] = MATCH_COLLIDER(physicsObject, collider1); - - matched[SHCollisionEvent::ENTITY_A] = true; - } - - // Match body 2 - if (matched[SHCollisionEvent::ENTITY_B] == false && physicsObject.rp3dBody->getEntity() == body2) - { - cInfo.ids[SHCollisionEvent::ENTITY_B] = entityID; - cInfo.ids[SHCollisionEvent::COLLIDER_B] = MATCH_COLLIDER(physicsObject, collider2); - - matched[SHCollisionEvent::ENTITY_B] = true; - } - - if (matched[SHCollisionEvent::ENTITY_A] == true && matched[SHCollisionEvent::ENTITY_B] == true) - return cInfo; - } - - return cInfo; - } -} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/SHPhysicsSystemInterface.cpp b/SHADE_Engine/src/Physics/SHPhysicsSystemInterface.cpp deleted file mode 100644 index 4b292340..00000000 --- a/SHADE_Engine/src/Physics/SHPhysicsSystemInterface.cpp +++ /dev/null @@ -1,65 +0,0 @@ -/************************************************************************************//*! -\file SHPhysicsSystemInterface.cpp -\author Tng Kah Wei, kahwei.tng, 390009620 -\par email: kahwei.tng\@digipen.edu -\date Oct 31, 2022 -\brief Contains the definitions of the functions of the static - SHPhysicsSystemInterface class. - -Copyright (C) 2022 DigiPen Institute of Technology. -Reproduction or disclosure of this file or its contents without the prior written consent -of DigiPen Institute of Technology is prohibited. -*//*************************************************************************************/ -// Precompiled Headers -#include "SHpch.h" -// Primary Header -#include "SHPhysicsSystemInterface.h" -// Project Includes -#include "ECS_Base/Managers/SHSystemManager.h" -#include "Physics/SHPhysicsSystem.h" -#include "Physics/SHPhysicsUtils.h" - -namespace SHADE -{ - /*-----------------------------------------------------------------------------------*/ - /* Static Usage Functions */ - /*-----------------------------------------------------------------------------------*/ - const std::vector& SHPhysicsSystemInterface::GetCollisionInfo() noexcept - { - static std::vector emptyVec; - - auto phySystem = SHSystemManager::GetSystem(); - if (phySystem) - { - return phySystem->GetCollisionInfo(); - } - - SHLOG_WARNING("[SHPhysicsSystemInterface] Failed to get collision events. Empty vector returned instead."); - return emptyVec; - } - const std::vector& SHPhysicsSystemInterface::GetTriggerInfo() noexcept - { - static std::vector emptyVec; - - auto phySystem = SHSystemManager::GetSystem(); - if (phySystem) - { - return phySystem->GetTriggerInfo(); - } - - SHLOG_WARNING("[SHPhysicsSystemInterface] Failed to get trigger events. Empty vector returned instead."); - return emptyVec; - } - - double SHPhysicsSystemInterface::GetFixedDT() noexcept - { - auto phySystem = SHSystemManager::GetSystem(); - if (phySystem) - { - return phySystem->GetFixedDT(); - } - - SHLOG_WARNING("[SHPhysicsSystemInterface] Failed to get fixed delta time. 0.0 returned instead."); - return 0.0; - } -} diff --git a/SHADE_Engine/src/Physics/SHPhysicsWorld.cpp b/SHADE_Engine/src/Physics/SHPhysicsWorld.cpp new file mode 100644 index 00000000..85e76702 --- /dev/null +++ b/SHADE_Engine/src/Physics/SHPhysicsWorld.cpp @@ -0,0 +1,71 @@ +/**************************************************************************************** + * \file SHPhysicsWorld.cpp + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Implementation for a Physics World. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#include + +// Primary Header +#include "SHPhysicsWorld.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Constructors & Destructor Definitions */ + /*-----------------------------------------------------------------------------------*/ + + SHPhysicsWorldState::SHPhysicsWorldState() noexcept + : world { nullptr } + {} + + /*-----------------------------------------------------------------------------------*/ + /* Public Function Members Definitions */ + /*-----------------------------------------------------------------------------------*/ + + void SHPhysicsWorldState::CreateWorld(rp3d::PhysicsCommon& factory) + { + rp3d::PhysicsWorld::WorldSettings rp3dWorldSettings; + rp3dWorldSettings.gravity = settings.gravity; + rp3dWorldSettings.defaultVelocitySolverNbIterations = settings.numVelocitySolverIterations; + rp3dWorldSettings.defaultPositionSolverNbIterations = settings.numPositionSolverIterations; + rp3dWorldSettings.isSleepingEnabled = settings.sleepingEnabled; + + // These are my preferred default values. QoL for modifying these. + rp3dWorldSettings.defaultBounciness = 0.0f; + rp3dWorldSettings.defaultFrictionCoefficient = 0.4f; + + world = factory.createPhysicsWorld(rp3dWorldSettings); + world->setContactsPositionCorrectionTechnique(rp3d::ContactsPositionCorrectionTechnique::SPLIT_IMPULSES); + } + + void SHPhysicsWorldState::DestroyWorld(rp3d::PhysicsCommon& factory) + { + if (!world) + return; + + factory.destroyPhysicsWorld(world); + world = nullptr; + } + + void SHPhysicsWorldState::UpdateSettings() const noexcept + { + if (!world) + { + SHLOGV_ERROR("Unable to update Physics World settings without creating a world!") + return; + } + + world->setGravity(settings.gravity); + world->setNbIterationsVelocitySolver(settings.numVelocitySolverIterations); + world->setNbIterationsPositionSolver(settings.numPositionSolverIterations); + world->enableSleeping(settings.sleepingEnabled); + } + + + +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/SHPhysicsWorld.h b/SHADE_Engine/src/Physics/SHPhysicsWorld.h new file mode 100644 index 00000000..c5152c44 --- /dev/null +++ b/SHADE_Engine/src/Physics/SHPhysicsWorld.h @@ -0,0 +1,74 @@ +/**************************************************************************************** + * \file SHPhysicsWorld.h + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Interface for a Physics World. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#pragma once + +#include + +// Project Headers +#include "Math/SHMath.h" +#include "SH_API.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*-----------------------------------------------------------------------------------*/ + + struct SH_API SHPhysicsWorldState + { + public: + + /*---------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*---------------------------------------------------------------------------------*/ + + struct WorldSettings + { + public: + /*-------------------------------------------------------------------------------*/ + /* Data Members */ + /*-------------------------------------------------------------------------------*/ + + SHVec3 gravity = SHVec3{ 0.0f, -9.81f, 0.0f }; + uint16_t numVelocitySolverIterations = 10; + uint16_t numPositionSolverIterations = 5; + bool sleepingEnabled = true; + }; + + /*---------------------------------------------------------------------------------*/ + /* Data Members */ + /*---------------------------------------------------------------------------------*/ + + rp3d::PhysicsWorld* world; + WorldSettings settings; + + /*---------------------------------------------------------------------------------*/ + /* Constructors & Destructor */ + /*---------------------------------------------------------------------------------*/ + + SHPhysicsWorldState() noexcept; + + /*---------------------------------------------------------------------------------*/ + /* Function Members */ + /*---------------------------------------------------------------------------------*/ + + void CreateWorld (rp3d::PhysicsCommon& factory); + void DestroyWorld (rp3d::PhysicsCommon& factory); + + /** + * @brief Applies the current settings to the physics world. The world must be created + * before this is called. + */ + void UpdateSettings () const noexcept; + }; + + +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/System/SHPhysicsDebugDrawSystem.cpp b/SHADE_Engine/src/Physics/System/SHPhysicsDebugDrawSystem.cpp new file mode 100644 index 00000000..3c80883c --- /dev/null +++ b/SHADE_Engine/src/Physics/System/SHPhysicsDebugDrawSystem.cpp @@ -0,0 +1,305 @@ +/**************************************************************************************** + * \file SHPhysicsDebugDrawSystem.cpp + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Implementation for the Physics Debug Draw System + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#include + +// Primary Header +#include "SHPhysicsDebugDrawSystem.h" + +// Project Headers +#include "ECS_Base/Managers/SHSystemManager.h" +#include "Editor/SHEditor.h" +#include "Scene/SHSceneManager.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Static Data Member Definitions */ + /*-----------------------------------------------------------------------------------*/ + + const SHPhysicsDebugDrawSystem::DebugDrawFunction SHPhysicsDebugDrawSystem::drawFunctions[NUM_FLAGS] = + { + drawColliders + , drawColliderAABBs + , drawBroadPhaseAABBs + , drawContactPoints + , drawContactNormals + , drawRaycasts + }; + + SHVec3 SHPhysicsDebugDrawSystem::boxVertices[NUM_BOX_VERTICES]; + + /*-----------------------------------------------------------------------------------*/ + /* Constructors & Destructor Definitions */ + /*-----------------------------------------------------------------------------------*/ + + SHPhysicsDebugDrawSystem::SHPhysicsDebugDrawSystem() noexcept + : debugDrawFlags { 0 } + , physicsSystem { nullptr } + { + debugColours[SHUtilities::ConvertEnum(DebugDrawFlags::COLLIDER)] = SHColour::GREEN; + debugColours[SHUtilities::ConvertEnum(DebugDrawFlags::COLLIDER_AABB)] = SHColour::YELLOW; + debugColours[SHUtilities::ConvertEnum(DebugDrawFlags::BROAD_PHASE_AABB)] = SHColour::CYAN; + debugColours[SHUtilities::ConvertEnum(DebugDrawFlags::CONTACT_POINTS)] = SHColour::RED; + debugColours[SHUtilities::ConvertEnum(DebugDrawFlags::CONTACT_NORMALS)] = SHColour::RED; + debugColours[SHUtilities::ConvertEnum(DebugDrawFlags::RAYCASTS)] = SHColour::ORANGE; + } + + SHPhysicsDebugDrawSystem::PhysicsDebugDrawRoutine::PhysicsDebugDrawRoutine() + : SHSystemRoutine { "Physics Debug Draw", true } + {} + + /*-----------------------------------------------------------------------------------*/ + /* Getter Function Definitions */ + /*-----------------------------------------------------------------------------------*/ + + bool SHPhysicsDebugDrawSystem::GetDebugDrawFlag(DebugDrawFlags flag) const noexcept + { + const auto INT_FLAG = SHUtilities::ConvertEnum(flag); + if (INT_FLAG < 0 || INT_FLAG >= NUM_FLAGS) + { + SHLOG_ERROR("Invalid Debug Draw Flag Passed {} in. Unable to get debug draw state!", INT_FLAG) + return false; + } + + return debugDrawFlags & 1U << SHUtilities::ConvertEnum(flag); + } + + /*-----------------------------------------------------------------------------------*/ + /* Setter Function Definitions */ + /*-----------------------------------------------------------------------------------*/ + + void SHPhysicsDebugDrawSystem::SetDebugDrawFlag(DebugDrawFlags flag, bool value) noexcept + { + const auto INT_FLAG = SHUtilities::ConvertEnum(flag); + if (INT_FLAG < 0 || INT_FLAG >= NUM_FLAGS) + { + SHLOG_ERROR("Invalid Debug Draw Flag Passed {} in. Unable to set debug draw state!", INT_FLAG) + return; + } + + value ? (debugDrawFlags |= 1U << INT_FLAG) : (debugDrawFlags &= ~(1U << INT_FLAG)); + } + + /*-----------------------------------------------------------------------------------*/ + /* Public Function Member Definitions */ + /*-----------------------------------------------------------------------------------*/ + + void SHPhysicsDebugDrawSystem::Init() + { + SystemFamily::GetID(); + + SHASSERT(physicsSystem == nullptr, "Non-existent physics system attached to the physics debug draw system!") + physicsSystem = SHSystemManager::GetSystem(); + + // Generate shapes + generateBox(); + } + + void SHPhysicsDebugDrawSystem::Exit() + { + physicsSystem = nullptr; + } + + void SHPhysicsDebugDrawSystem::PhysicsDebugDrawRoutine::Execute(double) noexcept + { + auto* system = reinterpret_cast(GetSystem()); + + auto* debugDrawSystem = SHSystemManager::GetSystem(); + if (debugDrawSystem == nullptr) + { + SHLOG_ERROR("Unable to get a debug draw system for Physics Debug Drawing!") + return; + } + + rp3d::DebugRenderer* rp3dRenderer = nullptr; + #ifdef SHEDITOR + const auto* EDITOR = SHSystemManager::GetSystem(); + if (EDITOR && EDITOR->editorState != SHEditor::State::STOP) + { + rp3dRenderer = &system->physicsSystem->worldState.world->getDebugRenderer(); + rp3dRenderer->setIsDebugItemDisplayed(rp3d::DebugRenderer::DebugItem::CONTACT_POINT, false); + rp3dRenderer->setIsDebugItemDisplayed(rp3d::DebugRenderer::DebugItem::CONTACT_NORMAL, false); + } + #endif + + for (int i = 0; i < SHUtilities::ConvertEnum(DebugDrawFlags::NUM_FLAGS); ++i) + { + const bool DRAW = (system->debugDrawFlags & (1U << i)) > 0; + if (DRAW) + drawFunctions[i](debugDrawSystem, rp3dRenderer); + } + + // Automatically clear the container of raycasts despite debug drawing state + // TODO(Diren): Move this somewhere else + system->physicsSystem->raycaster.ClearFrame(); + } + + /*-----------------------------------------------------------------------------------*/ + /* Private Function Member Definitions */ + /*-----------------------------------------------------------------------------------*/ + + void SHPhysicsDebugDrawSystem::drawColliders(SHDebugDrawSystem* debugRenderer, rp3d::DebugRenderer* rp3dRenderer) noexcept + { + const auto& COLLIDER_SET = SHComponentManager::GetDense(); + for (const auto& COLLIDER : COLLIDER_SET) + { + // Skip inactive colliders + if (!SHSceneManager::CheckNodeAndComponentsActive(COLLIDER.GetEID())) + continue; + + for (auto& collisionShape : COLLIDER.GetCollisionShapes()) + { + switch (collisionShape.GetType()) + { + case SHCollisionShape::Type::BOX: debugDrawBox(debugRenderer, COLLIDER, collisionShape); break; + case SHCollisionShape::Type::SPHERE: debugDrawSphere(debugRenderer, COLLIDER, collisionShape); break; + default: break; + } + } + } + } + + void SHPhysicsDebugDrawSystem::drawColliderAABBs(SHDebugDrawSystem* debugRenderer, rp3d::DebugRenderer* rp3dRenderer) noexcept + { + + } + + void SHPhysicsDebugDrawSystem::drawBroadPhaseAABBs(SHDebugDrawSystem* debugRenderer, rp3d::DebugRenderer* rp3dRenderer) noexcept + { + + } + + void SHPhysicsDebugDrawSystem::drawContactPoints(SHDebugDrawSystem* debugRenderer, rp3d::DebugRenderer* rp3dRenderer) noexcept + { + #ifdef SHEDITOR + const auto* EDITOR = SHSystemManager::GetSystem(); + if (EDITOR && EDITOR->editorState != SHEditor::State::STOP) + { + rp3dRenderer->setIsDebugItemDisplayed(rp3d::DebugRenderer::DebugItem::CONTACT_POINT, true); + const int NUM_TRIS = static_cast(rp3dRenderer->getNbTriangles()); + if (NUM_TRIS == 0) + return; + + const auto& TRI_ARRAY = rp3dRenderer->getTrianglesArray(); + for (int i = 0; i < NUM_TRIS; ++i) + debugRenderer->DrawTri(SHColour::RED, TRI_ARRAY[i].point1, TRI_ARRAY[i].point2, TRI_ARRAY[i].point3); + } + #endif + } + + void SHPhysicsDebugDrawSystem::drawContactNormals(SHDebugDrawSystem* debugRenderer, rp3d::DebugRenderer* rp3dRenderer) noexcept + { + #ifdef SHEDITOR + const auto* EDITOR = SHSystemManager::GetSystem(); + if (EDITOR && EDITOR->editorState != SHEditor::State::STOP) + { + rp3dRenderer->setIsDebugItemDisplayed(rp3d::DebugRenderer::DebugItem::CONTACT_NORMAL, true); + const int NUM_LINES = static_cast(rp3dRenderer->getNbLines()); + if (NUM_LINES == 0) + return; + + const auto& LINE_ARRAY = rp3dRenderer->getLinesArray(); + for (int i = 0; i < NUM_LINES; ++i) + debugRenderer->DrawLine(SHColour::RED, LINE_ARRAY[i].point1, LINE_ARRAY[i].point2); + } + #endif + } + + void SHPhysicsDebugDrawSystem::drawRaycasts(SHDebugDrawSystem* debugRenderer, rp3d::DebugRenderer* rp3dRenderer) noexcept + { + auto* physicsSystem = SHSystemManager::GetSystem(); + if (!physicsSystem) + { + SHLOG_ERROR("Unable to retrieve physics system for debug drawing raycasts!") + return; + } + + const SHColour& RAY_COLOUR = SHColour::ORANGE; + + // Draw all raycast pairs + for (const auto& [ray, raycastResult] : physicsSystem->raycaster.GetRaycasts()) + { + // If infinity, it is an infinite raycast. If not, render the distance in raycastResult. + // Ignore the hit variable as it will always correspond to the length of the raycast, hit or miss. + const float RENDER_DIST = raycastResult.distance == std::numeric_limits::infinity() ? SHRay::MAX_RAYCAST_DIST : raycastResult.distance; + const SHVec3 END_POS = ray.position + (ray.direction * RENDER_DIST); + + debugRenderer->DrawLine(RAY_COLOUR, ray.position, END_POS); + } + } + + + void SHPhysicsDebugDrawSystem::generateBox() noexcept + { + boxVertices[0] = { 0.5f, 0.5f, -0.5f }; // TOP_RIGHT_BACK + boxVertices[1] = { -0.5f, 0.5f, -0.5f }; // TOP_LEFT_BACK + boxVertices[2] = { 0.5f, -0.5f, -0.5f }; // BTM_RIGHT_BACK + boxVertices[3] = { -0.5f, -0.5f, -0.5f }; // BTM_LEFT_BACK + boxVertices[4] = { 0.5f, 0.5f, 0.5f }; // TOP_RIGHT_FRONT + boxVertices[5] = { -0.5f, 0.5f, 0.5f }; // TOP_LEFT_FRONT + boxVertices[6] = { 0.5f, -0.5f, 0.5f }; // BTM_RIGHT_FRONT + boxVertices[7] = { -0.5f, -0.5f, 0.5f }; // BTM_LEFT_FRONT + } + + void SHPhysicsDebugDrawSystem::debugDrawBox(SHDebugDrawSystem* debugRenderer, const SHColliderComponent& colliderComponent, const SHCollisionShape& collisionShape) noexcept + { + auto* BOX = reinterpret_cast(collisionShape.GetShape()); + + // Calculate final position & orientation + const SHVec3 COLLIDER_POS = colliderComponent.GetPosition(); + const SHVec3 BOX_POS = collisionShape.GetPositionOffset(); + const SHQuaternion COLLIDER_ROT = colliderComponent.GetOrientation(); + const SHQuaternion BOX_ROT = SHQuaternion::FromEuler(collisionShape.GetRotationOffset()); + + + const SHMatrix COLLIDER_TR = SHMatrix::Rotate(COLLIDER_ROT) * SHMatrix::Translate(COLLIDER_POS); + const SHMatrix BOX_TRS = SHMatrix::Scale(BOX->GetWorldExtents() * 2.0f) * SHMatrix::Rotate(BOX_ROT) * SHMatrix::Translate(BOX_POS); + + const SHMatrix FINAL_TRS = BOX_TRS * COLLIDER_TR; + + const SHColour COLLIDER_COLOUR = collisionShape.IsTrigger() ? SHColour::PURPLE : SHColour::GREEN; + + std::array transformedVertices; + for (uint32_t i = 0; i < NUM_BOX_VERTICES / 2; ++i) + { + const uint32_t IDX1 = i; + const uint32_t IDX2 = i + NUM_BOX_VERTICES / 2; + + transformedVertices[IDX1] = SHVec3::Transform(boxVertices[IDX1], FINAL_TRS); + transformedVertices[IDX2] = SHVec3::Transform(boxVertices[IDX2], FINAL_TRS); + + // Draw 4 line to connect the quads + debugRenderer->DrawLine(COLLIDER_COLOUR, transformedVertices[IDX1], transformedVertices[IDX2]); + } + + // A, B, C, D + std::array backQuad { transformedVertices[0], transformedVertices[1], transformedVertices[3], transformedVertices[2] }; + debugRenderer->DrawPoly(COLLIDER_COLOUR, backQuad.begin(), backQuad.end()); + + // E, F, G, H + std::array frontQuad { transformedVertices[4], transformedVertices[5], transformedVertices[7], transformedVertices[6] }; + debugRenderer->DrawPoly(COLLIDER_COLOUR, frontQuad.begin(), frontQuad.end()); + } + + void SHPhysicsDebugDrawSystem::debugDrawSphere(SHDebugDrawSystem* debugRenderer, const SHColliderComponent& colliderComponent, const SHCollisionShape& collisionShape) noexcept + { + auto* SPHERE = reinterpret_cast(collisionShape.GetShape()); + + const SHColour COLLIDER_COLOUR = collisionShape.IsTrigger() ? SHColour::PURPLE : SHColour::GREEN; + + // Calculate final position & orientation + const SHQuaternion FINAL_ROT = colliderComponent.GetOrientation() * SHQuaternion::FromEuler(collisionShape.GetRotationOffset()); + const SHMatrix TR = SHMatrix::Rotate(FINAL_ROT) * SHMatrix::Translate(colliderComponent.GetPosition()); + + debugRenderer->DrawSphere(COLLIDER_COLOUR, SHVec3::Transform(collisionShape.GetPositionOffset(), TR), SPHERE->GetWorldRadius()); + } + +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/System/SHPhysicsDebugDrawSystem.h b/SHADE_Engine/src/Physics/System/SHPhysicsDebugDrawSystem.h new file mode 100644 index 00000000..dc703092 --- /dev/null +++ b/SHADE_Engine/src/Physics/System/SHPhysicsDebugDrawSystem.h @@ -0,0 +1,138 @@ +/**************************************************************************************** + * \file SHPhysicsDebugDrawSystem.h + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Interface for the Physics Debug Draw System + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#pragma once + +#include + +// Project Headers +#include "ECS_Base/System/SHSystemRoutine.h" +#include "Graphics/MiddleEnd/Interface/SHDebugDrawSystem.h" +#include "Math/SHColour.h" +#include "SHPhysicsSystem.h" +#include "Tools/Utilities/SHUtilities.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*-----------------------------------------------------------------------------------*/ + + class SH_API SHPhysicsDebugDrawSystem final : public SHSystem + { + public: + /*---------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*---------------------------------------------------------------------------------*/ + + enum class DebugDrawFlags + { + COLLIDER + , COLLIDER_AABB + , BROAD_PHASE_AABB + , CONTACT_POINTS + , CONTACT_NORMALS + , RAYCASTS + + , NUM_FLAGS + }; + + /*---------------------------------------------------------------------------------*/ + /* Constructors & Destructor */ + /*---------------------------------------------------------------------------------*/ + + SHPhysicsDebugDrawSystem() noexcept; + + /*---------------------------------------------------------------------------------*/ + /* Getter Functions */ + /*---------------------------------------------------------------------------------*/ + + bool GetDebugDrawFlag(DebugDrawFlags flag) const noexcept; + + /*---------------------------------------------------------------------------------*/ + /* Setter Functions */ + /*---------------------------------------------------------------------------------*/ + + void SetDebugDrawFlag(DebugDrawFlags flag, bool value) noexcept; + + /*---------------------------------------------------------------------------------*/ + /* Function Members */ + /*---------------------------------------------------------------------------------*/ + + void Init() override; + void Exit() override; + + /*---------------------------------------------------------------------------------*/ + /* System Routines */ + /*---------------------------------------------------------------------------------*/ + + class SH_API PhysicsDebugDrawRoutine final : public SHSystemRoutine + { + public: + /*-------------------------------------------------------------------------------*/ + /* Constructors & Destructor */ + /*-------------------------------------------------------------------------------*/ + + PhysicsDebugDrawRoutine(); + + /*-------------------------------------------------------------------------------*/ + /* Function Members */ + /*-------------------------------------------------------------------------------*/ + void Execute(double dt) noexcept override; + }; + + private: + /*---------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*---------------------------------------------------------------------------------*/ + + using DebugDrawFunction = void(*)(SHDebugDrawSystem*, rp3d::DebugRenderer*) noexcept; + + /*---------------------------------------------------------------------------------*/ + /* Data Members */ + /*---------------------------------------------------------------------------------*/ + + static constexpr int NUM_FLAGS = SHUtilities::ConvertEnum(DebugDrawFlags::NUM_FLAGS); + static const DebugDrawFunction drawFunctions[NUM_FLAGS]; + + // SHAPES INFO + + static constexpr size_t NUM_BOX_VERTICES = 8; + static SHVec3 boxVertices[NUM_BOX_VERTICES]; + + + uint8_t debugDrawFlags; + SHPhysicsSystem* physicsSystem; + SHColour debugColours[NUM_FLAGS]; + + /*---------------------------------------------------------------------------------*/ + /* Function Members */ + /*---------------------------------------------------------------------------------*/ + + // Generic Draw Functions + + static void drawColliders (SHDebugDrawSystem* debugRenderer, rp3d::DebugRenderer* rp3dRenderer) noexcept; + static void drawColliderAABBs (SHDebugDrawSystem* debugRenderer, rp3d::DebugRenderer* rp3dRenderer) noexcept; + static void drawBroadPhaseAABBs (SHDebugDrawSystem* debugRenderer, rp3d::DebugRenderer* rp3dRenderer) noexcept; + static void drawContactPoints (SHDebugDrawSystem* debugRenderer, rp3d::DebugRenderer* rp3dRenderer) noexcept; + static void drawContactNormals (SHDebugDrawSystem* debugRenderer, rp3d::DebugRenderer* rp3dRenderer) noexcept; + static void drawRaycasts (SHDebugDrawSystem* debugRenderer, rp3d::DebugRenderer* rp3dRenderer) noexcept; + + // Shape Generation Functions + + static void generateBox () noexcept; + + // Shape Draw Functions + + static void debugDrawBox (SHDebugDrawSystem* debugRenderer, const SHColliderComponent& colliderComponent, const SHCollisionShape& collisionShape) noexcept; + static void debugDrawSphere (SHDebugDrawSystem* debugRenderer, const SHColliderComponent& colliderComponent, const SHCollisionShape& collisionShape) noexcept; + }; + +} // namespace SHADE diff --git a/SHADE_Engine/src/Physics/System/SHPhysicsSystem.cpp b/SHADE_Engine/src/Physics/System/SHPhysicsSystem.cpp new file mode 100644 index 00000000..89be2614 --- /dev/null +++ b/SHADE_Engine/src/Physics/System/SHPhysicsSystem.cpp @@ -0,0 +1,459 @@ +/**************************************************************************************** + * \file SHPhysicsSystem.cpp + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Implementation for the Physics System + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#include + +// Primary Header +#include "SHPhysicsSystem.h" + +// Project Headers +#include "Assets/SHAssetMacros.h" +#include "ECS_Base/Managers/SHComponentManager.h" +#include "ECS_Base/Managers/SHEntityManager.h" +#include "ECS_Base/Managers/SHSystemManager.h" +#include "Editor/SHEditor.h" +#include "Physics/Collision/SHCollisionTagMatrix.h" +#include "Physics/SHPhysicsEvents.h" +#include "Scene/SHSceneManager.h" +#include "Scripting/SHScriptEngine.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Constructors & Destructor Definitions */ + /*-----------------------------------------------------------------------------------*/ + + SHPhysicsSystem::SHPhysicsSystem() + : worldUpdated { false } + , interpolationFactor { 0.0 } + , fixedDT { DEFAULT_FIXED_STEP } + {} + + /*-----------------------------------------------------------------------------------*/ + /* Getter Function Definitions */ + /*-----------------------------------------------------------------------------------*/ + + double SHPhysicsSystem::GetFixedUpdateRate() const noexcept + { + return 1.0 / fixedDT; + } + + const SHPhysicsWorldState::WorldSettings& SHPhysicsSystem::GetWorldSettings() const noexcept + { + return worldState.settings; + } + + const std::vector& SHPhysicsSystem::GetAllCollisionInfo() const noexcept + { + return collisionListener.GetCollisionInfoContainer(); + } + + const std::vector& SHPhysicsSystem::GetAllTriggerInfo() const noexcept + { + return collisionListener.GetTriggerInfoContainer(); + } + + const SHPhysicsObject* SHPhysicsSystem::GetPhysicsObject(EntityID eid) noexcept + { + return objectManager.GetPhysicsObject(eid); + } + + + const SHPhysicsObjectManager::PhysicsObjectEntityMap& SHPhysicsSystem::GetPhysicsObjects() const noexcept + { + return objectManager.physicsObjects; + } + + /*-----------------------------------------------------------------------------------*/ + /* Setter Function Definitions */ + /*-----------------------------------------------------------------------------------*/ + + void SHPhysicsSystem::SetFixedUpdateRate(double fixedUpdateRate) noexcept + { + fixedDT = 1.0 / fixedUpdateRate; + } + + void SHPhysicsSystem::SetWorldSettings(const SHPhysicsWorldState::WorldSettings& settings) noexcept + { + worldState.settings = settings; + worldState.UpdateSettings(); + } + + /*-----------------------------------------------------------------------------------*/ + /* Public Function Member Definitions */ + /*-----------------------------------------------------------------------------------*/ + + void SHPhysicsSystem::Init() + { + // Initialise collision tags + std::filesystem::path defaultCollisionTagNameFilePath { ASSET_ROOT }; + defaultCollisionTagNameFilePath.append("CollisionTags.SHConfig"); + SHCollisionTagMatrix::Init(defaultCollisionTagNameFilePath); + + // Link Physics Object Manager with System & Raycaster + objectManager.SetFactory(factory); + raycaster.SetObjectManager(&objectManager); + + // Link Collision Listener with System + collisionListener.BindToSystem(this); + + // Subscribe to component events + const std::shared_ptr ADD_COMPONENT_RECEIVER { std::make_shared>(this, &SHPhysicsSystem::addPhysicsComponent) }; + const ReceiverPtr ADD_COMPONENT_RECEIVER_PTR = std::dynamic_pointer_cast(ADD_COMPONENT_RECEIVER); + SHEventManager::SubscribeTo(SH_COMPONENT_ADDED_EVENT, ADD_COMPONENT_RECEIVER_PTR); + + const std::shared_ptr REMOVE_COMPONENT_RECEIVER { std::make_shared>(this, &SHPhysicsSystem::removePhysicsComponent) }; + const ReceiverPtr REMOVE_COMPONENT_RECEIVER_PTR = std::dynamic_pointer_cast(REMOVE_COMPONENT_RECEIVER); + SHEventManager::SubscribeTo(SH_COMPONENT_REMOVED_EVENT, REMOVE_COMPONENT_RECEIVER_PTR); + + #ifdef SHEDITOR + + // Subscribe to Editor State Change Events + const std::shared_ptr ON_PLAY_RECEIVER { std::make_shared>(this, &SHPhysicsSystem::onPlay) }; + const ReceiverPtr ON_PLAY_RECEIVER_PTR = std::dynamic_pointer_cast(ON_PLAY_RECEIVER); + SHEventManager::SubscribeTo(SH_EDITOR_ON_PLAY_EVENT, ON_PLAY_RECEIVER_PTR); + + const std::shared_ptr ON_STOP_RECEIVER { std::make_shared>(this, &SHPhysicsSystem::onStop) }; + const ReceiverPtr ON_STOP_RECEIVER_PTR = std::dynamic_pointer_cast(ON_STOP_RECEIVER); + SHEventManager::SubscribeTo(SH_EDITOR_ON_STOP_EVENT, ON_STOP_RECEIVER_PTR); + + #endif + + } + + void SHPhysicsSystem::Exit() + { + worldState.DestroyWorld(factory); + + // Write collision tag names to file + std::filesystem::path defaultCollisionTagNameFilePath { ASSET_ROOT }; + defaultCollisionTagNameFilePath.append("CollisionTags.SHConfig"); + SHCollisionTagMatrix::Exit(defaultCollisionTagNameFilePath); + } + + void SHPhysicsSystem::BuildScene(SHSceneGraph& sceneGraph) + { + static const auto BUILD_NEW_SCENE_PHYSICS_OBJECT = [&](SHSceneNode* node) + { + const EntityID EID = node->GetEntityID(); + + if (SHComponentManager::HasComponent(EID)) + objectManager.AddRigidBody(EID); + + if (SHComponentManager::HasComponent(EID)) + objectManager.AddCollider(EID); + }; + + //////////////////////////////// + + // Destroy an existing world + if (worldState.world != nullptr) + { + objectManager.RemoveAllObjects(); + objectManager.SetWorld(nullptr); + + collisionListener.ClearContainers(); + raycaster.ClearFrame(); + + worldState.DestroyWorld(factory); + } + + worldState.CreateWorld(factory); + #ifdef _PUBLISH + worldState.world->setIsDebugRenderingEnabled(false); + #else + worldState.world->setIsDebugRenderingEnabled(true); + #endif + + // Link Collision Listener & Raycaster + collisionListener.BindToWorld(worldState.world); + raycaster.BindToWorld(worldState.world); + + // Link with object manager & create all physics objects + objectManager.SetWorld(worldState.world); + + // When building a scene, clear the object manager command queue and build scene objects again. + // This is done to avoid duplicate adds. + while (!objectManager.commandQueue.empty()) + objectManager.commandQueue.pop(); + + sceneGraph.Traverse(BUILD_NEW_SCENE_PHYSICS_OBJECT); + } + + void SHPhysicsSystem::ForceUpdate() + { + if (!worldState.world) + { + SHLOGV_ERROR("Unable to force update without a Physics world!") + return; + } + + auto* scriptingSystem = SHSystemManager::GetSystem(); + if (scriptingSystem == nullptr) + { + SHLOGV_ERROR("Unable to invoke FixedUpdate() on scripts due to missing SHScriptEngine!"); + } + + // Force the physics world to update once + if (scriptingSystem != nullptr) + scriptingSystem->ExecuteFixedUpdates(); + + worldState.world->update(static_cast(fixedDT)); + + // Sync transforms. No interpolation applied here + for (auto& [entityID, physicsObject] : objectManager.physicsObjects) + { + auto* transformComponent = SHComponentManager::GetComponent_s(entityID); + auto* rigidBodyComponent = SHComponentManager::GetComponent_s(entityID); + auto* colliderComponent = SHComponentManager::GetComponent_s(entityID); + + const auto& CURRENT_TF = physicsObject.GetRigidBody()->getTransform(); + const auto& RENDER_POS = CURRENT_TF.getPosition(); + const auto& RENDER_ROT = CURRENT_TF.getOrientation(); + + // Cache transform + physicsObject.prevTransform = CURRENT_TF; + + // Sync with physics components + if (rigidBodyComponent && SHSceneManager::CheckNodeAndComponentsActive(entityID)) + { + rigidBodyComponent->position = RENDER_POS; + rigidBodyComponent->orientation = RENDER_ROT; + } + + if (colliderComponent && SHSceneManager::CheckNodeAndComponentsActive(entityID)) + { + colliderComponent->position = RENDER_POS; + colliderComponent->orientation = RENDER_ROT; + } + + // Set transform for rendering + if (transformComponent) + { + transformComponent->SetWorldPosition(RENDER_POS); + transformComponent->SetWorldOrientation(RENDER_ROT); + } + } + } + + SHPhysicsRaycastResult SHPhysicsSystem::Raycast(const SHRay& ray, float distance) noexcept + { + return raycaster.Raycast(ray, distance); + } + + SHPhysicsRaycastResult SHPhysicsSystem::Linecast(const SHVec3& start, const SHVec3& end) noexcept + { + return raycaster.Linecast(start, end); + } + + SHPhysicsRaycastResult SHPhysicsSystem::ColliderRaycast(EntityID eid, const SHRay& ray, float distance) noexcept + { + return raycaster.ColliderRaycast(eid, ray, distance); + } + + SHPhysicsRaycastResult SHPhysicsSystem::ColliderRaycast(EntityID eid, int shapeIndex, const SHRay& ray, float distance) noexcept + { + return raycaster.ColliderRaycast(eid, shapeIndex, ray, distance); + } + + SHPhysicsRaycastResult SHPhysicsSystem::ColliderLinecast(EntityID eid, const SHVec3& start, const SHVec3& end) noexcept + { + return raycaster.ColliderLinecast(eid, start, end); + } + + SHPhysicsRaycastResult SHPhysicsSystem::ColliderLinecast(EntityID eid, int shapeIndex, const SHVec3& start, const SHVec3& end) noexcept + { + return raycaster.ColliderLinecast(eid, shapeIndex, start, end); + } + + void SHPhysicsSystem::AddCollisionShape(EntityID eid, int shapeIndex) + { + static const auto ADD_SHAPE = [&](EntityID entityID, int index) + { + objectManager.AddCollisionShape(entityID, index); + + auto* colliderComponent = SHComponentManager::GetComponent(entityID); + auto& collisionShape = colliderComponent->GetCollisionShape(index); + + const SHPhysicsColliderAddedEvent COLLIDER_ADDED_EVENT_DATA + { + .entityID = entityID + , .colliderType = collisionShape.GetType() + , .colliderIndex = index + }; + + SHEventManager::BroadcastEvent(COLLIDER_ADDED_EVENT_DATA, SH_PHYSICS_COLLIDER_ADDED_EVENT); + }; + + #ifdef SHEDITOR + + const auto* EDITOR = SHSystemManager::GetSystem(); + if (EDITOR && EDITOR->editorState != SHEditor::State::STOP) + ADD_SHAPE(eid, shapeIndex); + + #else + + ADD_SHAPE(eid, shapeIndex); + + #endif + } + + void SHPhysicsSystem::RemoveCollisionShape(EntityID eid, int shapeIndex) + { + static const auto REMOVE_SHAPE = [&](EntityID entityID, int index) + { + objectManager.RemoveCollisionShape(entityID, index); + + const SHPhysicsColliderRemovedEvent COLLIDER_REMOVED_EVENT_DATA + { + .entityID = entityID + , .colliderIndex = index + }; + + SHEventManager::BroadcastEvent(COLLIDER_REMOVED_EVENT_DATA, SH_PHYSICS_COLLIDER_REMOVED_EVENT); + }; + + #ifdef SHEDITOR + + const auto* EDITOR = SHSystemManager::GetSystem(); + if (EDITOR && EDITOR->editorState != SHEditor::State::STOP) + REMOVE_SHAPE(eid, shapeIndex); + + #else + + REMOVE_SHAPE(eid, shapeIndex); + + #endif + } + + /*-----------------------------------------------------------------------------------*/ + /* Private Function Member Definitions */ + /*-----------------------------------------------------------------------------------*/ + + SHEventHandle SHPhysicsSystem::addPhysicsComponent(SHEventPtr addComponentEvent) noexcept + { + const auto& EVENT_DATA = reinterpret_cast*>(addComponentEvent.get()); + + static const auto RIGID_BODY_ID = ComponentFamily::GetID(); + static const auto COLLIDER_ID = ComponentFamily::GetID(); + + const auto ADDED_ID = EVENT_DATA->data->addedComponentType; + const bool IS_PHYSICS_COMPONENT = ADDED_ID == RIGID_BODY_ID || ADDED_ID == COLLIDER_ID; + if (IS_PHYSICS_COMPONENT) + { + const EntityID EID = EVENT_DATA->data->eid; + + // We only add tell the physics object manager to add a component if the scene is played + + #ifdef SHEDITOR + + const auto* EDITOR = SHSystemManager::GetSystem(); + + if (EDITOR && EDITOR->editorState != SHEditor::State::STOP) + ADDED_ID == RIGID_BODY_ID ? objectManager.AddRigidBody(EID) : objectManager.AddCollider(EID); + + #else + + ADDED_ID == RIGID_BODY_ID ? objectManager.AddRigidBody(EID) : objectManager.AddCollider(EID); + + #endif + } + + return EVENT_DATA->handle; + } + + SHEventHandle SHPhysicsSystem::removePhysicsComponent(SHEventPtr removeComponentEvent) noexcept + { + const auto& EVENT_DATA = reinterpret_cast*>(removeComponentEvent.get()); + + static const auto RIGID_BODY_ID = ComponentFamily::GetID(); + static const auto COLLIDER_ID = ComponentFamily::GetID(); + + const auto REMOVED_ID = EVENT_DATA->data->removedComponentType; + const bool IS_PHYSICS_COMPONENT = REMOVED_ID == RIGID_BODY_ID || REMOVED_ID == COLLIDER_ID; + if (IS_PHYSICS_COMPONENT) + { + const EntityID EID = EVENT_DATA->data->eid; + + // We only add tell the physics object manager to remove a component if the scene is played + + #ifdef SHEDITOR + + const auto* EDITOR = SHSystemManager::GetSystem(); + + if (EDITOR && EDITOR->editorState != SHEditor::State::STOP) + REMOVED_ID == RIGID_BODY_ID ? objectManager.RemoveRigidBody(EID) : objectManager.RemoveCollider(EID); + + #else + + REMOVED_ID == RIGID_BODY_ID ? objectManager.RemoveRigidBody(EID) : objectManager.RemoveCollider(EID); + + #endif + } + + return EVENT_DATA->handle; + } + + SHEventHandle SHPhysicsSystem::onPlay(SHEventPtr onPlayEvent) + { + static const auto BUILD_PHYSICS_OBJECT = [&](SHSceneNode* node) + { + const EntityID EID = node->GetEntityID(); + + if (SHComponentManager::HasComponent(EID)) + objectManager.AddRigidBody(EID); + + if (SHComponentManager::HasComponent(EID)) + objectManager.AddCollider(EID); + }; + + //////////////////////////////// + + // Create physics world + if (worldState.world != nullptr) + return onPlayEvent->handle; + + worldState.CreateWorld(factory); + #ifdef _PUBLISH + worldState.world->setIsDebugRenderingEnabled(false); + #else + worldState.world->setIsDebugRenderingEnabled(true); + #endif + + // Link Collision Listener & Raycaster + collisionListener.BindToWorld(worldState.world); + raycaster.BindToWorld(worldState.world); + + // Link with object manager & create all physics objects + objectManager.SetWorld(worldState.world); + + // Build scene + SHSceneManager::GetCurrentSceneGraph().Traverse(BUILD_PHYSICS_OBJECT); + + return onPlayEvent->handle; + } + + SHEventHandle SHPhysicsSystem::onStop(SHEventPtr onStopEvent) + { + // Remove all physics objects + objectManager.RemoveAllObjects(); + objectManager.SetWorld(nullptr); + + // Clear all collision info + // Collision listener is automatically unbound when world is destroyed + collisionListener.ClearContainers(); + raycaster.ClearFrame(); + + // Destroy the world + worldState.DestroyWorld(factory); + + return onStopEvent->handle; + } +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/System/SHPhysicsSystem.h b/SHADE_Engine/src/Physics/System/SHPhysicsSystem.h new file mode 100644 index 00000000..f7340d31 --- /dev/null +++ b/SHADE_Engine/src/Physics/System/SHPhysicsSystem.h @@ -0,0 +1,292 @@ +/**************************************************************************************** + * \file SHPhysicsSystem.h + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Interface for the Physics System + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#pragma once + +#include +#include + +// External Dependencies +#include + +// Project Headers +#include "ECS_Base/System/SHSystemRoutine.h" +#include "ECS_Base/System/SHFixedSystemRoutine.h" + +#include "Math/Transform/SHTransformComponent.h" +#include "Physics/Collision/SHCollisionListener.h" +#include "Physics/Collision/SHPhysicsRaycaster.h" +#include "Physics/Interface/SHRigidBodyComponent.h" +#include "Physics/Interface/SHColliderComponent.h" +#include "Physics/PhysicsObject/SHPhysicsObjectManager.h" +#include "Physics/SHPhysicsWorld.h" +#include "Scene/SHSceneGraph.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*-----------------------------------------------------------------------------------*/ + + class SH_API SHPhysicsSystem final : public SHSystem + { + private: + /*---------------------------------------------------------------------------------*/ + /* Friends */ + /*---------------------------------------------------------------------------------*/ + + friend class SHPhysicsDebugDrawSystem; + + public: + /*---------------------------------------------------------------------------------*/ + /* Constructors & Destructor */ + /*---------------------------------------------------------------------------------*/ + + SHPhysicsSystem(); + + /*---------------------------------------------------------------------------------*/ + /* Getter Functions */ + /*---------------------------------------------------------------------------------*/ + + [[nodiscard]] double GetFixedUpdateRate () const noexcept; + [[nodiscard]] const SHPhysicsWorldState::WorldSettings& GetWorldSettings () const noexcept; + + [[nodiscard]] const std::vector& GetAllCollisionInfo () const noexcept; + [[nodiscard]] const std::vector& GetAllTriggerInfo () const noexcept; + + [[nodiscard]] const SHPhysicsObject* GetPhysicsObject (EntityID eid) noexcept; + [[nodiscard]] const SHPhysicsObjectManager::PhysicsObjectEntityMap& GetPhysicsObjects () const noexcept; + /*---------------------------------------------------------------------------------*/ + /* Setter Functions */ + /*---------------------------------------------------------------------------------*/ + + void SetFixedUpdateRate (double fixedUpdateRate) noexcept; + void SetWorldSettings (const SHPhysicsWorldState::WorldSettings& settings) noexcept; + + /*---------------------------------------------------------------------------------*/ + /* Function Members */ + /*---------------------------------------------------------------------------------*/ + + void Init () override; + void Exit () override; + + void BuildScene (SHSceneGraph& sceneGraph); + void ForceUpdate (); + + + /** + * @brief Casts a ray into the world. + * @param ray The ray to cast. + * @param distance The distance to cast the ray. Defaults to infinity. + * @return The result of the raycast. + */ + SHPhysicsRaycastResult Raycast + ( + const SHRay& ray + , float distance = std::numeric_limits::infinity() + ) noexcept; + + /** + * @brief Casts a bounded ray into the world. + * @param start The starting point of the ray. + * @param end The end point of the ray. + * @return The result of the raycast. + */ + SHPhysicsRaycastResult Linecast + ( + const SHVec3& start + , const SHVec3& end + ) noexcept; + + /** + * @brief Casts a ray at a body with colliders. + * @param eid The entity to cast to. + * @param ray The ray to cast. + * @param distance The distance to cast the ray. Defaults to infinity. + * @return The result of the raycast. + */ + SHPhysicsRaycastResult ColliderRaycast + ( + EntityID eid + , const SHRay& ray + , float distance = std::numeric_limits::infinity() + ) noexcept; + + /** + * @brief Casts a ray at a collider. + * @param eid The entity to cast to. + * @param shapeIndex The index of the collision shape. + * @param ray The ray to cast. + * @param distance The distance to cast the ray. Defaults to infinity. + * @return The result of the raycast. + */ + SHPhysicsRaycastResult ColliderRaycast + ( + EntityID eid + , int shapeIndex + , const SHRay& ray + , float distance = std::numeric_limits::infinity() + ) noexcept; + + /** + * @brief Casts a bounded ray at a body with colliders. + * @param eid + * @param start + * @param end + * @return The result of the raycast. + */ + SHPhysicsRaycastResult ColliderLinecast + ( + EntityID eid + , const SHVec3& start + , const SHVec3& end + ) noexcept; + + /** + * @brief + * @param eid + * @param shapeIndex + * @param start + * @param end + * @return The result of the raycast. + */ + SHPhysicsRaycastResult ColliderLinecast + ( + EntityID eid + , int shapeIndex + , const SHVec3& start + , const SHVec3& end + ) noexcept; + + // Specific Handling for Collision Shapes as they are not under the Component System. + // This is done as events need to be sent out. + // TODO(Diren): Consider using a static method through the ColliderComponent. + + void AddCollisionShape (EntityID eid, int shapeIndex); + void RemoveCollisionShape (EntityID eid, int shapeIndex); + + /*---------------------------------------------------------------------------------*/ + /* System Routines */ + /*---------------------------------------------------------------------------------*/ + + class SH_API PhysicsPreUpdate final : public SHSystemRoutine + { + public: + /*-------------------------------------------------------------------------------*/ + /* Constructors & Destructor */ + /*-------------------------------------------------------------------------------*/ + + PhysicsPreUpdate(); + + /*-------------------------------------------------------------------------------*/ + /* Function Members */ + /*-------------------------------------------------------------------------------*/ + + void Execute(double dt) noexcept override; + + private: + /*-------------------------------------------------------------------------------*/ + /* Function Members */ + /*-------------------------------------------------------------------------------*/ + + void syncRigidBodyActive (EntityID eid, SHPhysicsObject& physicsObject) const noexcept; + void syncColliderActive (EntityID eid, SHPhysicsObject& physicsObject) const noexcept; + static void syncOnPlay (EntityID eid, SHPhysicsObject& physicsObject) noexcept; + + static void preUpdateSyncTransform + ( + SHPhysicsObject& physicsObject + , SHTransformComponent* transformComponent + , SHRigidBodyComponent* rigidBodyComponent + , SHColliderComponent* colliderComponent + ) noexcept; + }; + + class SH_API PhysicsFixedUpdate final : public SHFixedSystemRoutine + { + public: + /*-------------------------------------------------------------------------------*/ + /* Constructors & Destructor */ + /*-------------------------------------------------------------------------------*/ + + PhysicsFixedUpdate(); + + /*-------------------------------------------------------------------------------*/ + /* Function Members */ + /*-------------------------------------------------------------------------------*/ + + void Execute (double dt) noexcept override; + }; + + class SH_API PhysicsPostUpdate final : public SHSystemRoutine + { + public: + /*-------------------------------------------------------------------------------*/ + /* Constructors & Destructor */ + /*-------------------------------------------------------------------------------*/ + + PhysicsPostUpdate(); + + /*-------------------------------------------------------------------------------*/ + /* Function Members */ + /*-------------------------------------------------------------------------------*/ + + void Execute(double dt) noexcept override; + + private: + + /*-------------------------------------------------------------------------------*/ + /* Function Members */ + /*-------------------------------------------------------------------------------*/ + + static void postUpdateSyncTransforms + ( + SHPhysicsObject& physicsObject + , SHTransformComponent* transformComponent + , SHRigidBodyComponent* rigidBodyComponent + , SHColliderComponent* colliderComponent + , double interpolationFactor + ) noexcept; + }; + + private: + /*---------------------------------------------------------------------------------*/ + /* Data Members */ + /*---------------------------------------------------------------------------------*/ + + // System data + + bool worldUpdated; + double interpolationFactor; + double fixedDT; + + // rp3d + + rp3d::PhysicsCommon factory; + + // Interface objects + + SHPhysicsWorldState worldState; + SHPhysicsObjectManager objectManager; + SHCollisionListener collisionListener; + SHPhysicsRaycaster raycaster; + + /*---------------------------------------------------------------------------------*/ + /* Function Members */ + /*---------------------------------------------------------------------------------*/ + + SHEventHandle addPhysicsComponent (SHEventPtr addComponentEvent) noexcept; + SHEventHandle removePhysicsComponent (SHEventPtr removeComponentEvent) noexcept; + + SHEventHandle onPlay (SHEventPtr onPlayEvent); + SHEventHandle onStop (SHEventPtr onStopEvent); + SHEventHandle buildScene (SHEventPtr onSceneChangeEvent); + }; +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Physics/System/SHPhysicsSystemInterface.cpp b/SHADE_Engine/src/Physics/System/SHPhysicsSystemInterface.cpp new file mode 100644 index 00000000..a028ffb5 --- /dev/null +++ b/SHADE_Engine/src/Physics/System/SHPhysicsSystemInterface.cpp @@ -0,0 +1,136 @@ +/************************************************************************************//*! +\file SHPhysicsSystemInterface.cpp +\author Tng Kah Wei, kahwei.tng, 390009620 +\par email: kahwei.tng\@digipen.edu +\date Oct 31, 2022 +\brief Contains the definitions of the functions of the static + SHPhysicsSystemInterface class. + +Copyright (C) 2022 DigiPen Institute of Technology. +Reproduction or disclosure of this file or its contents without the prior written consent +of DigiPen Institute of Technology is prohibited. +*//*************************************************************************************/ +// Precompiled Headers +#include "SHpch.h" +// Primary Header +#include "SHPhysicsSystemInterface.h" +// Project Includes +#include "ECS_Base/Managers/SHSystemManager.h" +#include "Physics/System/SHPhysicsSystem.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Static Usage Functions */ + /*-----------------------------------------------------------------------------------*/ + const std::vector& SHPhysicsSystemInterface::GetCollisionInfo() noexcept + { + static std::vector emptyVec; + + auto phySystem = SHSystemManager::GetSystem(); + if (phySystem) + { + return phySystem->GetAllCollisionInfo(); + } + + SHLOGV_WARNING("Failed to get collision events. Empty vector returned instead."); + return emptyVec; + } + const std::vector& SHPhysicsSystemInterface::GetTriggerInfo() noexcept + { + static std::vector emptyVec; + + auto phySystem = SHSystemManager::GetSystem(); + if (phySystem) + { + return phySystem->GetAllTriggerInfo(); + } + + SHLOGV_WARNING("Failed to get trigger events. Empty vector returned instead."); + return emptyVec; + } + + double SHPhysicsSystemInterface::GetFixedDT() noexcept + { + auto phySystem = SHSystemManager::GetSystem(); + if (phySystem) + { + return phySystem->GetFixedUpdateRate(); + } + + SHLOGV_WARNING("Failed to get fixed delta time. 0.0 returned instead."); + return 0.0; + } + + SHPhysicsRaycastResult SHPhysicsSystemInterface::Raycast(const SHRay& ray, float distance) noexcept + { + auto* physicsSystem = SHSystemManager::GetSystem(); + if (physicsSystem) + { + return physicsSystem->Raycast(ray, distance); + } + + SHLOGV_WARNING("Failed to get the physics system. No ray was casted."); + return SHPhysicsRaycastResult{}; + } + + SHPhysicsRaycastResult SHPhysicsSystemInterface::Linecast(const SHVec3& start, const SHVec3& end) noexcept + { + auto* physicsSystem = SHSystemManager::GetSystem(); + if (physicsSystem) + { + return physicsSystem->Linecast(start, end); + } + + SHLOGV_WARNING("Failed to get the physics system. No ray was casted."); + return SHPhysicsRaycastResult{}; + } + + SHPhysicsRaycastResult SHPhysicsSystemInterface::ColliderRaycast(EntityID eid, const SHRay& ray, float distance) noexcept + { + auto* physicsSystem = SHSystemManager::GetSystem(); + if (physicsSystem) + { + return physicsSystem->ColliderRaycast(eid, ray, distance); + } + + SHLOGV_WARNING("Failed to get the physics system. No ray was casted."); + return SHPhysicsRaycastResult{}; + } + + SHPhysicsRaycastResult SHPhysicsSystemInterface::ColliderRaycast(EntityID eid, int shapeIndex, const SHRay& ray, float distance) noexcept + { + auto* physicsSystem = SHSystemManager::GetSystem(); + if (physicsSystem) + { + return physicsSystem->ColliderRaycast(eid, shapeIndex, ray, distance); + } + + SHLOGV_WARNING("Failed to get the physics system. No ray was casted."); + return SHPhysicsRaycastResult{}; + } + + SHPhysicsRaycastResult SHPhysicsSystemInterface::ColliderLinecast(EntityID eid, const SHVec3& start, const SHVec3& end) noexcept + { + auto* physicsSystem = SHSystemManager::GetSystem(); + if (physicsSystem) + { + return physicsSystem->ColliderLinecast(eid, start, end); + } + + SHLOGV_WARNING("Failed to get the physics system. No ray was casted."); + return SHPhysicsRaycastResult{}; + } + + SHPhysicsRaycastResult SHPhysicsSystemInterface::ColliderLinecast(EntityID eid, int shapeIndex, const SHVec3& start, const SHVec3& end) noexcept + { + auto* physicsSystem = SHSystemManager::GetSystem(); + if (physicsSystem) + { + return physicsSystem->ColliderLinecast(eid, shapeIndex, start, end); + } + + SHLOGV_WARNING("Failed to get the physics system. No ray was casted."); + return SHPhysicsRaycastResult{}; + } +} diff --git a/SHADE_Engine/src/Physics/SHPhysicsSystemInterface.h b/SHADE_Engine/src/Physics/System/SHPhysicsSystemInterface.h similarity index 61% rename from SHADE_Engine/src/Physics/SHPhysicsSystemInterface.h rename to SHADE_Engine/src/Physics/System/SHPhysicsSystemInterface.h index da6a0433..0065aee3 100644 --- a/SHADE_Engine/src/Physics/SHPhysicsSystemInterface.h +++ b/SHADE_Engine/src/Physics/System/SHPhysicsSystemInterface.h @@ -14,12 +14,21 @@ of DigiPen Institute of Technology is prohibited. // STL Includes #include +// Project Headers +#include "ECS_Base/Entity/SHEntity.h" + + namespace SHADE { /*-----------------------------------------------------------------------------------*/ /* Forward Declarations */ /*-----------------------------------------------------------------------------------*/ - class SHCollisionEvent; + + class SHCollisionInfo; + class SHVec3; + struct SHRay; + struct SHPhysicsRaycastResult; + /*-----------------------------------------------------------------------------------*/ /* Type Definitions */ @@ -39,8 +48,16 @@ namespace SHADE /*---------------------------------------------------------------------------------*/ /* Static Usage Functions */ /*---------------------------------------------------------------------------------*/ - [[nodiscard]] static const std::vector& GetCollisionInfo() noexcept; - [[nodiscard]] static const std::vector& GetTriggerInfo() noexcept; - [[nodiscard]] static double GetFixedDT() noexcept; + + [[nodiscard]] static const std::vector& GetCollisionInfo() noexcept; + [[nodiscard]] static const std::vector& GetTriggerInfo () noexcept; + [[nodiscard]] static double GetFixedDT () noexcept; + + [[nodiscard]] static SHPhysicsRaycastResult Raycast (const SHRay& ray, float distance = std::numeric_limits::infinity()) noexcept; + [[nodiscard]] static SHPhysicsRaycastResult Linecast (const SHVec3& start, const SHVec3& end) noexcept; + [[nodiscard]] static SHPhysicsRaycastResult ColliderRaycast (EntityID eid, const SHRay& ray, float distance = std::numeric_limits::infinity()) noexcept; + [[nodiscard]] static SHPhysicsRaycastResult ColliderRaycast (EntityID eid, int shapeIndex, const SHRay& ray, float distance = std::numeric_limits::infinity()) noexcept; + [[nodiscard]] static SHPhysicsRaycastResult ColliderLinecast (EntityID eid, const SHVec3& start, const SHVec3& end) noexcept; + [[nodiscard]] static SHPhysicsRaycastResult ColliderLinecast (EntityID eid, int shapeIndex, const SHVec3& start, const SHVec3& end) noexcept; }; } diff --git a/SHADE_Engine/src/Physics/System/SHPhysicsSystemRoutines.cpp b/SHADE_Engine/src/Physics/System/SHPhysicsSystemRoutines.cpp new file mode 100644 index 00000000..45f236f3 --- /dev/null +++ b/SHADE_Engine/src/Physics/System/SHPhysicsSystemRoutines.cpp @@ -0,0 +1,397 @@ +/**************************************************************************************** + * \file SHPhysicsSystemRoutines.h + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Implementation for the Physics System Routines + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#include + +// Primary Header +#include "SHPhysicsSystem.h" +// Project Headers +#include "ECS_Base/Managers/SHEntityManager.h" +#include "ECS_Base/Managers/SHSystemManager.h" +#include "Editor/SHEditor.h" +#include "Scene/SHSceneManager.h" +#include "Scripting/SHScriptEngine.h" + +#include "Input/SHInputManager.h" + +/*-------------------------------------------------------------------------------------*/ +/* Local Functions */ +/*-------------------------------------------------------------------------------------*/ + +void testFunction(); + +///////////////////////////////////////////////////////////////////////////////////////// + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Constructors & Destructor Definitions */ + /*-----------------------------------------------------------------------------------*/ + + SHPhysicsSystem::PhysicsPreUpdate::PhysicsPreUpdate() + : SHSystemRoutine { "Physics PreUpdate", true } + {} + + SHPhysicsSystem::PhysicsFixedUpdate::PhysicsFixedUpdate() + : SHFixedSystemRoutine { DEFAULT_FIXED_STEP, "Physics FixedUpdate", false } + {} + + SHPhysicsSystem::PhysicsPostUpdate::PhysicsPostUpdate() + : SHSystemRoutine { "Physics PostUpdate", false } + {} + + /*-----------------------------------------------------------------------------------*/ + /* Public Function Member Definitions */ + /*-----------------------------------------------------------------------------------*/ + + void SHPhysicsSystem::PhysicsPreUpdate::Execute(double) noexcept + { + auto* physicsSystem = reinterpret_cast(GetSystem()); + + #ifdef SHEDITOR + + // Only Sync on Play. + // Otherwise, Components are only holding data until the world is built on play. + const auto* EDITOR = SHSystemManager::GetSystem(); + if (EDITOR && EDITOR->editorState != SHEditor::State::STOP) + { + physicsSystem->objectManager.UpdateCommands(); + + for (auto& [entityID, physicsObject] : physicsSystem->objectManager.physicsObjects) + { + // Ensure a valid physics Object + if (physicsObject.rp3dBody == nullptr) + continue; + + // Sync active states between SHADE & RP3D + syncRigidBodyActive(entityID, physicsObject); + syncColliderActive(entityID, physicsObject); + + syncOnPlay(entityID, physicsObject); + } + } + else + { + auto& rigidBodyDense = SHComponentManager::GetDense(); + auto& colliderDense = SHComponentManager::GetDense(); + + for (auto& rigidBodyComponent : rigidBodyDense) + { + const auto* TRANSFORM = SHComponentManager::GetComponent_s(rigidBodyComponent.GetEID()); + + if (TRANSFORM && TRANSFORM->HasChanged()) + { + rigidBodyComponent.position = TRANSFORM->GetWorldPosition(); + rigidBodyComponent.orientation = TRANSFORM->GetWorldOrientation(); + } + } + + for (auto& colliderComponent : colliderDense) + { + const auto* TRANSFORM = SHComponentManager::GetComponent_s(colliderComponent.GetEID()); + + if (TRANSFORM && TRANSFORM->HasChanged()) + { + colliderComponent.position = TRANSFORM->GetWorldPosition(); + colliderComponent.orientation = TRANSFORM->GetWorldOrientation(); + colliderComponent.scale = TRANSFORM->GetWorldScale(); + + colliderComponent.RecomputeCollisionShapes(); + } + } + } + + #else + + // Always sync Rigid Body & Collider Components with Physics Objects + // Do not check for an editor here + + physicsSystem->objectManager.UpdateCommands(); + + for (auto& [entityID, physicsObject] : physicsSystem->objectManager.physicsObjects) + { + // Ensure a valid physics Object + if (physicsObject.rp3dBody == nullptr) + continue; + + syncRigidBodyActive(entityID, physicsObject); + syncColliderActive(entityID, physicsObject); + + syncOnPlay(entityID, physicsObject); + } + + #endif + } + + void SHPhysicsSystem::PhysicsFixedUpdate::Execute(double dt) noexcept + { + auto* physicsSystem = reinterpret_cast(GetSystem()); + auto* scriptingSystem = SHSystemManager::GetSystem(); + if (scriptingSystem == nullptr) + { + SHLOGV_ERROR("Unable to invoke FixedUpdate() on scripts due to missing SHScriptEngine!"); + } + + const double FIXED_DT = physicsSystem->fixedDT; + accumulatedTime += dt; + + //testFunction(); + + int count = 0; + while (accumulatedTime > FIXED_DT) + { + if (scriptingSystem != nullptr) + scriptingSystem->ExecuteFixedUpdates(); + + physicsSystem->worldState.world->update(static_cast(FIXED_DT)); + + accumulatedTime -= FIXED_DT; + ++count; + } + + stats.numSteps = count; + physicsSystem->worldUpdated = count > 0; + + physicsSystem->interpolationFactor = accumulatedTime / fixedTimeStep; + } + + void SHPhysicsSystem::PhysicsPostUpdate::Execute(double) noexcept + { + auto* physicsSystem = reinterpret_cast(GetSystem()); + auto* scriptingSystem = SHSystemManager::GetSystem(); + + if (scriptingSystem == nullptr) + { + SHLOGV_ERROR("Unable to invoke collision and trigger script events due to missing SHScriptEngine!"); + } + + // Interpolate transforms for rendering + if (physicsSystem->worldUpdated) + { + for (auto& [entityID, physicsObject] : physicsSystem->objectManager.physicsObjects) + { + auto* transformComponent = SHComponentManager::GetComponent_s(entityID); + auto* rigidBodyComponent = SHComponentManager::GetComponent_s(entityID); + auto* colliderComponent = SHComponentManager::GetComponent_s(entityID); + + postUpdateSyncTransforms + ( + physicsObject + , transformComponent + , rigidBodyComponent + , colliderComponent + , physicsSystem->interpolationFactor + ); + } + + // Collision & Trigger messages + if (scriptingSystem != nullptr) + scriptingSystem->ExecuteCollisionFunctions(); + + // Since this function never runs when editor in not in play, execute the function anyway + physicsSystem->collisionListener.CleanContainers(); + } + } + + /*-----------------------------------------------------------------------------------*/ + /* Private Function Member Definitions */ + /*-----------------------------------------------------------------------------------*/ + + void SHPhysicsSystem::PhysicsPreUpdate::syncRigidBodyActive(EntityID eid, SHPhysicsObject& physicsObject) const noexcept + { + if (!SHComponentManager::HasComponent(eid)) + return; + + const bool IS_ACTIVE_IN_SCENE = SHSceneManager::CheckNodeAndComponentsActive(eid); + const bool IS_RP3D_BODY_ACTIVE = physicsObject.GetRigidBody()->isActive(); + + if (IS_ACTIVE_IN_SCENE != IS_RP3D_BODY_ACTIVE) + physicsObject.GetRigidBody()->setIsActive(IS_ACTIVE_IN_SCENE); + } + + void SHPhysicsSystem::PhysicsPreUpdate::syncColliderActive(EntityID eid, SHPhysicsObject& physicsObject) const noexcept + { + const auto* COLLIDER = SHComponentManager::GetComponent_s(eid); + if (!COLLIDER) + return; + + const bool IS_ACTIVE_IN_SCENE = SHSceneManager::CheckNodeAndComponentsActive(eid); + const bool IS_RP3D_COLLIDER_ACTIVE = physicsObject.collidersActive; + + if (IS_ACTIVE_IN_SCENE != IS_RP3D_COLLIDER_ACTIVE) + { + // HACK: If active state turned off, remove all collision shapes. If turned on, add them back. + auto* physicsSystem = reinterpret_cast(GetSystem()); + + const int NUM_SHAPES = static_cast(COLLIDER->GetCollisionShapes().size()); + if (IS_ACTIVE_IN_SCENE) + { + for (int i = 0; i < NUM_SHAPES; ++i) + physicsSystem->objectManager.AddCollisionShape(eid, i); + } + else + { + for (int i = NUM_SHAPES - 1; i >= 0; --i) + physicsSystem->objectManager.RemoveCollisionShape(eid, i); + } + + physicsObject.collidersActive = IS_ACTIVE_IN_SCENE; + } + } + + void SHPhysicsSystem::PhysicsPreUpdate::syncOnPlay(EntityID eid, SHPhysicsObject& physicsObject) noexcept + { + auto* transformComponent = SHComponentManager::GetComponent_s(eid); + auto* rigidBodyComponent = SHComponentManager::GetComponent_s(eid); + auto* colliderComponent = SHComponentManager::GetComponent_s(eid); + + // Sync transforms & physics components transforms + if (transformComponent && transformComponent->HasChanged()) + { + preUpdateSyncTransform + ( + physicsObject + , transformComponent + , rigidBodyComponent + , colliderComponent + ); + } + + // Sync Rigid Bodies + if (rigidBodyComponent) + physicsObject.SyncRigidBody(*rigidBodyComponent); + + // Sync Colliders + if (colliderComponent) + physicsObject.SyncColliders(*colliderComponent); + } + + void SHPhysicsSystem::PhysicsPreUpdate::preUpdateSyncTransform + ( + SHPhysicsObject& physicsObject + , SHTransformComponent* transformComponent + , SHRigidBodyComponent* rigidBodyComponent + , SHColliderComponent* colliderComponent + ) noexcept + { + if (!transformComponent) + return; + + const SHVec3& WORLD_POS = transformComponent->GetWorldPosition(); + const SHQuaternion& WORLD_ROT = transformComponent->GetWorldOrientation(); + const SHVec3& WORLD_SCL = transformComponent->GetWorldScale(); + + const rp3d::Transform RP3D_TRANSFORM { WORLD_POS, WORLD_ROT }; + physicsObject.GetRigidBody()->setTransform(RP3D_TRANSFORM); + physicsObject.prevTransform = RP3D_TRANSFORM; + + if (rigidBodyComponent && SHSceneManager::CheckNodeAndComponentsActive(physicsObject.entityID)) + { + rigidBodyComponent->position = WORLD_POS; + rigidBodyComponent->orientation = WORLD_ROT; + } + + if (colliderComponent && SHSceneManager::CheckNodeAndComponentsActive(physicsObject.entityID)) + { + colliderComponent->position = WORLD_POS; + colliderComponent->orientation = WORLD_ROT; + colliderComponent->scale = WORLD_SCL; + + colliderComponent->RecomputeCollisionShapes(); + } + } + + void SHPhysicsSystem::PhysicsPostUpdate::postUpdateSyncTransforms + ( + SHPhysicsObject& physicsObject + , SHTransformComponent* transformComponent + , SHRigidBodyComponent* rigidBodyComponent + , SHColliderComponent* colliderComponent + , double interpolationFactor + ) noexcept + { + const rp3d::Transform& CURRENT_TF = physicsObject.GetRigidBody()->getTransform(); + auto renderPos = CURRENT_TF.getPosition(); + auto renderRot = CURRENT_TF.getOrientation(); + + // Cache transforms + if (physicsObject.GetRigidBody()->isActive()) + physicsObject.prevTransform = CURRENT_TF; + + // Sync with rigid bodies. If an object doesn't have a rigidbody, no update is needed here as it is done in pre-update. + if (rigidBodyComponent && SHSceneManager::CheckNodeAndComponentsActive(physicsObject.entityID)) + { + // Skip static bodies + if (rigidBodyComponent->GetType() == SHRigidBodyComponent::Type::STATIC) + return; + + // Check if transform should be interpolated + if (rigidBodyComponent->IsInterpolating()) + { + // Interpolate transforms between current and predicted next transform + + const rp3d::Transform PREV_TF = physicsObject.prevTransform; + const rp3d::Transform INTERPOLATED_TF = rp3d::Transform::interpolateTransforms(PREV_TF, CURRENT_TF, static_cast(interpolationFactor)); + + renderPos = INTERPOLATED_TF.getPosition(); + renderRot = INTERPOLATED_TF.getOrientation(); + } + + rigidBodyComponent->position = CURRENT_TF.getPosition(); + rigidBodyComponent->orientation = CURRENT_TF.getOrientation(); + + // Sync with colliders + if (colliderComponent && SHSceneManager::CheckNodeAndComponentsActive(physicsObject.entityID)) + { + // Skip colliders without rigidbody components. If any transform was updated, it was done in pre-update. + + colliderComponent->position = CURRENT_TF.getPosition(); + colliderComponent->orientation = CURRENT_TF.getOrientation(); + } + + // Set transform for rendering + if (transformComponent) + { + transformComponent->SetWorldPosition(renderPos); + transformComponent->SetWorldOrientation(renderRot); + } + } + } +} // namespace SHADE + +///////////////////////////////////////////////////////////////////////////////////////// + +void testFunction() +{ + using namespace SHADE; + + // Test movement + const float forceModifier = 25.0f; + EntityID eid = 65538; + + if (SHEntityManager::IsValidEID(eid)) + { + auto* rb = SHComponentManager::GetComponent_s(eid); + if (rb) + { + if (SHInputManager::GetKey(SHInputManager::SH_KEYCODE::W)) + rb->AddForce(-SHVec3::UnitZ * forceModifier); + + if (SHInputManager::GetKey(SHInputManager::SH_KEYCODE::A)) + rb->AddForce(-SHVec3::UnitX * forceModifier); + + if (SHInputManager::GetKey(SHInputManager::SH_KEYCODE::S)) + rb->AddForce(SHVec3::UnitZ * forceModifier); + + if (SHInputManager::GetKey(SHInputManager::SH_KEYCODE::D)) + rb->AddForce(SHVec3::UnitX * forceModifier); + } + } +} diff --git a/SHADE_Engine/src/Resource/SHResourceLibrary.h b/SHADE_Engine/src/Resource/SHResourceLibrary.h index 46ae4572..a6f772fe 100644 --- a/SHADE_Engine/src/Resource/SHResourceLibrary.h +++ b/SHADE_Engine/src/Resource/SHResourceLibrary.h @@ -38,6 +38,11 @@ namespace SHADE class SHResourceLibrary : public SHResourceLibraryBase { public: + /*-----------------------------------------------------------------------------*/ + /* Type Definitions */ + /*-----------------------------------------------------------------------------*/ + using dense_iterator = typename SparseSet::dense_iterator; + /*-----------------------------------------------------------------------------*/ /* Constructor */ /*-----------------------------------------------------------------------------*/ @@ -74,6 +79,16 @@ namespace SHADE /// Read-only reference to the resource object. const T& Get(Handle handle) const; + /*-----------------------------------------------------------------------------*/ + /* Direct Dense Access Functions */ + /*-----------------------------------------------------------------------------*/ + /// + /// Provides access to the dense array of the SparseSet. + /// These iterators should not be used to manipulate the underlying vector. + /// + /// Pair of begin and end iterators to the dense vector. + std::pair GetDenseAccess(); + private: /*-----------------------------------------------------------------------------*/ /* Data Members */ @@ -96,6 +111,12 @@ namespace SHADE class SHResourceHub final { public: + /*-----------------------------------------------------------------------------*/ + /* Type Definitions */ + /*-----------------------------------------------------------------------------*/ + template + using dense_iterator = typename SHResourceLibrary::dense_iterator; + /*-----------------------------------------------------------------------------*/ /* Constructors/Destructors */ /*-----------------------------------------------------------------------------*/ @@ -138,6 +159,18 @@ namespace SHADE template const T& Get(Handle handle) const; + /*-----------------------------------------------------------------------------*/ + /* Direct Dense Access Functions */ + /*-----------------------------------------------------------------------------*/ + /// + /// Provides access to the dense array of the SparseSet. + /// These iterators should not be used to manipulate the underlying vector. + /// + /// Type of resource to access. + /// Pair of begin and end iterators to the dense vector. + template + std::pair, dense_iterator> GetDenseAccess(); + private: /*-----------------------------------------------------------------------------*/ /* Type Definition */ diff --git a/SHADE_Engine/src/Resource/SHResourceLibrary.hpp b/SHADE_Engine/src/Resource/SHResourceLibrary.hpp index 411f6bf5..98ad91a3 100644 --- a/SHADE_Engine/src/Resource/SHResourceLibrary.hpp +++ b/SHADE_Engine/src/Resource/SHResourceLibrary.hpp @@ -79,6 +79,15 @@ namespace SHADE return objects[handle.GetId().Data.Index]; } + /*---------------------------------------------------------------------------------*/ + /* ResourceLibrary - Direct Dense Access Functions */ + /*---------------------------------------------------------------------------------*/ + template + std::pair::dense_iterator, typename SHResourceLibrary::dense_iterator> SHResourceLibrary::GetDenseAccess() + { + return objects.GetDenseAccess(); + } + /*---------------------------------------------------------------------------------*/ /* ResourceLibrary - Helper Functions */ /*---------------------------------------------------------------------------------*/ @@ -105,7 +114,7 @@ namespace SHADE } /*---------------------------------------------------------------------------------*/ - /* ResourceManager - Usage Functions */ + /* ResourceHub - Usage Functions */ /*---------------------------------------------------------------------------------*/ template Handle SHResourceHub::Create(Args&&... args) @@ -132,7 +141,7 @@ namespace SHADE } /*-----------------------------------------------------------------------------*/ - /* ResourceManager - Helper Functions */ + /* ResourceHub - Helper Functions */ /*-----------------------------------------------------------------------------*/ template SHResourceLibrary& SHResourceHub::getLibrary() @@ -161,4 +170,13 @@ namespace SHADE { return const_cast(this).getLibrary(); } + + /*---------------------------------------------------------------------------------*/ + /* ResourceHub - Direct Dense Access Functions */ + /*---------------------------------------------------------------------------------*/ + template + std::pair, typename SHResourceHub::dense_iterator> SHResourceHub::GetDenseAccess() + { + return getLibrary().GetDenseAccess(); + } } diff --git a/SHADE_Engine/src/Resource/SHResourceManager.cpp b/SHADE_Engine/src/Resource/SHResourceManager.cpp index dad9fd9f..5cb93bb0 100644 --- a/SHADE_Engine/src/Resource/SHResourceManager.cpp +++ b/SHADE_Engine/src/Resource/SHResourceManager.cpp @@ -25,7 +25,8 @@ namespace SHADE std::unordered_map> SHResourceManager::typedFreeFuncMap; std::vector SHResourceManager::loadedAssetData; bool SHResourceManager::textureChanged = false; - bool SHResourceManager::meshChanged = false; + bool SHResourceManager::meshChanged = false; + bool SHResourceManager::fontChanged = false; /*-----------------------------------------------------------------------------------*/ /* Function Definitions */ @@ -76,6 +77,11 @@ namespace SHADE gfxSystem->BuildTextures(); textureChanged = false; } + if (fontChanged) + { + gfxSystem->BuildFonts(); + fontChanged = false; + } // Free CPU Resources for (auto assetId : loadedAssetData) @@ -103,4 +109,17 @@ namespace SHADE return {}; } + + std::optional SHResourceManager::GetAssetName(Handle handle) + { + const Handle GENERIC_HANDLE = Handle(handle); + auto assetId = GetAssetID(GENERIC_HANDLE); + if (assetId.has_value()) + { + const auto ASSET_INFO = SHAssetManager::GetAsset(assetId.value()); + if (ASSET_INFO.has_value()) + return ASSET_INFO.value().name; + } + return {}; + } } diff --git a/SHADE_Engine/src/Resource/SHResourceManager.h b/SHADE_Engine/src/Resource/SHResourceManager.h index d660ada7..5b98ffc3 100644 --- a/SHADE_Engine/src/Resource/SHResourceManager.h +++ b/SHADE_Engine/src/Resource/SHResourceManager.h @@ -13,8 +13,6 @@ of DigiPen Institute of Technology is prohibited. // STL Includes #include - -namespace SHADE { class SHMaterial; } // Project Includes #include "SH_API.h" #include "SHResourceLibrary.h" @@ -28,20 +26,31 @@ namespace SHADE { class SHMaterial; } #include "Graphics/MiddleEnd/Interface/SHMaterial.h" #include "Graphics/MiddleEnd/Materials/SHMaterialSpec.h" #include "Assets/Asset Types/SHMaterialAsset.h" +#include "Graphics/MiddleEnd/TextRendering/SHFont.h" namespace SHADE { + /*-----------------------------------------------------------------------------------*/ + /* Forward Declarations */ + /*-----------------------------------------------------------------------------------*/ + class SHMaterial; + + /*-----------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*-----------------------------------------------------------------------------------*/ /// /// Template structs that maps a resource to their loaded asset representation type. /// template struct SHResourceLoader { using AssetType = void; }; - template<> struct SHResourceLoader { using AssetType = SHMeshData; }; + template<> struct SHResourceLoader { using AssetType = SHMeshData; }; template<> struct SHResourceLoader { using AssetType = SHTextureAsset; }; template<> struct SHResourceLoader { using AssetType = SHShaderAsset; }; template<> struct SHResourceLoader { using AssetType = SHMaterialAsset; }; template<> struct SHResourceLoader { using AssetType = SHMaterialSpec; }; -/// + template<> struct SHResourceLoader { using AssetType = SHFontAsset; }; + + /// /// Static class responsible for loading and caching runtime resources from their /// serialised Asset IDs. /// @@ -57,9 +66,7 @@ namespace SHADE /// Note that for specific types, the retrieved Handle may not be valid until after /// FinaliseChanges() is called. /// - /// - /// Type of resource to load. - /// + /// Type of resource to load. /// Asset ID of the resource to load. /// Handle to a loaded runtime asset. template @@ -67,6 +74,17 @@ namespace SHADE template<> static inline Handle LoadOrGet(AssetID assetId); /// + /// Retrieves an existing loaded object of the specified type if it has already been + /// loaded prior. + /// + /// Type of resource to load. + /// Asset ID of the resource to retrieve. + /// + /// Handle to a loaded runtime asset. Null handle if not loaded before. + /// + template + static Handle Get(AssetID assetId); + /// /// Unloads an existing loaded asset. Attempting to unload an invalid Handle will /// simply do nothing except emit a warning. /// Faster than the untemplated version. @@ -114,6 +132,31 @@ namespace SHADE /// value. /// static std::optional GetAssetID(Handle handle); + /// + /// Retrieves the name associated with the AssetID that is associated with the + /// specified Handle. + /// Faster than the untemplated version. + /// + /// Type of resource to get the name of. + /// Handle to get the name of. + /// + /// Name for the specified Handle. If the Handle is invalid, there will be no + /// value. + /// + template + static std::optional GetAssetName(Handle handle); + /// + /// Retrieves the name associated with the AssetID that is associated with the + /// specified Handle. + /// Compared to the templated version, this function is slower as it requires + /// searching through the storage of all resource types. + /// + /// Handle to get the name of. + /// + /// Name for the specified Handle. If the Handle is invalid, there will be no + /// value. + /// + static std::optional GetAssetName(Handle handle); private: /*---------------------------------------------------------------------------------*/ @@ -137,6 +180,7 @@ namespace SHADE // Dirty Flags static bool meshChanged; static bool textureChanged; + static bool fontChanged; /*---------------------------------------------------------------------------------*/ /* Helper Functions */ diff --git a/SHADE_Engine/src/Resource/SHResourceManager.hpp b/SHADE_Engine/src/Resource/SHResourceManager.hpp index 01d82a7b..51ee356a 100644 --- a/SHADE_Engine/src/Resource/SHResourceManager.hpp +++ b/SHADE_Engine/src/Resource/SHResourceManager.hpp @@ -20,7 +20,7 @@ of DigiPen Institute of Technology is prohibited. #include "Assets/Asset Types/SHAssetIncludes.h" #include "Graphics/MiddleEnd/Interface/SHGraphicsSystem.h" #include "ECS_Base/Managers/SHSystemManager.h" -#include "Tools/SHLog.h" +#include "Tools/Logger/SHLog.h" #include "Graphics/Shaders/SHVkShaderModule.h" #include "Graphics/Devices/SHVkLogicalDevice.h" #include "Graphics/MiddleEnd/Materials/SHMaterialSpec.h" @@ -39,6 +39,7 @@ namespace SHADE !std::is_same_v && !std::is_same_v && !std::is_same_v && + !std::is_same_v && !std::is_same_v ) { @@ -93,6 +94,16 @@ namespace SHADE return handle; } + template + Handle SHResourceManager::Get(AssetID assetId) + { + auto [typedHandleMap, typedAssetIdMap] = getAssetHandleMap(); + if (typedHandleMap.get().contains(assetId)) + return Handle(typedHandleMap.get()[assetId]); + else + return Handle(); + } + template void SHResourceManager::Unload(Handle asset) { @@ -139,6 +150,18 @@ namespace SHADE return {}; } + template + std::optional SHADE::SHResourceManager::GetAssetName(Handle handle) + { + auto assetId = GetAssetID(handle); + if (assetId.has_value()) + { + const auto ASSET_INFO = SHAssetManager::GetAsset(assetId.value()); + if (ASSET_INFO.has_value()) + return ASSET_INFO.value().name; + } + return {}; + } /*-----------------------------------------------------------------------------------*/ /* Helper Functions */ @@ -315,5 +338,12 @@ namespace SHADE return matHandle; } + else if constexpr (std::is_same_v) + { + loadedAssetData.emplace_back(assetId); + fontChanged = true; + + return gfxSystem->AddFont(assetData); + } } } diff --git a/SHADE_Engine/src/Resource/SHResourceManagerInterface.cpp b/SHADE_Engine/src/Resource/SHResourceManagerInterface.cpp new file mode 100644 index 00000000..d89a7b16 --- /dev/null +++ b/SHADE_Engine/src/Resource/SHResourceManagerInterface.cpp @@ -0,0 +1,59 @@ +/************************************************************************************//*! +\file SHResourceManagerInterface.cpp +\author Tng Kah Wei, kahwei.tng, 390009620 +\par email: kahwei.tng\@digipen.edu +\date Nov 22, 2022 +\brief Contains the definition of the functions of the + SHResourceManagerInterface static class. + +Copyright (C) 2022 DigiPen Institute of Technology. +Reproduction or disclosure of this file or its contents without the prior written consent +of DigiPen Institute of Technology is prohibited. +*//*************************************************************************************/ +// Precompiled Header +#include "SHpch.h" +// Primary Include +#include "SHResourceManagerInterface.h" +// Project Includes +#include "SHResourceManager.h" + +namespace SHADE +{ + Handle SHResourceManagerInterface::LoadOrGetMesh(AssetID assetId) + { + return SHResourceManager::LoadOrGet(assetId); + } + Handle SHResourceManagerInterface::LoadOrGetTexture(AssetID assetId) + { + return SHResourceManager::LoadOrGet(assetId); + } + Handle SHResourceManagerInterface::LoadOrGetShaderModule(AssetID assetId) + { + return SHResourceManager::LoadOrGet(assetId); + } + Handle SHResourceManagerInterface::LoadOrGetMaterialSpec(AssetID assetId) + { + return SHResourceManager::LoadOrGet(assetId); + } + Handle SHResourceManagerInterface::LoadOrGetMaterial(AssetID assetId) + { + return SHResourceManager::LoadOrGet(assetId); + } + Handle SHResourceManagerInterface::LoadOrGetFont(AssetID assetId) + { + return SHResourceManager::LoadOrGet(assetId); + } + + /*-----------------------------------------------------------------------------------*/ + /* Query Functions */ + /*-----------------------------------------------------------------------------------*/ + std::optional SHResourceManagerInterface::GetAssetID(Handle handle) + { + return SHResourceManager::GetAssetID(handle); + } + + std::optional SHResourceManagerInterface::GetAssetName(Handle handle) + { + return SHResourceManager::GetAssetName(handle); + } +} diff --git a/SHADE_Engine/src/Resource/SHResourceManagerInterface.h b/SHADE_Engine/src/Resource/SHResourceManagerInterface.h new file mode 100644 index 00000000..359bd7c8 --- /dev/null +++ b/SHADE_Engine/src/Resource/SHResourceManagerInterface.h @@ -0,0 +1,111 @@ +/************************************************************************************//*! +\file SHResourceManagerInterface.h +\author Tng Kah Wei, kahwei.tng, 390009620 +\par email: kahwei.tng\@digipen.edu +\date Nov 22, 2022 +\brief Contains the definition of the SHResourceManagerInterface static class. + +Copyright (C) 2022 DigiPen Institute of Technology. +Reproduction or disclosure of this file or its contents without the prior written consent +of DigiPen Institute of Technology is prohibited. +*//*************************************************************************************/ +#pragma once + +// STL Includes +#include +// Project Includes +#include "SH_API.h" +#include "Resource/SHHandle.h" +#include "Assets/SHAssetMacros.h" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Forward Declarations */ + /*-----------------------------------------------------------------------------------*/ + class SHMesh; + class SHTexture; + class SHVkShaderModule; + struct SHMaterialSpec; + class SHMaterial; + class SHFont; + + /*-----------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*-----------------------------------------------------------------------------------*/ + /// + /// Static class providing access to non-templated functions of SHResourceManager for + /// SHADE_Managed. + /// + class SH_API SHResourceManagerInterface + { + public: + /*---------------------------------------------------------------------------------*/ + /* Loading Functions */ + /*---------------------------------------------------------------------------------*/ + + /// + /// Wrapper for SHResourceManager::LoadOrGet(). + /// + /// Asset ID of the resource to load. + /// Handle to the resource to retrieve. + static Handle LoadOrGetMesh(AssetID assetId); + /// + /// Wrapper for SHResourceManager::LoadOrGet(). + /// + /// + /// Handle to the resource to retrieve. + static Handle LoadOrGetTexture(AssetID assetId); + /// + /// Wrapper for SHResourceManager::LoadOrGet(). + /// + /// Asset ID of the resource to load. + /// Handle to the resource to retrieve. + static Handle LoadOrGetShaderModule(AssetID assetId); + /// + /// Wrapper for SHResourceManager::LoadOrGet(). + /// + /// Asset ID of the resource to load. + /// Handle to the resource to retrieve. + static Handle LoadOrGetMaterialSpec (AssetID assetId); + /// + /// Wrapper for SHResourceManager::LoadOrGet(). + /// + /// Asset ID of the resource to load. + /// Handle to the resource to retrieve. + static Handle LoadOrGetMaterial(AssetID assetId); + /// + /// Wrapper for SHResourceManager::LoadOrGet(). + /// + /// Asset ID of the resource to load. + /// Handle to the resource to retrieve. + static Handle LoadOrGetFont(AssetID assetId); + + /*---------------------------------------------------------------------------------*/ + /* Query Functions */ + /*---------------------------------------------------------------------------------*/ + /// + /// Retrieves the AssetID associated with a specified Handle. + /// Compared to the templated version, this function is slower as it requires + /// searching through the storage of all resource types. + /// + /// Handle to get the AssetID of. + /// + /// AssetID for the specified Handle. If the Handle is invalid, there will be no + /// value. + /// + static std::optional GetAssetID(Handle handle); + /// + /// Retrieves the name associated with the AssetID that is associated with the + /// specified Handle. + /// Compared to the templated version, this function is slower as it requires + /// searching through the storage of all resource types. + /// + /// Handle to get the name of. + /// + /// Name for the specified Handle. If the Handle is invalid, there will be no + /// value. + /// + static std::optional GetAssetName(Handle handle); + }; +} \ No newline at end of file diff --git a/SHADE_Engine/src/Resource/SparseSet.h b/SHADE_Engine/src/Resource/SparseSet.h index fb4a8311..3d763b01 100644 --- a/SHADE_Engine/src/Resource/SparseSet.h +++ b/SHADE_Engine/src/Resource/SparseSet.h @@ -49,6 +49,7 @@ namespace SHADE using const_pointer = const T*; using reference = T&; using const_reference = const T&; + using dense_iterator = typename std::vector::iterator; /*-----------------------------------------------------------------------------*/ /* Constructors/Destructors */ @@ -59,10 +60,6 @@ namespace SHADE SparseSet(); ~SparseSet() = default; - //// Disallow moving or copying - //SparseSet(const SparseSet&) = delete; - //SparseSet(SparseSet&&) = delete; - /*-----------------------------------------------------------------------------*/ /* Usage Functions */ /*-----------------------------------------------------------------------------*/ @@ -192,6 +189,16 @@ namespace SHADE /// const T& operator[](index_type idx) const; + /*-----------------------------------------------------------------------------*/ + /* Direct Dense Access Functions */ + /*-----------------------------------------------------------------------------*/ + /// + /// Provides access to the dense array of the SparseSet. + /// These iterators should not be used to manipulate the underlying vector. + /// + /// Pair of begin and end iterators to the dense vector. + std::pair GetDenseAccess(); + protected: /*-----------------------------------------------------------------------------*/ /* Constants */ diff --git a/SHADE_Engine/src/Resource/SparseSet.hpp b/SHADE_Engine/src/Resource/SparseSet.hpp index 816ca432..b6c7a511 100644 --- a/SHADE_Engine/src/Resource/SparseSet.hpp +++ b/SHADE_Engine/src/Resource/SparseSet.hpp @@ -143,4 +143,13 @@ namespace SHADE { return at(idx); } + + /*---------------------------------------------------------------------------------*/ + /* Direct Dense Access Functions */ + /*---------------------------------------------------------------------------------*/ + template + std::pair::dense_iterator, typename SparseSet::dense_iterator> SparseSet::GetDenseAccess() + { + return { denseArray.begin(), denseArray.end() }; + } } \ No newline at end of file diff --git a/SHADE_Engine/src/SHpch.h b/SHADE_Engine/src/SHpch.h index 7e308829..31553611 100644 --- a/SHADE_Engine/src/SHpch.h +++ b/SHADE_Engine/src/SHpch.h @@ -37,5 +37,5 @@ #include #include "Common/SHCommonTypes.h" -#include "Tools/SHLogger.h" +#include "Tools/Logger/SHLogger.h" #include "Tools/SHException.h" diff --git a/SHADE_Engine/src/Scene/SHSceneGraphEvents.h b/SHADE_Engine/src/Scene/SHSceneEvents.h similarity index 72% rename from SHADE_Engine/src/Scene/SHSceneGraphEvents.h rename to SHADE_Engine/src/Scene/SHSceneEvents.h index ccdf06be..c0d7dbc1 100644 --- a/SHADE_Engine/src/Scene/SHSceneGraphEvents.h +++ b/SHADE_Engine/src/Scene/SHSceneEvents.h @@ -1,7 +1,7 @@ /**************************************************************************************** - * \file SHSceneGraphEvents.h + * \file SHSceneEvents.h * \author Diren D Bharwani, diren.dbharwani, 390002520 - * \brief Interface for Scene Graph Events. + * \brief Interface for Scene Events. * * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or * disclosure of this file or its contents without the prior written consent @@ -21,21 +21,21 @@ namespace SHADE struct SHSceneGraphChangeParentEvent { - SHSceneNode* node; - SHSceneNode* oldParent; - SHSceneNode* newParent; + SHSceneNode* node = nullptr; + SHSceneNode* oldParent = nullptr; + SHSceneNode* newParent = nullptr; }; struct SHSceneGraphAddChildEvent { - SHSceneNode* parent; - SHSceneNode* childAdded; + SHSceneNode* parent = nullptr; + SHSceneNode* childAdded = nullptr; }; struct SHSceneGraphRemoveChildEvent { - SHSceneNode* parent; - SHSceneNode* childRemoved; + SHSceneNode* parent = nullptr; + SHSceneNode* childRemoved = nullptr; }; } // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/Scene/SHSceneGraph.h b/SHADE_Engine/src/Scene/SHSceneGraph.h index 5747be7b..37d0e063 100644 --- a/SHADE_Engine/src/Scene/SHSceneGraph.h +++ b/SHADE_Engine/src/Scene/SHSceneGraph.h @@ -16,7 +16,7 @@ #include "ECS_Base/Entity/SHEntity.h" #include "SH_API.h" #include "SHSceneNode.h" -#include "SHSceneGraphEvents.h" +#include "SHSceneEvents.h" namespace SHADE { diff --git a/SHADE_Engine/src/Scene/SHSceneManager.cpp b/SHADE_Engine/src/Scene/SHSceneManager.cpp index be9c7755..110aaea6 100644 --- a/SHADE_Engine/src/Scene/SHSceneManager.cpp +++ b/SHADE_Engine/src/Scene/SHSceneManager.cpp @@ -85,7 +85,6 @@ namespace SHADE currentScene->Load(); currentScene->Init(); } - } else // restarting scene { diff --git a/SHADE_Engine/src/Scene/SHSceneManager.h b/SHADE_Engine/src/Scene/SHSceneManager.h index 23d13261..8f03b352 100644 --- a/SHADE_Engine/src/Scene/SHSceneManager.h +++ b/SHADE_Engine/src/Scene/SHSceneManager.h @@ -21,6 +21,7 @@ #include "SH_API.h" #include "ECS_Base/General/SHFamily.h" #include "Assets/SHAssetMacros.h" +#include "ECS_Base/Managers/SHComponentManager.h" namespace SHADE { @@ -116,6 +117,56 @@ namespace SHADE sceneChanged = true; } + /******************************************************************** + * \brief + * Check if the Entity's scene node is active and all the + * components specified are active. + * This does not check if the entity HasComponent. Please use + * CheckNodeAndHasComponentActive for that. + * \param eid + * EntityID of the entity to check for. + * \return + * true if scene node is active and all the components specified + * are also active. + ********************************************************************/ + template + static std::enable_if_t<(... && std::is_base_of_v), bool> CheckNodeAndComponentsActive(EntityID eid) + { + return CheckNodeActive(eid) && (... && SHComponentManager::GetComponent_s(eid)->isActive); + } + + /******************************************************************** + * \brief + * Check if the Entity's scene node is active and all the + * components specified are active. + * This also checks to verify that the entity has such components. + * \param eid + * EntityID of the entity to check for. + * \return + * true if scene node is active and all the components specified + * are also active. + ********************************************************************/ + template + static std::enable_if_t<(... && std::is_base_of_v), bool> CheckNodeAndHasComponentsActive(EntityID eid) + { + return CheckNodeActive(eid) + && (... && SHComponentManager::HasComponent(eid)) + && (... && SHComponentManager::GetComponent_s(eid)->isActive); + } + + /******************************************************************** + * \brief + * Check if Scene node is active. + * \param eid + * EntityID of the entity to check for. + * \return + * true if scene node is active + ********************************************************************/ + static bool CheckNodeActive(EntityID eid) + { + return GetCurrentSceneGraph().IsActiveInHierarchy(eid); + } + /*!************************************************************************* * \brief diff --git a/SHADE_Engine/src/Scene/SHSceneNode.cpp b/SHADE_Engine/src/Scene/SHSceneNode.cpp index b619d464..8dac20bd 100644 --- a/SHADE_Engine/src/Scene/SHSceneNode.cpp +++ b/SHADE_Engine/src/Scene/SHSceneNode.cpp @@ -136,7 +136,7 @@ namespace SHADE for (auto* child : children) { - SetActive(newActiveState); + child->SetActive(newActiveState); } } diff --git a/SHADE_Engine/src/Scripting/SHDotNetRuntime.cpp b/SHADE_Engine/src/Scripting/SHDotNetRuntime.cpp index 6226949e..955a8474 100644 --- a/SHADE_Engine/src/Scripting/SHDotNetRuntime.cpp +++ b/SHADE_Engine/src/Scripting/SHDotNetRuntime.cpp @@ -20,7 +20,7 @@ of DigiPen Institute of Technology is prohibited. #include // External Dependencies #include // PathRemoveFileSpecA -#include "Tools/SHLogger.h" +#include "Tools/Logger/SHLogger.h" namespace SHADE { diff --git a/SHADE_Engine/src/Scripting/SHScriptEngine.cpp b/SHADE_Engine/src/Scripting/SHScriptEngine.cpp index 827f45a2..90121994 100644 --- a/SHADE_Engine/src/Scripting/SHScriptEngine.cpp +++ b/SHADE_Engine/src/Scripting/SHScriptEngine.cpp @@ -17,14 +17,19 @@ of DigiPen Institute of Technology is prohibited. #include // std::fstream #include // std::filesystem::canonical, std::filesystem::remove #include // std::shared_ptr +#include // std::this_thread::sleep_for // Project Headers -#include "Tools/SHLogger.h" -#include "Tools/SHStringUtils.h" +#include "Tools/Logger/SHLogger.h" +#include "Tools/Utilities/SHStringUtilities.h" #include "ECS_Base/Events/SHEntityDestroyedEvent.h" #include "Events/SHEvent.h" #include "Events/SHEventReceiver.h" #include "Events/SHEventManager.hpp" -#include "Physics/SHPhysicsSystem.h" +#include "Physics/System/SHPhysicsSystem.h" +#include "Physics/SHPhysicsEvents.h" +#include "Scene/SHSceneEvents.h" + +#include "Assets/SHAssetMacros.h" namespace SHADE { @@ -32,7 +37,7 @@ namespace SHADE /* Static Definitions */ /*----------------------------------------------------------------------------------*/ const std::string SHScriptEngine::DEFAULT_CSHARP_NAMESPACE = std::string("SHADE"); - const std::string SHScriptEngine::CSPROJ_DIR = "..\\..\\TempScriptsFolder"; + const std::string SHScriptEngine::CSPROJ_DIR = std::string(ASSET_ROOT) + "/Scripts"; const std::string SHScriptEngine::CSPROJ_PATH = std::string(CSPROJ_DIR) + "\\SHADE_Scripting.csproj"; /*-----------------------------------------------------------------------------------*/ @@ -53,10 +58,9 @@ namespace SHADE loadFunctions(); // Generate script assembly if it hasn't been before - if (!fileExists(std::string(MANAGED_SCRIPT_LIB_NAME) + ".dll")) - { - BuildScriptAssembly(); - } +#ifndef _PUBLISH + BuildScriptAssembly(); +#endif // Initialise the CSharp Engine csEngineInit(); @@ -175,10 +179,10 @@ namespace SHADE } // Prepare directory (delete useless files) - deleteFolder(CSPROJ_DIR + "\\net5.0"); - deleteFolder(CSPROJ_DIR + "\\ref"); - deleteFolder(CSPROJ_DIR + "\\obj"); - deleteFolder(CSPROJ_DIR + "\\bin"); + deleteFolder(CSPROJ_DIR + "/net5.0"); + deleteFolder(CSPROJ_DIR + "/ref"); + deleteFolder(CSPROJ_DIR + "/obj"); + deleteFolder(CSPROJ_DIR + "/bin"); // Attempt to build the assembly std::ostringstream oss; @@ -212,7 +216,10 @@ namespace SHADE // Clean up built files deleteFolder("./tmp"); - deleteFolder(CSPROJ_DIR + "\\obj"); + deleteFolder(CSPROJ_DIR + "/bin"); + using namespace std::chrono_literals; + std::this_thread::sleep_for(50ms); // Not sure why this works but it prevents the folders from respawning + deleteFolder(CSPROJ_DIR + "/obj"); // Read the build log and output to the console dumpBuildLog(BUILD_LOG_PATH); @@ -230,8 +237,13 @@ namespace SHADE void SHScriptEngine::GenerateScriptsCsProjFile(const std::filesystem::path& path) const { + // Compute relative path + const std::filesystem::path EXE_DIR = std::filesystem::current_path(); + const std::filesystem::path MANAGED_DLL_DIR = EXE_DIR / "SHADE_Managed.dll"; + const std::filesystem::path CS_DLL_DIR = EXE_DIR / "SHADE_CSharp.dll"; + // Sample - static std::string_view FILE_CONTENTS = + static std::string_view FILE_CONTENTS_BEGIN = "\n\ \n\ net5.0\n\ @@ -259,26 +271,30 @@ namespace SHADE \n\ \n\ \n\ + \n\ \n\ \n\ - \n\ - ..\\bin\\Debug\\SHADE_Managed.dll\n\ - ..\\bin\\Release\\SHADE_Managed.dll\n\ - \n\ - \n\ - ..\\bin\\Debug\\SHADE_CSharp.dll\n\ - ..\\bin\\Release\\SHADE_CSharp.dll\n\ - \n\ + \n"; + static std::string_view FILE_CONTENTS_MID = +" \n\ + \n"; + static std::string_view FILE_CONTENTS_END = +" \n\ \n\ "; // Attempt to create the file - std::ofstream file(path); + std::ofstream file(path, std::ios::out | std::ios::trunc); if (!file.is_open()) throw std::runtime_error("Unable to create CsProj file!"); // Fill the file - file << FILE_CONTENTS; + const std::filesystem::path CSPROJ_DIR = path.parent_path(); + file << FILE_CONTENTS_BEGIN + << " " << std::filesystem::relative(MANAGED_DLL_DIR, CSPROJ_DIR).string() << "\n" + << FILE_CONTENTS_MID + << " " << std::filesystem::relative(CS_DLL_DIR, CSPROJ_DIR).string() << "\n" + << FILE_CONTENTS_END; // Close file.close(); @@ -290,7 +306,7 @@ namespace SHADE SHEventHandle SHScriptEngine::onEntityDestroyed(SHEventPtr eventPtr) { auto eventData = reinterpret_cast*>(eventPtr.get()); - csScriptsRemoveAll(eventData->data->eid); + csScriptsRemoveAllImmediately(eventData->data->eid, true); return eventData->handle; } @@ -316,6 +332,20 @@ namespace SHADE return eventData->handle; } + SHEventHandle SHScriptEngine::onSceneNodeChildrenAdded(SHEventPtr eventPtr) + { + auto eventData = reinterpret_cast*>(eventPtr.get()); + csSceneNodeChildrenChanged(eventData->data->parent->GetEntityID()); + return eventData->handle; + } + + SHEventHandle SHScriptEngine::onSceneNodeChildrenRemoved(SHEventPtr eventPtr) + { + auto eventData = reinterpret_cast*>(eventPtr.get()); + csSceneNodeChildrenChanged(eventData->data->parent->GetEntityID()); + return eventData->handle; + } + /*-----------------------------------------------------------------------------------*/ /* Helper Functions */ /*-----------------------------------------------------------------------------------*/ @@ -440,6 +470,12 @@ namespace SHADE DEFAULT_CSHARP_NAMESPACE + ".Collider", "OnCollisionShapeRemoved" ); + csSceneNodeChildrenChanged = dotNet.GetFunctionPtr + ( + DEFAULT_CSHARP_LIB_NAME, + DEFAULT_CSHARP_NAMESPACE + ".ChildListCache", + "OnChildrenChanged" + ); csEditorRenderScripts = dotNet.GetFunctionPtr ( DEFAULT_CSHARP_LIB_NAME, @@ -462,6 +498,7 @@ namespace SHADE void SHScriptEngine::registerEvents() { + /* Entity */ // Register for entity destroyed event std::shared_ptr> destroyedEventReceiver { @@ -469,26 +506,39 @@ namespace SHADE }; SHEventManager::SubscribeTo(SH_ENTITY_DESTROYED_EVENT, std::dynamic_pointer_cast(destroyedEventReceiver)); + /* Colliders */ // Register for collider added event std::shared_ptr> addedColliderEventReceiver { std::make_shared>(this, &SHScriptEngine::onColliderAdded) }; SHEventManager::SubscribeTo(SH_PHYSICS_COLLIDER_ADDED_EVENT, std::dynamic_pointer_cast(addedColliderEventReceiver)); - // Register for collider removed event std::shared_ptr> removedColliderEventReceiver { std::make_shared>(this, &SHScriptEngine::onColliderRemoved) }; SHEventManager::SubscribeTo(SH_PHYSICS_COLLIDER_REMOVED_EVENT, std::dynamic_pointer_cast(removedColliderEventReceiver)); - // Register for collider component removed event std::shared_ptr> removedColliderComponentEventReceiver { std::make_shared>(this, &SHScriptEngine::onColliderComponentRemoved) }; SHEventManager::SubscribeTo(SH_COMPONENT_REMOVED_EVENT, std::dynamic_pointer_cast(removedColliderComponentEventReceiver)); + + /* SceneGraph */ + // Register for SceneNode child added event + std::shared_ptr> addChildEventReceiver + { + std::make_shared>(this, &SHScriptEngine::onSceneNodeChildrenAdded) + }; + SHEventManager::SubscribeTo(SH_SCENEGRAPH_ADD_CHILD_EVENT, std::dynamic_pointer_cast(addChildEventReceiver)); + // Register for SceneNode child removed event + std::shared_ptr> removeChildEventReceiver + { + std::make_shared>(this, &SHScriptEngine::onSceneNodeChildrenRemoved) + }; + SHEventManager::SubscribeTo(SH_SCENEGRAPH_REMOVE_CHILD_EVENT, std::dynamic_pointer_cast(removeChildEventReceiver)); } void SHScriptEngine::dumpBuildLog(const std::string_view& buildLogPath) @@ -565,7 +615,7 @@ namespace SHADE auto err = GetLastError(); std::ostringstream oss; oss << "[ScriptEngine] Failed to launch process. Error code: " << std::hex << err - << " (" << SHStringUtils::GetWin32ErrorMessage(err) << ")"; + << " (" << SHStringUtilities::GetWin32ErrorMessage(err) << ")"; throw std::runtime_error(oss.str()); } @@ -579,7 +629,7 @@ namespace SHADE auto err = GetLastError(); std::ostringstream oss; oss << "[ScriptEngine] Failed to query process. Error code: " << std::hex << err - << " (" << SHStringUtils::GetWin32ErrorMessage(err) << ")"; + << " (" << SHStringUtilities::GetWin32ErrorMessage(err) << ")"; throw std::runtime_error(oss.str()); } @@ -596,7 +646,7 @@ namespace SHADE std::wstring SHScriptEngine::generateBuildCommand(bool debug) { std::wostringstream oss; - oss << "dotnet build \"" << SHStringUtils::StrToWstr(CSPROJ_PATH) << "\" -c "; + oss << "dotnet build \"" << SHStringUtilities::StrToWstr(CSPROJ_PATH) << "\" -c "; oss << debug ? "Debug" : "Release"; oss << " -o \"./tmp/\" -fl -flp:LogFile=build.log;Verbosity=quiet -r \"win-x64\""; return oss.str(); diff --git a/SHADE_Engine/src/Scripting/SHScriptEngine.h b/SHADE_Engine/src/Scripting/SHScriptEngine.h index 7d83606e..ef778627 100644 --- a/SHADE_Engine/src/Scripting/SHScriptEngine.h +++ b/SHADE_Engine/src/Scripting/SHScriptEngine.h @@ -267,6 +267,7 @@ namespace SHADE // - Events CsEventRelayFuncPtr csColliderOnListChanged = nullptr; CsEventRelayFuncPtr csColliderOnRemoved = nullptr; + CsEventRelayFuncPtr csSceneNodeChildrenChanged = nullptr; // - Editor CsScriptEditorFuncPtr csEditorRenderScripts = nullptr; CsFuncPtr csEditorUndo = nullptr; @@ -279,6 +280,8 @@ namespace SHADE SHEventHandle onColliderAdded(SHEventPtr eventPtr); SHEventHandle onColliderRemoved(SHEventPtr eventPtr); SHEventHandle onColliderComponentRemoved(SHEventPtr eventPtr); + SHEventHandle onSceneNodeChildrenAdded(SHEventPtr eventPtr); + SHEventHandle onSceneNodeChildrenRemoved(SHEventPtr eventPtr); /*-----------------------------------------------------------------------------*/ /* Helper Functions */ diff --git a/SHADE_Engine/src/Serialization/Configurations/SHConfigurationManager.h b/SHADE_Engine/src/Serialization/Configurations/SHConfigurationManager.h index abf679ca..767b8c2b 100644 --- a/SHADE_Engine/src/Serialization/Configurations/SHConfigurationManager.h +++ b/SHADE_Engine/src/Serialization/Configurations/SHConfigurationManager.h @@ -25,8 +25,8 @@ namespace SHADE class SH_API SHConfigurationManager { public: - static constexpr std::string_view applicationConfigPath{"../../Assets/Application.SHConfig"}; - static constexpr std::string_view editorConfigPath{"../../Assets/Editor/Editor.SHConfig"}; + static inline std::string applicationConfigPath{ std::string(ASSET_ROOT) + "/Application.SHConfig"}; + static inline std::string editorConfigPath{ std::string(ASSET_ROOT) + "/Editor/Editor.SHConfig"}; static void SaveApplicationConfig(); static SHApplicationConfig& LoadApplicationConfig(WindowData* wndData = nullptr); diff --git a/SHADE_Engine/src/Serialization/SHSerialization.cpp b/SHADE_Engine/src/Serialization/SHSerialization.cpp index f2829b95..be7c9cf0 100644 --- a/SHADE_Engine/src/Serialization/SHSerialization.cpp +++ b/SHADE_Engine/src/Serialization/SHSerialization.cpp @@ -12,9 +12,9 @@ #include "Assets/Asset Types/SHSceneAsset.h" #include "Camera/SHCameraComponent.h" -#include "Graphics/MiddleEnd/Interface/SHRenderable.h" #include "Math/Transform/SHTransformComponent.h" -#include "Physics/Components/SHRigidBodyComponent.h" +#include "Graphics/MiddleEnd/Interface/SHRenderable.h" +#include "Physics/Interface/SHRigidBodyComponent.h" #include "ECS_Base/Managers/SHSystemManager.h" #include "Graphics/MiddleEnd/Lights/SHLightComponent.h" #include "Scripting/SHScriptEngine.h" @@ -61,20 +61,21 @@ namespace SHADE out << YAML::EndSeq; } - static EntityID DeserializeEntity(YAML::iterator& it, YAML::Node const& node, std::vector& createdEntities, EntityID parentEID = MAX_EID) + static EntityID DeserializeEntity(YAML::iterator& it, YAML::Node const& node, SHSerialization::CreatedEntitiesList& createdEntities, EntityID parentEID = MAX_EID) { - EntityID eid = MAX_EID; + EntityID eid{MAX_EID}, oldEID{MAX_EID}; if (!node) return eid; if (node[EIDNode]) - eid = node[EIDNode].as(); - std::string name = "Default"; + oldEID = eid = node[EIDNode].as(); + std::string name = "UnnamedEntitiy"; if (node[EntityNameNode]) name = node[EntityNameNode].as(); //Compile component IDs const auto componentIDList = SHSerialization::GetComponentIDList(node[ComponentsNode]); eid = SHEntityManager::CreateEntity(componentIDList, eid, name, parentEID); - createdEntities.push_back(eid); + createdEntities[oldEID] = eid; + //createdEntities.push_back(eid); if (node[NumberOfChildrenNode]) { if (const int numOfChildren = node[NumberOfChildrenNode].as(); numOfChildren > 0) @@ -106,7 +107,7 @@ namespace SHADE return NewSceneName.data(); } YAML::Node entities = YAML::Load(assetData->data); - std::vector createdEntities{}; + CreatedEntitiesList createdEntities{}; //Create Entities for (auto it = entities.begin(); it != entities.end(); ++it) @@ -122,14 +123,14 @@ namespace SHADE AssetQueue assetQueue; for (auto it = entities.begin(); it != entities.end(); ++it) { - SHSerializationHelper::FetchAssetsFromComponent((*it)[ComponentsNode], *entityVecIt, assetQueue); + SHSerializationHelper::FetchAssetsFromComponent((*it)[ComponentsNode], createdEntities[(*it)[EIDNode].as()], assetQueue); } LoadAssetsFromAssetQueue(assetQueue); //Initialize Entity entityVecIt = createdEntities.begin(); for (auto it = entities.begin(); it != entities.end(); ++it) { - InitializeEntity(*it, *entityVecIt++); + InitializeEntity(*it, createdEntities[(*it)[EIDNode].as()]); } return assetData->name; @@ -160,9 +161,9 @@ namespace SHADE return std::string(out.c_str()); } - void SHSerialization::SerializeEntityToFile(std::filesystem::path const& path) - { - } + //void SHSerialization::SerializeEntityToFile(std::filesystem::path const& path) + //{ + //} template, bool> = true> static void AddComponentToComponentNode(YAML::Node& componentsNode, EntityID const& eid) @@ -178,7 +179,9 @@ namespace SHADE { if (ComponentType* component = SHComponentManager::GetComponent_s(eid)) { - componentsNode[rttr::type::get().get_name().data()] = YAML::convert::encode(*component); + auto componentNode = YAML::convert::encode(*component); + componentNode[IsActive.data()] = component->isActive; + componentsNode[rttr::type::get().get_name().data()] = componentNode; } } @@ -208,6 +211,7 @@ namespace SHADE AddComponentToComponentNode(components, eid); AddComponentToComponentNode(components, eid); AddConvComponentToComponentNode(components, eid); + AddConvComponentToComponentNode(components, eid); node[ComponentsNode] = components; @@ -218,13 +222,13 @@ namespace SHADE return node; } - EntityID SHSerialization::DeserializeEntitiesFromString(std::string const& data, EntityID const& parentEID) noexcept + SHSerialization::CreatedEntitiesList SHSerialization::DeserializeEntitiesFromString(std::string const& data, EntityID const& parentEID) noexcept { if (data.empty()) - return MAX_EID; + return {}; YAML::Node entities = YAML::Load(data.c_str()); EntityID eid{ MAX_EID }; - std::vector createdEntities; + CreatedEntitiesList createdEntities{}; for (auto it = entities.begin(); it != entities.end(); ++it) { eid = DeserializeEntity(it, *it, createdEntities, parentEID); @@ -232,14 +236,14 @@ namespace SHADE if (createdEntities.empty()) { SHLOG_ERROR("Failed to create entities from deserializaiton") - return MAX_EID; + return createdEntities; } - auto entityVecIt = createdEntities.begin(); + //auto entityVecIt = createdEntities.begin(); for (auto it = entities.begin(); it != entities.end(); ++it) { - InitializeEntity(*it, *entityVecIt++); + InitializeEntity(*it, createdEntities[(*it)[EIDNode].as()]); } - return eid; + return createdEntities; } template, bool> = true> @@ -259,6 +263,7 @@ namespace SHADE AddComponentID(componentIDList, componentsNode); AddComponentID(componentIDList, componentsNode); AddComponentID(componentIDList, componentsNode); + AddComponentID(componentIDList, componentsNode); return componentIDList; } @@ -290,6 +295,41 @@ namespace SHADE SHResourceManager::FinaliseChanges(); } + void ResolveSerializedEntityID(YAML::Emitter& out, YAML::iterator& it, YAML::Node const& entityNode, SHSerialization::CreatedEntitiesList const& createdEntities) + { + EntityID eid = entityNode[EIDNode].as(); + YAML::Node resolvedNode = entityNode; + resolvedNode[EIDNode] = createdEntities.at(eid); + out << resolvedNode; + if (entityNode[NumberOfChildrenNode]) + { + if (const int numOfChildren = entityNode[NumberOfChildrenNode].as(); numOfChildren > 0) + { + ++it; + for (int i = 0; i < numOfChildren; ++i) + { + ResolveSerializedEntityID(out, it, (*it), createdEntities); + //DeserializeEntity(it, (*it), createdEntities, eid); + if ((i + 1) < numOfChildren) + ++it; + } + } + } + } + + std::string SHSerialization::ResolveSerializedEntityIndices(std::string serializedEntityData, CreatedEntitiesList const& createdEntities) noexcept + { + YAML::Node entities = YAML::Load(serializedEntityData); + YAML::Emitter out; + out << YAML::BeginSeq; + for (auto it = entities.begin(); it != entities.end(); ++it) + { + ResolveSerializedEntityID(out, it, (*it), createdEntities); + } + out << YAML::EndSeq; + return out.c_str(); + } + void SHSerialization::InitializeEntity(YAML::Node const& entityNode, EntityID const& eid) { auto const componentsNode = entityNode[ComponentsNode]; @@ -300,6 +340,7 @@ namespace SHADE SHSerializationHelper::InitializeComponentFromNode(componentsNode, eid); SHSerializationHelper::ConvertNodeToComponent(componentsNode, eid); SHSerializationHelper::ConvertNodeToComponent(componentsNode, eid); + SHSerializationHelper::ConvertNodeToComponent(componentsNode, eid); SHSerializationHelper::InitializeComponentFromNode(componentsNode, eid); } } diff --git a/SHADE_Engine/src/Serialization/SHSerialization.h b/SHADE_Engine/src/Serialization/SHSerialization.h index 3cb268f2..dd487662 100644 --- a/SHADE_Engine/src/Serialization/SHSerialization.h +++ b/SHADE_Engine/src/Serialization/SHSerialization.h @@ -2,7 +2,6 @@ #include "SH_API.h" #include -#include #include "ECS_Base/SHECSMacros.h" @@ -26,8 +25,12 @@ namespace SHADE constexpr const char* NumberOfChildrenNode = "NumberOfChildren"; constexpr const char* ScriptsNode = "Scripts"; - struct SH_API SHSerialization + class SH_API SHSerialization { + public: + //Original EID : New EID + using CreatedEntitiesList = std::unordered_map; + static bool SerializeSceneToFile(AssetID const& sceneAssetID); static std::string SerializeSceneToString(); static void SerializeSceneToEmitter(YAML::Emitter& out); @@ -38,15 +41,18 @@ namespace SHADE static void EmitEntity(SHSceneNode* entityNode, YAML::Emitter& out); static std::string SerializeEntitiesToString(std::vector const& entities) noexcept; - static void SerializeEntityToFile(std::filesystem::path const& path); + //static void SerializeEntityToFile(std::filesystem::path const& path); static YAML::Node SerializeEntityToNode(SHSceneNode* sceneNode); - static EntityID DeserializeEntitiesFromString(std::string const& data, EntityID const& parentEID = MAX_EID) noexcept; + static CreatedEntitiesList DeserializeEntitiesFromString(std::string const& data, EntityID const& parentEID = MAX_EID) noexcept; static std::vector GetComponentIDList(YAML::Node const& componentsNode); static void LoadAssetsFromAssetQueue(std::unordered_map& assetQueue); + + static std::string ResolveSerializedEntityIndices(std::string serializedEntityData, CreatedEntitiesList const& createdEntities) noexcept; private: + //static void ResolveSerializedEntityID(YAML::Emitter& out, YAML::iterator& it, YAML::Node const& entityNode, CreatedEntitiesList const& createdEntities); static void InitializeEntity(YAML::Node const& entityNode, EntityID const& eid); static constexpr std::string_view NewSceneName = "New Scene"; diff --git a/SHADE_Engine/src/Serialization/SHSerializationHelper.hpp b/SHADE_Engine/src/Serialization/SHSerializationHelper.hpp index b062b348..b560acae 100644 --- a/SHADE_Engine/src/Serialization/SHSerializationHelper.hpp +++ b/SHADE_Engine/src/Serialization/SHSerializationHelper.hpp @@ -9,11 +9,13 @@ #include "ECS_Base/Managers/SHComponentManager.h" #include "Graphics/MiddleEnd/Materials/SHMaterialSpec.h" -#include "Tools/SHLog.h" +#include "Tools/Logger/SHLog.h" namespace SHADE { + static constexpr std::string_view IsActive = "IsActive"; + using AssetQueue = std::unordered_map; struct SHSerializationHelper { @@ -118,9 +120,9 @@ namespace SHADE YAML::Node node{}; if (!component) return node; - auto componentType = rttr::type::get(); node = RTTRToNode(*component); + node[IsActive.data()] = component->isActive; return node; } @@ -198,6 +200,9 @@ namespace SHADE auto componentNode = componentsNode[rttrType.get_name().data()]; if (!componentNode.IsDefined()) return; + if(componentNode[IsActive.data()].IsDefined()) + component->isActive = componentNode[IsActive.data()].as(); + auto properties = rttrType.get_properties(); for (auto const& prop : properties) { @@ -227,8 +232,10 @@ namespace SHADE auto component = SHComponentManager::GetComponent_s(eid); if (componentsNode.IsNull() && !component) return; - - YAML::convert::decode(GetComponentNode(componentsNode, eid), *component); + auto componentNode = GetComponentNode(componentsNode, eid); + if (componentNode[IsActive.data()].IsDefined()) + component->isActive = componentNode[IsActive.data()].as(); + YAML::convert::decode(componentNode, *component); } template , bool> = true> diff --git a/SHADE_Engine/src/Serialization/SHYAMLConverters.h b/SHADE_Engine/src/Serialization/SHYAMLConverters.h index 1b93c63a..48150d4a 100644 --- a/SHADE_Engine/src/Serialization/SHYAMLConverters.h +++ b/SHADE_Engine/src/Serialization/SHYAMLConverters.h @@ -1,9 +1,9 @@ #pragma once #include "Graphics/MiddleEnd/Interface/SHRenderable.h" #include "Graphics/MiddleEnd/Materials/SHMaterialSpec.h" -#include "Math/Geometry/SHBoundingBox.h" -#include "Math/Geometry/SHBoundingSphere.h" -#include "Physics/SHCollisionShape.h" +#include "Math/Geometry/SHBox.h" +#include "Math/Geometry/SHSphere.h" +#include "Physics/Interface/SHCollisionShape.h" #include "Resource/SHResourceManager.h" #include "Math/Vector/SHVec2.h" #include "Math/Vector/SHVec3.h" @@ -11,7 +11,10 @@ #include "Graphics/MiddleEnd/Interface/SHMaterial.h" #include "Graphics/MiddleEnd/Interface/SHMaterialInstance.h" #include "SHSerializationTools.h" -#include "Physics/Components/SHColliderComponent.h" +#include "Physics/Interface/SHColliderComponent.h" +#include "Graphics/MiddleEnd/TextRendering/SHTextRenderableComponent.h" +#include "Graphics/MiddleEnd/TextRendering/SHFont.h" + namespace YAML { using namespace SHADE; @@ -113,6 +116,7 @@ namespace YAML static constexpr const char* Bounciness = "Bounciness"; static constexpr const char* Density = "Density"; static constexpr const char* PositionOffset = "Position Offset"; + static constexpr const char* RotationOffset = "Rotation Offset"; static Node encode(SHCollisionShape& rhs) { @@ -130,14 +134,14 @@ namespace YAML { case SHCollisionShape::Type::BOX: { - auto const bb = reinterpret_cast(rhs.GetShape()); - node[HalfExtents] = bb->GetRelativeExtents(); + const auto* BOX = reinterpret_cast(rhs.GetShape()); + node[HalfExtents] = BOX->GetRelativeExtents(); } break; case SHCollisionShape::Type::SPHERE: { - auto const bs = reinterpret_cast(rhs.GetShape()); - node[Radius] = bs->GetRelativeRadius(); + const auto* SPHERE = reinterpret_cast(rhs.GetShape()); + node[Radius] = SPHERE->GetRelativeRadius(); } break; case SHCollisionShape::Type::CAPSULE: break; @@ -148,6 +152,7 @@ namespace YAML node[Bounciness] = rhs.GetBounciness(); node[Density] = rhs.GetDensity(); node[PositionOffset] = rhs.GetPositionOffset(); + node[RotationOffset] = rhs.GetRotationOffset(); return node; } @@ -183,11 +188,13 @@ namespace YAML if (node[Friction].IsDefined()) rhs.SetFriction(node[Friction].as()); if (node[Bounciness].IsDefined()) - rhs.SetBounciness(rhs.GetBounciness()); + rhs.SetBounciness(node[Bounciness].as()); if (node[Density].IsDefined()) rhs.SetDensity(node[Density].as()); if (node[PositionOffset].IsDefined()) rhs.SetPositionOffset(node[PositionOffset].as()); + if (node[RotationOffset].IsDefined()) + rhs.SetRotationOffset(node[RotationOffset].as()); return true; } @@ -288,7 +295,15 @@ namespace YAML { YAML::Node node; node[MESH_YAML_TAG.data()] = SHResourceManager::GetAssetID(rhs.GetMesh()).value_or(0); - node[MAT_YAML_TAG.data()] = SHResourceManager::GetAssetID(rhs.GetMaterial()->GetBaseMaterial()).value_or(0); + auto mat = rhs.GetMaterial(); + if (mat) + { + node[MAT_YAML_TAG.data()] = SHResourceManager::GetAssetID(rhs.GetMaterial()->GetBaseMaterial()).value_or(0); + } + else + { + node[MAT_YAML_TAG.data()] = 0; + } return node; } static bool decode(YAML::Node const& node, SHRenderable& rhs) @@ -314,4 +329,45 @@ namespace YAML return true; } }; + + template<> + struct convert + { + static constexpr std::string_view TEXT_YAML_TAG = "Text"; + static constexpr std::string_view FONT_YAML_TAG = "Font"; + + static YAML::Node encode(SHTextRenderableComponent const& rhs) + { + YAML::Node node; + node[TEXT_YAML_TAG.data()] = rhs.GetText(); + auto font = rhs.GetFont(); + if (font) + { + node[FONT_YAML_TAG.data()] = SHResourceManager::GetAssetID(rhs.GetFont()).value_or(0); + } + else + { + node[FONT_YAML_TAG.data()] = 0; + } + return node; + } + static bool decode(YAML::Node const& node, SHTextRenderableComponent& rhs) + { + if (node[TEXT_YAML_TAG.data()].IsDefined()) + { + rhs.SetText(node[TEXT_YAML_TAG.data()].as()); + } + if (node[FONT_YAML_TAG.data()].IsDefined()) + { + + // Temporarily, use default material + auto gfxSystem = SHSystemManager::GetSystem(); + if (!gfxSystem) + return false; + + rhs.SetFont(SHResourceManager::LoadOrGet(node[TEXT_YAML_TAG.data()].as())); + } + return true; + } + }; } diff --git a/SHADE_Engine/src/Tools/SHLog.cpp b/SHADE_Engine/src/Tools/Logger/SHLog.cpp similarity index 93% rename from SHADE_Engine/src/Tools/SHLog.cpp rename to SHADE_Engine/src/Tools/Logger/SHLog.cpp index 30a79338..139a731e 100644 --- a/SHADE_Engine/src/Tools/SHLog.cpp +++ b/SHADE_Engine/src/Tools/Logger/SHLog.cpp @@ -44,13 +44,6 @@ namespace SHADE SHLOG_FLOOR() } -#ifdef _DEBUG - void SHLog::Trace(const std::string& msg) noexcept - { - SHLOG_TRACE(msg) - } -#endif - void SHLog_Info(const char* msg) noexcept { SHLOG_INFO(msg) diff --git a/SHADE_Engine/src/Tools/SHLog.h b/SHADE_Engine/src/Tools/Logger/SHLog.h similarity index 100% rename from SHADE_Engine/src/Tools/SHLog.h rename to SHADE_Engine/src/Tools/Logger/SHLog.h diff --git a/SHADE_Engine/src/Tools/SHLogger.cpp b/SHADE_Engine/src/Tools/Logger/SHLogger.cpp similarity index 95% rename from SHADE_Engine/src/Tools/SHLogger.cpp rename to SHADE_Engine/src/Tools/Logger/SHLogger.cpp index 9c1e76fc..72791eb1 100644 --- a/SHADE_Engine/src/Tools/SHLogger.cpp +++ b/SHADE_Engine/src/Tools/Logger/SHLogger.cpp @@ -323,34 +323,6 @@ namespace SHADE SHLOG_FLOOR() } - #ifdef _DEBUG - void SHLogger::LogTrace(const std::string& msg) noexcept - { - SHLOG_TRACE(msg) - } - - void SHLogger::LogVerboseTrace(const std::string& msg, const std::source_location& src) noexcept - { - const bool SHOW_SRC_FILE = configFlags & (1U << 3); - const bool SHOW_SRC_LINE = configFlags & (1U << 4); - - std::stringstream ss; - ss << "["; - if (SHOW_SRC_FILE) - { - ss << std::filesystem::path(src.file_name()).filename().string() << ", "; - if (SHOW_SRC_LINE) - { - ss << src.line() << ", "; - } - } - - ss << src.function_name() << "] " << msg; - - SHLOG_TRACE(ss.str()) - } - #endif - /*-----------------------------------------------------------------------------------*/ /* Private Function Member Definitions */ /*-----------------------------------------------------------------------------------*/ diff --git a/SHADE_Engine/src/Tools/SHLogger.h b/SHADE_Engine/src/Tools/Logger/SHLogger.h similarity index 88% rename from SHADE_Engine/src/Tools/SHLogger.h rename to SHADE_Engine/src/Tools/Logger/SHLogger.h index e4a4928c..1a14df9c 100644 --- a/SHADE_Engine/src/Tools/SHLogger.h +++ b/SHADE_Engine/src/Tools/Logger/SHLogger.h @@ -177,8 +177,34 @@ namespace SHADE /*-------------------------------------------------------------------------------------*/ #ifdef _DEBUG - #define SHLOG_TRACE(format, ...) SHADE::SHLogger::UseTrivialPattern(); SPDLOG_LOGGER_TRACE(spdlog::get(SHLOGGER_NAME), format, ## __VA_ARGS__); - #define SHLOGV_TRACE(format, ...) SHADE::SHLogger::UseVerbosePattern(); SPDLOG_LOGGER_TRACE(spdlog::get(SHLOGGER_NAME), format, ## __VA_ARGS__); + + #define SHLOG_INFO_D(format, ...) SHADE::SHLogger::UseTrivialPattern(); SPDLOG_LOGGER_INFO(spdlog::get(SHLOGGER_NAME), format, ## __VA_ARGS__); + #define SHLOGV_INFO_D(format, ...) SHADE::SHLogger::UseVerbosePattern(); SPDLOG_LOGGER_INFO(spdlog::get(SHLOGGER_NAME), format, ## __VA_ARGS__); + + #define SHLOG_WARNING_D(format, ...) SHADE::SHLogger::UseTrivialPattern(); SPDLOG_LOGGER_WARN(spdlog::get(SHLOGGER_NAME), format, ## __VA_ARGS__); + #define SHLOGV_WARNING_D(format, ...) SHADE::SHLogger::UseVerbosePattern(); SPDLOG_LOGGER_WARN(spdlog::get(SHLOGGER_NAME), format, ## __VA_ARGS__); + + #define SHLOG_ERROR_D(format, ...) SHADE::SHLogger::UseTrivialPattern(); SPDLOG_LOGGER_ERROR(spdlog::get(SHLOGGER_NAME), format, ## __VA_ARGS__); + #define SHLOGV_ERROR_D(format, ...) SHADE::SHLogger::UseVerbosePattern(); SPDLOG_LOGGER_ERROR(spdlog::get(SHLOGGER_NAME), format, ## __VA_ARGS__); + + #define SHLOG_CRITICAL_D(format, ...) SHADE::SHLogger::UseTrivialPattern(); SPDLOG_LOGGER_CRITICAL(spdlog::get(SHLOGGER_NAME), format, ## __VA_ARGS__); + #define SHLOGV_CRITICAL_D(format, ...) SHADE::SHLogger::UseVerbosePattern(); SPDLOG_LOGGER_CRITICAL(spdlog::get(SHLOGGER_NAME), format, ## __VA_ARGS__); + +#else + + #define SHLOG_INFO_D(format, ...) + #define SHLOGV_INFO_D(format, ...) + + #define SHLOG_WARNING_D(format, ...) + #define SHLOGV_WARNING_D(format, ...) + + #define SHLOG_ERROR_D(format, ...) + #define SHLOGV_ERROR_D(format, ...) + + #define SHLOG_CRITICAL_D(format, ...) + #define SHLOGV_CRITICAL_D(format, ...) + + #endif #define SHLOG_INFO(format, ...) SHADE::SHLogger::UseTrivialPattern(); SPDLOG_LOGGER_INFO(spdlog::get(SHLOGGER_NAME), format, ## __VA_ARGS__); diff --git a/SHADE_Engine/src/Tools/SHDeque.h b/SHADE_Engine/src/Tools/SHDeque.h new file mode 100644 index 00000000..99df910a --- /dev/null +++ b/SHADE_Engine/src/Tools/SHDeque.h @@ -0,0 +1,69 @@ +#pragma once +#pragma once + +#include "SH_API.h" +#include + +namespace SHADE +{ + template + class SH_API SHDeque + { + public: + using ValueType = T; + using Pointer = T*; + using ValueRef = T&; + using ValueConstRef = T const&; + using SizeType = uint32_t; + using ContainerType = std::deque; + using ContainerTypeConstRef = std::deque; + + SHDeque(SizeType n) : max_size(n) {} + + ContainerTypeConstRef const& GetDeque() const + { + return deque; + } + + void Push(ValueConstRef obj) + { + if (deque.size() < max_size) + deque.push_front(std::move(obj)); + else + { + deque.pop_back(); + deque.push_front(std::move(obj)); + } + } + + bool Empty() + { + return deque.empty(); + } + + void Pop() + { + deque.pop_front(); + } + + ValueConstRef Top() + { + return deque.front(); + } + + SizeType Size() const noexcept + { + return deque.size(); + } + + void Clear() + { + deque.clear(); + } + + private: + int max_size; + ContainerType deque{}; + + }; +} \ No newline at end of file diff --git a/SHADE_Engine/src/Tools/SHException.h b/SHADE_Engine/src/Tools/SHException.h index 2e0b82a9..ac6a11b7 100644 --- a/SHADE_Engine/src/Tools/SHException.h +++ b/SHADE_Engine/src/Tools/SHException.h @@ -18,7 +18,7 @@ #include // Project Headers -#include "SHLogger.h" +#include "Logger/SHLogger.h" namespace SHADE { diff --git a/SHADE_Engine/src/Tools/SHExceptionHandler.cpp b/SHADE_Engine/src/Tools/SHExceptionHandler.cpp index ff6df05c..a4892321 100644 --- a/SHADE_Engine/src/Tools/SHExceptionHandler.cpp +++ b/SHADE_Engine/src/Tools/SHExceptionHandler.cpp @@ -12,10 +12,8 @@ // Primary Header #include "SHExceptionHandler.h" - // Project Headers #include "SHException.h" -#include "SHLogger.h" namespace SHADE { diff --git a/SHADE_Engine/src/Tools/SHClipboardUtilities.cpp b/SHADE_Engine/src/Tools/Utilities/SHClipboardUtilities.cpp similarity index 100% rename from SHADE_Engine/src/Tools/SHClipboardUtilities.cpp rename to SHADE_Engine/src/Tools/Utilities/SHClipboardUtilities.cpp diff --git a/SHADE_Engine/src/Tools/SHClipboardUtilities.h b/SHADE_Engine/src/Tools/Utilities/SHClipboardUtilities.h similarity index 100% rename from SHADE_Engine/src/Tools/SHClipboardUtilities.h rename to SHADE_Engine/src/Tools/Utilities/SHClipboardUtilities.h diff --git a/SHADE_Engine/src/Tools/SHFileUtilties.cpp b/SHADE_Engine/src/Tools/Utilities/SHFileUtilties.cpp similarity index 100% rename from SHADE_Engine/src/Tools/SHFileUtilties.cpp rename to SHADE_Engine/src/Tools/Utilities/SHFileUtilties.cpp diff --git a/SHADE_Engine/src/Tools/SHFileUtilties.h b/SHADE_Engine/src/Tools/Utilities/SHFileUtilties.h similarity index 100% rename from SHADE_Engine/src/Tools/SHFileUtilties.h rename to SHADE_Engine/src/Tools/Utilities/SHFileUtilties.h diff --git a/SHADE_Engine/src/Tools/SHStringUtils.cpp b/SHADE_Engine/src/Tools/Utilities/SHStringUtilities.cpp similarity index 79% rename from SHADE_Engine/src/Tools/SHStringUtils.cpp rename to SHADE_Engine/src/Tools/Utilities/SHStringUtilities.cpp index a2594888..b1e4aa92 100644 --- a/SHADE_Engine/src/Tools/SHStringUtils.cpp +++ b/SHADE_Engine/src/Tools/Utilities/SHStringUtilities.cpp @@ -1,5 +1,5 @@ /************************************************************************************//*! -\file StringUtilities.cpp +\file SHStringUtilities.cpp \author Tng Kah Wei, kahwei.tng, 390009620 \par email: kahwei.tng\@digipen.edu \date Nov 29, 2021 @@ -12,22 +12,22 @@ of DigiPen Institute of Technology is prohibited. // Precompiled Header #include // Primary Header -#include "SHStringUtils.h" +#include "SHStringUtilities.h" namespace SHADE { /*---------------------------------------------------------------------------------*/ /* Utility Functions */ /*---------------------------------------------------------------------------------*/ - std::vector SHStringUtils::Split(const std::string& str, const char& delim) + std::vector SHStringUtilities::Split(const std::string& str, const char& delim) { return Split(str, delim); } - std::vector SHStringUtils::Split(const std::wstring& str, const wchar_t& delim) + std::vector SHStringUtilities::Split(const std::wstring& str, const wchar_t& delim) { return Split(str, delim); } - std::string SHStringUtils::WstrToStr(const std::wstring& wstr) + std::string SHStringUtilities::WstrToStr(const std::wstring& wstr) { static std::vector buffer; const int STR_SIZE = WideCharToMultiByte(CP_UTF8, 0, wstr.data(), static_cast(wstr.size()), nullptr, 0, nullptr, nullptr) + 1 /* Null Terminator */; @@ -35,7 +35,7 @@ namespace SHADE WideCharToMultiByte(CP_UTF8, 0, wstr.data(), static_cast(wstr.size()), buffer.data(), MAX_PATH, nullptr, nullptr); return std::string(buffer.data()); } - std::wstring SHStringUtils::StrToWstr(const std::string& str) + std::wstring SHStringUtilities::StrToWstr(const std::string& str) { static std::vector buffer; const int WSTR_SIZE = MultiByteToWideChar(CP_UTF8, 0, str.data(), static_cast(str.size()), nullptr, 0) + 1 /* Null Terminator */; @@ -44,7 +44,7 @@ namespace SHADE return std::wstring(buffer.data()); } - std::string SHStringUtils::GetWin32ErrorMessage(unsigned long errorCode) + std::string SHStringUtilities::GetWin32ErrorMessage(unsigned long errorCode) { return std::system_category().message(errorCode); } diff --git a/SHADE_Engine/src/Tools/SHStringUtils.h b/SHADE_Engine/src/Tools/Utilities/SHStringUtilities.h similarity index 96% rename from SHADE_Engine/src/Tools/SHStringUtils.h rename to SHADE_Engine/src/Tools/Utilities/SHStringUtilities.h index 1c895b99..bac83b07 100644 --- a/SHADE_Engine/src/Tools/SHStringUtils.h +++ b/SHADE_Engine/src/Tools/Utilities/SHStringUtilities.h @@ -1,5 +1,5 @@ /************************************************************************************//*! -\file StringUtilities.h +\file SHStringUtilities.h \author Tng Kah Wei, kahwei.tng, 390009620 \par email: kahwei.tng\@digipen.edu \date Nov 29, 2021 @@ -19,7 +19,7 @@ namespace SHADE /// /// Contains useful functions for operating on strings. /// - class SHStringUtils + class SHStringUtilities { public: /*-----------------------------------------------------------------------------*/ @@ -74,8 +74,8 @@ namespace SHADE /*-------------------------------------------------------------------------------*/ /* Constructors/Destructors */ /*-------------------------------------------------------------------------------*/ - SHStringUtils() = delete; + SHStringUtilities() = delete; }; } -#include "SHStringUtils.hpp" +#include "SHStringUtilities.hpp" diff --git a/SHADE_Engine/src/Tools/SHStringUtils.hpp b/SHADE_Engine/src/Tools/Utilities/SHStringUtilities.hpp similarity index 89% rename from SHADE_Engine/src/Tools/SHStringUtils.hpp rename to SHADE_Engine/src/Tools/Utilities/SHStringUtilities.hpp index 8b83187a..2e29c684 100644 --- a/SHADE_Engine/src/Tools/SHStringUtils.hpp +++ b/SHADE_Engine/src/Tools/Utilities/SHStringUtilities.hpp @@ -1,5 +1,5 @@ /************************************************************************************//*! -\file StringUtilities.hpp +\file SHStringUtilities.hpp \author Tng Kah Wei, kahwei.tng, 390009620 \par email: kahwei.tng\@digipen.edu \date Nov 29, 2021 @@ -12,7 +12,7 @@ of DigiPen Institute of Technology is prohibited. *//*************************************************************************************/ #pragma once // Primary Header -#include "SHStringUtils.h" +#include "SHStringUtilities.h" namespace SHADE { @@ -20,7 +20,7 @@ namespace SHADE /* Template Function Definitions */ /*-------------------------------------------------------------------------------*/ template - inline std::vector> SHStringUtils::Split(const std::basic_string& str, const T& delim) + inline std::vector> SHStringUtilities::Split(const std::basic_string& str, const T& delim) { std::vector> results; std::basic_string remaining = str; diff --git a/SHADE_Engine/src/Tools/SHUtilities.h b/SHADE_Engine/src/Tools/Utilities/SHUtilities.h similarity index 82% rename from SHADE_Engine/src/Tools/SHUtilities.h rename to SHADE_Engine/src/Tools/Utilities/SHUtilities.h index 287a827e..6cdd91ee 100644 --- a/SHADE_Engine/src/Tools/SHUtilities.h +++ b/SHADE_Engine/src/Tools/Utilities/SHUtilities.h @@ -35,22 +35,12 @@ namespace SHADE /** * @brief Converts an enum class member from it's type to any other type. * @tparam InputType Restricted to an enum class - * @tparam OutputType The type to convert the enum class member to. Defaults to int. + * @tparam OutputType The type to convert the enum class member to. Defaults to the underlying type. * @param[in] enumClassMember A member of the specified enum class. * @returns The value of the enum class member in the output type. */ template > static constexpr OutputType ConvertEnum(InputType enumClassMember) noexcept; - - /** - * @brief Converts an enum class member from it's type to the underlying type. - * @tparam Enum Restricted to an enum class - * @param[in] value A member of the specified enum class. - * @returns The value of the enum class member in the output type. - */ - template - static constexpr typename std::underlying_type_t ToUnderlying (Enum value) noexcept; - }; } // namespace SHADE diff --git a/SHADE_Engine/src/Tools/SHUtilities.hpp b/SHADE_Engine/src/Tools/Utilities/SHUtilities.hpp similarity index 83% rename from SHADE_Engine/src/Tools/SHUtilities.hpp rename to SHADE_Engine/src/Tools/Utilities/SHUtilities.hpp index e0404ea1..3f0668a2 100644 --- a/SHADE_Engine/src/Tools/SHUtilities.hpp +++ b/SHADE_Engine/src/Tools/Utilities/SHUtilities.hpp @@ -24,11 +24,4 @@ namespace SHADE { return static_cast(enumClassMember); } - - template - constexpr typename std::underlying_type_t SHUtilities::ToUnderlying(Enum value) noexcept - { - return static_cast>(value); - } - } // namespace SHADE \ No newline at end of file diff --git a/SHADE_Engine/src/UI/SHCanvasComponent.cpp b/SHADE_Engine/src/UI/SHCanvasComponent.cpp new file mode 100644 index 00000000..1ffc7a19 --- /dev/null +++ b/SHADE_Engine/src/UI/SHCanvasComponent.cpp @@ -0,0 +1,60 @@ +#include "SHpch.h" + +#include "SHCanvasComponent.h" + +namespace SHADE +{ + + SHCanvasComponent::SHCanvasComponent() + :width(1),height(1), dirtyMatrix(false), canvasMatrix() + { + + } + + void SHCanvasComponent::SetCanvasSize(CanvasSizeType width, CanvasSizeType height) noexcept + { + this->width = width; + this->height = height; + } + + void SHCanvasComponent::SetCanvasWidth(CanvasSizeType val) noexcept + { + width = val; + } + + void SHCanvasComponent::SetCanvasHeight(CanvasSizeType val) noexcept + { + height = val; + } + + + SHCanvasComponent::CanvasSizeType SHCanvasComponent::GetCanvasWidth() const noexcept + { + return width; + } + + SHCanvasComponent::CanvasSizeType SHCanvasComponent::GetCanvasHeight() const noexcept + { + return height; + } + + SHMatrix const& SHCanvasComponent::GetMatrix() const noexcept + { + return canvasMatrix; + } + +} + + +RTTR_REGISTRATION +{ + using namespace SHADE; + using namespace rttr; + + registration::class_("Canvas Component") + .property("Canvas Width", &SHCanvasComponent::GetCanvasWidth, &SHCanvasComponent::SetCanvasWidth) + .property("Canvas Height", &SHCanvasComponent::GetCanvasHeight, &SHCanvasComponent::SetCanvasHeight) + ; + + +} diff --git a/SHADE_Engine/src/UI/SHCanvasComponent.h b/SHADE_Engine/src/UI/SHCanvasComponent.h new file mode 100644 index 00000000..145b3cb3 --- /dev/null +++ b/SHADE_Engine/src/UI/SHCanvasComponent.h @@ -0,0 +1,44 @@ +#pragma once + +#include + +#include "SH_API.h" +#include "ECS_Base/Components/SHComponent.h" +#include "Math/SHMatrix.h" + + +namespace SHADE +{ + + class SH_API SHCanvasComponent final: public SHComponent + { + using CanvasSizeType = uint32_t; + + + public: + friend class SHUISystem; + + + SHCanvasComponent(); + ~SHCanvasComponent() = default; + + void SetCanvasSize(CanvasSizeType width, CanvasSizeType height) noexcept; + void SetCanvasWidth(CanvasSizeType width) noexcept; + void SetCanvasHeight(CanvasSizeType height) noexcept; + + CanvasSizeType GetCanvasWidth() const noexcept; + CanvasSizeType GetCanvasHeight() const noexcept; + SHMatrix const& GetMatrix() const noexcept; + + private: + CanvasSizeType width; + CanvasSizeType height; + bool dirtyMatrix; + SHMatrix canvasMatrix; + + + RTTR_ENABLE() + }; + + +} \ No newline at end of file diff --git a/SHADE_Engine/src/UI/SHUIComponent.cpp b/SHADE_Engine/src/UI/SHUIComponent.cpp new file mode 100644 index 00000000..8131d081 --- /dev/null +++ b/SHADE_Engine/src/UI/SHUIComponent.cpp @@ -0,0 +1,43 @@ +#include "SHpch.h" +#include "SHUIComponent.h" + + + +namespace SHADE +{ + + SHUIComponent::SHUIComponent() + { + + } + + + SHMatrix const& SHUIComponent::GetMatrix()const noexcept + { + return localToCanvasMatrix; + } + + EntityID SHUIComponent::GetCanvasID() const noexcept + { + return canvasID; + } + + void SHUIComponent::SetCanvasID(EntityID id) noexcept + { + (void)id; + } + +} + + +RTTR_REGISTRATION +{ + using namespace SHADE; + using namespace rttr; + + registration::class_("UI Component") + .property("Canvas ID", &SHUIComponent::GetCanvasID, &SHUIComponent::SetCanvasID) + ; + + +} \ No newline at end of file diff --git a/SHADE_Engine/src/UI/SHUIComponent.h b/SHADE_Engine/src/UI/SHUIComponent.h new file mode 100644 index 00000000..5a9290cc --- /dev/null +++ b/SHADE_Engine/src/UI/SHUIComponent.h @@ -0,0 +1,33 @@ +#pragma once + +#include + +#include "SH_API.h" +#include "ECS_Base/Components/SHComponent.h" +#include "Math/SHMatrix.h" + + +namespace SHADE +{ + class SH_API SHUIComponent final: public SHComponent + { + public: + friend class SHUISystem; + + SHUIComponent(); + ~SHUIComponent() = default; + + SHMatrix const& GetMatrix() const noexcept; + EntityID GetCanvasID() const noexcept; + void SetCanvasID(EntityID id) noexcept; + + private: + SHMatrix localToCanvasMatrix; + EntityID canvasID; + + + RTTR_ENABLE() + }; + + +} \ No newline at end of file diff --git a/SHADE_Engine/src/UI/SHUISystem.cpp b/SHADE_Engine/src/UI/SHUISystem.cpp new file mode 100644 index 00000000..d7dfe3c5 --- /dev/null +++ b/SHADE_Engine/src/UI/SHUISystem.cpp @@ -0,0 +1,113 @@ +#include "SHpch.h" +#include "SHUISystem.h" +#include "ECS_Base/Managers/SHComponentManager.h" +#include "ECS_Base/Managers/SHSystemManager.h" +#include "Math/Transform/SHTransformComponent.h" + +namespace SHADE +{ + + void SHUISystem::Init() + { + SystemFamily::GetID(); + SHComponentManager::CreateComponentSparseSet(); + SHComponentManager::CreateComponentSparseSet(); + } + + void SHUISystem::Exit() + { + + } + + + void SHUISystem::AddUIComponentRoutine::Execute(double dt) noexcept + { + auto& dense = SHComponentManager::GetDense(); + auto& sceneGraph = SHSceneManager::GetCurrentSceneGraph(); + + //Go through all the canvases and make sure all the children has a UIComponent. + for (auto& canvas : dense) + { + auto& children = sceneGraph.GetChildren(canvas.GetEID()); + for (auto& child : children) + { + RecurssiveUIComponentCheck(child, canvas); + } + } + + //Go through all the UI Component and make sure the parent has a UI or Canvas Component + std::vector entitiesToRemove; + auto& UIDense = SHComponentManager::GetDense(); + for (auto& ui : UIDense) + { + SHSceneNode* parentNode = sceneGraph.GetParent(ui.GetEID()); + if (parentNode == nullptr || !(SHComponentManager::HasComponent(parentNode->GetEntityID()) || SHComponentManager::HasComponent(parentNode->GetEntityID()))) + entitiesToRemove.push_back(ui.GetEID()); + } + + for (auto& id : entitiesToRemove) + { + SHComponentManager::RemoveComponent(id); + } + + + } + + void SHUISystem::AddUIComponentRoutine::RecurssiveUIComponentCheck(SHSceneNode* node, SHCanvasComponent& canvas) noexcept + { + if (node == nullptr) + return; + + EntityID eid = node->GetEntityID(); + + if(SHComponentManager::HasComponent(eid) == false) + SHComponentManager::AddComponent(eid); + else + { + SHComponentManager::GetComponent(eid)->canvasID = canvas.GetEID(); + } + + auto& children = SHSceneManager::GetCurrentSceneGraph().GetChildren(eid); + for (auto& child : children) + { + RecurssiveUIComponentCheck(child, canvas); + } + + } + + + void SHUISystem::UpdateUIMatrixRoutine::Execute(double dt) noexcept + { + SHUISystem* system = (SHUISystem* )GetSystem(); + auto& dense = SHComponentManager::GetDense(); + for (auto& comp : dense) + { + system->UpdateUIComponent(comp); + } + + + } + + void SHUISystem::UpdateUIComponent(SHUIComponent& comp) noexcept + { + auto canvasComp = SHComponentManager::GetComponent_s(comp.canvasID); + if (SHComponentManager::HasComponent(comp.GetEID())) + { + auto transform = SHComponentManager::GetComponent(comp.GetEID()); + if (canvasComp != nullptr) + comp.localToCanvasMatrix = canvasComp->GetMatrix() * transform->GetTRS(); + else + comp.localToCanvasMatrix = transform->GetTRS(); + } + else //If for some reason UI Components entities does not have a transform. + { + if (canvasComp != nullptr) + comp.localToCanvasMatrix = canvasComp->GetMatrix(); + else + comp.localToCanvasMatrix = SHMatrix::Identity; + } + } + + + +}//end namespace diff --git a/SHADE_Engine/src/UI/SHUISystem.h b/SHADE_Engine/src/UI/SHUISystem.h new file mode 100644 index 00000000..3da7efb3 --- /dev/null +++ b/SHADE_Engine/src/UI/SHUISystem.h @@ -0,0 +1,55 @@ +#pragma once + +#include "SH_API.h" +#include "ECS_Base/System/SHSystem.h" +#include "ECS_Base/System/SHSystemRoutine.h" +#include "SHUIComponent.h" +#include "SHCanvasComponent.h" +#include "Scene/SHSceneGraph.h" +#include "Scene/SHSceneManager.h" + +namespace SHADE +{ + class SH_API SHUISystem final: public SHSystem + { + public: + + SHUISystem() = default; + ~SHUISystem() = default; + + class SH_API AddUIComponentRoutine final: public SHSystemRoutine + { + public: + AddUIComponentRoutine() :SHSystemRoutine("Add UI Component Routine", true) {}; + virtual void Execute(double dt) noexcept override final; + + private: + + void RecurssiveUIComponentCheck(SHSceneNode* node, SHCanvasComponent& canvas) noexcept; + }; + friend class AddUIComponentRoutine; + + class SH_API UpdateUIMatrixRoutine final: public SHSystemRoutine + { + public: + UpdateUIMatrixRoutine() : SHSystemRoutine("Update UI Matrix Routine", true) {}; + virtual void Execute(double dt) noexcept override final; + + }; + friend class UpdateUIMatrixRoutine; + + + void Init(); + void Exit(); + + + private: + void UpdateUIComponent(SHUIComponent& comp) noexcept; + + + + + }; + + +} diff --git a/SHADE_Managed/premake5.lua b/SHADE_Managed/premake5.lua index 88021071..463e80b8 100644 --- a/SHADE_Managed/premake5.lua +++ b/SHADE_Managed/premake5.lua @@ -33,24 +33,30 @@ project "SHADE_Managed" "%{IncludeDir.imgui}", "%{IncludeDir.imguizmo}", "%{IncludeDir.imnodes}", + "%{IncludeDir.msdf_atlas_gen}", + "%{IncludeDir.msdfgen}", "%{IncludeDir.yamlcpp}", "%{IncludeDir.SDL}\\include", "%{IncludeDir.RTTR}/include", "%{IncludeDir.dotnet}\\include", "%{IncludeDir.reactphysics3d}\\include", "%{IncludeDir.VULKAN}\\include", + "%{IncludeDir.fmod}\\include", "%{wks.location}/SHADE_Engine/src" } libdirs { "%{IncludeDir.RTTR}/lib", - "%{IncludeDir.SDL}/lib" + "%{IncludeDir.SDL}/lib", + "%{IncludeDir.fmod}/lib" } links { "yaml-cpp", + "msdfgen", + "msdf-atlas-gen", "imgui", "SDL2.lib", "SDL2main.lib", @@ -60,7 +66,11 @@ project "SHADE_Managed" disablewarnings { - "4251" + "4251", + "4633", + "4634", + "4635", + "4638" } defines @@ -75,13 +85,16 @@ project "SHADE_Managed" disablewarnings { - "4275" + "4275", + "4635" } dependson { "yaml-cpp", + "msdfgen", + "msdf-atlas-gen", "imgui", "SHADE_Engine" } @@ -92,13 +105,28 @@ project "SHADE_Managed" symbols "On" defines {"_DEBUG"} links{"librttr_core_d.lib"} + links{"fmodstudioL_vc.lib", "fmodL_vc.lib"} filter "configurations:Release" optimize "On" defines{"_RELEASE"} links{"librttr_core.lib"} + links{"fmodstudio_vc.lib", "fmod_vc.lib"} filter "configurations:Publish" optimize "On" defines{"_RELEASE"} links{"librttr_core.lib"} + links{"fmodstudio_vc.lib", "fmod_vc.lib"} + + require "vstudio" + + function docsElementCPP(cfg) + _p(3,'true') + end + + premake.override(premake.vstudio.vc2010.elements, "clCompile", function (oldfn, cfg) + return table.join(oldfn(cfg), { + docsElementCPP, + }) + end) \ No newline at end of file diff --git a/SHADE_Managed/src/Assets/FontAsset.cxx b/SHADE_Managed/src/Assets/FontAsset.cxx new file mode 100644 index 00000000..19d256cb --- /dev/null +++ b/SHADE_Managed/src/Assets/FontAsset.cxx @@ -0,0 +1,69 @@ +/************************************************************************************//*! +\file Font.cxx +\author Tng Kah Wei, kahwei.tng, 390009620 +\par email: kahwei.tng\@digipen.edu +\date Oct 28, 2022 +\brief Contains the implementation of the functions of the managed Font class. + + Note: This file is written in C++17/CLI. + +Copyright (C) 2022 DigiPen Institute of Technology. +Reproduction or disclosure of this file or its contents without the prior written consent +of DigiPen Institute of Technology is prohibited. +*//*************************************************************************************/ +// Precompiled Headers +#include "SHpch.h" +// Primary Header +#include "FontAsset.hxx" +// External Dependencies +#include "Resource/SHResourceManagerInterface.h" +// Project Headers +#include "Utility/Convert.hxx" + +namespace SHADE +{ + /*---------------------------------------------------------------------------------*/ + /* Properties */ + /*---------------------------------------------------------------------------------*/ + Handle FontAsset::NativeObject::get() + try + { + return SHResourceManagerInterface::LoadOrGetFont(asset.NativeAssetID); + } + catch (const BadHandleCastException&) + { + return Handle(); + } + AssetID FontAsset::NativeAssetID::get() + { + return asset.NativeAssetID; + } + + /*---------------------------------------------------------------------------------*/ + /* Constructors/Destructor */ + /*---------------------------------------------------------------------------------*/ + FontAsset::FontAsset(AssetID fontId) + : asset { fontId } + {} + + /*---------------------------------------------------------------------------------*/ + /* Operator Overloads */ + /*---------------------------------------------------------------------------------*/ + FontAsset::operator bool(FontAsset asset) + { + return asset.asset; + } + + /*---------------------------------------------------------------------------------*/ + /* Conversion Operators */ + /*---------------------------------------------------------------------------------*/ + FontAsset::operator Asset(FontAsset nativeAsset) + { + return nativeAsset.asset; + } + + FontAsset::operator FontAsset(Asset asset) + { + return FontAsset(asset.NativeAssetID); + } +} diff --git a/SHADE_Managed/src/Assets/FontAsset.hxx b/SHADE_Managed/src/Assets/FontAsset.hxx new file mode 100644 index 00000000..89239224 --- /dev/null +++ b/SHADE_Managed/src/Assets/FontAsset.hxx @@ -0,0 +1,89 @@ +/************************************************************************************//*! +\file Font.hxx +\author Tng Kah Wei, kahwei.tng, 390009620 +\par email: kahwei.tng\@digipen.edu +\date Oct 28, 2022 +\brief Contains the definition of the managed Font class. + + Note: This file is written in C++17/CLI. + +Copyright (C) 2022 DigiPen Institute of Technology. +Reproduction or disclosure of this file or its contents without the prior written consent +of DigiPen Institute of Technology is prohibited. +*//*************************************************************************************/ +#pragma once + +// External Dependencies +#include "Resource/SHHandle.h" +#include "Graphics/MiddleEnd/TextRendering/SHFont.h" +// Project Includes +#include "NativeAsset.hxx" +#include "Engine/GenericHandle.hxx" + +namespace SHADE +{ + /// + /// Managed counterpart of the native Font object that can be fed to TextRenderables + /// for rendering. + /// + public value struct FontAsset + { + internal: + /*-----------------------------------------------------------------------------*/ + /* Properties */ + /*-----------------------------------------------------------------------------*/ + /// + /// Copy of the Handle to the native object. + /// + property Handle NativeObject + { + Handle get(); + } + /// + /// The raw asset ID of the asset. + /// + property AssetID NativeAssetID + { + AssetID get(); + } + + /*-----------------------------------------------------------------------------*/ + /* Constructors/Destructor */ + /*-----------------------------------------------------------------------------*/ + /// + /// Constructor for the Font. + /// + /// AssetID to the font asset. + FontAsset(AssetID fontId); + + /*-----------------------------------------------------------------------------*/ + /* Operator Overloads */ + /*-----------------------------------------------------------------------------*/ + /// + /// Implicit conversion operator to enable checking if a Font is valid. + /// + /// Asset to check. + /// True if the Asset is valid. + static operator bool(FontAsset asset); + + /*-----------------------------------------------------------------------------*/ + /* Conversion Operators */ + /*-----------------------------------------------------------------------------*/ + /// + /// Conversion operator to enable casting from a Font to an Asset. + /// + /// Vector3 to convert from. + static explicit operator Asset(FontAsset nativeAsset); + /// + /// Conversion operator to enable casting from a Asset to a Font. + /// + /// + static explicit operator FontAsset(Asset asset); + + protected: + /*-----------------------------------------------------------------------------*/ + /* Data Members */ + /*-----------------------------------------------------------------------------*/ + Asset asset; + }; +} diff --git a/SHADE_Managed/src/Assets/MaterialAsset.cxx b/SHADE_Managed/src/Assets/MaterialAsset.cxx new file mode 100644 index 00000000..48cbfd83 --- /dev/null +++ b/SHADE_Managed/src/Assets/MaterialAsset.cxx @@ -0,0 +1,70 @@ +/************************************************************************************//*! +\file MaterialAsset.cxx +\author Tng Kah Wei, kahwei.tng, 390009620 +\par email: kahwei.tng\@digipen.edu +\date Nov 22, 2022 +\brief Contains the implementation of the functions of the managed Material + struct. + + Note: This file is written in C++17/CLI. + +Copyright (C) 2022 DigiPen Institute of Technology. +Reproduction or disclosure of this file or its contents without the prior written consent +of DigiPen Institute of Technology is prohibited. +*//*************************************************************************************/ +// Precompiled Headers +#include "SHpch.h" +// Primary Header +#include "MaterialAsset.hxx" +// External Dependencies +#include "Resource/SHResourceManagerInterface.h" +// Project Headers +#include "Utility/Convert.hxx" + +namespace SHADE +{ + /*---------------------------------------------------------------------------------*/ + /* Properties */ + /*---------------------------------------------------------------------------------*/ + Handle MaterialAsset::NativeObject::get() + try + { + return SHResourceManagerInterface::LoadOrGetMaterial(asset.NativeAssetID); + } + catch (const BadHandleCastException&) + { + return Handle(); + } + AssetID MaterialAsset::NativeAssetID::get() + { + return asset.NativeAssetID; + } + + /*---------------------------------------------------------------------------------*/ + /* Constructors/Destructor */ + /*---------------------------------------------------------------------------------*/ + MaterialAsset::MaterialAsset(AssetID MaterialId) + : asset { MaterialId } + {} + + /*---------------------------------------------------------------------------------*/ + /* Operator Overloads */ + /*---------------------------------------------------------------------------------*/ + MaterialAsset::operator bool(MaterialAsset asset) + { + return asset.asset; + } + + /*---------------------------------------------------------------------------------*/ + /* Conversion Operators */ + /*---------------------------------------------------------------------------------*/ + MaterialAsset::operator Asset(MaterialAsset nativeAsset) + { + return nativeAsset.asset; + } + + MaterialAsset::operator MaterialAsset(Asset asset) + { + return MaterialAsset(asset.NativeAssetID); + } +} diff --git a/SHADE_Managed/src/Assets/MaterialAsset.hxx b/SHADE_Managed/src/Assets/MaterialAsset.hxx new file mode 100644 index 00000000..5380b286 --- /dev/null +++ b/SHADE_Managed/src/Assets/MaterialAsset.hxx @@ -0,0 +1,89 @@ +/************************************************************************************//*! +\file MaterialAsset.hxx +\author Tng Kah Wei, kahwei.tng, 390009620 +\par email: kahwei.tng\@digipen.edu +\date Nov 22, 2022 +\brief Contains the definition of the managed MaterialAsset struct. + + Note: This file is written in C++17/CLI. + +Copyright (C) 2022 DigiPen Institute of Technology. +Reproduction or disclosure of this file or its contents without the prior written consent +of DigiPen Institute of Technology is prohibited. +*//*************************************************************************************/ +#pragma once + +// External Dependencies +#include "Resource/SHHandle.h" +#include "Graphics/MiddleEnd/Interface/SHMaterial.h" +// Project Includes +#include "NativeAsset.hxx" +#include "Engine/GenericHandle.hxx" + +namespace SHADE +{ + /// + /// Managed counterpart of the native Material object that can be fed to TextRenderables + /// for rendering. + /// + public value struct MaterialAsset + { + internal: + /*-----------------------------------------------------------------------------*/ + /* Properties */ + /*-----------------------------------------------------------------------------*/ + /// + /// Copy of the Handle to the native object. + /// + property Handle NativeObject + { + Handle get(); + } + /// + /// The raw asset ID of the asset. + /// + property AssetID NativeAssetID + { + AssetID get(); + } + + /*-----------------------------------------------------------------------------*/ + /* Constructors/Destructor */ + /*-----------------------------------------------------------------------------*/ + /// + /// Constructor for the Material. + /// + /// AssetID to the Material asset. + MaterialAsset(AssetID MaterialId); + + /*-----------------------------------------------------------------------------*/ + /* Operator Overloads */ + /*-----------------------------------------------------------------------------*/ + /// + /// Implicit conversion operator to enable checking if a Material is valid. + /// + /// Asset to check. + /// True if the Asset is valid. + static operator bool(MaterialAsset asset); + + /*-----------------------------------------------------------------------------*/ + /* Conversion Operators */ + /*-----------------------------------------------------------------------------*/ + /// + /// Conversion operator to enable casting from a Material to an Asset. + /// + /// Vector3 to convert from. + static explicit operator Asset(MaterialAsset nativeAsset); + /// + /// Conversion operator to enable casting from a Asset to a Material. + /// + /// + static explicit operator MaterialAsset(Asset asset); + + protected: + /*-----------------------------------------------------------------------------*/ + /* Data Members */ + /*-----------------------------------------------------------------------------*/ + Asset asset; + }; +} diff --git a/SHADE_Managed/src/Assets/Mesh.cxx b/SHADE_Managed/src/Assets/Mesh.cxx deleted file mode 100644 index 95a61ff6..00000000 --- a/SHADE_Managed/src/Assets/Mesh.cxx +++ /dev/null @@ -1,34 +0,0 @@ -/************************************************************************************//*! -\file Mesh.cxx -\author Tng Kah Wei, kahwei.tng, 390009620 -\par email: kahwei.tng\@digipen.edu -\date Oct 28, 2022 -\brief Contains the implementation of the functions of the managed Mesh class. - - Note: This file is written in C++17/CLI. - -Copyright (C) 2022 DigiPen Institute of Technology. -Reproduction or disclosure of this file or its contents without the prior written consent -of DigiPen Institute of Technology is prohibited. -*//*************************************************************************************/ -// Precompiled Headers -#include "SHpch.h" -// Primary Header -#include "Mesh.hxx" -// Project Headers -#include "Utility/Convert.hxx" - -namespace SHADE -{ - /*---------------------------------------------------------------------------------*/ - /* Explicit Template Instantiation */ - /*---------------------------------------------------------------------------------*/ - template ref class NativeAsset; - - /*---------------------------------------------------------------------------------*/ - /* Constructors/Destructor */ - /*---------------------------------------------------------------------------------*/ - Mesh::Mesh(Handle mesh) - : NativeAsset { mesh } - {} -} diff --git a/SHADE_Managed/src/Assets/Mesh.hxx b/SHADE_Managed/src/Assets/Mesh.hxx deleted file mode 100644 index 8cd356ba..00000000 --- a/SHADE_Managed/src/Assets/Mesh.hxx +++ /dev/null @@ -1,41 +0,0 @@ -/************************************************************************************//*! -\file Mesh.hxx -\author Tng Kah Wei, kahwei.tng, 390009620 -\par email: kahwei.tng\@digipen.edu -\date Oct 28, 2022 -\brief Contains the definition of the managed Mesh class. - - Note: This file is written in C++17/CLI. - -Copyright (C) 2022 DigiPen Institute of Technology. -Reproduction or disclosure of this file or its contents without the prior written consent -of DigiPen Institute of Technology is prohibited. -*//*************************************************************************************/ -#pragma once - -// External Dependencies -#include "Resource/SHHandle.h" -#include "Graphics/MiddleEnd/Interface/SHMeshLibrary.h" -// Project Includes -#include "NativeAsset.hxx" -#include "Engine/GenericHandle.hxx" - -namespace SHADE -{ - /// - /// Managed counterpart of the native Mesh object containing vertex data that can - /// be fed to Renderables for rendering. - /// - public ref class Mesh : public NativeAsset - { - internal: - /*-----------------------------------------------------------------------------*/ - /* Constructors/Destructor */ - /*-----------------------------------------------------------------------------*/ - /// - /// Constructor for the Mesh - /// - /// Handle to the mesh object. - Mesh(Handle mesh); - }; -} diff --git a/SHADE_Managed/src/Assets/MeshAsset.cxx b/SHADE_Managed/src/Assets/MeshAsset.cxx new file mode 100644 index 00000000..6301fcee --- /dev/null +++ b/SHADE_Managed/src/Assets/MeshAsset.cxx @@ -0,0 +1,69 @@ +/************************************************************************************//*! +\file Mesh.cxx +\author Tng Kah Wei, kahwei.tng, 390009620 +\par email: kahwei.tng\@digipen.edu +\date Oct 28, 2022 +\brief Contains the implementation of the functions of the managed Mesh class. + + Note: This file is written in C++17/CLI. + +Copyright (C) 2022 DigiPen Institute of Technology. +Reproduction or disclosure of this file or its contents without the prior written consent +of DigiPen Institute of Technology is prohibited. +*//*************************************************************************************/ +// Precompiled Headers +#include "SHpch.h" +// Primary Header +#include "MeshAsset.hxx" +// External Dependencies +#include "Resource/SHResourceManagerInterface.h" +// Project Headers +#include "Utility/Convert.hxx" + +namespace SHADE +{ + /*---------------------------------------------------------------------------------*/ + /* Properties */ + /*---------------------------------------------------------------------------------*/ + Handle MeshAsset::NativeObject::get() + try + { + return SHResourceManagerInterface::LoadOrGetMesh(asset.NativeAssetID); + } + catch (const BadHandleCastException&) + { + return Handle(); + } + AssetID MeshAsset::NativeAssetID::get() + { + return asset.NativeAssetID; + } + + /*---------------------------------------------------------------------------------*/ + /* Constructors/Destructor */ + /*---------------------------------------------------------------------------------*/ + MeshAsset::MeshAsset(AssetID meshId) + : asset{ meshId } + {} + + /*---------------------------------------------------------------------------------*/ + /* Operator Overloads */ + /*---------------------------------------------------------------------------------*/ + MeshAsset::operator bool(MeshAsset asset) + { + return asset.asset; + } + + /*---------------------------------------------------------------------------------*/ + /* Conversion Operators */ + /*---------------------------------------------------------------------------------*/ + MeshAsset::operator Asset(MeshAsset nativeAsset) + { + return nativeAsset.asset; + } + + MeshAsset::operator MeshAsset(Asset asset) + { + return MeshAsset(asset.NativeAssetID); + } +} diff --git a/SHADE_Managed/src/Assets/MeshAsset.hxx b/SHADE_Managed/src/Assets/MeshAsset.hxx new file mode 100644 index 00000000..26625c1a --- /dev/null +++ b/SHADE_Managed/src/Assets/MeshAsset.hxx @@ -0,0 +1,89 @@ +/************************************************************************************//*! +\file Mesh.hxx +\author Tng Kah Wei, kahwei.tng, 390009620 +\par email: kahwei.tng\@digipen.edu +\date Oct 28, 2022 +\brief Contains the definition of the managed Mesh class. + + Note: This file is written in C++17/CLI. + +Copyright (C) 2022 DigiPen Institute of Technology. +Reproduction or disclosure of this file or its contents without the prior written consent +of DigiPen Institute of Technology is prohibited. +*//*************************************************************************************/ +#pragma once + +// External Dependencies +#include "Resource/SHHandle.h" +#include "Graphics/MiddleEnd/Interface/SHMeshLibrary.h" +// Project Includes +#include "NativeAsset.hxx" +#include "Engine/GenericHandle.hxx" + +namespace SHADE +{ + /// + /// Managed counterpart of the native Mesh object containing vertex data that can + /// be fed to Renderables for rendering. + /// + public value struct MeshAsset + { + internal: + /*-----------------------------------------------------------------------------*/ + /* Properties */ + /*-----------------------------------------------------------------------------*/ + /// + /// Copy of the Handle to the native object. + /// + property Handle NativeObject + { + Handle get(); + } + /// + /// The raw asset ID of the asset. + /// + property AssetID NativeAssetID + { + AssetID get(); + } + + /*-----------------------------------------------------------------------------*/ + /* Constructors/Destructor */ + /*-----------------------------------------------------------------------------*/ + /// + /// Constructor for the Mesh. + /// + /// AssetID to the Mesh asset. + MeshAsset(AssetID meshId); + + /*-----------------------------------------------------------------------------*/ + /* Operator Overloads */ + /*-----------------------------------------------------------------------------*/ + /// + /// Implicit conversion operator to enable checking if a Mesh is valid. + /// + /// Asset to check. + /// True if the Asset is valid. + static operator bool(MeshAsset asset); + + /*-----------------------------------------------------------------------------*/ + /* Conversion Operators */ + /*-----------------------------------------------------------------------------*/ + /// + /// Conversion operator to enable casting from a Mesh to an Asset. + /// + /// Vector3 to convert from. + static explicit operator Asset(MeshAsset nativeAsset); + /// + /// Conversion operator to enable casting from a Asset to a Mesh. + /// + /// + static explicit operator MeshAsset(Asset asset); + + protected: + /*-----------------------------------------------------------------------------*/ + /* Data Members */ + /*-----------------------------------------------------------------------------*/ + Asset asset; + }; +} diff --git a/SHADE_Managed/src/Assets/NativeAsset.cxx b/SHADE_Managed/src/Assets/NativeAsset.cxx index 674207a1..9480b02a 100644 --- a/SHADE_Managed/src/Assets/NativeAsset.cxx +++ b/SHADE_Managed/src/Assets/NativeAsset.cxx @@ -17,10 +17,30 @@ of DigiPen Institute of Technology is prohibited. #include "NativeAsset.hxx" // Project Includes #include "Engine/GenericHandle.hxx" +#include "Utility/Convert.hxx" namespace SHADE { /*---------------------------------------------------------------------------------*/ - /* Explicit Tempalte Instantiations */ + /* Properties */ /*---------------------------------------------------------------------------------*/ + AssetID Asset::NativeAssetID::get() + { + return assetId; + } + + /*---------------------------------------------------------------------------------*/ + /* Constructors */ + /*---------------------------------------------------------------------------------*/ + Asset::Asset(AssetID id) + : assetId { id } + {} + + /*---------------------------------------------------------------------------------*/ + /* Operator Overloads */ + /*---------------------------------------------------------------------------------*/ + Asset::operator bool(Asset asset) + { + return asset.NativeAssetID != INVALID_ASSET_ID; + } } \ No newline at end of file diff --git a/SHADE_Managed/src/Assets/NativeAsset.hxx b/SHADE_Managed/src/Assets/NativeAsset.hxx index 68addb75..40f7e628 100644 --- a/SHADE_Managed/src/Assets/NativeAsset.hxx +++ b/SHADE_Managed/src/Assets/NativeAsset.hxx @@ -14,53 +14,53 @@ of DigiPen Institute of Technology is prohibited. *//*************************************************************************************/ #pragma once +// External Dependencies +#include "Assets/SHAssetMacros.h" +// Project Includes #include "Engine/GenericHandle.hxx" namespace SHADE { /// - /// Generalised template class for a managed representation of a native asset + /// Struct that contains native asset information. /// - /// - /// The type of the asset's native representation. - /// - template - public ref class NativeAsset + public value struct Asset { internal: /*-----------------------------------------------------------------------------*/ /* Properties */ /*-----------------------------------------------------------------------------*/ /// - /// Generic handle for the native object + /// The raw asset ID of the asset. /// - property GenericHandle NativeObjectHandle + property AssetID NativeAssetID { - GenericHandle get(); - } - /// - /// Copy of the Handle to the native object. - /// - property Handle NativeObject - { - Handle get(); + AssetID get(); } /*-----------------------------------------------------------------------------*/ /* Constructors/Destructor */ /*-----------------------------------------------------------------------------*/ /// - /// Constructor for the native asset + /// Constructor for the asset. /// - /// Native asset object. - NativeAsset(Handle ptr); + /// Native asset ID to construct this asset from. + explicit Asset(AssetID id); + + /*-----------------------------------------------------------------------------*/ + /* Operator Overloads */ + /*-----------------------------------------------------------------------------*/ + /// + /// Implicit conversion operator to enable checking if a Asset is valid. + /// + /// Asset to check. + /// True if the Asset is valid. + static operator bool(Asset asset); protected: /*-----------------------------------------------------------------------------*/ /* Data Members */ /*-----------------------------------------------------------------------------*/ - GenericHandle nativeObjHandle; + AssetID assetId; }; } - -#include "NativeAsset.h++" diff --git a/SHADE_Managed/src/Audio/Audio.cxx b/SHADE_Managed/src/Audio/Audio.cxx new file mode 100644 index 00000000..52e29529 --- /dev/null +++ b/SHADE_Managed/src/Audio/Audio.cxx @@ -0,0 +1,101 @@ +/************************************************************************************//*! +\file Audio.cxx +\author Tng Kah Wei, kahwei.tng, 390009620 +\par email: kahwei.tng\@digipen.edu +\date Nov 16, 2022 +\brief Contains the function definitions of the managed Audio static class. + + Note: This file is written in C++17/CLI. + +Copyright (C) 2022 DigiPen Institute of Technology. +Reproduction or disclosure of this file or its contents without the prior written consent +of DigiPen Institute of Technology is prohibited. +*//*************************************************************************************/ +// Precompiled Header +#include "SHpch.h" +// Primary Header +#include "Audio.hxx" +// External Dependencies +#include "AudioSystem/SHAudioSystem.h" +#include "ECS_Base/Managers/SHSystemManager.h" +#include "Utility/Convert.hxx" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------*/ + /* Properties */ + /*-----------------------------------------------------------------------------*/ + float Audio::BGMVolume::get() + { + auto audioSys = SHSystemManager::GetSystem(); + return audioSys->GetBgmVolume(); + } + void Audio::BGMVolume::set(float value) + { + auto audioSys = SHSystemManager::GetSystem(); + audioSys->SetBgmVolume(System::Math::Clamp(value, 0.0f, 1.0f)); + } + float Audio::SFXVolume::get() + { + auto audioSys = SHSystemManager::GetSystem(); + return audioSys->GetSfxVolume(); + } + void Audio::SFXVolume::set(float value) + { + auto audioSys = SHSystemManager::GetSystem(); + audioSys->SetSfxVolume(System::Math::Clamp(value, 0.0f, 1.0f)); + } + float Audio::MasterVolume::get() + { + auto audioSys = SHSystemManager::GetSystem(); + return audioSys->GetMasterVolume(); + } + void Audio::MasterVolume::set(float value) + { + auto audioSys = SHSystemManager::GetSystem(); + audioSys->SetMasterVolume(System::Math::Clamp(value, 0.0f, 1.0f)); + } + bool Audio::IsPaused::get() + { + auto audioSys = SHSystemManager::GetSystem(); + return audioSys->GetPaused(); + } + void Audio::IsPaused::set(bool value) + { + auto audioSys = SHSystemManager::GetSystem(); + audioSys->SetPaused(value); + } + + /*-----------------------------------------------------------------------------*/ + /* Playback Control Functions */ + /*-----------------------------------------------------------------------------*/ + void Audio::PlaySFXOnce2D(System::String^ path) + { + auto audioSys = SHSystemManager::GetSystem(); + audioSys->PlayEventOnce(Convert::ToNative(path).data()); + } + + void Audio::PlaySFXOnce3D(System::String^ path, GameObject gameObject) + { + auto audioSys = SHSystemManager::GetSystem(); + audioSys->PlayEventOnce(Convert::ToNative(path).data(), true, gameObject.GetEntity(), true); + } + + void Audio::PlayBGMOnce2D(System::String^ path) + { + auto audioSys = SHSystemManager::GetSystem(); + audioSys->PlayEventOnce(Convert::ToNative(path).data(), false); + } + + void Audio::PlayBGMOnce3D(System::String^ path, GameObject gameObject) + { + auto audioSys = SHSystemManager::GetSystem(); + audioSys->PlayEventOnce(Convert::ToNative(path).data(), false, gameObject.GetEntity(), true); + } + + void Audio::StopAllSounds() + { + auto audioSys = SHSystemManager::GetSystem(); + audioSys->StopAllSounds(); + } +} diff --git a/SHADE_Managed/src/Audio/Audio.hxx b/SHADE_Managed/src/Audio/Audio.hxx new file mode 100644 index 00000000..d568dc90 --- /dev/null +++ b/SHADE_Managed/src/Audio/Audio.hxx @@ -0,0 +1,103 @@ +/************************************************************************************//*! +\file Audio.hxx +\author Tng Kah Wei, kahwei.tng, 390009620 +\par email: kahwei.tng\@digipen.edu +\date Nov 16, 2022 +\brief Contains the definitions of the managed Audio static class. + + Note: This file is written in C++17/CLI. + +Copyright (C) 2022 DigiPen Institute of Technology. +Reproduction or disclosure of this file or its contents without the prior written consent +of DigiPen Institute of Technology is prohibited. +*//*************************************************************************************/ +#pragma once +#include "Engine/GameObject.hxx" + +namespace SHADE +{ + /// + /// Static class that contains the functions for interfacing with the Audio system. + /// + public ref class Audio abstract sealed + { + public: + /*-----------------------------------------------------------------------------*/ + /* Properties */ + /*-----------------------------------------------------------------------------*/ + /// + /// Volume of background music playback. Clamped between 0.0 and 1.0. + /// + static property float BGMVolume + { + float get(); + void set(float value); + } + /// + /// Volume of sound effects playback. Clamped between 0.0 and 1.0. + /// + static property float SFXVolume + { + float get(); + void set(float value); + } + /// + /// Overall volume for all audio playback. Clamped between 0.0 and 1.0. + /// + static property float MasterVolume + { + float get(); + void set(float value); + } + /// + /// Whether or not all audio playback is paused. + /// + static property bool IsPaused + { + bool get(); + void set(bool value); + } + + /*-----------------------------------------------------------------------------*/ + /* Playback Control Functions */ + /*-----------------------------------------------------------------------------*/ + /// + /// Plays a sound effect without looping without spatial attenuation. + /// + /// + /// Path to the audio file relative to the working directory. + /// + static void PlaySFXOnce2D(System::String^ path); + /// + /// Plays a sound effect without looping with spatial attenuation. + /// + /// + /// Path to the audio file relative to the working directory. + /// + /// + /// Object whose position is used to play the sound effect. + /// + static void PlaySFXOnce3D(System::String^ path, GameObject gameObject); + /// + /// Plays background music without looping without spatial attenuation. + /// + /// + /// Path to the audio file relative to the working directory. + /// + static void PlayBGMOnce2D(System::String^ path); + /// + /// Plays background music without looping with spatial attenuation. + /// + /// + /// Path to the audio file relative to the working directory. + /// + /// + /// Object whose position is used to play the background music. + /// + static void PlayBGMOnce3D(System::String^ path, GameObject gameObject); + /// + /// Stops playback of all sound effects and music. + /// + static void StopAllSounds(); + }; +} diff --git a/SHADE_Managed/src/Components/Collider.cxx b/SHADE_Managed/src/Components/Collider.cxx index 0e916b7b..41910d66 100644 --- a/SHADE_Managed/src/Components/Collider.cxx +++ b/SHADE_Managed/src/Components/Collider.cxx @@ -20,7 +20,7 @@ of DigiPen Institute of Technology is prohibited. namespace SHADE { /*---------------------------------------------------------------------------------*/ - /* ColliderBound - Constructors */ + /* CollisionShape - Constructors */ /*---------------------------------------------------------------------------------*/ CollisionShape::CollisionShape(int arrayIdx, Entity attachedEntity) : arrayIndex { arrayIdx } @@ -28,102 +28,183 @@ namespace SHADE {} /*---------------------------------------------------------------------------------*/ - /* ColliderBound - Setter Functions */ + /* CollisionShape - Properties */ + /*---------------------------------------------------------------------------------*/ + + bool CollisionShape::IsTrigger::get() + { + return getNativeCollisionShape().IsTrigger(); + } + + void CollisionShape::IsTrigger::set(bool value) + { + getNativeCollisionShape().SetIsTrigger(value); + } + + Vector3 CollisionShape::PositionOffset::get() + { + return Convert::ToCLI(getNativeCollisionShape().GetPositionOffset()); + } + + void CollisionShape::PositionOffset::set(Vector3 value) + { + getNativeCollisionShape().SetPositionOffset(Convert::ToNative(value)); + } + + Vector3 CollisionShape::RotationOffset::get() + { + return Convert::ToCLI(getNativeCollisionShape().GetRotationOffset()); + } + + void CollisionShape::RotationOffset::set(Vector3 value) + { + getNativeCollisionShape().SetRotationOffset(Convert::ToNative(value)); + } + + float CollisionShape::Friction::get() + { + return getNativeCollisionShape().GetFriction(); + } + + void CollisionShape::Friction::set(float value) + { + getNativeCollisionShape().SetFriction(value); + } + + float CollisionShape::Bounciness::get() + { + return getNativeCollisionShape().GetBounciness(); + } + + void CollisionShape::Bounciness::set(float value) + { + getNativeCollisionShape().SetBounciness(value); + } + + float CollisionShape::Density::get() + { + return getNativeCollisionShape().GetDensity(); + } + + void CollisionShape::Density::set(float value) + { + getNativeCollisionShape().SetDensity(value); + } + + /*---------------------------------------------------------------------------------*/ + /* CollisionShape - helper Functions */ /*---------------------------------------------------------------------------------*/ void CollisionShape::updateArrayIndex(int index) { arrayIndex = index; } + SHCollisionShape& SHADE::CollisionShape::getNativeCollisionShape() + { + SHColliderComponent* collider = SHComponentManager::GetComponent_s(entity); + if (!collider) + throw gcnew System::InvalidOperationException("Unable to retrieve Collider component!"); + + try + { + auto& shape = collider->GetCollisionShape(arrayIndex); + return shape; + } + catch (std::invalid_argument&) + { + throw gcnew System::IndexOutOfRangeException("Attempted to retrieve out of range CollisionShape!"); + } + } + /*---------------------------------------------------------------------------------*/ - /* BoxColliderBound - Constructors */ + /* BoxCollider - Constructors */ /*---------------------------------------------------------------------------------*/ BoxCollider::BoxCollider(int arrayIdx, Entity attachedEntity) : CollisionShape { arrayIndex, attachedEntity } {} /*---------------------------------------------------------------------------------*/ - /* BoxColliderBound - Properties */ + /* BoxCollider - Properties */ /*---------------------------------------------------------------------------------*/ Vector3 BoxCollider::Center::get() { - return Convert::ToCLI(getNativeBoundObject().GetCenter()); + return Convert::ToCLI(getNativeCollisionShape().GetCenter()); } void BoxCollider::Center::set(Vector3 value) { - getNativeBoundObject().SetCenter(Convert::ToNative(value)); + getNativeCollisionShape().SetCenter(Convert::ToNative(value)); } Vector3 BoxCollider::HalfExtents::get() { - return Convert::ToCLI(getNativeBoundObject().GetWorldExtents()); + return Convert::ToCLI(getNativeCollisionShape().GetWorldExtents()); } void BoxCollider::HalfExtents::set(Vector3 value) { - getNativeBoundObject().SetWorldExtents(Convert::ToNative(value)); + getNativeCollisionShape().SetWorldExtents(Convert::ToNative(value)); } Vector3 BoxCollider::Min::get() { - return Convert::ToCLI(getNativeBoundObject().GetMin()); + return Convert::ToCLI(getNativeCollisionShape().GetMin()); } void BoxCollider::Min::set(Vector3 value) { - getNativeBoundObject().SetMin(Convert::ToNative(value)); + getNativeCollisionShape().SetMin(Convert::ToNative(value)); } Vector3 BoxCollider::Max::get() { - return Convert::ToCLI(getNativeBoundObject().GetMax()); + return Convert::ToCLI(getNativeCollisionShape().GetMax()); } void BoxCollider::Max::set(Vector3 value) { - getNativeBoundObject().SetMax(Convert::ToNative(value)); + getNativeCollisionShape().SetMax(Convert::ToNative(value)); } /*---------------------------------------------------------------------------------*/ - /* BoxColliderBound - Usage Functions */ + /* BoxCollider - Usage Functions */ /*---------------------------------------------------------------------------------*/ bool BoxCollider::TestPoint(Vector3 point) { - return getNativeBoundObject().TestPoint(Convert::ToNative(point)); + return getNativeCollisionShape().TestPoint(Convert::ToNative(point)); } bool BoxCollider::Raycast(Ray ray, float maxDistance) { - return getNativeBoundObject().Raycast(Convert::ToNative(ray), maxDistance); + return getNativeCollisionShape().Raycast(Convert::ToNative(ray), maxDistance); } /*---------------------------------------------------------------------------------*/ - /* BoxColliderBound - Properties */ + /* SphereCollider - Properties */ /*---------------------------------------------------------------------------------*/ Vector3 SphereCollider::Center::get() { - return Convert::ToCLI(getNativeBoundObject().GetCenter()); + return Convert::ToCLI(getNativeCollisionShape().GetCenter()); } void SphereCollider::Center::set(Vector3 value) { - getNativeBoundObject().SetCenter(Convert::ToNative(value)); + getNativeCollisionShape().SetCenter(Convert::ToNative(value)); } float SphereCollider::Radius::get() { - return getNativeBoundObject().GetWorldRadius(); + return getNativeCollisionShape().GetWorldRadius(); } void SphereCollider::Radius::set(float value) { - getNativeBoundObject().SetWorldRadius(value); + getNativeCollisionShape().SetWorldRadius(value); } /*---------------------------------------------------------------------------------*/ - /* SphereColliderBound - Usage Functions */ + /* SphereCollider - Usage Functions */ /*---------------------------------------------------------------------------------*/ bool SphereCollider::TestPoint(Vector3 point) { - return getNativeBoundObject().TestPoint(Convert::ToNative(point)); + return getNativeCollisionShape().TestPoint(Convert::ToNative(point)); } bool SphereCollider::Raycast(Ray ray, float maxDistance) { - return getNativeBoundObject().Raycast(Convert::ToNative(ray), maxDistance); + return getNativeCollisionShape().Raycast(Convert::ToNative(ray), maxDistance); } /*---------------------------------------------------------------------------------*/ - /* SphereColliderBound - Constructors */ + /* SphereCollider - Constructors */ /*---------------------------------------------------------------------------------*/ SphereCollider::SphereCollider(int arrayIndex, Entity attachedEntity) : CollisionShape{ arrayIndex, attachedEntity } @@ -154,7 +235,7 @@ namespace SHADE } /*---------------------------------------------------------------------------------*/ - /* Collider - ColliderBound Functions */ + /* Collider - Collider Functions */ /*---------------------------------------------------------------------------------*/ CollisionShape^ Collider::GetCollisionShape(int index) { @@ -166,7 +247,7 @@ namespace SHADE // Check if valid if (index < 0 || index >= subColliderList->Count) - throw gcnew System::ArgumentException("[Collider] Invalid index for Collider Bound retrieval."); + throw gcnew System::ArgumentException("[Collider] Invalid index for Collision Shape retrieval."); // Return the bound return subColliderList[index]; @@ -217,7 +298,7 @@ namespace SHADE { collidersList->Remove(wr); } - SAFE_NATIVE_CALL_END("Collider.OnColliderBoundChanged") + SAFE_NATIVE_CALL_END("Collider.OnCollisionShapeChanged") } void Collider::updateSubColliderList() diff --git a/SHADE_Managed/src/Components/Collider.h++ b/SHADE_Managed/src/Components/Collider.h++ index 6e165619..8ea648aa 100644 --- a/SHADE_Managed/src/Components/Collider.h++ +++ b/SHADE_Managed/src/Components/Collider.h++ @@ -19,7 +19,7 @@ of DigiPen Institute of Technology is prohibited. namespace SHADE { template - CollisionShapeType& SHADE::CollisionShape::getNativeBoundObject() + CollisionShapeType& SHADE::CollisionShape::getNativeCollisionShape() { SHColliderComponent* collider = SHComponentManager::GetComponent_s(entity); if (!collider) @@ -29,13 +29,13 @@ namespace SHADE { auto& shape = collider->GetCollisionShape(arrayIndex); if (shape.GetType() != SHCollisionShape::Type::BOX) - throw gcnew System::InvalidOperationException("Attempted to retrieve invalid ColliderBound."); + throw gcnew System::InvalidOperationException("Attempted to retrieve invalid CollisionShape."); return reinterpret_cast(shape); } catch (std::invalid_argument&) { - throw gcnew System::IndexOutOfRangeException("Attempted to retrieve out of range ColliderBound!"); + throw gcnew System::IndexOutOfRangeException("Attempted to retrieve out of range CollisionShape!"); } } } diff --git a/SHADE_Managed/src/Components/Collider.hxx b/SHADE_Managed/src/Components/Collider.hxx index dc17ae7f..a649483f 100644 --- a/SHADE_Managed/src/Components/Collider.hxx +++ b/SHADE_Managed/src/Components/Collider.hxx @@ -15,7 +15,7 @@ of DigiPen Institute of Technology is prohibited. #pragma once // External Dependencies -#include "Physics/Components/SHColliderComponent.h" +#include "Physics/Interface/SHColliderComponent.h" // Project Includes #include "Components/Component.hxx" #include "Math/Vector3.hxx" @@ -30,6 +30,61 @@ namespace SHADE public ref class CollisionShape abstract { public: + /*-----------------------------------------------------------------------------*/ + /* Properties */ + /*-----------------------------------------------------------------------------*/ + + /// + /// Whether or not this CollisionShape is a trigger. + /// + property bool IsTrigger + { + bool get(); + void set(bool value); + } + /// + /// The positional offset of this collision shape from the transform's position. + /// + property Vector3 PositionOffset + { + Vector3 get(); + void set(Vector3 value); + } + /// + /// The rotational offset of this collision shape from the transform's rotation. + /// + property Vector3 RotationOffset + { + Vector3 get(); + void set(Vector3 value); + } + + // TODO(Diren): Swap this to Physics Materials once asset implementation for that is done + /// + /// The frictional coefficient of the shape. Clamped between 0 and 1. + /// + property float Friction + { + float get(); + void set(float value); + } + /// + /// The bounciness factor of the shape. Clamped between 0 and 1. + /// + property float Bounciness + { + float get(); + void set(float value); + } + /// + /// The mass density of this shape. Cannot be negative. + /// + property float Density + { + float get(); + void set(float value); + } + /*-----------------------------------------------------------------------------*/ /* Usage Functions */ /*-----------------------------------------------------------------------------*/ @@ -56,20 +111,25 @@ namespace SHADE /*-----------------------------------------------------------------------------*/ /* Data Members */ /*-----------------------------------------------------------------------------*/ - int arrayIndex; // Index into the colliders vector on the native object - Entity entity; // Entity holding the collider component that this collider bounds is on + int arrayIndex; // Index into the colliders vector on the native object + Entity entity; // Entity holding the collider component that this collider bounds is on /*-----------------------------------------------------------------------------*/ /* Helper Functions */ /*-----------------------------------------------------------------------------*/ template - CollisionShapeType& getNativeBoundObject(); + CollisionShapeType& getNativeCollisionShape(); internal: /*-----------------------------------------------------------------------------*/ /* Setter Functions */ /*-----------------------------------------------------------------------------*/ void updateArrayIndex(int index); + + /*-----------------------------------------------------------------------------*/ + /* Helper Functions */ + /*-----------------------------------------------------------------------------*/ + SHCollisionShape& getNativeCollisionShape(); }; /// @@ -205,18 +265,18 @@ namespace SHADE /* Usage Functions */ /*-----------------------------------------------------------------------------*/ /// - /// Retrieves a ColliderBound at the specified index in the ColliderBound list. + /// Retrieves a CollisionShape at the specified index in the CollisionShapes list. /// /// Index to retrieve a ColliderBound from. /// ColliderBound for the specified index. CollisionShape^ GetCollisionShape(int index); /// - /// Retrieves a ColliderBound at the specified index in the ColliderBound list + /// Retrieves a CollisionShape at the specified index in the CollisionShapes list /// and casts it to the appropriate type. /// - /// Type of the ColliderBound to cast to. - /// Index to retrieve a ColliderBound from. - /// ColliderBound for the specified index. + /// Type of the CollisionShape to cast to. + /// Index to retrieve a CollisionShape from. + /// CollisionShape for the specified index. generic where T:CollisionShape T GetCollisionShape(int index); diff --git a/SHADE_Managed/src/Components/Component.hxx b/SHADE_Managed/src/Components/Component.hxx index e52ab3a7..a1d83eaf 100644 --- a/SHADE_Managed/src/Components/Component.hxx +++ b/SHADE_Managed/src/Components/Component.hxx @@ -110,7 +110,7 @@ namespace SHADE /// Component to check. static operator bool(BaseComponent^ c); - protected: + internal: /*-----------------------------------------------------------------------------*/ /* Constructors */ /*-----------------------------------------------------------------------------*/ @@ -193,7 +193,6 @@ namespace SHADE /// NativeComponent* GetNativeComponent(); - protected: /*-----------------------------------------------------------------------------*/ /* Constructors */ /*-----------------------------------------------------------------------------*/ diff --git a/SHADE_Managed/src/Components/Renderable.cxx b/SHADE_Managed/src/Components/Renderable.cxx index bc01bc03..819760e6 100644 --- a/SHADE_Managed/src/Components/Renderable.cxx +++ b/SHADE_Managed/src/Components/Renderable.cxx @@ -30,11 +30,11 @@ namespace SHADE /*---------------------------------------------------------------------------------*/ /* Properties */ /*---------------------------------------------------------------------------------*/ - SHADE::Mesh^ Renderable::Mesh::get() + SHADE::MeshAsset^ Renderable::Mesh::get() { - return gcnew SHADE::Mesh(GetNativeComponent()->GetMesh()); + return gcnew SHADE::MeshAsset(GetNativeComponent()->GetMesh()); } - void Renderable::Mesh::set(SHADE::Mesh^ value) + void Renderable::Mesh::set(SHADE::MeshAsset^ value) { if (value == nullptr) { @@ -42,7 +42,7 @@ namespace SHADE } else { - GetNativeComponent()->SetMesh(Handle(Convert::ToNative(value->NativeObjectHandle))); + GetNativeComponent()->SetMesh(value->NativeObject); } } SHADE::Material^ Renderable::Material::get() @@ -64,4 +64,12 @@ namespace SHADE { return GetNativeComponent()->GetLightLayer(); } + + /*---------------------------------------------------------------------------------*/ + /* Properties */ + /*---------------------------------------------------------------------------------*/ + void Renderable::SetMaterial(MaterialAsset materialAsset) + { + GetNativeComponent()->SetMaterial(materialAsset.NativeObject); + } } diff --git a/SHADE_Managed/src/Components/Renderable.hxx b/SHADE_Managed/src/Components/Renderable.hxx index e8f11ef6..d52a01e5 100644 --- a/SHADE_Managed/src/Components/Renderable.hxx +++ b/SHADE_Managed/src/Components/Renderable.hxx @@ -20,8 +20,9 @@ of DigiPen Institute of Technology is prohibited. #include "Math/Quaternion.hxx" // External Dependencies #include "Graphics/MiddleEnd/Interface/SHRenderable.h" -#include "Assets/Mesh.hxx" -#include "Assets/Material.hxx" +#include "Assets/MeshAsset.hxx" +#include "Graphics/Material.hxx" +#include "Assets/MaterialAsset.hxx" namespace SHADE { @@ -48,10 +49,10 @@ namespace SHADE /// /// Mesh used to render this Renderable. /// - property SHADE::Mesh^ Mesh + property SHADE::MeshAsset^ Mesh { - SHADE::Mesh^ get(); - void set(SHADE::Mesh^ value); + SHADE::MeshAsset^ get(); + void set(SHADE::MeshAsset^ value); } /// /// Material used to render this Renderable. @@ -68,6 +69,16 @@ namespace SHADE { System::Byte get(); } + + /*-----------------------------------------------------------------------------*/ + /* Usage functions */ + /*-----------------------------------------------------------------------------*/ + /// + /// Sets the Material used by this Renderable to be an instance of the specified + /// base MaterialAsset. + /// + /// Material to set. + void SetMaterial(MaterialAsset materialAsset); }; } diff --git a/SHADE_Managed/src/Components/RigidBody.cxx b/SHADE_Managed/src/Components/RigidBody.cxx index 12861600..a564402f 100644 --- a/SHADE_Managed/src/Components/RigidBody.cxx +++ b/SHADE_Managed/src/Components/RigidBody.cxx @@ -58,7 +58,7 @@ namespace SHADE } void RigidBody::Mass::set(float value) { - return GetNativeComponent()->SetMass(value); + /*return GetNativeComponent()->SetMass(value);*/ } float RigidBody::Drag::get() { @@ -189,7 +189,17 @@ namespace SHADE { GetNativeComponent()->AddRelativeForceAtWorldPos(Convert::ToNative(relativeForce), Convert::ToNative(worldPos)); } - + + Vector3 RigidBody::GetForce() + { + return Convert::ToCLI(GetNativeComponent()->GetForce()); + } + + void RigidBody::ClearForces() + { + GetNativeComponent()->ClearForces(); + } + /*---------------------------------------------------------------------------------*/ /* Torque Functions */ /*---------------------------------------------------------------------------------*/ @@ -202,4 +212,15 @@ namespace SHADE { GetNativeComponent()->AddRelativeTorque(Convert::ToNative(relativeTorque)); } + + Vector3 RigidBody::GetTorque() + { + return Convert::ToCLI(GetNativeComponent()->GetTorque()); + } + + void RigidBody::ClearTorque() + { + GetNativeComponent()->ClearTorque(); + } + } \ No newline at end of file diff --git a/SHADE_Managed/src/Components/RigidBody.hxx b/SHADE_Managed/src/Components/RigidBody.hxx index d3a30612..8bfe34aa 100644 --- a/SHADE_Managed/src/Components/RigidBody.hxx +++ b/SHADE_Managed/src/Components/RigidBody.hxx @@ -15,7 +15,7 @@ of DigiPen Institute of Technology is prohibited. #pragma once // External Dependencies -#include "Physics/Components/SHRigidBodyComponent.h" +#include "Physics/Interface/SHRigidBodyComponent.h" // Project Includes #include "Components/Component.hxx" @@ -145,11 +145,17 @@ namespace SHADE void AddRelativeForceAtLocalPos(Vector3 relativeForce, Vector3 localPos); void AddRelativeForceAtWorldPos(Vector3 relativeForce, Vector3 worldPos); + Vector3 GetForce(); + void ClearForces(); + /*-----------------------------------------------------------------------------*/ /* Torque Functions */ /*-----------------------------------------------------------------------------*/ void AddTorque(Vector3 force); void AddRelativeTorque(Vector3 relativeForce); + + Vector3 GetTorque(); + void ClearTorque(); }; } \ No newline at end of file diff --git a/SHADE_Managed/src/Assets/NativeAsset.h++ b/SHADE_Managed/src/Components/TextRenderable.cxx similarity index 53% rename from SHADE_Managed/src/Assets/NativeAsset.h++ rename to SHADE_Managed/src/Components/TextRenderable.cxx index a4cd94b4..88e43823 100644 --- a/SHADE_Managed/src/Assets/NativeAsset.h++ +++ b/SHADE_Managed/src/Components/TextRenderable.cxx @@ -1,49 +1,57 @@ /************************************************************************************//*! -\file NativeAsset.h++ +\file TextRenderable.cxx \author Tng Kah Wei, kahwei.tng, 390009620 \par email: kahwei.tng\@digipen.edu \date Oct 28, 2022 -\brief Contains the definition of templated functions for the managed - NativeAsset classes. - +\brief Contains the definition of the functions of the managed TextRenderable + class. + Note: This file is written in C++17/CLI. Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or disclosure of this file or its contents without the prior written consent of DigiPen Institute of Technology is prohibited. *//*************************************************************************************/ -#pragma once - -// Primary Include -#include "NativeAsset.hxx" +// Precompiled Headers +#include "SHpch.h" +// Primary Header +#include "TextRenderable.hxx" +#include "Assets/NativeAsset.hxx" +#include "Utility/Convert.hxx" namespace SHADE { - /*---------------------------------------------------------------------------------*/ - /* Properties */ - /*---------------------------------------------------------------------------------*/ - template - GenericHandle NativeAsset::NativeObjectHandle::get() - { - return nativeObjHandle; - } - template - Handle NativeAsset::NativeObject::get() - try - { - return Handle(Convert::ToNative(nativeObjHandle)); - } - catch (const BadHandleCastException&) - { - return Handle(); // Null handle - } - /*---------------------------------------------------------------------------------*/ /* Constructors */ /*---------------------------------------------------------------------------------*/ - template - NativeAsset::NativeAsset(Handle nativeObj) - : nativeObjHandle{ Convert::ToCLI(Handle(nativeObj)) } + TextRenderable::TextRenderable(Entity entity) + : Component(entity) {} -} + /*---------------------------------------------------------------------------------*/ + /* Properties */ + /*---------------------------------------------------------------------------------*/ + System::String^ TextRenderable::Text::get() + { + return Convert::ToCLI(GetNativeComponent()->GetText()); + } + void TextRenderable::Text::set(System::String^ value) + { + GetNativeComponent()->SetText(Convert::ToNative(value)); + } + SHADE::FontAsset^ TextRenderable::Font::get() + { + return gcnew SHADE::FontAsset(GetNativeComponent()->GetFont()); + } + void TextRenderable::Font::set(SHADE::FontAsset^ value) + { + if (value == nullptr) + { + GetNativeComponent()->SetFont(Handle()); + } + else + { + GetNativeComponent()->SetFont(value->NativeObject); + } + } +} diff --git a/SHADE_Managed/src/Components/TextRenderable.hxx b/SHADE_Managed/src/Components/TextRenderable.hxx new file mode 100644 index 00000000..bcd99bcf --- /dev/null +++ b/SHADE_Managed/src/Components/TextRenderable.hxx @@ -0,0 +1,65 @@ +/************************************************************************************//*! +\file TextRenderable.hxx +\author Tng Kah Wei, kahwei.tng, 390009620 +\par email: kahwei.tng\@digipen.edu +\date Nov 21, 2022 +\brief Contains the definition of the managed TextRenderable class with the + declaration of functions for working with it. + + Note: This file is written in C++17/CLI. + +Copyright (C) 2022 DigiPen Institute of Technology. +Reproduction or disclosure of this file or its contents without the prior written consent +of DigiPen Institute of Technology is prohibited. +*//*************************************************************************************/ +#pragma once + +// External Dependencies +#include "Graphics/MiddleEnd/TextRendering/SHTextRenderableComponent.h" +// Project Includes +#include "Components/Component.hxx" +#include "Math/Vector3.hxx" +#include "Math/Quaternion.hxx" +#include "Assets/FontAsset.hxx" + +namespace SHADE +{ + /// + /// CLR version of the SHADE Engine's SHTextRenderableComponent. + /// + public ref class TextRenderable : public Component + { + internal: + /*-----------------------------------------------------------------------------*/ + /* Constructors */ + /*-----------------------------------------------------------------------------*/ + /// + /// Constructs a TextRenderable Component that represents a native TextRenderable + /// component tied to the specified Entity. + /// + /// Entity that this Component will be tied to. + TextRenderable(Entity entity); + + public: + /*-----------------------------------------------------------------------------*/ + /* Properties */ + /*-----------------------------------------------------------------------------*/ + /// + /// Text to render using this TextRenderable. + /// + property System::String^ Text + { + System::String^ get(); + void set(System::String^ value); + } + /// + /// Font to use to render using this TextRenderable. + /// + property SHADE::FontAsset^ Font + { + SHADE::FontAsset^ get(); + void set(SHADE::FontAsset^ value); + } + }; +} + diff --git a/SHADE_Managed/src/Editor/Editor.cxx b/SHADE_Managed/src/Editor/Editor.cxx index 54200c1e..29e3da36 100644 --- a/SHADE_Managed/src/Editor/Editor.cxx +++ b/SHADE_Managed/src/Editor/Editor.cxx @@ -18,12 +18,9 @@ of DigiPen Institute of Technology is prohibited. #include "Editor/Editor.hxx" // STL Includes #include -// External Dependencies -#include "Editor/SHEditorUI.h" // Project Headers #include "Components/Component.hxx" #include "Scripts/ScriptStore.hxx" -#include "Utility/Convert.hxx" #include "Utility/Debug.hxx" #include "Serialisation/ReflectionUtilities.hxx" #include "Editor/IconsMaterialDesign.h" @@ -31,98 +28,14 @@ of DigiPen Institute of Technology is prohibited. #include "Editor/Command/SHCommand.hpp" #include "TooltipAttribute.hxx" #include "RangeAttribute.hxx" +#include "Math/Vector2.hxx" +#include "Math/Vector3.hxx" +#include // Using Directives using namespace System; using namespace System::Collections::Generic; -/*-------------------------------------------------------------------------------------*/ -/* Macro Functions */ -/*-------------------------------------------------------------------------------------*/ -/// -/// Macro expansion that is used in renderFieldInInspector() to check the type of a field -/// named "field" against the specified type and if it matches, retrieves the value of -/// that field from an object named "object" and pass it into the specified SHEditorUI:: -/// function named "FUNC" by casting it into the NATIVE_TYPE specified. -///
-/// This only works for primitive types that have the same types for managed and native. -///
-/// The managed type of the object to edit. -/// The native type of the object to edit. -/// The SHEditorUI:: function to use for editing. -#define RENDER_FIELD(MANAGED_TYPE, NATIVE_TYPE, FUNC) \ -(field->FieldType == MANAGED_TYPE::typeid) \ -{ \ - NATIVE_TYPE val = safe_cast(field->GetValue(object)); \ - NATIVE_TYPE oldVal = val; \ - if (SHEditorUI::FUNC(Convert::ToNative(field->Name), val, &isHovered))\ - { \ - field->SetValue(object, val); \ - registerUndoAction(object, field, val, oldVal); \ - } \ -} \ -/// -/// Alternative to RENDER_FIELD that checks for RangeAttribute and switches to a slider -/// instead. -/// -/// The managed type of the object to edit. -/// The native type of the object to edit. -/// The SHEditorUI:: function to use for editing. -#define RENDER_FIELD_RANGE(MANAGED_TYPE, NATIVE_TYPE, FUNC) \ -(field->FieldType == MANAGED_TYPE::typeid) \ -{ \ - NATIVE_TYPE val = safe_cast(field->GetValue(object)); \ - NATIVE_TYPE oldVal = val; \ - \ - RangeAttribute^ rangeAttrib = hasAttribute(field);\ - const std::string FIELD_NAME = Convert::ToNative(field->Name); \ - bool changed = false; \ - if (rangeAttrib) \ - { \ - changed = SHEditorUI::InputSlider \ - ( \ - FIELD_NAME, \ - static_cast(rangeAttrib->Min), \ - static_cast(rangeAttrib->Max), \ - val, &isHovered \ - ); \ - } \ - else \ - { \ - changed = SHEditorUI::FUNC(FIELD_NAME, val, &isHovered); \ - } \ - \ - if (changed) \ - { \ - field->SetValue(object, val); \ - registerUndoAction(object, field, val, oldVal); \ - } \ -} \ -/// -/// Macro expansion that is used in renderFieldInInspector() to check the type of a field -/// named "field" against the specified type and if it matches, retrieves the value of -/// that field from an object named "object" and pass it into the specified SHEditorUI:: -/// function named "FUNC" by casting it into the NATIVE_TYPE specified. -///
-/// This only works for types that have an implementation of Convert::ToNative and -/// Convert::ToCLI. -///
-/// The managed type of the object to edit. -/// The native type of the object to edit. -/// The SHEditorUI:: function to use for editing. -#define RENDER_FIELD_CASTED(MANAGED_TYPE, NATIVE_TYPE, FUNC) \ -(field->FieldType == MANAGED_TYPE::typeid) \ -{ \ - NATIVE_TYPE val = Convert::ToNative(safe_cast(field->GetValue(object))); \ - NATIVE_TYPE oldVal = val; \ - \ - if (SHEditorUI::FUNC(Convert::ToNative(field->Name), val, &isHovered)) \ - { \ - field->SetValue(object, Convert::ToCLI(val)); \ - registerUndoAction(object, field, Convert::ToCLI(val), Convert::ToCLI(oldVal)); \ - } \ -} \ - /*-------------------------------------------------------------------------------------*/ /* Function Definitions */ /*-------------------------------------------------------------------------------------*/ @@ -166,7 +79,10 @@ namespace SHADE if (SHEditorUI::Selectable(Convert::ToNative(type->Name))) { // Add the script - ScriptStore::AddScriptViaName(entity, type->Name); + Script^ script; + ScriptStore::AddScriptViaNameWithRef(entity, type->Name, script); + registerUndoScriptAddAction(entity, script); + break; } } @@ -201,13 +117,19 @@ namespace SHADE // Header SHEditorUI::PushID(index); + bool enabled = script->Enabled; + if (SHEditorUI::InputCheckbox("", enabled)) + { + script->Enabled = enabled; + } + SHEditorUI::SameLine(); if (SHEditorUI::CollapsingHeader(LABEL)) { SHEditorUI::PushID(LABEL); SHEditorUI::Indent(); { // Right Click Menu - renderScriptContextMenu(entity, script); + renderScriptContextMenu(entity, script, index); // Go through all fields and output them auto fields = ReflectionUtilities::GetInstanceFields(script); @@ -230,146 +152,144 @@ namespace SHADE } else { - renderScriptContextMenu(entity, script); + renderScriptContextMenu(entity, script, index); } SHEditorUI::PopID(); } - void Editor::renderFieldInInspector(Reflection::FieldInfo^ field, Object^ object) + + void Editor::renderFieldInInspector(Reflection::FieldInfo^ field, System::Object^ object) { bool isHovered = false; - if RENDER_FIELD_RANGE (Int16, int, InputInt) - else if RENDER_FIELD_RANGE (Int32, int, InputInt) - else if RENDER_FIELD_RANGE (Int64, int, InputInt) - else if RENDER_FIELD_RANGE (UInt16, unsigned int, InputUnsignedInt) - else if RENDER_FIELD_RANGE (UInt32, unsigned int, InputUnsignedInt) - else if RENDER_FIELD_RANGE (UInt64, unsigned int, InputUnsignedInt) - else if RENDER_FIELD_RANGE (Byte, int, InputInt) - else if RENDER_FIELD (bool, bool, InputCheckbox) - else if RENDER_FIELD_RANGE (float, float, InputFloat) - else if RENDER_FIELD_RANGE (double, double, InputDouble) - else if (field->FieldType->IsSubclassOf(Enum::typeid)) - { - // Get all the names of the enums - const array^ ENUM_NAMES = field->FieldType->GetEnumNames(); - std::vector nativeEnumNames; - for each (String^ str in ENUM_NAMES) - { - nativeEnumNames.emplace_back(Convert::ToNative(str)); - } + const bool MODIFIED_PRIMITIVE = + renderSpecificField(field, object, SHEditorUI::InputInt , &isHovered) || + renderSpecificField(field, object, SHEditorUI::InputInt , &isHovered) || + renderSpecificField(field, object, SHEditorUI::InputInt , &isHovered) || + renderSpecificField(field, object, SHEditorUI::InputInt , &isHovered) || + renderSpecificField(field, object, SHEditorUI::InputInt , &isHovered) || + renderSpecificField(field, object, SHEditorUI::InputInt , &isHovered) || + renderSpecificField(field, object, SHEditorUI::InputInt , &isHovered) || + renderSpecificField(field, object, SHEditorUI::InputCheckbox, &isHovered) || + renderSpecificField(field, object, SHEditorUI::InputFloat , &isHovered) || + renderSpecificField(field, object, SHEditorUI::InputDouble , &isHovered) || + renderSpecificField(field, object, SHEditorUI::InputVec2 , &isHovered) || + renderSpecificField(field, object, SHEditorUI::InputVec3 , &isHovered) || + renderSpecificField(field, object, nullptr , &isHovered) || + renderSpecificField(field, object, nullptr , &isHovered) || + renderSpecificField(field, object, nullptr , &isHovered) || + renderSpecificField(field, object, nullptr , &isHovered) || + renderSpecificField(field, object, nullptr , &isHovered) || + renderSpecificField(field, object, nullptr , &isHovered); - int val = safe_cast(field->GetValue(object)); - int oldVal = val; - if (SHEditorUI::InputEnumCombo(Convert::ToNative(field->Name), val, nativeEnumNames, &isHovered)) - { - field->SetValue(object, val); - registerUndoAction(object, field, val, oldVal); - } - } - else if RENDER_FIELD_CASTED(Vector2, SHVec2, InputVec2) - else if RENDER_FIELD_CASTED(Vector3, SHVec3, InputVec3) - else if (field->FieldType == String::typeid) + if (!MODIFIED_PRIMITIVE) { - // Prevent issues where String^ is null due to being empty - String^ stringVal = safe_cast(field->GetValue(object)); - if (stringVal == nullptr) + // Any List + if (ReflectionUtilities::FieldIsList(field)) { - stringVal = ""; - } + System::Type^ listType = field->FieldType->GenericTypeArguments[0]; + RangeAttribute^ rangeAttrib = hasAttribute(field); + System::Collections::IList^ iList = safe_cast(field->GetValue(object)); - // Actual Field - std::string val = Convert::ToNative(stringVal); - std::string oldVal = val; - if (SHEditorUI::InputTextField(Convert::ToNative(field->Name), val, &isHovered)) - { - field->SetValue(object, Convert::ToCLI(val)); - registerUndoAction(object, field, Convert::ToCLI(val), Convert::ToCLI(oldVal)); - } - } - else if (field->FieldType == GameObject::typeid) - { - GameObject gameObj = safe_cast(field->GetValue(object)); - uint32_t entityId = gameObj.GetEntity(); - if (SHEditorUI::InputGameObjectField(Convert::ToNative(field->Name), entityId, &isHovered, !gameObj)) - { - GameObject newVal = GameObject(entityId); - if (entityId != MAX_EID) + if (SHEditorUI::CollapsingHeader(Convert::ToNative(field->Name), &isHovered)) { - // Null GameObject set - newVal = GameObject(entityId); - } - field->SetValue(object, newVal); - registerUndoAction(object, field, newVal, gameObj); - } - } - else - { - array^ interfaces = field->FieldType->GetInterfaces(); - if (interfaces->Length > 0 && interfaces[0] == ICallbackEvent::typeid) - { - array^ typeArgs = field->FieldType->GenericTypeArguments; - System::String^ title = field->Name + " : CallbackEvent<"; - for (int i = 0; i < typeArgs->Length; ++i) - { - title += typeArgs[i]->Name; - if (i < typeArgs->Length - 1) - title += ", "; - } - title += ">"; - if (SHEditorUI::CollapsingHeader(Convert::ToNative(title))) - { - // Constants - const std::string LABEL = Convert::ToNative(field->Name); - SHEditorUI::PushID(LABEL); - - ICallbackEvent^ callbackEvent = safe_cast(field->GetValue(object)); - if (callbackEvent == nullptr) + if (SHEditorUI::Button("Add Item")) { - // Construct one since it was not constructed before - callbackEvent = safe_cast(System::Activator::CreateInstance(field->FieldType)); + System::Object^ obj = System::Activator::CreateInstance(listType); + iList->Add(obj); + registerUndoListAddAction(listType, iList, iList->Count - 1, obj); } - for each (ICallbackAction ^ action in callbackEvent->Actions) + for (int i = 0; i < iList->Count; ++i) { - if (action->IsRuntimeAction) - continue; - - // Attempt to get the object if any - int entityId = static_cast(-1); - if (action->TargetObject) + SHEditorUI::PushID(i); + System::Object^ obj = iList[i]; + System::Object^ oldObj = iList[i]; + if (renderFieldEditor(std::to_string(i), obj, rangeAttrib)) { - Script^ script = safe_cast(action->TargetObject); - if (script) - { - entityId = static_cast(script->Owner.GetEntity()); - } + iList[i] = obj; + registerUndoListChangeAction(listType, iList, i, obj, oldObj); } - SHEditorUI::InputInt("", entityId); - SHEditorUI::SameLine(); - System::String^ methodName = ""; - if (action->TargetMethodName != nullptr) - { - methodName = action->TargetMethodName; - } - std::string methodNameNative = Convert::ToNative(methodName); - SHEditorUI::InputTextField("", methodNameNative); SHEditorUI::SameLine(); if (SHEditorUI::Button("-")) { - callbackEvent->DeregisterAction(action); + System::Object^ obj = iList[i]; + iList->RemoveAt(i); + registerUndoListRemoveAction(listType, iList, i, obj); + SHEditorUI::PopID(); break; } + SHEditorUI::PopID(); } - if (SHEditorUI::Button("Add Action")) - { - callbackEvent->RegisterAction(); - } - - SHEditorUI::PopID(); } } else { - return; + array^ interfaces = field->FieldType->GetInterfaces(); + if (interfaces->Length > 0 && interfaces[0] == ICallbackEvent::typeid) + { + array^ typeArgs = field->FieldType->GenericTypeArguments; + System::String^ title = field->Name + " : CallbackEvent<"; + for (int i = 0; i < typeArgs->Length; ++i) + { + title += typeArgs[i]->Name; + if (i < typeArgs->Length - 1) + title += ", "; + } + title += ">"; + if (SHEditorUI::CollapsingHeader(Convert::ToNative(title))) + { + // Constants + const std::string LABEL = Convert::ToNative(field->Name); + SHEditorUI::PushID(LABEL); + + ICallbackEvent^ callbackEvent = safe_cast(field->GetValue(object)); + if (callbackEvent == nullptr) + { + // Construct one since it was not constructed before + callbackEvent = safe_cast(System::Activator::CreateInstance(field->FieldType)); + } + for each (ICallbackAction ^ action in callbackEvent->Actions) + { + if (action->IsRuntimeAction) + continue; + + // Attempt to get the object if any + int entityId = static_cast(-1); + if (action->TargetObject) + { + Script^ script = safe_cast(action->TargetObject); + if (script) + { + entityId = static_cast(script->Owner.GetEntity()); + } + } + SHEditorUI::InputInt("", entityId); + SHEditorUI::SameLine(); + System::String^ methodName = ""; + if (action->TargetMethodName != nullptr) + { + methodName = action->TargetMethodName; + } + std::string methodNameNative = Convert::ToNative(methodName); + SHEditorUI::InputTextField("", methodNameNative); + SHEditorUI::SameLine(); + if (SHEditorUI::Button("-")) + { + callbackEvent->DeregisterAction(action); + break; + } + } + if (SHEditorUI::Button("Add Action")) + { + callbackEvent->RegisterAction(); + } + + SHEditorUI::PopID(); + } + } + else + { + return; + } } } @@ -383,7 +303,55 @@ namespace SHADE } } - void Editor::renderScriptContextMenu(Entity entity, Script^ script) + bool Editor::renderFieldEditor(const std::string& fieldName, System::Object^% object, RangeAttribute^ rangeAttrib) + { + bool modified; + + const bool RENDERED = + renderFieldEditor(fieldName, object, SHEditorUI::InputInt , nullptr, rangeAttrib, modified) || + renderFieldEditor(fieldName, object, SHEditorUI::InputInt , nullptr, rangeAttrib, modified) || + renderFieldEditor(fieldName, object, SHEditorUI::InputInt , nullptr, rangeAttrib, modified) || + renderFieldEditor(fieldName, object, SHEditorUI::InputInt , nullptr, rangeAttrib, modified) || + renderFieldEditor(fieldName, object, SHEditorUI::InputInt , nullptr, rangeAttrib, modified) || + renderFieldEditor(fieldName, object, SHEditorUI::InputInt , nullptr, rangeAttrib, modified) || + renderFieldEditor(fieldName, object, SHEditorUI::InputInt , nullptr, rangeAttrib, modified) || + renderFieldEditor(fieldName, object, SHEditorUI::InputCheckbox, nullptr, rangeAttrib, modified) || + renderFieldEditor(fieldName, object, SHEditorUI::InputFloat , nullptr, rangeAttrib, modified) || + renderFieldEditor(fieldName, object, SHEditorUI::InputDouble , nullptr, rangeAttrib, modified) || + renderFieldEditor(fieldName, object, SHEditorUI::InputVec2 , nullptr, rangeAttrib, modified) || + renderFieldEditor(fieldName, object, SHEditorUI::InputVec3 , nullptr, rangeAttrib, modified) || + renderFieldEditor(fieldName, object, nullptr , nullptr, rangeAttrib, modified) || + renderFieldEditor(fieldName, object, nullptr , nullptr, rangeAttrib, modified) || + renderFieldEditor(fieldName, object, nullptr , nullptr, rangeAttrib, modified) || + renderFieldEditor(fieldName, object, nullptr , nullptr, rangeAttrib, modified) || + renderFieldEditor(fieldName, object, nullptr , nullptr, rangeAttrib, modified) || + renderFieldEditor(fieldName, object, nullptr , nullptr, rangeAttrib, modified); + + return modified; + } + + bool Editor::renderEnumEditor(const std::string& fieldName, System::Object^% object, bool* isHovered) + { + // Get all the names of the enums + const array^ ENUM_NAMES = object->GetType()->GetEnumNames(); + std::vector nativeEnumNames; + for each (String ^ str in ENUM_NAMES) + { + nativeEnumNames.emplace_back(Convert::ToNative(str)); + } + + int val = safe_cast(object); + int oldVal = val; + if (SHEditorUI::InputEnumCombo(fieldName, val, nativeEnumNames, isHovered)) + { + object = val; + return true; + } + + return false; + } + + void Editor::renderScriptContextMenu(Entity entity, Script^ script, int scriptIndex) { // Right Click Menu if (SHEditorUI::BeginPopupContextItem("scriptContextMenu")) @@ -392,6 +360,7 @@ namespace SHADE { // Mark script for removal ScriptStore::RemoveScript(entity, script); + registerUndoScriptRemoveAction(entity, script, scriptIndex); } SHEditorUI::EndPopup(); } @@ -400,12 +369,62 @@ namespace SHADE void Editor::registerUndoAction(System::Object^ object, System::Reflection::FieldInfo^ field, System::Object^ newData, System::Object^ oldData) { // Create command and add it into the undo stack - UndoRedoStack::Command cmd; - cmd.Field = field; - cmd.Object = object; - cmd.NewData = newData; - cmd.OldData = oldData; - actionStack.Add(cmd); + actionStack.Add(gcnew FieldChangeCommand(object, field, newData, oldData)); + + // Inform the C++ Undo-Redo stack + SHCommandManager::RegisterCommand(std::reinterpret_pointer_cast(std::make_shared())); + } + + void Editor::registerUndoListChangeAction(System::Type^ type, System::Collections::IList^ list, int index, System::Object^ newData, System::Object^ oldData) + { + if (list == nullptr) + return; + + actionStack.Add(gcnew ListElementChangeCommand(list, index, newData, oldData)); + + // Inform the C++ Undo-Redo stack + SHCommandManager::RegisterCommand(std::reinterpret_pointer_cast(std::make_shared())); + } + + void Editor::registerUndoListAddAction(System::Type^ type, System::Collections::IList^ list, int index, System::Object^ data) + { + if (list == nullptr) + return; + + actionStack.Add(gcnew ListElementAddCommand(list, index, data)); + + // Inform the C++ Undo-Redo stack + SHCommandManager::RegisterCommand(std::reinterpret_pointer_cast(std::make_shared())); + } + + void Editor::registerUndoListRemoveAction(System::Type^ type, System::Collections::IList^ list, int index, System::Object^ data) + { + if (list == nullptr) + return; + + actionStack.Add(gcnew ListElementRemoveCommand(list, index, data)); + + // Inform the C++ Undo-Redo stack + SHCommandManager::RegisterCommand(std::reinterpret_pointer_cast(std::make_shared())); + } + + void Editor::registerUndoScriptAddAction(EntityID id, Script^ script) + { + if (script == nullptr) + return; + + actionStack.Add(gcnew ScriptAddCommand(id, script)); + + // Inform the C++ Undo-Redo stack + SHCommandManager::RegisterCommand(std::reinterpret_pointer_cast(std::make_shared())); + } + + void Editor::registerUndoScriptRemoveAction(EntityID id, Script^ script, int originalIndex) + { + if (script == nullptr) + return; + + actionStack.Add(gcnew ScriptRemoveCommand(id, script, originalIndex)); // Inform the C++ Undo-Redo stack SHCommandManager::RegisterCommand(std::reinterpret_pointer_cast(std::make_shared())); diff --git a/SHADE_Managed/src/Editor/Editor.h++ b/SHADE_Managed/src/Editor/Editor.h++ new file mode 100644 index 00000000..37d5c27d --- /dev/null +++ b/SHADE_Managed/src/Editor/Editor.h++ @@ -0,0 +1,242 @@ +/************************************************************************************//*! +\file Editor.h++ +\author Tng Kah Wei, kahwei.tng, 390009620 +\par email: kahwei.tng\@digipen.edu +\date Nov 10, 2022 +\brief Contains the definition of templated functions for the managed Editor + static class. + + Note: This file is written in C++17/CLI. + +Copyright (C) 2022 DigiPen Institute of Technology. +Reproduction or disclosure of this file or its contents without the prior written consent +of DigiPen Institute of Technology is prohibited. +*//*************************************************************************************/ +#pragma once + +// Primary Include +#include "Editor.hxx" +// External Dependencies +#include "Editor/SHEditorUI.h" +// Project Includes +#include "Utility/Convert.hxx" +#include "Assets/FontAsset.hxx" +#include "Assets/MeshAsset.hxx" +#include "Assets/MaterialAsset.hxx" + +namespace SHADE +{ + template + bool Editor::renderSpecificField(System::Reflection::FieldInfo^ fieldInfo, System::Object^ object, EditorFieldFunc fieldEditor, bool* isHovered) + { + if constexpr (std::is_same_v) + { + if (fieldInfo->FieldType->IsSubclassOf(Enum::typeid)) + { + System::Object^ enumObj = fieldInfo->GetValue(object); + int oldVal = safe_cast(enumObj); + int val = oldVal; + if (renderEnumEditor + ( + Convert::ToNative(fieldInfo->Name), + enumObj, + isHovered + )) + { + fieldInfo->SetValue(object, safe_cast(enumObj)); + registerUndoAction(object, fieldInfo, fieldInfo->GetValue(object), oldVal); + } + + return true; + } + } + else + { + if (fieldInfo->FieldType == ManagedType::typeid) + { + RangeAttribute^ rangeAttrib; + if constexpr (std::is_arithmetic_v && !std::is_same_v) + { + rangeAttrib = hasAttribute(fieldInfo); + } + + ManagedType oldVal = safe_cast(fieldInfo->GetValue(object)); + ManagedType val = oldVal; + if (renderFieldEditorInternal + ( + Convert::ToNative(fieldInfo->Name), + &val, + fieldEditor, + isHovered, + rangeAttrib + )) + { + fieldInfo->SetValue(object, val); + registerUndoAction(object, fieldInfo, fieldInfo->GetValue(object), oldVal); + } + + return true; + } + } + + return false; + } + + template + bool Editor::renderFieldEditor(const std::string& fieldName, System::Object^% object, EditorFieldFunc fieldEditor, bool* isHovered, RangeAttribute^ rangeAttrib, bool& modified) + { + modified = false; + + if constexpr (std::is_same_v) + { + if (object->GetType()->IsSubclassOf(Enum::typeid)) + { + modified = renderEnumEditor(fieldName, object, isHovered); + return true; + } + } + else + { + if (object->GetType() == ManagedType::typeid) + { + ManagedType managedVal = safe_cast(object); + cli::interior_ptr managedValPtr = &managedVal; + if (renderFieldEditorInternal(fieldName, managedValPtr, fieldEditor, isHovered, rangeAttrib)) + { + object = managedVal; + modified = true; + return true; + } + return false; + } + } + + return false; + } + + + template + bool Editor::renderFieldEditorInternal(const std::string& fieldName, interior_ptr managedValPtr, EditorFieldFunc fieldEditor, bool* isHovered, RangeAttribute^ rangeAttrib) + { + // Retrieve the native version of the object + NativeType val; + if constexpr (IsPrimitiveTypeMatches_V) + { + val = safe_cast(*managedValPtr); + } + else + { + val = Convert::ToNative(*managedValPtr); + } + + // Throw into the SHEditorUI function + NativeType oldVal = val; + bool changed = false; + if (rangeAttrib) + { + // Do not allow bools for Sliders just in case + if constexpr (std::is_arithmetic_v && !std::is_same_v) + { + changed = SHEditorUI::InputSlider + ( + fieldName, + static_cast(rangeAttrib->Min), + static_cast(rangeAttrib->Max), + val, isHovered + ); + } + } + else + { + changed = fieldEditor(fieldName, val, isHovered); + } + + if (changed) + { + if constexpr (IsPrimitiveTypeMatches_V) + { + *managedValPtr = val; + } + else + { + + *managedValPtr = Convert::ToCLI(val); + } + + return true; + } + + return false; + } + template<> + bool Editor::renderFieldEditorInternal(const std::string& fieldName, interior_ptr managedValPtr, EditorFieldFunc, bool* isHovered, RangeAttribute^) + { + // Prevent issues where String^ is null due to being empty + if (*managedValPtr == nullptr) + *managedValPtr = ""; + + // Actual Field + std::string val = Convert::ToNative(*managedValPtr); + if (SHEditorUI::InputTextField(fieldName, val, isHovered)) + { + *managedValPtr = Convert::ToCLI(val); + return true; + } + + return false; + } + template<> + bool Editor::renderFieldEditorInternal(const std::string& fieldName, interior_ptr managedValPtr, EditorFieldFunc, bool* isHovered, RangeAttribute^) + { + uint32_t entityId = managedValPtr->GetEntity(); + if (SHEditorUI::InputGameObjectField(fieldName, entityId, isHovered, !(*managedValPtr))) + { + GameObject newVal = GameObject(entityId); + if (entityId != MAX_EID) + { + // Null GameObject set + newVal = GameObject(entityId); + } + *managedValPtr = newVal; + return true; + } + + return false; + } + template<> + bool Editor::renderFieldEditorInternal(const std::string& fieldName, interior_ptr managedValPtr, EditorFieldFunc, bool* isHovered, RangeAttribute^) + { + uint32_t assetId = managedValPtr->NativeAssetID; + if (SHEditorUI::InputAssetField(fieldName, assetId, AssetType::FONT, isHovered)) + { + *managedValPtr = FontAsset(assetId); + return true; + } + + return false; + } + template<> + bool Editor::renderFieldEditorInternal(const std::string& fieldName, interior_ptr managedValPtr, EditorFieldFunc, bool* isHovered, RangeAttribute^) + { + uint32_t assetId = managedValPtr->NativeAssetID; + if (SHEditorUI::InputAssetField(fieldName, assetId, AssetType::MESH, isHovered)) + { + *managedValPtr = MeshAsset(assetId); + return true; + } + + return false; + } + template<> + bool Editor::renderFieldEditorInternal(const std::string& fieldName, interior_ptr managedValPtr, EditorFieldFunc, bool* isHovered, RangeAttribute^) + { + uint32_t assetId = managedValPtr->NativeAssetID; + if (SHEditorUI::InputAssetField(fieldName, assetId, AssetType::MATERIAL, isHovered)) + { + *managedValPtr = MaterialAsset(assetId); + return true; + } + + return false; + } +} diff --git a/SHADE_Managed/src/Editor/Editor.hxx b/SHADE_Managed/src/Editor/Editor.hxx index 109842b5..79625274 100644 --- a/SHADE_Managed/src/Editor/Editor.hxx +++ b/SHADE_Managed/src/Editor/Editor.hxx @@ -17,9 +17,14 @@ of DigiPen Institute of Technology is prohibited. #include "Engine/Entity.hxx" #include "Scripts/Script.hxx" #include "UndoRedoStack.hxx" +#include "RangeAttribute.hxx" namespace SHADE { + + template + using EditorFieldFunc = bool(*)(const std::string& label, NativeType& val, bool* isHovered); + /// /// Static class for Editor-related functions /// @@ -64,7 +69,7 @@ namespace SHADE static UndoRedoStack actionStack; /*-----------------------------------------------------------------------------*/ - /* Helper Functions */ + /* Helper Functions - Inspector Rendering */ /*-----------------------------------------------------------------------------*/ /// /// Renders a single specified Script's inspector. @@ -84,15 +89,114 @@ namespace SHADE /// /// The object that contains the data of the field to render. /// - static void renderFieldInInspector(System::Reflection::FieldInfo^ field, Object^ object); + static void renderFieldInInspector(System::Reflection::FieldInfo^ field, System::Object^ object); + /// + /// Renders a raw editor for a single value. + /// + /// The name of the field to render. + /// Tracking reference to the object to modify. + /// + /// If specified, will be used to constrain values. + /// + /// True if the value was modified. + static bool renderFieldEditor(const std::string& fieldName, System::Object^% object, RangeAttribute^ rangeAttrib); + /// + /// Renders a ImGui field editor based on the type of parameters specified if the + /// type matches. + /// + /// Native type of the field. + /// Managed type of the field. + /// Label to use for the field editor. + /// + /// Tracking reference for the managed variable to modify. + /// + /// ImGui field editor function to use. + /// + /// Pointer to a bool that stores if the field editor was hovered over. + /// + /// + /// If provided and the type supports it, the field will be rendered with a + /// slider instead. + /// + /// + /// True if the field was rendered.. + template + static bool renderFieldEditor(const std::string& fieldName, System::Object^% object, EditorFieldFunc fieldEditor, bool* isHovered, RangeAttribute^ rangeAttrib, bool& modified); + /// + /// Renders a raw editor for a single enum value. + /// + /// The name of the field to render. + /// + /// Tracking reference to the object to modify. Must be an enum. + /// + /// + /// Pointer to a bool that stores if the field editor was hovered over. + /// + /// True if the value was modified. + static bool renderEnumEditor(const std::string& fieldName, System::Object^% object, bool* isHovered); + /// + /// Checks if the specified field is of the specified native and managed type + /// equivalent and renders a ImGui field editor based on the specified field + /// editor function. Also handles fields that contain a RangeAttribute. + /// + /// Native type of the field. + /// Managed type of the field. + /// Describes the field to modify. + /// Object to modify that has the specified field. + /// ImGui field editor function to use. + /// + /// Pointer to a bool that stores if the field editor was hovered over. + /// + /// True if the field is modified. + template + static bool renderSpecificField(System::Reflection::FieldInfo^ fieldInfo, System::Object^ object, EditorFieldFunc fieldEditor, bool* isHovered); + /// + /// Renders a ImGui field editor based on the type of parameters specified. + /// + /// Native type of the field. + /// Managed type of the field. + /// Label to use for the field editor. + /// + /// Tracking reference for the managed variable to modify. + /// + /// ImGui field editor function to use. + /// + /// Pointer to a bool that stores if the field editor was hovered over. + /// + /// + /// If provided and the type supports it, the field will be rendered with a + /// slider instead. + /// + /// True if the field is modified. + template + static bool renderFieldEditorInternal(const std::string& fieldName, interior_ptr managedValPtr, EditorFieldFunc fieldEditor, bool* isHovered, RangeAttribute^ rangeAttrib); /// /// Renders a context menu when right clicked for the scripts /// /// The Entity to render the Scripts of. /// The Script to render the inspector for. - static void renderScriptContextMenu(Entity entity, Script^ script); + /// Index at which the Script is stored. + static void renderScriptContextMenu(Entity entity, Script^ script, int scriptIndex); + /*-----------------------------------------------------------------------------*/ + /* Helper Functions - Undo */ + /*-----------------------------------------------------------------------------*/ static void registerUndoAction(System::Object^ object, System::Reflection::FieldInfo^ field, System::Object^ newData, System::Object^ oldData); + static void registerUndoListChangeAction(System::Type^ type, System::Collections::IList^ list, int index, System::Object^ newData, System::Object^ oldData); + static void registerUndoListAddAction(System::Type^ type, System::Collections::IList^ list, int index, System::Object^ data); + static void registerUndoListRemoveAction(System::Type^ type, System::Collections::IList^ list, int index, System::Object^ data); + static void registerUndoScriptAddAction(EntityID id, Script^ script); + static void registerUndoScriptRemoveAction(EntityID id, Script^ script, int originalIndex); + /*-----------------------------------------------------------------------------*/ + /* Helper Functions - Others */ + /*-----------------------------------------------------------------------------*/ + /// + /// Checks if a specific field has the specified attribute + /// + /// Type of Attribute to check for. + /// The field to check. + /// The attribute to check for if it exists. Null otherwise. generic where Attribute : System::Attribute static Attribute hasAttribute(System::Reflection::FieldInfo^ field); }; } +#include "Editor.h++" diff --git a/SHADE_Managed/src/Editor/UndoRedoStack.cxx b/SHADE_Managed/src/Editor/UndoRedoStack.cxx index 08e289cc..3d1f04e9 100644 --- a/SHADE_Managed/src/Editor/UndoRedoStack.cxx +++ b/SHADE_Managed/src/Editor/UndoRedoStack.cxx @@ -19,9 +19,15 @@ of DigiPen Institute of Technology is prohibited. // External Dependencies #include "Editor/SHEditorUI.h" // Project Headers +#include "Utility/Debug.hxx" +#include "Utility/Convert.hxx" +#include "Scripts/ScriptStore.hxx" namespace SHADE { + /*---------------------------------------------------------------------------------*/ + /* UndoRedoStack - Properties */ + /*---------------------------------------------------------------------------------*/ bool UndoRedoStack::UndoActionPresent::get() { return commandStack->Count > 0 && latestActionIndex >= 0; @@ -29,10 +35,14 @@ namespace SHADE bool UndoRedoStack::RedoActionPresent::get() { - return latestActionIndex >= 0 && latestActionIndex < commandStack->Count - 1; + const int REDO_ACTION_INDEX = latestActionIndex + 1; + return REDO_ACTION_INDEX >= 0 && REDO_ACTION_INDEX < commandStack->Count; } - - void UndoRedoStack::Add(Command command) + + /*---------------------------------------------------------------------------------*/ + /* UndoRedoStack - Usage Functions */ + /*---------------------------------------------------------------------------------*/ + void UndoRedoStack::Add(ICommand^ command) { // Erase any other actions ahead of the current action if (latestActionIndex >= 0 && latestActionIndex < commandStack->Count - 1) @@ -52,8 +62,8 @@ namespace SHADE if (!UndoActionPresent) return; - Command cmd = commandStack[latestActionIndex]; - cmd.Field->SetValue(cmd.Object, cmd.OldData); + ICommand^ cmd = commandStack[latestActionIndex]; + cmd->Unexceute(); --latestActionIndex; } @@ -61,9 +71,249 @@ namespace SHADE { if (!RedoActionPresent) return; - - Command cmd = commandStack[latestActionIndex]; - cmd.Field->SetValue(cmd.Object, cmd.NewData); + + const int REDO_ACTION_INDEX = latestActionIndex + 1; + ICommand^ cmd = commandStack[REDO_ACTION_INDEX]; + cmd->Execute(); ++latestActionIndex; } + + /*---------------------------------------------------------------------------------*/ + /* FieldChangeCommand - Constructor */ + /*---------------------------------------------------------------------------------*/ + FieldChangeCommand::FieldChangeCommand(System::Object^ obj, System::Reflection::FieldInfo^ field, System::Object^ newData, System::Object^ oldData) + : objectToChange { obj } + , field { field } + , newData { newData } + , oldData { oldData } + {} + + /*---------------------------------------------------------------------------------*/ + /* FieldChangeCommand - ICommand Functions */ + /*---------------------------------------------------------------------------------*/ + bool FieldChangeCommand::Execute() + { + if (field && objectToChange) + { + field->SetValue(objectToChange, newData); + return true; + } + + return false; + } + + bool FieldChangeCommand::Unexceute() + { + if (field && objectToChange) + { + field->SetValue(objectToChange, oldData); + return true; + } + + return false; + } + + bool FieldChangeCommand::Merge(ICommand^ command) + { + FieldChangeCommand^ otherCommand = safe_cast(command); + if (otherCommand == nullptr) + { + Debug::LogWarning("[Field Change Command] Attempted to merge two incompatible commands!"); + return false; + } + + // Only merge if they are workng on the same object and field + if (field == otherCommand->field && objectToChange == otherCommand->objectToChange) + { + newData = otherCommand->newData; + return true; + } + + return false; + } + + /*---------------------------------------------------------------------------------*/ + /* ListElementChangeCommand - Constructor */ + /*---------------------------------------------------------------------------------*/ + ListElementChangeCommand::ListElementChangeCommand(System::Collections::IList^ list, int index, System::Object^ newData, System::Object^ oldData) + : list { list } + , index { index } + , newData { newData } + , oldData { oldData } + {} + + /*---------------------------------------------------------------------------------*/ + /* ListElementChangeCommand - ICommand Functions */ + /*---------------------------------------------------------------------------------*/ + bool ListElementChangeCommand::Execute() + { + if (list && index < list->Count) + { + list[index] = newData; + return true; + } + + return false; + } + + bool ListElementChangeCommand::Unexceute() + { + if (list && index < list->Count) + { + list[index] = oldData; + return true; + } + + return false; + } + bool ListElementChangeCommand::Merge(ICommand^ command) + { + ListElementChangeCommand^ otherCommand = safe_cast(command); + if (otherCommand == nullptr) + { + Debug::LogWarning("[Field Change Command] Attempted to merge two incompatible commands!"); + return false; + } + + if (command && list == otherCommand->list && index == otherCommand->index) + { + newData = otherCommand->newData; + return true; + } + } + + /*---------------------------------------------------------------------------------*/ + /* ListElementAddCommand - Constructor */ + /*---------------------------------------------------------------------------------*/ + ListElementAddCommand::ListElementAddCommand(System::Collections::IList^ list, int addIndex, System::Object^ data) + : list { list } + , addIndex { addIndex } + , data { data } + {} + + /*---------------------------------------------------------------------------------*/ + /* ListElementAddCommand - ICommand Functions */ + /*---------------------------------------------------------------------------------*/ + bool ListElementAddCommand::Execute() + { + if (list) + { + list->Insert(addIndex, data); + return true; + } + + return false; + } + + bool ListElementAddCommand::Unexceute() + { + if (list && addIndex < list->Count) + { + list->RemoveAt(addIndex); + return true; + } + + return false; + } + + bool ListElementAddCommand::Merge(ICommand^) + { + // Not allowed + return false; + } + + /*---------------------------------------------------------------------------------*/ + /* ListElementRemoveCommand - Constructor */ + /*---------------------------------------------------------------------------------*/ + ListElementRemoveCommand::ListElementRemoveCommand(System::Collections::IList^ list, int removeIndex, System::Object^ data) + : list { list } + , removeIndex { removeIndex } + , data { data } + {} + + /*---------------------------------------------------------------------------------*/ + /* ListElementRemoveCommand - ICommand Functions */ + /*---------------------------------------------------------------------------------*/ + bool ListElementRemoveCommand::Execute() + { + if (list && removeIndex < list->Count) + { + list->RemoveAt(removeIndex); + return true; + } + + return false; + } + + bool ListElementRemoveCommand::Unexceute() + { + if (list) + { + list->Insert(removeIndex, data); + return true; + } + + return false; + } + + bool ListElementRemoveCommand::Merge(ICommand^) + { + // Not allowed + return false; + } + + /*---------------------------------------------------------------------------------*/ + /* ScriptAddCommand - Constructor */ + /*---------------------------------------------------------------------------------*/ + ScriptAddCommand::ScriptAddCommand(EntityID id, Script^ script) + : entity { id } + , addedScript { script } + {} + + /*---------------------------------------------------------------------------------*/ + /* ScriptAddCommand - ICommand Functions */ + /*---------------------------------------------------------------------------------*/ + bool ScriptAddCommand::Execute() + { + return ScriptStore::AddScript(entity, addedScript) != nullptr; + } + + bool ScriptAddCommand::Unexceute() + { + return ScriptStore::RemoveScript(entity, addedScript); + } + + bool ScriptAddCommand::Merge(ICommand^) + { + // Not allowed + return false; + } + + /*---------------------------------------------------------------------------------*/ + /* ScriptRemoveCommand - Constructor */ + /*---------------------------------------------------------------------------------*/ + ScriptRemoveCommand::ScriptRemoveCommand(EntityID id, Script^ script, int index) + : entity { id } + , removedScript { script } + , originalIndex { index } + {} + + /*---------------------------------------------------------------------------------*/ + /* ScriptRemoveCommand - ICommand Functions */ + /*---------------------------------------------------------------------------------*/ + bool ScriptRemoveCommand::Execute() + { + return ScriptStore::RemoveScript(entity, removedScript); + } + + bool ScriptRemoveCommand::Unexceute() + { + return ScriptStore::AddScript(entity, removedScript, originalIndex) != nullptr; + } + + bool ScriptRemoveCommand::Merge(ICommand^) + { + // Not allowed + return false; + } } diff --git a/SHADE_Managed/src/Editor/UndoRedoStack.hxx b/SHADE_Managed/src/Editor/UndoRedoStack.hxx index 4c525228..c377e2b7 100644 --- a/SHADE_Managed/src/Editor/UndoRedoStack.hxx +++ b/SHADE_Managed/src/Editor/UndoRedoStack.hxx @@ -12,30 +12,132 @@ Reproduction or disclosure of this file or its contents without the prior writte of DigiPen Institute of Technology is prohibited. *//*************************************************************************************/ #pragma once +#include "Scripts/Script.hxx" namespace SHADE { + /// + /// Interface for command that fits into the UndoRedoStack which can perform + /// undo-able and redo-able operations. + /// + private interface class ICommand + { + /// + /// Executes an action. This is called when a "Redo" is performed. + /// + /// Whether the action was successful or not. + bool Execute(); + /// + /// Undoes an action. This is called when an "Undo" is performed. + /// + /// Whether the action was successful or not. + bool Unexceute(); + /// + /// Merges this command with another command. + /// + /// + /// Whether the merge was successful or not. + bool Merge(ICommand^ command); + }; + + private ref class FieldChangeCommand sealed : public ICommand + { + public: + FieldChangeCommand(System::Object^ obj, System::Reflection::FieldInfo^ field, System::Object^ newData, System::Object^ oldData); + + bool Execute() override; + bool Unexceute() override; + bool Merge(ICommand^ command) override; + + private: + System::Object^ objectToChange; + System::Reflection::FieldInfo^ field; + System::Object^ newData; + System::Object^ oldData; + }; + + + private ref class ListElementChangeCommand sealed : public ICommand + { + public: + ListElementChangeCommand(System::Collections::IList^ list, int index, System::Object^ newData, System::Object^ oldData); + + bool Execute() override; + bool Unexceute() override; + bool Merge(ICommand^ command) override; + + private: + System::Collections::IList^ list; + int index; + System::Object^ newData; + System::Object^ oldData; + }; + + private ref class ListElementAddCommand sealed : public ICommand + { + public: + ListElementAddCommand(System::Collections::IList^ list, int addIndex, System::Object^ data); + + bool Execute() override; + bool Unexceute() override; + bool Merge(ICommand^ command) override; + + private: + System::Collections::IList^ list; + int addIndex; // New index of the added element + System::Object^ data; + }; + + private ref class ListElementRemoveCommand sealed : public ICommand + { + public: + ListElementRemoveCommand(System::Collections::IList^ list, int removeIndex, System::Object^ data); + + bool Execute() override; + bool Unexceute() override; + bool Merge(ICommand^ command) override; + + private: + System::Collections::IList^ list; + int removeIndex; // Index of the element to remove at + System::Object^ data; + }; + + private ref class ScriptAddCommand sealed : public ICommand + { + public: + ScriptAddCommand(EntityID id, Script^ script); + + bool Execute() override; + bool Unexceute() override; + bool Merge(ICommand^ command) override; + + private: + EntityID entity; + Script^ addedScript; + }; + + private ref class ScriptRemoveCommand sealed : public ICommand + { + public: + ScriptRemoveCommand(EntityID id, Script^ script, int index); + + bool Execute() override; + bool Unexceute() override; + bool Merge(ICommand^ command) override; + + private: + EntityID entity; + Script^ removedScript; + int originalIndex; + }; + /// /// Class that is able to store a stack of actions that can be done and redone. /// private ref class UndoRedoStack sealed { public: - /*-----------------------------------------------------------------------------*/ - /* Type Definitions */ - /*-----------------------------------------------------------------------------*/ - /// - /// Command for the stack that represents a data modification. - /// - value struct Command - { - public: - System::Object^ Object; - System::Reflection::FieldInfo^ Field; - System::Object^ NewData; - System::Object^ OldData; - }; - /*-----------------------------------------------------------------------------*/ /* Properties */ /*-----------------------------------------------------------------------------*/ @@ -55,7 +157,7 @@ namespace SHADE /// Adds a command onto the stack. /// /// - void Add(Command command); + void Add(ICommand^ command); /// /// Undos the last added command if it exists. /// @@ -70,6 +172,6 @@ namespace SHADE /* Data Members */ /*-----------------------------------------------------------------------------*/ int latestActionIndex = -1; - System::Collections::Generic::List^ commandStack = gcnew System::Collections::Generic::List(); + System::Collections::Generic::List^ commandStack = gcnew System::Collections::Generic::List(); }; } diff --git a/SHADE_Managed/src/Engine/ChildListCache.cxx b/SHADE_Managed/src/Engine/ChildListCache.cxx new file mode 100644 index 00000000..b183646f --- /dev/null +++ b/SHADE_Managed/src/Engine/ChildListCache.cxx @@ -0,0 +1,89 @@ +/************************************************************************************//*! +\file ChildListCache.cxx +\author Tng Kah Wei, kahwei.tng, 390009620 +\par email: kahwei.tng\@digipen.edu +\date Nov 11, 2022 +\brief Contains the definition of the functions for the ChildListCache managed + class. + + Note: This file is written in C++17/CLI. + +Copyright (C) 2022 DigiPen Institute of Technology. +Reproduction or disclosure of this file or its contents without the prior written consent +of DigiPen Institute of Technology is prohibited. +*//*************************************************************************************/ +// Precompiled Headers +#include "SHpch.h" +// Primary Header +#include "ChildListCache.hxx" +// External Dependencies +#include "Scene/SHSceneManager.h" +// Project Headers +#include "Utility/Debug.hxx" + +namespace SHADE +{ + /*---------------------------------------------------------------------------------*/ + /* Static Usage Functions */ + /*---------------------------------------------------------------------------------*/ + ChildListCache::ChildEnumerable^ ChildListCache::GetChildList(Entity entity) + { + // Ignore if invalid + if (entity == MAX_EID) + return nullptr; + + // Check if in cache + if (cachedLists->ContainsKey(entity)) + return cachedLists[entity]; + + // Grab the native child list + auto node = GameObject(entity).GetSceneNode(); + if (!node || node->GetChildren().empty()) + return nullptr; + + // Otherwise + // - Create the list + ChildList^ list = gcnew ChildList(); + updateChildList(list, node); + // - Cache it + cachedLists[entity] = list; + + return list; + } + + void ChildListCache::UpdateChildList(Entity entity) + { + // Ignore if invalid + if (entity == MAX_EID) + return; + + // Check if in cache + if (!cachedLists->ContainsKey(entity)) + return; + + // Update + updateChildList(cachedLists[entity], GameObject(entity).GetSceneNode()); + } + + /*---------------------------------------------------------------------------------*/ + /* Event Handling Functions */ + /*---------------------------------------------------------------------------------*/ + void ChildListCache::OnChildrenChanged(EntityID entity) + { + SAFE_NATIVE_CALL_BEGIN + UpdateChildList(entity); + SAFE_NATIVE_CALL_END_N("SHADE_Managed.ChildListCache") + } + + /*---------------------------------------------------------------------------------*/ + /* Helper Functions */ + /*---------------------------------------------------------------------------------*/ + void ChildListCache::updateChildList(ChildList^ list, const SHSceneNode* sceneNode) + { + list->Clear(); + for (auto node : sceneNode->GetChildren()) + { + list->Add(GameObject(node->GetEntityID())); + } + } +} diff --git a/SHADE_Managed/src/Engine/ChildListCache.hxx b/SHADE_Managed/src/Engine/ChildListCache.hxx new file mode 100644 index 00000000..1a2637d3 --- /dev/null +++ b/SHADE_Managed/src/Engine/ChildListCache.hxx @@ -0,0 +1,80 @@ +/************************************************************************************//*! +\file ChildListCache.hxx +\author Tng Kah Wei, kahwei.tng, 390009620 +\par email: kahwei.tng\@digipen.edu +\date Nov 11, 2022 +\brief Contains the definition of the ChildListCache managed class. + + Note: This file is written in C++17/CLI. + +Copyright (C) 2022 DigiPen Institute of Technology. +Reproduction or disclosure of this file or its contents without the prior written consent +of DigiPen Institute of Technology is prohibited. +*//*************************************************************************************/ +#pragma once + +// Project Includes +#include "GameObject.hxx" + +namespace SHADE { } + +namespace SHADE +{ + /*---------------------------------------------------------------------------------*/ + /* Forward Declarations */ + /*---------------------------------------------------------------------------------*/ + class SHSceneNode; + + /*---------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*---------------------------------------------------------------------------------*/ + /// + /// Static class that caches all the lists of children for GameObjects. + /// + private ref class ChildListCache abstract sealed + { + public: + /*-----------------------------------------------------------------------------*/ + /* Type Definitions */ + /*-----------------------------------------------------------------------------*/ + using ChildList = System::Collections::Generic::List; + using ChildEnumerable = System::Collections::Generic::IEnumerable; + using ListMap = System::Collections::Generic::Dictionary; + + internal: + /*-----------------------------------------------------------------------------*/ + /* Static Usage Functions */ + /*-----------------------------------------------------------------------------*/ + /// + /// Retrieves the children list for the specified Entity. + /// + /// + /// Enumerable read only list of an Entity's children. Null if entity is invalid + /// or there are no children. + /// + static ChildEnumerable^ GetChildList(Entity entity); + /// + /// Updates the children list for the specified Entity if it exists. + /// + static void UpdateChildList(Entity entity); + + /*-----------------------------------------------------------------------------*/ + /* Event Handling Functions */ + /*-----------------------------------------------------------------------------*/ + /// + /// To be + /// + static void OnChildrenChanged(EntityID entity); + + private: + /*-----------------------------------------------------------------------------*/ + /* Static Data Members */ + /*-----------------------------------------------------------------------------*/ + static ListMap^ cachedLists = gcnew ListMap(); + + /*-----------------------------------------------------------------------------*/ + /* Helper Functions */ + /*-----------------------------------------------------------------------------*/ + static void updateChildList(ChildList^ list, const SHSceneNode* sceneNode); + }; +} \ No newline at end of file diff --git a/SHADE_Managed/src/Engine/ECS.cxx b/SHADE_Managed/src/Engine/ECS.cxx index 00c3c182..c388f0cd 100644 --- a/SHADE_Managed/src/Engine/ECS.cxx +++ b/SHADE_Managed/src/Engine/ECS.cxx @@ -22,11 +22,13 @@ of DigiPen Institute of Technology is prohibited. // External Dependencies #include "ECS_Base/Managers/SHEntityManager.h" #include "Math/Transform/SHTransformComponent.h" -#include "Physics/Components/SHColliderComponent.h" -#include "Physics/Components/SHRigidBodyComponent.h" +#include "Physics/Interface/SHColliderComponent.h" +#include "Physics/Interface/SHRigidBodyComponent.h" #include "Scene/SHSceneManager.h" #include "Scene/SHSceneGraph.h" -#include "Tools/SHLog.h" +#include "Tools/Logger/SHLog.h" +#include "Graphics\MiddleEnd\Interface\SHRenderable.h" +#include "Graphics\MiddleEnd\TextRendering\SHTextRenderableComponent.h" // Project Headers #include "Utility/Convert.hxx" #include "Utility/Debug.hxx" @@ -36,6 +38,8 @@ of DigiPen Institute of Technology is prohibited. #include "Components/Camera.hxx" #include "Components/CameraArm.hxx" #include "Components/Light.hxx" +#include "Components\Renderable.hxx" +#include "Components\TextRenderable.hxx" namespace SHADE { @@ -166,6 +170,70 @@ namespace SHADE return T(); } + generic + System::Collections::Generic::IEnumerable^ ECS::GetComponentsInChildren(EntityID entity) + { + System::Type^ componentType = T::typeid; + + // Check if entity is correct + if (!SHEntityManager::IsValidEID(entity)) + { + std::ostringstream oss; + oss << "[ECS] Attempted to retrieve Component \"" + << Convert::ToNative(componentType->Name) + << "\" from invalid Entity."; + Debug::LogError(oss.str()); + return nullptr; + } + + // Search all elements via a iterative breadth first search + System::Collections::Generic::List^ results; + System::Collections::Generic::Queue^ searchSpace = gcnew System::Collections::Generic::Queue(); + // Start off with direct children + SHSceneNode* entityNode = SHSceneManager::GetCurrentSceneGraph().GetNode(entity); + if (entityNode == nullptr) + { + std::ostringstream oss; + oss << "[ScriptStore] Failed to retrieve SceneGraphNode of entity #" << entity << ". This should not happen!"; + SHLog::Warning(oss.str()); + } + for (const auto& child : entityNode->GetChildren()) + { + searchSpace->Enqueue(child->GetEntityID()); + } + // Continue with all subsequent children + while (searchSpace->Count > 0) + { + // Check if this entity has the component we need + Entity curr = searchSpace->Dequeue(); + T component = GetComponent(curr); + if (component != nullptr) + { + // We only construct if we need to + if (results == nullptr) + results = gcnew System::Collections::Generic::List(); + results->Add(component); + } + + // Add children to the queue + SHSceneNode* sceneGraphNode = SHSceneManager::GetCurrentSceneGraph().GetNode(curr); + if (sceneGraphNode == nullptr) + { + std::ostringstream oss; + oss << "[ECS_CLI] Failed to retrieve SceneGraphNode of entity #" << entity << ". This should not happen!"; + SHLog::Warning(oss.str()); + continue; + } + for (const auto& child : sceneGraphNode->GetChildren()) + { + searchSpace->Enqueue(child->GetEntityID()); + } + } + + // None here + return results; + } + generic T ECS::EnsureComponent(EntityID entity) { @@ -249,11 +317,13 @@ namespace SHADE static ECS::ECS() { componentMap.Add(createComponentSet()); + componentMap.Add(createComponentSet()); componentMap.Add(createComponentSet()); componentMap.Add(createComponentSet()); componentMap.Add(createComponentSet()); componentMap.Add(createComponentSet()); componentMap.Add(createComponentSet()); + componentMap.Add(createComponentSet()); } /*---------------------------------------------------------------------------------*/ diff --git a/SHADE_Managed/src/Engine/ECS.hxx b/SHADE_Managed/src/Engine/ECS.hxx index 0563f678..18acf30d 100644 --- a/SHADE_Managed/src/Engine/ECS.hxx +++ b/SHADE_Managed/src/Engine/ECS.hxx @@ -51,9 +51,9 @@ namespace SHADE /// specified Component. /// generic where T : BaseComponent - static T GetComponent(EntityID entity); + static T GetComponent(EntityID entity); /// - /// Retrieves the first Component from the specified GameObjectt's children that + /// Retrieves the first Component from the specified GameObject's children that /// matches the specified type. /// /// Type of the Component to get. @@ -65,6 +65,20 @@ namespace SHADE generic where T : BaseComponent static T GetComponentInChildren(EntityID entity); /// + /// Retrieves a list of Components from the specified GameObject's children that + /// matches the specified type. + /// This function performs allocations. If expecting only 1 component, use + /// GetComponentInChildren() instead. + /// This does not search the specified entity. + /// + /// Type of the Component to get. + /// Entity object to get the Component from. + /// + /// Newly allocated List of components. Will be null if no components are found. + /// + generic where T : BaseComponent + static System::Collections::Generic::IEnumerable^ GetComponentsInChildren(EntityID entity); + /// /// Ensures a Component on the specified Entity. /// /// Type of the Component to ensure. diff --git a/SHADE_Managed/src/Engine/GameObject.cxx b/SHADE_Managed/src/Engine/GameObject.cxx index bc17be8b..3557e8f1 100644 --- a/SHADE_Managed/src/Engine/GameObject.cxx +++ b/SHADE_Managed/src/Engine/GameObject.cxx @@ -23,6 +23,7 @@ of DigiPen Institute of Technology is prohibited. #include "Utility/Convert.hxx" #include "Scripts/ScriptStore.hxx" #include "Utility/Debug.hxx" +#include "ChildListCache.hxx" namespace SHADE { @@ -53,6 +54,14 @@ namespace SHADE return GameObject(ENTITY_ID); } + /*---------------------------------------------------------------------------------*/ + /* Static Properties */ + /*---------------------------------------------------------------------------------*/ + GameObject GameObject::Null::get() + { + return GameObject(); + } + /*---------------------------------------------------------------------------------*/ /* Properties */ /*---------------------------------------------------------------------------------*/ @@ -87,30 +96,43 @@ namespace SHADE throw gcnew System::NullReferenceException(); return entity; } - GameObject^ GameObject::Parent::get() + GameObject GameObject::Parent::get() { if (!valid) throw gcnew System::NullReferenceException(); + const auto& SCENE_GRAPH = SHSceneManager::GetCurrentSceneGraph(); const auto* ROOT = SCENE_GRAPH.GetRoot(); - const auto* NODE = SCENE_GRAPH.GetNode(entity); if (NODE == nullptr) throw gcnew System::InvalidOperationException("Unable to retrieve SceneGraphNode for Entity " + entity.ToString()); const auto* PARENT = NODE->GetParent(); - return PARENT != ROOT ? gcnew GameObject(PARENT->GetEntityID()) : nullptr; + return PARENT != ROOT ? GameObject(PARENT->GetEntityID()) : GameObject(); } - void GameObject::Parent::set(GameObject^ newParent) + void GameObject::Parent::set(GameObject newParent) { if (!valid) throw gcnew System::NullReferenceException(); auto& SCENE_GRAPH = SHSceneManager::GetCurrentSceneGraph(); - if (newParent == nullptr) - SCENE_GRAPH.SetParent(entity, nullptr); + if (newParent) + SCENE_GRAPH.SetParent(entity, newParent.EntityId); else - SCENE_GRAPH.SetParent(entity, newParent->EntityId); + SCENE_GRAPH.SetParent(entity, nullptr); + } + int GameObject::ChildCount::get() + { + if (!valid) + throw gcnew System::NullReferenceException(); + + const auto& SCENE_GRAPH = SHSceneManager::GetCurrentSceneGraph(); + const auto* ROOT = SCENE_GRAPH.GetRoot(); + const auto* NODE = SCENE_GRAPH.GetNode(entity); + if (NODE == nullptr) + throw gcnew System::InvalidOperationException("Unable to retrieve SceneGraphNode for Entity " + entity.ToString()); + + return static_cast(NODE->GetChildren().size()); } /*---------------------------------------------------------------------------------*/ @@ -156,6 +178,14 @@ namespace SHADE return ECS::GetComponentInChildren(entity); } + generic + System::Collections::Generic::IEnumerable^ GameObject::GetComponentsInChildren() + { + if (!valid) + throw gcnew System::NullReferenceException(); + return ECS::GetComponentsInChildren(entity); + } + generic T GameObject::EnsureComponent() { @@ -198,6 +228,13 @@ namespace SHADE throw gcnew System::NullReferenceException(); return ScriptStore::GetScriptInChildren(entity); } + generic + System::Collections::Generic::IEnumerable^ GameObject::GetScriptsInChildren() + { + if (!valid) + throw gcnew System::NullReferenceException(); + return ScriptStore::GetScriptsInChildren(entity); + } generic System::Collections::Generic::IEnumerable^ GameObject::GetScripts() @@ -215,6 +252,90 @@ namespace SHADE ScriptStore::RemoveScript(entity); } + /*---------------------------------------------------------------------------------*/ + /* Scene Graph Functions */ + /*---------------------------------------------------------------------------------*/ + void GameObject::DetachChildren() + { + // Validity Checks + if (!valid) + throw gcnew System::NullReferenceException(); + auto node = GetSceneNode(); + if (!node) + throw gcnew System::NullReferenceException(); + + // Unparent all children to the root + for (auto child : node->GetChildren()) + { + SHSceneManager::GetCurrentSceneGraph().SetParent(child->GetEntityID(), nullptr); + } + ChildListCache::UpdateChildList(entity); + } + + GameObject GameObject::GetChild(int index) + { + // Validity Checks + if (!valid) + throw gcnew System::NullReferenceException(); + auto node = GetSceneNode(); + if (!node) + throw gcnew System::NullReferenceException(); + + auto child = node->GetChild(index); + return child ? GameObject(child->GetEntityID()) : GameObject(); + } + + System::Collections::Generic::IEnumerable^ GameObject::GetChildren() + { + // Validity Checks + if (!valid) + throw gcnew System::NullReferenceException(); + return ChildListCache::GetChildList(entity); + } + + int GameObject::GetSiblingIndex() + { + throw gcnew System::NotImplementedException(); + } + + bool GameObject::IsChildOf(GameObject gameObj) + { + // Search parents recursively + auto node = GetSceneNode(); + while (node != nullptr) + { + if (node->GetEntityID() == gameObj.entity) + return true; + + // Go up higher + node = node->GetParent(); + } + return false; + } + + void GameObject::SetAsFirstSibling() + { + throw gcnew System::NotImplementedException(); + } + + void GameObject::SetAsLastSibling() + { + throw gcnew System::NotImplementedException(); + } + + void GameObject::SetSiblingIndex(int index) + { + throw gcnew System::NotImplementedException(); + } + + /*---------------------------------------------------------------------------------*/ + /* Operator Overloads */ + /*---------------------------------------------------------------------------------*/ + GameObject::operator bool(GameObject gameObj) + { + return gameObj.valid; + } + /*---------------------------------------------------------------------------------*/ /* Constructors */ /*---------------------------------------------------------------------------------*/ @@ -245,11 +366,15 @@ namespace SHADE } /*---------------------------------------------------------------------------------*/ - /* Operator Overloads */ + /* Helper Functions */ /*---------------------------------------------------------------------------------*/ - GameObject::operator bool(GameObject gameObj) + SHSceneNode* GameObject::GetSceneNode() { - return gameObj.valid; + const auto& SCENE_GRAPH = SHSceneManager::GetCurrentSceneGraph(); + const auto* ROOT = SCENE_GRAPH.GetRoot(); + if (!ROOT) + return nullptr; + return SCENE_GRAPH.GetNode(entity); } /*---------------------------------------------------------------------------------*/ @@ -290,4 +415,21 @@ namespace SHADE { return !(lhs == rhs); } + + /*---------------------------------------------------------------------------------*/ + /* IEnummerable */ + /*---------------------------------------------------------------------------------*/ + System::Collections::Generic::IEnumerator^ GameObject::GetEnumerator() + { + System::Collections::Generic::IEnumerable^ childList = GetChildren(); + if (childList == nullptr) + return System::Linq::Enumerable::Empty()->GetEnumerator(); + else + return childList->GetEnumerator(); + } + + System::Collections::IEnumerator^ GameObject::GetEnumeratorNonGeneric() + { + return GetEnumerator(); + } } diff --git a/SHADE_Managed/src/Engine/GameObject.hxx b/SHADE_Managed/src/Engine/GameObject.hxx index 02a0ed4f..1ebfc250 100644 --- a/SHADE_Managed/src/Engine/GameObject.hxx +++ b/SHADE_Managed/src/Engine/GameObject.hxx @@ -20,7 +20,7 @@ of DigiPen Institute of Technology is prohibited. namespace SHADE { /*---------------------------------------------------------------------------------*/ - /* Forward Declarations */ + /* Forward Declarations */ /*---------------------------------------------------------------------------------*/ ref class Script; ref class BaseComponent; @@ -32,8 +32,9 @@ namespace SHADE /// Lightweight object for an Entity that allows for easy access to Component and /// Script operations. /// Can be set to a invalid/null GameObject by default construction. + /// Can also be iterated to access children. ///
- public value class GameObject : public System::IEquatable + public value class GameObject : public System::IEquatable, public System::Collections::Generic::IEnumerable { public: /*-----------------------------------------------------------------------------*/ @@ -61,6 +62,17 @@ namespace SHADE /// GameObject that has the specified name. Null if not found. static System::Nullable Find(System::String^ name); + /*-----------------------------------------------------------------------------*/ + /* Static Properties */ + /*-----------------------------------------------------------------------------*/ + /// + /// Default empty GameObject. + /// + static property GameObject Null + { + GameObject get(); + } + /*-----------------------------------------------------------------------------*/ /* Properties */ /*-----------------------------------------------------------------------------*/ @@ -97,10 +109,17 @@ namespace SHADE /// /// The parent entity for this GameObject. /// - property GameObject^ Parent + property GameObject Parent { - GameObject^ get(); - void set(GameObject^); + GameObject get(); + void set(GameObject); + } + /// + /// Number of Children held by this GameObject + /// + property int ChildCount + { + int get(); } /*-----------------------------------------------------------------------------*/ @@ -120,8 +139,7 @@ namespace SHADE /// /// Whether to activate or deactivate this GameObject. /// - void SetActive(bool active); - + void SetActive(bool active); /*-----------------------------------------------------------------------------*/ /* Component Access Functions */ @@ -146,6 +164,7 @@ namespace SHADE /// /// Retrieves the first Component from this GameObject's children that matches /// the specified type. + /// Unlike Unity, we do not search this GameObject, only the children. /// /// Type of the Component to get. /// @@ -155,6 +174,19 @@ namespace SHADE generic where T : BaseComponent T GetComponentInChildren(); /// + /// Retrieves a list of Components from this GameObject's children that matches + /// the specified type. + /// This function performs allocations. If expecting only 1 component, use + /// GetComponentInChildren() instead. + /// Unlike Unity, we do not search this GameObject, only the children. + /// + /// Type of the Component to get. + /// + /// Newly allocated List of components. Will be null if no components are found. + /// + generic where T : BaseComponent + System::Collections::Generic::IEnumerable^ GetComponentsInChildren(); + /// /// Ensures a Component on this GameObject. /// /// Type of the Component to ensure. @@ -194,12 +226,26 @@ namespace SHADE /// Retrieves a Script of the specified type from child GameObjects. /// If multiple Scripts of the same specified type are added on the same /// child GameObject, this will retrieve the first one added. + /// Unlike Unity, we do not search this GameObject, only the children. ///
/// Type of Script to retrieve. /// Reference to the Script to retrieve. generic where T : ref class, Script T GetScriptInChildren(); /// + /// Retrieves a list of Scripts from this GameObject's children that matches + /// the specified type. + /// This function performs allocations. If expecting only 1 component, use + /// GetComponentInChildren() instead. + /// Unlike Unity, we do not search this GameObject, only the children. + /// + /// Type of the Component to get. + /// + /// Newly allocated List of components. Will be null if no components are found. + /// + generic where T : ref class, Script + System::Collections::Generic::IEnumerable^ GetScriptsInChildren(); + /// /// Retrieves a immutable list of Scripts of the specified type from this /// GameObject. /// @@ -214,6 +260,82 @@ namespace SHADE generic where T : ref class, Script void RemoveScript(); + /*-----------------------------------------------------------------------------*/ + /* Scene Graph Functions */ + /*-----------------------------------------------------------------------------*/ + /// + /// Unparents all children. Useful if you want to destroy the root of a hierarchy + /// without destroying the children. + /// + void DetachChildren(); + /// + /// Returns a child by index. + /// + /// Index of the child GameObject to retrieve. + /// + /// Handle to the GameObject if the index is valid. Invalid GameObject otherwise. + /// + GameObject GetChild(int index); + /// + /// Returns a cached enumerable container of child GameObjects of this + /// GameObject. + /// + /// + /// Enumerable container of child GameObjects of this GameObject. Null if + /// ChildCount is 0. + /// + System::Collections::Generic::IEnumerable^ GetChildren(); + /// + /// Gets the sibling index. Use GetSiblingIndex to find out the GameObject’s + /// place in this hierarchy. When the sibling index of a GameObject is changed, + /// its order in the Hierarchy window will also change. + /// + /// + /// Index of this GameObject among the parent GameObject's children. + /// + [System::ObsoleteAttribute("Not yet implemented.", true)] + int GetSiblingIndex(); + /// + /// Checks if this GameObject a direct or indirect child of the specified + /// GameObject. + /// + /// + /// True if this GameObject is a child, deep child (child of a child) or + /// identical to this GameObject, otherwise false. + /// + bool IsChildOf(GameObject gameObj); + /// + /// Move the GameObject to the start of the parent GameObject's children list. + /// + [System::ObsoleteAttribute("Not yet implemented.", true)] + void SetAsFirstSibling(); + /// + /// Move the GameObject to the end of the parent GameObject's children list. + /// + [System::ObsoleteAttribute("Not yet implemented.", true)] + void SetAsLastSibling(); + /// + /// Move the GameObject to the specified position in the parent GameObject's + /// children list. An existing object at that position if any, will be pushed + /// to the next index (existing element will be at index + 1). + /// + /// + /// Position to place this GameObject at in the hierarchy. Clamped to between + /// [0, parent.ChildCount]. + /// + [System::ObsoleteAttribute("Not yet implemented.", true)] + void SetSiblingIndex(int index); + + /*-----------------------------------------------------------------------------*/ + /* Operator Overloads */ + /*-----------------------------------------------------------------------------*/ + /// + /// Implicit conversion operator to enable checking if a GameObject is valid. + /// + /// GameObjects to check. + /// True if the GameObject is valid. + static operator bool(GameObject gameObj); + internal: /*-----------------------------------------------------------------------------*/ /* Constructors */ @@ -249,13 +371,13 @@ namespace SHADE SHEntity& GetNativeEntity(); /*-----------------------------------------------------------------------------*/ - /* Operator Overloads */ + /* Helper Functions */ /*-----------------------------------------------------------------------------*/ /// - /// Implicit conversion operator to enable checking if a GameObject is valid. + /// Retrieves the SceneNode for this GameObject's referenced entity. /// - /// GameObjects to check. - static operator bool(GameObject gameObj); + /// Pointer to the SceneNode for this GameObject.. + SHSceneNode* GetSceneNode(); private: /*-----------------------------------------------------------------------------*/ @@ -304,6 +426,14 @@ namespace SHADE /// Another GameObject to check with. /// True if both Components are different. static bool operator!=(GameObject lhs, GameObject rhs); + + /*-----------------------------------------------------------------------------*/ + /* IEnummerable */ + /*-----------------------------------------------------------------------------*/ + /// + System::Collections::Generic::IEnumerator^ GetEnumerator() override; + /// + System::Collections::IEnumerator^ GetEnumeratorNonGeneric() override = System::Collections::IEnumerable::GetEnumerator; }; } diff --git a/SHADE_Managed/src/Engine/GenericHandle.hxx b/SHADE_Managed/src/Engine/GenericHandle.hxx index 3f8e395f..3d77f54d 100644 --- a/SHADE_Managed/src/Engine/GenericHandle.hxx +++ b/SHADE_Managed/src/Engine/GenericHandle.hxx @@ -21,7 +21,7 @@ namespace SHADE /// /// Managed version of the generic Handle. /// - public value struct GenericHandle + private value struct GenericHandle { public: /*-----------------------------------------------------------------------------*/ diff --git a/SHADE_Managed/src/Engine/Time.cxx b/SHADE_Managed/src/Engine/Time.cxx index 36032e00..8784ec90 100644 --- a/SHADE_Managed/src/Engine/Time.cxx +++ b/SHADE_Managed/src/Engine/Time.cxx @@ -16,7 +16,7 @@ of DigiPen Institute of Technology is prohibited. #include "SHpch.h" // External Dependencies #include "FRC/SHFramerateController.h" -#include "Physics/SHPhysicsSystemInterface.h" +#include "Physics/System/SHPhysicsSystemInterface.h" // Primary Header #include "Time.hxx" diff --git a/SHADE_Managed/src/Assets/Material.cxx b/SHADE_Managed/src/Graphics/Material.cxx similarity index 86% rename from SHADE_Managed/src/Assets/Material.cxx rename to SHADE_Managed/src/Graphics/Material.cxx index f4262c2a..e646b34d 100644 --- a/SHADE_Managed/src/Assets/Material.cxx +++ b/SHADE_Managed/src/Graphics/Material.cxx @@ -20,6 +20,7 @@ of DigiPen Institute of Technology is prohibited. #include // Project Includes #include "Utility/Convert.hxx" +#include "Resource/SHResourceManagerInterface.h" namespace SHADE { @@ -53,15 +54,31 @@ namespace SHADE } /*---------------------------------------------------------------------------------*/ - /* Explicit Template Instantiation */ + /* Properties */ /*---------------------------------------------------------------------------------*/ - template ref class NativeAsset; + Handle Material::NativeObject::get() + try + { + return Handle(Convert::ToNative(matInstHandle)); + } + catch (const BadHandleCastException&) + { + return Handle(); + } + GenericHandle Material::NativeObjectHandle::get() + { + return matInstHandle; + } + AssetID Material::NativeAssetID::get() + { + return SHResourceManagerInterface::GetAssetID(Convert::ToNative(matInstHandle)).value_or(INVALID_ASSET_ID); + } /*---------------------------------------------------------------------------------*/ /* Constructors/Destructor */ /*---------------------------------------------------------------------------------*/ Material::Material(Handle material) - : NativeAsset{ material } + : matInstHandle{ Handle(material) } {} /*---------------------------------------------------------------------------------*/ @@ -116,4 +133,12 @@ namespace SHADE throw gcnew System::ArgumentException("Attempted to retrieve an invalid property on a material."); } + + /*---------------------------------------------------------------------------------*/ + /* Operator Overloads */ + /*---------------------------------------------------------------------------------*/ + Material::operator bool(Material materialInstance) + { + return materialInstance; + } } diff --git a/SHADE_Managed/src/Assets/Material.hxx b/SHADE_Managed/src/Graphics/Material.hxx similarity index 66% rename from SHADE_Managed/src/Assets/Material.hxx rename to SHADE_Managed/src/Graphics/Material.hxx index 25cc96a6..12664658 100644 --- a/SHADE_Managed/src/Assets/Material.hxx +++ b/SHADE_Managed/src/Graphics/Material.hxx @@ -16,8 +16,8 @@ of DigiPen Institute of Technology is prohibited. // External Dependencies #include "Resource/SHHandle.h" #include "Graphics/MiddleEnd/Interface/SHMaterialInstance.h" +#include "Assets/SHAssetMacros.h" // Project Includes -#include "NativeAsset.hxx" #include "Engine/GenericHandle.hxx" namespace SHADE @@ -26,9 +26,34 @@ namespace SHADE /// Managed counterpart of the native MaterialInstance object containing material /// data that can be fed to Renderables for rendering. ///
- public ref class Material : public NativeAsset + public value struct Material { internal: + /*-----------------------------------------------------------------------------*/ + /* Properties */ + /*-----------------------------------------------------------------------------*/ + /// + /// Copy of the Handle to the native object. + /// + property Handle NativeObject + { + Handle get(); + } + /// + /// Generic handle for the native object + /// + property GenericHandle NativeObjectHandle + { + GenericHandle get(); + } + /// + /// The raw asset ID of the asset. + /// + property AssetID NativeAssetID + { + AssetID get(); + } + /*-----------------------------------------------------------------------------*/ /* Constructors/Destructor */ /*-----------------------------------------------------------------------------*/ @@ -77,5 +102,21 @@ namespace SHADE /// generic T GetProperty(System::String^ name); + + /*-----------------------------------------------------------------------------*/ + /* Operator Overloads */ + /*-----------------------------------------------------------------------------*/ + /// + /// Implicit conversion operator to enable checking if a Material is valid. + /// + /// Asset to check. + /// True if the Asset is valid. + static operator bool(Material asset); + + protected: + /*-----------------------------------------------------------------------------*/ + /* Data Members */ + /*-----------------------------------------------------------------------------*/ + GenericHandle matInstHandle; }; } diff --git a/SHADE_Managed/src/Math/Ray.cxx b/SHADE_Managed/src/Math/Ray.cxx index ee614cbe..bfb99578 100644 --- a/SHADE_Managed/src/Math/Ray.cxx +++ b/SHADE_Managed/src/Math/Ray.cxx @@ -1,28 +1,37 @@ -/************************************************************************************//*! -\file Ray.cxx -\author Tng Kah Wei, kahwei.tng, 390009620 -\par email: kahwei.tng\@digipen.edu -\date Oct 20, 2022 -\brief Contains the definitions of functions of the Vector2 struct. - - Note: This file is written in C++17/CLI. +/**************************************************************************************** + * \file Ray.cxx + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Implementation for the managed Ray struct. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ -Copyright (C) 2022 DigiPen Institute of Technology. -Reproduction or disclosure of this file or its contents without the prior written consent -of DigiPen Institute of Technology is prohibited. -*//*************************************************************************************/ -// Precompiled Headers #include "SHpch.h" + // Primary Header -#include "Math/Ray.hxx" +#include "Ray.hxx" namespace SHADE { - /*---------------------------------------------------------------------------------*/ - /* Constructors */ - /*---------------------------------------------------------------------------------*/ - Ray::Ray(Vector3 origin, Vector3 direction) - : Origin { origin } - , Direction{ direction } - {} -} \ No newline at end of file + /*-----------------------------------------------------------------------------------*/ + /* Constructor Definitions */ + /*-----------------------------------------------------------------------------------*/ + + Ray::Ray(Vector3 position, Vector3 direction) + { + Position = position; + Direction = direction; + } + + /*-----------------------------------------------------------------------------------*/ + /* Function Member Definitions */ + /*-----------------------------------------------------------------------------------*/ + + void Ray::LookAt(Vector3 target) + { + Direction = (target - Position).GetNormalised(); + } + +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Managed/src/Math/Ray.hxx b/SHADE_Managed/src/Math/Ray.hxx index c50191f8..b684aa91 100644 --- a/SHADE_Managed/src/Math/Ray.hxx +++ b/SHADE_Managed/src/Math/Ray.hxx @@ -1,50 +1,61 @@ -/************************************************************************************//*! -\file Ray.hxx -\author Tng Kah Wei, kahwei.tng, 390009620 -\par email: kahwei.tng\@digipen.edu -\date Oct 20, 2021 -\brief Contains the definitions of Vector2 struct. - - Note: This file is written in C++17/CLI. +/**************************************************************************************** + * \file Ray.hxx + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Interface for the managed Ray struct. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ -Copyright (C) 2022 DigiPen Institute of Technology. -Reproduction or disclosure of this file or its contents without the prior written consent -of DigiPen Institute of Technology is prohibited. -*//*************************************************************************************/ #pragma once // Project Includes -#include "Vector3.hxx" +#include "Math/Vector3.hxx" namespace SHADE { - /// - /// CLR version of the the SHADE Engine's Ray class that represents a ray in - /// 3-Dimensional space. - /// - public value struct Ray - { - public: - /*-----------------------------------------------------------------------------*/ - /* Public Members */ - /*-----------------------------------------------------------------------------*/ - /// - /// The start point of the ray. - /// - Vector3 Origin; - /// - /// The direction that a ray travels in. - /// - Vector3 Direction; + /*-----------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*-----------------------------------------------------------------------------------*/ - /*-----------------------------------------------------------------------------*/ - /* Constructors */ - /*-----------------------------------------------------------------------------*/ - /// - /// Creates a ray starting at origin along direction. - /// - /// Source of the ray. - /// Direction the ray travels in. - Ray(Vector3 origin, Vector3 direction); - }; -} + public value struct Ray + { + public: + /*---------------------------------------------------------------------------------*/ + /* Constructors */ + /*---------------------------------------------------------------------------------*/ + + /// + /// Constructor for a ray. + /// + /// The starting position of the ray. + /// The direction of the ray. + Ray(Vector3 position, Vector3 direction); + + + /*---------------------------------------------------------------------------------*/ + /* Properties */ + /*---------------------------------------------------------------------------------*/ + + /// + /// The starting point of the Ray. + /// + property Vector3 Position; + /// + /// The direction of the ray. This should be a normalised vector. + /// + property Vector3 Direction; + + /*---------------------------------------------------------------------------------*/ + /* Function Members */ + /*---------------------------------------------------------------------------------*/ + + /// + /// Rotates the ray's direction towards a target. + /// + /// The target to direct the ray towards. + void LookAt(Vector3 target); + }; + +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Managed/src/Math/Vector3.cxx b/SHADE_Managed/src/Math/Vector3.cxx index f2286aa7..edd78f6b 100644 --- a/SHADE_Managed/src/Math/Vector3.cxx +++ b/SHADE_Managed/src/Math/Vector3.cxx @@ -52,7 +52,7 @@ namespace SHADE Vector3 Vector3::GetNormalised() { - return *this / GetSqrMagnitude(); + return *this / GetMagnitude(); } float Vector3::GetMagnitude() diff --git a/SHADE_Managed/src/Physics/Physics.cxx b/SHADE_Managed/src/Physics/Physics.cxx new file mode 100644 index 00000000..9e2c1413 --- /dev/null +++ b/SHADE_Managed/src/Physics/Physics.cxx @@ -0,0 +1,105 @@ +/**************************************************************************************** + * \file Physics.cxx + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Implementation for the managed Physics class. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#include "SHpch.h" + +// Primary Header +#include "Physics.hxx" +// External Dependencies +#include "Physics/System/SHPhysicsSystemInterface.h" +// Project Header +#include "Engine/GameObject.hxx" +#include "Utility/Convert.hxx" +#include "Utility/Debug.hxx" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Property Function Definitions */ + /*-----------------------------------------------------------------------------------*/ + + Vector3 Physics::Gravity::get() + { + // TODO(Diren) + + return Vector3::Zero; + } + + void Physics::Gravity::set(Vector3 value) + { + (void)value; + } + + /*-----------------------------------------------------------------------------------*/ + /* Raycast Function Member Definitions */ + /*-----------------------------------------------------------------------------------*/ + + RaycastHit Physics::Raycast(Ray ray) + { + return Convert::ToCLI(SHPhysicsSystemInterface::Raycast(Convert::ToNative(ray))); + } + + RaycastHit Physics::Raycast(Ray ray, float distance) + { + return Convert::ToCLI(SHPhysicsSystemInterface::Raycast(Convert::ToNative(ray), distance)); + } + + RaycastHit Physics::Linecast(Vector3 start, Vector3 end) + { + return Convert::ToCLI(SHPhysicsSystemInterface::Linecast(Convert::ToNative(start), Convert::ToNative(end))); + } + + RaycastHit Physics::ColliderRaycast(GameObject object, Ray ray) + { + return Convert::ToCLI(SHPhysicsSystemInterface::ColliderRaycast(object.EntityId, Convert::ToNative(ray))); + } + + RaycastHit Physics::ColliderRaycast(GameObject object, Ray ray, float distance) + { + return Convert::ToCLI(SHPhysicsSystemInterface::ColliderRaycast(object.EntityId, Convert::ToNative(ray), distance)); + } + + RaycastHit Physics::ColliderRaycast(GameObject object, int shapeIndex, Ray ray) + { + return Convert::ToCLI(SHPhysicsSystemInterface::ColliderRaycast(object.EntityId, shapeIndex, Convert::ToNative(ray))); + } + + RaycastHit Physics::ColliderRaycast(GameObject object, int shapeIndex, Ray ray, float distance) + { + return Convert::ToCLI(SHPhysicsSystemInterface::ColliderRaycast(object.EntityId, shapeIndex, Convert::ToNative(ray), distance)); + } + + RaycastHit Physics::ColliderLineCast(GameObject object, Vector3 start, Vector3 end) + { + return Convert::ToCLI(SHPhysicsSystemInterface::ColliderLinecast(object.EntityId, Convert::ToNative(start), Convert::ToNative(end))); + } + + RaycastHit Physics::ColliderLineCast(GameObject object, int shapeIndex, Vector3 start, Vector3 end) + { + return Convert::ToCLI(SHPhysicsSystemInterface::ColliderLinecast(object.EntityId, shapeIndex, Convert::ToNative(start), Convert::ToNative(end))); + } + + /*-----------------------------------------------------------------------------------*/ + /* Private Function Member Definitions */ + /*-----------------------------------------------------------------------------------*/ + + RaycastHit Physics::generateDefaultResult() + { + RaycastHit default; + default.Hit = false; + default.Other = System::Nullable(); + default.Position = Vector3::Zero; + default.Normal = Vector3::Zero; + default.Distance = System::Single::PositiveInfinity; + default.CollisionShapeIndex = -1; + + return default; + } +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Managed/src/Physics/Physics.hxx b/SHADE_Managed/src/Physics/Physics.hxx new file mode 100644 index 00000000..f13e5952 --- /dev/null +++ b/SHADE_Managed/src/Physics/Physics.hxx @@ -0,0 +1,128 @@ +/**************************************************************************************** + * \file Physics.hxx + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Interface for the managed Physics class. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#pragma once + +// Project Includes +#include "Math/Ray.hxx" +#include "RaycastHit.hxx" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*-----------------------------------------------------------------------------------*/ + + public ref class Physics abstract sealed + { + public: + /*---------------------------------------------------------------------------------*/ + /* Properties */ + /*---------------------------------------------------------------------------------*/ + + static property Vector3 Gravity + { + Vector3 get(); + void set(Vector3 value); + } + + // TODO(Diren): Add more properties for physics system settings. + + /*---------------------------------------------------------------------------------*/ + /* Raycast Function Members */ + /*---------------------------------------------------------------------------------*/ + + /// + /// Casts an infinite ray into the world. + /// + /// The ray to cast. + /// The result of the raycast. + static RaycastHit Raycast (Ray ray); + + /// + /// Casts a ray for a given distance into the world. + /// + /// The ray to cast. + /// The distance to cast the ray. + /// The result of the raycast. + static RaycastHit Raycast (Ray ray, float distance); + + /// + /// Casts a bounded ray into the world. + /// + /// The start of the bounded ray. + /// The end of the bounded ray. + /// The result of the raycast. + static RaycastHit Linecast (Vector3 start, Vector3 end); + + /// + /// Casts an infinite ray w.r.t a GameObject. + /// + /// The GameObject to cast the ray to. + /// The ray to cast. + /// The result of the raycast. + static RaycastHit ColliderRaycast (GameObject object, Ray ray); + + /// + /// Casts a ray for a given distance w.r.t a GameObject. + /// + /// The GameObject to cast the ray to. + /// The ray to cast. + /// The distance to cast the ray. + /// The result of the raycast. + static RaycastHit ColliderRaycast (GameObject object, Ray ray, float distance); + + /// + /// Casts an infinite ray w.r.t a specific collider on a GameObject. + /// + /// The GameObject to cast the ray to. + /// The collision shape index on the collider to cast to. + /// The ray to cast. + /// The result of the raycast. + static RaycastHit ColliderRaycast (GameObject object, int shapeIndex, Ray ray); + + /// + /// Casts a ray for a given distance w.r.t a specific collider on a GameObject. + /// + /// The GameObject to cast the ray to. + /// The collision shape index on the collider to cast to. + /// The ray to cast. + /// The distance to cast the ray. + /// The result of the raycast. + static RaycastHit ColliderRaycast (GameObject object, int shapeIndex, Ray ray, float distance); + + /// + /// Casts a bounded ray w.r.t a GameObject. + /// + /// The GameObject to cast the ray to. + /// The start of the bounded ray. + /// + /// The result of the raycast. + static RaycastHit ColliderLineCast (GameObject object, Vector3 start, Vector3 end); + + /// + /// Casts a bounded ray w.r.t a specific collider on a GameObject. + /// + /// The GameObject to cast the ray to. + /// The collision shape index on the collider to cast to. + /// The start of the bounded ray. + /// The end of the bounded ray. + /// The result of the raycast. + static RaycastHit ColliderLineCast (GameObject object, int shapeIndex, Vector3 start, Vector3 end); + + private: + /*---------------------------------------------------------------------------------*/ + /* Function Members */ + /*---------------------------------------------------------------------------------*/ + + static RaycastHit generateDefaultResult (); + }; + +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Managed/src/Physics/RaycastHit.cxx b/SHADE_Managed/src/Physics/RaycastHit.cxx new file mode 100644 index 00000000..e7ee9b89 --- /dev/null +++ b/SHADE_Managed/src/Physics/RaycastHit.cxx @@ -0,0 +1,19 @@ +/**************************************************************************************** + * \file RaycastHit.cxx + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Implementation for the managed RaycastHit struct. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#include "SHpch.h" + +// Primary Header +#include "RaycastHit.hxx" + +namespace SHADE +{ + +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Managed/src/Physics/RaycastHit.hxx b/SHADE_Managed/src/Physics/RaycastHit.hxx new file mode 100644 index 00000000..260da2a1 --- /dev/null +++ b/SHADE_Managed/src/Physics/RaycastHit.hxx @@ -0,0 +1,64 @@ +/**************************************************************************************** + * \file RaycastHit.hxx + * \author Diren D Bharwani, diren.dbharwani, 390002520 + * \brief Interface for the managed RaycastHit struct. + * + * \copyright Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. +****************************************************************************************/ + +#pragma once + +// Project Includes +#include "Engine/GameObject.hxx" +#include "Math/Vector3.hxx" + +namespace SHADE +{ + /*-----------------------------------------------------------------------------------*/ + /* Type Definitions */ + /*-----------------------------------------------------------------------------------*/ + + /// + /// Defines a struct that contains the information of a raycast. + /// + public value struct RaycastHit + { + public: + /*---------------------------------------------------------------------------------*/ + /* Properties */ + /*---------------------------------------------------------------------------------*/ + + /// + /// Whether or not the raycast hit a collider. + /// + property bool Hit; + + /// + /// The other game object hit. + /// + property System::Nullable Other; + + /// + /// The position where the ray cast hit. Zero if not hit. + /// + property Vector3 Position; + + /// + /// The normal where the ray cast hit. Zero if not hit. + /// + property Vector3 Normal; + + /// + /// The distance the ray was cast. Infinity if not hit. + /// + property float Distance; + + /// + /// The index of the collision shape hit on the collider. -1 if not hit. + /// + property int CollisionShapeIndex; + }; + +} // namespace SHADE \ No newline at end of file diff --git a/SHADE_Managed/src/Scene/SceneManager.cxx b/SHADE_Managed/src/Scene/SceneManager.cxx new file mode 100644 index 00000000..1e139a95 --- /dev/null +++ b/SHADE_Managed/src/Scene/SceneManager.cxx @@ -0,0 +1,25 @@ +/************************************************************************************//*! +\file Input.hxx +\author Daniel Chua +\par email: yeechendaniel.chua@digipen.edu +\date Oct 16, 2022 +\brief Contains the definition of the managed SceneManager static class. + + Note: This file is written in C++17/CLI. + +Copyright (C) 2022 DigiPen Institute of Technology. +Reproduction or disclosure of this file or its contents without the prior written consent +of DigiPen Institute of Technology is prohibited. +*//*************************************************************************************/ + +#include "SHpch.h" +#include "SceneManager.hxx" +#include "Scene/SHSceneManager.h" + +namespace SHADE +{ + void SceneManager::ChangeScene(AssetID sceneAssetID) + { + SHSceneManager::RestartScene(sceneAssetID); + } +} \ No newline at end of file diff --git a/SHADE_Managed/src/Scene/SceneManager.hxx b/SHADE_Managed/src/Scene/SceneManager.hxx new file mode 100644 index 00000000..e1b30bc3 --- /dev/null +++ b/SHADE_Managed/src/Scene/SceneManager.hxx @@ -0,0 +1,26 @@ +/************************************************************************************//*! +\file Input.hxx +\author Daniel Chua +\par email: yeechendaniel.chua@digipen.edu +\date Oct 16, 2022 +\brief Contains the definition of the managed SceneManager static class. + + Note: This file is written in C++17/CLI. + +Copyright (C) 2022 DigiPen Institute of Technology. +Reproduction or disclosure of this file or its contents without the prior written consent +of DigiPen Institute of Technology is prohibited. +*//*************************************************************************************/ + + +#pragma once + +#include "Assets/SHAssetMacros.h" + +namespace SHADE +{ + public ref class SceneManager abstract sealed + { + static void ChangeScene(AssetID sceneAssetID); + }; +} diff --git a/SHADE_Managed/src/Scripts/Script.cxx b/SHADE_Managed/src/Scripts/Script.cxx index 9d6cadb8..294f4096 100644 --- a/SHADE_Managed/src/Scripts/Script.cxx +++ b/SHADE_Managed/src/Scripts/Script.cxx @@ -22,6 +22,36 @@ of DigiPen Institute of Technology is prohibited. namespace SHADE { + /*---------------------------------------------------------------------------------*/ + /* Properties */ + /*---------------------------------------------------------------------------------*/ + GameObject Script::Owner::get() + { + return owner; + } + GameObject Script::GameObject::get() + { + return owner; + } + bool Script::Enabled::get() + { + return enabled; + } + void Script::Enabled::set(bool value) + { + // Same, don't set + if (value == enabled) + return; + + enabled = value; + + // There's a change, so call the appropriate function + if (enabled) + OnEnable(); + else + OnDisable(); + } + /*---------------------------------------------------------------------------------*/ /* Component Access Functions */ /*---------------------------------------------------------------------------------*/ @@ -42,6 +72,12 @@ namespace SHADE return owner.GetComponentInChildren(); } + generic + System::Collections::Generic::IEnumerable^ Script::GetComponentsInChildren() + { + return owner.GetComponentsInChildren(); + } + generic T Script::EnsureComponent() { @@ -72,6 +108,11 @@ namespace SHADE { return ScriptStore::GetScriptInChildren(owner.GetEntity()); } + generic + System::Collections::Generic::IEnumerable^ Script::GetScriptsInChildren() + { + return ScriptStore::GetScriptsInChildren(owner.GetEntity()); + } generic System::Collections::Generic::IEnumerable^ Script::GetScripts() @@ -93,6 +134,10 @@ namespace SHADE /*---------------------------------------------------------------------------------*/ /* "All-time" Lifecycle Functions */ /*---------------------------------------------------------------------------------*/ + void Script::Initialize(SHADE::GameObject newOwner) + { + owner = newOwner; + } void Script::OnAttached() { SAFE_NATIVE_CALL_BEGIN @@ -115,6 +160,12 @@ namespace SHADE awake(); SAFE_NATIVE_CALL_END(this) } + void Script::OnEnable() + { + SAFE_NATIVE_CALL_BEGIN + onEnable(); + SAFE_NATIVE_CALL_END(this) + } void Script::Start() { SAFE_NATIVE_CALL_BEGIN @@ -146,6 +197,12 @@ namespace SHADE onDrawGizmos(); SAFE_NATIVE_CALL_END(this) } + void Script::OnDisable() + { + SAFE_NATIVE_CALL_BEGIN + onDisable(); + SAFE_NATIVE_CALL_END(this) + } void Script::OnDestroy() { SAFE_NATIVE_CALL_BEGIN @@ -198,10 +255,17 @@ namespace SHADE /*---------------------------------------------------------------------------------*/ /* Constructors */ /*---------------------------------------------------------------------------------*/ - Script::Script(GameObject gameObj) - : owner { gameObj } - , OnGizmosDrawOverriden { false } + Script::Script() + : OnGizmosDrawOverriden { false } {} + + /*---------------------------------------------------------------------------------*/ + /* Manipulation Functions */ + /*---------------------------------------------------------------------------------*/ + void Script::SetEnabledWithoutEvents(bool enable) + { + enabled = enable; + } /*---------------------------------------------------------------------------------*/ /* Virtual "All-Time" Lifecycle Functions */ @@ -213,6 +277,7 @@ namespace SHADE /* Virtual Lifecycle Functions */ /*---------------------------------------------------------------------------------*/ void Script::awake() {} + void Script::onEnable() {} void Script::start() {} void Script::fixedUpdate() {} void Script::update() {} @@ -221,6 +286,7 @@ namespace SHADE { OnGizmosDrawOverriden = false; } + void Script::onDisable() {} void Script::onDestroy() {} /*---------------------------------------------------------------------------------*/ diff --git a/SHADE_Managed/src/Scripts/Script.hxx b/SHADE_Managed/src/Scripts/Script.hxx index bbe36784..8fc36544 100644 --- a/SHADE_Managed/src/Scripts/Script.hxx +++ b/SHADE_Managed/src/Scripts/Script.hxx @@ -38,11 +38,28 @@ namespace SHADE /* Properties */ /*-----------------------------------------------------------------------------*/ /// + /// GameObject that this Script belongs to. This is a legacy interface, use + /// GameObject instead. + /// + [System::ObsoleteAttribute("Use GameObject instead.", false)] + property SHADE::GameObject Owner + { + SHADE::GameObject get(); + } + /// /// GameObject that this Script belongs to. /// - property GameObject Owner + property SHADE::GameObject GameObject { - GameObject get() { return owner; } + SHADE::GameObject get(); + } + /// + /// Whether or not this Script should have it's update functions be executed. + /// + property bool Enabled + { + bool get(); + void set(bool value); } /*-----------------------------------------------------------------------------*/ @@ -69,6 +86,7 @@ namespace SHADE /// /// Retrieves the first Component from this GameObject's children that matches /// the specified type. + /// Unlike Unity, we do not search this GameObject, only the children. /// /// /// Type of the Component to get. Must be derived from BaseComponent. @@ -77,6 +95,19 @@ namespace SHADE generic where T : BaseComponent T GetComponentInChildren(); /// + /// Retrieves a list of Components from this GameObject's children that + /// matches the specified type. + /// This function performs allocations. If expecting only 1 component, use + /// GetComponentInChildren() instead. + /// Unlike Unity, we do not search this GameObject, only the children. + /// + /// Type of the Component to get. + /// + /// Newly allocated List of components. Will be null if no components are found. + /// + generic where T : BaseComponent + System::Collections::Generic::IEnumerable^ GetComponentsInChildren(); + /// /// Ensures a Component on the GameObject that this Script belongs to. /// /// @@ -113,7 +144,7 @@ namespace SHADE ///
/// /// Type of script to get. - /// This needs to be a default constructable Script. + /// This needs to be a default constructible Script. /// /// Reference to the script added generic where T : ref class, Script @@ -121,6 +152,7 @@ namespace SHADE /// /// Retrieves the first Script from this GameObject's children that matches the /// specified type. + /// Unlike Unity, we do not search this GameObject, only the children. /// /// /// Type of script to get. @@ -130,6 +162,19 @@ namespace SHADE generic where T : ref class, Script T GetScriptInChildren(); /// + /// Retrieves a list of Scripts from this GameObject's children that matches + /// the specified type. + /// This function performs allocations. If expecting only 1 component, use + /// GetComponentInChildren() instead. + /// Unlike Unity, we do not search this GameObject, only the children. + /// + /// Type of the Component to get. + /// + /// Newly allocated List of components. Will be null if no components are found. + /// + generic where T : ref class, Script + System::Collections::Generic::IEnumerable^ GetScriptsInChildren(); + /// /// Retrieves a immutable list of scripts from the specified Entity that /// matches the specified type. ///
@@ -165,7 +210,7 @@ namespace SHADE internal: /*-----------------------------------------------------------------------------*/ - /* Properties */ + /* Fields */ /*-----------------------------------------------------------------------------*/ /// /// If true, the OnGizmosDraw function was overridden. @@ -176,6 +221,10 @@ namespace SHADE /* "All-Time" Lifecycle Functions */ /*-----------------------------------------------------------------------------*/ /// + /// Used to initialize a Script with a GameObject. + /// + void Initialize(SHADE::GameObject newOwner); + /// /// Used to call onAttached(). This is called immediately when this script is /// attached to a GameObject. /// @@ -200,6 +249,11 @@ namespace SHADE /// void Start(); /// + /// Used to call onEnable. This should be called right when a script is enabled + /// directly. + /// + void OnEnable(); + /// /// Used to call fixedUpdate(). This should be called in sync with Physics /// update steps and thus in most cases will execute more than Update() will. /// This will be called immediately before a Physics update step. @@ -221,6 +275,11 @@ namespace SHADE /// void OnDrawGizmos(); /// + /// Used to call onDisable. This should be called right when a script is disabled + /// directly. + /// + void OnDisable(); + /// /// Used to call onDestroy(). This should be called at the end of the frame /// where the attached GameObject or this script is destroyed directly or /// indirectly due to destruction of the owner. @@ -267,18 +326,23 @@ namespace SHADE /// Information on the collision event. void OnTriggerExit(CollisionInfo collision); + /*-----------------------------------------------------------------------------*/ + /* Manipulation Functions */ + /*-----------------------------------------------------------------------------*/ + /// + /// Function to set the enabled state of this script without triggering events. + /// + /// Whether to enable or disable the script. + void SetEnabledWithoutEvents(bool enable); + protected: /*-----------------------------------------------------------------------------*/ /* Constructors */ /*-----------------------------------------------------------------------------*/ /// - /// Constructor for Script to tie it to a specific GameObject. - /// Constructors of derived Scripts should call this Constructor. + /// Default Constructor /// - /// - /// GameObject that this Script will be tied to. - /// - Script(GameObject gameObj); + Script(); /*-----------------------------------------------------------------------------*/ /* Virtual "All-Time" Lifecycle Functions */ @@ -301,6 +365,10 @@ namespace SHADE /// virtual void awake(); /// + /// Called when this script is enabled. + /// + virtual void onEnable(); + /// /// Called on the first frame that the attached GameObject is active but always /// after Awake(). /// @@ -325,6 +393,10 @@ namespace SHADE ///
virtual void onDrawGizmos(); /// + /// Called when this script is disabled. + /// + virtual void onDisable(); + /// /// Called just before the end of the frame where the attached GameObject or /// this script is destroyed directly or indirectly due to destruction of the /// owner. @@ -375,7 +447,8 @@ namespace SHADE /*-----------------------------------------------------------------------------*/ /* Data Members */ /*-----------------------------------------------------------------------------*/ - GameObject owner; + SHADE::GameObject owner; + bool enabled = true; }; } diff --git a/SHADE_Managed/src/Scripts/ScriptStore.cxx b/SHADE_Managed/src/Scripts/ScriptStore.cxx index a90b4f12..d3d989cc 100644 --- a/SHADE_Managed/src/Scripts/ScriptStore.cxx +++ b/SHADE_Managed/src/Scripts/ScriptStore.cxx @@ -20,16 +20,17 @@ of DigiPen Institute of Technology is prohibited. #include // External Dependencies #include "ECS_Base/Managers/SHEntityManager.h" -#include "Tools/SHLog.h" +#include "Tools/Logger/SHLog.h" // Project Headers #include "Utility/Debug.hxx" #include "Utility/Convert.hxx" #include "Script.hxx" #include "Engine/Entity.hxx" -#include "Serialisation/ReflectionUtilities.hxx" +#include "Serialisation/SerialisationUtilities.hxx" #include "Engine/Application.hxx" -#include "Physics/SHPhysicsSystemInterface.h" -#include "Physics/SHPhysicsUtils.h" +#include "Physics/System/SHPhysicsSystemInterface.h" +#include "Physics/SHPhysicsEvents.h" +#include "Physics/Collision/SHCollisionInfo.h" namespace SHADE { @@ -38,6 +39,19 @@ namespace SHADE /*---------------------------------------------------------------------------------*/ generic T ScriptStore::AddScript(Entity entity) + { + // Create the script and add it in + Script^ script = safe_cast(System::Activator::CreateInstance(T::typeid)); + + return safe_cast(AddScript(entity, script)); + } + + Script^ ScriptStore::AddScript(Entity entity, Script^ script) + { + return AddScript(entity, script, System::Int32::MaxValue); + } + + Script^ ScriptStore::AddScript(Entity entity, Script^ script, int index) { // Check if entity exists if (!EntityUtils::IsValid(entity)) @@ -57,15 +71,22 @@ namespace SHADE entityScriptList = scripts[entity]; } - // Create the script and add it in - array^ params = gcnew array{GameObject(entity)}; - Script^ script = safe_cast(System::Activator::CreateInstance(T::typeid, params)); - entityScriptList->Add(script); - awakeList.Add(script); - startList.Add(script); + // Add the script in + script->Initialize(GameObject(entity)); + entityScriptList->Insert(System::Math::Clamp(index, 0, entityScriptList->Count), script); + if (Application::IsPlaying) + { + script->Awake(); + script->Start(); + } + else + { + awakeList.Add(script); + startList.Add(script); + } script->OnAttached(); - return safe_cast(script); + return script; } bool ScriptStore::AddScriptViaName(Entity entity, System::String^ scriptName) @@ -110,6 +131,7 @@ namespace SHADE std::ostringstream oss; oss << "[ScriptStore] Failed to add Script named \"" << Convert::ToNative(scriptName) << "\" to Entity #" << entity << "! (" << Convert::ToNative(e->GetType()->Name) << ")"; + oss << Convert::ToNative(e->ToString()); Debug::LogError(oss.str()); return false; } @@ -189,6 +211,70 @@ namespace SHADE return T(); } + generic + System::Collections::Generic::IEnumerable^ ScriptStore::GetScriptsInChildren(Entity entity) + { + System::Type^ componentType = T::typeid; + + // Check if entity is correct + if (!SHEntityManager::IsValidEID(entity)) + { + std::ostringstream oss; + oss << "[ScriptStore] Attempted to retrieve Script \"" + << Convert::ToNative(componentType->Name) + << "\" from invalid Entity."; + Debug::LogError(oss.str()); + return nullptr; + } + + // Search all elements via a iterative breadth first search + System::Collections::Generic::List^ results; + System::Collections::Generic::Queue^ searchSpace = gcnew System::Collections::Generic::Queue(); + // Start off with direct children + SHSceneNode* entityNode = SHSceneManager::GetCurrentSceneGraph().GetNode(entity); + if (entityNode == nullptr) + { + std::ostringstream oss; + oss << "[ScriptStore] Failed to retrieve SceneGraphNode of entity #" << entity << ". This should not happen!"; + SHLog::Warning(oss.str()); + } + for (const auto& child : entityNode->GetChildren()) + { + searchSpace->Enqueue(child->GetEntityID()); + } + // Continue with all subsequent children + while (searchSpace->Count > 0) + { + // Check if this entity has the component we need + Entity curr = searchSpace->Dequeue(); + T script = GetScript(curr); + if (script != nullptr) + { + // We only construct if we need to + if (results == nullptr) + results = gcnew System::Collections::Generic::List(); + results->Add(script); + } + + // Add children to the queue + SHSceneNode* sceneGraphNode = SHSceneManager::GetCurrentSceneGraph().GetNode(curr); + if (sceneGraphNode == nullptr) + { + std::ostringstream oss; + oss << "[ScriptStore] Failed to retrieve SceneGraphNode of entity #" << entity << ". This should not happen!"; + SHLog::Warning(oss.str()); + continue; + } + for (const auto& child : sceneGraphNode->GetChildren()) + { + searchSpace->Enqueue(child->GetEntityID()); + } + } + + // None here + return results; + } + generic System::Collections::Generic::IEnumerable^ ScriptStore::GetScripts(Entity entity) { @@ -316,8 +402,8 @@ namespace SHADE System::Collections::Generic::List^ scriptList = scripts[entity]; for each (Script ^ script in scriptList) { - // Call OnDestroy only if indicated and also in play mode - if (callOnDestroy) + // Call OnDestroy only if indicated and also if the game has run + if (callOnDestroy && Application::IsPlaying || Application::IsPaused) { script->OnDestroy(); } @@ -364,7 +450,10 @@ namespace SHADE } } startList.Clear(); - startList.AddRange(%inactiveStartList); + for each (Script ^ script in startList) + { + startList.Add(script); + } inactiveStartList.Clear(); SAFE_NATIVE_CALL_END_N("SHADE_Managed.ScriptStore") @@ -373,21 +462,21 @@ namespace SHADE { SAFE_NATIVE_CALL_BEGIN // Clear the queue - while (disposalQueue.Count > 0) - { - Script^ script = disposalQueue.Dequeue(); + for each (Script^ script in disposalQueue) + {; if (Application::IsPlaying) { script->OnDestroy(); } auto entity = script->Owner.GetEntity(); - auto scriptList = scripts[script->Owner.GetEntity()]; + auto scriptList = scripts[script->Owner.GetEntity()]; // Unable to find here scriptList->Remove(script); if (scriptList->Count <= 0) { scripts.Remove(entity); } } + disposalQueue.Clear(); SAFE_NATIVE_CALL_END_N("SHADE_Managed.ScriptStore") } void ScriptStore::Exit() @@ -436,9 +525,11 @@ namespace SHADE continue; // Update each script - for each (Script^ script in entity.Value) + ScriptList^ scripts = entity.Value; + for (int i = 0; i < scripts->Count; ++i) { - script->FixedUpdate(); + if (scripts[i]->Enabled) + scripts[i]->FixedUpdate(); } } SAFE_NATIVE_CALL_END_N("SHADE_Managed.ScriptStore") @@ -453,9 +544,11 @@ namespace SHADE continue; // Update each script - for each (Script^ script in entity.Value) + ScriptList^ scripts = entity.Value; + for (int i = 0; i < scripts->Count; ++i) { - script->Update(); + if (scripts[i]->Enabled) + scripts[i]->Update(); } } SAFE_NATIVE_CALL_END_N("SHADE_Managed.ScriptStore") @@ -470,9 +563,11 @@ namespace SHADE continue; // Update each script - for each (Script^ script in entity.Value) + ScriptList^ scripts = entity.Value; + for (int i = 0; i < scripts->Count; ++i) { - script->LateUpdate(); + if (scripts[i]->Enabled) + scripts[i]->LateUpdate(); } } SAFE_NATIVE_CALL_END_N("SHADE_Managed.ScriptStore") @@ -488,9 +583,11 @@ namespace SHADE continue; // Update each script - for each (Script^ script in entity.Value) + ScriptList^ scripts = entity.Value; + for (int i = 0; i < scripts->Count; ++i) { - script->OnDrawGizmos(); + if (scripts[i]->Enabled) + scripts[i]->OnDrawGizmos(); } } SAFE_NATIVE_CALL_END_N("SHADE_Managed.ScriptStore") @@ -522,17 +619,18 @@ namespace SHADE auto entityScripts = scripts[entity.first]; if (entityScripts->Count > 0) { - for each (Script ^ script in entityScripts) + for (int i = 0; i < entityScripts->Count; ++i) { + Script^ script = entityScripts[i]; switch (collisionInfo.GetCollisionState()) { - case SHCollisionEvent::State::ENTER: + case SHCollisionInfo::State::ENTER: script->OnCollisionEnter(info); break; - case SHCollisionEvent::State::STAY: + case SHCollisionInfo::State::STAY: script->OnCollisionStay(info); break; - case SHCollisionEvent::State::EXIT: + case SHCollisionInfo::State::EXIT: script->OnCollisionExit(info); break; } @@ -563,17 +661,18 @@ namespace SHADE auto entityScripts = scripts[entity.first]; if (entityScripts->Count > 0) { - for each (Script ^ script in entityScripts) + for (int i = 0; i < entityScripts->Count; ++i) { + Script^ script = entityScripts[i]; switch (triggerInfo.GetCollisionState()) { - case SHCollisionEvent::State::ENTER: + case SHCollisionInfo::State::ENTER: script->OnTriggerEnter(info); break; - case SHCollisionEvent::State::STAY: + case SHCollisionInfo::State::STAY: script->OnTriggerStay(info); break; - case SHCollisionEvent::State::EXIT: + case SHCollisionInfo::State::EXIT: script->OnTriggerExit(info); break; } @@ -613,7 +712,7 @@ namespace SHADE System::Collections::Generic::List^ scriptList = scripts[entity]; for each (Script^ script in scriptList) { - ReflectionUtilities::Serialise(script, *yamlNode); + SerialisationUtilities::Serialise(script, *yamlNode); } return true; @@ -645,7 +744,7 @@ namespace SHADE for (YAML::Node& node : *yamlNode) { // Get the name of the script - if (!node["Type"]) + if (!node["Type"].IsDefined()) { Debug::LogWarning("[ScriptStore] Script with no type detected, skipping."); continue; @@ -658,7 +757,7 @@ namespace SHADE if (AddScriptViaNameWithRef(entity, typeName, script)) { // Copy the data in - ReflectionUtilities::Deserialise(script, node); + SerialisationUtilities::Deserialise(script, node); } else { @@ -677,9 +776,9 @@ namespace SHADE void ScriptStore::removeScript(Script^ script) { // Prepare for disposal - disposalQueue.Enqueue(script); + disposalQueue.Add(script); - // Also remove it fromm awake and start queues if they were created but not initialised + // Also remove it from awake and start queues if they were created but not initialised awakeList.Remove(script); startList.Remove(script); script->OnDetached(); @@ -749,7 +848,8 @@ namespace SHADE void ScriptStore::getGenericMethods() { - addScriptMethod = ScriptStore::typeid->GetMethod("AddScript"); + array^ paramTypes = gcnew array{ Entity::typeid }; + addScriptMethod = ScriptStore::typeid->GetMethod("AddScript", paramTypes); if (addScriptMethod == nullptr) { Debug::LogError("[ScriptStore] Failed to get MethodInfo of \"AddScript()\". Adding of scripts from native code will fail."); diff --git a/SHADE_Managed/src/Scripts/ScriptStore.hxx b/SHADE_Managed/src/Scripts/ScriptStore.hxx index 23440f3d..78f8c787 100644 --- a/SHADE_Managed/src/Scripts/ScriptStore.hxx +++ b/SHADE_Managed/src/Scripts/ScriptStore.hxx @@ -25,7 +25,7 @@ namespace SHADE /// Responsible for managing all scripts attached to Entities as well as executing /// all lifecycle functions of scripts. /// - public ref class ScriptStore abstract sealed + private ref class ScriptStore abstract sealed { public: /*-----------------------------------------------------------------------------*/ @@ -46,6 +46,27 @@ namespace SHADE generic where T : ref class, Script static T AddScript(Entity entity); /// + /// Adds a specified pre-constructed Script to a specified Entity. + /// + /// The entity to add a script to. + /// The pre-constructed Script to add. + /// Reference to the script added. + /// + /// If the specified Entity is invalid. + /// + static Script^ AddScript(Entity entity, Script^ script); + /// + /// Adds a specified pre-constructed Script to a specified Entity. + /// + /// The entity to add a script to. + /// The pre-constructed Script to add. + /// Location in the script list to add. + /// Reference to the script added. + /// + /// If the specified Entity is invalid. + /// + static Script^ AddScript(Entity entity, Script^ script, int index); + /// /// Adds a Script to a specified Entity. ///
/// This function is meant for consumption from native code. If you are writing @@ -116,6 +137,29 @@ namespace SHADE generic where T : ref class, Script static T GetScriptInChildren(Entity entity); /// + /// Retrieves the list of Scripts from the specified Entity and the Entity's + /// children that matches the specified type. + /// This function performs allocations. If expecting only 1 component, use + /// GetScriptInChildren() instead. + /// This does not search the specified entity. + /// + /// + /// Type of script to get. + /// This needs to be a default constructable Script. + /// + /// + /// The entity which the script to retrieve is attached. + /// + /// + /// Reference to the script. This can be null if no script of the specified + /// type is attached. + /// + /// + /// If the specified Entity is invalid. + /// + generic where T : ref class, Script + static System::Collections::Generic::IEnumerable^ GetScriptsInChildren(Entity entity); + /// /// Retrieves a immutable list of scripts from the specified Entity that /// matches the specified type. ///
@@ -281,16 +325,16 @@ namespace SHADE /*-----------------------------------------------------------------------------*/ using ScriptList = System::Collections::Generic::List; using ScriptDictionary = System::Collections::Generic::Dictionary; - using ScriptQueue = System::Collections::Generic::Queue; + using ScriptSet = System::Collections::Generic::HashSet; /*-----------------------------------------------------------------------------*/ /* Static Data Members */ /*-----------------------------------------------------------------------------*/ static ScriptDictionary scripts; - static ScriptList awakeList; - static ScriptList startList; - static ScriptList inactiveStartList; - static ScriptQueue disposalQueue; + static ScriptSet awakeList; + static ScriptSet startList; + static ScriptSet inactiveStartList; + static ScriptSet disposalQueue; static System::Collections::Generic::IEnumerable^ scriptTypeList; static System::Reflection::MethodInfo^ addScriptMethod; diff --git a/SHADE_Managed/src/Serialisation/ReflectionUtilities.cxx b/SHADE_Managed/src/Serialisation/ReflectionUtilities.cxx index 651afb73..f371686c 100644 --- a/SHADE_Managed/src/Serialisation/ReflectionUtilities.cxx +++ b/SHADE_Managed/src/Serialisation/ReflectionUtilities.cxx @@ -18,31 +18,6 @@ of DigiPen Institute of Technology is prohibited. #include "Serialisation/ReflectionUtilities.hxx" // Project Includes #include "SerializeFieldAttribute.hxx" -#include "Utility/Convert.hxx" -#include "Math/Vector2.hxx" -#include "Math/Vector3.hxx" -#include "Utility/Debug.hxx" -#include "Engine/GameObject.hxx" - -/*-------------------------------------------------------------------------------------*/ -/* Macro Functions */ -/*-------------------------------------------------------------------------------------*/ -/// -/// Macro expansion that is used in RapidJsonValueToField() to retrieve the specified -/// member of a Vector type that is stored into a Vector named "vec". -/// -/// The name of the member to retrieve. -#define PRIMITIVE_VECTOR_FIELD_ASSIGN(MEMBER) \ -iter = jsonValue.FindMember(#MEMBER); \ -if (iter != jsonValue.MemberEnd()) \ -{ \ - vec.MEMBER = iter->value.GetDouble(); \ -} \ - -/*-------------------------------------------------------------------------------------*/ -/* File-Level Constants */ -/*-------------------------------------------------------------------------------------*/ -static const std::string_view SCRIPT_TYPE_YAMLTAG = "Type"; /*-------------------------------------------------------------------------------------*/ /* Function Definitions */ @@ -64,202 +39,14 @@ namespace SHADE return fieldInfo->IsPublic || fieldInfo->GetCustomAttributes(SerializeField::typeid, true)->Length > 0; } - /*---------------------------------------------------------------------------------*/ - /* Serialisation Functions */ - /*---------------------------------------------------------------------------------*/ - void ReflectionUtilities::Serialise(System::Object^ object, YAML::Node& scriptListNode) + bool ReflectionUtilities::FieldIsList(System::Reflection::FieldInfo^ fieldInfo) { - using namespace System::Reflection; - - // Create YAML object - YAML::Node scriptNode; - scriptNode.SetStyle(YAML::EmitterStyle::Block); - scriptNode[SCRIPT_TYPE_YAMLTAG.data()] = Convert::ToNative(object->GetType()->FullName); - - // Get all fields - System::Collections::Generic::IEnumerable^ fields = GetInstanceFields(object); - for each (FieldInfo^ field in fields) - { - // Ignore private and non-SerialiseField - if (!FieldIsSerialisable(field)) - continue; - - // Serialise - writeFieldIntoYaml(field, object, scriptNode); - } - - scriptListNode.push_back(scriptNode); - } - void ReflectionUtilities::Deserialise(Object^ object, YAML::Node& yamlNode) - { - using namespace System::Reflection; - - // Load the YAML - if (!yamlNode.IsMap()) - { - // Invalid - Debug::LogError - ( - System::String::Format("[ReflectionUtilities] Invalid YAML Node provided for deserialization of \"{0}\" script.", - object->GetType()->FullName) - ); - return; - } - // Get all fields - System::Collections::Generic::IEnumerable^ fields = GetInstanceFields(object); - for each (FieldInfo^ field in fields) - { - // Ignore private and non-SerialiseField - if (!FieldIsSerialisable(field)) - continue; - - // Deserialise - const std::string FIELD_NAME = Convert::ToNative(field->Name); - if (yamlNode[FIELD_NAME]) - { - writeYamlIntoField(field, object, yamlNode[FIELD_NAME]); - } - } - } - /*---------------------------------------------------------------------------------*/ - /* Serialization Helper Functions */ - /*---------------------------------------------------------------------------------*/ - void ReflectionUtilities::writeFieldIntoYaml(System::Reflection::FieldInfo^ fieldInfo, Object^ object, YAML::Node& yamlNode) - { - // Field YAML Node - YAML::Node fieldNode; - - // Retrieve string for the YAML - const bool PRIMITIVE_SERIALIZED = fieldInsertYaml(fieldInfo, object, fieldNode) || - fieldInsertYaml(fieldInfo, object, fieldNode) || - fieldInsertYaml(fieldInfo, object, fieldNode) || - fieldInsertYaml(fieldInfo, object, fieldNode) || - fieldInsertYaml(fieldInfo, object, fieldNode) || - fieldInsertYaml(fieldInfo, object, fieldNode) || - fieldInsertYaml(fieldInfo, object, fieldNode) || - fieldInsertYaml(fieldInfo, object, fieldNode) || - fieldInsertYaml(fieldInfo, object, fieldNode) || - fieldInsertYaml(fieldInfo, object, fieldNode); - - // Serialization of more complex types - if (!PRIMITIVE_SERIALIZED) - { - if (fieldInfo->FieldType->IsSubclassOf(System::Enum::typeid)) - { - fieldNode = std::to_string(safe_cast(fieldInfo->GetValue(object))); - } - else if (fieldInfo->FieldType == System::String::typeid) - { - System::String^ str = safe_cast(fieldInfo->GetValue(object)); - fieldNode = Convert::ToNative(str); - } - else if (fieldInfo->FieldType == Vector2::typeid) - { - Vector2 vec = safe_cast(fieldInfo->GetValue(object)); - fieldNode.SetStyle(YAML::EmitterStyle::Flow); - fieldNode.push_back(vec.x); - fieldNode.push_back(vec.y); - } - else if (fieldInfo->FieldType == Vector3::typeid) - { - Vector3 vec = safe_cast(fieldInfo->GetValue(object)); - fieldNode.SetStyle(YAML::EmitterStyle::Flow); - fieldNode.push_back(vec.x); - fieldNode.push_back(vec.y); - fieldNode.push_back(vec.z); - } - else if (fieldInfo->FieldType == GameObject::typeid) - { - GameObject gameObj = safe_cast(fieldInfo->GetValue(object)); - fieldNode = gameObj ? gameObj.GetEntity() : MAX_EID; - } - else // Not any of the supported types - { - Debug::LogWarning(Convert::ToNative(System::String::Format - ( - "[ReflectionUtilities] Failed to parse \"{0}\" of \"{1}\" type for serialization.", - fieldInfo->Name, fieldInfo->FieldType) - )); - return; - } - } - - // Store the field into YAML - yamlNode[Convert::ToNative(fieldInfo->Name)] = fieldNode; + return IsList(fieldInfo->FieldType); } - void ReflectionUtilities::writeYamlIntoField(System::Reflection::FieldInfo^ fieldInfo, Object^ object, YAML::Node& node) + bool ReflectionUtilities::IsList(System::Type^ type) { - if (fieldAssignYaml (fieldInfo, object, node) || - fieldAssignYaml (fieldInfo, object, node) || - fieldAssignYaml (fieldInfo, object, node) || - fieldAssignYaml(fieldInfo, object, node) || - fieldAssignYaml(fieldInfo, object, node) || - fieldAssignYaml(fieldInfo, object, node) || - fieldAssignYaml (fieldInfo, object, node) || - fieldAssignYaml (fieldInfo, object, node) || - fieldAssignYaml (fieldInfo, object, node) || - fieldAssignYaml (fieldInfo, object, node)) - { - return; - } - else if (fieldInfo->FieldType->IsSubclassOf(System::Enum::typeid)) - { - fieldInfo->SetValue(object, node.as()); - } - else if (fieldInfo->FieldType == System::String::typeid) - { - fieldInfo->SetValue(object, Convert::ToCLI(node.as())); - } - else if (fieldInfo->FieldType == Vector2::typeid) - { - if (node.IsSequence() && node.size() == 2) - { - Vector2 vec; - vec.x = node[0].as(); - vec.y = node[1].as(); - fieldInfo->SetValue(object, vec); - } - else - { - Debug::LogWarning - ( - System::String::Format("[ReflectionUtilities] Invalid YAML Node provided for deserialization of a Vector2 \"{0}\" field in \"{1}\" script.", - fieldInfo->Name, object->GetType()->FullName) - ); - } - } - else if (fieldInfo->FieldType == Vector3::typeid) - { - if (node.IsSequence() && node.size() == 3) - { - Vector3 vec; - vec.x = node[0].as(); - vec.y = node[1].as(); - vec.z = node[2].as(); - fieldInfo->SetValue(object, vec); - } - else - { - Debug::LogWarning - ( - System::String::Format("[ReflectionUtilities] Invalid YAML Node provided for deserialization of a Vector3 \"{0}\" field in \"{1}\" script.", - fieldInfo->Name, object->GetType()->FullName) - ); - } - } - else if (fieldInfo->FieldType == GameObject::typeid) - { - const uint32_t EID = node.as(); - fieldInfo->SetValue(object, EID == MAX_EID ? GameObject() : GameObject(EID)); - } - else // Not any of the supported types - { - Debug::LogWarning(Convert::ToNative(System::String::Format - ( - "[ReflectionUtilities] Failed to parse \"{0}\" of \"{1}\" type for deserialisation.", - fieldInfo->Name, fieldInfo->FieldType) - )); - } + return type->IsGenericType + && type->GetGenericTypeDefinition() == System::Collections::Generic::List::typeid->GetGenericTypeDefinition(); } } diff --git a/SHADE_Managed/src/Serialisation/ReflectionUtilities.h++ b/SHADE_Managed/src/Serialisation/ReflectionUtilities.h++ deleted file mode 100644 index 7c39232a..00000000 --- a/SHADE_Managed/src/Serialisation/ReflectionUtilities.h++ +++ /dev/null @@ -1,55 +0,0 @@ -/************************************************************************************//*! -\file ReflectionUtilities.h++ -\author Tng Kah Wei, kahwei.tng, 390009620 -\par email: kahwei.tng\@digipen.edu -\date Sep 16, 2022 -\brief Contains the definition of the template functions of the managed - ReflectionUtilities static class. - - Note: This file is written in C++17/CLI. - -Copyright (C) 2022 DigiPen Institute of Technology. -Reproduction or disclosure of this file or its contents without the prior written consent -of DigiPen Institute of Technology is prohibited. -*//*************************************************************************************/ -#pragma once - -// Primary Header -#include "ReflectionUtilities.hxx" - -namespace SHADE -{ - /*---------------------------------------------------------------------------------*/ - /* Serialization Helper Functions */ - /*---------------------------------------------------------------------------------*/ - template - bool ReflectionUtilities::fieldInsertYaml(System::Reflection::FieldInfo^ fieldInfo, System::Object^ object, YAML::Node& fieldNode) - { - if (fieldInfo->FieldType == FieldType::typeid) - { - const FieldType VALUE = safe_cast(fieldInfo->GetValue(object)); - fieldNode = static_cast(VALUE); - return true; - } - - return false; - } - - template - bool ReflectionUtilities::fieldAssignYaml(System::Reflection::FieldInfo^ fieldInfo, Object^ object, YAML::Node& node) - { - return fieldAssignYaml>(fieldInfo, object, node); - } - - template - bool ReflectionUtilities::fieldAssignYaml(System::Reflection::FieldInfo^ fieldInfo, Object^ object, YAML::Node& node) - { - if (fieldInfo->FieldType == FieldType::typeid) - { - fieldInfo->SetValue(object, node.as()); - return true; - } - - return false; - } -} diff --git a/SHADE_Managed/src/Serialisation/ReflectionUtilities.hxx b/SHADE_Managed/src/Serialisation/ReflectionUtilities.hxx index 403c913c..ae66cc34 100644 --- a/SHADE_Managed/src/Serialisation/ReflectionUtilities.hxx +++ b/SHADE_Managed/src/Serialisation/ReflectionUtilities.hxx @@ -13,9 +13,6 @@ of DigiPen Institute of Technology is prohibited. *//*************************************************************************************/ #pragma once -// External Dependencies -#include - namespace SHADE { /// @@ -42,40 +39,17 @@ namespace SHADE /// True if the specified field is a candidate for serialisation. /// static bool FieldIsSerialisable(System::Reflection::FieldInfo^ fieldInfo); - - /*-----------------------------------------------------------------------------*/ - /* Serialisation Functions */ - /*-----------------------------------------------------------------------------*/ /// - /// Creates a JSON node that represents the specified object and its associated - /// serialisable fields. Public fields and fields marked with the SerialiseField - /// attribute will be serialised. + /// Checks if the specified field is a generic List. /// - /// The object to serialise. - static void Serialise(System::Object^ object, YAML::Node& yamlNode); + /// The field to check. + /// True if fieldInfo is describing a generic List. + static bool FieldIsList(System::Reflection::FieldInfo^ fieldInfo); /// - /// Deserialises a YAML node that contains a map of Scripts and copies the - /// deserialised data into the specified object if there are matching fields. + /// Checks if the specified type is a generic List type. /// - /// - /// The JSON string that contains the data to copy into this Script object. - /// - /// The object to copy deserialised data into. - static void Deserialise(System::Object^ object, YAML::Node& yamlNode); - - private: - /*-----------------------------------------------------------------------------*/ - /* Serialization Helper Functions */ - /*-----------------------------------------------------------------------------*/ - static void writeFieldIntoYaml(System::Reflection::FieldInfo^ fieldInfo, Object^ object, YAML::Node& yamlNode); - template - static bool fieldInsertYaml(System::Reflection::FieldInfo^ fieldInfo, System::Object^ object, YAML::Node& fieldNode); - static void writeYamlIntoField(System::Reflection::FieldInfo^ fieldInfo, Object^ object, YAML::Node& node); - template - static bool fieldAssignYaml(System::Reflection::FieldInfo^ fieldInfo, Object^ object, YAML::Node& node); - template - static bool fieldAssignYaml(System::Reflection::FieldInfo^ fieldInfo, Object^ object, YAML::Node& node); + /// The type to check. + /// True if type is a generic List. + static bool IsList(System::Type^ type); }; -} - -#include "ReflectionUtilities.h++" \ No newline at end of file +} \ No newline at end of file diff --git a/SHADE_Managed/src/Serialisation/SerialisationUtilities.cxx b/SHADE_Managed/src/Serialisation/SerialisationUtilities.cxx new file mode 100644 index 00000000..2bf05bc5 --- /dev/null +++ b/SHADE_Managed/src/Serialisation/SerialisationUtilities.cxx @@ -0,0 +1,324 @@ +/************************************************************************************//*! +\file SerialisationUtilities.cxx +\author Tng Kah Wei, kahwei.tng, 390009620 +\par email: kahwei.tng\@digipen.edu +\date Nov 6, 2021 +\brief Contains the definition of the functions for the SerialisationUtilities + managed static class. + + Note: This file is written in C++17/CLI. + +Copyright (C) 2021 DigiPen Institute of Technology. +Reproduction or disclosure of this file or its contents without the prior written consent +of DigiPen Institute of Technology is prohibited. +*//*************************************************************************************/ +// Precompiled Headers +#include "SHpch.h" +// Primary Header +#include "Serialisation/SerialisationUtilities.hxx" +// Project Includes +#include "ReflectionUtilities.hxx" +#include "Assets/FontAsset.hxx" +#include "Assets/MaterialAsset.hxx" +#include "Assets/MeshAsset.hxx" +#include "Scripts/Script.hxx" + +/*-------------------------------------------------------------------------------------*/ +/* File-Level Constants */ +/*-------------------------------------------------------------------------------------*/ +static const std::string_view SCRIPT_TYPE_YAMLTAG = "Type"; +static const std::string_view SCRIPT_ENABLED_YAMLTAG = "Enabled"; + +/*-------------------------------------------------------------------------------------*/ +/* Function Definitions */ +/*-------------------------------------------------------------------------------------*/ +namespace SHADE +{ + /*---------------------------------------------------------------------------------*/ + /* Serialisation Functions */ + /*---------------------------------------------------------------------------------*/ + void SerialisationUtilities::Serialise(System::Object^ object, YAML::Node& scriptListNode) + { + using namespace System::Reflection; + + // Obtain script + Script^ script = safe_cast(object); + if (script == nullptr) + { + Debug::LogWarning("[SerialisationUtilities] Attempted to serialise an object that is not a script!"); + return; + } + + // Create YAML object + YAML::Node scriptNode; + scriptNode.SetStyle(YAML::EmitterStyle::Block); + scriptNode[SCRIPT_TYPE_YAMLTAG.data()] = Convert::ToNative(object->GetType()->FullName); + scriptNode[SCRIPT_ENABLED_YAMLTAG.data()] = script->Enabled; + + // Get all fields + System::Collections::Generic::IEnumerable^ fields = ReflectionUtilities::GetInstanceFields(object); + for each (FieldInfo^ field in fields) + { + try + { + // Ignore private and non-SerialiseField + if (!ReflectionUtilities::FieldIsSerialisable(field)) + continue; + + // Serialise + writeFieldIntoYaml(field, object, scriptNode); + } + catch (System::Exception^ e) + { + Debug::LogError + ( + System::String::Format("[SerialisationUtilities] Failed to serialise field ({0}): {1}", field->Name, e->ToString()) + ); + } + } + + scriptListNode.push_back(scriptNode); + } + void SerialisationUtilities::Deserialise(Object^ object, YAML::Node& yamlNode) + { + using namespace System::Reflection; + + // Error Checking + if (!yamlNode.IsMap()) + { + // Invalid + Debug::LogError + ( + System::String::Format("[SerialisationUtilities] Invalid YAML Node provided for deserialization of \"{0}\" script.", + object->GetType()->FullName) + ); + return; + } + + // Get the script + Script^ script = safe_cast(object); + if (script == nullptr) + { + Debug::LogWarning("[SerialisationUtilities] Attempted to deserialise an object that is not a script!"); + return; + } + + // Set enabled state + if (yamlNode[SCRIPT_ENABLED_YAMLTAG.data()].IsDefined()) + { + script->SetEnabledWithoutEvents(yamlNode[SCRIPT_ENABLED_YAMLTAG.data()].as()); + } + + // Get all fields + System::Collections::Generic::IEnumerable^ fields = ReflectionUtilities::GetInstanceFields(object); + for each (FieldInfo^ field in fields) + { + try + { + // Ignore private and non-SerialiseField + if (!ReflectionUtilities::FieldIsSerialisable(field)) + continue; + + // Deserialise + const std::string FIELD_NAME = Convert::ToNative(field->Name); + if (yamlNode[FIELD_NAME].IsDefined()) + { + writeYamlIntoField(field, object, yamlNode[FIELD_NAME]); + } + } + catch (System::Exception^ e) + { + Debug::LogError + ( + System::String::Format("[SerialisationUtilities] Failed to deserialise field ({0}): {1}", field->Name, e->ToString()) + ); + } + } + } + /*---------------------------------------------------------------------------------*/ + /* Serialization Helper Functions */ + /*---------------------------------------------------------------------------------*/ + void SerialisationUtilities::writeFieldIntoYaml(System::Reflection::FieldInfo^ fieldInfo, Object^ object, YAML::Node& yamlNode) + { + // Field YAML Node + YAML::Node fieldNode; + + // Retrieve string for the YAML + const bool PRIMITIVE_SERIALIZED = fieldInsertYaml(fieldInfo, object, fieldNode) || + fieldInsertYaml(fieldInfo, object, fieldNode) || + fieldInsertYaml(fieldInfo, object, fieldNode) || + fieldInsertYaml(fieldInfo, object, fieldNode) || + fieldInsertYaml(fieldInfo, object, fieldNode) || + fieldInsertYaml(fieldInfo, object, fieldNode) || + fieldInsertYaml(fieldInfo, object, fieldNode) || + fieldInsertYaml(fieldInfo, object, fieldNode) || + fieldInsertYaml(fieldInfo, object, fieldNode) || + fieldInsertYaml(fieldInfo, object, fieldNode) || + fieldInsertYaml(fieldInfo, object, fieldNode) || + fieldInsertYaml(fieldInfo, object, fieldNode) || + fieldInsertYaml(fieldInfo, object, fieldNode) || + fieldInsertYaml(fieldInfo, object, fieldNode) || + fieldInsertYaml(fieldInfo, object, fieldNode) || + fieldInsertYaml(fieldInfo, object, fieldNode) || + fieldInsertYaml(fieldInfo, object, fieldNode) || + fieldInsertYaml(fieldInfo, object, fieldNode); + + // Serialization of more complex types + if (!PRIMITIVE_SERIALIZED) + { + if (ReflectionUtilities::FieldIsList(fieldInfo)) + { + System::Type^ listType = fieldInfo->FieldType->GenericTypeArguments[0]; + System::Collections::IList^ iList = safe_cast(fieldInfo->GetValue(object)); + + + fieldNode.SetStyle(YAML::EmitterStyle::Block); + for (int i = 0; i < iList->Count; ++i) + { + YAML::Node elemNode; + if (varInsertYaml(iList[i], elemNode)) + { + fieldNode.push_back(elemNode); + } + else + { + Debug::LogWarning(Convert::ToNative(System::String::Format + ( + "[SerialisationUtilities] Failed to parse element # {2} of \"{0}\" of \"{1}\" type for serialization.", + fieldInfo->Name, fieldInfo->FieldType, i) + )); + } + } + } + else // Not any of the supported types + { + Debug::LogWarning(Convert::ToNative(System::String::Format + ( + "[SerialisationUtilities] Failed to parse \"{0}\" of \"{1}\" type for serialization.", + fieldInfo->Name, fieldInfo->FieldType) + )); + return; + } + } + + // Store the field into YAML + yamlNode[Convert::ToNative(fieldInfo->Name)] = fieldNode; + } + + bool SerialisationUtilities::varInsertYaml(System::Object^ object, YAML::Node& fieldNode) + { + const bool INSERTED = + varInsertYamlInternal(object, fieldNode) || + varInsertYamlInternal(object, fieldNode) || + varInsertYamlInternal(object, fieldNode) || + varInsertYamlInternal(object, fieldNode) || + varInsertYamlInternal(object, fieldNode) || + varInsertYamlInternal(object, fieldNode) || + varInsertYamlInternal(object, fieldNode) || + varInsertYamlInternal(object, fieldNode) || + varInsertYamlInternal(object, fieldNode) || + varInsertYamlInternal(object, fieldNode) || + varInsertYamlInternal(object, fieldNode) || + varInsertYamlInternal(object, fieldNode) || + varInsertYamlInternal(object, fieldNode) || + varInsertYamlInternal(object, fieldNode) || + varInsertYamlInternal(object, fieldNode) || + varInsertYamlInternal(object, fieldNode) || + varInsertYamlInternal(object, fieldNode) || + varInsertYamlInternal(object, fieldNode); + return INSERTED; + } + + /*---------------------------------------------------------------------------------*/ + /* Deserialization Helper Functions */ + /*---------------------------------------------------------------------------------*/ + bool SerialisationUtilities::writeYamlIntoField(System::Reflection::FieldInfo^ fieldInfo, Object^ object, YAML::Node& node) + { + const bool ASSIGNED = + fieldAssignYaml (fieldInfo, object, node) || + fieldAssignYaml (fieldInfo, object, node) || + fieldAssignYaml (fieldInfo, object, node) || + fieldAssignYaml(fieldInfo, object, node) || + fieldAssignYaml(fieldInfo, object, node) || + fieldAssignYaml(fieldInfo, object, node) || + fieldAssignYaml (fieldInfo, object, node) || + fieldAssignYaml (fieldInfo, object, node) || + fieldAssignYaml (fieldInfo, object, node) || + fieldAssignYaml (fieldInfo, object, node) || + fieldAssignYaml (fieldInfo, object, node) || + fieldAssignYaml(fieldInfo, object, node) || + fieldAssignYaml (fieldInfo, object, node) || + fieldAssignYaml (fieldInfo, object, node) || + fieldAssignYaml (fieldInfo, object, node) || + fieldAssignYaml (fieldInfo, object, node) || + fieldAssignYaml (fieldInfo, object, node) || + fieldAssignYaml (fieldInfo, object, node); + if (!ASSIGNED) + { + if (ReflectionUtilities::FieldIsList(fieldInfo)) + { + System::Type^ elemType = fieldInfo->FieldType->GenericTypeArguments[0]; + System::Collections::IList^ iList = safe_cast(fieldInfo->GetValue(object)); + if (node.IsSequence()) + { + // Get list size + const int LIST_SIZE = static_cast(node.size()); + if (LIST_SIZE > 0) + { + // Get list type + array^ typeList = gcnew array{ elemType }; + System::Type^ listType = System::Collections::Generic::List::typeid->GetGenericTypeDefinition()->MakeGenericType(typeList); + // Create a list of the specified type + array^ params = gcnew array{ node.size() }; + System::Collections::IList^ list = safe_cast + ( + System::Activator::CreateInstance(listType, params) + ); + + // Populate the list + for (int i = 0; i < LIST_SIZE; ++i) + { + // Create the object + System::Object^ obj = System::Activator::CreateInstance(elemType); + + // Set it's value + if (varAssignYaml(obj, node[i])) + { + list->Add(obj); + } + } + fieldInfo->SetValue(object, list); + } + } + + return true; + } + } + + return ASSIGNED; + } + + bool SerialisationUtilities::varAssignYaml(System::Object^% object, YAML::Node& node) + { + const bool DESERIALISED = + varAssignYamlInternal (object, node) || + varAssignYamlInternal (object, node) || + varAssignYamlInternal (object, node) || + varAssignYamlInternal(object, node) || + varAssignYamlInternal(object, node) || + varAssignYamlInternal(object, node) || + varAssignYamlInternal (object, node) || + varAssignYamlInternal (object, node) || + varAssignYamlInternal (object, node) || + varAssignYamlInternal (object, node) || + varAssignYamlInternal (object, node) || + varAssignYamlInternal(object, node) || + varAssignYamlInternal (object, node) || + varAssignYamlInternal (object, node) || + varAssignYamlInternal (object, node) || + varAssignYamlInternal (object, node) || + varAssignYamlInternal (object, node) || + varAssignYamlInternal (object, node); + return DESERIALISED; + } +} diff --git a/SHADE_Managed/src/Serialisation/SerialisationUtilities.h++ b/SHADE_Managed/src/Serialisation/SerialisationUtilities.h++ new file mode 100644 index 00000000..04c87ef4 --- /dev/null +++ b/SHADE_Managed/src/Serialisation/SerialisationUtilities.h++ @@ -0,0 +1,269 @@ +/************************************************************************************//*! +\file SerialisationUtilities.h++ +\author Tng Kah Wei, kahwei.tng, 390009620 +\par email: kahwei.tng\@digipen.edu +\date Sep 16, 2022 +\brief Contains the definition of the template functions of the managed + ReflectionUtilities static class. + + Note: This file is written in C++17/CLI. + +Copyright (C) 2022 DigiPen Institute of Technology. +Reproduction or disclosure of this file or its contents without the prior written consent +of DigiPen Institute of Technology is prohibited. +*//*************************************************************************************/ +#pragma once + +// Primary Header +#include "SerialisationUtilities.hxx" +// Project Includes +#include "Utility/Convert.hxx" +#include "Utility/Debug.hxx" + +namespace SHADE +{ + /*---------------------------------------------------------------------------------*/ + /* Serialization Helper Functions */ + /*---------------------------------------------------------------------------------*/ + template + bool SerialisationUtilities::fieldInsertYaml(System::Reflection::FieldInfo^ fieldInfo, System::Object^ object, YAML::Node& fieldNode) + { + // Handle null objects + System::Object^ fieldObject = fieldInfo->GetValue(object); + if (fieldObject == nullptr) + { + // Default construct if null + if (fieldInfo->FieldType == FieldType::typeid) + { + if constexpr (std::is_same_v) + { + fieldNode = 0; + } + else if constexpr (std::is_same_v) + { + fieldNode = ""; + } + else if constexpr (std::is_same_v) + { + fieldNode.SetStyle(YAML::EmitterStyle::Flow); + fieldNode.push_back(0.0f); + fieldNode.push_back(0.0f); + } + else if constexpr (std::is_same_v) + { + fieldNode.SetStyle(YAML::EmitterStyle::Flow); + fieldNode.push_back(0.0f); + fieldNode.push_back(0.0f); + fieldNode.push_back(0.0f); + } + else if constexpr (std::is_same_v) + { + fieldNode = MAX_EID; + } + else if constexpr (std::is_same_v || + std::is_same_v || + std::is_same_v) + { + fieldNode = INVALID_ASSET_ID; + } + else + { + fieldNode = FieldType(); + } + return true; + } + return false; + } + return varInsertYamlInternal(fieldObject, fieldNode); + } + template + bool SerialisationUtilities::varInsertYamlInternal(System::Object^ object, YAML::Node& fieldNode) + { + if constexpr (std::is_same_v) + { + if (object->GetType()->IsSubclassOf(System::Enum::typeid)) + { + fieldNode = std::to_string(safe_cast(object)); + return true; + } + } + else if constexpr (std::is_same_v) + { + if (object->GetType() == System::String::typeid) + { + System::String^ str = safe_cast(object); + fieldNode = Convert::ToNative(str); + return true; + } + } + else if constexpr (std::is_same_v) + { + if (object->GetType() == Vector2::typeid) + { + Vector2 vec = safe_cast(object); + fieldNode.SetStyle(YAML::EmitterStyle::Flow); + fieldNode.push_back(vec.x); + fieldNode.push_back(vec.y); + return true; + } + } + else if constexpr (std::is_same_v) + { + if (object->GetType() == Vector3::typeid) + { + Vector3 vec = safe_cast(object); + fieldNode.SetStyle(YAML::EmitterStyle::Flow); + fieldNode.push_back(vec.x); + fieldNode.push_back(vec.y); + fieldNode.push_back(vec.z); + return true; + } + } + else if constexpr (std::is_same_v) + { + if (object->GetType() == GameObject::typeid) + { + GameObject gameObj = safe_cast(object); + fieldNode = gameObj ? gameObj.GetEntity() : MAX_EID; + return true; + } + } + else if constexpr (std::is_same_v || + std::is_same_v || + std::is_same_v) + { + if (object->GetType() == FieldType::typeid) + { + FieldType asset = safe_cast(object); + fieldNode = asset.NativeAssetID; + return true; + } + } + else + { + if (object->GetType() == FieldType::typeid) + { + FieldType value = safe_cast(object); + fieldNode = static_cast(value); + return true; + } + } + + return false; + } + + /*---------------------------------------------------------------------------------*/ + /* Deserialization Helper Functions */ + /*---------------------------------------------------------------------------------*/ + template + bool SerialisationUtilities::fieldAssignYaml(System::Reflection::FieldInfo^ fieldInfo, Object^ object, YAML::Node& node) + { + System::Object^ valueObj = fieldInfo->GetValue(object); + if (valueObj == nullptr) + { + if constexpr (std::is_same_v) + { + if (fieldInfo->FieldType->IsSubclassOf(System::Enum::typeid)) + { + valueObj = 0; + } + } + else + { + if (fieldInfo->FieldType == FieldType::typeid) + { + if constexpr (std::is_same_v) + { + valueObj = ""; + } + else + { + valueObj = FieldType(); + } + } + } + } + + if (varAssignYamlInternal(valueObj, node)) + { + fieldInfo->SetValue(object, valueObj); + return true; + } + + return false; + } + + template + bool SerialisationUtilities::varAssignYamlInternal(System::Object^% object, YAML::Node& node) + { + if constexpr (std::is_same_v) + { + if (object->GetType()->IsSubclassOf(System::Enum::typeid)) + { + object = node.as(); + return true; + } + } + else + { + if (object->GetType() == FieldType::typeid) + { + if constexpr (std::is_same_v) + { + object = Convert::ToCLI(node.as()); + } + else if constexpr (std::is_same_v) + { + if (node.IsSequence() && node.size() == 2) + { + Vector2 vec; + vec.x = node[0].as(); + vec.y = node[1].as(); + object = vec; + } + else + { + return false; + } + } + else if constexpr (std::is_same_v) + { + if (node.IsSequence() && node.size() == 3) + { + Vector3 vec; + vec.x = node[0].as(); + vec.y = node[1].as(); + vec.z = node[2].as(); + object = vec; + } + else + { + return false; + } + } + else if constexpr (std::is_same_v) + { + const uint32_t EID = node.as(); + object = (EID == MAX_EID ? GameObject() : GameObject(EID)); + } + else if constexpr (std::is_same_v || + std::is_same_v || + std::is_same_v) + { + if (object->GetType() == FieldType::typeid) + { + object = FieldType(node.as()); + return true; + } + } + else + { + object = node.as(); + } + return true; + } + } + + return false; + } +} diff --git a/SHADE_Managed/src/Serialisation/SerialisationUtilities.hxx b/SHADE_Managed/src/Serialisation/SerialisationUtilities.hxx new file mode 100644 index 00000000..5b6fc69e --- /dev/null +++ b/SHADE_Managed/src/Serialisation/SerialisationUtilities.hxx @@ -0,0 +1,75 @@ +/************************************************************************************//*! +\file SerialisationUtilities.hxx +\author Tng Kah Wei, kahwei.tng, 390009620 +\par email: kahwei.tng\@digipen.edu +\date Nov 6, 2021 +\brief Contains the definition of the managed SerialisationUtilities static + class. + + Note: This file is written in C++17/CLI. + +Copyright (C) 2021 DigiPen Institute of Technology. +Reproduction or disclosure of this file or its contents without the prior written consent +of DigiPen Institute of Technology is prohibited. +*//*************************************************************************************/ +#pragma once + +// External Dependencies +#include +// Project Includes +#include "Math/Vector2.hxx" +#include "Math/Vector3.hxx" +#include "Engine/GameObject.hxx" + +namespace SHADE +{ + /// + /// Contains useful static functions for working with Serialisation of Managed data. + /// + private ref class SerialisationUtilities abstract sealed + { + public: + /*-----------------------------------------------------------------------------*/ + /* Serialisation Functions */ + /*-----------------------------------------------------------------------------*/ + /// + /// Creates a JSON node that represents the specified object and its associated + /// serialisable fields. Public fields and fields marked with the SerialiseField + /// attribute will be serialised. + /// + /// The object to serialise. + static void Serialise(System::Object^ object, YAML::Node& yamlNode); + /// + /// Deserialises a YAML node that contains a map of Scripts and copies the + /// deserialised data into the specified object if there are matching fields. + /// + /// + /// The JSON string that contains the data to copy into this Script object. + /// + /// The object to copy deserialised data into. + static void Deserialise(System::Object^ object, YAML::Node& yamlNode); + + private: + /*-----------------------------------------------------------------------------*/ + /* Serialization Helper Functions */ + /*-----------------------------------------------------------------------------*/ + static void writeFieldIntoYaml(System::Reflection::FieldInfo^ fieldInfo, Object^ object, YAML::Node& yamlNode); + template + static bool fieldInsertYaml(System::Reflection::FieldInfo^ fieldInfo, System::Object^ object, YAML::Node& fieldNode); + static bool varInsertYaml(System::Object^ object, YAML::Node& fieldNode); + template + static bool varInsertYamlInternal(System::Object^ object, YAML::Node& fieldNode); + + /*-----------------------------------------------------------------------------*/ + /* Deserialization Helper Functions */ + /*-----------------------------------------------------------------------------*/ + static bool writeYamlIntoField(System::Reflection::FieldInfo^ fieldInfo, Object^ object, YAML::Node& node); + template + static bool fieldAssignYaml(System::Reflection::FieldInfo^ fieldInfo, Object^ object, YAML::Node& node); + static bool varAssignYaml(System::Object^% object, YAML::Node& node); + template> + static bool varAssignYamlInternal(System::Object^% object, YAML::Node& node); + }; +} + +#include "SerialisationUtilities.h++" \ No newline at end of file diff --git a/SHADE_Managed/src/Utility/Convert.cxx b/SHADE_Managed/src/Utility/Convert.cxx index 3b1f0f38..590a3cf0 100644 --- a/SHADE_Managed/src/Utility/Convert.cxx +++ b/SHADE_Managed/src/Utility/Convert.cxx @@ -19,6 +19,8 @@ of DigiPen Institute of Technology is prohibited. // External Dependencies #include #include "ECS_Base/Managers/SHEntityManager.h" +// Project Headers +#include "Engine/GameObject.hxx" namespace SHADE { @@ -62,14 +64,14 @@ namespace SHADE return Quaternion{ quat.x, quat.y, quat.z, quat.w }; } - SHRay Convert::ToNative(Ray vec) + SHRay Convert::ToNative(Ray ray) { - return SHRay(ToNative(vec.Origin), ToNative(vec.Direction)); + return SHRay(ToNative(ray.Position), ToNative(ray.Direction)); } - Ray Convert::ToCLI(const SHRay& vec) + Ray Convert::ToCLI(const SHRay& ray) { - return Ray(ToCLI(vec.position), ToCLI(vec.direction)); + return Ray(ToCLI(ray.position), ToCLI(ray.direction)); } SHColour Convert::ToNative(Color col) @@ -87,6 +89,8 @@ namespace SHADE /*---------------------------------------------------------------------------------*/ std::string Convert::ToNative(System::String^ str) { + if (str == nullptr) + return ""; return msclr::interop::marshal_as(str); } @@ -95,6 +99,42 @@ namespace SHADE return msclr::interop::marshal_as(str); } + /*---------------------------------------------------------------------------------*/ + /* Physics Conversions */ + /*---------------------------------------------------------------------------------*/ + + SHPhysicsRaycastResult Convert::ToNative(RaycastHit cli) + { + // This function shouldn't be used anyway, so we leave the entityHit empty. + + SHPhysicsRaycastResult native; + + native.hit = cli.Hit; + native.position = ToNative(cli.Position); + native.normal = ToNative(cli.Normal); + native.distance = cli.Distance; + native.shapeIndex = cli.CollisionShapeIndex; + + return native; + } + + RaycastHit Convert::ToCLI(const SHPhysicsRaycastResult& native) + { + RaycastHit cli; + + cli.Hit = native.hit; + cli.Position = ToCLI(native.position); + cli.Normal = ToCLI(native.normal); + cli.Distance = native.distance; + cli.CollisionShapeIndex = native.shapeIndex; + + cli.Other = SHEntityManager::IsValidEID(native.entityHit) + ? GameObject(native.entityHit) + : System::Nullable(); + + return cli; + } + /*---------------------------------------------------------------------------------*/ /* Handle Conversions */ /*---------------------------------------------------------------------------------*/ diff --git a/SHADE_Managed/src/Utility/Convert.hxx b/SHADE_Managed/src/Utility/Convert.hxx index 666b5062..04407f77 100644 --- a/SHADE_Managed/src/Utility/Convert.hxx +++ b/SHADE_Managed/src/Utility/Convert.hxx @@ -28,9 +28,11 @@ of DigiPen Institute of Technology is prohibited. #include "Math/Vector3.hxx" #include "Math/Quaternion.hxx" #include "Math/Ray.hxx" +#include "Physics/RaycastHit.hxx" #include "Engine/GenericHandle.hxx" #include "Math/SHColour.h" #include "Graphics/Color.hxx" +#include "Physics/Collision/SHPhysicsRaycastResult.h" namespace SHADE { @@ -95,22 +97,22 @@ namespace SHADE /// The native Quaternion to convert from. /// Managed copy of a native Quaternion. static Quaternion ToCLI(const SHQuaternion& quat); - /// Converts from a managed Vector2 to a native Vector2. + /// Converts from a managed Ray to a native Ray. /// - /// The managed Vector2 to convert from. - /// Native copy of a managed Vector2. + /// The managed Ray to convert from. + /// Native copy of a managed Ray. static SHRay ToNative(Ray vec); /// - /// Converts from a native Vector2 to a managed Vector2. + /// Converts from a native Ray to a managed Ray. /// - /// The native Vector2 to convert from. - /// Managed copy of a native Vector2. - static Ray ToCLI(const SHRay& vec); + /// The native Ray to convert from. + /// Managed copy of a native Ray. + static Ray ToCLI(const SHRay& ray); /// Converts from a managed Color to a native Colour. ///
/// The managed Color to convert from. /// Native copy of a managed Color. - static SHColour ToNative(Color col); + static SHColour ToNative(Color ray); /// /// Converts from a native Colour to a managed Color. /// @@ -134,9 +136,27 @@ namespace SHADE /// Managed copy of a native std::string. static System::String^ ToCLI(const std::string& str); + /*-----------------------------------------------------------------------------*/ + /* Physics Conversions */ + /*-----------------------------------------------------------------------------*/ + + /// + /// Converts from a managed RaycastHit to a native SHPhysicsRaycastResult + /// + /// The managed RaycastHit to convert from. + /// Native copy of a managed RaycastHit. + static SHPhysicsRaycastResult ToNative(RaycastHit cli); + + /// + /// Converts from native SHPhysicsRaycastResult to a managed RaycastHit. + /// + /// The native SHPhysicsRaycastResult to convert from. + /// Managed copy of a native SHPhysicsRaycastResult. + static RaycastHit ToCLI(const SHPhysicsRaycastResult& native); + /*-----------------------------------------------------------------------------*/ /* Handle Conversions */ - /*-----------------------------------------------------------------------------*/ + /*-----------------------------------------------------------------------------*/ /// /// Converts from a managed GenericHandle to a Handle. /// @@ -152,6 +172,40 @@ namespace SHADE }; + /// + /// Checks if the specified type is matching between native C++ and the managed type. + /// + /// Type to check. + template + struct IsPrimitiveTypeMatches : public std::integral_constant + < + bool, + std::is_same_v> || + std::is_same_v> || + std::is_same_v> || + std::is_same_v> || + std::is_same_v> || + std::is_same_v> || + std::is_same_v> || + std::is_same_v> || + std::is_same_v> || + std::is_same_v> || + std::is_same_v> || + std::is_same_v> || + std::is_same_v> || + std::is_same_v> || + std::is_same_v> || + std::is_same_v> || + std::is_same_v> + > + {}; + /// + /// Short hand for IsPrimitiveTypeMatches::value + /// + /// Type to check. + template + inline constexpr bool IsPrimitiveTypeMatches_V = IsPrimitiveTypeMatches::value; + /// /// Type Transformer for managed types to native types. /// @@ -163,6 +217,7 @@ namespace SHADE { public: using Value = void; + static bool IsDefined() { return is_same_v; } }; template<> struct ToNativeType { using Value = int16_t; }; template<> struct ToNativeType { using Value = int32_t; }; @@ -193,19 +248,20 @@ namespace SHADE template struct ToManagedType { - public: + public: using Value = void; + static bool IsDefined() { return is_same_v; } }; - template<> struct ToManagedType { using Value = System::Byte; }; - template<> struct ToManagedType { using Value = System::Int16; }; - template<> struct ToManagedType { using Value = System::Int32; }; - template<> struct ToManagedType { using Value = System::Int64; }; + template<> struct ToManagedType { using Value = System::Byte; }; + template<> struct ToManagedType { using Value = System::Int16; }; + template<> struct ToManagedType { using Value = System::Int32; }; + template<> struct ToManagedType { using Value = System::Int64; }; template<> struct ToManagedType { using Value = System::UInt16; }; template<> struct ToManagedType { using Value = System::UInt32; }; template<> struct ToManagedType { using Value = System::UInt64; }; - template<> struct ToManagedType { using Value = bool; }; - template<> struct ToManagedType { using Value = double; }; - template<> struct ToManagedType { using Value = float; }; + template<> struct ToManagedType { using Value = bool; }; + template<> struct ToManagedType { using Value = double; }; + template<> struct ToManagedType { using Value = float; }; /// /// Alias for ToManagedType::Value diff --git a/SHADE_Managed/src/Utility/Debug.cxx b/SHADE_Managed/src/Utility/Debug.cxx index 8a107ab3..cdc19df0 100644 --- a/SHADE_Managed/src/Utility/Debug.cxx +++ b/SHADE_Managed/src/Utility/Debug.cxx @@ -19,7 +19,7 @@ of DigiPen Institute of Technology is prohibited. // Standard Libraries #include // External Libraries -#include "Tools/SHLog.h" +#include "Tools/Logger/SHLog.h" // Project Headers #include "Convert.hxx" diff --git a/TempScriptsFolder/CameraFix.cs b/TempScriptsFolder/CameraFix.cs deleted file mode 100644 index 5347a72f..00000000 --- a/TempScriptsFolder/CameraFix.cs +++ /dev/null @@ -1,24 +0,0 @@ -using SHADE; -using System; - -public class CameraFix : Script -{ - public CameraFix(GameObject gameObj) : base(gameObj) { } - - private Transform tranform; - public Vector3 pos = Vector3.Zero; - public Vector3 rot = Vector3.Zero; - protected override void awake() - { - tranform = GetComponent(); - if (tranform == null) - Debug.LogError("tranform is NULL!"); - else - { - tranform.LocalPosition = pos; - tranform.LocalEulerAngles = rot; - } - - - } -} diff --git a/TempScriptsFolder/Item.cs b/TempScriptsFolder/Item.cs deleted file mode 100644 index 96ec092d..00000000 --- a/TempScriptsFolder/Item.cs +++ /dev/null @@ -1,18 +0,0 @@ -using SHADE; -using System; -public class Item : Script -{ - public enum ItemCategory - { - LIGHT, - MEDIUM, - HEAVY - } - - public ItemCategory currCategory; - public Item(GameObject gameObj) : base(gameObj) { } - - protected override void awake() - { - } -} \ No newline at end of file diff --git a/TempScriptsFolder/PhysicsTest.cs b/TempScriptsFolder/PhysicsTest.cs deleted file mode 100644 index cc01615d..00000000 --- a/TempScriptsFolder/PhysicsTest.cs +++ /dev/null @@ -1,72 +0,0 @@ -using SHADE; -using System; -public class PhysicsTest : Script -{ - [SerializeField] - [Tooltip("Force to apply when pressing Space.")] - private Vector3 Force = new Vector3(0.0f, 200.0f, 0.0f); - private Transform Transform; - private RigidBody RigidBody; - private Collider Collider; - public PhysicsTest(GameObject gameObj) : base(gameObj) { } - - protected override void awake() - { - Transform = GetComponent(); - if (Transform == null) - { - Debug.LogError("Transform is NULL!"); - } - RigidBody = GetComponent(); - if (RigidBody == null) - { - Debug.LogError("RigidBody is NULL!"); - } - Collider = GetComponent(); - if (Collider == null) - { - Debug.LogError("Collider is NULL!"); - } - - var subColider = Collider.CollisionShapeCount; - Debug.Log($"There are {subColider} colliders."); - } - protected override void update() - { - if (Input.GetKeyUp(Input.KeyCode.Space)) - { - RigidBody.AddForce(Force); - Debug.Log($"Jump!"); - } - } - - protected override void fixedUpdate() - { - Debug.Log("Fixed Update"); - } - - protected override void onCollisionEnter(CollisionInfo info) - { - Debug.Log($"Collision Enter: {info.GameObject.Name}"); - } - protected override void onCollisionStay(CollisionInfo info) - { - Debug.Log($"Collision Stay: {info.GameObject.Name}"); - } - protected override void onCollisionExit(CollisionInfo info) - { - Debug.Log($"Collision Exit: {info.GameObject.Name}"); - } - protected override void onTriggerEnter(CollisionInfo info) - { - Debug.Log($"Trigger Enter: {info.GameObject.Name}"); - } - protected override void onTriggerStay(CollisionInfo info) - { - Debug.Log($"Trigger Stay: {info.GameObject.Name}"); - } - protected override void onTriggerExit(CollisionInfo info) - { - Debug.Log($"Trigger Exit: {info.GameObject.Name}"); - } -} \ No newline at end of file diff --git a/TempScriptsFolder/PickAndThrow.cs b/TempScriptsFolder/PickAndThrow.cs deleted file mode 100644 index ea814b36..00000000 --- a/TempScriptsFolder/PickAndThrow.cs +++ /dev/null @@ -1,99 +0,0 @@ -using SHADE; -using System; -using static PlayerController; - -public class PickAndThrow : Script -{ - public Vector3 throwForce = new Vector3(100.0f, 200.0f, 100.0f); - public GameObject item; - private PlayerController pc; - private Camera cam; - private Transform itemTransform; - private RigidBody itemRidibody; - private Transform raccoonHoldLocation; - private float lastXDir; - private float lastZDir; - private bool inRange = false; - public PickAndThrow(GameObject gameObj) : base(gameObj) { } - - protected override void awake() - { - pc = GetScript(); - raccoonHoldLocation = GetComponentInChildren(); - if (raccoonHoldLocation == null) - Debug.Log("CHILD EMPTY"); - else - raccoonHoldLocation.LocalPosition = new Vector3(0.0f, 1.0f, 0.0f); - } - protected override void update() - { - if (cam == null) - cam = GetComponentInChildren(); - else if (cam != null) - { - Vector3 camerAixs = cam.GetForward(); - camerAixs.y = 0; - camerAixs.Normalise(); - lastXDir = camerAixs.x; - lastZDir = camerAixs.z; - } - - if (item.GetScript() != null && itemTransform == null && itemRidibody == null) - { - itemTransform = item.GetComponent(); - if (itemTransform == null) - Debug.Log("Item transform EMPTY"); - - itemRidibody = item.GetComponent(); - if (itemRidibody == null) - Debug.Log("Item rb EMPTY"); - } - - if (pc != null && inRange && !pc.holdItem && Input.GetKey(Input.KeyCode.E)) - pc.holdItem = true; - - if (pc != null && itemRidibody != null && itemTransform != null && pc.holdItem) - { - itemTransform.LocalPosition = raccoonHoldLocation.GlobalPosition; - itemRidibody.IsGravityEnabled = false; - itemRidibody.LinearVelocity = Vector3.Zero; - itemRidibody.AngularVelocity = Vector3.Zero; - - if (Input.GetMouseButtonDown(Input.MouseCode.LeftButton)) - { - pc.holdItem = false; - inRange = false; - itemRidibody.IsGravityEnabled = true; - itemRidibody.AddForce(new Vector3(throwForce.x * lastXDir, throwForce.y, throwForce.z * lastZDir)); - itemRidibody.LinearVelocity += pc.rb.LinearVelocity; - } - } - else if(!pc.holdItem && itemRidibody != null) - itemRidibody.IsGravityEnabled = true; - } - protected override void onCollisionEnter(CollisionInfo info) - { - } - protected override void onTriggerEnter(CollisionInfo info) - { - //Debug.Log("ENTER"); - if (info.GameObject.GetScript() != null && !pc.holdItem) - { - item = info.GameObject; - inRange = true; - } - } - protected override void onTriggerStay(CollisionInfo info) - { - //Debug.Log("STAY"); - } - protected override void onTriggerExit(CollisionInfo info) - { - //Debug.Log("EXIT"); - if (info.GameObject.GetScript() != null && !pc.holdItem) - { - inRange = false; - } - } - -} \ No newline at end of file diff --git a/TempScriptsFolder/ThirdPersonCamera.cs b/TempScriptsFolder/ThirdPersonCamera.cs deleted file mode 100644 index 141865e8..00000000 --- a/TempScriptsFolder/ThirdPersonCamera.cs +++ /dev/null @@ -1,61 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using SHADE; - - -namespace SHADE_Scripting -{ - public class ThirdPersonCamera: Script - { - - public float armLength = 2.0f; - public float turnSpeedPitch = 0.3f; - public float turnSpeedYaw = 0.5f; - public float pitchClamp = 45.0f; - public ThirdPersonCamera(GameObject go) : base(go) { } - - protected override void awake() - { - AddComponent(); - - if(!GetComponent()) - { - AddComponent(); - } - GetComponent().SetMainCamera(); - if (!GetComponent()) - { - AddComponent(); - } - GetComponent().ArmLength = armLength; - } - - protected override void update() - { - if (Input.GetMouseButton(Input.MouseCode.RightButton)) - { - CameraArm arm = GetComponent(); - if (arm) - { - Vector2 vel = Input.GetMouseVelocity(); - arm.Pitch -= vel.y * turnSpeedPitch * Time.DeltaTimeF; - arm.Yaw += vel.x * turnSpeedYaw * Time.DeltaTimeF; - - if (arm.Pitch > pitchClamp) - { - arm.Pitch = pitchClamp; - } - else if (arm.Pitch < 0) - { - arm.Pitch = 0; - } - - } - } - } - - } -} diff --git a/premake5.lua b/premake5.lua index 2164d649..26f181b5 100644 --- a/premake5.lua +++ b/premake5.lua @@ -25,10 +25,11 @@ workspace "SHADE" include "SHADE_CSharp" group "Dependencies" - include "Dependencies/msdf" + include "Dependencies/FontCompiler/Dependencies/msdf" include "Dependencies/imgui" --include "Dependencies/tracy" include "Dependencies/yamlcpp" include "Dependencies/reactphysics3d" include "Dependencies/ModelCompiler" + include "Dependencies/FontCompiler" group ""