Commit 1742a7f7 authored by Adam P. Goucher's avatar Adam P. Goucher
Browse files

Use Snarkmaker recipe whenever detritus is on the channel

parent 1e72dd94
[0, 109, 91, 93, 90, 132, 115, 127, 91, 90, 91, 95, 90, 114, 162, 233,
159, 90, 155, 126, 93, 118, 90, 91, 90, 90, 109, 91, 94, 91, 91, 92,
90, 169, 91, 90, 116, 90, 113, 90, 109, 91, 93, 91, 156, 91, 91, 94,
90, 91, 140, 91, 103, 91, 91, 132, 90, 109, 90, 93, 91, 91, 90, 90,
100, 90, 90, 146, 96, 90, 90, 90, 92, 156, 144, 90, 109, 91, 93, 91,
132, 115, 102, 90, 91, 91, 91, 90, 90, 154, 98, 93, 91, 118, 91, 151,
90, 159, 91, 92, 90, 136, 90, 90, 154, 90, 101, 104, 165, 129, 91, 109,
91, 93, 91, 97, 90, 91, 111, 91, 116, 91, 94, 330, 91, 90, 95, 91,
90, 90, 91, 123, 90, 91, 152, 90, 90, 93, 91, 116, 91, 131, 91, 95,
188, 113, 91, 91, 147, 122, 91, 173, 91, 91, 133, 247, 92, 90, 109, 91,
93, 91, 129, 148, 91, 93, 154, 90, 134, 91, 91, 90, 91, 91, 111, 91,
91, 91, 91, 91, 109, 90, 93, 91, 91, 158, 94, 113, 91, 90, 91, 96,
90, 142, 91, 109, 91, 94, 91, 91, 179, 91, 90, 94, 91, 114, 90, 166,
90, 90, 90, 91, 117, 90, 96, 90, 90, 95, 91, 91, 109, 91, 93, 90,
156, 91, 91, 94, 91, 90, 147, 117, 91, 144, 90, 91, 128, 100, 91, 90,
105, 91, 91, 109, 91, 94, 91, 91, 124, 91, 105, 90, 169, 91, 90, 116,
91, 142, 90, 90, 91, 109, 91, 93, 91, 92, 91, 90, 90, 95, 102, 91,
91, 91, 130, 91, 90, 136, 91, 91, 119, 113, 90, 91, 114, 90, 109, 91,
94, 91, 91, 179, 91, 90, 94, 91, 102, 91, 151, 90, 90, 101, 90, 91,
125, 184, 90, 90, 90, 109, 91, 94, 91, 91, 179, 91, 90, 94, 91, 102,
91, 151, 90, 90, 101, 90, 91, 125, 184, 90, 90, 90, 109, 91, 93, 90,
140, 150, 132, 212, 103, 90, 98, 90, 148, 90, 90, 91, 91, 91, 119, 101,
108, 90, 91, 91, 119, 90, 109, 91, 94, 91, 90, 99, 90, 112, 90, 91,
105, 90, 121, 118, 103, 90, 144, 117, 95, 91, 109, 91, 93, 91, 92, 91,
90, 90, 95, 102, 91, 91, 91, 130, 91, 90, 136, 91, 91, 119, 113, 90,
91, 114, 91, 109, 90, 93, 91, 91, 181, 90, 95, 110, 114, 100, 160, 90,
143, 91, 119, 90, 106, 129, 109, 91, 93, 91, 92, 91, 90, 90, 162, 91,
91, 90, 129, 91, 113, 90, 90, 90, 90, 109, 91, 93, 90, 140, 150, 142,
91, 90, 111, 91, 91, 193, 97, 91, 91, 155, 90, 98, 90, 91, 93, 91,
151, 90, 139, 180, 103, 115, 167, 91, 120, 139, 135, 91, 91, 170, 109, 91,
93, 90, 155, 106, 91, 121, 90, 90, 91, 137, 90, 232, 90, 91, 91, 94,
90, 171, 90, 91, 103, 102, 109, 91, 93, 91, 137, 90, 166, 91, 102, 90,
104, 91, 96, 96, 91, 90, 90, 90, 166, 90, 90, 93, 90, 91, 109, 91,
94, 91, 91, 124, 91, 105, 91, 119, 91, 132, 99, 90, 90, 90, 150, 160,
116, 91, 91, 91, 90, 96, 90, 90, 109, 91, 93, 90, 171, 90, 90, 91,
90, 91, 90, 91, 129, 144, 90, 90, 120, 90, 91, 91, 169, 90, 91, 109,
91, 93, 91, 118, 90, 91, 91, 91, 104, 219, 91, 135, 105, 154, 90, 91,
164, 91, 132, 90, 90, 140, 94, 93, 90, 96, 90, 90, 91, 149, 90, 90,
161, 100, 109, 91, 93, 91, 92, 91, 90, 90, 124, 91, 142, 90, 90, 91,
91, 112, 90, 102, 102, 103, 90, 90, 90, 117, 112, 90, 189, 90, 90, 109,
91, 93, 91, 92, 91, 90, 90, 162, 91, 91, 90, 129, 91, 113, 90, 90,
90, 90, 109, 91, 93, 91, 92, 90, 97, 91, 116, 91, 145, 90, 91, 98,
90, 90, 188, 91, 91, 91, 90, 115, 91, 109, 91, 93, 91, 97, 91, 90,
91, 120, 91, 117, 91, 123, 90, 118, 91, 146, 110, 160, 90, 109, 91, 93,
90, 129, 148, 90, 93, 90, 143, 96, 92, 90, 165, 90, 118, 90, 90, 91,
91, 109, 91, 94, 91, 91, 93, 90, 158, 90, 91, 90, 90, 116, 104, 109,
91, 94, 91, 91, 167, 90, 90, 91, 95, 90, 90, 148, 90, 151, 90, 90,
136, 134, 155, 115, 103, 91, 109, 91, 93, 90, 155, 106, 91, 121, 90, 90,
91, 137, 90, 232, 90, 91, 91, 94, 90, 171, 90, 91, 103, 101, 109, 91,
94, 91, 91, 136, 91, 91, 90, 168, 90, 90, 110, 90, 90, 93, 91, 111,
91, 91, 90, 132, 91, 91, 93, 91, 118, 90, 137, 91, 173, 93, 158, 90,
90, 90, 118, 90, 91, 90, 151, 154, 167, 91, 133, 90, 119, 178, 155, 90,
90, 90, 109, 91, 94, 91, 91, 95, 91, 90, 93, 218, 142, 90, 91, 161,
90, 138, 90, 162, 91, 90, 140, 95, 109, 109, 91, 93, 91, 92, 91, 98,
201, 91, 129, 90, 90, 90, 90, 90, 103, 90, 108, 90, 104, 90, 109, 91,
93, 90, 129, 148, 90, 93, 90, 143, 96, 92, 90, 165, 90, 118, 90, 90,
91, 91, 109, 91, 94, 91, 91, 179, 91, 90, 94, 91, 111, 90, 90, 90,
171, 91, 110, 91, 154, 90, 132, 91, 109, 91, 94, 91, 91, 124, 90, 144,
90, 90, 90, 165, 119, 90, 104, 90, 100, 90, 90, 91, 109, 91, 93, 91,
92, 91, 90, 90, 162, 91, 91, 90, 129, 91, 113, 90, 90, 90, 91, 109,
91, 94, 91, 91, 95, 91, 90, 93, 218, 172, 90, 90, 90, 116, 112, 341,
107, 106, 90, 163, 91, 90, 109, 91, 93, 90, 169, 90, 91, 103, 91, 133,
90, 90, 91, 91, 90, 110, 91, 93, 90, 112, 171, 90, 109, 91, 94, 91,
91, 171, 91, 90, 113, 90, 97, 114, 90, 105, 90, 139, 90, 113, 90, 106,
98, 121, 90, 109, 91, 94, 91, 91, 124, 90, 142, 90, 90, 146, 91, 153,
90, 102, 91, 152, 108, 97, 91, 109, 91, 94, 91, 91, 124, 90, 170, 90,
90, 91, 90, 99, 91, 90, 91, 110, 121, 161, 117, 115, 137, 90, 91, 90,
109, 90, 93, 91, 91, 128, 90, 139, 91, 90, 97, 91, 124, 157, 91, 90,
90, 129, 144, 91, 91, 147, 130, 91, 90, 90, 91, 90, 140, 90, 92, 90,
90, 109, 91, 93, 90, 156, 91, 91, 102, 91, 91, 90, 90, 106, 91, 166,
90, 125, 91, 90, 126, 91, 109, 91, 94, 91, 91, 179, 91, 90, 94, 91,
102, 91, 151, 90, 90, 101, 90, 91, 125, 184, 90, 90, 90, 93, 91, 151,
90, 139, 180, 103, 115, 167, 91, 120, 139, 135, 91, 91, 170, 109, 90, 93,
91, 91, 128, 90, 139, 91, 90, 97, 91, 124, 157, 91, 90, 90, 129, 144,
91, 91, 147, 130, 91, 90, 90, 91, 90, 140, 90, 92, 90, 90, 109, 91,
93, 91, 145, 215, 114, 91, 121, 91, 150, 91, 91, 153, 91, 141, 90, 91,
91, 90, 123, 91, 109, 90, 101, 169, 213, 133, 195, 90, 132, 143, 91, 139,
138, 158, 151, 99, 91, 108, 99, 91, 90, 91, 91, 90, 91, 131, 91, 109,
91, 93, 90, 156, 91, 91, 96, 132, 91, 91, 106, 91, 90, 119, 185, 91,
96, 90, 132, 90, 91, 90, 142, 109, 91, 94, 91, 91, 124, 90, 170, 90,
90, 91, 90, 99, 91, 90, 91, 110, 121, 161, 117, 115, 137, 90, 91, 90,
109, 91, 93, 90, 155, 106, 91, 121, 90, 90, 91, 137, 90, 232, 90, 91,
91, 94, 90, 171, 90, 91, 103, 102, 109, 91, 93, 90, 129, 148, 91, 102,
91, 91, 145, 178, 91, 115, 90, 90, 91, 104, 90, 90, 92, 249, 90, 90,
91, 109, 91, 94, 91, 90, 152, 91, 90, 91, 117, 90, 91, 111, 91, 91,
118, 90, 145, 90, 100, 116, 90, 90, 99, 90, 109, 91, 94, 91, 91, 128,
126, 90, 161, 151, 90, 109, 91, 90, 90, 94, 144, 106, 90, 94, 90, 90,
90, 109, 91, 94, 91, 91, 124, 91, 105, 90, 169, 91, 90, 116, 91, 142,
90, 90, 91, 109, 91, 93, 90, 140, 150, 108, 91, 90, 111, 91, 91, 194,
98, 90, 169, 90, 109, 91, 94, 91, 91, 141, 90, 171, 90, 155, 90, 111,
91, 90, 130, 90, 91, 90, 97, 90, 90, 109, 91, 94, 91, 91, 121, 90,
90, 90, 90, 90, 90, 99, 90, 165, 119, 90, 106, 90, 90, 91, 109, 91,
94, 91, 91, 93, 90, 95, 90, 113, 90, 99, 90, 156, 90, 90, 90, 138,
170, 109, 91, 94, 91, 91, 92, 90, 169, 90, 90, 90, 107, 90, 90, 91,
90, 95, 91, 91, 109, 91, 93, 90, 171, 90, 90, 91, 90, 91, 90, 91,
129, 144, 90, 90, 120, 90, 91, 91, 169, 90, 91, 109, 90, 95, 245, 90,
131, 135, 90, 90, 154, 90, 91, 91, 91, 111, 90, 90, 91, 91, 128, 91,
96, 91, 109, 91, 94, 91, 91, 124, 91, 105, 91, 119, 91, 132, 99, 90,
90, 90, 150, 160, 116, 91, 91, 91, 90, 96, 90, 91, 93, 91, 116, 91,
151, 90, 109, 111, 127, 91, 113, 91, 169, 186, 90, 90, 158, 91, 90, 90,
90, 117, 91, 160, 90, 91, 96, 90, 90, 91, 109, 91, 94, 91, 90, 95,
91, 90, 147, 167, 90, 160, 90, 160, 104, 90, 90, 91, 91, 101, 139, 91,
90, 136, 129, 90, 109, 91, 93, 91, 123, 91, 118, 90, 91, 108, 91, 91,
90, 90, 90, 90, 143, 91, 92, 177, 129, 101, 167, 91, 90, 90, 91, 130,
127, 90, 137, 91, 93, 90, 91, 91, 94, 229, 107, 91, 90, 104, 91, 91,
101, 91, 91, 93, 90, 119, 90, 133, 90, 91, 93, 145, 91, 132, 91, 109,
91, 93, 91, 137, 90, 166, 91, 102, 90, 104, 91, 96, 96, 91, 90, 90,
90, 166, 90, 90, 93, 90, 90, 109, 90, 93, 91, 91, 128, 90, 139, 91,
90, 97, 91, 124, 157, 91, 90, 90, 129, 144, 91, 91, 147, 130, 91, 90,
90, 91, 90, 140, 90, 92, 90, 91, 123, 270, 90, 125, 90, 90, 90, 94,
137, 123, 90, 145, 136, 90, 91, 100, 91, 105, 91, 153, 91, 90, 145, 155,
109, 91, 93, 91, 92, 91, 139, 90, 91, 91, 90, 96, 130, 97, 91, 164,
90, 97, 91, 90, 91, 114, 90, 90, 118, 90, 90, 123, 270, 90, 125, 90,
90, 90, 94, 137, 123, 90, 145, 136, 90, 91, 100, 91, 105, 91, 153, 91,
90, 145, 155, 109, 90, 93, 91, 91, 148, 91, 90, 151, 90, 91, 163, 108,
151, 112, 144, 90, 149, 90, 90, 99, 90, 109, 91, 94, 91, 91, 124, 91,
126, 91, 140, 162, 148, 90, 90, 119, 90, 91, 109, 91, 93, 91, 155, 106,
91, 91, 96, 90, 90, 91, 108, 90, 156, 90, 90, 120, 90, 112, 91, 99,
91, 109, 91, 93, 91, 129, 148, 91, 93, 154, 90, 134, 91, 91, 90, 91,
91, 111, 91, 91, 91, 91, 90, 109, 91, 93, 91, 129, 148, 91, 93, 154,
90, 134, 91, 91, 90, 91, 91, 111, 91, 91, 91, 91, 90, 109, 91, 93,
91, 129, 149, 91, 90, 90, 142, 219, 90, 99, 91, 109, 115, 92, 185, 91,
109, 90, 93, 91, 91, 142, 90, 98, 90, 91, 125, 114, 127, 90, 111, 90,
109, 91, 93, 91, 130, 91, 90, 134, 90, 90, 103, 122, 156, 112, 90, 183,
117, 91, 152, 141, 90, 98, 90, 91, 93, 91, 116, 91, 131, 91, 95, 188,
113, 91, 91, 147, 122, 91, 173, 91, 91, 133, 247, 92, 91, 109, 91, 93,
90, 156, 91, 91, 94, 91, 90, 147, 117, 91, 144, 90, 91, 128, 100, 91,
90, 105, 91, 91, 93, 91, 116, 91, 106, 91, 155, 90, 106, 90, 167, 90,
90, 91, 148, 123, 111, 155, 91, 105, 90, 90, 92, 90, 124, 90, 91, 109,
91, 94, 91, 91, 95, 91, 90, 97, 143, 171, 90, 105, 90, 91, 144, 91,
90, 90, 90, 94, 90, 90, 90, 109, 91, 93, 91, 92, 90, 158, 90, 94,
270, 172, 130, 90, 91, 91, 96, 90, 90, 147, 91, 109, 91, 93, 91, 92,
90, 162, 90, 129, 91, 91, 91, 90, 137, 99, 90, 90, 111, 91, 153, 90,
90, 90, 109, 91, 95, 125, 128, 90, 90, 90, 172, 90, 90, 90, 119, 91,
113, 247, 90, 144, 90, 140, 90, 109, 90, 93, 91, 90, 95, 91, 91, 139,
90, 147, 90, 90, 99, 117, 91, 157, 91, 126, 90, 90, 91, 160, 90, 91,
91, 91, 111, 90, 90, 113, 90, 91, 109, 91, 94, 91, 90, 99, 90, 112,
90, 91, 105, 90, 121, 118, 103, 90, 144, 117, 95, 91, 109, 91, 94, 91,
91, 124, 90, 144, 90, 90, 90, 165, 119, 90, 104, 90, 100, 90, 90, 90,
109, 91, 94, 91, 91, 179, 91, 90, 94, 91, 114, 90, 166, 90, 90, 90,
91, 117, 90, 96, 90, 90, 95, 91, 91, 109, 91, 94, 91, 91, 95, 91,
90, 150, 90, 140, 90, 91, 90, 171, 90, 118, 91, 111, 90, 104, 91, 109,
91, 93, 91, 97, 91, 90, 91, 120, 90, 95, 91, 143, 90, 90, 90, 90,
91, 109, 90, 95, 245, 90, 95, 90, 123, 91, 90, 115, 142, 91, 109, 91,
94, 91, 91, 124, 91, 90, 91, 91, 90, 91, 90, 141, 90, 172, 91, 161,
90, 169, 228, 90, 109, 91, 94, 91, 91, 93, 90, 91, 91, 90, 100, 90,
94, 90, 108, 90, 91, 91, 119, 90, 109, 91, 95, 113, 90, 134, 90, 90,
109, 90, 93, 91, 90, 95, 91, 91, 138, 157, 96, 90, 120, 91, 97, 107,
90, 90, 93, 188, 109, 90, 93, 91, 90, 95, 91, 91, 138, 157, 96, 90,
120, 91, 97, 107, 90, 90, 93, 188, 109, 90, 93, 91, 90, 95, 91, 91,
138, 157, 96, 90, 120, 91, 97, 107, 90, 90, 93, 188, 109, 90, 93, 91,
90, 95, 91, 91, 138, 157, 96, 90, 120, 91, 97, 107, 90, 90, 93, 188,
109, 91, 94, 91, 91, 92, 90, 143, 90, 90, 90, 129, 101, 102, 90] 0move0
......@@ -154,6 +154,7 @@ namespace apg {
struct elbowlab {
std::string corderpush2;
std::string snarkmaker;
std::vector<scstream> emitters;
std::vector<scstream> movers;
std::map<std::pair<char, int64_t>, scstream> emmap;
......@@ -169,6 +170,18 @@ namespace apg {
corderpush2 = corderpush;
}
void loadsm(std::string filename) {
std::string corderpush;
std::ifstream ins(filename);
std::string item;
while (std::getline(ins, item, '\n')) {
corderpush += " " + item;
}
snarkmaker = corderpush;
std::cerr << "Snarkmaker string = " << snarkmaker.length() << " bytes." << std::endl;
}
void loadrecs(std::string filename) {
scstream scempty;
......@@ -291,6 +304,29 @@ namespace apg {
while (!desipos(scs, desired)) { }
}
scstream break_snark(int64_t fdpush) {
scstream scs2("[0, 93, 91, 118, 93, 151, 90, 99, 155, 120, 92, 108, 90, 102, 164, 90, 96, 887, 179, 97, 90, 109, 91, 93, 91, 92, 90, 90, 90, 151, 93, 90, 143, 134, 94, 90, 90, 90, 109, 91, 90] 0move0");
for (uint64_t i = 0; i < scs2.gstream.size(); i++) {
if (scs2.gstream[i] == 887) {
scs2.gstream[i] += ((fdpush - 128) * 8);
}
}
return scs2;
}
scstream make_snark(int64_t fdpush) {
scstream scs2(snarkmaker);
desirate(scs2, (fdpush - 128) * 2);
scs2.endblocks[0] = 0;
return scs2;
}
};
}
......
......@@ -29,6 +29,7 @@ namespace apg {
cg.datadir = "data/";
el.loadrecs("data/simeks/pp.txt");
el.loadpush("data/corderpush2.txt");
el.loadsm("data/snarkmaker.txt");
std::ifstream ins("data/corderpush.txt");
std::string item;
while (std::getline(ins, item, '\n')) {
......@@ -94,6 +95,41 @@ namespace apg {
return chunk;
}
std::pair<pattern, pattern> diagsplit(pattern inf, pattern m, bool duplicate) {
pattern findme(lab, "4$2bo$bobob2o$o2bob2o$obo$bo!", "b3s23");
pattern tri(lab, "5o$4o$3o$2o$o!", "b3s23");
tri = tri(-2, -2);
int64_t bbox[4] = {0};
inf.getrect(bbox);
int64_t x = bbox[2] + bbox[3];
while (x > 0) {
tri = tri.convolve(tri);
x = x >> 1;
}
tri = m.convolve(tri);
pattern infx = inf - m.convolve(findme);
pattern middle = (infx & tri(30, 30)) - tri(-30, -30);
if (middle.nonempty()) {
if (duplicate) {
return std::pair<pattern, pattern>(infx, infx);
} else {
return std::pair<pattern, pattern>(infx, pattern(lab, "", "b3s23"));
}
}
pattern infy = infx & tri;
pattern infz = infx - tri;
return std::pair<pattern, pattern>(infy, infz);
}
cgsalvo<int64_t> sparsebuild(pattern infx, int64_t* bbox, int64_t* bbox3, bool existing_hand) {
/*
* More scalable version of cg.preiterate.
......@@ -269,10 +305,41 @@ namespace apg {
pattern clr = cell_lowerright(infx);
int64_t bbox[4] = {0};
clr.getrect(bbox);
bool wrong_orientation = (bbox[0] + bbox[1] > ideal[0] + ideal[1]);
infx.getrect(bbox);
auto things = diagsplit(infx, m, true);
int64_t span_both_sides = (bbox[0] + bbox[1] + bbox[2] + bbox[3]) - (ideal[0] + ideal[1]);
if ((things.first.nonempty()) && (things.second.nonempty())) {
std::cerr << "Metacluster spans both sides of the channel." << std::endl;
while (scs.endblocks.size() > 1) { scs.close_paren(); }
int64_t forwdiag = (bbox[0] - ideal[0]) - (bbox[1] + bbox[3] - ideal[1]) - 128;
forwdiag = 2 * (forwdiag / 2) + 1; // Ensure correct parity
el.desirate(scs, forwdiag);
int64_t fdshift = (span_both_sides / 2) + 128;
if (wrong_orientation) {
std::cerr << "Fdshift: " << fdshift << std::endl;
ideal[0] += 2 * fdshift;
apg::scstream smaker = el.make_snark(fdshift);
apg::scstream sbreaker = el.break_snark(fdshift);
std::cerr << "Snarkmaker length: " << smaker.gstream.size() << std::endl;
std::cerr << "Snarkbreaker length: " << sbreaker.gstream.size() << std::endl;
scs.concat(smaker, 0);
scs.concat(smaker, 0);
nw_constell(infx, ideal, scs, false);
el.desirate(scs, forwdiag);
scs.concat(sbreaker, 0);
scs.concat(sbreaker, 0);
} else if (wrong_orientation) {
std::cerr << "Wrong orientation; flipping pattern." << std::endl;
pattern inft = infx + m.convolve(findme2);
inft = inft("swap_xy_flip", 0, 0);
......@@ -293,29 +360,6 @@ namespace apg {
}
std::pair<pattern, pattern> diagsplit(pattern inf, pattern m) {
pattern findme(lab, "4$2bo$bobob2o$o2bob2o$obo$bo!", "b3s23");
pattern tri(lab, "5o$4o$3o$2o$o!", "b3s23");
tri = tri(-2, -2);
int64_t bbox[4] = {0};
inf.getrect(bbox);
int64_t x = bbox[2] + bbox[3];
while (x > 0) {
tri = tri.convolve(tri);
x = x >> 1;
}
tri = m.convolve(tri);
pattern infx = inf - m.convolve(findme);
pattern infy = infx & tri;
pattern infz = infx - tri;
return std::pair<pattern, pattern>(infy, infz);
}
void into_clusters(pattern &infx, std::map<std::pair<int64_t, int64_t>, std::vector<pattern> > &metaclusters) {
......@@ -349,10 +393,17 @@ namespace apg {
int64_t desired_position = scs.endblocks.back();
std::map<std::pair<int64_t, int64_t>, std::vector<pattern> > premetaclusters;
into_clusters(inf, premetaclusters);
std::map<std::pair<int64_t, int64_t>, std::vector<pattern> > metaclusters;
auto hp = diagsplit(inf, m);
into_clusters(hp.first, metaclusters);
into_clusters(hp.second, metaclusters);
for (auto it = premetaclusters.begin(); it != premetaclusters.end(); ++it) {
for (auto it2 = it->second.begin(); it2 != it->second.end(); ++it2) {
auto hp = diagsplit((*it2), m, false);
into_clusters(hp.first, metaclusters);
into_clusters(hp.second, metaclusters);
}
}
std::vector<std::vector<pattern> > vvmc(1);
int64_t lastright = 0;
......
Subproject commit f44177c5ef1ecebfc830921e31102d92f1dbab60
Subproject commit e8bb4e6264716af8d8ff56ee231dd67d752cb8f8
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