Skip to content
Snippets Groups Projects
Commit 83b59be6 authored by Oliver Charles Schubert's avatar Oliver Charles Schubert
Browse files

Adds functionality to extract data of which nodes to compare.

parent f32b6076
Branches
No related tags found
1 merge request!15Add a simplified design_evaluator version to utilities
<ConfigFile Name="designEvaluator_conf.xml">
<ControlSettings Desc="general control settings">
<IOFileName>CSR.xml</IOFileName>
<IODir>../projects/CSR/CSR-02/</IODir>
<OwnToolLevel>1</OwnToolLevel>
<ConsoleOutputOn Desc="0: Off, 1: only out/err/warn, 2: 1 + info, 3: 2 + debug">1</ConsoleOutputOn>
<LogfileOutputOn Desc="0: Off, 1: only out/err/warn, 2: 1 + info, 3: 2 + debug">1</LogfileOutputOn>
<PlotOutputOn CopyPlottingFiles="1" DeletePlottingFilesFromToolFolder="1">1</PlotOutputOn>
<ReportOutputOn>1</ReportOutputOn>
<TexReportOn>0</TexReportOn>
<WriteInfoFiles>1</WriteInfoFiles>
<GnuplotScript>designEvaluator_plot.plt</GnuplotScript>
<LogFile>designEvaluator.log</LogFile>
<InkscapePath>DEFAULT</InkscapePath>
<GnuplotPath>DEFAULT</GnuplotPath>
<ProgramSpecific Desc="program-specific control settings">
<ACDesignName Desc="Name of AC-Design (s. IOFileName)">CSR Design</ACDesignName>
<UseIOFileForComparison Desc="0: only below aircraft are compared against the reference" Default="1">1</UseIOFileForComparison>
<SwitchOffLegend Desc="1:Legend in Plot is switched off" Default="0">0</SwitchOffLegend>
<BorderWidth Desc="Setting the legend width" Default="-4">-4</BorderWidth>
</ProgramSpecific>
</ControlSettings>
<ProgramSettings Desc="program settings">
<ACDesign ID="0" Desc="reference draft">
<Name Desc="Name" Unit="-" Default="">CSR-02 Reference Design</Name>
<FileName Desc="Name" Unit="-" Default="">CSR-02.xml</FileName>
<DesignDir Desc="Path" Unit="-" Default="">../../AircraftReferences/CSR/CSR-02/cleanSheetDesign/</DesignDir>
</ACDesign>
<OtherACDesigns Desc="Further designs to be compared against the reference (IODir/IOFileName)">1</OtherACDesigns>
<ACDesign ID="1">
<Name Desc="Name" Unit="-" Default="">CSR nr1</Name>
<FileName Desc="Name" Unit="-" Default="">CSR.xml</FileName>
<DesignDir Desc="Path" Unit="-" Default="">../projects/CSR/</DesignDir>
</ACDesign>
<ACDesign ID="2">
<Name Desc="Name" Unit="-" Default="">CSR nr2</Name>
<FileName Desc="Name" Unit="-" Default="">CSR.xml</FileName>
<DesignDir Desc="Path" Unit="-" Default="">../projekte/CSR/</DesignDir>
</ACDesign>
<Parameters Desc="Parameters to be compared">
<Requirements>
<Parameters Desc="Number of sub-parameters in this block">3</Parameters>
<SubPath ID="1" Name="Design Range">DesignMission/R_Design</SubPath>
<SubPath ID="2" Name="Payload">m_Payload</SubPath>
<SubPath ID="3" Name="M_{cruise}">DesignMission/M_initialCruise_Design</SubPath>
</Requirements>
<DesignSpecification>
<Parameters Desc="Number of sub-parameters in this block">0</Parameters>
</DesignSpecification>
<MassesAndLoadings>
<Parameters Desc="Number of sub-parameters in this block">1</Parameters>
<SubPath ID="1" Name="MTOM">MTOM</SubPath>
<SubPath ID="2" Name="OME">OME</SubPath>
<SubPath ID="3" Name="m_{Wing}">MassBreakdown/Wing/Mass</SubPath>
<SubPath ID="4" Name="m_{Fus}">MassBreakdown/Fuselage/Mass</SubPath>
<SubPath ID="5" Name="m_{Stab}">MassBreakdown/Empennage/Tailplane/Mass</SubPath>
<SubPath ID="6" Name="m_{Fin}">MassBreakdown/Empennage/Fin/Mass</SubPath>
<SubPath ID="7" Name="m_{LG}">MassBreakdown/LandingGear/Mass</SubPath>
<SubPath ID="8" Name="m_{Pyl}">MassBreakdown/Pylons/Mass</SubPath>
<SubPath ID="9" Name="m_{PU}">MassBreakdown/PowerUnit/Mass</SubPath>
<SubPath ID="10" Name="m_{ED1}">MassBreakdown/PowerUnit/Engine@1/EngineDry/Mass</SubPath>
<SubPath ID="11" Name="m_{Nac1}">MassBreakdown/PowerUnit/Engine@1/Nacelle/Mass</SubPath>
<SubPath ID="12" Name="m_{ES1}">MassBreakdown/PowerUnit/Engine@1/OtherSystems/Mass</SubPath>
<SubPath ID="13" Name="m_{Syst}">MassBreakdown/Systems/Mass</SubPath>
<SubPath ID="14" Name="m_{APU}">MassBreakdown/Systems/APU/Mass</SubPath>
<SubPath ID="15" Name="m_{HydrG}">MassBreakdown/Systems/HydraulicGeneration/Mass</SubPath>
<SubPath ID="16" Name="m_{HydrD}">MassBreakdown/Systems/HydraulicDistribution/Mass</SubPath>
<SubPath ID="17" Name="m_{AC}">MassBreakdown/Systems/AirConditioning/Mass</SubPath>
<SubPath ID="18" Name="m_{Ice}">MassBreakdown/Systems/DeIcing/Mass</SubPath>
<SubPath ID="19" Name="m_{Fire}">MassBreakdown/Systems/FireProtection/Mass</SubPath>
<SubPath ID="20" Name="m_{FC}">MassBreakdown/Systems/FlightControls/Mass</SubPath>
<SubPath ID="21" Name="m_{Instr}">MassBreakdown/Systems/Instruments/Mass</SubPath>
<SubPath ID="22" Name="m_{AP}">MassBreakdown/Systems/AutomaticFlightSystem/Mass</SubPath>
<SubPath ID="23" Name="m_{Nav}">MassBreakdown/Systems/Navigation/Mass</SubPath>
<SubPath ID="24" Name="m_{Com}">MassBreakdown/Systems/Communication/Mass</SubPath>
<SubPath ID="25" Name="m_{ElecG}">MassBreakdown/Systems/ElectricalGeneration/Mass</SubPath>
<SubPath ID="26" Name="m_{ElecD}">MassBreakdown/Systems/ElectricalDistribution/Mass</SubPath>
<SubPath ID="27" Name="m_{FurnGroup}">MassBreakdown/Furnishings/Mass</SubPath>
<SubPath ID="28" Name="m_{Furn}">MassBreakdown/Furnishings/Furnishing/Mass</SubPath>
<SubPath ID="29" Name="m_{Oxy}">MassBreakdown/Furnishings/FixedEmergencyOxygen/Mass</SubPath>
<SubPath ID="30" Name="m_{Light}">MassBreakdown/Furnishings/Lighting/Mass</SubPath>
<SubPath ID="31" Name="m_{Water}">MassBreakdown/Furnishings/WaterInstallation/Mass</SubPath>
<SubPath ID="32" Name="m_{OpIt}">MassBreakdown/OperatorsItems/Mass</SubPath>
<SubPath ID="33" Name="m_{OpEq}">MassBreakdown/OperatorsItems/OperatorEquipment/Mass</SubPath>
<SubPath ID="34" Name="m_{OperationalEq}">MassBreakdown/OperatorsItems/OperationalEquipment/Mass</SubPath>
<SubPath ID="35" Name="CG_{fwd}">CentreOfGravityRange/ForwardLimit/r</SubPath>
<SubPath ID="36" Name="CG_{aft}">CentreOfGravityRange/AftLimit/r</SubPath>
<SubPath ID="37" Name="Trim_{fwd}">WingLoading</SubPath>
<SubPath ID="38" Name="Trim_{aft}">ThrustToWeight</SubPath>
</MassesAndLoadings>
<Performance>
<Parameters Desc="Number of sub-parameters in this block">0</Parameters>
<SubPath ID="1" Name="MF_{design}">MissionAnalysis/DesignMission/Missionfuel</SubPath>
<SubPath ID="2" Name="MF_{study}">MissionAnalysis/StudyMission/Missionfuel</SubPath>
<SubPath ID="3" Name="Range_{study}">MissionAnalysis/StudyMission/Range</SubPath>
<SubPath ID="4" Name="Payload_{study}">MissionAnalysis/StudyMission/Payload</SubPath>
<SubPath ID="5" Name="TODR">TakeOff/TakeOffDistance_Normal</SubPath>
<SubPath ID="6" Name="ClimbGradient">TakeOff/ScdSegmentClimbGradient</SubPath>
<SubPath ID="7" Name="LDR">Landing/LandingDistance</SubPath>
</Performance>
<Aerodynamics>
<Parameters Desc="Number of sub-parameters in this block">0</Parameters>
<SubPath ID="1" Name="L/D">LoverD_Cruise</SubPath>
<SubPath ID="2" Name="CL_{opt}">LiftCoefficients/C_LoptimumCruise</SubPath>
<SubPath ID="3" Name="CL_{opt,wing}">LiftCoefficients/C_L_opt_wing</SubPath>
<SubPath ID="4" Name="CL_{opt,stab}">LiftCoefficients/C_L_opt_stab</SubPath>
<SubPath ID="5" Name="CL_{max,TO}">LiftCoefficients/C_LmaxT-O</SubPath>
<SubPath ID="6" Name="CL_{max,LDG}">LiftCoefficients/C_LmaxLanding</SubPath>
<SubPath ID="7" Name="CD_{tot}">DragCoefficients/C_D_total</SubPath>
<SubPath ID="8" Name="CD_{ind}">DragCoefficients/C_D_ind</SubPath>
<SubPath ID="9" Name="CD_{visc}">DragCoefficients/C_D_visc/C_D_visc_total</SubPath>
<SubPath ID="10" Name="CD_{visc,wing}">DragCoefficients/C_D_visc/C_D_visc_wing</SubPath>
<SubPath ID="11" Name="CD_{visc,fus}">DragCoefficients/C_D_visc/C_D_visc_fus</SubPath>
<SubPath ID="12" Name="CD_{visc,stab}">DragCoefficients/C_D_visc/C_D_visc_stab</SubPath>
<SubPath ID="13" Name="CD_{visc,fin}">DragCoefficients/C_D_visc/C_D_visc_fin</SubPath>
<SubPath ID="14" Name="CD_{visc,nac}">DragCoefficients/C_D_visc/C_D_visc_nac</SubPath>
<SubPath ID="15" Name="CD_{visc,misc}">DragCoefficients/C_D_visc/C_D_visc_misc</SubPath>
<SubPath ID="16" Name="CD_{wave}">DragCoefficients/C_D_wave/C_D_wave_total</SubPath>
<SubPath ID="17" Name="Wing Span">ReferenceValues/b</SubPath>
<SubPath ID="18" Name="S_{ref}">ReferenceValues/S_ref</SubPath>
</Aerodynamics>
<Propulsion>
<Parameters Desc="Number of sub-parameters in this block">0</Parameters>
<SubPath ID="1" Name="SLST">Engine@1/JetEngineData/SeaLevelStaticThrust</SubPath>
</Propulsion>
<Geometry>
<Parameters Desc="Number of sub-parameters in this block">0</Parameters>
<SubPath ID="1" Name="x_{wing}">LiftingSurface@MainWing/SurfaceRefPoint/r_Surface</SubPath>
<SubPath ID="2" Name="x_{stab}">LiftingSurface@Stabiliser/SurfaceRefPoint/r_Surface</SubPath>
</Geometry>
<Noise></Noise>
<EcologicalValues>
<Parameters Desc="Number of sub-parameters in this block">0</Parameters>
<SubPath ID="1" Name="CO2_LTO">Emissions/Operations/OperationComponents/Mission/LTO/CO2</SubPath>
<SubPath ID="2" Name="NOx_LTO">Emissions/Operations/OperationComponents/Mission/LTO/NOx</SubPath>
<SubPath ID="3" Name="CO2">Emissions/Operations/OperationComponents/Mission/Cruise/CO2</SubPath>
<SubPath ID="4" Name="NOx">Emissions/Operations/OperationComponents/Mission/Cruise/NOx</SubPath>
</EcologicalValues>
<MonetaryValues>
<Parameters Desc="Number of sub-parameters in this block">0</Parameters>
<SubPath ID="1" Name="DOC">LCC/OperatingCosts/DirectOperatingCosts/DOC_total/DOC_100ASK</SubPath>
<SubPath ID="2" Name="COC">LCC/OperatingCosts/DirectOperatingCosts/COC_total/COC_100ASK</SubPath>
</MonetaryValues>
<Systems>
<Parameters Desc="Number of sub-parameters in this block">0</Parameters>
<SubPath ID="1" Name="V_{fuel}">FuelTank/TotalFuelVolume</SubPath>
<SubPath ID="2" Name="P_{ATA21,el}">ATA21_EnvironmentalControlSystem/DesignPower/Electric</SubPath>
<SubPath ID="3" Name="P_{ATA21,hy}">ATA21_EnvironmentalControlSystem/DesignPower/Hydraulic</SubPath>
<SubPath ID="4" Name="P_{ATA21,bl}">ATA21_EnvironmentalControlSystem/DesignPower/BleedAir</SubPath>
<SubPath ID="5" Name="P_{ATA22,el}">ATA22_AutoFlight/DesignPower/Electric</SubPath>
<SubPath ID="6" Name="P_{ATA22,hy}">ATA22_AutoFlight/DesignPower/Hydraulic</SubPath>
<SubPath ID="7" Name="P_{ATA22,bl}">ATA22_AutoFlight/DesignPower/BleedAir</SubPath>
<SubPath ID="8" Name="P_{ATA23,el}">ATA23_Communication/DesignPower/Electric</SubPath>
<SubPath ID="9" Name="P_{ATA23,hy}">ATA23_Communication/DesignPower/Hydraulic</SubPath>
<SubPath ID="10" Name="P_{ATA23,bl}">ATA23_Communication/DesignPower/BleedAir</SubPath>
<SubPath ID="11" Name="P_{ATA24,el}">ATA24_ElectricSystem/DesignPower/Electric</SubPath>
<SubPath ID="12" Name="P_{ATA24,hy}">ATA24_ElectricSystem/DesignPower/Hydraulic</SubPath>
<SubPath ID="13" Name="P_{ATA24,bl}">ATA24_ElectricSystem/DesignPower/BleedAir</SubPath>
<SubPath ID="14" Name="P_{ATA25,el}">ATA25_Furnishing/DesignPower/Electric</SubPath>
<SubPath ID="15" Name="P_{ATA25,hy}">ATA25_Furnishing/DesignPower/Hydraulic</SubPath>
<SubPath ID="16" Name="P_{ATA25,bl}">ATA25_Furnishing/DesignPower/BleedAir</SubPath>
<SubPath ID="17" Name="P_{ATA26,el}">ATA26_FireProtection/DesignPower/Electric</SubPath>
<SubPath ID="18" Name="P_{ATA26,hy}">ATA26_FireProtection/DesignPower/Hydraulic</SubPath>
<SubPath ID="19" Name="P_{ATA26,bl}">ATA26_FireProtection/DesignPower/BleedAir</SubPath>
<SubPath ID="20" Name="P_{ATA27,el}">ATA27_FlightControlSystem/DesignPower/Electric</SubPath>
<SubPath ID="21" Name="P_{ATA27,hy}">ATA27_FlightControlSystem/DesignPower/Hydraulic</SubPath>
<SubPath ID="22" Name="P_{ATA27,bl}">ATA27_FlightControlSystem/DesignPower/BleedAir</SubPath>
<SubPath ID="23" Name="P_{ATA28,el}">ATA28_FuelSystem/DesignPower/Electric</SubPath>
<SubPath ID="24" Name="P_{ATA28,hy}">ATA28_FuelSystem/DesignPower/Hydraulic</SubPath>
<SubPath ID="25" Name="P_{ATA28,bl}">ATA28_FuelSystem/DesignPower/BleedAir</SubPath>
<SubPath ID="26" Name="P_{ATA29,el}">ATA29_HydraulicSystem/DesignPower/Electric</SubPath>
<SubPath ID="27" Name="P_{ATA29,hy}">ATA29_HydraulicSystem/DesignPower/Hydraulic</SubPath>
<SubPath ID="28" Name="P_{ATA29,bl}">ATA29_HydraulicSystem/DesignPower/BleedAir</SubPath>
<SubPath ID="29" Name="P_{ATA30,el}">ATA30_IceRainProtection/DesignPower/Electric</SubPath>
<SubPath ID="30" Name="P_{ATA30,hy}">ATA30_IceRainProtection/DesignPower/Hydraulic</SubPath>
<SubPath ID="31" Name="P_{ATA30,bl}">ATA30_IceRainProtection/DesignPower/BleedAir</SubPath>
<SubPath ID="32" Name="P_{ATA31,el}">ATA31_Instrumentation/DesignPower/Electric</SubPath>
<SubPath ID="33" Name="P_{ATA31,hy}">ATA31_Instrumentation/DesignPower/Hydraulic</SubPath>
<SubPath ID="34" Name="P_{ATA31,bl}">ATA31_Instrumentation/DesignPower/BleedAir</SubPath>
<SubPath ID="35" Name="P_{ATA32,el}">ATA32_LandingGear/DesignPower/Electric</SubPath>
<SubPath ID="36" Name="P_{ATA32,hy}">ATA32_LandingGear/DesignPower/Hydraulic</SubPath>
<SubPath ID="37" Name="P_{ATA32,bl}">ATA32_LandingGear/DesignPower/BleedAir</SubPath>
<SubPath ID="38" Name="P_{ATA33,el}">ATA33_Lights/DesignPower/Electric</SubPath>
<SubPath ID="39" Name="P_{ATA33,hy}">ATA33_Lights/DesignPower/Hydraulic</SubPath>
<SubPath ID="40" Name="P_{ATA33,bl}">ATA33_Lights/DesignPower/BleedAir</SubPath>
<SubPath ID="41" Name="P_{ATA34,el}">ATA34_Navigation/DesignPower/Electric</SubPath>
<SubPath ID="42" Name="P_{ATA34,hy}">ATA34_Navigation/DesignPower/Hydraulic</SubPath>
<SubPath ID="43" Name="P_{ATA34,bl}">ATA34_Navigation/DesignPower/BleedAir</SubPath>
<SubPath ID="44" Name="P_{ATA35,el}">ATA35_Oxygen/DesignPower/Electric</SubPath>
<SubPath ID="45" Name="P_{ATA35,hy}">ATA35_Oxygen/DesignPower/Hydraulic</SubPath>
<SubPath ID="46" Name="P_{ATA35,bl}">ATA35_Oxygen/DesignPower/BleedAir</SubPath>
<SubPath ID="47" Name="P_{ATA36,el}">ATA36_BleedAir/DesignPower/Electric</SubPath>
<SubPath ID="48" Name="P_{ATA36,hy}">ATA36_BleedAir/DesignPower/Hydraulic</SubPath>
<SubPath ID="49" Name="P_{ATA36,bl}">ATA36_BleedAir/DesignPower/BleedAir</SubPath>
<SubPath ID="50" Name="P_{ATA49,el}">ATA49_APU/DesignPower/Electric</SubPath>
<SubPath ID="51" Name="P_{ATA49,hy}">ATA49_APU/DesignPower/Hydraulic</SubPath>
<SubPath ID="52" Name="P_{ATA49,bl}">ATA49_APU/DesignPower/BleedAir</SubPath>
<SubPath ID="53" Name="P_{ATA70,el}">ATA70_PropulsionSystem/DesignPower/Electric</SubPath>
<SubPath ID="54" Name="P_{ATA70,hy}">ATA70_PropulsionSystem/DesignPower/Hydraulic</SubPath>
<SubPath ID="55" Name="P_{ATA70,bl}">ATA70_PropulsionSystem/DesignPower/BleedAir</SubPath>
</Systems>
<Accommodation>
<Parameters Desc="Number of sub-parameters in this block">0</Parameters>
</Accommodation>
</Parameters>
</ProgramSettings>
</ConfigFile>
...@@ -5,29 +5,61 @@ ...@@ -5,29 +5,61 @@
int main () { int main () {
std::filesystem::path upstream_file("./test-upstream-files/oldFormat-CSR.xml"); std::filesystem::path upstream_file{"./test-upstream-files/oldFormat-CSR.xml"};
std::filesystem::path local_file("./projects/oldFormat-CSR.xml"); std::filesystem::path local_file{"./projects/oldFormat-CSR.xml"};
boost::property_tree::ptree upstream_tree, local_tree; std::filesystem::path config_file{"./projects/designEvaluator_conf.xml"};
boost::property_tree::ptree upstream_tree{};
boost::property_tree::ptree local_tree{};
boost::property_tree::ptree config_tree{};
// Checking path properties // Checking path properties
if (std::filesystem::exists(upstream_file)) { if (std::filesystem::exists(upstream_file)) {
std::cout << "File exists" << std::endl; std::cout << "\"" << upstream_file.string() << "\" - " << "File exists." << std::endl;
} }
if (std::filesystem::exists(local_file)) { if (std::filesystem::exists(local_file)) {
std::cout << "File exists" << std::endl; std::cout << "\"" << local_file.string() << "\" - " << "File exists." << std::endl;
}
if (std::filesystem::exists(config_file)) {
std::cout << "\"" << config_file.string() << "\" - " << "File exists." << std::endl;
} }
// Accessing path components // load xml into trees
std::cout << upstream_file.root_name() << std::endl;
std::cout << upstream_file.parent_path() << std::endl;
std::cout << upstream_file.filename() << std::endl;
std::cout << upstream_file.extension() << std::endl;
try try
{ {
boost::property_tree::read_xml(upstream_file.string(), upstream_tree); boost::property_tree::read_xml(upstream_file.string(), upstream_tree);
boost::property_tree::read_xml(local_file.string(), local_tree); boost::property_tree::read_xml(local_file.string(), local_tree);
boost::property_tree::read_xml(config_file.string(), config_tree);
}
catch(const std::exception& e)
{
std::cerr << "Error creating xml tree: " << e.what() << std::endl;
return 1;
}
// CONFIG
try
{
auto myNodeValue = config_tree.get<std::string>("ConfigFile.ControlSettings.IOFileName"); // acess node value
auto myNodeAtrribute = config_tree.get<int>("ConfigFile.ControlSettings.PlotOutputOn.<xmlattr>.CopyPlottingFiles"); // access node attribute
std::cout << "Node name is: " << myNodeValue << std::endl;
std::cout << "Node attribute is: " << myNodeAtrribute << std::endl;
boost::property_tree::ptree sub_tree = config_tree.get_child("ConfigFile.ProgramSettings.Parameters");
std::vector<std::string> myVector{};
// Iterate through all children of the parent node
for (const auto &child : sub_tree) {
for (const auto &sub_child : child.second) {
if (sub_child.first == "SubPath") {
myVector.push_back(child.first + '/' + sub_child.second.data());
}
}
}
for (const auto &iterator : myVector) {
std::cout << iterator << std::endl;
}
} }
catch(const std::exception& e) catch(const std::exception& e)
{ {
...@@ -35,8 +67,38 @@ int main () { ...@@ -35,8 +67,38 @@ int main () {
return 1; return 1;
} }
// UPSTREAM
try
{
auto myNodeValue = upstream_tree.get<std::string>("AcftExchangeFile.MassesAndLoadings.MTOM"); // acess node value
std::cout << "UPSTREAM: " << myNodeValue << std::endl;
}
catch(const std::exception& e)
{
std::cerr << "Error parsing XML: " << e.what() << std::endl;
return 1;
}
// LOCAL
try
{
auto myNodeValue = local_tree.get<std::string>("AcftExchangeFile.MassesAndLoadings.MTOM"); // acess node value
std::cout << "LOCAL: " << myNodeValue << std::endl;
}
catch(const std::exception& e)
{
std::cerr << "Error parsing XML: " << e.what() << std::endl;
return 1;
}
std::cout << "Hello World!" << std::endl; // // Accessing path components
// std::cout << upstream_file.root_name() << std::endl;
// std::cout << upstream_file.parent_path() << std::endl;
// std::cout << upstream_file.filename() << std::endl;
// std::cout << upstream_file.extension() << std::endl;
// std::cout << "Hello World!" << std::endl;
return 0; return 0;
} }
\ No newline at end of file
Source diff could not be displayed: it is too large. Options to address this: view the blob.
Source diff could not be displayed: it is too large. Options to address this: view the blob.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment