String unescapeString(const String& input) {
	String output;
	for (int i = 0; i < input.length(); i++) {
		if (input[i] == '\\' && i + 1 < input.length()) {
			switch (input[i + 1]) {
			case 'n': output += '\n'; i++; break;
			case 'r': output += '\r'; i++; break;
			case 't': output += '\t'; i++; break;
			case 'x':
				if (i + 3 < input.length()) {
					char hex[3] = { input[i + 2], input[i + 3], 0 };
					output += (char)strtol(hex, NULL, 16);
					i += 3;
				}
				break;
			default: output += input[i + 1]; i++;
			}
		}
		else {
			output += input[i];
		}
	}
	return output;
}


void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  Serial.println("Hello, ESP32!");
  String escapedString = "Hello\\nWorld\\xe1\\X41";
  String unescapedString = unescapeString(escapedString);
  Serial.println(unescapedString);
}

void loop() {
  // put your main code here, to run repeatedly:
  delay(10); // this speeds up the simulation
}
esp:0
esp:2
esp:4
esp:5
esp:12
esp:13
esp:14
esp:15
esp:16
esp:17
esp:18
esp:19
esp:21
esp:22
esp:23
esp:25
esp:26
esp:27
esp:32
esp:33
esp:34
esp:35
esp:3V3
esp:EN
esp:VP
esp:VN
esp:GND.1
esp:D2
esp:D3
esp:CMD
esp:5V
esp:GND.2
esp:TX
esp:RX
esp:GND.3
esp:D1
esp:D0
esp:CLK