Commit f2dadc47 authored by Federico Montesino Pouzols's avatar Federico Montesino Pouzols
Browse files

Merge remote-tracking branch 'origin/master' into 15246_reduce_recursive_includes_in_Algorithm.h

Fixed conflicts with last few days changes in master, especially with InstrumentWidget files that
have been moved and revamped, re #15246.
parents ad814ae0 7888407a
......@@ -360,7 +360,7 @@ int Sample::loadNexus(::NeXus::File *file, const std::string &group) {
int num_other_samples;
file->readData("num_other_samples", num_other_samples);
for (int i = 0; i < num_other_samples; i++) {
boost::shared_ptr<Sample> extra(new Sample);
auto extra = boost::make_shared<Sample>();
extra->loadNexus(file, "sample" + Strings::toString(i + 1));
this->addSample(extra);
}
......
......@@ -43,9 +43,11 @@ public:
"OutputWorkspace2", "", Direction::Output, PropertyMode::Optional));
}
void exec() {
boost::shared_ptr<WorkspaceTester> out1(new WorkspaceTester());
boost::shared_ptr<WorkspaceTester> out1 =
boost::make_shared<WorkspaceTester>();
out1->init(10, 10, 10);
boost::shared_ptr<WorkspaceTester> out2(new WorkspaceTester());
boost::shared_ptr<WorkspaceTester> out2 =
boost::make_shared<WorkspaceTester>();
out2->init(10, 10, 10);
std::string outName = getPropertyValue("InputWorkspace1") + "+" +
getPropertyValue("InputWorkspace2") + "+" +
......@@ -438,7 +440,8 @@ public:
void do_test_locking(std::string in1, std::string in2, std::string inout,
std::string out1, std::string out2) {
for (size_t i = 0; i < 6; i++) {
boost::shared_ptr<WorkspaceTester> ws(new WorkspaceTester());
boost::shared_ptr<WorkspaceTester> ws =
boost::make_shared<WorkspaceTester>();
AnalysisDataService::Instance().addOrReplace("ws" + Strings::toString(i),
ws);
}
......@@ -474,7 +477,8 @@ public:
/** Have a workspace property that does NOT lock the workspace.
* The failure mode of this test is HANGING. */
void test_workspace_notLocking() {
boost::shared_ptr<WorkspaceTester> ws1(new WorkspaceTester());
boost::shared_ptr<WorkspaceTester> ws1 =
boost::make_shared<WorkspaceTester>();
AnalysisDataService::Instance().addOrReplace("ws1", ws1);
{
......@@ -511,7 +515,8 @@ public:
if (contents1.empty()) {
if (group1.empty())
return;
boost::shared_ptr<WorkspaceTester> ws(new WorkspaceTester());
boost::shared_ptr<WorkspaceTester> ws =
boost::make_shared<WorkspaceTester>();
AnalysisDataService::Instance().addOrReplace(group1, ws);
return;
}
......@@ -524,7 +529,8 @@ public:
AnalysisDataService::Instance().addOrReplace(group1, wsGroup);
std::vector<std::string>::iterator it = names.begin();
for (; it != names.end(); it++) {
boost::shared_ptr<WorkspaceTester> ws(new WorkspaceTester());
boost::shared_ptr<WorkspaceTester> ws =
boost::make_shared<WorkspaceTester>();
ws->init(10, 10, 10);
AnalysisDataService::Instance().addOrReplace(*it, ws);
wsGroup->add(*it);
......
......@@ -132,7 +132,8 @@ class DataProcessorAlgorithmTest : public CxxTest::TestSuite {
alg->initialize();
alg->execute();
boost::shared_ptr<MatrixWorkspace> output(new WorkspaceTester());
boost::shared_ptr<MatrixWorkspace> output =
boost::make_shared<WorkspaceTester>();
setProperty("OutputWorkspace", output);
}
};
......@@ -161,7 +162,8 @@ public:
}
void test_Nested_History() {
boost::shared_ptr<WorkspaceTester> input(new WorkspaceTester());
boost::shared_ptr<WorkspaceTester> input =
boost::make_shared<WorkspaceTester>();
AnalysisDataService::Instance().addOrReplace("test_input_workspace", input);
TopLevelAlgorithm alg;
......@@ -204,7 +206,8 @@ public:
}
void test_Dont_Record_Nested_History() {
boost::shared_ptr<WorkspaceTester> input(new WorkspaceTester());
boost::shared_ptr<WorkspaceTester> input =
boost::make_shared<WorkspaceTester>();
AnalysisDataService::Instance().addOrReplace("test_input_workspace", input);
TopLevelAlgorithm alg;
......
......@@ -32,8 +32,10 @@ public:
};
void test_enable_disable() {
boost::shared_ptr<WorkspaceTester> ws1(new WorkspaceTester);
boost::shared_ptr<WorkspaceTesterSubClass> ws2(new WorkspaceTesterSubClass);
boost::shared_ptr<WorkspaceTester> ws1 =
boost::make_shared<WorkspaceTester>();
boost::shared_ptr<WorkspaceTesterSubClass> ws2 =
boost::make_shared<WorkspaceTesterSubClass>();
AnalysisDataService::Instance().addOrReplace("tester", ws1);
AnalysisDataService::Instance().addOrReplace("testersub", ws2);
......
......@@ -77,7 +77,7 @@ public:
void test_GetSetInstrument_default() {
ExperimentInfo ws;
boost::shared_ptr<Instrument> inst1(new Instrument());
boost::shared_ptr<Instrument> inst1 = boost::make_shared<Instrument>();
inst1->setName("MyTestInst");
ws.setInstrument(inst1);
......@@ -274,7 +274,7 @@ public:
ws.mutableSample().setName("test");
OrientedLattice latt(1, 2, 3, 90, 90, 90);
ws.mutableSample().setOrientedLattice(&latt);
boost::shared_ptr<Instrument> inst1(new Instrument());
boost::shared_ptr<Instrument> inst1 = boost::make_shared<Instrument>();
inst1->setName("MyTestInst");
ws.setInstrument(inst1);
ws.setModeratorModel(new FakeSource);
......@@ -291,7 +291,7 @@ public:
ws.mutableSample().setName("test");
OrientedLattice latt(1, 2, 3, 90, 90, 90);
ws.mutableSample().setOrientedLattice(&latt);
boost::shared_ptr<Instrument> inst1(new Instrument());
boost::shared_ptr<Instrument> inst1 = boost::make_shared<Instrument>();
inst1->setName("MyTestInst");
ws.setInstrument(inst1);
ws.setModeratorModel(new FakeSource);
......@@ -308,7 +308,7 @@ public:
ws.mutableSample().setName("test");
OrientedLattice latt(1, 2, 3, 90, 90, 90);
ws.mutableSample().setOrientedLattice(&latt);
boost::shared_ptr<Instrument> inst1(new Instrument());
boost::shared_ptr<Instrument> inst1 = boost::make_shared<Instrument>();
inst1->setName("MyTestInst");
ws.setInstrument(inst1);
ws.setModeratorModel(new FakeSource);
......@@ -564,7 +564,7 @@ public:
NexusTestHelper th(true);
th.createFile(filename);
ExperimentInfo ws;
boost::shared_ptr<Instrument> inst1(new Instrument());
boost::shared_ptr<Instrument> inst1 = boost::make_shared<Instrument>();
inst1->setName("GEM");
inst1->setFilename("GEM_Definition.xml");
inst1->setXmlText("");
......@@ -590,7 +590,7 @@ public:
NexusTestHelper th(true);
th.createFile(filename);
ExperimentInfo ws;
boost::shared_ptr<Instrument> inst1(new Instrument());
boost::shared_ptr<Instrument> inst1 = boost::make_shared<Instrument>();
inst1->setName("");
inst1->setFilename("");
inst1->setXmlText("");
......@@ -760,7 +760,7 @@ private:
ExperimentInfo_sptr createTestInfoWithChopperPoints(const size_t npoints) {
ExperimentInfo_sptr exptInfo(new ExperimentInfo);
boost::shared_ptr<Instrument> inst1(new Instrument());
boost::shared_ptr<Instrument> inst1 = boost::make_shared<Instrument>();
inst1->setName("MyTestInst");
auto source = new ObjComponent("source");
inst1->add(source);
......
......@@ -74,8 +74,10 @@ public:
void test_clear_original_workspaces() {
MDGeometry geometry;
boost::shared_ptr<WorkspaceTester> ws0(new WorkspaceTester());
boost::shared_ptr<WorkspaceTester> ws1(new WorkspaceTester());
boost::shared_ptr<WorkspaceTester> ws0 =
boost::make_shared<WorkspaceTester>();
boost::shared_ptr<WorkspaceTester> ws1 =
boost::make_shared<WorkspaceTester>();
geometry.setOriginalWorkspace(ws0, 0);
geometry.setOriginalWorkspace(ws1, 1);
TS_ASSERT_EQUALS(2, geometry.numOriginalWorkspaces());
......@@ -95,8 +97,10 @@ public:
g.setBasisVector(0, VMD(1.2, 3.4));
g.setBasisVector(1, VMD(1.2, 3.4));
g.setOrigin(VMD(4, 5));
boost::shared_ptr<WorkspaceTester> ws0(new WorkspaceTester());
boost::shared_ptr<WorkspaceTester> ws1(new WorkspaceTester());
boost::shared_ptr<WorkspaceTester> ws0 =
boost::make_shared<WorkspaceTester>();
boost::shared_ptr<WorkspaceTester> ws1 =
boost::make_shared<WorkspaceTester>();
g.setOriginalWorkspace(ws0, 0);
g.setOriginalWorkspace(ws1, 1);
g.setTransformFromOriginal(new NullCoordTransform(5), 0);
......@@ -162,7 +166,8 @@ public:
new MDHistoDimension("Qy", "Qy", frame, -2, +2, 0));
TS_ASSERT_THROWS_NOTHING(g.addDimension(dim2);)
TS_ASSERT_EQUALS(g.getNumDims(), 2);
boost::shared_ptr<WorkspaceTester> ws(new WorkspaceTester());
boost::shared_ptr<WorkspaceTester> ws =
boost::make_shared<WorkspaceTester>();
g.setOriginalWorkspace(ws);
TS_ASSERT(g.hasOriginalWorkspace());
......@@ -198,7 +203,8 @@ public:
void test_OriginalWorkspace() {
MDGeometry g;
TS_ASSERT(!g.hasOriginalWorkspace());
boost::shared_ptr<WorkspaceTester> ws(new WorkspaceTester());
boost::shared_ptr<WorkspaceTester> ws =
boost::make_shared<WorkspaceTester>();
g.setOriginalWorkspace(ws);
TS_ASSERT(g.hasOriginalWorkspace());
}
......@@ -206,8 +212,10 @@ public:
void test_OriginalWorkspace_multiple() {
MDGeometry g;
TS_ASSERT(!g.hasOriginalWorkspace());
boost::shared_ptr<WorkspaceTester> ws0(new WorkspaceTester());
boost::shared_ptr<WorkspaceTester> ws1(new WorkspaceTester());
boost::shared_ptr<WorkspaceTester> ws0 =
boost::make_shared<WorkspaceTester>();
boost::shared_ptr<WorkspaceTester> ws1 =
boost::make_shared<WorkspaceTester>();
g.setOriginalWorkspace(ws0);
g.setOriginalWorkspace(ws1, 1);
TS_ASSERT(g.hasOriginalWorkspace());
......@@ -221,7 +229,8 @@ public:
void test_OriginalWorkspace_gets_deleted() {
MDGeometry g;
{
boost::shared_ptr<WorkspaceTester> ws(new WorkspaceTester());
boost::shared_ptr<WorkspaceTester> ws =
boost::make_shared<WorkspaceTester>();
AnalysisDataService::Instance().addOrReplace("MDGeometryTest_originalWS",
ws);
g.setOriginalWorkspace(ws);
......@@ -231,7 +240,8 @@ public:
TS_ASSERT(g.getOriginalWorkspace())
// Create a different workspace and delete that
boost::shared_ptr<WorkspaceTester> ws2(new WorkspaceTester());
boost::shared_ptr<WorkspaceTester> ws2 =
boost::make_shared<WorkspaceTester>();
AnalysisDataService::Instance().addOrReplace("MDGeometryTest_some_other_ws",
ws2);
AnalysisDataService::Instance().remove("MDGeometryTest_some_other_ws");
......
......@@ -16,7 +16,8 @@ using namespace Mantid::Geometry;
class MatrixWorkspaceMDIteratorTest : public CxxTest::TestSuite {
public:
boost::shared_ptr<MatrixWorkspace> makeFakeWS() {
boost::shared_ptr<MatrixWorkspace> ws(new WorkspaceTester());
boost::shared_ptr<MatrixWorkspace> ws =
boost::make_shared<WorkspaceTester>();
// Matrix with 4 spectra, 5 bins each
ws->initialize(4, 6, 5);
NumericAxis *ax1 = new NumericAxis(4);
......
......@@ -144,7 +144,8 @@ public:
}
void testDetectorMappingCopiedWhenAWorkspaceIsCopied() {
boost::shared_ptr<MatrixWorkspace> parent(new WorkspaceTester);
boost::shared_ptr<MatrixWorkspace> parent =
boost::make_shared<WorkspaceTester>();
parent->initialize(1, 1, 1);
parent->getSpectrum(0)->setSpectrumNo(99);
parent->getSpectrum(0)->setDetectorID(999);
......
......@@ -139,7 +139,8 @@ class NotebookBuilderTest : public CxxTest::TestSuite {
alg->initialize();
alg->execute();
boost::shared_ptr<MatrixWorkspace> output(new WorkspaceTester());
boost::shared_ptr<MatrixWorkspace> output =
boost::make_shared<WorkspaceTester>();
setProperty("OutputWorkspace", output);
}
};
......@@ -166,7 +167,8 @@ public:
"\"TopLevelAlgorithm(InputWorkspace='test_input_"
"workspace', "
"OutputWorkspace='test_output_workspace')\",";
boost::shared_ptr<WorkspaceTester> input(new WorkspaceTester());
boost::shared_ptr<WorkspaceTester> input =
boost::make_shared<WorkspaceTester>();
AnalysisDataService::Instance().addOrReplace("test_input_workspace", input);
auto alg = AlgorithmFactory::Instance().create("TopLevelAlgorithm", 1);
......@@ -203,7 +205,8 @@ public:
std::string result_code =
" \"input\" : \"BasicAlgorithm(PropertyA='FirstOne')\",";
boost::shared_ptr<WorkspaceTester> input(new WorkspaceTester());
boost::shared_ptr<WorkspaceTester> input =
boost::make_shared<WorkspaceTester>();
AnalysisDataService::Instance().addOrReplace("test_input_workspace", input);
auto alg = AlgorithmFactory::Instance().create("TopLevelAlgorithm", 1);
......@@ -242,7 +245,8 @@ public:
std::string result_code =
" \"input\" : \"BasicAlgorithm(PropertyA='FirstOne')\",";
boost::shared_ptr<WorkspaceTester> input(new WorkspaceTester());
boost::shared_ptr<WorkspaceTester> input =
boost::make_shared<WorkspaceTester>();
AnalysisDataService::Instance().addOrReplace("test_input_workspace", input);
auto alg = AlgorithmFactory::Instance().create("TopLevelAlgorithm", 1);
......@@ -291,7 +295,8 @@ public:
"\"TopLevelAlgorithm(InputWorkspace=r'test_inp\\\\ut_"
"workspace', "
"OutputWorkspace='test_output_workspace')\",";
boost::shared_ptr<WorkspaceTester> input(new WorkspaceTester());
boost::shared_ptr<WorkspaceTester> input =
boost::make_shared<WorkspaceTester>();
AnalysisDataService::Instance().addOrReplace("test_inp\\ut_workspace",
input);
......
......@@ -286,7 +286,7 @@ public:
void test_Multiple_Samples() {
Sample sample;
sample.setName("test name for test_Multiple_Sample");
boost::shared_ptr<Sample> sample2 = boost::shared_ptr<Sample>(new Sample());
auto sample2 = boost::make_shared<Sample>();
sample2->setName("test name for test_Multiple_Sample - 2");
TS_ASSERT_EQUALS(sample.size(), 1);
......@@ -315,7 +315,7 @@ public:
sample.setWidth(1.234);
OrientedLattice latt(4, 5, 6, 90, 91, 92);
sample.setOrientedLattice(&latt);
boost::shared_ptr<Sample> sample2 = boost::shared_ptr<Sample>(new Sample());
auto sample2 = boost::make_shared<Sample>();
sample2->setName("test name for test_Multiple_Sample - 2");
sample.addSample(sample2);
TS_ASSERT(sample.getShape().getShapeXML() != "");
......
......@@ -139,7 +139,8 @@ class ScriptBuilderTest : public CxxTest::TestSuite {
alg->initialize();
alg->execute();
boost::shared_ptr<MatrixWorkspace> output(new WorkspaceTester());
boost::shared_ptr<MatrixWorkspace> output =
boost::make_shared<WorkspaceTester>();
setProperty("OutputWorkspace", output);
}
};
......@@ -166,7 +167,8 @@ public:
"workspace', "
"OutputWorkspace='test_output_workspace')",
""};
boost::shared_ptr<WorkspaceTester> input(new WorkspaceTester());
boost::shared_ptr<WorkspaceTester> input =
boost::make_shared<WorkspaceTester>();
AnalysisDataService::Instance().addOrReplace("test_input_workspace", input);
auto alg = AlgorithmFactory::Instance().create("TopLevelAlgorithm", 1);
......@@ -209,7 +211,8 @@ public:
"# End of child algorithms of TopLevelAlgorithm", "", "",
};
boost::shared_ptr<WorkspaceTester> input(new WorkspaceTester());
boost::shared_ptr<WorkspaceTester> input =
boost::make_shared<WorkspaceTester>();
AnalysisDataService::Instance().addOrReplace("test_input_workspace", input);
auto alg = AlgorithmFactory::Instance().create("TopLevelAlgorithm", 1);
......@@ -253,7 +256,8 @@ public:
"", "",
};
boost::shared_ptr<WorkspaceTester> input(new WorkspaceTester());
boost::shared_ptr<WorkspaceTester> input =
boost::make_shared<WorkspaceTester>();
AnalysisDataService::Instance().addOrReplace("test_input_workspace", input);
auto alg = AlgorithmFactory::Instance().create("TopLevelAlgorithm", 1);
......@@ -300,7 +304,8 @@ public:
"workspace', "
"OutputWorkspace='test_output_workspace')",
""};
boost::shared_ptr<WorkspaceTester> input(new WorkspaceTester());
boost::shared_ptr<WorkspaceTester> input =
boost::make_shared<WorkspaceTester>();
AnalysisDataService::Instance().addOrReplace("test_inp\\ut_workspace",
input);
......
......@@ -69,7 +69,8 @@ private:
/// Make a simple group
WorkspaceGroup_sptr makeGroup() {
for (size_t i = 0; i < 3; i++) {
boost::shared_ptr<WorkspaceTester> ws(new WorkspaceTester());
boost::shared_ptr<WorkspaceTester> ws =
boost::make_shared<WorkspaceTester>();
ws->initialize(2, 3, 4);
AnalysisDataService::Instance().addOrReplace("ws" + Strings::toString(i),
ws);
......@@ -238,7 +239,8 @@ public:
AnalysisDataService::Instance().add("name", group);
TSM_ASSERT("Empty group is not similar", !group->areNamesSimilar());
boost::shared_ptr<WorkspaceTester> ws(new WorkspaceTester());
boost::shared_ptr<WorkspaceTester> ws =
boost::make_shared<WorkspaceTester>();
ws->initialize(2, 3, 4);
AnalysisDataService::Instance().addOrReplace("name_0", ws);
......
......@@ -3,7 +3,6 @@
#include "MantidKernel/System.h"
#include "MantidAPI/DataProcessorAlgorithm.h"
#include "MantidAPI/DeprecatedAlgorithm.h"
namespace Mantid {
namespace Algorithms {
......@@ -32,8 +31,7 @@ namespace Algorithms {
File change history is stored at: <https://github.com/mantidproject/mantid>
Code Documentation is available at: <http://doxygen.mantidproject.org>
*/
class DLLExport PerformIndexOperations : public API::DataProcessorAlgorithm,
public API::DeprecatedAlgorithm {
class DLLExport PerformIndexOperations : public API::DataProcessorAlgorithm {
public:
PerformIndexOperations();
virtual ~PerformIndexOperations();
......
......@@ -111,9 +111,8 @@ void CalculateTransmissionBeamSpreader::exec() {
}
// Extract the required spectra into separate workspaces
std::vector<detid_t> udets;
std::vector<detid_t> udets{getProperty("IncidentBeamMonitor")};
std::vector<size_t> indices;
udets.push_back(getProperty("IncidentBeamMonitor"));
// Convert UDETs to workspace indices
// Get monitors (assume that the detector mapping is the same for all data
......@@ -142,11 +141,10 @@ void CalculateTransmissionBeamSpreader::exec() {
// Note: Replaced PARALLEL_SECTION with this OMP for loop, due to occasional
// unexplained segfault.
std::vector<MatrixWorkspace_sptr> in_ws, out_ws(4);
in_ws.push_back(sample_scatterWS);
in_ws.push_back(direct_scatterWS);
in_ws.push_back(sample_spreaderWS);
in_ws.push_back(direct_spreaderWS);
std::vector<MatrixWorkspace_sptr> in_ws{sample_scatterWS, direct_scatterWS,
sample_spreaderWS, direct_spreaderWS};
std::vector<MatrixWorkspace_sptr> out_ws(4);
PARALLEL_FOR_IF(true)
for (int i = 0; i < 4; i++) {
......
......@@ -189,8 +189,7 @@ void ConvertAxisByFormula::exec() {
if (axisUnits == "") {
axisUnits = axisPtr->unit()->label();
}
axisPtr->unit() =
boost::shared_ptr<Unit>(new Units::Label(axisTitle, axisUnits));
axisPtr->unit() = boost::make_shared<Units::Label>(axisTitle, axisUnits);
}
}
......
......@@ -97,9 +97,8 @@ void ConvertSpectrumAxis::exec() {
const double delta = 0.0;
double efixed;
for (size_t i = 0; i < nHist; i++) {
std::vector<double> xval;
xval.push_back(inputWS->readX(i).front());
xval.push_back(inputWS->readX(i).back());
std::vector<double> xval{inputWS->readX(i).front(),
inputWS->readX(i).back()};
IDetector_const_sptr detector = inputWS->getDetector(i);
double twoTheta, l1val, l2;
if (!detector->isMonitor()) {
......@@ -156,7 +155,7 @@ void ConvertSpectrumAxis::exec() {
outputWS->replaceAxis(1, newAxis);
// The unit of this axis is radians. Use the 'radians' unit defined above.
if (unitTarget == "theta" || unitTarget == "signed_theta") {
newAxis->unit() = boost::shared_ptr<Unit>(new Units::Degrees);
newAxis->unit() = boost::make_shared<Units::Degrees>();
} else {
newAxis->unit() = UnitFactory::Instance().create(unitTarget);
}
......
......@@ -220,7 +220,7 @@ MatrixWorkspace_sptr ConvertSpectrumAxis2::createOutputWorkspace(
// Set the units of the axis.
if (targetUnit == "theta" || targetUnit == "Theta" ||
targetUnit == "signed_theta" || targetUnit == "SignedTheta") {
newAxis->unit() = boost::shared_ptr<Unit>(new Units::Degrees);
newAxis->unit() = boost::make_shared<Units::Degrees>();
} else if (targetUnit == "ElasticQ") {
newAxis->unit() = UnitFactory::Instance().create("MomentumTransfer");
} else if (targetUnit == "ElasticQSquared") {
......
......@@ -597,12 +597,7 @@ const std::vector<double> ConvertUnits::calculateRebinParams(
const double step =
(XMax - XMin) / static_cast<double>(workspace->blocksize());
std::vector<double> retval;
retval.push_back(XMin);
retval.push_back(step);
retval.push_back(XMax);
return retval;
return {XMin, step, XMax};
}
/** Reverses the workspace if X values are in descending order
......
......@@ -564,12 +564,7 @@ const std::vector<double> ConvertUnitsUsingDetectorTable::calculateRebinParams(
const double step =
(XMax - XMin) / static_cast<double>(workspace->blocksize());
std::vector<double> retval;
retval.push_back(XMin);
retval.push_back(step);
retval.push_back(XMax);
return retval;
return {XMin, step, XMax};
}
/** Reverses the workspace if X values are in descending order
......
......@@ -190,6 +190,7 @@ retrieveMatrixWsList(const std::vector<std::string> &wsNames,
// Retrieve pointers to all the child workspaces.
std::vector<MatrixWorkspace_sptr> childWsList;
childWsList.reserve(childNames.size());
for (const auto &childName : childNames) {
childWsList.push_back(
AnalysisDataService::Instance().retrieveWS<MatrixWorkspace>(
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment