Skip to content
Merged
  •  
  •  
  •  
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -22,4 +22,7 @@
.bin

# CI
bin
bin

# large test files
tests.json
59 changes: 48 additions & 11 deletions qbft/spectest/generate/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,31 +21,52 @@ import (

func main() {
clearStateComparisonFolder()
clearTestsFolder()

all := map[string]tests.SpecTest{}
for _, testF := range spectest.AllTests {
test := testF()

// write json test
n := reflect.TypeOf(test).String() + "_" + test.TestName()
if all[n] != nil {
panic(fmt.Sprintf("duplicate test: %s\n", n))
}
all[n] = test
}

byts, err := json.Marshal(all)
if err != nil {
panic(err.Error())
}

log.Printf("found %d tests\n", len(all))
if len(all) != len(spectest.AllTests) {
panic("did not generate all tests\n")
}

log.Printf("found %d tests\n", len(all))
writeJson(byts)
// write small json files for each test
// try to create directory if it doesn't exist
_, basedir, _, ok := runtime.Caller(0)
if !ok {
panic("no caller info")
}
testsDir := filepath.Join(strings.TrimSuffix(basedir, "main.go"), "tests")
if err := os.MkdirAll(testsDir, 0700); err != nil && !os.IsExist(err) {
panic(err.Error())
}
for name, test := range all {
byts, err := json.Marshal(test)
if err != nil {
panic(err.Error())
}
name = strings.ReplaceAll(name, " ", "_")
name = strings.ReplaceAll(name, "*", "")
name = "tests/" + name
writeJson(name, byts)
}

// write large tests.json file
byts, err := json.Marshal(all)
if err != nil {
panic(err.Error())
}
writeJson("tests", byts)

// write state comparison json files
for _, testF := range spectest.AllTests {
test := testF()
// generate post state comparison
Expand Down Expand Up @@ -73,6 +94,22 @@ func clearStateComparisonFolder() {
}
}

func clearTestsFolder() {
_, basedir, _, ok := runtime.Caller(0)
if !ok {
panic("no caller info")
}
dir := filepath.Join(strings.TrimSuffix(basedir, "main.go"), "tests")

if err := os.RemoveAll(dir); err != nil {
panic(err.Error())
}

if err := os.Mkdir(dir, 0700); err != nil {
panic(err.Error())
}
}

func writeJsonStateComparison(name, testType string, post interface{}) {
if post == nil { // If nil, test not supporting post state comparison yet
log.Printf("skipping state comparison json, not supported: %s\n", name)
Expand Down Expand Up @@ -108,7 +145,7 @@ func scDir(testType string) string {
return scDir
}

func writeJson(data []byte) {
func writeJson(name string, data []byte) {
_, basedir, _, ok := runtime.Caller(0)
if !ok {
panic("no caller info")
Expand All @@ -118,7 +155,7 @@ func writeJson(data []byte) {
// try to create directory if it doesn't exist
_ = os.Mkdir(basedir, os.ModeDir)

file := filepath.Join(basedir, "tests.json")
file := filepath.Join(basedir, name+".json")
log.Printf("writing spec tests json to: %s\n", file)
if err := os.WriteFile(file, data, 0400); err != nil {
panic(err.Error())
Expand Down
1 change: 0 additions & 1 deletion qbft/spectest/generate/tests.json

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"Name":"broadcast decided","RunInstanceData":[{"InputValue":"AQIDBA==","InputMessages":[{"Signatures":["w3UJv6FMo17RQc7ewjyw7D39a5mHNKnYS8ZkVBNbyYT56RXYJJ6Kg6TEdCMqwLnNtRE+hI5QvVvFa+7llT2/0jkdQxP7TW8Fph0GTZMBP0Sa6dliDTBvYH9KjahV8uFJ+S/Sq640Ed5FF6vedOh8eYbB7Us0w/aVN1qlufLAC17dcLbaYcnQqkT4fSy4j2hb2vi2Vi3siJcbVDREAo3JHd6K6cmB3bO54hFbkJjEGVAr3ov+l/XrUsu+6dgPkdj3VMkMWOsMZjCxB0sjawdbUvfqqspAAW7eMxGvz+yc03WrodImQUEJaNY7GofeCuUfux5tyRbgycsHU2Qv3zc7cA=="],"OperatorIDs":[1],"SSVMessage":{"MsgType":0,"MsgID":[1,2,3,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Data":"AAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAATAAAAL6Vb7ffTvN1MWgtWIMgCE/JFMPw/tM1Jj5bRAYubCm0AAAAAAAAAABQAAAAUAAAAAECAwQ="},"FullData":"AQIDBAUGBwgJAQIDBAUGBwgJAQIDBAUGBwgJ"},{"Signatures":["xpIorjwflKm67zy3dDUmk/0VS4JqIFIslh7ij5uYmPqMKCUyufrDQImHzbM5Gy1Ysarv5itL5LnDutsYYX8oNYeOZzC7XRRAPe5zbdQD74A3tMwm83astKAjdHDYZqz4kb9Xx0Umf93yh2wMJXFlXrIPafyDiEMg7JvdPvwL+1XZ20MGkUHOcRGdNHfVaiyUPaZB5ji/Q5DGI7vZ21jW5aHnxQSWs4jtBKC539PiFSZBiccSdQtCt6JJHn963nVzmcSeVORk0B8mvUvVHDP1HpM/uusvep0KabJAJYWCTyO+9XpI4CP2EriLxdrj9jwKzGrkjJjyemxDWd+0We0+0g=="],"OperatorIDs":[1],"SSVMessage":{"MsgType":0,"MsgID":[1,2,3,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Data":"AQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAATAAAAL6Vb7ffTvN1MWgtWIMgCE/JFMPw/tM1Jj5bRAYubCm0AAAAAAAAAABQAAAAUAAAAAECAwQ="},"FullData":null},{"Signatures":["Hod5mrwew0Mee36gD7mF5sA6lzsqFScLR16yE0mXlrSekXusKql1ihyV8JJtkD4xy7PU7NEVhdoTViUkMPCXlxcsFZy+yp8RWwe4+q2rzPfmTQTE331O/NzY1HVDQTtxYgw74jLnkBbYKcXDvmplFqFF5hNIfCV8iUPnpkDXLweH4NfGs53cjjjKhR22/3bWU+5Wdc4zO7o/MQgAHSXaoQtqelgUQ1efu6Lw3MYA9Jzybuc7RE+WKTyqSeQgRIxzw2MNUwSzEZ3bXkgnqbt31IKLbTZiYYvPv4KuB7uf7gBXNePK8YxUu3NDXMmqWOAHlSF2n2beTnPxkoCIxj7CaA=="],"OperatorIDs":[2],"SSVMessage":{"MsgType":0,"MsgID":[1,2,3,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Data":"AQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAATAAAAL6Vb7ffTvN1MWgtWIMgCE/JFMPw/tM1Jj5bRAYubCm0AAAAAAAAAABQAAAAUAAAAAECAwQ="},"FullData":null},{"Signatures":["Y3y9i6STY/zcTPpnbbjFsAdVCzYTWkZQfjeb+yMRDrJgHKfHfYWWBbFnETiOS9Tmo3y43lfMeTQjzPNomT4cZmTD5E4qMBwEkLOicXvS4IWYX98RipzrmGlqmpsoS4jOcCg0wh9jCpuNTJFYvbQRanJ90F6S8ifesm0w7fNgD9cBmRJ5b9agBu0wo6J8x81c/YCD7J2bRVTLhpnUR/T4hCYJDpO3i0cPA4mdkcRHHYmIZosdeWZxivpSd4XqiDgairQ8ep075COiubYWJitaIUSATt43MK3ZWClfXcMgerAMcdhgsWt5HFGnlj29IPhznu7QVYJmJGNssoHn0VIqlg=="],"OperatorIDs":[3],"SSVMessage":{"MsgType":0,"MsgID":[1,2,3,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Data":"AQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAATAAAAL6Vb7ffTvN1MWgtWIMgCE/JFMPw/tM1Jj5bRAYubCm0AAAAAAAAAABQAAAAUAAAAAECAwQ="},"FullData":null},{"Signatures":["GfE8aDUxusaQMSTteNUd48JIy+lw6uRaqg16gvVD/c6143K0dv8252oUIP7Hno1PtCBd53JobukPE08pFXlNCxKadbXD57N1IGL3ovRpb3M6imeKoaHzn/lTuYlmPYrzc5KFuFK3rbEBjq2/OLK24PCZeWa288IY+jX9U+i7byWCBR/PyJQPTzjK9P7uyNuGHQDYcKoT6B8r/2O6woxMSxFjCGTw0K7yUhQEJrmYaQbUvg/T0S2/n4GUirNHqVj011t2MnrBW1RvQcDWI++JkjdtxgwmzcjdKLj+ouANn8QWJzFtvPOcD2dMU0ph3VVZYA95j/yOBlum4NVzC+Qf7Q=="],"OperatorIDs":[1],"SSVMessage":{"MsgType":0,"MsgID":[1,2,3,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Data":"AgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAATAAAAL6Vb7ffTvN1MWgtWIMgCE/JFMPw/tM1Jj5bRAYubCm0AAAAAAAAAABQAAAAUAAAAAECAwQ="},"FullData":null},{"Signatures":["XX/d0mB7UQg6xMbREXJtYiF7B0a3VUre9ng5oBs6e4A6U1mFzxT6RI6KqgtKcyGTqSCMFRxCpxQt2qiRuF1PUWf5NcrZUfeNfIHDex89ATB41dgcyVqquINe0ADGx9f5/xak6Eqeg81/AlBFRbxAQXqc9K1FwMKnvrPKKsyQekOoHdLbUbVvohPIK1BTOVUlxmZ9FOf/Jb6WNb/1u+npYiQusFsn1LozPB8faeQrcmvupvoDnr4qACZoYHloRvyjNh7Djl3LQcZNb9NeiCjdYw1pufKUCXS946GvjA0e+obHiYlf6Uke0lJCw+RM3DAXqYszhEYy+/2NYS4/dLjeDQ=="],"OperatorIDs":[2],"SSVMessage":{"MsgType":0,"MsgID":[1,2,3,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Data":"AgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAATAAAAL6Vb7ffTvN1MWgtWIMgCE/JFMPw/tM1Jj5bRAYubCm0AAAAAAAAAABQAAAAUAAAAAECAwQ="},"FullData":null},{"Signatures":["CNsE9cMHmMDMhJaW+zLrqpahENjGjayrxiPm+wBDQykGz5hHVCTBE5x0CjV+Oz7zkVmoLmlJxjRzKOInfW1TkklzY0X70EYhdXtL67XkNOLOVi9/46HOFTH1x9QgF7InO4bhoggCSoEUZpJWkRqX5FY831q27fHbMK9dOvNkdaVNfPPSFi05jXIwRUPpUZLYDa04ob21lPSQ7y50v3CUBJKgzt5yyZq22KqIKNf+92SJcY/Pc6HHJAV5TRbWAz8BFycrQVchFl9+Rs8qRA7Y4P1Bq/38wSs48EBBaFAIiBsKCkHiv2iX468QrlbQyj/JAoASFi0IHfQk0P+WbGoQ1w=="],"OperatorIDs":[3],"SSVMessage":{"MsgType":0,"MsgID":[1,2,3,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Data":"AgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAATAAAAL6Vb7ffTvN1MWgtWIMgCE/JFMPw/tM1Jj5bRAYubCm0AAAAAAAAAABQAAAAUAAAAAECAwQ="},"FullData":null}],"ControllerPostRoot":"48102a2c26b7ffd3cce83426093aee74f50d3d1ccdf98ec2df91878dff031978","ExpectedTimerState":null,"ExpectedDecidedState":{"DecidedVal":"AQIDBAUGBwgJAQIDBAUGBwgJAQIDBAUGBwgJ","DecidedCnt":1,"BroadcastedDecided":{"Signatures":["GfE8aDUxusaQMSTteNUd48JIy+lw6uRaqg16gvVD/c6143K0dv8252oUIP7Hno1PtCBd53JobukPE08pFXlNCxKadbXD57N1IGL3ovRpb3M6imeKoaHzn/lTuYlmPYrzc5KFuFK3rbEBjq2/OLK24PCZeWa288IY+jX9U+i7byWCBR/PyJQPTzjK9P7uyNuGHQDYcKoT6B8r/2O6woxMSxFjCGTw0K7yUhQEJrmYaQbUvg/T0S2/n4GUirNHqVj011t2MnrBW1RvQcDWI++JkjdtxgwmzcjdKLj+ouANn8QWJzFtvPOcD2dMU0ph3VVZYA95j/yOBlum4NVzC+Qf7Q==","XX/d0mB7UQg6xMbREXJtYiF7B0a3VUre9ng5oBs6e4A6U1mFzxT6RI6KqgtKcyGTqSCMFRxCpxQt2qiRuF1PUWf5NcrZUfeNfIHDex89ATB41dgcyVqquINe0ADGx9f5/xak6Eqeg81/AlBFRbxAQXqc9K1FwMKnvrPKKsyQekOoHdLbUbVvohPIK1BTOVUlxmZ9FOf/Jb6WNb/1u+npYiQusFsn1LozPB8faeQrcmvupvoDnr4qACZoYHloRvyjNh7Djl3LQcZNb9NeiCjdYw1pufKUCXS946GvjA0e+obHiYlf6Uke0lJCw+RM3DAXqYszhEYy+/2NYS4/dLjeDQ==","CNsE9cMHmMDMhJaW+zLrqpahENjGjayrxiPm+wBDQykGz5hHVCTBE5x0CjV+Oz7zkVmoLmlJxjRzKOInfW1TkklzY0X70EYhdXtL67XkNOLOVi9/46HOFTH1x9QgF7InO4bhoggCSoEUZpJWkRqX5FY831q27fHbMK9dOvNkdaVNfPPSFi05jXIwRUPpUZLYDa04ob21lPSQ7y50v3CUBJKgzt5yyZq22KqIKNf+92SJcY/Pc6HHJAV5TRbWAz8BFycrQVchFl9+Rs8qRA7Y4P1Bq/38wSs48EBBaFAIiBsKCkHiv2iX468QrlbQyj/JAoASFi0IHfQk0P+WbGoQ1w=="],"OperatorIDs":[1,2,3],"SSVMessage":{"MsgType":0,"MsgID":[1,2,3,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Data":"AgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAATAAAAL6Vb7ffTvN1MWgtWIMgCE/JFMPw/tM1Jj5bRAYubCm0AAAAAAAAAABQAAAAUAAAAAECAwQ="},"FullData":"AQIDBAUGBwgJAQIDBAUGBwgJAQIDBAUGBwgJ"}},"omitempty":null}],"OutputMessages":null,"ExpectedError":"","omitempty":null}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"Name":"decide current instance","RunInstanceData":[{"InputValue":"AQIDBA==","InputMessages":[{"Signatures":["w3UJv6FMo17RQc7ewjyw7D39a5mHNKnYS8ZkVBNbyYT56RXYJJ6Kg6TEdCMqwLnNtRE+hI5QvVvFa+7llT2/0jkdQxP7TW8Fph0GTZMBP0Sa6dliDTBvYH9KjahV8uFJ+S/Sq640Ed5FF6vedOh8eYbB7Us0w/aVN1qlufLAC17dcLbaYcnQqkT4fSy4j2hb2vi2Vi3siJcbVDREAo3JHd6K6cmB3bO54hFbkJjEGVAr3ov+l/XrUsu+6dgPkdj3VMkMWOsMZjCxB0sjawdbUvfqqspAAW7eMxGvz+yc03WrodImQUEJaNY7GofeCuUfux5tyRbgycsHU2Qv3zc7cA=="],"OperatorIDs":[1],"SSVMessage":{"MsgType":0,"MsgID":[1,2,3,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Data":"AAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAATAAAAL6Vb7ffTvN1MWgtWIMgCE/JFMPw/tM1Jj5bRAYubCm0AAAAAAAAAABQAAAAUAAAAAECAwQ="},"FullData":"AQIDBAUGBwgJAQIDBAUGBwgJAQIDBAUGBwgJ"},{"Signatures":["xpIorjwflKm67zy3dDUmk/0VS4JqIFIslh7ij5uYmPqMKCUyufrDQImHzbM5Gy1Ysarv5itL5LnDutsYYX8oNYeOZzC7XRRAPe5zbdQD74A3tMwm83astKAjdHDYZqz4kb9Xx0Umf93yh2wMJXFlXrIPafyDiEMg7JvdPvwL+1XZ20MGkUHOcRGdNHfVaiyUPaZB5ji/Q5DGI7vZ21jW5aHnxQSWs4jtBKC539PiFSZBiccSdQtCt6JJHn963nVzmcSeVORk0B8mvUvVHDP1HpM/uusvep0KabJAJYWCTyO+9XpI4CP2EriLxdrj9jwKzGrkjJjyemxDWd+0We0+0g=="],"OperatorIDs":[1],"SSVMessage":{"MsgType":0,"MsgID":[1,2,3,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Data":"AQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAATAAAAL6Vb7ffTvN1MWgtWIMgCE/JFMPw/tM1Jj5bRAYubCm0AAAAAAAAAABQAAAAUAAAAAECAwQ="},"FullData":null},{"Signatures":["Hod5mrwew0Mee36gD7mF5sA6lzsqFScLR16yE0mXlrSekXusKql1ihyV8JJtkD4xy7PU7NEVhdoTViUkMPCXlxcsFZy+yp8RWwe4+q2rzPfmTQTE331O/NzY1HVDQTtxYgw74jLnkBbYKcXDvmplFqFF5hNIfCV8iUPnpkDXLweH4NfGs53cjjjKhR22/3bWU+5Wdc4zO7o/MQgAHSXaoQtqelgUQ1efu6Lw3MYA9Jzybuc7RE+WKTyqSeQgRIxzw2MNUwSzEZ3bXkgnqbt31IKLbTZiYYvPv4KuB7uf7gBXNePK8YxUu3NDXMmqWOAHlSF2n2beTnPxkoCIxj7CaA=="],"OperatorIDs":[2],"SSVMessage":{"MsgType":0,"MsgID":[1,2,3,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Data":"AQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAATAAAAL6Vb7ffTvN1MWgtWIMgCE/JFMPw/tM1Jj5bRAYubCm0AAAAAAAAAABQAAAAUAAAAAECAwQ="},"FullData":null},{"Signatures":["Y3y9i6STY/zcTPpnbbjFsAdVCzYTWkZQfjeb+yMRDrJgHKfHfYWWBbFnETiOS9Tmo3y43lfMeTQjzPNomT4cZmTD5E4qMBwEkLOicXvS4IWYX98RipzrmGlqmpsoS4jOcCg0wh9jCpuNTJFYvbQRanJ90F6S8ifesm0w7fNgD9cBmRJ5b9agBu0wo6J8x81c/YCD7J2bRVTLhpnUR/T4hCYJDpO3i0cPA4mdkcRHHYmIZosdeWZxivpSd4XqiDgairQ8ep075COiubYWJitaIUSATt43MK3ZWClfXcMgerAMcdhgsWt5HFGnlj29IPhznu7QVYJmJGNssoHn0VIqlg=="],"OperatorIDs":[3],"SSVMessage":{"MsgType":0,"MsgID":[1,2,3,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Data":"AQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAATAAAAL6Vb7ffTvN1MWgtWIMgCE/JFMPw/tM1Jj5bRAYubCm0AAAAAAAAAABQAAAAUAAAAAECAwQ="},"FullData":null},{"Signatures":["GfE8aDUxusaQMSTteNUd48JIy+lw6uRaqg16gvVD/c6143K0dv8252oUIP7Hno1PtCBd53JobukPE08pFXlNCxKadbXD57N1IGL3ovRpb3M6imeKoaHzn/lTuYlmPYrzc5KFuFK3rbEBjq2/OLK24PCZeWa288IY+jX9U+i7byWCBR/PyJQPTzjK9P7uyNuGHQDYcKoT6B8r/2O6woxMSxFjCGTw0K7yUhQEJrmYaQbUvg/T0S2/n4GUirNHqVj011t2MnrBW1RvQcDWI++JkjdtxgwmzcjdKLj+ouANn8QWJzFtvPOcD2dMU0ph3VVZYA95j/yOBlum4NVzC+Qf7Q=="],"OperatorIDs":[1],"SSVMessage":{"MsgType":0,"MsgID":[1,2,3,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Data":"AgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAATAAAAL6Vb7ffTvN1MWgtWIMgCE/JFMPw/tM1Jj5bRAYubCm0AAAAAAAAAABQAAAAUAAAAAECAwQ="},"FullData":null},{"Signatures":["XX/d0mB7UQg6xMbREXJtYiF7B0a3VUre9ng5oBs6e4A6U1mFzxT6RI6KqgtKcyGTqSCMFRxCpxQt2qiRuF1PUWf5NcrZUfeNfIHDex89ATB41dgcyVqquINe0ADGx9f5/xak6Eqeg81/AlBFRbxAQXqc9K1FwMKnvrPKKsyQekOoHdLbUbVvohPIK1BTOVUlxmZ9FOf/Jb6WNb/1u+npYiQusFsn1LozPB8faeQrcmvupvoDnr4qACZoYHloRvyjNh7Djl3LQcZNb9NeiCjdYw1pufKUCXS946GvjA0e+obHiYlf6Uke0lJCw+RM3DAXqYszhEYy+/2NYS4/dLjeDQ=="],"OperatorIDs":[2],"SSVMessage":{"MsgType":0,"MsgID":[1,2,3,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Data":"AgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAATAAAAL6Vb7ffTvN1MWgtWIMgCE/JFMPw/tM1Jj5bRAYubCm0AAAAAAAAAABQAAAAUAAAAAECAwQ="},"FullData":null},{"Signatures":["GfE8aDUxusaQMSTteNUd48JIy+lw6uRaqg16gvVD/c6143K0dv8252oUIP7Hno1PtCBd53JobukPE08pFXlNCxKadbXD57N1IGL3ovRpb3M6imeKoaHzn/lTuYlmPYrzc5KFuFK3rbEBjq2/OLK24PCZeWa288IY+jX9U+i7byWCBR/PyJQPTzjK9P7uyNuGHQDYcKoT6B8r/2O6woxMSxFjCGTw0K7yUhQEJrmYaQbUvg/T0S2/n4GUirNHqVj011t2MnrBW1RvQcDWI++JkjdtxgwmzcjdKLj+ouANn8QWJzFtvPOcD2dMU0ph3VVZYA95j/yOBlum4NVzC+Qf7Q==","XX/d0mB7UQg6xMbREXJtYiF7B0a3VUre9ng5oBs6e4A6U1mFzxT6RI6KqgtKcyGTqSCMFRxCpxQt2qiRuF1PUWf5NcrZUfeNfIHDex89ATB41dgcyVqquINe0ADGx9f5/xak6Eqeg81/AlBFRbxAQXqc9K1FwMKnvrPKKsyQekOoHdLbUbVvohPIK1BTOVUlxmZ9FOf/Jb6WNb/1u+npYiQusFsn1LozPB8faeQrcmvupvoDnr4qACZoYHloRvyjNh7Djl3LQcZNb9NeiCjdYw1pufKUCXS946GvjA0e+obHiYlf6Uke0lJCw+RM3DAXqYszhEYy+/2NYS4/dLjeDQ==","CNsE9cMHmMDMhJaW+zLrqpahENjGjayrxiPm+wBDQykGz5hHVCTBE5x0CjV+Oz7zkVmoLmlJxjRzKOInfW1TkklzY0X70EYhdXtL67XkNOLOVi9/46HOFTH1x9QgF7InO4bhoggCSoEUZpJWkRqX5FY831q27fHbMK9dOvNkdaVNfPPSFi05jXIwRUPpUZLYDa04ob21lPSQ7y50v3CUBJKgzt5yyZq22KqIKNf+92SJcY/Pc6HHJAV5TRbWAz8BFycrQVchFl9+Rs8qRA7Y4P1Bq/38wSs48EBBaFAIiBsKCkHiv2iX468QrlbQyj/JAoASFi0IHfQk0P+WbGoQ1w=="],"OperatorIDs":[1,2,3],"SSVMessage":{"MsgType":0,"MsgID":[1,2,3,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Data":"AgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAATAAAAL6Vb7ffTvN1MWgtWIMgCE/JFMPw/tM1Jj5bRAYubCm0AAAAAAAAAABQAAAAUAAAAAECAwQ="},"FullData":"AQIDBAUGBwgJAQIDBAUGBwgJAQIDBAUGBwgJ"}],"ControllerPostRoot":"fa39d176a8bd2bda480d1d42a6b8905b48b3cf38bdb3fb09d43e70586d3ad64f","ExpectedTimerState":null,"ExpectedDecidedState":{"DecidedVal":"AQIDBAUGBwgJAQIDBAUGBwgJAQIDBAUGBwgJ","DecidedCnt":1,"BroadcastedDecided":null},"omitempty":null}],"OutputMessages":null,"ExpectedError":"","omitempty":null}
Loading