tedious 16.1.0 → 16.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/all-headers.js +1 -2
- package/lib/all-headers.js.map +1 -0
- package/lib/always-encrypted/aead-aes-256-cbc-hmac-algorithm.js +9 -31
- package/lib/always-encrypted/aead-aes-256-cbc-hmac-algorithm.js.map +1 -0
- package/lib/always-encrypted/aead-aes-256-cbc-hmac-encryption-key.js +9 -24
- package/lib/always-encrypted/aead-aes-256-cbc-hmac-encryption-key.js.map +1 -0
- package/lib/always-encrypted/cek-entry.js +8 -12
- package/lib/always-encrypted/cek-entry.js.map +1 -0
- package/lib/always-encrypted/get-parameter-encryption-metadata.js +2 -24
- package/lib/always-encrypted/get-parameter-encryption-metadata.js.map +1 -0
- package/lib/always-encrypted/key-crypto.js +5 -30
- package/lib/always-encrypted/key-crypto.js.map +1 -0
- package/lib/always-encrypted/keystore-provider-azure-key-vault.js +11 -72
- package/lib/always-encrypted/keystore-provider-azure-key-vault.js.map +1 -0
- package/lib/always-encrypted/symmetric-key-cache.js +2 -13
- package/lib/always-encrypted/symmetric-key-cache.js.map +1 -0
- package/lib/always-encrypted/symmetric-key.js +3 -8
- package/lib/always-encrypted/symmetric-key.js.map +1 -0
- package/lib/always-encrypted/types.js +19 -27
- package/lib/always-encrypted/types.js.map +1 -0
- package/lib/always-encrypted/utils.js +2 -6
- package/lib/always-encrypted/utils.js.map +1 -0
- package/lib/bulk-load-payload.js +7 -15
- package/lib/bulk-load-payload.js.map +1 -0
- package/lib/bulk-load.js +58 -131
- package/lib/bulk-load.js.map +1 -0
- package/lib/collation.js +7 -15
- package/lib/collation.js.map +1 -0
- package/lib/connection.js +297 -536
- package/lib/connection.js.map +1 -0
- package/lib/connector.js +6 -37
- package/lib/connector.js.map +1 -0
- package/lib/data-type.js +2 -43
- package/lib/data-type.js.map +1 -0
- package/lib/data-types/bigint.js +1 -15
- package/lib/data-types/bigint.js.map +1 -0
- package/lib/data-types/binary.js +1 -12
- package/lib/data-types/binary.js.map +1 -0
- package/lib/data-types/bit.js +1 -11
- package/lib/data-types/bit.js.map +1 -0
- package/lib/data-types/bitn.js +1 -7
- package/lib/data-types/bitn.js.map +1 -0
- package/lib/data-types/char.js +1 -20
- package/lib/data-types/char.js.map +1 -0
- package/lib/data-types/date.js +1 -15
- package/lib/data-types/date.js.map +1 -0
- package/lib/data-types/datetime.js +3 -20
- package/lib/data-types/datetime.js.map +1 -0
- package/lib/data-types/datetime2.js +1 -26
- package/lib/data-types/datetime2.js.map +1 -0
- package/lib/data-types/datetimen.js +1 -7
- package/lib/data-types/datetimen.js.map +1 -0
- package/lib/data-types/datetimeoffset.js +1 -23
- package/lib/data-types/datetimeoffset.js.map +1 -0
- package/lib/data-types/decimal.js +1 -18
- package/lib/data-types/decimal.js.map +1 -0
- package/lib/data-types/decimaln.js +1 -7
- package/lib/data-types/decimaln.js.map +1 -0
- package/lib/data-types/float.js +1 -13
- package/lib/data-types/float.js.map +1 -0
- package/lib/data-types/floatn.js +1 -7
- package/lib/data-types/floatn.js.map +1 -0
- package/lib/data-types/image.js +1 -10
- package/lib/data-types/image.js.map +1 -0
- package/lib/data-types/int.js +1 -14
- package/lib/data-types/int.js.map +1 -0
- package/lib/data-types/intn.js +1 -7
- package/lib/data-types/intn.js.map +1 -0
- package/lib/data-types/money.js +1 -12
- package/lib/data-types/money.js.map +1 -0
- package/lib/data-types/moneyn.js +1 -7
- package/lib/data-types/moneyn.js.map +1 -0
- package/lib/data-types/nchar.js +1 -14
- package/lib/data-types/nchar.js.map +1 -0
- package/lib/data-types/ntext.js +1 -10
- package/lib/data-types/ntext.js.map +1 -0
- package/lib/data-types/null.js +1 -7
- package/lib/data-types/null.js.map +1 -0
- package/lib/data-types/numeric.js +1 -18
- package/lib/data-types/numeric.js.map +1 -0
- package/lib/data-types/numericn.js +1 -7
- package/lib/data-types/numericn.js.map +1 -0
- package/lib/data-types/nvarchar.js +1 -22
- package/lib/data-types/nvarchar.js.map +1 -0
- package/lib/data-types/real.js +1 -13
- package/lib/data-types/real.js.map +1 -0
- package/lib/data-types/smalldatetime.js +1 -14
- package/lib/data-types/smalldatetime.js.map +1 -0
- package/lib/data-types/smallint.js +1 -14
- package/lib/data-types/smallint.js.map +1 -0
- package/lib/data-types/smallmoney.js +1 -13
- package/lib/data-types/smallmoney.js.map +1 -0
- package/lib/data-types/sql-variant.js +1 -6
- package/lib/data-types/sql-variant.js.map +1 -0
- package/lib/data-types/text.js +1 -18
- package/lib/data-types/text.js.map +1 -0
- package/lib/data-types/time.js +1 -22
- package/lib/data-types/time.js.map +1 -0
- package/lib/data-types/tinyint.js +1 -14
- package/lib/data-types/tinyint.js.map +1 -0
- package/lib/data-types/tvp.js +11 -27
- package/lib/data-types/tvp.js.map +1 -0
- package/lib/data-types/udt.js +1 -7
- package/lib/data-types/udt.js.map +1 -0
- package/lib/data-types/uniqueidentifier.js +1 -11
- package/lib/data-types/uniqueidentifier.js.map +1 -0
- package/lib/data-types/varbinary.js +1 -22
- package/lib/data-types/varbinary.js.map +1 -0
- package/lib/data-types/varchar.js +1 -23
- package/lib/data-types/varchar.js.map +1 -0
- package/lib/data-types/xml.js +1 -7
- package/lib/data-types/xml.js.map +1 -0
- package/lib/debug.js +4 -16
- package/lib/debug.js.map +1 -0
- package/lib/errors/abort-error.js +2 -5
- package/lib/errors/abort-error.js.map +1 -0
- package/lib/errors/timeout-error.js +2 -5
- package/lib/errors/timeout-error.js.map +1 -0
- package/lib/errors.js +10 -16
- package/lib/errors.js.map +1 -0
- package/lib/guid-parser.js +1 -7
- package/lib/guid-parser.js.map +1 -0
- package/lib/incoming-message-stream.js +9 -29
- package/lib/incoming-message-stream.js.map +1 -0
- package/lib/instance-lookup.js +3 -34
- package/lib/instance-lookup.js.map +1 -0
- package/lib/library.js +1 -1
- package/lib/library.js.map +1 -0
- package/lib/login7-payload.js +99 -100
- package/lib/login7-payload.js.map +1 -0
- package/lib/message-io.js +17 -45
- package/lib/message-io.js.map +1 -0
- package/lib/message.js +4 -8
- package/lib/message.js.map +1 -0
- package/lib/metadata-parser.js +1 -22
- package/lib/metadata-parser.js.map +1 -0
- package/lib/ntlm-payload.js +2 -22
- package/lib/ntlm-payload.js.map +1 -0
- package/lib/ntlm.js +1 -4
- package/lib/ntlm.js.map +1 -0
- package/lib/outgoing-message-stream.js +12 -21
- package/lib/outgoing-message-stream.js.map +1 -0
- package/lib/packet.js +2 -47
- package/lib/packet.js.map +1 -0
- package/lib/prelogin-payload.js +11 -54
- package/lib/prelogin-payload.js.map +1 -0
- package/lib/request.js +88 -66
- package/lib/request.js.map +1 -0
- package/lib/rpcrequest-payload.js +13 -34
- package/lib/rpcrequest-payload.js.map +1 -0
- package/lib/sender.js +1 -24
- package/lib/sender.js.map +1 -0
- package/lib/special-stored-procedure.js +1 -1
- package/lib/special-stored-procedure.js.map +1 -0
- package/lib/sqlbatch-payload.js +5 -18
- package/lib/sqlbatch-payload.js.map +1 -0
- package/lib/tds-versions.js +3 -3
- package/lib/tds-versions.js.map +1 -0
- package/lib/tedious.js +1 -12
- package/lib/tedious.js.map +1 -0
- package/lib/token/colmetadata-token-parser.js +1 -17
- package/lib/token/colmetadata-token-parser.js.map +1 -0
- package/lib/token/done-token-parser.js +2 -8
- package/lib/token/done-token-parser.js.map +1 -0
- package/lib/token/env-change-token-parser.js +7 -28
- package/lib/token/env-change-token-parser.js.map +1 -0
- package/lib/token/feature-ext-ack-parser.js +1 -10
- package/lib/token/feature-ext-ack-parser.js.map +1 -0
- package/lib/token/fedauth-info-parser.js +2 -10
- package/lib/token/fedauth-info-parser.js.map +1 -0
- package/lib/token/handler.js +39 -149
- package/lib/token/handler.js.map +1 -0
- package/lib/token/infoerror-token-parser.js +1 -5
- package/lib/token/infoerror-token-parser.js.map +1 -0
- package/lib/token/loginack-token-parser.js +1 -6
- package/lib/token/loginack-token-parser.js.map +1 -0
- package/lib/token/nbcrow-token-parser.js +2 -15
- package/lib/token/nbcrow-token-parser.js.map +1 -0
- package/lib/token/order-token-parser.js +2 -7
- package/lib/token/order-token-parser.js.map +1 -0
- package/lib/token/returnstatus-token-parser.js +2 -4
- package/lib/token/returnstatus-token-parser.js.map +1 -0
- package/lib/token/returnvalue-token-parser.js +4 -9
- package/lib/token/returnvalue-token-parser.js.map +1 -0
- package/lib/token/row-token-parser.js +2 -11
- package/lib/token/row-token-parser.js.map +1 -0
- package/lib/token/sspi-token-parser.js +1 -5
- package/lib/token/sspi-token-parser.js.map +1 -0
- package/lib/token/stream-parser.js +24 -86
- package/lib/token/stream-parser.js.map +1 -0
- package/lib/token/token-stream-parser.js +4 -13
- package/lib/token/token-stream-parser.js.map +1 -0
- package/lib/token/token.js +88 -168
- package/lib/token/token.js.map +1 -0
- package/lib/tracking-buffer/writable-tracking-buffer.js +20 -60
- package/lib/tracking-buffer/writable-tracking-buffer.js.map +1 -0
- package/lib/transaction.js +9 -33
- package/lib/transaction.js.map +1 -0
- package/lib/transient-error-lookup.js +1 -4
- package/lib/transient-error-lookup.js.map +1 -0
- package/lib/utils/with-timeout.js +1 -9
- package/lib/utils/with-timeout.js.map +1 -0
- package/lib/value-parser.js +1 -143
- package/lib/value-parser.js.map +1 -0
- package/package.json +27 -71
package/lib/token/token.js
CHANGED
|
@@ -28,31 +28,30 @@ const TYPE = {
|
|
|
28
28
|
TABNAME: 0xA4
|
|
29
29
|
};
|
|
30
30
|
exports.TYPE = TYPE;
|
|
31
|
-
|
|
32
31
|
class Token {
|
|
32
|
+
name;
|
|
33
|
+
handlerName;
|
|
33
34
|
constructor(name, handlerName) {
|
|
34
|
-
this.name = void 0;
|
|
35
|
-
this.handlerName = void 0;
|
|
36
35
|
this.name = name;
|
|
37
36
|
this.handlerName = handlerName;
|
|
38
37
|
}
|
|
39
|
-
|
|
40
38
|
}
|
|
41
|
-
|
|
42
39
|
exports.Token = Token;
|
|
43
|
-
|
|
44
40
|
class ColMetadataToken extends Token {
|
|
41
|
+
columns;
|
|
45
42
|
constructor(columns) {
|
|
46
43
|
super('COLMETADATA', 'onColMetadata');
|
|
47
|
-
this.columns = void 0;
|
|
48
44
|
this.columns = columns;
|
|
49
45
|
}
|
|
50
|
-
|
|
51
46
|
}
|
|
52
|
-
|
|
53
47
|
exports.ColMetadataToken = ColMetadataToken;
|
|
54
|
-
|
|
55
48
|
class DoneToken extends Token {
|
|
49
|
+
more;
|
|
50
|
+
sqlError;
|
|
51
|
+
attention;
|
|
52
|
+
serverError;
|
|
53
|
+
rowCount;
|
|
54
|
+
curCmd;
|
|
56
55
|
constructor({
|
|
57
56
|
more,
|
|
58
57
|
sqlError,
|
|
@@ -62,12 +61,6 @@ class DoneToken extends Token {
|
|
|
62
61
|
curCmd
|
|
63
62
|
}) {
|
|
64
63
|
super('DONE', 'onDone');
|
|
65
|
-
this.more = void 0;
|
|
66
|
-
this.sqlError = void 0;
|
|
67
|
-
this.attention = void 0;
|
|
68
|
-
this.serverError = void 0;
|
|
69
|
-
this.rowCount = void 0;
|
|
70
|
-
this.curCmd = void 0;
|
|
71
64
|
this.more = more;
|
|
72
65
|
this.sqlError = sqlError;
|
|
73
66
|
this.attention = attention;
|
|
@@ -75,12 +68,15 @@ class DoneToken extends Token {
|
|
|
75
68
|
this.rowCount = rowCount;
|
|
76
69
|
this.curCmd = curCmd;
|
|
77
70
|
}
|
|
78
|
-
|
|
79
71
|
}
|
|
80
|
-
|
|
81
72
|
exports.DoneToken = DoneToken;
|
|
82
|
-
|
|
83
73
|
class DoneInProcToken extends Token {
|
|
74
|
+
more;
|
|
75
|
+
sqlError;
|
|
76
|
+
attention;
|
|
77
|
+
serverError;
|
|
78
|
+
rowCount;
|
|
79
|
+
curCmd;
|
|
84
80
|
constructor({
|
|
85
81
|
more,
|
|
86
82
|
sqlError,
|
|
@@ -90,12 +86,6 @@ class DoneInProcToken extends Token {
|
|
|
90
86
|
curCmd
|
|
91
87
|
}) {
|
|
92
88
|
super('DONEINPROC', 'onDoneInProc');
|
|
93
|
-
this.more = void 0;
|
|
94
|
-
this.sqlError = void 0;
|
|
95
|
-
this.attention = void 0;
|
|
96
|
-
this.serverError = void 0;
|
|
97
|
-
this.rowCount = void 0;
|
|
98
|
-
this.curCmd = void 0;
|
|
99
89
|
this.more = more;
|
|
100
90
|
this.sqlError = sqlError;
|
|
101
91
|
this.attention = attention;
|
|
@@ -103,12 +93,15 @@ class DoneInProcToken extends Token {
|
|
|
103
93
|
this.rowCount = rowCount;
|
|
104
94
|
this.curCmd = curCmd;
|
|
105
95
|
}
|
|
106
|
-
|
|
107
96
|
}
|
|
108
|
-
|
|
109
97
|
exports.DoneInProcToken = DoneInProcToken;
|
|
110
|
-
|
|
111
98
|
class DoneProcToken extends Token {
|
|
99
|
+
more;
|
|
100
|
+
sqlError;
|
|
101
|
+
attention;
|
|
102
|
+
serverError;
|
|
103
|
+
rowCount;
|
|
104
|
+
curCmd;
|
|
112
105
|
constructor({
|
|
113
106
|
more,
|
|
114
107
|
sqlError,
|
|
@@ -118,12 +111,6 @@ class DoneProcToken extends Token {
|
|
|
118
111
|
curCmd
|
|
119
112
|
}) {
|
|
120
113
|
super('DONEPROC', 'onDoneProc');
|
|
121
|
-
this.more = void 0;
|
|
122
|
-
this.sqlError = void 0;
|
|
123
|
-
this.attention = void 0;
|
|
124
|
-
this.serverError = void 0;
|
|
125
|
-
this.rowCount = void 0;
|
|
126
|
-
this.curCmd = void 0;
|
|
127
114
|
this.more = more;
|
|
128
115
|
this.sqlError = sqlError;
|
|
129
116
|
this.attention = attention;
|
|
@@ -131,206 +118,172 @@ class DoneProcToken extends Token {
|
|
|
131
118
|
this.rowCount = rowCount;
|
|
132
119
|
this.curCmd = curCmd;
|
|
133
120
|
}
|
|
134
|
-
|
|
135
121
|
}
|
|
136
|
-
|
|
137
122
|
exports.DoneProcToken = DoneProcToken;
|
|
138
|
-
|
|
139
123
|
class DatabaseEnvChangeToken extends Token {
|
|
124
|
+
type;
|
|
125
|
+
newValue;
|
|
126
|
+
oldValue;
|
|
140
127
|
constructor(newValue, oldValue) {
|
|
141
128
|
super('ENVCHANGE', 'onDatabaseChange');
|
|
142
|
-
this.type = void 0;
|
|
143
|
-
this.newValue = void 0;
|
|
144
|
-
this.oldValue = void 0;
|
|
145
129
|
this.type = 'DATABASE';
|
|
146
130
|
this.newValue = newValue;
|
|
147
131
|
this.oldValue = oldValue;
|
|
148
132
|
}
|
|
149
|
-
|
|
150
133
|
}
|
|
151
|
-
|
|
152
134
|
exports.DatabaseEnvChangeToken = DatabaseEnvChangeToken;
|
|
153
|
-
|
|
154
135
|
class LanguageEnvChangeToken extends Token {
|
|
136
|
+
type;
|
|
137
|
+
newValue;
|
|
138
|
+
oldValue;
|
|
155
139
|
constructor(newValue, oldValue) {
|
|
156
140
|
super('ENVCHANGE', 'onLanguageChange');
|
|
157
|
-
this.type = void 0;
|
|
158
|
-
this.newValue = void 0;
|
|
159
|
-
this.oldValue = void 0;
|
|
160
141
|
this.type = 'LANGUAGE';
|
|
161
142
|
this.newValue = newValue;
|
|
162
143
|
this.oldValue = oldValue;
|
|
163
144
|
}
|
|
164
|
-
|
|
165
145
|
}
|
|
166
|
-
|
|
167
146
|
exports.LanguageEnvChangeToken = LanguageEnvChangeToken;
|
|
168
|
-
|
|
169
147
|
class CharsetEnvChangeToken extends Token {
|
|
148
|
+
type;
|
|
149
|
+
newValue;
|
|
150
|
+
oldValue;
|
|
170
151
|
constructor(newValue, oldValue) {
|
|
171
152
|
super('ENVCHANGE', 'onCharsetChange');
|
|
172
|
-
this.type = void 0;
|
|
173
|
-
this.newValue = void 0;
|
|
174
|
-
this.oldValue = void 0;
|
|
175
153
|
this.type = 'CHARSET';
|
|
176
154
|
this.newValue = newValue;
|
|
177
155
|
this.oldValue = oldValue;
|
|
178
156
|
}
|
|
179
|
-
|
|
180
157
|
}
|
|
181
|
-
|
|
182
158
|
exports.CharsetEnvChangeToken = CharsetEnvChangeToken;
|
|
183
|
-
|
|
184
159
|
class PacketSizeEnvChangeToken extends Token {
|
|
160
|
+
type;
|
|
161
|
+
newValue;
|
|
162
|
+
oldValue;
|
|
185
163
|
constructor(newValue, oldValue) {
|
|
186
164
|
super('ENVCHANGE', 'onPacketSizeChange');
|
|
187
|
-
this.type = void 0;
|
|
188
|
-
this.newValue = void 0;
|
|
189
|
-
this.oldValue = void 0;
|
|
190
165
|
this.type = 'PACKET_SIZE';
|
|
191
166
|
this.newValue = newValue;
|
|
192
167
|
this.oldValue = oldValue;
|
|
193
168
|
}
|
|
194
|
-
|
|
195
169
|
}
|
|
196
|
-
|
|
197
170
|
exports.PacketSizeEnvChangeToken = PacketSizeEnvChangeToken;
|
|
198
|
-
|
|
199
171
|
class BeginTransactionEnvChangeToken extends Token {
|
|
172
|
+
type;
|
|
173
|
+
newValue;
|
|
174
|
+
oldValue;
|
|
200
175
|
constructor(newValue, oldValue) {
|
|
201
176
|
super('ENVCHANGE', 'onBeginTransaction');
|
|
202
|
-
this.type = void 0;
|
|
203
|
-
this.newValue = void 0;
|
|
204
|
-
this.oldValue = void 0;
|
|
205
177
|
this.type = 'BEGIN_TXN';
|
|
206
178
|
this.newValue = newValue;
|
|
207
179
|
this.oldValue = oldValue;
|
|
208
180
|
}
|
|
209
|
-
|
|
210
181
|
}
|
|
211
|
-
|
|
212
182
|
exports.BeginTransactionEnvChangeToken = BeginTransactionEnvChangeToken;
|
|
213
|
-
|
|
214
183
|
class CommitTransactionEnvChangeToken extends Token {
|
|
184
|
+
type;
|
|
185
|
+
newValue;
|
|
186
|
+
oldValue;
|
|
215
187
|
constructor(newValue, oldValue) {
|
|
216
188
|
super('ENVCHANGE', 'onCommitTransaction');
|
|
217
|
-
this.type = void 0;
|
|
218
|
-
this.newValue = void 0;
|
|
219
|
-
this.oldValue = void 0;
|
|
220
189
|
this.type = 'COMMIT_TXN';
|
|
221
190
|
this.newValue = newValue;
|
|
222
191
|
this.oldValue = oldValue;
|
|
223
192
|
}
|
|
224
|
-
|
|
225
193
|
}
|
|
226
|
-
|
|
227
194
|
exports.CommitTransactionEnvChangeToken = CommitTransactionEnvChangeToken;
|
|
228
|
-
|
|
229
195
|
class RollbackTransactionEnvChangeToken extends Token {
|
|
196
|
+
type;
|
|
197
|
+
oldValue;
|
|
198
|
+
newValue;
|
|
230
199
|
constructor(newValue, oldValue) {
|
|
231
200
|
super('ENVCHANGE', 'onRollbackTransaction');
|
|
232
|
-
this.type = void 0;
|
|
233
|
-
this.oldValue = void 0;
|
|
234
|
-
this.newValue = void 0;
|
|
235
201
|
this.type = 'ROLLBACK_TXN';
|
|
236
202
|
this.newValue = newValue;
|
|
237
203
|
this.oldValue = oldValue;
|
|
238
204
|
}
|
|
239
|
-
|
|
240
205
|
}
|
|
241
|
-
|
|
242
206
|
exports.RollbackTransactionEnvChangeToken = RollbackTransactionEnvChangeToken;
|
|
243
|
-
|
|
244
207
|
class DatabaseMirroringPartnerEnvChangeToken extends Token {
|
|
208
|
+
type;
|
|
209
|
+
oldValue;
|
|
210
|
+
newValue;
|
|
245
211
|
constructor(newValue, oldValue) {
|
|
246
212
|
super('ENVCHANGE', 'onDatabaseMirroringPartner');
|
|
247
|
-
this.type = void 0;
|
|
248
|
-
this.oldValue = void 0;
|
|
249
|
-
this.newValue = void 0;
|
|
250
213
|
this.type = 'DATABASE_MIRRORING_PARTNER';
|
|
251
214
|
this.newValue = newValue;
|
|
252
215
|
this.oldValue = oldValue;
|
|
253
216
|
}
|
|
254
|
-
|
|
255
217
|
}
|
|
256
|
-
|
|
257
218
|
exports.DatabaseMirroringPartnerEnvChangeToken = DatabaseMirroringPartnerEnvChangeToken;
|
|
258
|
-
|
|
259
219
|
class ResetConnectionEnvChangeToken extends Token {
|
|
220
|
+
type;
|
|
221
|
+
oldValue;
|
|
222
|
+
newValue;
|
|
260
223
|
constructor(newValue, oldValue) {
|
|
261
224
|
super('ENVCHANGE', 'onResetConnection');
|
|
262
|
-
this.type = void 0;
|
|
263
|
-
this.oldValue = void 0;
|
|
264
|
-
this.newValue = void 0;
|
|
265
225
|
this.type = 'RESET_CONNECTION';
|
|
266
226
|
this.newValue = newValue;
|
|
267
227
|
this.oldValue = oldValue;
|
|
268
228
|
}
|
|
269
|
-
|
|
270
229
|
}
|
|
271
|
-
|
|
272
230
|
exports.ResetConnectionEnvChangeToken = ResetConnectionEnvChangeToken;
|
|
273
|
-
|
|
274
231
|
class CollationChangeToken extends Token {
|
|
232
|
+
type;
|
|
233
|
+
oldValue;
|
|
234
|
+
newValue;
|
|
275
235
|
constructor(newValue, oldValue) {
|
|
276
236
|
super('ENVCHANGE', 'onSqlCollationChange');
|
|
277
|
-
this.type = void 0;
|
|
278
|
-
this.oldValue = void 0;
|
|
279
|
-
this.newValue = void 0;
|
|
280
237
|
this.type = 'SQL_COLLATION';
|
|
281
238
|
this.newValue = newValue;
|
|
282
239
|
this.oldValue = oldValue;
|
|
283
240
|
}
|
|
284
|
-
|
|
285
241
|
}
|
|
286
|
-
|
|
287
242
|
exports.CollationChangeToken = CollationChangeToken;
|
|
288
|
-
|
|
289
243
|
class RoutingEnvChangeToken extends Token {
|
|
244
|
+
type;
|
|
245
|
+
newValue;
|
|
246
|
+
oldValue;
|
|
290
247
|
constructor(newValue, oldValue) {
|
|
291
248
|
super('ENVCHANGE', 'onRoutingChange');
|
|
292
|
-
this.type = void 0;
|
|
293
|
-
this.newValue = void 0;
|
|
294
|
-
this.oldValue = void 0;
|
|
295
249
|
this.type = 'ROUTING_CHANGE';
|
|
296
250
|
this.newValue = newValue;
|
|
297
251
|
this.oldValue = oldValue;
|
|
298
252
|
}
|
|
299
|
-
|
|
300
253
|
}
|
|
301
|
-
|
|
302
254
|
exports.RoutingEnvChangeToken = RoutingEnvChangeToken;
|
|
303
|
-
|
|
304
255
|
class FeatureExtAckToken extends Token {
|
|
256
|
+
fedAuth;
|
|
257
|
+
|
|
305
258
|
/** Value of UTF8_SUPPORT acknowledgement.
|
|
306
259
|
*
|
|
307
260
|
* undefined when UTF8_SUPPORT not included in token. */
|
|
261
|
+
utf8Support;
|
|
308
262
|
constructor(fedAuth, utf8Support) {
|
|
309
263
|
super('FEATUREEXTACK', 'onFeatureExtAck');
|
|
310
|
-
this.fedAuth = void 0;
|
|
311
|
-
this.utf8Support = void 0;
|
|
312
264
|
this.fedAuth = fedAuth;
|
|
313
265
|
this.utf8Support = utf8Support;
|
|
314
266
|
}
|
|
315
|
-
|
|
316
267
|
}
|
|
317
|
-
|
|
318
268
|
exports.FeatureExtAckToken = FeatureExtAckToken;
|
|
319
|
-
|
|
320
269
|
class FedAuthInfoToken extends Token {
|
|
270
|
+
spn;
|
|
271
|
+
stsurl;
|
|
321
272
|
constructor(spn, stsurl) {
|
|
322
273
|
super('FEDAUTHINFO', 'onFedAuthInfo');
|
|
323
|
-
this.spn = void 0;
|
|
324
|
-
this.stsurl = void 0;
|
|
325
274
|
this.spn = spn;
|
|
326
275
|
this.stsurl = stsurl;
|
|
327
276
|
}
|
|
328
|
-
|
|
329
277
|
}
|
|
330
|
-
|
|
331
278
|
exports.FedAuthInfoToken = FedAuthInfoToken;
|
|
332
|
-
|
|
333
279
|
class InfoMessageToken extends Token {
|
|
280
|
+
number;
|
|
281
|
+
state;
|
|
282
|
+
class;
|
|
283
|
+
message;
|
|
284
|
+
serverName;
|
|
285
|
+
procName;
|
|
286
|
+
lineNumber;
|
|
334
287
|
constructor({
|
|
335
288
|
number,
|
|
336
289
|
state,
|
|
@@ -341,13 +294,6 @@ class InfoMessageToken extends Token {
|
|
|
341
294
|
lineNumber
|
|
342
295
|
}) {
|
|
343
296
|
super('INFO', 'onInfoMessage');
|
|
344
|
-
this.number = void 0;
|
|
345
|
-
this.state = void 0;
|
|
346
|
-
this.class = void 0;
|
|
347
|
-
this.message = void 0;
|
|
348
|
-
this.serverName = void 0;
|
|
349
|
-
this.procName = void 0;
|
|
350
|
-
this.lineNumber = void 0;
|
|
351
297
|
this.number = number;
|
|
352
298
|
this.state = state;
|
|
353
299
|
this.class = clazz;
|
|
@@ -356,12 +302,16 @@ class InfoMessageToken extends Token {
|
|
|
356
302
|
this.procName = procName;
|
|
357
303
|
this.lineNumber = lineNumber;
|
|
358
304
|
}
|
|
359
|
-
|
|
360
305
|
}
|
|
361
|
-
|
|
362
306
|
exports.InfoMessageToken = InfoMessageToken;
|
|
363
|
-
|
|
364
307
|
class ErrorMessageToken extends Token {
|
|
308
|
+
number;
|
|
309
|
+
state;
|
|
310
|
+
class;
|
|
311
|
+
message;
|
|
312
|
+
serverName;
|
|
313
|
+
procName;
|
|
314
|
+
lineNumber;
|
|
365
315
|
constructor({
|
|
366
316
|
number,
|
|
367
317
|
state,
|
|
@@ -372,13 +322,6 @@ class ErrorMessageToken extends Token {
|
|
|
372
322
|
lineNumber
|
|
373
323
|
}) {
|
|
374
324
|
super('ERROR', 'onErrorMessage');
|
|
375
|
-
this.number = void 0;
|
|
376
|
-
this.state = void 0;
|
|
377
|
-
this.class = void 0;
|
|
378
|
-
this.message = void 0;
|
|
379
|
-
this.serverName = void 0;
|
|
380
|
-
this.procName = void 0;
|
|
381
|
-
this.lineNumber = void 0;
|
|
382
325
|
this.number = number;
|
|
383
326
|
this.state = state;
|
|
384
327
|
this.class = clazz;
|
|
@@ -387,12 +330,13 @@ class ErrorMessageToken extends Token {
|
|
|
387
330
|
this.procName = procName;
|
|
388
331
|
this.lineNumber = lineNumber;
|
|
389
332
|
}
|
|
390
|
-
|
|
391
333
|
}
|
|
392
|
-
|
|
393
334
|
exports.ErrorMessageToken = ErrorMessageToken;
|
|
394
|
-
|
|
395
335
|
class LoginAckToken extends Token {
|
|
336
|
+
interface;
|
|
337
|
+
tdsVersion;
|
|
338
|
+
progName;
|
|
339
|
+
progVersion;
|
|
396
340
|
constructor({
|
|
397
341
|
interface: interfaze,
|
|
398
342
|
tdsVersion,
|
|
@@ -400,54 +344,42 @@ class LoginAckToken extends Token {
|
|
|
400
344
|
progVersion
|
|
401
345
|
}) {
|
|
402
346
|
super('LOGINACK', 'onLoginAck');
|
|
403
|
-
this.interface = void 0;
|
|
404
|
-
this.tdsVersion = void 0;
|
|
405
|
-
this.progName = void 0;
|
|
406
|
-
this.progVersion = void 0;
|
|
407
347
|
this.interface = interfaze;
|
|
408
348
|
this.tdsVersion = tdsVersion;
|
|
409
349
|
this.progName = progName;
|
|
410
350
|
this.progVersion = progVersion;
|
|
411
351
|
}
|
|
412
|
-
|
|
413
352
|
}
|
|
414
|
-
|
|
415
353
|
exports.LoginAckToken = LoginAckToken;
|
|
416
|
-
|
|
417
354
|
class NBCRowToken extends Token {
|
|
355
|
+
columns;
|
|
418
356
|
constructor(columns) {
|
|
419
357
|
super('NBCROW', 'onRow');
|
|
420
|
-
this.columns = void 0;
|
|
421
358
|
this.columns = columns;
|
|
422
359
|
}
|
|
423
|
-
|
|
424
360
|
}
|
|
425
|
-
|
|
426
361
|
exports.NBCRowToken = NBCRowToken;
|
|
427
|
-
|
|
428
362
|
class OrderToken extends Token {
|
|
363
|
+
orderColumns;
|
|
429
364
|
constructor(orderColumns) {
|
|
430
365
|
super('ORDER', 'onOrder');
|
|
431
|
-
this.orderColumns = void 0;
|
|
432
366
|
this.orderColumns = orderColumns;
|
|
433
367
|
}
|
|
434
|
-
|
|
435
368
|
}
|
|
436
|
-
|
|
437
369
|
exports.OrderToken = OrderToken;
|
|
438
|
-
|
|
439
370
|
class ReturnStatusToken extends Token {
|
|
371
|
+
value;
|
|
440
372
|
constructor(value) {
|
|
441
373
|
super('RETURNSTATUS', 'onReturnStatus');
|
|
442
|
-
this.value = void 0;
|
|
443
374
|
this.value = value;
|
|
444
375
|
}
|
|
445
|
-
|
|
446
376
|
}
|
|
447
|
-
|
|
448
377
|
exports.ReturnStatusToken = ReturnStatusToken;
|
|
449
|
-
|
|
450
378
|
class ReturnValueToken extends Token {
|
|
379
|
+
paramOrdinal;
|
|
380
|
+
paramName;
|
|
381
|
+
metadata;
|
|
382
|
+
value;
|
|
451
383
|
constructor({
|
|
452
384
|
paramOrdinal,
|
|
453
385
|
paramName,
|
|
@@ -455,41 +387,29 @@ class ReturnValueToken extends Token {
|
|
|
455
387
|
value
|
|
456
388
|
}) {
|
|
457
389
|
super('RETURNVALUE', 'onReturnValue');
|
|
458
|
-
this.paramOrdinal = void 0;
|
|
459
|
-
this.paramName = void 0;
|
|
460
|
-
this.metadata = void 0;
|
|
461
|
-
this.value = void 0;
|
|
462
390
|
this.paramOrdinal = paramOrdinal;
|
|
463
391
|
this.paramName = paramName;
|
|
464
392
|
this.metadata = metadata;
|
|
465
393
|
this.value = value;
|
|
466
394
|
}
|
|
467
|
-
|
|
468
395
|
}
|
|
469
|
-
|
|
470
396
|
exports.ReturnValueToken = ReturnValueToken;
|
|
471
|
-
|
|
472
397
|
class RowToken extends Token {
|
|
398
|
+
columns;
|
|
473
399
|
constructor(columns) {
|
|
474
400
|
super('ROW', 'onRow');
|
|
475
|
-
this.columns = void 0;
|
|
476
401
|
this.columns = columns;
|
|
477
402
|
}
|
|
478
|
-
|
|
479
403
|
}
|
|
480
|
-
|
|
481
404
|
exports.RowToken = RowToken;
|
|
482
|
-
|
|
483
405
|
class SSPIToken extends Token {
|
|
406
|
+
ntlmpacket;
|
|
407
|
+
ntlmpacketBuffer;
|
|
484
408
|
constructor(ntlmpacket, ntlmpacketBuffer) {
|
|
485
409
|
super('SSPICHALLENGE', 'onSSPI');
|
|
486
|
-
this.ntlmpacket = void 0;
|
|
487
|
-
this.ntlmpacketBuffer = void 0;
|
|
488
410
|
this.ntlmpacket = ntlmpacket;
|
|
489
411
|
this.ntlmpacketBuffer = ntlmpacketBuffer;
|
|
490
412
|
}
|
|
491
|
-
|
|
492
413
|
}
|
|
493
|
-
|
|
494
414
|
exports.SSPIToken = SSPIToken;
|
|
495
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJUWVBFIiwiQUxUTUVUQURBVEEiLCJBTFRST1ciLCJDT0xNRVRBREFUQSIsIkNPTElORk8iLCJET05FIiwiRE9ORVBST0MiLCJET05FSU5QUk9DIiwiRU5WQ0hBTkdFIiwiRVJST1IiLCJGRUFUVVJFRVhUQUNLIiwiRkVEQVVUSElORk8iLCJJTkZPIiwiTE9HSU5BQ0siLCJOQkNST1ciLCJPRkZTRVQiLCJPUkRFUiIsIlJFVFVSTlNUQVRVUyIsIlJFVFVSTlZBTFVFIiwiUk9XIiwiU1NQSSIsIlRBQk5BTUUiLCJUb2tlbiIsImNvbnN0cnVjdG9yIiwibmFtZSIsImhhbmRsZXJOYW1lIiwiQ29sTWV0YWRhdGFUb2tlbiIsImNvbHVtbnMiLCJEb25lVG9rZW4iLCJtb3JlIiwic3FsRXJyb3IiLCJhdHRlbnRpb24iLCJzZXJ2ZXJFcnJvciIsInJvd0NvdW50IiwiY3VyQ21kIiwiRG9uZUluUHJvY1Rva2VuIiwiRG9uZVByb2NUb2tlbiIsIkRhdGFiYXNlRW52Q2hhbmdlVG9rZW4iLCJuZXdWYWx1ZSIsIm9sZFZhbHVlIiwidHlwZSIsIkxhbmd1YWdlRW52Q2hhbmdlVG9rZW4iLCJDaGFyc2V0RW52Q2hhbmdlVG9rZW4iLCJQYWNrZXRTaXplRW52Q2hhbmdlVG9rZW4iLCJCZWdpblRyYW5zYWN0aW9uRW52Q2hhbmdlVG9rZW4iLCJDb21taXRUcmFuc2FjdGlvbkVudkNoYW5nZVRva2VuIiwiUm9sbGJhY2tUcmFuc2FjdGlvbkVudkNoYW5nZVRva2VuIiwiRGF0YWJhc2VNaXJyb3JpbmdQYXJ0bmVyRW52Q2hhbmdlVG9rZW4iLCJSZXNldENvbm5lY3Rpb25FbnZDaGFuZ2VUb2tlbiIsIkNvbGxhdGlvbkNoYW5nZVRva2VuIiwiUm91dGluZ0VudkNoYW5nZVRva2VuIiwiRmVhdHVyZUV4dEFja1Rva2VuIiwiZmVkQXV0aCIsInV0ZjhTdXBwb3J0IiwiRmVkQXV0aEluZm9Ub2tlbiIsInNwbiIsInN0c3VybCIsIkluZm9NZXNzYWdlVG9rZW4iLCJudW1iZXIiLCJzdGF0ZSIsImNsYXNzIiwiY2xhenoiLCJtZXNzYWdlIiwic2VydmVyTmFtZSIsInByb2NOYW1lIiwibGluZU51bWJlciIsIkVycm9yTWVzc2FnZVRva2VuIiwiTG9naW5BY2tUb2tlbiIsImludGVyZmFjZSIsImludGVyZmF6ZSIsInRkc1ZlcnNpb24iLCJwcm9nTmFtZSIsInByb2dWZXJzaW9uIiwiTkJDUm93VG9rZW4iLCJPcmRlclRva2VuIiwib3JkZXJDb2x1bW5zIiwiUmV0dXJuU3RhdHVzVG9rZW4iLCJ2YWx1ZSIsIlJldHVyblZhbHVlVG9rZW4iLCJwYXJhbU9yZGluYWwiLCJwYXJhbU5hbWUiLCJtZXRhZGF0YSIsIlJvd1Rva2VuIiwiU1NQSVRva2VuIiwibnRsbXBhY2tldCIsIm50bG1wYWNrZXRCdWZmZXIiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9rZW4vdG9rZW4udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29sbGF0aW9uIH0gZnJvbSAnLi4vY29sbGF0aW9uJztcbmltcG9ydCB7IE1ldGFkYXRhIH0gZnJvbSAnLi4vbWV0YWRhdGEtcGFyc2VyJztcbmltcG9ydCB7IENvbHVtbk1ldGFkYXRhIH0gZnJvbSAnLi9jb2xtZXRhZGF0YS10b2tlbi1wYXJzZXInO1xuaW1wb3J0IHsgVG9rZW5IYW5kbGVyIH0gZnJvbSAnLi9oYW5kbGVyJztcblxuZXhwb3J0IGNvbnN0IFRZUEUgPSB7XG4gIEFMVE1FVEFEQVRBOiAweDg4LFxuICBBTFRST1c6IDB4RDMsXG4gIENPTE1FVEFEQVRBOiAweDgxLFxuICBDT0xJTkZPOiAweEE1LFxuICBET05FOiAweEZELFxuICBET05FUFJPQzogMHhGRSxcbiAgRE9ORUlOUFJPQzogMHhGRixcbiAgRU5WQ0hBTkdFOiAweEUzLFxuICBFUlJPUjogMHhBQSxcbiAgRkVBVFVSRUVYVEFDSzogMHhBRSxcbiAgRkVEQVVUSElORk86IDB4RUUsXG4gIElORk86IDB4QUIsXG4gIExPR0lOQUNLOiAweEFELFxuICBOQkNST1c6IDB4RDIsXG4gIE9GRlNFVDogMHg3OCxcbiAgT1JERVI6IDB4QTksXG4gIFJFVFVSTlNUQVRVUzogMHg3OSxcbiAgUkVUVVJOVkFMVUU6IDB4QUMsXG4gIFJPVzogMHhEMSxcbiAgU1NQSTogMHhFRCxcbiAgVEFCTkFNRTogMHhBNFxufTtcblxudHlwZSBIYW5kbGVyTmFtZSA9IGtleW9mIFRva2VuSGFuZGxlcjtcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRva2VuIHtcbiAgbmFtZTogc3RyaW5nO1xuICBoYW5kbGVyTmFtZToga2V5b2YgVG9rZW5IYW5kbGVyO1xuXG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZywgaGFuZGxlck5hbWU6IEhhbmRsZXJOYW1lKSB7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLmhhbmRsZXJOYW1lID0gaGFuZGxlck5hbWU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbE1ldGFkYXRhVG9rZW4gZXh0ZW5kcyBUb2tlbiB7XG4gIGRlY2xhcmUgbmFtZTogJ0NPTE1FVEFEQVRBJztcbiAgZGVjbGFyZSBoYW5kbGVyTmFtZTogJ29uQ29sTWV0YWRhdGEnO1xuXG4gIGNvbHVtbnM6IENvbHVtbk1ldGFkYXRhW11cblxuICBjb25zdHJ1Y3Rvcihjb2x1bW5zOiBDb2x1bW5NZXRhZGF0YVtdKSB7XG4gICAgc3VwZXIoJ0NPTE1FVEFEQVRBJywgJ29uQ29sTWV0YWRhdGEnKTtcblxuICAgIHRoaXMuY29sdW1ucyA9IGNvbHVtbnM7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIERvbmVUb2tlbiBleHRlbmRzIFRva2VuIHtcbiAgZGVjbGFyZSBuYW1lOiAnRE9ORSc7XG4gIGRlY2xhcmUgaGFuZGxlck5hbWU6ICdvbkRvbmUnO1xuXG4gIG1vcmU6IGJvb2xlYW47XG4gIHNxbEVycm9yOiBib29sZWFuO1xuICBhdHRlbnRpb246IGJvb2xlYW47XG4gIHNlcnZlckVycm9yOiBib29sZWFuO1xuICByb3dDb3VudDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICBjdXJDbWQ6IG51bWJlcjtcblxuICBjb25zdHJ1Y3Rvcih7IG1vcmUsIHNxbEVycm9yLCBhdHRlbnRpb24sIHNlcnZlckVycm9yLCByb3dDb3VudCwgY3VyQ21kIH06IHsgbW9yZTogYm9vbGVhbiwgc3FsRXJyb3I6IGJvb2xlYW4sIGF0dGVudGlvbjogYm9vbGVhbiwgc2VydmVyRXJyb3I6IGJvb2xlYW4sIHJvd0NvdW50OiBudW1iZXIgfCB1bmRlZmluZWQsIGN1ckNtZDogbnVtYmVyIH0pIHtcbiAgICBzdXBlcignRE9ORScsICdvbkRvbmUnKTtcblxuICAgIHRoaXMubW9yZSA9IG1vcmU7XG4gICAgdGhpcy5zcWxFcnJvciA9IHNxbEVycm9yO1xuICAgIHRoaXMuYXR0ZW50aW9uID0gYXR0ZW50aW9uO1xuICAgIHRoaXMuc2VydmVyRXJyb3IgPSBzZXJ2ZXJFcnJvcjtcbiAgICB0aGlzLnJvd0NvdW50ID0gcm93Q291bnQ7XG4gICAgdGhpcy5jdXJDbWQgPSBjdXJDbWQ7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIERvbmVJblByb2NUb2tlbiBleHRlbmRzIFRva2VuIHtcbiAgZGVjbGFyZSBuYW1lOiAnRE9ORUlOUFJPQyc7XG4gIGRlY2xhcmUgaGFuZGxlck5hbWU6ICdvbkRvbmVJblByb2MnO1xuXG4gIG1vcmU6IGJvb2xlYW47XG4gIHNxbEVycm9yOiBib29sZWFuO1xuICBhdHRlbnRpb246IGJvb2xlYW47XG4gIHNlcnZlckVycm9yOiBib29sZWFuO1xuICByb3dDb3VudDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICBjdXJDbWQ6IG51bWJlcjtcblxuICBjb25zdHJ1Y3Rvcih7IG1vcmUsIHNxbEVycm9yLCBhdHRlbnRpb24sIHNlcnZlckVycm9yLCByb3dDb3VudCwgY3VyQ21kIH06IHsgbW9yZTogYm9vbGVhbiwgc3FsRXJyb3I6IGJvb2xlYW4sIGF0dGVudGlvbjogYm9vbGVhbiwgc2VydmVyRXJyb3I6IGJvb2xlYW4sIHJvd0NvdW50OiBudW1iZXIgfCB1bmRlZmluZWQsIGN1ckNtZDogbnVtYmVyIH0pIHtcbiAgICBzdXBlcignRE9ORUlOUFJPQycsICdvbkRvbmVJblByb2MnKTtcblxuICAgIHRoaXMubW9yZSA9IG1vcmU7XG4gICAgdGhpcy5zcWxFcnJvciA9IHNxbEVycm9yO1xuICAgIHRoaXMuYXR0ZW50aW9uID0gYXR0ZW50aW9uO1xuICAgIHRoaXMuc2VydmVyRXJyb3IgPSBzZXJ2ZXJFcnJvcjtcbiAgICB0aGlzLnJvd0NvdW50ID0gcm93Q291bnQ7XG4gICAgdGhpcy5jdXJDbWQgPSBjdXJDbWQ7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIERvbmVQcm9jVG9rZW4gZXh0ZW5kcyBUb2tlbiB7XG4gIGRlY2xhcmUgbmFtZTogJ0RPTkVQUk9DJztcbiAgZGVjbGFyZSBoYW5kbGVyTmFtZTogJ29uRG9uZVByb2MnO1xuXG4gIG1vcmU6IGJvb2xlYW47XG4gIHNxbEVycm9yOiBib29sZWFuO1xuICBhdHRlbnRpb246IGJvb2xlYW47XG4gIHNlcnZlckVycm9yOiBib29sZWFuO1xuICByb3dDb3VudDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICBjdXJDbWQ6IG51bWJlcjtcblxuICBjb25zdHJ1Y3Rvcih7IG1vcmUsIHNxbEVycm9yLCBhdHRlbnRpb24sIHNlcnZlckVycm9yLCByb3dDb3VudCwgY3VyQ21kIH06IHsgbW9yZTogYm9vbGVhbiwgc3FsRXJyb3I6IGJvb2xlYW4sIGF0dGVudGlvbjogYm9vbGVhbiwgc2VydmVyRXJyb3I6IGJvb2xlYW4sIHJvd0NvdW50OiBudW1iZXIgfCB1bmRlZmluZWQsIGN1ckNtZDogbnVtYmVyIH0pIHtcbiAgICBzdXBlcignRE9ORVBST0MnLCAnb25Eb25lUHJvYycpO1xuXG4gICAgdGhpcy5tb3JlID0gbW9yZTtcbiAgICB0aGlzLnNxbEVycm9yID0gc3FsRXJyb3I7XG4gICAgdGhpcy5hdHRlbnRpb24gPSBhdHRlbnRpb247XG4gICAgdGhpcy5zZXJ2ZXJFcnJvciA9IHNlcnZlckVycm9yO1xuICAgIHRoaXMucm93Q291bnQgPSByb3dDb3VudDtcbiAgICB0aGlzLmN1ckNtZCA9IGN1ckNtZDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGF0YWJhc2VFbnZDaGFuZ2VUb2tlbiBleHRlbmRzIFRva2VuIHtcbiAgZGVjbGFyZSBuYW1lOiAnRU5WQ0hBTkdFJztcbiAgZGVjbGFyZSBoYW5kbGVyTmFtZTogJ29uRGF0YWJhc2VDaGFuZ2UnO1xuXG4gIHR5cGU6ICdEQVRBQkFTRSc7XG4gIG5ld1ZhbHVlOiBzdHJpbmc7XG4gIG9sZFZhbHVlOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IobmV3VmFsdWU6IHN0cmluZywgb2xkVmFsdWU6IHN0cmluZykge1xuICAgIHN1cGVyKCdFTlZDSEFOR0UnLCAnb25EYXRhYmFzZUNoYW5nZScpO1xuXG4gICAgdGhpcy50eXBlID0gJ0RBVEFCQVNFJztcbiAgICB0aGlzLm5ld1ZhbHVlID0gbmV3VmFsdWU7XG4gICAgdGhpcy5vbGRWYWx1ZSA9IG9sZFZhbHVlO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBMYW5ndWFnZUVudkNoYW5nZVRva2VuIGV4dGVuZHMgVG9rZW4ge1xuICBkZWNsYXJlIG5hbWU6ICdFTlZDSEFOR0UnO1xuICBkZWNsYXJlIGhhbmRsZXJOYW1lOiAnb25MYW5ndWFnZUNoYW5nZSc7XG5cbiAgdHlwZTogJ0xBTkdVQUdFJztcbiAgbmV3VmFsdWU6IHN0cmluZztcbiAgb2xkVmFsdWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihuZXdWYWx1ZTogc3RyaW5nLCBvbGRWYWx1ZTogc3RyaW5nKSB7XG4gICAgc3VwZXIoJ0VOVkNIQU5HRScsICdvbkxhbmd1YWdlQ2hhbmdlJyk7XG5cbiAgICB0aGlzLnR5cGUgPSAnTEFOR1VBR0UnO1xuICAgIHRoaXMubmV3VmFsdWUgPSBuZXdWYWx1ZTtcbiAgICB0aGlzLm9sZFZhbHVlID0gb2xkVmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENoYXJzZXRFbnZDaGFuZ2VUb2tlbiBleHRlbmRzIFRva2VuIHtcbiAgZGVjbGFyZSBuYW1lOiAnRU5WQ0hBTkdFJztcbiAgZGVjbGFyZSBoYW5kbGVyTmFtZTogJ29uQ2hhcnNldENoYW5nZSc7XG5cbiAgdHlwZTogJ0NIQVJTRVQnO1xuICBuZXdWYWx1ZTogc3RyaW5nO1xuICBvbGRWYWx1ZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKG5ld1ZhbHVlOiBzdHJpbmcsIG9sZFZhbHVlOiBzdHJpbmcpIHtcbiAgICBzdXBlcignRU5WQ0hBTkdFJywgJ29uQ2hhcnNldENoYW5nZScpO1xuXG4gICAgdGhpcy50eXBlID0gJ0NIQVJTRVQnO1xuICAgIHRoaXMubmV3VmFsdWUgPSBuZXdWYWx1ZTtcbiAgICB0aGlzLm9sZFZhbHVlID0gb2xkVmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFBhY2tldFNpemVFbnZDaGFuZ2VUb2tlbiBleHRlbmRzIFRva2VuIHtcbiAgZGVjbGFyZSBuYW1lOiAnRU5WQ0hBTkdFJztcbiAgZGVjbGFyZSBoYW5kbGVyTmFtZTogJ29uUGFja2V0U2l6ZUNoYW5nZSc7XG5cbiAgdHlwZTogJ1BBQ0tFVF9TSVpFJztcbiAgbmV3VmFsdWU6IG51bWJlcjtcbiAgb2xkVmFsdWU6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihuZXdWYWx1ZTogbnVtYmVyLCBvbGRWYWx1ZTogbnVtYmVyKSB7XG4gICAgc3VwZXIoJ0VOVkNIQU5HRScsICdvblBhY2tldFNpemVDaGFuZ2UnKTtcblxuICAgIHRoaXMudHlwZSA9ICdQQUNLRVRfU0laRSc7XG4gICAgdGhpcy5uZXdWYWx1ZSA9IG5ld1ZhbHVlO1xuICAgIHRoaXMub2xkVmFsdWUgPSBvbGRWYWx1ZTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQmVnaW5UcmFuc2FjdGlvbkVudkNoYW5nZVRva2VuIGV4dGVuZHMgVG9rZW4ge1xuICBkZWNsYXJlIG5hbWU6ICdFTlZDSEFOR0UnO1xuICBkZWNsYXJlIGhhbmRsZXJOYW1lOiAnb25CZWdpblRyYW5zYWN0aW9uJztcblxuICB0eXBlOiAnQkVHSU5fVFhOJztcbiAgbmV3VmFsdWU6IEJ1ZmZlcjtcbiAgb2xkVmFsdWU6IEJ1ZmZlcjtcblxuICBjb25zdHJ1Y3RvcihuZXdWYWx1ZTogQnVmZmVyLCBvbGRWYWx1ZTogQnVmZmVyKSB7XG4gICAgc3VwZXIoJ0VOVkNIQU5HRScsICdvbkJlZ2luVHJhbnNhY3Rpb24nKTtcblxuICAgIHRoaXMudHlwZSA9ICdCRUdJTl9UWE4nO1xuICAgIHRoaXMubmV3VmFsdWUgPSBuZXdWYWx1ZTtcbiAgICB0aGlzLm9sZFZhbHVlID0gb2xkVmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbW1pdFRyYW5zYWN0aW9uRW52Q2hhbmdlVG9rZW4gZXh0ZW5kcyBUb2tlbiB7XG4gIGRlY2xhcmUgbmFtZTogJ0VOVkNIQU5HRSc7XG4gIGRlY2xhcmUgaGFuZGxlck5hbWU6ICdvbkNvbW1pdFRyYW5zYWN0aW9uJztcblxuICB0eXBlOiAnQ09NTUlUX1RYTic7XG4gIG5ld1ZhbHVlOiBCdWZmZXI7XG4gIG9sZFZhbHVlOiBCdWZmZXI7XG5cbiAgY29uc3RydWN0b3IobmV3VmFsdWU6IEJ1ZmZlciwgb2xkVmFsdWU6IEJ1ZmZlcikge1xuICAgIHN1cGVyKCdFTlZDSEFOR0UnLCAnb25Db21taXRUcmFuc2FjdGlvbicpO1xuXG4gICAgdGhpcy50eXBlID0gJ0NPTU1JVF9UWE4nO1xuICAgIHRoaXMubmV3VmFsdWUgPSBuZXdWYWx1ZTtcbiAgICB0aGlzLm9sZFZhbHVlID0gb2xkVmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJvbGxiYWNrVHJhbnNhY3Rpb25FbnZDaGFuZ2VUb2tlbiBleHRlbmRzIFRva2VuIHtcbiAgZGVjbGFyZSBuYW1lOiAnRU5WQ0hBTkdFJztcbiAgZGVjbGFyZSBoYW5kbGVyTmFtZTogJ29uUm9sbGJhY2tUcmFuc2FjdGlvbic7XG5cbiAgdHlwZTogJ1JPTExCQUNLX1RYTic7XG4gIG9sZFZhbHVlOiBCdWZmZXI7XG4gIG5ld1ZhbHVlOiBCdWZmZXI7XG5cbiAgY29uc3RydWN0b3IobmV3VmFsdWU6IEJ1ZmZlciwgb2xkVmFsdWU6IEJ1ZmZlcikge1xuICAgIHN1cGVyKCdFTlZDSEFOR0UnLCAnb25Sb2xsYmFja1RyYW5zYWN0aW9uJyk7XG5cbiAgICB0aGlzLnR5cGUgPSAnUk9MTEJBQ0tfVFhOJztcbiAgICB0aGlzLm5ld1ZhbHVlID0gbmV3VmFsdWU7XG4gICAgdGhpcy5vbGRWYWx1ZSA9IG9sZFZhbHVlO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEYXRhYmFzZU1pcnJvcmluZ1BhcnRuZXJFbnZDaGFuZ2VUb2tlbiBleHRlbmRzIFRva2VuIHtcbiAgZGVjbGFyZSBuYW1lOiAnRU5WQ0hBTkdFJztcbiAgZGVjbGFyZSBoYW5kbGVyTmFtZTogJ29uRGF0YWJhc2VNaXJyb3JpbmdQYXJ0bmVyJztcblxuICB0eXBlOiAnREFUQUJBU0VfTUlSUk9SSU5HX1BBUlRORVInO1xuICBvbGRWYWx1ZTogc3RyaW5nO1xuICBuZXdWYWx1ZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKG5ld1ZhbHVlOiBzdHJpbmcsIG9sZFZhbHVlOiBzdHJpbmcpIHtcbiAgICBzdXBlcignRU5WQ0hBTkdFJywgJ29uRGF0YWJhc2VNaXJyb3JpbmdQYXJ0bmVyJyk7XG5cbiAgICB0aGlzLnR5cGUgPSAnREFUQUJBU0VfTUlSUk9SSU5HX1BBUlRORVInO1xuICAgIHRoaXMubmV3VmFsdWUgPSBuZXdWYWx1ZTtcbiAgICB0aGlzLm9sZFZhbHVlID0gb2xkVmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJlc2V0Q29ubmVjdGlvbkVudkNoYW5nZVRva2VuIGV4dGVuZHMgVG9rZW4ge1xuICBkZWNsYXJlIG5hbWU6ICdFTlZDSEFOR0UnO1xuICBkZWNsYXJlIGhhbmRsZXJOYW1lOiAnb25SZXNldENvbm5lY3Rpb24nO1xuXG4gIHR5cGU6ICdSRVNFVF9DT05ORUNUSU9OJztcbiAgb2xkVmFsdWU6IEJ1ZmZlcjtcbiAgbmV3VmFsdWU6IEJ1ZmZlcjtcblxuICBjb25zdHJ1Y3RvcihuZXdWYWx1ZTogQnVmZmVyLCBvbGRWYWx1ZTogQnVmZmVyKSB7XG4gICAgc3VwZXIoJ0VOVkNIQU5HRScsICdvblJlc2V0Q29ubmVjdGlvbicpO1xuXG4gICAgdGhpcy50eXBlID0gJ1JFU0VUX0NPTk5FQ1RJT04nO1xuICAgIHRoaXMubmV3VmFsdWUgPSBuZXdWYWx1ZTtcbiAgICB0aGlzLm9sZFZhbHVlID0gb2xkVmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbGxhdGlvbkNoYW5nZVRva2VuIGV4dGVuZHMgVG9rZW4ge1xuICBkZWNsYXJlIG5hbWU6ICdFTlZDSEFOR0UnO1xuICBkZWNsYXJlIGhhbmRsZXJOYW1lOiAnb25TcWxDb2xsYXRpb25DaGFuZ2UnO1xuXG4gIHR5cGU6ICdTUUxfQ09MTEFUSU9OJztcbiAgb2xkVmFsdWU6IENvbGxhdGlvbiB8IHVuZGVmaW5lZDtcbiAgbmV3VmFsdWU6IENvbGxhdGlvbiB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihuZXdWYWx1ZTogQ29sbGF0aW9uIHwgdW5kZWZpbmVkLCBvbGRWYWx1ZTogQ29sbGF0aW9uIHwgdW5kZWZpbmVkKSB7XG4gICAgc3VwZXIoJ0VOVkNIQU5HRScsICdvblNxbENvbGxhdGlvbkNoYW5nZScpO1xuXG4gICAgdGhpcy50eXBlID0gJ1NRTF9DT0xMQVRJT04nO1xuICAgIHRoaXMubmV3VmFsdWUgPSBuZXdWYWx1ZTtcbiAgICB0aGlzLm9sZFZhbHVlID0gb2xkVmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJvdXRpbmdFbnZDaGFuZ2VUb2tlbiBleHRlbmRzIFRva2VuIHtcbiAgZGVjbGFyZSBuYW1lOiAnRU5WQ0hBTkdFJztcbiAgZGVjbGFyZSBoYW5kbGVyTmFtZTogJ29uUm91dGluZ0NoYW5nZSc7XG5cbiAgdHlwZTogJ1JPVVRJTkdfQ0hBTkdFJztcbiAgbmV3VmFsdWU6IHsgcHJvdG9jb2w6IG51bWJlciwgcG9ydDogbnVtYmVyLCBzZXJ2ZXI6IHN0cmluZyB9O1xuICBvbGRWYWx1ZTogQnVmZmVyO1xuXG4gIGNvbnN0cnVjdG9yKG5ld1ZhbHVlOiB7IHByb3RvY29sOiBudW1iZXIsIHBvcnQ6IG51bWJlciwgc2VydmVyOiBzdHJpbmcgfSwgb2xkVmFsdWU6IEJ1ZmZlcikge1xuICAgIHN1cGVyKCdFTlZDSEFOR0UnLCAnb25Sb3V0aW5nQ2hhbmdlJyk7XG5cbiAgICB0aGlzLnR5cGUgPSAnUk9VVElOR19DSEFOR0UnO1xuICAgIHRoaXMubmV3VmFsdWUgPSBuZXdWYWx1ZTtcbiAgICB0aGlzLm9sZFZhbHVlID0gb2xkVmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEZlYXR1cmVFeHRBY2tUb2tlbiBleHRlbmRzIFRva2VuIHtcbiAgZGVjbGFyZSBuYW1lOiAnRkVBVFVSRUVYVEFDSyc7XG4gIGRlY2xhcmUgaGFuZGxlck5hbWU6ICdvbkZlYXR1cmVFeHRBY2snO1xuXG4gIGZlZEF1dGg6IEJ1ZmZlciB8IHVuZGVmaW5lZDtcblxuICAvKiogVmFsdWUgb2YgVVRGOF9TVVBQT1JUIGFja25vd2xlZGdlbWVudC5cbiAgICpcbiAgICogdW5kZWZpbmVkIHdoZW4gVVRGOF9TVVBQT1JUIG5vdCBpbmNsdWRlZCBpbiB0b2tlbi4gKi9cbiAgdXRmOFN1cHBvcnQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoZmVkQXV0aDogQnVmZmVyIHwgdW5kZWZpbmVkLCB1dGY4U3VwcG9ydDogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICAgIHN1cGVyKCdGRUFUVVJFRVhUQUNLJywgJ29uRmVhdHVyZUV4dEFjaycpO1xuXG4gICAgdGhpcy5mZWRBdXRoID0gZmVkQXV0aDtcbiAgICB0aGlzLnV0ZjhTdXBwb3J0ID0gdXRmOFN1cHBvcnQ7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEZlZEF1dGhJbmZvVG9rZW4gZXh0ZW5kcyBUb2tlbiB7XG4gIGRlY2xhcmUgbmFtZTogJ0ZFREFVVEhJTkZPJztcbiAgZGVjbGFyZSBoYW5kbGVyTmFtZTogJ29uRmVkQXV0aEluZm8nO1xuXG4gIHNwbjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBzdHN1cmw6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihzcG46IHN0cmluZyB8IHVuZGVmaW5lZCwgc3RzdXJsOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICBzdXBlcignRkVEQVVUSElORk8nLCAnb25GZWRBdXRoSW5mbycpO1xuXG4gICAgdGhpcy5zcG4gPSBzcG47XG4gICAgdGhpcy5zdHN1cmwgPSBzdHN1cmw7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEluZm9NZXNzYWdlVG9rZW4gZXh0ZW5kcyBUb2tlbiB7XG4gIGRlY2xhcmUgbmFtZTogJ0lORk8nO1xuICBkZWNsYXJlIGhhbmRsZXJOYW1lOiAnb25JbmZvTWVzc2FnZSc7XG5cbiAgbnVtYmVyOiBudW1iZXI7XG4gIHN0YXRlOiBudW1iZXI7XG4gIGNsYXNzOiBudW1iZXI7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgc2VydmVyTmFtZTogc3RyaW5nO1xuICBwcm9jTmFtZTogc3RyaW5nO1xuICBsaW5lTnVtYmVyOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoeyBudW1iZXIsIHN0YXRlLCBjbGFzczogY2xhenosIG1lc3NhZ2UsIHNlcnZlck5hbWUsIHByb2NOYW1lLCBsaW5lTnVtYmVyIH06IHsgbnVtYmVyOiBudW1iZXIsIHN0YXRlOiBudW1iZXIsIGNsYXNzOiBudW1iZXIsIG1lc3NhZ2U6IHN0cmluZywgc2VydmVyTmFtZTogc3RyaW5nLCBwcm9jTmFtZTogc3RyaW5nLCBsaW5lTnVtYmVyOiBudW1iZXIgfSkge1xuICAgIHN1cGVyKCdJTkZPJywgJ29uSW5mb01lc3NhZ2UnKTtcblxuICAgIHRoaXMubnVtYmVyID0gbnVtYmVyO1xuICAgIHRoaXMuc3RhdGUgPSBzdGF0ZTtcbiAgICB0aGlzLmNsYXNzID0gY2xheno7XG4gICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZTtcbiAgICB0aGlzLnNlcnZlck5hbWUgPSBzZXJ2ZXJOYW1lO1xuICAgIHRoaXMucHJvY05hbWUgPSBwcm9jTmFtZTtcbiAgICB0aGlzLmxpbmVOdW1iZXIgPSBsaW5lTnVtYmVyO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBFcnJvck1lc3NhZ2VUb2tlbiBleHRlbmRzIFRva2VuIHtcbiAgZGVjbGFyZSBuYW1lOiAnRVJST1InO1xuICBkZWNsYXJlIGhhbmRsZXJOYW1lOiAnb25FcnJvck1lc3NhZ2UnO1xuXG4gIG51bWJlcjogbnVtYmVyO1xuICBzdGF0ZTogbnVtYmVyO1xuICBjbGFzczogbnVtYmVyO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHNlcnZlck5hbWU6IHN0cmluZztcbiAgcHJvY05hbWU6IHN0cmluZztcbiAgbGluZU51bWJlcjogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKHsgbnVtYmVyLCBzdGF0ZSwgY2xhc3M6IGNsYXp6LCBtZXNzYWdlLCBzZXJ2ZXJOYW1lLCBwcm9jTmFtZSwgbGluZU51bWJlciB9OiB7IG51bWJlcjogbnVtYmVyLCBzdGF0ZTogbnVtYmVyLCBjbGFzczogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmcsIHNlcnZlck5hbWU6IHN0cmluZywgcHJvY05hbWU6IHN0cmluZywgbGluZU51bWJlcjogbnVtYmVyIH0pIHtcbiAgICBzdXBlcignRVJST1InLCAnb25FcnJvck1lc3NhZ2UnKTtcblxuICAgIHRoaXMubnVtYmVyID0gbnVtYmVyO1xuICAgIHRoaXMuc3RhdGUgPSBzdGF0ZTtcbiAgICB0aGlzLmNsYXNzID0gY2xheno7XG4gICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZTtcbiAgICB0aGlzLnNlcnZlck5hbWUgPSBzZXJ2ZXJOYW1lO1xuICAgIHRoaXMucHJvY05hbWUgPSBwcm9jTmFtZTtcbiAgICB0aGlzLmxpbmVOdW1iZXIgPSBsaW5lTnVtYmVyO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBMb2dpbkFja1Rva2VuIGV4dGVuZHMgVG9rZW4ge1xuICBkZWNsYXJlIG5hbWU6ICdMT0dJTkFDSyc7XG4gIGRlY2xhcmUgaGFuZGxlck5hbWU6ICdvbkxvZ2luQWNrJztcblxuICBpbnRlcmZhY2U6IHN0cmluZztcbiAgdGRzVmVyc2lvbjogc3RyaW5nO1xuICBwcm9nTmFtZTogc3RyaW5nO1xuICBwcm9nVmVyc2lvbjogeyBtYWpvcjogbnVtYmVyLCBtaW5vcjogbnVtYmVyLCBidWlsZE51bUhpOiBudW1iZXIsIGJ1aWxkTnVtTG93OiBudW1iZXIgfTtcblxuICBjb25zdHJ1Y3Rvcih7IGludGVyZmFjZTogaW50ZXJmYXplLCB0ZHNWZXJzaW9uLCBwcm9nTmFtZSwgcHJvZ1ZlcnNpb24gfTogeyBpbnRlcmZhY2U6IExvZ2luQWNrVG9rZW5bJ2ludGVyZmFjZSddLCB0ZHNWZXJzaW9uOiBMb2dpbkFja1Rva2VuWyd0ZHNWZXJzaW9uJ10sIHByb2dOYW1lOiBMb2dpbkFja1Rva2VuWydwcm9nTmFtZSddLCBwcm9nVmVyc2lvbjogTG9naW5BY2tUb2tlblsncHJvZ1ZlcnNpb24nXSB9KSB7XG4gICAgc3VwZXIoJ0xPR0lOQUNLJywgJ29uTG9naW5BY2snKTtcblxuICAgIHRoaXMuaW50ZXJmYWNlID0gaW50ZXJmYXplO1xuICAgIHRoaXMudGRzVmVyc2lvbiA9IHRkc1ZlcnNpb247XG4gICAgdGhpcy5wcm9nTmFtZSA9IHByb2dOYW1lO1xuICAgIHRoaXMucHJvZ1ZlcnNpb24gPSBwcm9nVmVyc2lvbjtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgTkJDUm93VG9rZW4gZXh0ZW5kcyBUb2tlbiB7XG4gIGRlY2xhcmUgbmFtZTogJ05CQ1JPVyc7XG4gIGRlY2xhcmUgaGFuZGxlck5hbWU6ICdvblJvdyc7XG5cbiAgY29sdW1uczogYW55O1xuXG4gIGNvbnN0cnVjdG9yKGNvbHVtbnM6IGFueSkge1xuICAgIHN1cGVyKCdOQkNST1cnLCAnb25Sb3cnKTtcblxuICAgIHRoaXMuY29sdW1ucyA9IGNvbHVtbnM7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE9yZGVyVG9rZW4gZXh0ZW5kcyBUb2tlbiB7XG4gIGRlY2xhcmUgbmFtZTogJ09SREVSJztcbiAgZGVjbGFyZSBoYW5kbGVyTmFtZTogJ29uT3JkZXInO1xuXG4gIG9yZGVyQ29sdW1uczogbnVtYmVyW107XG5cbiAgY29uc3RydWN0b3Iob3JkZXJDb2x1bW5zOiBudW1iZXJbXSkge1xuICAgIHN1cGVyKCdPUkRFUicsICdvbk9yZGVyJyk7XG5cbiAgICB0aGlzLm9yZGVyQ29sdW1ucyA9IG9yZGVyQ29sdW1ucztcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUmV0dXJuU3RhdHVzVG9rZW4gZXh0ZW5kcyBUb2tlbiB7XG4gIGRlY2xhcmUgbmFtZTogJ1JFVFVSTlNUQVRVUyc7XG4gIGRlY2xhcmUgaGFuZGxlck5hbWU6ICdvblJldHVyblN0YXR1cyc7XG5cbiAgdmFsdWU6IG51bWJlcjtcblxuICBjb25zdHJ1Y3Rvcih2YWx1ZTogbnVtYmVyKSB7XG4gICAgc3VwZXIoJ1JFVFVSTlNUQVRVUycsICdvblJldHVyblN0YXR1cycpO1xuXG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSZXR1cm5WYWx1ZVRva2VuIGV4dGVuZHMgVG9rZW4ge1xuICBkZWNsYXJlIG5hbWU6ICdSRVRVUk5WQUxVRSc7XG4gIGRlY2xhcmUgaGFuZGxlck5hbWU6ICdvblJldHVyblZhbHVlJztcblxuICBwYXJhbU9yZGluYWw6IG51bWJlcjtcbiAgcGFyYW1OYW1lOiBzdHJpbmc7XG4gIG1ldGFkYXRhOiBNZXRhZGF0YTtcbiAgdmFsdWU6IHVua25vd247XG5cbiAgY29uc3RydWN0b3IoeyBwYXJhbU9yZGluYWwsIHBhcmFtTmFtZSwgbWV0YWRhdGEsIHZhbHVlIH06IHsgcGFyYW1PcmRpbmFsOiBudW1iZXIsIHBhcmFtTmFtZTogc3RyaW5nLCBtZXRhZGF0YTogTWV0YWRhdGEsIHZhbHVlOiB1bmtub3duIH0pIHtcbiAgICBzdXBlcignUkVUVVJOVkFMVUUnLCAnb25SZXR1cm5WYWx1ZScpO1xuXG4gICAgdGhpcy5wYXJhbU9yZGluYWwgPSBwYXJhbU9yZGluYWw7XG4gICAgdGhpcy5wYXJhbU5hbWUgPSBwYXJhbU5hbWU7XG4gICAgdGhpcy5tZXRhZGF0YSA9IG1ldGFkYXRhO1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUm93VG9rZW4gZXh0ZW5kcyBUb2tlbiB7XG4gIGRlY2xhcmUgbmFtZTogJ1JPVyc7XG4gIGRlY2xhcmUgaGFuZGxlck5hbWU6ICdvblJvdyc7XG5cbiAgY29sdW1uczogYW55O1xuXG4gIGNvbnN0cnVjdG9yKGNvbHVtbnM6IGFueSkge1xuICAgIHN1cGVyKCdST1cnLCAnb25Sb3cnKTtcblxuICAgIHRoaXMuY29sdW1ucyA9IGNvbHVtbnM7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNTUElUb2tlbiBleHRlbmRzIFRva2VuIHtcbiAgZGVjbGFyZSBuYW1lOiAnU1NQSUNIQUxMRU5HRSc7XG4gIGRlY2xhcmUgaGFuZGxlck5hbWU6ICdvblNTUEknO1xuXG4gIG50bG1wYWNrZXQ6IGFueTtcbiAgbnRsbXBhY2tldEJ1ZmZlcjogQnVmZmVyO1xuXG4gIGNvbnN0cnVjdG9yKG50bG1wYWNrZXQ6IGFueSwgbnRsbXBhY2tldEJ1ZmZlcjogQnVmZmVyKSB7XG4gICAgc3VwZXIoJ1NTUElDSEFMTEVOR0UnLCAnb25TU1BJJyk7XG5cbiAgICB0aGlzLm50bG1wYWNrZXQgPSBudGxtcGFja2V0O1xuICAgIHRoaXMubnRsbXBhY2tldEJ1ZmZlciA9IG50bG1wYWNrZXRCdWZmZXI7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBS08sTUFBTUEsSUFBSSxHQUFHO0VBQ2xCQyxXQUFXLEVBQUUsSUFESztFQUVsQkMsTUFBTSxFQUFFLElBRlU7RUFHbEJDLFdBQVcsRUFBRSxJQUhLO0VBSWxCQyxPQUFPLEVBQUUsSUFKUztFQUtsQkMsSUFBSSxFQUFFLElBTFk7RUFNbEJDLFFBQVEsRUFBRSxJQU5RO0VBT2xCQyxVQUFVLEVBQUUsSUFQTTtFQVFsQkMsU0FBUyxFQUFFLElBUk87RUFTbEJDLEtBQUssRUFBRSxJQVRXO0VBVWxCQyxhQUFhLEVBQUUsSUFWRztFQVdsQkMsV0FBVyxFQUFFLElBWEs7RUFZbEJD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
|
|
415
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJUWVBFIiwiQUxUTUVUQURBVEEiLCJBTFRST1ciLCJDT0xNRVRBREFUQSIsIkNPTElORk8iLCJET05FIiwiRE9ORVBST0MiLCJET05FSU5QUk9DIiwiRU5WQ0hBTkdFIiwiRVJST1IiLCJGRUFUVVJFRVhUQUNLIiwiRkVEQVVUSElORk8iLCJJTkZPIiwiTE9HSU5BQ0siLCJOQkNST1ciLCJPRkZTRVQiLCJPUkRFUiIsIlJFVFVSTlNUQVRVUyIsIlJFVFVSTlZBTFVFIiwiUk9XIiwiU1NQSSIsIlRBQk5BTUUiLCJleHBvcnRzIiwiVG9rZW4iLCJuYW1lIiwiaGFuZGxlck5hbWUiLCJjb25zdHJ1Y3RvciIsIkNvbE1ldGFkYXRhVG9rZW4iLCJjb2x1bW5zIiwiRG9uZVRva2VuIiwibW9yZSIsInNxbEVycm9yIiwiYXR0ZW50aW9uIiwic2VydmVyRXJyb3IiLCJyb3dDb3VudCIsImN1ckNtZCIsIkRvbmVJblByb2NUb2tlbiIsIkRvbmVQcm9jVG9rZW4iLCJEYXRhYmFzZUVudkNoYW5nZVRva2VuIiwidHlwZSIsIm5ld1ZhbHVlIiwib2xkVmFsdWUiLCJMYW5ndWFnZUVudkNoYW5nZVRva2VuIiwiQ2hhcnNldEVudkNoYW5nZVRva2VuIiwiUGFja2V0U2l6ZUVudkNoYW5nZVRva2VuIiwiQmVnaW5UcmFuc2FjdGlvbkVudkNoYW5nZVRva2VuIiwiQ29tbWl0VHJhbnNhY3Rpb25FbnZDaGFuZ2VUb2tlbiIsIlJvbGxiYWNrVHJhbnNhY3Rpb25FbnZDaGFuZ2VUb2tlbiIsIkRhdGFiYXNlTWlycm9yaW5nUGFydG5lckVudkNoYW5nZVRva2VuIiwiUmVzZXRDb25uZWN0aW9uRW52Q2hhbmdlVG9rZW4iLCJDb2xsYXRpb25DaGFuZ2VUb2tlbiIsIlJvdXRpbmdFbnZDaGFuZ2VUb2tlbiIsIkZlYXR1cmVFeHRBY2tUb2tlbiIsImZlZEF1dGgiLCJ1dGY4U3VwcG9ydCIsIkZlZEF1dGhJbmZvVG9rZW4iLCJzcG4iLCJzdHN1cmwiLCJJbmZvTWVzc2FnZVRva2VuIiwibnVtYmVyIiwic3RhdGUiLCJjbGFzcyIsIm1lc3NhZ2UiLCJzZXJ2ZXJOYW1lIiwicHJvY05hbWUiLCJsaW5lTnVtYmVyIiwiY2xhenoiLCJFcnJvck1lc3NhZ2VUb2tlbiIsIkxvZ2luQWNrVG9rZW4iLCJpbnRlcmZhY2UiLCJ0ZHNWZXJzaW9uIiwicHJvZ05hbWUiLCJwcm9nVmVyc2lvbiIsImludGVyZmF6ZSIsIk5CQ1Jvd1Rva2VuIiwiT3JkZXJUb2tlbiIsIm9yZGVyQ29sdW1ucyIsIlJldHVyblN0YXR1c1Rva2VuIiwidmFsdWUiLCJSZXR1cm5WYWx1ZVRva2VuIiwicGFyYW1PcmRpbmFsIiwicGFyYW1OYW1lIiwibWV0YWRhdGEiLCJSb3dUb2tlbiIsIlNTUElUb2tlbiIsIm50bG1wYWNrZXQiLCJudGxtcGFja2V0QnVmZmVyIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rva2VuL3Rva2VuLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbGxhdGlvbiB9IGZyb20gJy4uL2NvbGxhdGlvbic7XG5pbXBvcnQgeyBNZXRhZGF0YSB9IGZyb20gJy4uL21ldGFkYXRhLXBhcnNlcic7XG5pbXBvcnQgeyBDb2x1bW5NZXRhZGF0YSB9IGZyb20gJy4vY29sbWV0YWRhdGEtdG9rZW4tcGFyc2VyJztcbmltcG9ydCB7IFRva2VuSGFuZGxlciB9IGZyb20gJy4vaGFuZGxlcic7XG5cbmV4cG9ydCBjb25zdCBUWVBFID0ge1xuICBBTFRNRVRBREFUQTogMHg4OCxcbiAgQUxUUk9XOiAweEQzLFxuICBDT0xNRVRBREFUQTogMHg4MSxcbiAgQ09MSU5GTzogMHhBNSxcbiAgRE9ORTogMHhGRCxcbiAgRE9ORVBST0M6IDB4RkUsXG4gIERPTkVJTlBST0M6IDB4RkYsXG4gIEVOVkNIQU5HRTogMHhFMyxcbiAgRVJST1I6IDB4QUEsXG4gIEZFQVRVUkVFWFRBQ0s6IDB4QUUsXG4gIEZFREFVVEhJTkZPOiAweEVFLFxuICBJTkZPOiAweEFCLFxuICBMT0dJTkFDSzogMHhBRCxcbiAgTkJDUk9XOiAweEQyLFxuICBPRkZTRVQ6IDB4NzgsXG4gIE9SREVSOiAweEE5LFxuICBSRVRVUk5TVEFUVVM6IDB4NzksXG4gIFJFVFVSTlZBTFVFOiAweEFDLFxuICBST1c6IDB4RDEsXG4gIFNTUEk6IDB4RUQsXG4gIFRBQk5BTUU6IDB4QTRcbn07XG5cbnR5cGUgSGFuZGxlck5hbWUgPSBrZXlvZiBUb2tlbkhhbmRsZXI7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBUb2tlbiB7XG4gIG5hbWU6IHN0cmluZztcbiAgaGFuZGxlck5hbWU6IGtleW9mIFRva2VuSGFuZGxlcjtcblxuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcsIGhhbmRsZXJOYW1lOiBIYW5kbGVyTmFtZSkge1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgdGhpcy5oYW5kbGVyTmFtZSA9IGhhbmRsZXJOYW1lO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb2xNZXRhZGF0YVRva2VuIGV4dGVuZHMgVG9rZW4ge1xuICBkZWNsYXJlIG5hbWU6ICdDT0xNRVRBREFUQSc7XG4gIGRlY2xhcmUgaGFuZGxlck5hbWU6ICdvbkNvbE1ldGFkYXRhJztcblxuICBjb2x1bW5zOiBDb2x1bW5NZXRhZGF0YVtdO1xuXG4gIGNvbnN0cnVjdG9yKGNvbHVtbnM6IENvbHVtbk1ldGFkYXRhW10pIHtcbiAgICBzdXBlcignQ09MTUVUQURBVEEnLCAnb25Db2xNZXRhZGF0YScpO1xuXG4gICAgdGhpcy5jb2x1bW5zID0gY29sdW1ucztcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRG9uZVRva2VuIGV4dGVuZHMgVG9rZW4ge1xuICBkZWNsYXJlIG5hbWU6ICdET05FJztcbiAgZGVjbGFyZSBoYW5kbGVyTmFtZTogJ29uRG9uZSc7XG5cbiAgbW9yZTogYm9vbGVhbjtcbiAgc3FsRXJyb3I6IGJvb2xlYW47XG4gIGF0dGVudGlvbjogYm9vbGVhbjtcbiAgc2VydmVyRXJyb3I6IGJvb2xlYW47XG4gIHJvd0NvdW50OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIGN1ckNtZDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKHsgbW9yZSwgc3FsRXJyb3IsIGF0dGVudGlvbiwgc2VydmVyRXJyb3IsIHJvd0NvdW50LCBjdXJDbWQgfTogeyBtb3JlOiBib29sZWFuLCBzcWxFcnJvcjogYm9vbGVhbiwgYXR0ZW50aW9uOiBib29sZWFuLCBzZXJ2ZXJFcnJvcjogYm9vbGVhbiwgcm93Q291bnQ6IG51bWJlciB8IHVuZGVmaW5lZCwgY3VyQ21kOiBudW1iZXIgfSkge1xuICAgIHN1cGVyKCdET05FJywgJ29uRG9uZScpO1xuXG4gICAgdGhpcy5tb3JlID0gbW9yZTtcbiAgICB0aGlzLnNxbEVycm9yID0gc3FsRXJyb3I7XG4gICAgdGhpcy5hdHRlbnRpb24gPSBhdHRlbnRpb247XG4gICAgdGhpcy5zZXJ2ZXJFcnJvciA9IHNlcnZlckVycm9yO1xuICAgIHRoaXMucm93Q291bnQgPSByb3dDb3VudDtcbiAgICB0aGlzLmN1ckNtZCA9IGN1ckNtZDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRG9uZUluUHJvY1Rva2VuIGV4dGVuZHMgVG9rZW4ge1xuICBkZWNsYXJlIG5hbWU6ICdET05FSU5QUk9DJztcbiAgZGVjbGFyZSBoYW5kbGVyTmFtZTogJ29uRG9uZUluUHJvYyc7XG5cbiAgbW9yZTogYm9vbGVhbjtcbiAgc3FsRXJyb3I6IGJvb2xlYW47XG4gIGF0dGVudGlvbjogYm9vbGVhbjtcbiAgc2VydmVyRXJyb3I6IGJvb2xlYW47XG4gIHJvd0NvdW50OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIGN1ckNtZDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKHsgbW9yZSwgc3FsRXJyb3IsIGF0dGVudGlvbiwgc2VydmVyRXJyb3IsIHJvd0NvdW50LCBjdXJDbWQgfTogeyBtb3JlOiBib29sZWFuLCBzcWxFcnJvcjogYm9vbGVhbiwgYXR0ZW50aW9uOiBib29sZWFuLCBzZXJ2ZXJFcnJvcjogYm9vbGVhbiwgcm93Q291bnQ6IG51bWJlciB8IHVuZGVmaW5lZCwgY3VyQ21kOiBudW1iZXIgfSkge1xuICAgIHN1cGVyKCdET05FSU5QUk9DJywgJ29uRG9uZUluUHJvYycpO1xuXG4gICAgdGhpcy5tb3JlID0gbW9yZTtcbiAgICB0aGlzLnNxbEVycm9yID0gc3FsRXJyb3I7XG4gICAgdGhpcy5hdHRlbnRpb24gPSBhdHRlbnRpb247XG4gICAgdGhpcy5zZXJ2ZXJFcnJvciA9IHNlcnZlckVycm9yO1xuICAgIHRoaXMucm93Q291bnQgPSByb3dDb3VudDtcbiAgICB0aGlzLmN1ckNtZCA9IGN1ckNtZDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRG9uZVByb2NUb2tlbiBleHRlbmRzIFRva2VuIHtcbiAgZGVjbGFyZSBuYW1lOiAnRE9ORVBST0MnO1xuICBkZWNsYXJlIGhhbmRsZXJOYW1lOiAnb25Eb25lUHJvYyc7XG5cbiAgbW9yZTogYm9vbGVhbjtcbiAgc3FsRXJyb3I6IGJvb2xlYW47XG4gIGF0dGVudGlvbjogYm9vbGVhbjtcbiAgc2VydmVyRXJyb3I6IGJvb2xlYW47XG4gIHJvd0NvdW50OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIGN1ckNtZDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKHsgbW9yZSwgc3FsRXJyb3IsIGF0dGVudGlvbiwgc2VydmVyRXJyb3IsIHJvd0NvdW50LCBjdXJDbWQgfTogeyBtb3JlOiBib29sZWFuLCBzcWxFcnJvcjogYm9vbGVhbiwgYXR0ZW50aW9uOiBib29sZWFuLCBzZXJ2ZXJFcnJvcjogYm9vbGVhbiwgcm93Q291bnQ6IG51bWJlciB8IHVuZGVmaW5lZCwgY3VyQ21kOiBudW1iZXIgfSkge1xuICAgIHN1cGVyKCdET05FUFJPQycsICdvbkRvbmVQcm9jJyk7XG5cbiAgICB0aGlzLm1vcmUgPSBtb3JlO1xuICAgIHRoaXMuc3FsRXJyb3IgPSBzcWxFcnJvcjtcbiAgICB0aGlzLmF0dGVudGlvbiA9IGF0dGVudGlvbjtcbiAgICB0aGlzLnNlcnZlckVycm9yID0gc2VydmVyRXJyb3I7XG4gICAgdGhpcy5yb3dDb3VudCA9IHJvd0NvdW50O1xuICAgIHRoaXMuY3VyQ21kID0gY3VyQ21kO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEYXRhYmFzZUVudkNoYW5nZVRva2VuIGV4dGVuZHMgVG9rZW4ge1xuICBkZWNsYXJlIG5hbWU6ICdFTlZDSEFOR0UnO1xuICBkZWNsYXJlIGhhbmRsZXJOYW1lOiAnb25EYXRhYmFzZUNoYW5nZSc7XG5cbiAgdHlwZTogJ0RBVEFCQVNFJztcbiAgbmV3VmFsdWU6IHN0cmluZztcbiAgb2xkVmFsdWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihuZXdWYWx1ZTogc3RyaW5nLCBvbGRWYWx1ZTogc3RyaW5nKSB7XG4gICAgc3VwZXIoJ0VOVkNIQU5HRScsICdvbkRhdGFiYXNlQ2hhbmdlJyk7XG5cbiAgICB0aGlzLnR5cGUgPSAnREFUQUJBU0UnO1xuICAgIHRoaXMubmV3VmFsdWUgPSBuZXdWYWx1ZTtcbiAgICB0aGlzLm9sZFZhbHVlID0gb2xkVmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIExhbmd1YWdlRW52Q2hhbmdlVG9rZW4gZXh0ZW5kcyBUb2tlbiB7XG4gIGRlY2xhcmUgbmFtZTogJ0VOVkNIQU5HRSc7XG4gIGRlY2xhcmUgaGFuZGxlck5hbWU6ICdvbkxhbmd1YWdlQ2hhbmdlJztcblxuICB0eXBlOiAnTEFOR1VBR0UnO1xuICBuZXdWYWx1ZTogc3RyaW5nO1xuICBvbGRWYWx1ZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKG5ld1ZhbHVlOiBzdHJpbmcsIG9sZFZhbHVlOiBzdHJpbmcpIHtcbiAgICBzdXBlcignRU5WQ0hBTkdFJywgJ29uTGFuZ3VhZ2VDaGFuZ2UnKTtcblxuICAgIHRoaXMudHlwZSA9ICdMQU5HVUFHRSc7XG4gICAgdGhpcy5uZXdWYWx1ZSA9IG5ld1ZhbHVlO1xuICAgIHRoaXMub2xkVmFsdWUgPSBvbGRWYWx1ZTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ2hhcnNldEVudkNoYW5nZVRva2VuIGV4dGVuZHMgVG9rZW4ge1xuICBkZWNsYXJlIG5hbWU6ICdFTlZDSEFOR0UnO1xuICBkZWNsYXJlIGhhbmRsZXJOYW1lOiAnb25DaGFyc2V0Q2hhbmdlJztcblxuICB0eXBlOiAnQ0hBUlNFVCc7XG4gIG5ld1ZhbHVlOiBzdHJpbmc7XG4gIG9sZFZhbHVlOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IobmV3VmFsdWU6IHN0cmluZywgb2xkVmFsdWU6IHN0cmluZykge1xuICAgIHN1cGVyKCdFTlZDSEFOR0UnLCAnb25DaGFyc2V0Q2hhbmdlJyk7XG5cbiAgICB0aGlzLnR5cGUgPSAnQ0hBUlNFVCc7XG4gICAgdGhpcy5uZXdWYWx1ZSA9IG5ld1ZhbHVlO1xuICAgIHRoaXMub2xkVmFsdWUgPSBvbGRWYWx1ZTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUGFja2V0U2l6ZUVudkNoYW5nZVRva2VuIGV4dGVuZHMgVG9rZW4ge1xuICBkZWNsYXJlIG5hbWU6ICdFTlZDSEFOR0UnO1xuICBkZWNsYXJlIGhhbmRsZXJOYW1lOiAnb25QYWNrZXRTaXplQ2hhbmdlJztcblxuICB0eXBlOiAnUEFDS0VUX1NJWkUnO1xuICBuZXdWYWx1ZTogbnVtYmVyO1xuICBvbGRWYWx1ZTogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKG5ld1ZhbHVlOiBudW1iZXIsIG9sZFZhbHVlOiBudW1iZXIpIHtcbiAgICBzdXBlcignRU5WQ0hBTkdFJywgJ29uUGFja2V0U2l6ZUNoYW5nZScpO1xuXG4gICAgdGhpcy50eXBlID0gJ1BBQ0tFVF9TSVpFJztcbiAgICB0aGlzLm5ld1ZhbHVlID0gbmV3VmFsdWU7XG4gICAgdGhpcy5vbGRWYWx1ZSA9IG9sZFZhbHVlO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBCZWdpblRyYW5zYWN0aW9uRW52Q2hhbmdlVG9rZW4gZXh0ZW5kcyBUb2tlbiB7XG4gIGRlY2xhcmUgbmFtZTogJ0VOVkNIQU5HRSc7XG4gIGRlY2xhcmUgaGFuZGxlck5hbWU6ICdvbkJlZ2luVHJhbnNhY3Rpb24nO1xuXG4gIHR5cGU6ICdCRUdJTl9UWE4nO1xuICBuZXdWYWx1ZTogQnVmZmVyO1xuICBvbGRWYWx1ZTogQnVmZmVyO1xuXG4gIGNvbnN0cnVjdG9yKG5ld1ZhbHVlOiBCdWZmZXIsIG9sZFZhbHVlOiBCdWZmZXIpIHtcbiAgICBzdXBlcignRU5WQ0hBTkdFJywgJ29uQmVnaW5UcmFuc2FjdGlvbicpO1xuXG4gICAgdGhpcy50eXBlID0gJ0JFR0lOX1RYTic7XG4gICAgdGhpcy5uZXdWYWx1ZSA9IG5ld1ZhbHVlO1xuICAgIHRoaXMub2xkVmFsdWUgPSBvbGRWYWx1ZTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29tbWl0VHJhbnNhY3Rpb25FbnZDaGFuZ2VUb2tlbiBleHRlbmRzIFRva2VuIHtcbiAgZGVjbGFyZSBuYW1lOiAnRU5WQ0hBTkdFJztcbiAgZGVjbGFyZSBoYW5kbGVyTmFtZTogJ29uQ29tbWl0VHJhbnNhY3Rpb24nO1xuXG4gIHR5cGU6ICdDT01NSVRfVFhOJztcbiAgbmV3VmFsdWU6IEJ1ZmZlcjtcbiAgb2xkVmFsdWU6IEJ1ZmZlcjtcblxuICBjb25zdHJ1Y3RvcihuZXdWYWx1ZTogQnVmZmVyLCBvbGRWYWx1ZTogQnVmZmVyKSB7XG4gICAgc3VwZXIoJ0VOVkNIQU5HRScsICdvbkNvbW1pdFRyYW5zYWN0aW9uJyk7XG5cbiAgICB0aGlzLnR5cGUgPSAnQ09NTUlUX1RYTic7XG4gICAgdGhpcy5uZXdWYWx1ZSA9IG5ld1ZhbHVlO1xuICAgIHRoaXMub2xkVmFsdWUgPSBvbGRWYWx1ZTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUm9sbGJhY2tUcmFuc2FjdGlvbkVudkNoYW5nZVRva2VuIGV4dGVuZHMgVG9rZW4ge1xuICBkZWNsYXJlIG5hbWU6ICdFTlZDSEFOR0UnO1xuICBkZWNsYXJlIGhhbmRsZXJOYW1lOiAnb25Sb2xsYmFja1RyYW5zYWN0aW9uJztcblxuICB0eXBlOiAnUk9MTEJBQ0tfVFhOJztcbiAgb2xkVmFsdWU6IEJ1ZmZlcjtcbiAgbmV3VmFsdWU6IEJ1ZmZlcjtcblxuICBjb25zdHJ1Y3RvcihuZXdWYWx1ZTogQnVmZmVyLCBvbGRWYWx1ZTogQnVmZmVyKSB7XG4gICAgc3VwZXIoJ0VOVkNIQU5HRScsICdvblJvbGxiYWNrVHJhbnNhY3Rpb24nKTtcblxuICAgIHRoaXMudHlwZSA9ICdST0xMQkFDS19UWE4nO1xuICAgIHRoaXMubmV3VmFsdWUgPSBuZXdWYWx1ZTtcbiAgICB0aGlzLm9sZFZhbHVlID0gb2xkVmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIERhdGFiYXNlTWlycm9yaW5nUGFydG5lckVudkNoYW5nZVRva2VuIGV4dGVuZHMgVG9rZW4ge1xuICBkZWNsYXJlIG5hbWU6ICdFTlZDSEFOR0UnO1xuICBkZWNsYXJlIGhhbmRsZXJOYW1lOiAnb25EYXRhYmFzZU1pcnJvcmluZ1BhcnRuZXInO1xuXG4gIHR5cGU6ICdEQVRBQkFTRV9NSVJST1JJTkdfUEFSVE5FUic7XG4gIG9sZFZhbHVlOiBzdHJpbmc7XG4gIG5ld1ZhbHVlOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IobmV3VmFsdWU6IHN0cmluZywgb2xkVmFsdWU6IHN0cmluZykge1xuICAgIHN1cGVyKCdFTlZDSEFOR0UnLCAnb25EYXRhYmFzZU1pcnJvcmluZ1BhcnRuZXInKTtcblxuICAgIHRoaXMudHlwZSA9ICdEQVRBQkFTRV9NSVJST1JJTkdfUEFSVE5FUic7XG4gICAgdGhpcy5uZXdWYWx1ZSA9IG5ld1ZhbHVlO1xuICAgIHRoaXMub2xkVmFsdWUgPSBvbGRWYWx1ZTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUmVzZXRDb25uZWN0aW9uRW52Q2hhbmdlVG9rZW4gZXh0ZW5kcyBUb2tlbiB7XG4gIGRlY2xhcmUgbmFtZTogJ0VOVkNIQU5HRSc7XG4gIGRlY2xhcmUgaGFuZGxlck5hbWU6ICdvblJlc2V0Q29ubmVjdGlvbic7XG5cbiAgdHlwZTogJ1JFU0VUX0NPTk5FQ1RJT04nO1xuICBvbGRWYWx1ZTogQnVmZmVyO1xuICBuZXdWYWx1ZTogQnVmZmVyO1xuXG4gIGNvbnN0cnVjdG9yKG5ld1ZhbHVlOiBCdWZmZXIsIG9sZFZhbHVlOiBCdWZmZXIpIHtcbiAgICBzdXBlcignRU5WQ0hBTkdFJywgJ29uUmVzZXRDb25uZWN0aW9uJyk7XG5cbiAgICB0aGlzLnR5cGUgPSAnUkVTRVRfQ09OTkVDVElPTic7XG4gICAgdGhpcy5uZXdWYWx1ZSA9IG5ld1ZhbHVlO1xuICAgIHRoaXMub2xkVmFsdWUgPSBvbGRWYWx1ZTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29sbGF0aW9uQ2hhbmdlVG9rZW4gZXh0ZW5kcyBUb2tlbiB7XG4gIGRlY2xhcmUgbmFtZTogJ0VOVkNIQU5HRSc7XG4gIGRlY2xhcmUgaGFuZGxlck5hbWU6ICdvblNxbENvbGxhdGlvbkNoYW5nZSc7XG5cbiAgdHlwZTogJ1NRTF9DT0xMQVRJT04nO1xuICBvbGRWYWx1ZTogQ29sbGF0aW9uIHwgdW5kZWZpbmVkO1xuICBuZXdWYWx1ZTogQ29sbGF0aW9uIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKG5ld1ZhbHVlOiBDb2xsYXRpb24gfCB1bmRlZmluZWQsIG9sZFZhbHVlOiBDb2xsYXRpb24gfCB1bmRlZmluZWQpIHtcbiAgICBzdXBlcignRU5WQ0hBTkdFJywgJ29uU3FsQ29sbGF0aW9uQ2hhbmdlJyk7XG5cbiAgICB0aGlzLnR5cGUgPSAnU1FMX0NPTExBVElPTic7XG4gICAgdGhpcy5uZXdWYWx1ZSA9IG5ld1ZhbHVlO1xuICAgIHRoaXMub2xkVmFsdWUgPSBvbGRWYWx1ZTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUm91dGluZ0VudkNoYW5nZVRva2VuIGV4dGVuZHMgVG9rZW4ge1xuICBkZWNsYXJlIG5hbWU6ICdFTlZDSEFOR0UnO1xuICBkZWNsYXJlIGhhbmRsZXJOYW1lOiAnb25Sb3V0aW5nQ2hhbmdlJztcblxuICB0eXBlOiAnUk9VVElOR19DSEFOR0UnO1xuICBuZXdWYWx1ZTogeyBwcm90b2NvbDogbnVtYmVyLCBwb3J0OiBudW1iZXIsIHNlcnZlcjogc3RyaW5nIH07XG4gIG9sZFZhbHVlOiBCdWZmZXI7XG5cbiAgY29uc3RydWN0b3IobmV3VmFsdWU6IHsgcHJvdG9jb2w6IG51bWJlciwgcG9ydDogbnVtYmVyLCBzZXJ2ZXI6IHN0cmluZyB9LCBvbGRWYWx1ZTogQnVmZmVyKSB7XG4gICAgc3VwZXIoJ0VOVkNIQU5HRScsICdvblJvdXRpbmdDaGFuZ2UnKTtcblxuICAgIHRoaXMudHlwZSA9ICdST1VUSU5HX0NIQU5HRSc7XG4gICAgdGhpcy5uZXdWYWx1ZSA9IG5ld1ZhbHVlO1xuICAgIHRoaXMub2xkVmFsdWUgPSBvbGRWYWx1ZTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRmVhdHVyZUV4dEFja1Rva2VuIGV4dGVuZHMgVG9rZW4ge1xuICBkZWNsYXJlIG5hbWU6ICdGRUFUVVJFRVhUQUNLJztcbiAgZGVjbGFyZSBoYW5kbGVyTmFtZTogJ29uRmVhdHVyZUV4dEFjayc7XG5cbiAgZmVkQXV0aDogQnVmZmVyIHwgdW5kZWZpbmVkO1xuXG4gIC8qKiBWYWx1ZSBvZiBVVEY4X1NVUFBPUlQgYWNrbm93bGVkZ2VtZW50LlxuICAgKlxuICAgKiB1bmRlZmluZWQgd2hlbiBVVEY4X1NVUFBPUlQgbm90IGluY2x1ZGVkIGluIHRva2VuLiAqL1xuICB1dGY4U3VwcG9ydDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihmZWRBdXRoOiBCdWZmZXIgfCB1bmRlZmluZWQsIHV0ZjhTdXBwb3J0OiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgc3VwZXIoJ0ZFQVRVUkVFWFRBQ0snLCAnb25GZWF0dXJlRXh0QWNrJyk7XG5cbiAgICB0aGlzLmZlZEF1dGggPSBmZWRBdXRoO1xuICAgIHRoaXMudXRmOFN1cHBvcnQgPSB1dGY4U3VwcG9ydDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRmVkQXV0aEluZm9Ub2tlbiBleHRlbmRzIFRva2VuIHtcbiAgZGVjbGFyZSBuYW1lOiAnRkVEQVVUSElORk8nO1xuICBkZWNsYXJlIGhhbmRsZXJOYW1lOiAnb25GZWRBdXRoSW5mbyc7XG5cbiAgc3BuOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHN0c3VybDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKHNwbjogc3RyaW5nIHwgdW5kZWZpbmVkLCBzdHN1cmw6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHN1cGVyKCdGRURBVVRISU5GTycsICdvbkZlZEF1dGhJbmZvJyk7XG5cbiAgICB0aGlzLnNwbiA9IHNwbjtcbiAgICB0aGlzLnN0c3VybCA9IHN0c3VybDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSW5mb01lc3NhZ2VUb2tlbiBleHRlbmRzIFRva2VuIHtcbiAgZGVjbGFyZSBuYW1lOiAnSU5GTyc7XG4gIGRlY2xhcmUgaGFuZGxlck5hbWU6ICdvbkluZm9NZXNzYWdlJztcblxuICBudW1iZXI6IG51bWJlcjtcbiAgc3RhdGU6IG51bWJlcjtcbiAgY2xhc3M6IG51bWJlcjtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBzZXJ2ZXJOYW1lOiBzdHJpbmc7XG4gIHByb2NOYW1lOiBzdHJpbmc7XG4gIGxpbmVOdW1iZXI6IG51bWJlcjtcblxuICBjb25zdHJ1Y3Rvcih7IG51bWJlciwgc3RhdGUsIGNsYXNzOiBjbGF6eiwgbWVzc2FnZSwgc2VydmVyTmFtZSwgcHJvY05hbWUsIGxpbmVOdW1iZXIgfTogeyBudW1iZXI6IG51bWJlciwgc3RhdGU6IG51bWJlciwgY2xhc3M6IG51bWJlciwgbWVzc2FnZTogc3RyaW5nLCBzZXJ2ZXJOYW1lOiBzdHJpbmcsIHByb2NOYW1lOiBzdHJpbmcsIGxpbmVOdW1iZXI6IG51bWJlciB9KSB7XG4gICAgc3VwZXIoJ0lORk8nLCAnb25JbmZvTWVzc2FnZScpO1xuXG4gICAgdGhpcy5udW1iZXIgPSBudW1iZXI7XG4gICAgdGhpcy5zdGF0ZSA9IHN0YXRlO1xuICAgIHRoaXMuY2xhc3MgPSBjbGF6ejtcbiAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlO1xuICAgIHRoaXMuc2VydmVyTmFtZSA9IHNlcnZlck5hbWU7XG4gICAgdGhpcy5wcm9jTmFtZSA9IHByb2NOYW1lO1xuICAgIHRoaXMubGluZU51bWJlciA9IGxpbmVOdW1iZXI7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEVycm9yTWVzc2FnZVRva2VuIGV4dGVuZHMgVG9rZW4ge1xuICBkZWNsYXJlIG5hbWU6ICdFUlJPUic7XG4gIGRlY2xhcmUgaGFuZGxlck5hbWU6ICdvbkVycm9yTWVzc2FnZSc7XG5cbiAgbnVtYmVyOiBudW1iZXI7XG4gIHN0YXRlOiBudW1iZXI7XG4gIGNsYXNzOiBudW1iZXI7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgc2VydmVyTmFtZTogc3RyaW5nO1xuICBwcm9jTmFtZTogc3RyaW5nO1xuICBsaW5lTnVtYmVyOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoeyBudW1iZXIsIHN0YXRlLCBjbGFzczogY2xhenosIG1lc3NhZ2UsIHNlcnZlck5hbWUsIHByb2NOYW1lLCBsaW5lTnVtYmVyIH06IHsgbnVtYmVyOiBudW1iZXIsIHN0YXRlOiBudW1iZXIsIGNsYXNzOiBudW1iZXIsIG1lc3NhZ2U6IHN0cmluZywgc2VydmVyTmFtZTogc3RyaW5nLCBwcm9jTmFtZTogc3RyaW5nLCBsaW5lTnVtYmVyOiBudW1iZXIgfSkge1xuICAgIHN1cGVyKCdFUlJPUicsICdvbkVycm9yTWVzc2FnZScpO1xuXG4gICAgdGhpcy5udW1iZXIgPSBudW1iZXI7XG4gICAgdGhpcy5zdGF0ZSA9IHN0YXRlO1xuICAgIHRoaXMuY2xhc3MgPSBjbGF6ejtcbiAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlO1xuICAgIHRoaXMuc2VydmVyTmFtZSA9IHNlcnZlck5hbWU7XG4gICAgdGhpcy5wcm9jTmFtZSA9IHByb2NOYW1lO1xuICAgIHRoaXMubGluZU51bWJlciA9IGxpbmVOdW1iZXI7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIExvZ2luQWNrVG9rZW4gZXh0ZW5kcyBUb2tlbiB7XG4gIGRlY2xhcmUgbmFtZTogJ0xPR0lOQUNLJztcbiAgZGVjbGFyZSBoYW5kbGVyTmFtZTogJ29uTG9naW5BY2snO1xuXG4gIGludGVyZmFjZTogc3RyaW5nO1xuICB0ZHNWZXJzaW9uOiBzdHJpbmc7XG4gIHByb2dOYW1lOiBzdHJpbmc7XG4gIHByb2dWZXJzaW9uOiB7IG1ham9yOiBudW1iZXIsIG1pbm9yOiBudW1iZXIsIGJ1aWxkTnVtSGk6IG51bWJlciwgYnVpbGROdW1Mb3c6IG51bWJlciB9O1xuXG4gIGNvbnN0cnVjdG9yKHsgaW50ZXJmYWNlOiBpbnRlcmZhemUsIHRkc1ZlcnNpb24sIHByb2dOYW1lLCBwcm9nVmVyc2lvbiB9OiB7IGludGVyZmFjZTogTG9naW5BY2tUb2tlblsnaW50ZXJmYWNlJ10sIHRkc1ZlcnNpb246IExvZ2luQWNrVG9rZW5bJ3Rkc1ZlcnNpb24nXSwgcHJvZ05hbWU6IExvZ2luQWNrVG9rZW5bJ3Byb2dOYW1lJ10sIHByb2dWZXJzaW9uOiBMb2dpbkFja1Rva2VuWydwcm9nVmVyc2lvbiddIH0pIHtcbiAgICBzdXBlcignTE9HSU5BQ0snLCAnb25Mb2dpbkFjaycpO1xuXG4gICAgdGhpcy5pbnRlcmZhY2UgPSBpbnRlcmZhemU7XG4gICAgdGhpcy50ZHNWZXJzaW9uID0gdGRzVmVyc2lvbjtcbiAgICB0aGlzLnByb2dOYW1lID0gcHJvZ05hbWU7XG4gICAgdGhpcy5wcm9nVmVyc2lvbiA9IHByb2dWZXJzaW9uO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBOQkNSb3dUb2tlbiBleHRlbmRzIFRva2VuIHtcbiAgZGVjbGFyZSBuYW1lOiAnTkJDUk9XJztcbiAgZGVjbGFyZSBoYW5kbGVyTmFtZTogJ29uUm93JztcblxuICBjb2x1bW5zOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoY29sdW1uczogYW55KSB7XG4gICAgc3VwZXIoJ05CQ1JPVycsICdvblJvdycpO1xuXG4gICAgdGhpcy5jb2x1bW5zID0gY29sdW1ucztcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgT3JkZXJUb2tlbiBleHRlbmRzIFRva2VuIHtcbiAgZGVjbGFyZSBuYW1lOiAnT1JERVInO1xuICBkZWNsYXJlIGhhbmRsZXJOYW1lOiAnb25PcmRlcic7XG5cbiAgb3JkZXJDb2x1bW5zOiBudW1iZXJbXTtcblxuICBjb25zdHJ1Y3RvcihvcmRlckNvbHVtbnM6IG51bWJlcltdKSB7XG4gICAgc3VwZXIoJ09SREVSJywgJ29uT3JkZXInKTtcblxuICAgIHRoaXMub3JkZXJDb2x1bW5zID0gb3JkZXJDb2x1bW5zO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSZXR1cm5TdGF0dXNUb2tlbiBleHRlbmRzIFRva2VuIHtcbiAgZGVjbGFyZSBuYW1lOiAnUkVUVVJOU1RBVFVTJztcbiAgZGVjbGFyZSBoYW5kbGVyTmFtZTogJ29uUmV0dXJuU3RhdHVzJztcblxuICB2YWx1ZTogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKHZhbHVlOiBudW1iZXIpIHtcbiAgICBzdXBlcignUkVUVVJOU1RBVFVTJywgJ29uUmV0dXJuU3RhdHVzJyk7XG5cbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJldHVyblZhbHVlVG9rZW4gZXh0ZW5kcyBUb2tlbiB7XG4gIGRlY2xhcmUgbmFtZTogJ1JFVFVSTlZBTFVFJztcbiAgZGVjbGFyZSBoYW5kbGVyTmFtZTogJ29uUmV0dXJuVmFsdWUnO1xuXG4gIHBhcmFtT3JkaW5hbDogbnVtYmVyO1xuICBwYXJhbU5hbWU6IHN0cmluZztcbiAgbWV0YWRhdGE6IE1ldGFkYXRhO1xuICB2YWx1ZTogdW5rbm93bjtcblxuICBjb25zdHJ1Y3Rvcih7IHBhcmFtT3JkaW5hbCwgcGFyYW1OYW1lLCBtZXRhZGF0YSwgdmFsdWUgfTogeyBwYXJhbU9yZGluYWw6IG51bWJlciwgcGFyYW1OYW1lOiBzdHJpbmcsIG1ldGFkYXRhOiBNZXRhZGF0YSwgdmFsdWU6IHVua25vd24gfSkge1xuICAgIHN1cGVyKCdSRVRVUk5WQUxVRScsICdvblJldHVyblZhbHVlJyk7XG5cbiAgICB0aGlzLnBhcmFtT3JkaW5hbCA9IHBhcmFtT3JkaW5hbDtcbiAgICB0aGlzLnBhcmFtTmFtZSA9IHBhcmFtTmFtZTtcbiAgICB0aGlzLm1ldGFkYXRhID0gbWV0YWRhdGE7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSb3dUb2tlbiBleHRlbmRzIFRva2VuIHtcbiAgZGVjbGFyZSBuYW1lOiAnUk9XJztcbiAgZGVjbGFyZSBoYW5kbGVyTmFtZTogJ29uUm93JztcblxuICBjb2x1bW5zOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoY29sdW1uczogYW55KSB7XG4gICAgc3VwZXIoJ1JPVycsICdvblJvdycpO1xuXG4gICAgdGhpcy5jb2x1bW5zID0gY29sdW1ucztcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgU1NQSVRva2VuIGV4dGVuZHMgVG9rZW4ge1xuICBkZWNsYXJlIG5hbWU6ICdTU1BJQ0hBTExFTkdFJztcbiAgZGVjbGFyZSBoYW5kbGVyTmFtZTogJ29uU1NQSSc7XG5cbiAgbnRsbXBhY2tldDogYW55O1xuICBudGxtcGFja2V0QnVmZmVyOiBCdWZmZXI7XG5cbiAgY29uc3RydWN0b3IobnRsbXBhY2tldDogYW55LCBudGxtcGFja2V0QnVmZmVyOiBCdWZmZXIpIHtcbiAgICBzdXBlcignU1NQSUNIQUxMRU5HRScsICdvblNTUEknKTtcblxuICAgIHRoaXMubnRsbXBhY2tldCA9IG50bG1wYWNrZXQ7XG4gICAgdGhpcy5udGxtcGFja2V0QnVmZmVyID0gbnRsbXBhY2tldEJ1ZmZlcjtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFLTyxNQUFNQSxJQUFJLEdBQUc7RUFDbEJDLFdBQVcsRUFBRSxJQUFJO0VBQ2pCQyxNQUFNLEVBQUUsSUFBSTtFQUNaQyxXQUFXLEVBQUUsSUFBSTtFQUNqQkMsT0FBTyxFQUFFLElBQUk7RUFDYkMsSUFBSSxFQUFFLElBQUk7RUFDVkMsUUFBUSxFQUFFLElBQUk7RUFDZEMsVUFBVSxFQUFFLElBQUk7RUFDaEJDLFNBQVMsRUFBRSxJQUFJO0VBQ2ZDLEtBQUssRUFBRSxJQUFJO0VBQ1hDLGFBQWEsRUFBRSxJQUFJO0VBQ25CQyxXQUFXLEVBQUUsSUFBSTtF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
|