-
Notifications
You must be signed in to change notification settings - Fork 0
/
builder_test.go
192 lines (154 loc) · 52.8 KB
/
builder_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
package openapi_test
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
"testing"
"github.com/restk/openapi"
)
type ExpectedOutput struct {
// JSON is the expected JSON of the output
JSON []byte
// YAML is the expected YAML of the output
YAML []byte
}
var expectedOutput = map[string]map[string]*ExpectedOutput{
"Info Object": {"3.1.0": &ExpectedOutput{JSON: []byte{}, YAML: []byte{}}, "3.0.3": &ExpectedOutput{YAML: []byte{}}},
"Test Basic Functions": {"3.1.0": &ExpectedOutput{JSON: []byte{123, 10, 32, 32, 34, 99, 111, 109, 112, 111, 110, 101, 110, 116, 115, 34, 58, 32, 123, 10, 32, 32, 32, 32, 34, 115, 99, 104, 101, 109, 97, 115, 34, 58, 32, 123, 10, 32, 32, 32, 32, 32, 32, 34, 69, 114, 114, 111, 114, 34, 58, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34, 97, 100, 100, 105, 116, 105, 111, 110, 97, 108, 80, 114, 111, 112, 101, 114, 116, 105, 101, 115, 34, 58, 32, 102, 97, 108, 115, 101, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34, 112, 114, 111, 112, 101, 114, 116, 105, 101, 115, 34, 58, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 109, 101, 115, 115, 97, 103, 101, 34, 58, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 116, 121, 112, 101, 34, 58, 32, 34, 115, 116, 114, 105, 110, 103, 34, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34, 114, 101, 113, 117, 105, 114, 101, 100, 34, 58, 32, 91, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 109, 101, 115, 115, 97, 103, 101, 34, 10, 32, 32, 32, 32, 32, 32, 32, 32, 93, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34, 116, 121, 112, 101, 34, 58, 32, 34, 111, 98, 106, 101, 99, 116, 34, 10, 32, 32, 32, 32, 32, 32, 125, 44, 10, 32, 32, 32, 32, 32, 32, 34, 76, 111, 103, 105, 110, 82, 101, 113, 117, 101, 115, 116, 34, 58, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34, 97, 100, 100, 105, 116, 105, 111, 110, 97, 108, 80, 114, 111, 112, 101, 114, 116, 105, 101, 115, 34, 58, 32, 102, 97, 108, 115, 101, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34, 112, 114, 111, 112, 101, 114, 116, 105, 101, 115, 34, 58, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 112, 97, 115, 115, 119, 111, 114, 100, 34, 58, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 100, 101, 115, 99, 114, 105, 112, 116, 105, 111, 110, 34, 58, 32, 34, 112, 97, 115, 115, 119, 111, 114, 100, 32, 116, 111, 32, 108, 111, 103, 105, 110, 32, 119, 105, 116, 104, 34, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 109, 97, 120, 76, 101, 110, 103, 116, 104, 34, 58, 32, 53, 48, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 116, 121, 112, 101, 34, 58, 32, 34, 115, 116, 114, 105, 110, 103, 34, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 125, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 117, 115, 101, 114, 110, 97, 109, 101, 34, 58, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 100, 101, 115, 99, 114, 105, 112, 116, 105, 111, 110, 34, 58, 32, 34, 117, 115, 101, 114, 110, 97, 109, 101, 32, 116, 111, 32, 108, 111, 103, 105, 110, 32, 119, 105, 116, 104, 34, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 109, 97, 120, 76, 101, 110, 103, 116, 104, 34, 58, 32, 50, 53, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 116, 121, 112, 101, 34, 58, 32, 34, 115, 116, 114, 105, 110, 103, 34, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34, 114, 101, 113, 117, 105, 114, 101, 100, 34, 58, 32, 91, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 117, 115, 101, 114, 110, 97, 109, 101, 34, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 112, 97, 115, 115, 119, 111, 114, 100, 34, 10, 32, 32, 32, 32, 32, 32, 32, 32, 93, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34, 116, 121, 112, 101, 34, 58, 32, 34, 111, 98, 106, 101, 99, 116, 34, 10, 32, 32, 32, 32, 32, 32, 125, 44, 10, 32, 32, 32, 32, 32, 32, 34, 83, 117, 99, 99, 101, 115, 115, 34, 58, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34, 97, 100, 100, 105, 116, 105, 111, 110, 97, 108, 80, 114, 111, 112, 101, 114, 116, 105, 101, 115, 34, 58, 32, 102, 97, 108, 115, 101, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34, 112, 114, 111, 112, 101, 114, 116, 105, 101, 115, 34, 58, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 109, 101, 115, 115, 97, 103, 101, 34, 58, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 116, 121, 112, 101, 34, 58, 32, 34, 115, 116, 114, 105, 110, 103, 34, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34, 114, 101, 113, 117, 105, 114, 101, 100, 34, 58, 32, 91, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 109, 101, 115, 115, 97, 103, 101, 34, 10, 32, 32, 32, 32, 32, 32, 32, 32, 93, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34, 116, 121, 112, 101, 34, 58, 32, 34, 111, 98, 106, 101, 99, 116, 34, 10, 32, 32, 32, 32, 32, 32, 125, 44, 10, 32, 32, 32, 32, 32, 32, 34, 85, 115, 101, 114, 34, 58, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34, 97, 100, 100, 105, 116, 105, 111, 110, 97, 108, 80, 114, 111, 112, 101, 114, 116, 105, 101, 115, 34, 58, 32, 102, 97, 108, 115, 101, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34, 112, 114, 111, 112, 101, 114, 116, 105, 101, 115, 34, 58, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 97, 103, 101, 34, 58, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 100, 101, 115, 99, 114, 105, 112, 116, 105, 111, 110, 34, 58, 32, 34, 65, 103, 101, 32, 111, 102, 32, 117, 115, 101, 114, 34, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 101, 120, 97, 109, 112, 108, 101, 115, 34, 58, 32, 91, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 51, 50, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 93, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 102, 111, 114, 109, 97, 116, 34, 58, 32, 34, 105, 110, 116, 54, 52, 34, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 116, 121, 112, 101, 34, 58, 32, 34, 105, 110, 116, 101, 103, 101, 114, 34, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 125, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 105, 100, 34, 58, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 100, 101, 115, 99, 114, 105, 112, 116, 105, 111, 110, 34, 58, 32, 34, 73, 68, 32, 111, 102, 32, 117, 115, 101, 114, 34, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 101, 120, 97, 109, 112, 108, 101, 115, 34, 58, 32, 91, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 50, 34, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 93, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 116, 121, 112, 101, 34, 58, 32, 34, 115, 116, 114, 105, 110, 103, 34, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 125, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 110, 97, 109, 101, 34, 58, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 100, 101, 115, 99, 114, 105, 112, 116, 105, 111, 110, 34, 58, 32, 34, 78, 97, 109, 101, 32, 111, 102, 32, 117, 115, 101, 114, 34, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 101, 120, 97, 109, 112, 108, 101, 115, 34, 58, 32, 91, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 106, 111, 101, 34, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 93, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 116, 121, 112, 101, 34, 58, 32, 34, 115, 116, 114, 105, 110, 103, 34, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34, 114, 101, 113, 117, 105, 114, 101, 100, 34, 58, 32, 91, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 105, 100, 34, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 110, 97, 109, 101, 34, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 97, 103, 101, 34, 10, 32, 32, 32, 32, 32, 32, 32, 32, 93, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34, 116, 121, 112, 101, 34, 58, 32, 34, 111, 98, 106, 101, 99, 116, 34, 10, 32, 32, 32, 32, 32, 32, 125, 10, 32, 32, 32, 32, 125, 44, 10, 32, 32, 32, 32, 34, 115, 101, 99, 117, 114, 105, 116, 121, 83, 99, 104, 101, 109, 101, 115, 34, 58, 32, 123, 10, 32, 32, 32, 32, 32, 32, 34, 66, 101, 97, 114, 101, 114, 65, 117, 116, 104, 34, 58, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34, 115, 99, 104, 101, 109, 101, 34, 58, 32, 34, 98, 101, 97, 114, 101, 114, 34, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34, 116, 121, 112, 101, 34, 58, 32, 34, 104, 116, 116, 112, 34, 10, 32, 32, 32, 32, 32, 32, 125, 44, 10, 32, 32, 32, 32, 32, 32, 34, 79, 65, 117, 116, 104, 50, 34, 58, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34, 102, 108, 111, 119, 115, 34, 58, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 105, 109, 112, 108, 105, 99, 105, 116, 34, 58, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 97, 117, 116, 104, 111, 114, 105, 122, 97, 116, 105, 111, 110, 85, 114, 108, 34, 58, 32, 34, 104, 116, 116, 112, 115, 58, 47, 47, 97, 112, 105, 46, 101, 120, 97, 109, 112, 108, 101, 46, 99, 111, 109, 47, 111, 97, 117, 116, 104, 50, 47, 97, 117, 116, 104, 111, 114, 105, 122, 101, 34, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 115, 99, 111, 112, 101, 115, 34, 58, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 114, 101, 97, 100, 95, 117, 115, 101, 114, 115, 34, 58, 32, 34, 114, 101, 97, 100, 32, 117, 115, 101, 114, 115, 34, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 119, 114, 105, 116, 101, 95, 117, 115, 101, 114, 115, 34, 58, 32, 34, 119, 114, 105, 116, 101, 32, 116, 111, 32, 117, 115, 101, 114, 115, 34, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 125, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 116, 111, 107, 101, 110, 85, 114, 108, 34, 58, 32, 34, 34, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34, 116, 121, 112, 101, 34, 58, 32, 34, 111, 97, 117, 116, 104, 50, 34, 10, 32, 32, 32, 32, 32, 32, 125, 10, 32, 32, 32, 32, 125, 10, 32, 32, 125, 44, 10, 32, 32, 34, 105, 110, 102, 111, 34, 58, 32, 123, 10, 32, 32, 32, 32, 34, 100, 101, 115, 99, 114, 105, 112, 116, 105, 111, 110, 34, 58, 32, 34, 77, 121, 32, 65, 80, 73, 32, 105, 115, 32, 97, 32, 103, 114, 101, 97, 116, 32, 65, 80, 73, 34, 44, 10, 32, 32, 32, 32, 34, 116, 105, 116, 108, 101, 34, 58, 32, 34, 116, 105, 116, 108, 101, 34, 44, 10, 32, 32, 32, 32, 34, 118, 101, 114, 115, 105, 111, 110, 34, 58, 32, 34, 118, 101, 114, 115, 105, 111, 110, 34, 10, 32, 32, 125, 44, 10, 32, 32, 34, 111, 112, 101, 110, 97, 112, 105, 34, 58, 32, 34, 51, 46, 49, 46, 48, 34, 44, 10, 32, 32, 34, 112, 97, 116, 104, 115, 34, 58, 32, 123, 10, 32, 32, 32, 32, 34, 47, 108, 111, 103, 105, 110, 34, 58, 32, 123, 10, 32, 32, 32, 32, 32, 32, 34, 112, 111, 115, 116, 34, 58, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34, 111, 112, 101, 114, 97, 116, 105, 111, 110, 73, 100, 34, 58, 32, 34, 108, 111, 103, 105, 110, 85, 115, 101, 114, 34, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34, 114, 101, 113, 117, 101, 115, 116, 66, 111, 100, 121, 34, 58, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 99, 111, 110, 116, 101, 110, 116, 34, 58, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 97, 112, 112, 108, 105, 99, 97, 116, 105, 111, 110, 47, 106, 115, 111, 110, 34, 58, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 115, 99, 104, 101, 109, 97, 34, 58, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 36, 114, 101, 102, 34, 58, 32, 34, 35, 47, 99, 111, 109, 112, 111, 110, 101, 110, 116, 115, 47, 115, 99, 104, 101, 109, 97, 115, 47, 76, 111, 103, 105, 110, 82, 101, 113, 117, 101, 115, 116, 34, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 125, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 114, 101, 113, 117, 105, 114, 101, 100, 34, 58, 32, 116, 114, 117, 101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34, 114, 101, 115, 112, 111, 110, 115, 101, 115, 34, 58, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 50, 48, 48, 34, 58, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 99, 111, 110, 116, 101, 110, 116, 34, 58, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 97, 112, 112, 108, 105, 99, 97, 116, 105, 111, 110, 47, 106, 115, 111, 110, 34, 58, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 115, 99, 104, 101, 109, 97, 34, 58, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 36, 114, 101, 102, 34, 58, 32, 34, 35, 47, 99, 111, 109, 112, 111, 110, 101, 110, 116, 115, 47, 115, 99, 104, 101, 109, 97, 115, 47, 83, 117, 99, 99, 101, 115, 115, 34, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 125, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 116, 101, 120, 116, 47, 112, 108, 97, 105, 110, 34, 58, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 115, 99, 104, 101, 109, 97, 34, 58, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 116, 121, 112, 101, 34, 58, 32, 34, 115, 116, 114, 105, 110, 103, 34, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 32, 32, 32, 32, 32, 32, 125, 10, 32, 32, 32, 32, 125, 44, 10, 32, 32, 32, 32, 34, 47, 117, 115, 101, 114, 115, 47, 123, 117, 115, 101, 114, 73, 100, 125, 34, 58, 32, 123, 10, 32, 32, 32, 32, 32, 32, 34, 103, 101, 116, 34, 58, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34, 111, 112, 101, 114, 97, 116, 105, 111, 110, 73, 100, 34, 58, 32, 34, 103, 101, 116, 85, 115, 101, 114, 34, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34, 112, 97, 114, 97, 109, 101, 116, 101, 114, 115, 34, 58, 32, 91, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 105, 110, 34, 58, 32, 34, 112, 97, 116, 104, 34, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 110, 97, 109, 101, 34, 58, 32, 34, 117, 115, 101, 114, 73, 100, 34, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 114, 101, 113, 117, 105, 114, 101, 100, 34, 58, 32, 116, 114, 117, 101, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 115, 99, 104, 101, 109, 97, 34, 58, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 102, 111, 114, 109, 97, 116, 34, 58, 32, 34, 105, 110, 116, 54, 52, 34, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 116, 121, 112, 101, 34, 58, 32, 34, 105, 110, 116, 101, 103, 101, 114, 34, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 125, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 100, 101, 115, 99, 114, 105, 112, 116, 105, 111, 110, 34, 58, 32, 34, 65, 103, 101, 32, 111, 102, 32, 117, 115, 101, 114, 34, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 101, 120, 97, 109, 112, 108, 101, 34, 58, 32, 34, 49, 50, 34, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 105, 110, 34, 58, 32, 34, 113, 117, 101, 114, 121, 34, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 110, 97, 109, 101, 34, 58, 32, 34, 97, 103, 101, 34, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 115, 99, 104, 101, 109, 97, 34, 58, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 102, 111, 114, 109, 97, 116, 34, 58, 32, 34, 105, 110, 116, 54, 52, 34, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 116, 121, 112, 101, 34, 58, 32, 91, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 105, 110, 116, 101, 103, 101, 114, 34, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 110, 117, 108, 108, 34, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 93, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 125, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 100, 101, 115, 99, 114, 105, 112, 116, 105, 111, 110, 34, 58, 32, 34, 69, 109, 97, 105, 108, 32, 111, 102, 32, 117, 115, 101, 114, 34, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 101, 120, 97, 109, 112, 108, 101, 34, 58, 32, 34, 106, 111, 101, 64, 103, 109, 97, 105, 108, 46, 99, 111, 109, 34, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 105, 110, 34, 58, 32, 34, 113, 117, 101, 114, 121, 34, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 110, 97, 109, 101, 34, 58, 32, 34, 101, 109, 97, 105, 108, 34, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 115, 99, 104, 101, 109, 97, 34, 58, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 116, 121, 112, 101, 34, 58, 32, 34, 115, 116, 114, 105, 110, 103, 34, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 32, 32, 32, 32, 32, 32, 32, 32, 93, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34, 114, 101, 115, 112, 111, 110, 115, 101, 115, 34, 58, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 50, 48, 48, 34, 58, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 99, 111, 110, 116, 101, 110, 116, 34, 58, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 97, 112, 112, 108, 105, 99, 97, 116, 105, 111, 110, 47, 106, 115, 111, 110, 34, 58, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 101, 120, 97, 109, 112, 108, 101, 34, 58, 32, 34, 123, 105, 100, 58, 32, 51, 44, 32, 110, 97, 109, 101, 58, 32, 92, 34, 106, 111, 101, 92, 34, 44, 32, 97, 103, 101, 58, 32, 53, 125, 34, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 115, 99, 104, 101, 109, 97, 34, 58, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 36, 114, 101, 102, 34, 58, 32, 34, 35, 47, 99, 111, 109, 112, 111, 110, 101, 110, 116, 115, 47, 115, 99, 104, 101, 109, 97, 115, 47, 85, 115, 101, 114, 34, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 125, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 52, 48, 51, 34, 58, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 99, 111, 110, 116, 101, 110, 116, 34, 58, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 97, 112, 112, 108, 105, 99, 97, 116, 105, 111, 110, 47, 106, 115, 111, 110, 34, 58, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 115, 99, 104, 101, 109, 97, 34, 58, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 36, 114, 101, 102, 34, 58, 32, 34, 35, 47, 99, 111, 109, 112, 111, 110, 101, 110, 116, 115, 47, 115, 99, 104, 101, 109, 97, 115, 47, 69, 114, 114, 111, 114, 34, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 32, 32, 32, 32, 32, 32, 125, 10, 32, 32, 32, 32, 125, 10, 32, 32, 125, 44, 10, 32, 32, 34, 115, 101, 99, 117, 114, 105, 116, 121, 34, 58, 32, 91, 10, 32, 32, 32, 32, 123, 10, 32, 32, 32, 32, 32, 32, 34, 79, 65, 117, 116, 104, 50, 34, 58, 32, 91, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34, 114, 101, 97, 100, 95, 117, 115, 101, 114, 115, 34, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34, 119, 114, 105, 116, 101, 95, 117, 115, 101, 114, 115, 34, 10, 32, 32, 32, 32, 32, 32, 93, 10, 32, 32, 32, 32, 125, 10, 32, 32, 93, 44, 10, 32, 32, 34, 115, 101, 114, 118, 101, 114, 115, 34, 58, 32, 91, 10, 32, 32, 32, 32, 123, 10, 32, 32, 32, 32, 32, 32, 34, 100, 101, 115, 99, 114, 105, 112, 116, 105, 111, 110, 34, 58, 32, 34, 77, 121, 32, 65, 80, 73, 32, 85, 82, 76, 34, 44, 10, 32, 32, 32, 32, 32, 32, 34, 117, 114, 108, 34, 58, 32, 34, 104, 116, 116, 112, 115, 58, 47, 47, 109, 121, 97, 112, 105, 46, 99, 111, 109, 34, 10, 32, 32, 32, 32, 125, 10, 32, 32, 93, 10, 125}, YAML: []byte{99, 111, 109, 112, 111, 110, 101, 110, 116, 115, 58, 10, 32, 32, 115, 99, 104, 101, 109, 97, 115, 58, 10, 32, 32, 32, 32, 69, 114, 114, 111, 114, 58, 10, 32, 32, 32, 32, 32, 32, 97, 100, 100, 105, 116, 105, 111, 110, 97, 108, 80, 114, 111, 112, 101, 114, 116, 105, 101, 115, 58, 32, 102, 97, 108, 115, 101, 10, 32, 32, 32, 32, 32, 32, 112, 114, 111, 112, 101, 114, 116, 105, 101, 115, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 109, 101, 115, 115, 97, 103, 101, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 116, 121, 112, 101, 58, 32, 115, 116, 114, 105, 110, 103, 10, 32, 32, 32, 32, 32, 32, 114, 101, 113, 117, 105, 114, 101, 100, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 45, 32, 109, 101, 115, 115, 97, 103, 101, 10, 32, 32, 32, 32, 32, 32, 116, 121, 112, 101, 58, 32, 111, 98, 106, 101, 99, 116, 10, 32, 32, 32, 32, 76, 111, 103, 105, 110, 82, 101, 113, 117, 101, 115, 116, 58, 10, 32, 32, 32, 32, 32, 32, 97, 100, 100, 105, 116, 105, 111, 110, 97, 108, 80, 114, 111, 112, 101, 114, 116, 105, 101, 115, 58, 32, 102, 97, 108, 115, 101, 10, 32, 32, 32, 32, 32, 32, 112, 114, 111, 112, 101, 114, 116, 105, 101, 115, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 112, 97, 115, 115, 119, 111, 114, 100, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 100, 101, 115, 99, 114, 105, 112, 116, 105, 111, 110, 58, 32, 112, 97, 115, 115, 119, 111, 114, 100, 32, 116, 111, 32, 108, 111, 103, 105, 110, 32, 119, 105, 116, 104, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 109, 97, 120, 76, 101, 110, 103, 116, 104, 58, 32, 53, 48, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 116, 121, 112, 101, 58, 32, 115, 116, 114, 105, 110, 103, 10, 32, 32, 32, 32, 32, 32, 32, 32, 117, 115, 101, 114, 110, 97, 109, 101, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 100, 101, 115, 99, 114, 105, 112, 116, 105, 111, 110, 58, 32, 117, 115, 101, 114, 110, 97, 109, 101, 32, 116, 111, 32, 108, 111, 103, 105, 110, 32, 119, 105, 116, 104, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 109, 97, 120, 76, 101, 110, 103, 116, 104, 58, 32, 50, 53, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 116, 121, 112, 101, 58, 32, 115, 116, 114, 105, 110, 103, 10, 32, 32, 32, 32, 32, 32, 114, 101, 113, 117, 105, 114, 101, 100, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 45, 32, 117, 115, 101, 114, 110, 97, 109, 101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 45, 32, 112, 97, 115, 115, 119, 111, 114, 100, 10, 32, 32, 32, 32, 32, 32, 116, 121, 112, 101, 58, 32, 111, 98, 106, 101, 99, 116, 10, 32, 32, 32, 32, 83, 117, 99, 99, 101, 115, 115, 58, 10, 32, 32, 32, 32, 32, 32, 97, 100, 100, 105, 116, 105, 111, 110, 97, 108, 80, 114, 111, 112, 101, 114, 116, 105, 101, 115, 58, 32, 102, 97, 108, 115, 101, 10, 32, 32, 32, 32, 32, 32, 112, 114, 111, 112, 101, 114, 116, 105, 101, 115, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 109, 101, 115, 115, 97, 103, 101, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 116, 121, 112, 101, 58, 32, 115, 116, 114, 105, 110, 103, 10, 32, 32, 32, 32, 32, 32, 114, 101, 113, 117, 105, 114, 101, 100, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 45, 32, 109, 101, 115, 115, 97, 103, 101, 10, 32, 32, 32, 32, 32, 32, 116, 121, 112, 101, 58, 32, 111, 98, 106, 101, 99, 116, 10, 32, 32, 32, 32, 85, 115, 101, 114, 58, 10, 32, 32, 32, 32, 32, 32, 97, 100, 100, 105, 116, 105, 111, 110, 97, 108, 80, 114, 111, 112, 101, 114, 116, 105, 101, 115, 58, 32, 102, 97, 108, 115, 101, 10, 32, 32, 32, 32, 32, 32, 112, 114, 111, 112, 101, 114, 116, 105, 101, 115, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 97, 103, 101, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 100, 101, 115, 99, 114, 105, 112, 116, 105, 111, 110, 58, 32, 65, 103, 101, 32, 111, 102, 32, 117, 115, 101, 114, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 101, 120, 97, 109, 112, 108, 101, 115, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 45, 32, 51, 50, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 102, 111, 114, 109, 97, 116, 58, 32, 105, 110, 116, 54, 52, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 116, 121, 112, 101, 58, 32, 105, 110, 116, 101, 103, 101, 114, 10, 32, 32, 32, 32, 32, 32, 32, 32, 105, 100, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 100, 101, 115, 99, 114, 105, 112, 116, 105, 111, 110, 58, 32, 73, 68, 32, 111, 102, 32, 117, 115, 101, 114, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 101, 120, 97, 109, 112, 108, 101, 115, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 45, 32, 34, 50, 34, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 116, 121, 112, 101, 58, 32, 115, 116, 114, 105, 110, 103, 10, 32, 32, 32, 32, 32, 32, 32, 32, 110, 97, 109, 101, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 100, 101, 115, 99, 114, 105, 112, 116, 105, 111, 110, 58, 32, 78, 97, 109, 101, 32, 111, 102, 32, 117, 115, 101, 114, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 101, 120, 97, 109, 112, 108, 101, 115, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 45, 32, 106, 111, 101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 116, 121, 112, 101, 58, 32, 115, 116, 114, 105, 110, 103, 10, 32, 32, 32, 32, 32, 32, 114, 101, 113, 117, 105, 114, 101, 100, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 45, 32, 105, 100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 45, 32, 110, 97, 109, 101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 45, 32, 97, 103, 101, 10, 32, 32, 32, 32, 32, 32, 116, 121, 112, 101, 58, 32, 111, 98, 106, 101, 99, 116, 10, 32, 32, 115, 101, 99, 117, 114, 105, 116, 121, 83, 99, 104, 101, 109, 101, 115, 58, 10, 32, 32, 32, 32, 66, 101, 97, 114, 101, 114, 65, 117, 116, 104, 58, 10, 32, 32, 32, 32, 32, 32, 115, 99, 104, 101, 109, 101, 58, 32, 98, 101, 97, 114, 101, 114, 10, 32, 32, 32, 32, 32, 32, 116, 121, 112, 101, 58, 32, 104, 116, 116, 112, 10, 32, 32, 32, 32, 79, 65, 117, 116, 104, 50, 58, 10, 32, 32, 32, 32, 32, 32, 102, 108, 111, 119, 115, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 105, 109, 112, 108, 105, 99, 105, 116, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 97, 117, 116, 104, 111, 114, 105, 122, 97, 116, 105, 111, 110, 85, 114, 108, 58, 32, 104, 116, 116, 112, 115, 58, 47, 47, 97, 112, 105, 46, 101, 120, 97, 109, 112, 108, 101, 46, 99, 111, 109, 47, 111, 97, 117, 116, 104, 50, 47, 97, 117, 116, 104, 111, 114, 105, 122, 101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 115, 99, 111, 112, 101, 115, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 114, 101, 97, 100, 95, 117, 115, 101, 114, 115, 58, 32, 114, 101, 97, 100, 32, 117, 115, 101, 114, 115, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 119, 114, 105, 116, 101, 95, 117, 115, 101, 114, 115, 58, 32, 119, 114, 105, 116, 101, 32, 116, 111, 32, 117, 115, 101, 114, 115, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 116, 111, 107, 101, 110, 85, 114, 108, 58, 32, 34, 34, 10, 32, 32, 32, 32, 32, 32, 116, 121, 112, 101, 58, 32, 111, 97, 117, 116, 104, 50, 10, 105, 110, 102, 111, 58, 10, 32, 32, 100, 101, 115, 99, 114, 105, 112, 116, 105, 111, 110, 58, 32, 77, 121, 32, 65, 80, 73, 32, 105, 115, 32, 97, 32, 103, 114, 101, 97, 116, 32, 65, 80, 73, 10, 32, 32, 116, 105, 116, 108, 101, 58, 32, 116, 105, 116, 108, 101, 10, 32, 32, 118, 101, 114, 115, 105, 111, 110, 58, 32, 118, 101, 114, 115, 105, 111, 110, 10, 111, 112, 101, 110, 97, 112, 105, 58, 32, 51, 46, 49, 46, 48, 10, 112, 97, 116, 104, 115, 58, 10, 32, 32, 47, 108, 111, 103, 105, 110, 58, 10, 32, 32, 32, 32, 112, 111, 115, 116, 58, 10, 32, 32, 32, 32, 32, 32, 111, 112, 101, 114, 97, 116, 105, 111, 110, 73, 100, 58, 32, 108, 111, 103, 105, 110, 85, 115, 101, 114, 10, 32, 32, 32, 32, 32, 32, 114, 101, 113, 117, 101, 115, 116, 66, 111, 100, 121, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 99, 111, 110, 116, 101, 110, 116, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 97, 112, 112, 108, 105, 99, 97, 116, 105, 111, 110, 47, 106, 115, 111, 110, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 115, 99, 104, 101, 109, 97, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 36, 114, 101, 102, 58, 32, 34, 35, 47, 99, 111, 109, 112, 111, 110, 101, 110, 116, 115, 47, 115, 99, 104, 101, 109, 97, 115, 47, 76, 111, 103, 105, 110, 82, 101, 113, 117, 101, 115, 116, 34, 10, 32, 32, 32, 32, 32, 32, 32, 32, 114, 101, 113, 117, 105, 114, 101, 100, 58, 32, 116, 114, 117, 101, 10, 32, 32, 32, 32, 32, 32, 114, 101, 115, 112, 111, 110, 115, 101, 115, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34, 50, 48, 48, 34, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 99, 111, 110, 116, 101, 110, 116, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 97, 112, 112, 108, 105, 99, 97, 116, 105, 111, 110, 47, 106, 115, 111, 110, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 115, 99, 104, 101, 109, 97, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 36, 114, 101, 102, 58, 32, 34, 35, 47, 99, 111, 109, 112, 111, 110, 101, 110, 116, 115, 47, 115, 99, 104, 101, 109, 97, 115, 47, 83, 117, 99, 99, 101, 115, 115, 34, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 116, 101, 120, 116, 47, 112, 108, 97, 105, 110, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 115, 99, 104, 101, 109, 97, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 116, 121, 112, 101, 58, 32, 115, 116, 114, 105, 110, 103, 10, 32, 32, 47, 117, 115, 101, 114, 115, 47, 123, 117, 115, 101, 114, 73, 100, 125, 58, 10, 32, 32, 32, 32, 103, 101, 116, 58, 10, 32, 32, 32, 32, 32, 32, 111, 112, 101, 114, 97, 116, 105, 111, 110, 73, 100, 58, 32, 103, 101, 116, 85, 115, 101, 114, 10, 32, 32, 32, 32, 32, 32, 112, 97, 114, 97, 109, 101, 116, 101, 114, 115, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 45, 32, 105, 110, 58, 32, 112, 97, 116, 104, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 110, 97, 109, 101, 58, 32, 117, 115, 101, 114, 73, 100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 114, 101, 113, 117, 105, 114, 101, 100, 58, 32, 116, 114, 117, 101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 115, 99, 104, 101, 109, 97, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 102, 111, 114, 109, 97, 116, 58, 32, 105, 110, 116, 54, 52, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 116, 121, 112, 101, 58, 32, 105, 110, 116, 101, 103, 101, 114, 10, 32, 32, 32, 32, 32, 32, 32, 32, 45, 32, 100, 101, 115, 99, 114, 105, 112, 116, 105, 111, 110, 58, 32, 65, 103, 101, 32, 111, 102, 32, 117, 115, 101, 114, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 101, 120, 97, 109, 112, 108, 101, 58, 32, 34, 49, 50, 34, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 105, 110, 58, 32, 113, 117, 101, 114, 121, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 110, 97, 109, 101, 58, 32, 97, 103, 101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 115, 99, 104, 101, 109, 97, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 102, 111, 114, 109, 97, 116, 58, 32, 105, 110, 116, 54, 52, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 116, 121, 112, 101, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 45, 32, 105, 110, 116, 101, 103, 101, 114, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 45, 32, 34, 110, 117, 108, 108, 34, 10, 32, 32, 32, 32, 32, 32, 32, 32, 45, 32, 100, 101, 115, 99, 114, 105, 112, 116, 105, 111, 110, 58, 32, 69, 109, 97, 105, 108, 32, 111, 102, 32, 117, 115, 101, 114, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 101, 120, 97, 109, 112, 108, 101, 58, 32, 106, 111, 101, 64, 103, 109, 97, 105, 108, 46, 99, 111, 109, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 105, 110, 58, 32, 113, 117, 101, 114, 121, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 110, 97, 109, 101, 58, 32, 101, 109, 97, 105, 108, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 115, 99, 104, 101, 109, 97, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 116, 121, 112, 101, 58, 32, 115, 116, 114, 105, 110, 103, 10, 32, 32, 32, 32, 32, 32, 114, 101, 115, 112, 111, 110, 115, 101, 115, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34, 50, 48, 48, 34, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 99, 111, 110, 116, 101, 110, 116, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 97, 112, 112, 108, 105, 99, 97, 116, 105, 111, 110, 47, 106, 115, 111, 110, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 101, 120, 97, 109, 112, 108, 101, 58, 32, 34, 123, 105, 100, 58, 32, 51, 44, 32, 110, 97, 109, 101, 58, 32, 92, 34, 106, 111, 101, 92, 34, 44, 32, 97, 103, 101, 58, 32, 53, 125, 34, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 115, 99, 104, 101, 109, 97, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 36, 114, 101, 102, 58, 32, 34, 35, 47, 99, 111, 109, 112, 111, 110, 101, 110, 116, 115, 47, 115, 99, 104, 101, 109, 97, 115, 47, 85, 115, 101, 114, 34, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34, 52, 48, 51, 34, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 99, 111, 110, 116, 101, 110, 116, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 97, 112, 112, 108, 105, 99, 97, 116, 105, 111, 110, 47, 106, 115, 111, 110, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 115, 99, 104, 101, 109, 97, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 36, 114, 101, 102, 58, 32, 34, 35, 47, 99, 111, 109, 112, 111, 110, 101, 110, 116, 115, 47, 115, 99, 104, 101, 109, 97, 115, 47, 69, 114, 114, 111, 114, 34, 10, 115, 101, 99, 117, 114, 105, 116, 121, 58, 10, 32, 32, 45, 32, 79, 65, 117, 116, 104, 50, 58, 10, 32, 32, 32, 32, 32, 32, 45, 32, 114, 101, 97, 100, 95, 117, 115, 101, 114, 115, 10, 32, 32, 32, 32, 32, 32, 45, 32, 119, 114, 105, 116, 101, 95, 117, 115, 101, 114, 115, 10, 115, 101, 114, 118, 101, 114, 115, 58, 10, 32, 32, 45, 32, 100, 101, 115, 99, 114, 105, 112, 116, 105, 111, 110, 58, 32, 77, 121, 32, 65, 80, 73, 32, 85, 82, 76, 10, 32, 32, 32, 32, 117, 114, 108, 58, 32, 104, 116, 116, 112, 115, 58, 47, 47, 109, 121, 97, 112, 105, 46, 99, 111, 109, 10}}, "3.0.3": &ExpectedOutput{YAML: []byte{99, 111, 109, 112, 111, 110, 101, 110, 116, 115, 58, 10, 32, 32, 115, 99, 104, 101, 109, 97, 115, 58, 10, 32, 32, 32, 32, 69, 114, 114, 111, 114, 58, 10, 32, 32, 32, 32, 32, 32, 97, 100, 100, 105, 116, 105, 111, 110, 97, 108, 80, 114, 111, 112, 101, 114, 116, 105, 101, 115, 58, 32, 102, 97, 108, 115, 101, 10, 32, 32, 32, 32, 32, 32, 112, 114, 111, 112, 101, 114, 116, 105, 101, 115, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 109, 101, 115, 115, 97, 103, 101, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 116, 121, 112, 101, 58, 32, 115, 116, 114, 105, 110, 103, 10, 32, 32, 32, 32, 32, 32, 114, 101, 113, 117, 105, 114, 101, 100, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 45, 32, 109, 101, 115, 115, 97, 103, 101, 10, 32, 32, 32, 32, 32, 32, 116, 121, 112, 101, 58, 32, 111, 98, 106, 101, 99, 116, 10, 32, 32, 32, 32, 76, 111, 103, 105, 110, 82, 101, 113, 117, 101, 115, 116, 58, 10, 32, 32, 32, 32, 32, 32, 97, 100, 100, 105, 116, 105, 111, 110, 97, 108, 80, 114, 111, 112, 101, 114, 116, 105, 101, 115, 58, 32, 102, 97, 108, 115, 101, 10, 32, 32, 32, 32, 32, 32, 112, 114, 111, 112, 101, 114, 116, 105, 101, 115, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 112, 97, 115, 115, 119, 111, 114, 100, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 100, 101, 115, 99, 114, 105, 112, 116, 105, 111, 110, 58, 32, 112, 97, 115, 115, 119, 111, 114, 100, 32, 116, 111, 32, 108, 111, 103, 105, 110, 32, 119, 105, 116, 104, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 109, 97, 120, 76, 101, 110, 103, 116, 104, 58, 32, 53, 48, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 116, 121, 112, 101, 58, 32, 115, 116, 114, 105, 110, 103, 10, 32, 32, 32, 32, 32, 32, 32, 32, 117, 115, 101, 114, 110, 97, 109, 101, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 100, 101, 115, 99, 114, 105, 112, 116, 105, 111, 110, 58, 32, 117, 115, 101, 114, 110, 97, 109, 101, 32, 116, 111, 32, 108, 111, 103, 105, 110, 32, 119, 105, 116, 104, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 109, 97, 120, 76, 101, 110, 103, 116, 104, 58, 32, 50, 53, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 116, 121, 112, 101, 58, 32, 115, 116, 114, 105, 110, 103, 10, 32, 32, 32, 32, 32, 32, 114, 101, 113, 117, 105, 114, 101, 100, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 45, 32, 117, 115, 101, 114, 110, 97, 109, 101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 45, 32, 112, 97, 115, 115, 119, 111, 114, 100, 10, 32, 32, 32, 32, 32, 32, 116, 121, 112, 101, 58, 32, 111, 98, 106, 101, 99, 116, 10, 32, 32, 32, 32, 83, 117, 99, 99, 101, 115, 115, 58, 10, 32, 32, 32, 32, 32, 32, 97, 100, 100, 105, 116, 105, 111, 110, 97, 108, 80, 114, 111, 112, 101, 114, 116, 105, 101, 115, 58, 32, 102, 97, 108, 115, 101, 10, 32, 32, 32, 32, 32, 32, 112, 114, 111, 112, 101, 114, 116, 105, 101, 115, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 109, 101, 115, 115, 97, 103, 101, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 116, 121, 112, 101, 58, 32, 115, 116, 114, 105, 110, 103, 10, 32, 32, 32, 32, 32, 32, 114, 101, 113, 117, 105, 114, 101, 100, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 45, 32, 109, 101, 115, 115, 97, 103, 101, 10, 32, 32, 32, 32, 32, 32, 116, 121, 112, 101, 58, 32, 111, 98, 106, 101, 99, 116, 10, 32, 32, 32, 32, 85, 115, 101, 114, 58, 10, 32, 32, 32, 32, 32, 32, 97, 100, 100, 105, 116, 105, 111, 110, 97, 108, 80, 114, 111, 112, 101, 114, 116, 105, 101, 115, 58, 32, 102, 97, 108, 115, 101, 10, 32, 32, 32, 32, 32, 32, 112, 114, 111, 112, 101, 114, 116, 105, 101, 115, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 97, 103, 101, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 100, 101, 115, 99, 114, 105, 112, 116, 105, 111, 110, 58, 32, 65, 103, 101, 32, 111, 102, 32, 117, 115, 101, 114, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 101, 120, 97, 109, 112, 108, 101, 58, 32, 51, 50, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 102, 111, 114, 109, 97, 116, 58, 32, 105, 110, 116, 54, 52, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 116, 121, 112, 101, 58, 32, 105, 110, 116, 101, 103, 101, 114, 10, 32, 32, 32, 32, 32, 32, 32, 32, 105, 100, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 100, 101, 115, 99, 114, 105, 112, 116, 105, 111, 110, 58, 32, 73, 68, 32, 111, 102, 32, 117, 115, 101, 114, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 101, 120, 97, 109, 112, 108, 101, 58, 32, 34, 50, 34, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 116, 121, 112, 101, 58, 32, 115, 116, 114, 105, 110, 103, 10, 32, 32, 32, 32, 32, 32, 32, 32, 110, 97, 109, 101, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 100, 101, 115, 99, 114, 105, 112, 116, 105, 111, 110, 58, 32, 78, 97, 109, 101, 32, 111, 102, 32, 117, 115, 101, 114, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 101, 120, 97, 109, 112, 108, 101, 58, 32, 106, 111, 101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 116, 121, 112, 101, 58, 32, 115, 116, 114, 105, 110, 103, 10, 32, 32, 32, 32, 32, 32, 114, 101, 113, 117, 105, 114, 101, 100, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 45, 32, 105, 100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 45, 32, 110, 97, 109, 101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 45, 32, 97, 103, 101, 10, 32, 32, 32, 32, 32, 32, 116, 121, 112, 101, 58, 32, 111, 98, 106, 101, 99, 116, 10, 32, 32, 115, 101, 99, 117, 114, 105, 116, 121, 83, 99, 104, 101, 109, 101, 115, 58, 10, 32, 32, 32, 32, 66, 101, 97, 114, 101, 114, 65, 117, 116, 104, 58, 10, 32, 32, 32, 32, 32, 32, 115, 99, 104, 101, 109, 101, 58, 32, 98, 101, 97, 114, 101, 114, 10, 32, 32, 32, 32, 32, 32, 116, 121, 112, 101, 58, 32, 104, 116, 116, 112, 10, 32, 32, 32, 32, 79, 65, 117, 116, 104, 50, 58, 10, 32, 32, 32, 32, 32, 32, 102, 108, 111, 119, 115, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 105, 109, 112, 108, 105, 99, 105, 116, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 97, 117, 116, 104, 111, 114, 105, 122, 97, 116, 105, 111, 110, 85, 114, 108, 58, 32, 104, 116, 116, 112, 115, 58, 47, 47, 97, 112, 105, 46, 101, 120, 97, 109, 112, 108, 101, 46, 99, 111, 109, 47, 111, 97, 117, 116, 104, 50, 47, 97, 117, 116, 104, 111, 114, 105, 122, 101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 115, 99, 111, 112, 101, 115, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 114, 101, 97, 100, 95, 117, 115, 101, 114, 115, 58, 32, 114, 101, 97, 100, 32, 117, 115, 101, 114, 115, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 119, 114, 105, 116, 101, 95, 117, 115, 101, 114, 115, 58, 32, 119, 114, 105, 116, 101, 32, 116, 111, 32, 117, 115, 101, 114, 115, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 116, 111, 107, 101, 110, 85, 114, 108, 58, 32, 34, 34, 10, 32, 32, 32, 32, 32, 32, 116, 121, 112, 101, 58, 32, 111, 97, 117, 116, 104, 50, 10, 105, 110, 102, 111, 58, 10, 32, 32, 100, 101, 115, 99, 114, 105, 112, 116, 105, 111, 110, 58, 32, 77, 121, 32, 65, 80, 73, 32, 105, 115, 32, 97, 32, 103, 114, 101, 97, 116, 32, 65, 80, 73, 10, 32, 32, 116, 105, 116, 108, 101, 58, 32, 116, 105, 116, 108, 101, 10, 32, 32, 118, 101, 114, 115, 105, 111, 110, 58, 32, 118, 101, 114, 115, 105, 111, 110, 10, 111, 112, 101, 110, 97, 112, 105, 58, 32, 51, 46, 48, 46, 51, 10, 112, 97, 116, 104, 115, 58, 10, 32, 32, 47, 108, 111, 103, 105, 110, 58, 10, 32, 32, 32, 32, 112, 111, 115, 116, 58, 10, 32, 32, 32, 32, 32, 32, 111, 112, 101, 114, 97, 116, 105, 111, 110, 73, 100, 58, 32, 108, 111, 103, 105, 110, 85, 115, 101, 114, 10, 32, 32, 32, 32, 32, 32, 114, 101, 113, 117, 101, 115, 116, 66, 111, 100, 121, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 99, 111, 110, 116, 101, 110, 116, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 97, 112, 112, 108, 105, 99, 97, 116, 105, 111, 110, 47, 106, 115, 111, 110, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 115, 99, 104, 101, 109, 97, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 36, 114, 101, 102, 58, 32, 34, 35, 47, 99, 111, 109, 112, 111, 110, 101, 110, 116, 115, 47, 115, 99, 104, 101, 109, 97, 115, 47, 76, 111, 103, 105, 110, 82, 101, 113, 117, 101, 115, 116, 34, 10, 32, 32, 32, 32, 32, 32, 32, 32, 114, 101, 113, 117, 105, 114, 101, 100, 58, 32, 116, 114, 117, 101, 10, 32, 32, 32, 32, 32, 32, 114, 101, 115, 112, 111, 110, 115, 101, 115, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34, 50, 48, 48, 34, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 99, 111, 110, 116, 101, 110, 116, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 97, 112, 112, 108, 105, 99, 97, 116, 105, 111, 110, 47, 106, 115, 111, 110, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 115, 99, 104, 101, 109, 97, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 36, 114, 101, 102, 58, 32, 34, 35, 47, 99, 111, 109, 112, 111, 110, 101, 110, 116, 115, 47, 115, 99, 104, 101, 109, 97, 115, 47, 83, 117, 99, 99, 101, 115, 115, 34, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 116, 101, 120, 116, 47, 112, 108, 97, 105, 110, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 115, 99, 104, 101, 109, 97, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 116, 121, 112, 101, 58, 32, 115, 116, 114, 105, 110, 103, 10, 32, 32, 47, 117, 115, 101, 114, 115, 47, 123, 117, 115, 101, 114, 73, 100, 125, 58, 10, 32, 32, 32, 32, 103, 101, 116, 58, 10, 32, 32, 32, 32, 32, 32, 111, 112, 101, 114, 97, 116, 105, 111, 110, 73, 100, 58, 32, 103, 101, 116, 85, 115, 101, 114, 10, 32, 32, 32, 32, 32, 32, 112, 97, 114, 97, 109, 101, 116, 101, 114, 115, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 45, 32, 105, 110, 58, 32, 112, 97, 116, 104, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 110, 97, 109, 101, 58, 32, 117, 115, 101, 114, 73, 100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 114, 101, 113, 117, 105, 114, 101, 100, 58, 32, 116, 114, 117, 101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 115, 99, 104, 101, 109, 97, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 102, 111, 114, 109, 97, 116, 58, 32, 105, 110, 116, 54, 52, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 116, 121, 112, 101, 58, 32, 105, 110, 116, 101, 103, 101, 114, 10, 32, 32, 32, 32, 32, 32, 32, 32, 45, 32, 100, 101, 115, 99, 114, 105, 112, 116, 105, 111, 110, 58, 32, 65, 103, 101, 32, 111, 102, 32, 117, 115, 101, 114, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 101, 120, 97, 109, 112, 108, 101, 58, 32, 34, 49, 50, 34, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 105, 110, 58, 32, 113, 117, 101, 114, 121, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 110, 97, 109, 101, 58, 32, 97, 103, 101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 115, 99, 104, 101, 109, 97, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 102, 111, 114, 109, 97, 116, 58, 32, 105, 110, 116, 54, 52, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 110, 117, 108, 108, 97, 98, 108, 101, 58, 32, 116, 114, 117, 101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 116, 121, 112, 101, 58, 32, 105, 110, 116, 101, 103, 101, 114, 10, 32, 32, 32, 32, 32, 32, 32, 32, 45, 32, 100, 101, 115, 99, 114, 105, 112, 116, 105, 111, 110, 58, 32, 69, 109, 97, 105, 108, 32, 111, 102, 32, 117, 115, 101, 114, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 101, 120, 97, 109, 112, 108, 101, 58, 32, 106, 111, 101, 64, 103, 109, 97, 105, 108, 46, 99, 111, 109, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 105, 110, 58, 32, 113, 117, 101, 114, 121, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 110, 97, 109, 101, 58, 32, 101, 109, 97, 105, 108, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 115, 99, 104, 101, 109, 97, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 116, 121, 112, 101, 58, 32, 115, 116, 114, 105, 110, 103, 10, 32, 32, 32, 32, 32, 32, 114, 101, 115, 112, 111, 110, 115, 101, 115, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34, 50, 48, 48, 34, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 99, 111, 110, 116, 101, 110, 116, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 97, 112, 112, 108, 105, 99, 97, 116, 105, 111, 110, 47, 106, 115, 111, 110, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 101, 120, 97, 109, 112, 108, 101, 58, 32, 34, 123, 105, 100, 58, 32, 51, 44, 32, 110, 97, 109, 101, 58, 32, 92, 34, 106, 111, 101, 92, 34, 44, 32, 97, 103, 101, 58, 32, 53, 125, 34, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 115, 99, 104, 101, 109, 97, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 36, 114, 101, 102, 58, 32, 34, 35, 47, 99, 111, 109, 112, 111, 110, 101, 110, 116, 115, 47, 115, 99, 104, 101, 109, 97, 115, 47, 85, 115, 101, 114, 34, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34, 52, 48, 51, 34, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 99, 111, 110, 116, 101, 110, 116, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 97, 112, 112, 108, 105, 99, 97, 116, 105, 111, 110, 47, 106, 115, 111, 110, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 115, 99, 104, 101, 109, 97, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 36, 114, 101, 102, 58, 32, 34, 35, 47, 99, 111, 109, 112, 111, 110, 101, 110, 116, 115, 47, 115, 99, 104, 101, 109, 97, 115, 47, 69, 114, 114, 111, 114, 34, 10, 115, 101, 99, 117, 114, 105, 116, 121, 58, 10, 32, 32, 45, 32, 79, 65, 117, 116, 104, 50, 58, 10, 32, 32, 32, 32, 32, 32, 45, 32, 114, 101, 97, 100, 95, 117, 115, 101, 114, 115, 10, 32, 32, 32, 32, 32, 32, 45, 32, 119, 114, 105, 116, 101, 95, 117, 115, 101, 114, 115, 10, 115, 101, 114, 118, 101, 114, 115, 58, 10, 32, 32, 45, 32, 100, 101, 115, 99, 114, 105, 112, 116, 105, 111, 110, 58, 32, 77, 121, 32, 65, 80, 73, 32, 85, 82, 76, 10, 32, 32, 32, 32, 117, 114, 108, 58, 32, 104, 116, 116, 112, 115, 58, 47, 47, 109, 121, 97, 112, 105, 46, 99, 111, 109, 10}}},
}
// convert []byte to a []byte{}
func byteForFmt(b []byte) string {
s := ""
for i, bc := range b {
s += fmt.Sprintf("%d", bc)
if i != len(b)-1 {
s += ","
}
}
return fmt.Sprintf("[]byte{%s}", s)
}
// expectOrGenerateAndFail will take a function f and verify its output in the expectedOutput map.
// If it does not exist in the expectedOutput map, it will generate an entry to expectedOutput (and fail the test case).
// If the output looks good, you can add it to expectedOutput so it can be checked in the future.
// This allows you to rapidly create test cases without having to manually write them yourself (as long as you verify
// the output in the failure case add it to the expectedOutputMap)
//
// It's easier to understand with an example:
//
// example:
//
// expectOrGenerateAndFail(t, "Make sure responses serialize properly", func(builder *openapi.Builder) {
// type User struct {
// Name string `json:"name", doc"name of user", example:"joe"`
// }
// builder.Response(http.StatusOk).Body(&User{})
// })
//
// If "Make sure responses serialize properly" exists in expectedOutput, it will verify the output matches and either succeed/fail
// If "Make sure responses serialize properly" DOES NOT exists, it will log out the below entry and fail
//
// "Make sure responses serialize properly": {"3.1.0": &ExpectedOutput{JSON: "...", YAML: "..."}, "3.0.3": &ExpectedOutput{YAML: ".."},
func expectOrGenerateAndFail(t *testing.T, name string, f func(builder *openapi.Builder)) {
builder := openapi.New("title", "version")
f(builder)
jsonOut, err := json.MarshalIndent(builder.OpenAPI(), "", " ")
if err != nil {
panic(err)
}
yamlOut, err := builder.OpenAPI().YAML()
if err != nil {
panic(err)
}
downgradedYAML, err := builder.OpenAPI().DowngradeYAML()
if err != nil {
panic(err)
}
// an entry exists, we will make sure the output matches the expectedOutcome
if _, ok := expectedOutput[name]; ok {
// verify 3.1.0 output
if _, ok := expectedOutput[name]["3.1.0"]; !ok {
t.Errorf(`expectedOutput has no entry [%v]["3.1.0"]`, name)
}
expectedJSONOut := expectedOutput[name]["3.1.0"].JSON
if !bytes.Equal(expectedJSONOut, jsonOut) {
t.Errorf("%v 3.1.0 json fail, expected: %v got:%v", name, string(expectedJSONOut), string(jsonOut))
}
expectedYamlOut := expectedOutput[name]["3.1.0"].YAML
if !bytes.Equal(yamlOut, expectedYamlOut) {
t.Errorf("%v 3.1.0 yaml fail, expected: %v got:%v", name, string(expectedYamlOut), string(yamlOut))
}
// verify 3.0.3 output
if _, ok := expectedOutput[name]["3.0.3"]; !ok {
t.Errorf(`expectedOutput has no entry [%v]["3.0.3"]`, name)
}
expectedDowngradedYamlOut := expectedOutput[name]["3.0.3"].YAML
if !bytes.Equal(expectedDowngradedYamlOut, downgradedYAML) {
t.Errorf("%v 3.0.3 yaml fail, expected: %v got:%v", name, string(expectedDowngradedYamlOut), string(downgradedYAML))
}
return
}
// an entry does not exist, let the user verify this output is correct and then they can add it to expectedOutput to retain it for future checks
expectedOutputEntry := fmt.Sprintf(`"%v": { "3.1.0": &ExpectedOutput{JSON: %v, YAML: %v }, "3.0.3": &ExpectedOutput{YAML: %v } },`, name, byteForFmt(jsonOut), byteForFmt(yamlOut), byteForFmt(downgradedYAML))
t.Logf("[%v] does not exist in the expected output \n\n3.1.0:\n\n JSON:\n\n%v\n\n YAML:\n\n%v\n\n3.0.3:\n\nYAML:\n\n%v\n\n", name, string(jsonOut), string(yamlOut), string(downgradedYAML))
t.Error(expectedOutputEntry)
}
func TestBuilder(t *testing.T) {
openAPI := openapi.New("Title", "Version 1")
// test new since that's not handled by Expect()
if openAPI.OpenAPI().Info.Title != "Title" || openAPI.OpenAPI().Info.Version != "Version 1" {
t.Errorf("invalid info object, %v", openAPI.OpenAPI().Info)
}
openAPI.Description("describes the API")
if openAPI.OpenAPI().Info.Description != "describes the API" {
t.Errorf("invalid info object, %v", openAPI.OpenAPI().Info)
}
expectOrGenerateAndFail(t, "Test Basic Functions", func(openAPI *openapi.Builder) {
type Error struct {
Message string `json:"message"`
}
type Success struct {
Message string `json:"message"`
}
openAPI.Description("My API is a great API")
openAPI.Server().URL("https://myapi.com").Description("My API URL")
// define security
openAPI.BearerAuth()
// define security
openAPI.OAuth2().Implicit().AuthorizationURL("https://api.example.com/oauth2/authorize").Scopes(map[string]string{
"read_users": "read users",
"write_users": "write to users",
})
// apply security (globally)
openAPI.Security("OAuth2", []string{"read_users", "write_users"})
// registering a URL (operation)
type LoginRequest struct {
Username string `json:"username" doc:"username to login with" maxLength:"25"`
Password string `json:"password" doc:"password to login with" maxLength:"50"`
}
login := openAPI.Register(&openapi.Operation{
OperationID: "loginUser",
Method: "POST",
Path: "/login",
})
login.Request().Body(LoginRequest{})
login.Response(http.StatusOK).ContentType("text/plain").Body(openapi.StringType)
login.Response(http.StatusOK).Body(Success{})
// registering a URL (operation)
type User struct {
ID string `json:"id" doc:"ID of user" example:"2"`
Name string `json:"name" doc:"Name of user" example:"joe"`
Age int `json:"age" doc:"Age of user" example:"32"`
}
getUser := openAPI.Register(&openapi.Operation{
OperationID: "getUser",
Method: "GET",
Path: "/users/{userId}",
})
getUser.Request().PathParam("userId", openapi.IntType).Required(true)
getUser.Request().QueryParam("age", &openapi.IntType).Example("12").Description("Age of user") // pointers make the query param optional
getUser.Request().QueryParam("email", openapi.StringType).Example("joe@gmail.com").Description("Email of user")
getUser.Response(http.StatusOK).Body(User{}).Example(`{id: 3, name: "joe", age: 5}`) // override example from User struct
getUser.Response(http.StatusForbidden).Body(Error{}) // default content type is application/json
})
}