x86-codegen bug

Matthew Fluet Matthew Fluet <fluet@CS.Cornell.EDU>
Thu, 18 Jan 2001 15:24:22 -0500 (EST)


  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.
  Send mail to mime@docserver.cac.washington.edu for more info.

---559023410-33463914-979849094=:15661
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII
Content-ID: <Pine.SOL.3.95.1010118152105.15661M@hoho.cs.cornell.edu>


> Matthew, there is a bug in the x86-codegen that you sent yesterday.  It causes
> segfaults on many of the regressions (date, fft, kitqsort, real, word, word8,
> world6).  If I use the C codegen or back out to the x86-codegen from Jan 15,
> there are no problems with any of the regressions (other than the usual real
> problem).

That's what I get for trying to keep two source trees in sync.  I've been
porting my changes to the x86-codegen back to my snapshot from before the 
"constant switch test bug in x86Translate" series of fixes.  I fixed this
bug in the old snapshot, but I guess not in new snapshot from which I
built the update I sent yesterday.  Anyways, here's a corrected
x86-simplify.fun for x86-codegen-new.  That was the only necessary change.


---559023410-33463914-979849094=:15661
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME="x86-simplify.fun"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.SOL.3.95.1010118151813.15661K@hoho.cs.cornell.edu>
Content-Description: 

KCogQ29weXJpZ2h0IChDKSAxOTk3LTE5OTkgTkVDIFJlc2VhcmNoIEluc3RpdHV0ZS4NCiAqIFBs
ZWFzZSBzZWUgdGhlIGZpbGUgTElDRU5TRSBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4NCiAqKQ0K
ZnVuY3RvciB4ODZTaW1wbGlmeShTOiBYODZfU0lNUExJRllfU1RSVUNUUyk6IFg4Nl9TSU1QTElG
WSA9DQpzdHJ1Y3QNCg0KICBvcGVuIFMNCiAgb3BlbiB4ODYNCg0KICB2YWwgcmVjIHBhcnRpdGlv
bg0KICAgID0gZm4gKFtdLHApID0+IChbXSxbXSkNCiAgICAgICB8IChoOjp0LHApID0+IGxldA0K
CQkgICAgICAgdmFsICh0cnVlZSxmYWxzZWUpID0gcGFydGl0aW9uKHQsIHApDQoJCSAgICAgaW4N
CgkJICAgICAgIGlmIHAgaA0KCQkJIHRoZW4gKGg6OnRydWVlLGZhbHNlZSkNCgkJCSBlbHNlICh0
cnVlZSxoOjpmYWxzZWUpDQoJCSAgICAgZW5kDQoNCiAgdmFsIHJlYyBvbmVzIDogaW50IC0+IHdv
cmQNCiAgICA9IGZuIDAgPT4gMHd4MA0KICAgICAgIHwgbiA9PiBXb3JkLm9yYihXb3JkLjw8KG9u
ZXMgKG4tMSksIDB3eDEpLDB3eDEpDQoNCiAgdmFsIHRyYWNlcg0KICAgID0gQ29udHJvbC50cmFj
ZUJhdGNoDQooKg0KICAgID0gZm4gcyA9PiBmbiBmID0+IChDb250cm9sLnRyYWNlQ2FsbCBzIGYs
IGZuICgpID0+ICgpKQ0KKikNCg0KICBzdHJ1Y3R1cmUgSnVtcEluZm8gPQ0KICAgIHN0cnVjdA0K
ICAgICAgZGF0YXR5cGUgc3RhdHVzID0gTXVzdCB8IE1heWJlIG9mIGludA0KDQogICAgICB2YWwg
bHQNCgk9IGZuIChNYXliZSBpMSwgTXVzdCkgPT4gdHJ1ZQ0KCSAgIHwgKE1heWJlIGkxLCBNYXli
ZSBpMikgPT4gaTEgPCBpMg0KCSAgIHwgXyA9PiBmYWxzZQ0KICAgICAgdmFsIGVxDQoJPSBmbiAo
TXVzdCwgTXVzdCkgPT4gdHJ1ZQ0KICAgICAgICAgICB8IChNYXliZSBpMSwgTWF5YmUgaTIpID0+
IGkxID0gaTINCgkgICB8IF8gPT4gZmFsc2UNCg0KICAgICAgdmFsIHRvU3RyaW5nDQogICAgICAg
ID0gZm4gTXVzdCA9PiAiTXVzdCINCgkgICB8IE1heWJlIGkgPT4gY29uY2F0IFsiTWF5YmUgIiwg
SW50LnRvU3RyaW5nIGldDQoNCiAgICAgIGxvY2FsDQoJZnVuIGRvaXQgKHN0YXR1c19yZWYsIG1h
eWJlX2ZuKQ0KCSAgPSBjYXNlICFzdGF0dXNfcmVmDQoJICAgICAgb2YgTXVzdCA9PiAoKQ0KCSAg
ICAgICB8IE1heWJlIGkgPT4gc3RhdHVzX3JlZiA6PSAobWF5YmVfZm4gaSkNCiAgICAgIGluDQoJ
ZnVuIGluYyB7bGFiZWwsIGp1bXBJbmZvIGFzIHtnZXR9fQ0KCSAgPSBkb2l0IChnZXQgbGFiZWws
IGZuIGkgPT4gTWF5YmUgKGkrMSkpDQoJZnVuIGRlYyB7bGFiZWwsIGp1bXBJbmZvIGFzIHtnZXR9
fQ0KCSAgPSBkb2l0IChnZXQgbGFiZWwsIGZuIGkgPT4gTWF5YmUgKGktMSkpDQoJZnVuIGZvcmNl
IHtsYWJlbCwganVtcEluZm8gYXMge2dldH19DQoJICA9IGRvaXQgKGdldCBsYWJlbCwgZm4gaSA9
PiBNdXN0KQ0KICAgICAgZW5kDQoNCiAgICAgIGZ1biBjb21wdXRlSnVtcEluZm8ge2Jsb2Nrczog
QmxvY2sudCBsaXN0LCANCgkJCSAgIGV4cG9ydHM6IExhYmVsLnQgbGlzdCwNCgkJCSAgIGJsb2Nr
X3ByZTogTGFiZWwudCAtPiBBc3NlbWJseS50IGxpc3Qgb3B0aW9ufQ0KCT0gbGV0DQoJICAgIHZh
bCBqdW1wSW5mbyBhcyB7Z2V0OiBMYWJlbC50IC0+IHN0YXR1cyByZWZ9DQoJICAgICAgPSBQcm9w
ZXJ0eS5nZXQNCgkgICAgICAgIChMYWJlbC5wbGlzdCwgDQoJCSBQcm9wZXJ0eS5pbml0RnVuIA0K
CQkgKGZuIGxhYmVsDQoJCSAgID0+IGNhc2UgYmxvY2tfcHJlIGxhYmVsIA0KCQkJb2YgTk9ORSA9
PiBpZiBMaXN0LmNvbnRhaW5zKGV4cG9ydHMsDQoJCQkJCQkgICAgbGFiZWwsDQoJCQkJCQkgICAg
TGFiZWwuZXF1YWxzKQ0KCQkJCSAgICAgdGhlbiByZWYgTXVzdA0KCQkJCSAgICAgZWxzZSByZWYg
KE1heWJlIDApIA0KCQkJIHwgU09NRSBhc3NlbWJseSA9PiByZWYgTXVzdCkpDQoNCgkgICAgdmFs
IF8gDQoJICAgICAgPSBMaXN0LmZvcmVhY2gNCgkgICAgICAgIChibG9ja3MsDQoJCSBmbiBCbG9j
ay5UIHt0cmFuc2ZlciwuLi59DQoJCSAgPT4gTGlzdC5mb3JlYWNoDQoJCSAgICAgKFRyYW5zZmVy
LnRhcmdldHMgdHJhbnNmZXIsDQoJCSAgICAgIGZuIGxhYmVsIA0KCQkgICAgICAgPT4gaW5jIHts
YWJlbCA9IGxhYmVsLA0KCQkJICAgICAgIGp1bXBJbmZvID0ganVtcEluZm99KSkNCgkgIGluDQoJ
ICAgIGp1bXBJbmZvDQoJICBlbmQNCg0KICAgICAgdmFsIChjb21wdXRlSnVtcEluZm8sIGNvbXB1
dGVKdW1wSW5mb19tc2cpDQoJPSB0cmFjZXINCiAgICAgICAgICAiY29tcHV0ZUp1bXBJbmZvIg0K
CSAgY29tcHV0ZUp1bXBJbmZvDQoNCiAgICAgIGZ1biB2ZXJpZnlKdW1wSW5mbyB7YmxvY2tzOiBC
bG9jay50IGxpc3QsIA0KCQkJICBleHBvcnRzOiBMYWJlbC50IGxpc3QsDQoJCQkgIGJsb2NrX3By
ZTogTGFiZWwudCAtPiBBc3NlbWJseS50IGxpc3Qgb3B0aW9uLA0KCQkJICBqdW1wSW5mbzoge2dl
dDogTGFiZWwudCAtPiBzdGF0dXMgcmVmfX0NCgk9IGxldA0KCSAgICB2YWwganVtcEluZm8nID0g
Y29tcHV0ZUp1bXBJbmZvIHtibG9ja3MgPSBibG9ja3MsDQoJCQkJCSAgICAgZXhwb3J0cyA9IGV4
cG9ydHMsDQoJCQkJCSAgICAgYmxvY2tfcHJlID0gYmxvY2tfcHJlfQ0KDQoJICAgIHZhbCB2ZXJp
ZmllZCANCgkgICAgICA9IExpc3QuZm9yYWxsDQoJICAgICAgICAoYmxvY2tzLA0KCQkgZm4gQmxv
Y2suVCB7bGFiZWwsLi4ufQ0KCQkgID0+IGlmICEoKCNnZXQganVtcEluZm8nKSBsYWJlbCkgPSAh
KCgjZ2V0IGp1bXBJbmZvKSBsYWJlbCkNCgkJICAgICAgIHRoZW4gdHJ1ZQ0KCQkgICAgICAgZWxz
ZSBmYWxzZSkNCgkgIGluDQoJICAgIHZlcmlmaWVkDQoJICBlbmQNCg0KICAgICAgdmFsICh2ZXJp
ZnlKdW1wSW5mbywgdmVyaWZ5SnVtcEluZm9fbXNnKQ0KCT0gdHJhY2VyDQogICAgICAgICAgInZl
cmlmeUp1bXBJbmZvIg0KCSAgdmVyaWZ5SnVtcEluZm8NCiAgICBlbmQNCg0KICBzdHJ1Y3R1cmUg
UGVlcGhvbGVCbG9jayA9DQogICAgc3RydWN0DQogICAgICBzdHJ1Y3R1cmUgUGVlcGhvbGUNCgk9
IFBlZXBob2xlKHR5cGUgbGFiZWxfdHlwZSA9IExhYmVsLnQNCgkJICAgdHlwZSBwcm9maWxlSW5m
b190eXBlID0gUHJvZmlsZUluZm8udA0KCQkgICB0eXBlIHN0YXRlbWVudF90eXBlID0gQXNzZW1i
bHkudA0KCQkgICB0eXBlIHRyYW5zZmVyX3R5cGUgPSBUcmFuc2Zlci50DQoJCSAgIGRhdGF0eXBl
IGJsb2NrID0gZGF0YXR5cGUgQmxvY2sudCkNCiAgICAgIG9wZW4gUGVlcGhvbGUNCg0KICAgICAg
ZnVuIG1ha2VfY2FsbGJhY2tfbXNnIG5hbWUNCgk9IGxldA0KCSAgICB2YWwgY291bnQgPSByZWYg
MA0KCSAgICB2YWwgdG90YWwgPSByZWYgMA0KCSAgICB2YWwgY2FsbGJhY2sgPSBmbiB0cnVlID0+
IChJbnQuaW5jIGNvdW50OyBJbnQuaW5jIHRvdGFsKQ0KCSAgICAgICAgICAgICAgICAgICAgfCBm
YWxzZSA9PiBJbnQuaW5jIHRvdGFsDQoJICAgIHZhbCBtc2cgPSBmbiAoKSA9PiBDb250cm9sLm1l
c3NhZ2VTdHIgDQoJICAgICAgICAgICAgICAgICAgICAgICAoY29uY2F0IFtuYW1lLCANCgkJCQkJ
IjogIiwgSW50LnRvU3RyaW5nICghY291bnQpLA0KCQkJCQkiIC8gIiwgSW50LnRvU3RyaW5nICgh
dG90YWwpXSkNCgkgIGluDQoJICAgIChjYWxsYmFjayxtc2cpDQoJICBlbmQNCg0KICAgICAgdmFs
IGlzQ29tbWVudCA6IHN0YXRlbWVudF90eXBlIC0+IGJvb2wNCgk9IGZuIEFzc2VtYmx5LkNvbW1l
bnQgXw0KCSAgID0+IHRydWUNCgkgICB8IF8gPT4gZmFsc2UNCg0KICAgICAgbG9jYWwNCgl2YWwg
aXNJbnN0cnVjdGlvbk1PViA6IHN0YXRlbWVudF90eXBlIC0+IGJvb2wNCgkgID0gZm4gQXNzZW1i
bHkuSW5zdHJ1Y3Rpb24gKEluc3RydWN0aW9uLk1PVg0KCQkJCSAgICAgey4uLn0pDQoJICAgICA9
PiB0cnVlDQoJICAgICB8IF8gPT4gZmFsc2UNCg0KCXZhbCBpc0luc3RydWN0aW9uQmluQUxNRCA6
IHN0YXRlbWVudF90eXBlIC0+IGJvb2wNCgkgID0gZm4gQXNzZW1ibHkuSW5zdHJ1Y3Rpb24gKElu
c3RydWN0aW9uLkJpbkFMIHsuLi59KQ0KCSAgICAgPT4gdHJ1ZQ0KCSAgICAgfCBBc3NlbWJseS5J
bnN0cnVjdGlvbiAoSW5zdHJ1Y3Rpb24ucE1EIHsuLi59KQ0KCSAgICAgPT4gdHJ1ZQ0KCSAgICAg
fCBfID0+IGZhbHNlDQoNCgl2YWwgdGVtcGxhdGUgOiB0ZW1wbGF0ZQ0KCSAgPSB7c3RhcnQgPSBF
bXB0eU9yTm9uRW1wdHksDQoJICAgICBzdGF0ZW1lbnRzID0gW09uZSBpc0luc3RydWN0aW9uTU9W
LA0KCQkJICAgQWxsIGlzQ29tbWVudCwNCgkJCSAgIE9uZSBpc0luc3RydWN0aW9uQmluQUxNRF0s
DQoJICAgICBmaW5pc2ggPSBFbXB0eU9yTm9uRW1wdHksDQoJICAgICB0cmFuc2ZlciA9IGZuIF8g
PT4gdHJ1ZX0NCg0KCXZhbCByZXdyaXRlciA6IHJld3JpdGVyDQoJICA9IGZuIHtsYWJlbCwNCgkJ
cHJvZmlsZUluZm8sDQoJCXN0YXJ0LCANCgkJc3RhdGVtZW50cyBhcw0KCQlbW0Fzc2VtYmx5Lklu
c3RydWN0aW9uIChJbnN0cnVjdGlvbi5NT1YNCgkJCQkJe3NyYyA9IHNyYzEsDQoJCQkJCSBkc3Qg
PSBkc3QxLCANCgkJCQkJIHNpemUgPSBzaXplMX0pXSwNCgkJIGNvbW1lbnRzLA0KCQkgW0Fzc2Vt
Ymx5Lkluc3RydWN0aW9uIChJbnN0cnVjdGlvbi5CaW5BTA0KCQkJCQl7b3BlciA9IG9wZXIyLA0K
CQkJCQkgc3JjID0gc3JjMiwNCgkJCQkJIGRzdCA9IGRzdDIsDQoJCQkJCSBzaXplID0gc2l6ZTJ9
KV1dLA0KCQlmaW5pc2gsIA0KCQl0cmFuc2Zlcn0NCgkgICAgID0+IGlmIFNpemUuZXEoc2l6ZTEs
IHNpemUyKSBhbmRhbHNvDQoJICAgICAgICAgICBPcGVyYW5kLmVxKGRzdDEsIGRzdDIpIGFuZGFs
c28NCgkJICAgT3BlcmFuZC5lcShzcmMxLCBzcmMyKQ0KCQkgIHRoZW4gbGV0DQoJCQkgdmFsIHN0
YXRlbWVudHMNCgkJCSAgID0gKEFzc2VtYmx5Lmluc3RydWN0aW9uX21vdg0KCQkJICAgICAge3Ny
YyA9IHNyYzEsDQoJCQkgICAgICAgZHN0ID0gZHN0MSwNCgkJCSAgICAgICBzaXplID0gc2l6ZTF9
KTo6DQoJCQkgICAgIChBc3NlbWJseS5pbnN0cnVjdGlvbl9iaW5hbA0KCQkJICAgICAge29wZXIg
PSBvcGVyMiwNCgkJCSAgICAgICBzcmMgPSBkc3QxLA0KCQkJICAgICAgIGRzdCA9IGRzdDIsDQoJ
CQkgICAgICAgc2l6ZSA9IHNpemUxfSk6Og0KCQkJICAgICBmaW5pc2gNCg0KCQkJIHZhbCBzdGF0
ZW1lbnRzDQoJCQkgICA9IExpc3QuZm9sZChzdGFydCwNCgkJCQkgICAgICAgTGlzdC5jb25jYXQg
W2NvbW1lbnRzLCANCgkJCQkJCSAgICBzdGF0ZW1lbnRzXSwNCgkJCQkgICAgICAgb3AgOjopDQoJ
CSAgICAgICBpbg0KCQkJIFNPTUUgKEJsb2NrLlQNCgkJCSAgICAgICB7bGFiZWwgPSBsYWJlbCwN
CgkJCQlwcm9maWxlSW5mbyA9IHByb2ZpbGVJbmZvLA0KCQkJCXN0YXRlbWVudHMgPSBzdGF0ZW1l
bnRzLA0KCQkJCXRyYW5zZmVyID0gdHJhbnNmZXJ9KQ0KCQkgICAgICAgZW5kDQoJCSAgZWxzZSBO
T05FDQoJICAgICB8IHtsYWJlbCwNCgkJcHJvZmlsZUluZm8sDQoJCXN0YXJ0LCANCgkJc3RhdGVt
ZW50cyBhcw0KCQlbW0Fzc2VtYmx5Lkluc3RydWN0aW9uIChJbnN0cnVjdGlvbi5NT1YNCgkJCQkJ
e3NyYyA9IHNyYzEsDQoJCQkJCSBkc3QgPSBkc3QxLCANCgkJCQkJIHNpemUgPSBzaXplMX0pXSwN
CgkJIGNvbW1lbnRzLA0KCQkgW0Fzc2VtYmx5Lkluc3RydWN0aW9uIChJbnN0cnVjdGlvbi5wTUQN
CgkJCQkJe29wZXIgPSBvcGVyMiwNCgkJCQkJIHNyYyA9IHNyYzIsDQoJCQkJCSBkc3QgPSBkc3Qy
LA0KCQkJCQkgc2l6ZSA9IHNpemUyfSldXSwNCgkJZmluaXNoLCANCgkJdHJhbnNmZXJ9DQoJICAg
ICA9PiBpZiBTaXplLmVxKHNpemUxLCBzaXplMikgYW5kYWxzbw0KCSAgICAgICAgICAgT3BlcmFu
ZC5lcShkc3QxLCBkc3QyKSBhbmRhbHNvDQoJCSAgIE9wZXJhbmQuZXEoc3JjMSwgc3JjMikNCgkJ
ICB0aGVuIGxldA0KCQkJIHZhbCBzdGF0ZW1lbnRzDQoJCQkgICA9IChBc3NlbWJseS5pbnN0cnVj
dGlvbl9tb3YNCgkJCSAgICAgIHtzcmMgPSBzcmMxLA0KCQkJICAgICAgIGRzdCA9IGRzdDEsDQoJ
CQkgICAgICAgc2l6ZSA9IHNpemUxfSk6Og0KCQkJICAgICAoQXNzZW1ibHkuaW5zdHJ1Y3Rpb25f
cG1kDQoJCQkgICAgICB7b3BlciA9IG9wZXIyLA0KCQkJICAgICAgIHNyYyA9IGRzdDEsDQoJCQkg
ICAgICAgZHN0ID0gZHN0MiwNCgkJCSAgICAgICBzaXplID0gc2l6ZTF9KTo6DQoJCQkgICAgIGZp
bmlzaA0KDQoJCQkgdmFsIHN0YXRlbWVudHMNCgkJCSAgID0gTGlzdC5mb2xkKHN0YXJ0LA0KCQkJ
CSAgICAgICBMaXN0LmNvbmNhdCBbY29tbWVudHMsIA0KCQkJCQkJICAgIHN0YXRlbWVudHNdLA0K
CQkJCSAgICAgICBvcCA6OikNCgkJICAgICAgIGluDQoJCQkgU09NRSAoQmxvY2suVA0KCQkJICAg
ICAgIHtsYWJlbCA9IGxhYmVsLA0KCQkJCXByb2ZpbGVJbmZvID0gcHJvZmlsZUluZm8sDQoJCQkJ
c3RhdGVtZW50cyA9IHN0YXRlbWVudHMsDQoJCQkJdHJhbnNmZXIgPSB0cmFuc2Zlcn0pDQoJCSAg
ICAgICBlbmQNCgkJICBlbHNlIE5PTkUNCgkgICAgIHwgXyA9PiBFcnJvci5idWcgIlBlZXBob2xl
OiBlbGltQmluQUxNRERvdWJsZSINCg0KCXZhbCAoY2FsbGJhY2ssZWxpbUJpbkFMTUREb3VibGVf
bXNnKSANCgkgID0gbWFrZV9jYWxsYmFja19tc2cgImVsaW1CaW5BTE1ERG91YmxlIg0KICAgICAg
aW4NCgl2YWwgZWxpbUJpbkFMTUREb3VibGUgOiBvcHRpbWl6YXRpb24NCgkgID0ge3RlbXBsYXRl
ID0gdGVtcGxhdGUsDQoJICAgICByZXdyaXRlciA9IHJld3JpdGVyLA0KCSAgICAgY2FsbGJhY2sg
PSBjYWxsYmFja30NCgl2YWwgZWxpbUJpbkFMTUREb3VibGVfbXNnID0gZWxpbUJpbkFMTUREb3Vi
bGVfbXNnDQogICAgICBlbmQNCg0KICAgICAgbG9jYWwNCgl2YWwgaXNJbnN0cnVjdGlvbkZNT1Yg
OiBzdGF0ZW1lbnRfdHlwZSAtPiBib29sDQoJICA9IGZuIEFzc2VtYmx5Lkluc3RydWN0aW9uIChJ
bnN0cnVjdGlvbi5wRk1PVg0KCQkJCSAgICAgey4uLn0pDQoJICAgICA9PiB0cnVlDQoJICAgICB8
IF8gPT4gZmFsc2UNCg0KCXZhbCBpc0luc3RydWN0aW9uRkJpbkEgOiBzdGF0ZW1lbnRfdHlwZSAt
PiBib29sDQoJICA9IGZuIEFzc2VtYmx5Lkluc3RydWN0aW9uIChJbnN0cnVjdGlvbi5wRkJpbkEg
ey4uLn0pDQoJICAgICA9PiB0cnVlDQoJICAgICB8IEFzc2VtYmx5Lkluc3RydWN0aW9uIChJbnN0
cnVjdGlvbi5wRkJpbkFTIHsuLi59KQ0KCSAgICAgPT4gdHJ1ZQ0KCSAgICAgfCBBc3NlbWJseS5J
bnN0cnVjdGlvbiAoSW5zdHJ1Y3Rpb24ucEZCaW5BU1Agey4uLn0pDQoJICAgICA9PiB0cnVlDQoJ
ICAgICB8IF8gPT4gZmFsc2UNCg0KCXZhbCB0ZW1wbGF0ZSA6IHRlbXBsYXRlDQoJICA9IHtzdGFy
dCA9IEVtcHR5T3JOb25FbXB0eSwNCgkgICAgIHN0YXRlbWVudHMgPSBbT25lIGlzSW5zdHJ1Y3Rp
b25GTU9WLA0KCQkJICAgQWxsIGlzQ29tbWVudCwNCgkJCSAgIE9uZSBpc0luc3RydWN0aW9uRkJp
bkFdLA0KCSAgICAgZmluaXNoID0gRW1wdHlPck5vbkVtcHR5LA0KCSAgICAgdHJhbnNmZXIgPSBm
biBfID0+IHRydWV9DQoNCgl2YWwgcmV3cml0ZXIgOiByZXdyaXRlcg0KCSAgPSBmbiB7bGFiZWws
DQoJCXByb2ZpbGVJbmZvLA0KCQlzdGFydCwgDQoJCXN0YXRlbWVudHMgYXMNCgkJW1tBc3NlbWJs
eS5JbnN0cnVjdGlvbiAoSW5zdHJ1Y3Rpb24ucEZNT1YNCgkJCQkJe3NyYyA9IHNyYzEsDQoJCQkJ
CSBkc3QgPSBkc3QxLCANCgkJCQkJIHNpemUgPSBzaXplMX0pXSwNCgkJIGNvbW1lbnRzLA0KCQkg
W0Fzc2VtYmx5Lkluc3RydWN0aW9uIChJbnN0cnVjdGlvbi5wRkJpbkENCgkJCQkJe29wZXIgPSBv
cGVyMiwNCgkJCQkJIHNyYyA9IHNyYzIsDQoJCQkJCSBkc3QgPSBkc3QyLA0KCQkJCQkgc2l6ZSA9
IHNpemUyfSldXSwNCgkJZmluaXNoLCANCgkJdHJhbnNmZXJ9DQoJICAgICA9PiBpZiBTaXplLmVx
KHNpemUxLCBzaXplMikgYW5kYWxzbw0KCSAgICAgICAgICAgT3BlcmFuZC5lcShkc3QxLCBkc3Qy
KSBhbmRhbHNvDQoJCSAgIE9wZXJhbmQuZXEoc3JjMSwgc3JjMikNCgkJICB0aGVuIGxldA0KCQkJ
IHZhbCBzdGF0ZW1lbnRzDQoJCQkgICA9IChBc3NlbWJseS5pbnN0cnVjdGlvbl9wZm1vdg0KCQkJ
ICAgICAge3NyYyA9IHNyYzEsDQoJCQkgICAgICAgZHN0ID0gZHN0MSwNCgkJCSAgICAgICBzaXpl
ID0gc2l6ZTF9KTo6DQoJCQkgICAgIChBc3NlbWJseS5pbnN0cnVjdGlvbl9wZmJpbmENCgkJCSAg
ICAgIHtvcGVyID0gb3BlcjIsDQoJCQkgICAgICAgc3JjID0gZHN0MSwNCgkJCSAgICAgICBkc3Qg
PSBkc3QyLA0KCQkJICAgICAgIHNpemUgPSBzaXplMX0pOjoNCgkJCSAgICAgZmluaXNoDQoNCgkJ
CSB2YWwgc3RhdGVtZW50cw0KCQkJICAgPSBMaXN0LmZvbGQoc3RhcnQsDQoJCQkJICAgICAgIExp
c3QuY29uY2F0IFtjb21tZW50cywgDQoJCQkJCQkgICAgc3RhdGVtZW50c10sDQoJCQkJICAgICAg
IG9wIDo6KQ0KCQkgICAgICAgaW4NCgkJCSBTT01FIChCbG9jay5UDQoJCQkgICAgICAge2xhYmVs
ID0gbGFiZWwsDQoJCQkJcHJvZmlsZUluZm8gPSBwcm9maWxlSW5mbywNCgkJCQlzdGF0ZW1lbnRz
ID0gc3RhdGVtZW50cywNCgkJCQl0cmFuc2ZlciA9IHRyYW5zZmVyfSkNCgkJICAgICAgIGVuZA0K
CQkgIGVsc2UgTk9ORQ0KCSAgICAgfCB7bGFiZWwsDQoJCXByb2ZpbGVJbmZvLCANCgkJc3RhcnQs
IA0KCQlzdGF0ZW1lbnRzIGFzDQoJCVtbQXNzZW1ibHkuSW5zdHJ1Y3Rpb24gKEluc3RydWN0aW9u
LnBGTU9WDQoJCQkJCXtzcmMgPSBzcmMxLA0KCQkJCQkgZHN0ID0gZHN0MSwgDQoJCQkJCSBzaXpl
ID0gc2l6ZTF9KV0sDQoJCSBjb21tZW50cywNCgkJIFtBc3NlbWJseS5JbnN0cnVjdGlvbiAoSW5z
dHJ1Y3Rpb24ucEZCaW5BUw0KCQkJCQl7b3BlciA9IG9wZXIyLA0KCQkJCQkgc3JjID0gc3JjMiwN
CgkJCQkJIGRzdCA9IGRzdDIsDQoJCQkJCSBzaXplID0gc2l6ZTJ9KV1dLA0KCQlmaW5pc2gsIA0K
CQl0cmFuc2Zlcn0NCgkgICAgID0+IGlmIFNpemUuZXEoc2l6ZTEsIHNpemUyKSBhbmRhbHNvDQoJ
ICAgICAgICAgICBPcGVyYW5kLmVxKGRzdDEsIGRzdDIpIGFuZGFsc28NCgkJICAgT3BlcmFuZC5l
cShzcmMxLCBzcmMyKQ0KCQkgIHRoZW4gbGV0DQoJCQkgdmFsIHN0YXRlbWVudHMNCgkJCSAgID0g
KEFzc2VtYmx5Lmluc3RydWN0aW9uX3BmbW92DQoJCQkgICAgICB7c3JjID0gc3JjMSwNCgkJCSAg
ICAgICBkc3QgPSBkc3QxLA0KCQkJICAgICAgIHNpemUgPSBzaXplMX0pOjoNCgkJCSAgICAgKEFz
c2VtYmx5Lmluc3RydWN0aW9uX3BmYmluYXMNCgkJCSAgICAgIHtvcGVyID0gb3BlcjIsDQoJCQkg
ICAgICAgc3JjID0gZHN0MSwNCgkJCSAgICAgICBkc3QgPSBkc3QyLA0KCQkJICAgICAgIHNpemUg
PSBzaXplMX0pOjoNCgkJCSAgICAgZmluaXNoDQoNCgkJCSB2YWwgc3RhdGVtZW50cw0KCQkJICAg
PSBMaXN0LmZvbGQoc3RhcnQsDQoJCQkJICAgICAgIExpc3QuY29uY2F0IFtjb21tZW50cywNCgkJ
CQkJCSAgICBzdGF0ZW1lbnRzXSwNCgkJCQkgICAgICAgb3AgOjopDQoJCSAgICAgICBpbg0KCQkJ
IFNPTUUgKEJsb2NrLlQNCgkJCSAgICAgICB7bGFiZWwgPSBsYWJlbCwNCgkJCQlwcm9maWxlSW5m
byA9IHByb2ZpbGVJbmZvLA0KCQkJCXN0YXRlbWVudHMgPSBzdGF0ZW1lbnRzLA0KCQkJCXRyYW5z
ZmVyID0gdHJhbnNmZXJ9KQ0KCQkgICAgICAgZW5kDQoJCSAgZWxzZSBOT05FDQoJICAgICB8IHts
YWJlbCwNCgkgICAgICAgIHByb2ZpbGVJbmZvLA0KCQlzdGFydCwgDQoJCXN0YXRlbWVudHMgYXMN
CgkJW1tBc3NlbWJseS5JbnN0cnVjdGlvbiAoSW5zdHJ1Y3Rpb24ucEZNT1YNCgkJCQkJe3NyYyA9
IHNyYzEsDQoJCQkJCSBkc3QgPSBkc3QxLCANCgkJCQkJIHNpemUgPSBzaXplMX0pXSwNCgkJIGNv
bW1lbnRzLA0KCQkgW0Fzc2VtYmx5Lkluc3RydWN0aW9uIChJbnN0cnVjdGlvbi5wRkJpbkFTUA0K
CQkJCQl7b3BlciA9IG9wZXIyLA0KCQkJCQkgc3JjID0gc3JjMiwNCgkJCQkJIGRzdCA9IGRzdDIs
DQoJCQkJCSBzaXplID0gc2l6ZTJ9KV1dLA0KCQlmaW5pc2gsIA0KCQl0cmFuc2Zlcn0NCgkgICAg
ID0+IGlmIFNpemUuZXEoc2l6ZTEsIHNpemUyKSBhbmRhbHNvDQoJICAgICAgICAgICBPcGVyYW5k
LmVxKGRzdDEsIGRzdDIpIGFuZGFsc28NCgkJICAgT3BlcmFuZC5lcShzcmMxLCBzcmMyKQ0KCQkg
IHRoZW4gbGV0DQoJCQkgdmFsIHN0YXRlbWVudHMNCgkJCSAgID0gKEFzc2VtYmx5Lmluc3RydWN0
aW9uX3BmbW92DQoJCQkgICAgICB7c3JjID0gc3JjMSwNCgkJCSAgICAgICBkc3QgPSBkc3QxLA0K
CQkJICAgICAgIHNpemUgPSBzaXplMX0pOjoNCgkJCSAgICAgKEFzc2VtYmx5Lmluc3RydWN0aW9u
X3BmYmluYXNwDQoJCQkgICAgICB7b3BlciA9IG9wZXIyLA0KCQkJICAgICAgIHNyYyA9IGRzdDEs
DQoJCQkgICAgICAgZHN0ID0gZHN0MiwNCgkJCSAgICAgICBzaXplID0gc2l6ZTF9KTo6DQoJCQkg
ICAgIGZpbmlzaA0KDQoJCQkgdmFsIHN0YXRlbWVudHMNCgkJCSAgID0gTGlzdC5mb2xkKHN0YXJ0
LA0KCQkJCSAgICAgICBMaXN0LmNvbmNhdCBbY29tbWVudHMsDQoJCQkJCQkgICAgc3RhdGVtZW50
c10sDQoJCQkJICAgICAgIG9wIDo6KQ0KCQkgICAgICAgaW4NCgkJCSBTT01FIChCbG9jay5UDQoJ
CQkgICAgICAge2xhYmVsID0gbGFiZWwsDQoJCQkJcHJvZmlsZUluZm8gPSBwcm9maWxlSW5mbywN
CgkJCQlzdGF0ZW1lbnRzID0gc3RhdGVtZW50cywNCgkJCQl0cmFuc2ZlciA9IHRyYW5zZmVyfSkN
CgkJICAgICAgIGVuZA0KCQkgIGVsc2UgTk9ORQ0KCSAgICAgfCBfID0+IEVycm9yLmJ1ZyAiUGVl
cGhvbGU6IGVsaW1GbHRCaW5BRG91YmxlIg0KDQoJdmFsIChjYWxsYmFjayxlbGltRmx0QmluQURv
dWJsZV9tc2cpIA0KCSAgPSBtYWtlX2NhbGxiYWNrX21zZyAiZWxpbUZsdEJpbkFEb3VibGUiDQog
ICAgICBpbg0KCXZhbCBlbGltRmx0QmluQURvdWJsZSA6IG9wdGltaXphdGlvbg0KCSAgPSB7dGVt
cGxhdGUgPSB0ZW1wbGF0ZSwNCgkgICAgIHJld3JpdGVyID0gcmV3cml0ZXIsDQoJICAgICBjYWxs
YmFjayA9IGNhbGxiYWNrfQ0KCXZhbCBlbGltRmx0QmluQURvdWJsZV9tc2cgPSBlbGltRmx0Qmlu
QURvdWJsZV9tc2cNCiAgICAgIGVuZA0KDQogICAgICBsb2NhbA0KCXZhbCBpc0luc3RydWN0aW9u
TU9WX3NyY0ltbWVkaWF0ZSA6IHN0YXRlbWVudF90eXBlIC0+IGJvb2wNCgkgID0gZm4gQXNzZW1i
bHkuSW5zdHJ1Y3Rpb24gKEluc3RydWN0aW9uLk1PViANCgkJCQkgICAgIHtzcmMgPSBPcGVyYW5k
LkltbWVkaWF0ZSBpbW1lZGlhdGUsDQoJCQkJICAgICAgLi4ufSkNCgkgICAgID0+IHRydWUNCgkg
ICAgIHwgXyA9PiBmYWxzZQkJCQkgICAgIA0KDQoJdmFsIGlzSW5zdHJ1Y3Rpb25CaW5BTE1EX29w
ZXJDb21tdXRlIDogc3RhdGVtZW50X3R5cGUgLT4gYm9vbA0KCSAgPSBmbiBBc3NlbWJseS5JbnN0
cnVjdGlvbiAoSW5zdHJ1Y3Rpb24uQmluQUwNCgkJCQkgICAgIHtvcGVyLA0KCQkJCSAgICAgIC4u
Ln0pDQoJICAgICA9PiAob3BlciA9IEluc3RydWN0aW9uLkFERCkNCgkgICAgICAgIG9yZWxzZQ0K
CQkob3BlciA9IEluc3RydWN0aW9uLkFEQykNCgkJb3JlbHNlDQoJCShvcGVyID0gSW5zdHJ1Y3Rp
b24uQU5EKQ0KCQlvcmVsc2UNCgkJKG9wZXIgPSBJbnN0cnVjdGlvbi5PUikNCgkJb3JlbHNlDQoJ
CShvcGVyID0gSW5zdHJ1Y3Rpb24uWE9SKQ0KCSAgICAgfCBBc3NlbWJseS5JbnN0cnVjdGlvbiAo
SW5zdHJ1Y3Rpb24ucE1EDQoJCQkJICAgICB7b3BlciwNCgkJCQkgICAgICAuLi59KQ0KCSAgICAg
PT4gKG9wZXIgPSBJbnN0cnVjdGlvbi5JTVVMKQ0KCSAgICAgICAgb3JlbHNlDQoJCShvcGVyID0g
SW5zdHJ1Y3Rpb24uTVVMKQ0KCSAgICAgfCBfID0+IGZhbHNlDQoNCgl2YWwgdGVtcGxhdGUgOiB0
ZW1wbGF0ZQ0KCSAgPSB7c3RhcnQgPSBFbXB0eU9yTm9uRW1wdHksDQoJICAgICBzdGF0ZW1lbnRz
ID0gW09uZSBpc0luc3RydWN0aW9uTU9WX3NyY0ltbWVkaWF0ZSwNCgkJCSAgIEFsbCBpc0NvbW1l
bnQsDQoJCQkgICBPbmUgaXNJbnN0cnVjdGlvbkJpbkFMTURfb3BlckNvbW11dGVdLA0KCSAgICAg
ZmluaXNoID0gRW1wdHlPck5vbkVtcHR5LA0KCSAgICAgdHJhbnNmZXIgPSBmbiBfID0+IHRydWV9
DQoNCgl2YWwgcmV3cml0ZXIgOiByZXdyaXRlcg0KCSAgPSBmbiB7bGFiZWwsDQoJCXByb2ZpbGVJ
bmZvLA0KCQlzdGFydCwgDQoJCXN0YXRlbWVudHMgYXMNCgkJW1tBc3NlbWJseS5JbnN0cnVjdGlv
biAoSW5zdHJ1Y3Rpb24uTU9WDQoJCQkJCXtzcmMgPSBzcmMxLCANCgkJCQkJIGRzdCA9IGRzdDEs
IA0KCQkJCQkgc2l6ZSA9IHNpemUxfSldLA0KCQkgY29tbWVudHMsDQoJCSBbQXNzZW1ibHkuSW5z
dHJ1Y3Rpb24gKEluc3RydWN0aW9uLkJpbkFMDQoJCQkJCXtvcGVyID0gb3BlcjIsDQoJCQkJCSBz
cmMgPSBzcmMyLA0KCQkJCQkgZHN0ID0gZHN0MiwNCgkJCQkJIHNpemUgPSBzaXplMn0pXV0sDQoJ
CWZpbmlzaCwgDQoJCXRyYW5zZmVyfQ0KCSAgICAgPT4gaWYgU2l6ZS5lcShzaXplMSwgc2l6ZTIp
IGFuZGFsc28NCgkgICAgICAgICAgIE9wZXJhbmQuZXEoZHN0MSwgZHN0MikNCgkJICB0aGVuIGNh
c2UgKHNyYzEsIHNyYzIpDQoJCQkgb2YgKE9wZXJhbmQuSW1tZWRpYXRlIF8sIE9wZXJhbmQuSW1t
ZWRpYXRlIF8pDQoJCQkgID0+IE5PTkUNCgkJCSAgfCAoT3BlcmFuZC5JbW1lZGlhdGUgXywgXykN
CgkJCSAgPT4gbGV0DQoJCQkgICAgICAgdmFsIHN0YXRlbWVudHMNCgkJCQkgPSAoQXNzZW1ibHku
aW5zdHJ1Y3Rpb25fbW92DQoJCQkJICAgIHtzcmMgPSBzcmMyLA0KCQkJCSAgICAgZHN0ID0gZHN0
MSwNCgkJCQkgICAgIHNpemUgPSBzaXplMX0pOjoNCgkJCQkgICAoQXNzZW1ibHkuaW5zdHJ1Y3Rp
b25fYmluYWwNCgkJCQkgICAge29wZXIgPSBvcGVyMiwNCgkJCQkgICAgIHNyYyA9IHNyYzEsDQoJ
CQkJICAgICBkc3QgPSBkc3QyLA0KCQkJCSAgICAgc2l6ZSA9IHNpemUyfSk6Og0KCQkJCSAgIGZp
bmlzaA0KDQoJCQkgICAgICAgdmFsIHN0YXRlbWVudHMNCgkJCQkgPSBMaXN0LmZvbGQoc3RhcnQs
DQoJCQkJCSAgICAgTGlzdC5jb25jYXQgW2NvbW1lbnRzLA0KCQkJCQkJCSAgc3RhdGVtZW50c10s
DQoJCQkJCSAgICAgb3AgOjopDQoJCQkgICAgIGluDQoJCQkgICAgICAgU09NRSAoQmxvY2suVA0K
CQkJCSAgICAge2xhYmVsID0gbGFiZWwsDQoJCQkJICAgICAgcHJvZmlsZUluZm8gPSBwcm9maWxl
SW5mbywNCgkJCQkgICAgICBzdGF0ZW1lbnRzID0gc3RhdGVtZW50cywNCgkJCQkgICAgICB0cmFu
c2ZlciA9IHRyYW5zZmVyfSkNCgkJCSAgICAgZW5kDQoJCQkgIHwgXyA9PiBOT05FDQoJCSAgZWxz
ZSBOT05FDQoJICAgICB8IHtsYWJlbCwNCgkJcHJvZmlsZUluZm8sDQoJCXN0YXJ0LCANCgkJc3Rh
dGVtZW50cyBhcw0KCQlbW0Fzc2VtYmx5Lkluc3RydWN0aW9uIChJbnN0cnVjdGlvbi5NT1YNCgkJ
CQkJe3NyYyA9IHNyYzEsIA0KCQkJCQkgZHN0ID0gZHN0MSwgDQoJCQkJCSBzaXplID0gc2l6ZTF9
KV0sDQoJCSBjb21tZW50cywNCgkJIFtBc3NlbWJseS5JbnN0cnVjdGlvbiAoSW5zdHJ1Y3Rpb24u
cE1EDQoJCQkJCXtvcGVyID0gb3BlcjIsDQoJCQkJCSBzcmMgPSBzcmMyLA0KCQkJCQkgZHN0ID0g
ZHN0MiwNCgkJCQkJIHNpemUgPSBzaXplMn0pXV0sDQoJCWZpbmlzaCwgDQoJCXRyYW5zZmVyfQ0K
CSAgICAgPT4gaWYgU2l6ZS5lcShzaXplMSwgc2l6ZTIpIGFuZGFsc28NCgkgICAgICAgICAgIE9w
ZXJhbmQuZXEoZHN0MSwgZHN0MikNCgkJICB0aGVuIGNhc2UgKHNyYzEsIHNyYzIpDQoJCQkgb2Yg
KE9wZXJhbmQuSW1tZWRpYXRlIF8sIE9wZXJhbmQuSW1tZWRpYXRlIF8pDQoJCQkgID0+IE5PTkUN
CgkJCSAgfCAoT3BlcmFuZC5JbW1lZGlhdGUgXywgXykNCgkJCSAgPT4gbGV0DQoJCQkgICAgICAg
dmFsIHN0YXRlbWVudHMNCgkJCQkgPSAoQXNzZW1ibHkuaW5zdHJ1Y3Rpb25fbW92DQoJCQkJICAg
IHtzcmMgPSBzcmMyLA0KCQkJCSAgICAgZHN0ID0gZHN0MSwNCgkJCQkgICAgIHNpemUgPSBzaXpl
MX0pOjoNCgkJCQkgICAoQXNzZW1ibHkuaW5zdHJ1Y3Rpb25fcG1kDQoJCQkJICAgIHtvcGVyID0g
b3BlcjIsDQoJCQkJICAgICBzcmMgPSBzcmMxLA0KCQkJCSAgICAgZHN0ID0gZHN0MiwNCgkJCQkg
ICAgIHNpemUgPSBzaXplMn0pOjoNCgkJCQkgICBmaW5pc2gNCg0KCQkJICAgICAgIHZhbCBzdGF0
ZW1lbnRzDQoJCQkJID0gTGlzdC5mb2xkKHN0YXJ0LA0KCQkJCQkgICAgIExpc3QuY29uY2F0IFtj
b21tZW50cywNCgkJCQkJCQkgIHN0YXRlbWVudHNdLA0KCQkJCQkgICAgIG9wIDo6KQ0KCQkJICAg
ICBpbg0KCQkJICAgICAgIFNPTUUgKEJsb2NrLlQNCgkJCQkgICAgIHtsYWJlbCA9IGxhYmVsLA0K
CQkJCSAgICAgIHByb2ZpbGVJbmZvID0gcHJvZmlsZUluZm8sDQoJCQkJICAgICAgc3RhdGVtZW50
cyA9IHN0YXRlbWVudHMsDQoJCQkJICAgICAgdHJhbnNmZXIgPSB0cmFuc2Zlcn0pDQoJCQkgICAg
IGVuZA0KCQkJICB8IF8gPT4gTk9ORQ0KCQkgIGVsc2UgTk9ORQ0KCSAgICAgfCBfID0+IEVycm9y
LmJ1ZyAiUGVlcGhvbGU6IGNvbW11dGVCaW5BTE1EIg0KDQoJdmFsIChjYWxsYmFjayxjb21tdXRl
QmluQUxNRF9tc2cpIA0KCSAgPSBtYWtlX2NhbGxiYWNrX21zZyAiY29tbXV0ZUJpbkFMTUQiDQog
ICAgICBpbg0KCXZhbCBjb21tdXRlQmluQUxNRCA6IG9wdGltaXphdGlvbg0KCSAgPSB7dGVtcGxh
dGUgPSB0ZW1wbGF0ZSwNCgkgICAgIHJld3JpdGVyID0gcmV3cml0ZXIsDQoJICAgICBjYWxsYmFj
ayA9IGNhbGxiYWNrfQ0KCXZhbCBjb21tdXRlQmluQUxNRF9tc2cgPSBjb21tdXRlQmluQUxNRF9t
c2cNCiAgICAgIGVuZA0KDQogICAgICBsb2NhbA0KCXZhbCBpc0ltbWVkaWF0ZTANCgkgID0gZm4g
SW1tZWRpYXRlLkNvbnN0IChJbW1lZGlhdGUuQ2hhciAjIlwwMDAiKSA9PiB0cnVlDQoJICAgICB8
IEltbWVkaWF0ZS5Db25zdCAoSW1tZWRpYXRlLkludCAwKSA9PiB0cnVlDQoJICAgICB8IEltbWVk
aWF0ZS5Db25zdCAoSW1tZWRpYXRlLldvcmQgMHd4MCkgPT4gdHJ1ZQ0KCSAgICAgfCBfID0+IGZh
bHNlDQoNCgl2YWwgaXNJbnN0cnVjdGlvbk1PVl9zcmNJbW1lZGlhdGUwIDogc3RhdGVtZW50X3R5
cGUgLT4gYm9vbA0KCSAgPSBmbiBBc3NlbWJseS5JbnN0cnVjdGlvbiAoSW5zdHJ1Y3Rpb24uTU9W
DQoJCQkJICAgICB7c3JjID0gT3BlcmFuZC5JbW1lZGlhdGUgaW1tZWRpYXRlLA0KCQkJCSAgICAg
IC4uLn0pDQoJICAgICA9PiBpc0ltbWVkaWF0ZTAgaW1tZWRpYXRlDQoJICAgICB8IF8gPT4gZmFs
c2UNCg0KCXZhbCBpc0luc3RydWN0aW9uQmluQUwgOiBzdGF0ZW1lbnRfdHlwZSAtPiBib29sDQoJ
ICA9IGZuIEFzc2VtYmx5Lkluc3RydWN0aW9uIChJbnN0cnVjdGlvbi5CaW5BTA0KCQkJCSAgICAg
e29wZXIsDQoJCQkJICAgICAgLi4ufSkNCiAgICAgICAJICAgICA9PiAoY2FzZSBvcGVyDQoJCSAg
IG9mIEluc3RydWN0aW9uLkFEQyA9PiBmYWxzZQ0KCQkgICAgfCBJbnN0cnVjdGlvbi5TQkIgPT4g
ZmFsc2UNCgkJICAgIHwgXyA9PiB0cnVlKQ0KCSAgICAgfCBfID0+IGZhbHNlDQoNCgl2YWwgdGVt
cGxhdGUgOiB0ZW1wbGF0ZQ0KCSAgPSB7c3RhcnQgPSBFbXB0eU9yTm9uRW1wdHksDQoJICAgICBz
dGF0ZW1lbnRzID0gW09uZSBpc0luc3RydWN0aW9uTU9WX3NyY0ltbWVkaWF0ZTAsDQoJCQkgICBB
bGwgaXNDb21tZW50LA0KCQkJICAgT25lIGlzSW5zdHJ1Y3Rpb25CaW5BTF0sDQoJICAgICBmaW5p
c2ggPSBFbXB0eU9yTm9uRW1wdHksDQoJICAgICB0cmFuc2ZlciA9IGZuIF8gPT4gdHJ1ZX0NCg0K
CXZhbCByZXdyaXRlciA6IHJld3JpdGVyDQoJICA9IGZuIHtsYWJlbCwNCgkJcHJvZmlsZUluZm8s
DQoJCXN0YXJ0LA0KCQlzdGF0ZW1lbnRzIGFzDQoJCVtbQXNzZW1ibHkuSW5zdHJ1Y3Rpb24gKElu
c3RydWN0aW9uLk1PVg0KCQkJCQl7c3JjID0gc3JjMSBhcyBPcGVyYW5kLkltbWVkaWF0ZSBpbW1l
ZGlhdGUsIA0KCQkJCQkgZHN0ID0gZHN0MSwgDQoJCQkJCSBzaXplID0gc2l6ZTF9KV0sDQoJCSBj
b21tZW50cywNCgkJIFtBc3NlbWJseS5JbnN0cnVjdGlvbiAoSW5zdHJ1Y3Rpb24uQmluQUwNCgkJ
CQkJe29wZXIgPSBvcGVyMiwNCgkJCQkJIHNyYyA9IHNyYzIsDQoJCQkJCSBkc3QgPSBkc3QyLA0K
CQkJCQkgc2l6ZSA9IHNpemUyfSldXSwNCgkJZmluaXNoIGFzIFtdLCANCgkJdHJhbnNmZXIgYXMg
VHJhbnNmZXIuSWZmIHtjb25kaXRpb24gPSBJbnN0cnVjdGlvbi5PLA0KCQkJCQkgIHRydWVlLA0K
CQkJCQkgIGZhbHNlZX19DQoJICAgICA9PiBpZiBTaXplLmVxKHNpemUxLCBzaXplMikgYW5kYWxz
bw0KCSAgICAgICAgICAgT3BlcmFuZC5lcShkc3QxLCBkc3QyKQ0KCQkgIHRoZW4gbGV0DQoJCQkg
dmFsIHN0YXRlbWVudHMNCgkJCSAgID0gKGZuIGwNCgkJCSAgICAgICA9PiBjYXNlIG9wZXIyDQoJ
CQkJICAgIG9mIEluc3RydWN0aW9uLkFERA0KCQkJCSAgICAgPT4gKEFzc2VtYmx5Lmluc3RydWN0
aW9uX21vdg0KCQkJCQkge3NyYyA9IHNyYzIsDQoJCQkJCSAgZHN0ID0gZHN0MSwNCgkJCQkJICBz
aXplID0gc2l6ZTF9KTo6DQoJCQkJICAgICAgICBsDQoJCQkgICAgICAgICAgICAgfCBJbnN0cnVj
dGlvbi5TVUINCgkJCQkgICAgID0+IChBc3NlbWJseS5pbnN0cnVjdGlvbl9tb3YNCgkJCQkJIHtz
cmMgPSBzcmMyLA0KCQkJCQkgIGRzdCA9IGRzdDEsDQoJCQkJCSAgc2l6ZSA9IHNpemUxfSk6Og0K
CQkJCQkoQXNzZW1ibHkuaW5zdHJ1Y3Rpb25fdW5hbA0KCQkJCQkge29wZXIgPSBJbnN0cnVjdGlv
bi5ORUcsDQoJCQkJCSAgZHN0ID0gZHN0MSwNCgkJCQkJICBzaXplID0gc2l6ZTF9KTo6DQoJCQkJ
CWwNCgkJCSAgICAgICAgICAgICB8IEluc3RydWN0aW9uLkFORA0KCQkJCSAgICAgPT4gKEFzc2Vt
Ymx5Lmluc3RydWN0aW9uX21vdg0KCQkJCQkge3NyYyA9IHNyYzEsDQoJCQkJCSAgZHN0ID0gZHN0
MSwNCgkJCQkJICBzaXplID0gc2l6ZTF9KTo6DQoJCQkJCWwNCgkJCSAgICAgICAgICAgICB8IElu
c3RydWN0aW9uLk9SDQoJCQkJICAgICA9PiAoQXNzZW1ibHkuaW5zdHJ1Y3Rpb25fbW92DQoJCQkJ
CSB7c3JjID0gc3JjMiwNCgkJCQkJICBkc3QgPSBkc3QxLA0KCQkJCQkgIHNpemUgPSBzaXplMX0p
OjoNCgkJCQkJbA0KCQkJICAgICAgICAgICAgIHwgSW5zdHJ1Y3Rpb24uWE9SDQoJCQkJICAgICA9
PiAoQXNzZW1ibHkuaW5zdHJ1Y3Rpb25fbW92DQoJCQkJCSB7c3JjID0gc3JjMiwNCgkJCQkJICBk
c3QgPSBkc3QxLA0KCQkJCQkgIHNpemUgPSBzaXplMX0pOjoNCgkJCQkJbA0KCQkJCSAgICAgfCBf
ID0+IEVycm9yLmJ1ZyAiZWxpbUJpbkFMMEwiKQ0KCQkJICAgICBmaW5pc2gNCg0KCQkJIHZhbCBz
dGF0ZW1lbnRzDQoJCQkgICA9IExpc3QuZm9sZChzdGFydCwNCgkJCQkgICAgICAgTGlzdC5jb25j
YXQgW2NvbW1lbnRzLCANCgkJCQkJCSAgICBzdGF0ZW1lbnRzXSwNCgkJCQkgICAgICAgb3AgOjop
DQoNCgkJCSB2YWwgdHJhbnNmZXINCgkJCSAgID0gY2FzZSBvcGVyMg0KCQkJICAgICAgIG9mIElu
c3RydWN0aW9uLlNVQiA9PiB0cmFuc2Zlcg0KCQkJCXwgXyA9PiBUcmFuc2Zlci5Hb3RvIHt0YXJn
ZXQgPSBmYWxzZWV9DQoJCSAgICAgICBpbg0KCQkJIFNPTUUgKEJsb2NrLlQNCgkJCSAgICAgICB7
bGFiZWwgPSBsYWJlbCwNCgkJCQlwcm9maWxlSW5mbyA9IHByb2ZpbGVJbmZvLA0KCQkJCXN0YXRl
bWVudHMgPSBzdGF0ZW1lbnRzLA0KCQkJCXRyYW5zZmVyID0gdHJhbnNmZXJ9KQ0KCQkgICAgICAg
ZW5kDQoJCSAgZWxzZSBOT05FDQoJICAgICB8IHtsYWJlbCwNCgkJcHJvZmlsZUluZm8sDQoJCXN0
YXJ0LA0KCQlzdGF0ZW1lbnRzIGFzDQoJCVtbQXNzZW1ibHkuSW5zdHJ1Y3Rpb24gKEluc3RydWN0
aW9uLk1PVg0KCQkJCQl7c3JjID0gc3JjMSBhcyBPcGVyYW5kLkltbWVkaWF0ZSBpbW1lZGlhdGUs
IA0KCQkJCQkgZHN0ID0gZHN0MSwgDQoJCQkJCSBzaXplID0gc2l6ZTF9KV0sDQoJCSBjb21tZW50
cywNCgkJIFtBc3NlbWJseS5JbnN0cnVjdGlvbiAoSW5zdHJ1Y3Rpb24uQmluQUwNCgkJCQkJe29w
ZXIgPSBvcGVyMiwNCgkJCQkJIHNyYyA9IHNyYzIsDQoJCQkJCSBkc3QgPSBkc3QyLA0KCQkJCQkg
c2l6ZSA9IHNpemUyfSldXSwNCgkJZmluaXNoIGFzIFtdLCANCgkJdHJhbnNmZXIgYXMgVHJhbnNm
ZXIuSWZmIHtjb25kaXRpb24gPSBJbnN0cnVjdGlvbi5OTywNCgkJCQkJICB0cnVlZSwNCgkJCQkJ
ICBmYWxzZWV9fQ0KCSAgICAgPT4gaWYgU2l6ZS5lcShzaXplMSwgc2l6ZTIpIGFuZGFsc28NCgkg
ICAgICAgICAgIE9wZXJhbmQuZXEoZHN0MSwgZHN0MikNCgkJICB0aGVuIGxldA0KCQkJIHZhbCBz
dGF0ZW1lbnRzDQoJCQkgICA9IChmbiBsIA0KCQkJICAgICAgID0+IGNhc2Ugb3BlcjINCgkJCQkg
ICAgb2YgSW5zdHJ1Y3Rpb24uQUREDQoJCQkJICAgICA9PiAoQXNzZW1ibHkuaW5zdHJ1Y3Rpb25f
bW92DQoJCQkJICAgICAgICAge3NyYyA9IHNyYzIsDQoJCQkJCSAgZHN0ID0gZHN0MSwNCgkJCQkJ
ICBzaXplID0gc2l6ZTF9KTo6DQoJCQkJICAgICAgICBsDQoJCQkgICAgICAgICAgICAgfCBJbnN0
cnVjdGlvbi5TVUINCgkJCQkgICAgID0+IChBc3NlbWJseS5pbnN0cnVjdGlvbl9tb3YNCgkJCQkJ
IHtzcmMgPSBzcmMyLA0KCQkJCQkgIGRzdCA9IGRzdDEsDQoJCQkJCSAgc2l6ZSA9IHNpemUxfSk6
Og0KCQkJCQkoQXNzZW1ibHkuaW5zdHJ1Y3Rpb25fdW5hbA0KCQkJCQkge29wZXIgPSBJbnN0cnVj
dGlvbi5ORUcsDQoJCQkJCSAgZHN0ID0gZHN0MiwNCgkJCQkJICBzaXplID0gc2l6ZTJ9KTo6DQoJ
CQkJCWwNCgkJCSAgICAgICAgICAgICB8IEluc3RydWN0aW9uLkFORA0KCQkJCSAgICAgPT4gKEFz
c2VtYmx5Lmluc3RydWN0aW9uX21vdg0KCQkJCQkge3NyYyA9IHNyYzEsDQoJCQkJCSAgZHN0ID0g
ZHN0MSwNCgkJCQkJICBzaXplID0gc2l6ZTF9KTo6DQoJCQkJCWwNCgkJCSAgICAgICAgICAgICB8
IEluc3RydWN0aW9uLk9SDQoJCQkJICAgICA9PiAoQXNzZW1ibHkuaW5zdHJ1Y3Rpb25fbW92DQoJ
CQkJCSB7c3JjID0gc3JjMiwNCgkJCQkJICBkc3QgPSBkc3QxLA0KCQkJCQkgIHNpemUgPSBzaXpl
MX0pOjoNCgkJCQkJbA0KCQkJICAgICAgICAgICAgIHwgSW5zdHJ1Y3Rpb24uWE9SDQoJCQkJICAg
ICA9PiAoQXNzZW1ibHkuaW5zdHJ1Y3Rpb25fbW92DQoJCQkJCSB7c3JjID0gc3JjMiwNCgkJCQkJ
ICBkc3QgPSBkc3QxLA0KCQkJCQkgIHNpemUgPSBzaXplMX0pOjoNCgkJCQkJbA0KCQkJCSAgICAg
fCBfID0+IEVycm9yLmJ1ZyAiZWxpbUJpbkFMMEwiKQ0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmaW5pc2gNCg0KCQkJIHZhbCBzdGF0ZW1lbnRzDQoJCQkgICA9IExpc3QuZm9sZChzdGFy
dCwNCgkJCQkgICAgICAgTGlzdC5jb25jYXQgW2NvbW1lbnRzLA0KCQkJCQkJICAgIHN0YXRlbWVu
dHNdLA0KCQkJCSAgICAgICBvcCA6OikNCgkJCSAgICAgDQoJCQkgdmFsIHRyYW5zZmVyDQoJCQkg
ICA9IGNhc2Ugb3BlcjINCgkJCSAgICAgICBvZiBJbnN0cnVjdGlvbi5TVUIgPT4gdHJhbnNmZXIN
CgkJCQl8IF8gPT4gVHJhbnNmZXIuR290byB7dGFyZ2V0ID0gdHJ1ZWV9DQoJCSAgICAgICBpbg0K
CQkJIFNPTUUgKEJsb2NrLlQNCgkJCSAgICAgICB7bGFiZWwgPSBsYWJlbCwNCgkJCQlwcm9maWxl
SW5mbyA9IHByb2ZpbGVJbmZvLA0KCQkJCXN0YXRlbWVudHMgPSBzdGF0ZW1lbnRzLA0KCQkJCXRy
YW5zZmVyID0gdHJhbnNmZXJ9KQ0KCQkgICAgICAgZW5kDQoJCSAgZWxzZSBOT05FDQoJICAgICB8
IHtsYWJlbCwNCgkJcHJvZmlsZUluZm8sDQoJCXN0YXJ0LCANCgkJc3RhdGVtZW50cyBhcw0KCQlb
W0Fzc2VtYmx5Lkluc3RydWN0aW9uIChJbnN0cnVjdGlvbi5NT1YNCgkJCQkJe3NyYyA9IHNyYzEg
YXMgT3BlcmFuZC5JbW1lZGlhdGUgaW1tZWRpYXRlLCANCgkJCQkJIGRzdCA9IGRzdDEsIA0KCQkJ
CQkgc2l6ZSA9IHNpemUxfSldLA0KCQkgY29tbWVudHMsDQoJCSBbQXNzZW1ibHkuSW5zdHJ1Y3Rp
b24gKEluc3RydWN0aW9uLkJpbkFMDQoJCQkJCXtvcGVyID0gb3BlcjIsDQoJCQkJCSBzcmMgPSBz
cmMyLA0KCQkJCQkgZHN0ID0gZHN0MiwNCgkJCQkJIHNpemUgPSBzaXplMn0pXV0sDQoJCWZpbmlz
aCwgDQoJCXRyYW5zZmVyfQ0KCSAgICAgPT4gaWYgU2l6ZS5lcShzaXplMSwgc2l6ZTIpIGFuZGFs
c28NCgkgICAgICAgICAgIE9wZXJhbmQuZXEoZHN0MSwgZHN0MikNCgkJICB0aGVuIGxldA0KCQkJ
IHZhbCBzdGF0ZW1lbnRzDQoJCQkgICA9IChmbiBsIA0KCQkJICAgICAgID0+IGNhc2Ugb3BlcjIN
CgkJCQkgICAgb2YgSW5zdHJ1Y3Rpb24uQUREDQoJCQkJICAgICA9PiAoQXNzZW1ibHkuaW5zdHJ1
Y3Rpb25fbW92DQoJCQkJCSB7c3JjID0gc3JjMiwNCgkJCQkJICBkc3QgPSBkc3QxLA0KCQkJCQkg
IHNpemUgPSBzaXplMX0pOjoNCgkJCQkgICAgICAgIGwNCgkJCSAgICAgICAgICAgICB8IEluc3Ry
dWN0aW9uLlNVQg0KCQkJCSAgICAgPT4gKEFzc2VtYmx5Lmluc3RydWN0aW9uX21vdg0KCQkJCQkg
e3NyYyA9IHNyYzIsDQoJCQkJCSAgZHN0ID0gZHN0MSwNCgkJCQkJICBzaXplID0gc2l6ZTF9KTo6
DQoJCQkJCShBc3NlbWJseS5pbnN0cnVjdGlvbl91bmFsDQoJCQkJCSB7b3BlciA9IEluc3RydWN0
aW9uLk5FRywNCgkJCQkJICBkc3QgPSBkc3QxLA0KCQkJCQkgIHNpemUgPSBzaXplMX0pOjoNCgkJ
CQkJbA0KCQkJICAgICAgICAgICAgIHwgSW5zdHJ1Y3Rpb24uQU5EDQoJCQkJICAgICA9PiAoQXNz
ZW1ibHkuaW5zdHJ1Y3Rpb25fbW92DQoJCQkJCSB7c3JjID0gc3JjMSwNCgkJCQkJICBkc3QgPSBk
c3QxLA0KCQkJCQkgIHNpemUgPSBzaXplMX0pOjoNCgkJCQkJbA0KCQkJICAgICAgICAgICAgIHwg
SW5zdHJ1Y3Rpb24uT1INCgkJCQkgICAgID0+IChBc3NlbWJseS5pbnN0cnVjdGlvbl9tb3YNCgkJ
CQkJIHtzcmMgPSBzcmMyLA0KCQkJCQkgIGRzdCA9IGRzdDEsDQoJCQkJCSAgc2l6ZSA9IHNpemUx
fSk6Og0KCQkJCQlsDQoJCQkgICAgICAgICAgICAgfCBJbnN0cnVjdGlvbi5YT1INCgkJCQkgICAg
ID0+IChBc3NlbWJseS5pbnN0cnVjdGlvbl9tb3YNCgkJCQkJIHtzcmMgPSBzcmMyLA0KCQkJCQkg
IGRzdCA9IGRzdDEsDQoJCQkJCSAgc2l6ZSA9IHNpemUxfSk6Og0KCQkJCQlsDQoJCQkJICAgICB8
IF8gPT4gRXJyb3IuYnVnICJlbGltQmluQUwwTCIpDQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZpbmlzaA0KDQoJCQkgdmFsIHN0YXRlbWVudHMNCgkJCSAgID0gTGlzdC5mb2xkKHN0YXJ0
LA0KCQkJCSAgICAgICBMaXN0LmNvbmNhdCBbY29tbWVudHMsDQoJCQkJCQkgICAgc3RhdGVtZW50
c10sDQoJCQkJICAgICAgIG9wIDo6KQ0KCQkgICAgICAgaW4NCgkJCSBTT01FIChCbG9jay5UDQoJ
CQkgICAgICAge2xhYmVsID0gbGFiZWwsDQoJCQkJcHJvZmlsZUluZm8gPSBwcm9maWxlSW5mbywN
CgkJCQlzdGF0ZW1lbnRzID0gc3RhdGVtZW50cywNCgkJCQl0cmFuc2ZlciA9IHRyYW5zZmVyfSkN
CgkJICAgICAgIGVuZA0KCQkgIGVsc2UgTk9ORQ0KCSAgICAgfCBfID0+IEVycm9yLmJ1ZyAiUGVl
cGhvbGU6IGVsaW1CaW5BTDBMIg0KDQoJdmFsIChjYWxsYmFjayxlbGltQmluQUwwTF9tc2cpIA0K
CSAgPSBtYWtlX2NhbGxiYWNrX21zZyAiZWxpbUJpbkFMMEwiDQogICAgICBpbg0KCXZhbCBlbGlt
QmluQUwwTCA6IG9wdGltaXphdGlvbg0KCSAgPSB7dGVtcGxhdGUgPSB0ZW1wbGF0ZSwNCgkgICAg
IHJld3JpdGVyID0gcmV3cml0ZXIsDQoJICAgICBjYWxsYmFjayA9IGNhbGxiYWNrfQ0KCXZhbCBl
bGltQmluQUwwTF9tc2cgPSBlbGltQmluQUwwTF9tc2cNCiAgICAgIGVuZA0KDQogICAgICBsb2Nh
bA0KCXZhbCBpc0ltbWVkaWF0ZTANCgkgID0gZm4gSW1tZWRpYXRlLkNvbnN0IChJbW1lZGlhdGUu
Q2hhciAjIlwwMDAiKSA9PiB0cnVlDQoJICAgICB8IEltbWVkaWF0ZS5Db25zdCAoSW1tZWRpYXRl
LkludCAwKSA9PiB0cnVlDQoJICAgICB8IEltbWVkaWF0ZS5Db25zdCAoSW1tZWRpYXRlLldvcmQg
MHd4MCkgPT4gdHJ1ZQ0KCSAgICAgfCBfID0+IGZhbHNlDQoNCgl2YWwgaXNJbnN0cnVjdGlvbk1P
ViA6IHN0YXRlbWVudF90eXBlIC0+IGJvb2wNCgkgID0gZm4gQXNzZW1ibHkuSW5zdHJ1Y3Rpb24g
KEluc3RydWN0aW9uLk1PVg0KCQkJCSAgICAgey4uLn0pDQoJICAgICA9PiB0cnVlDQoJICAgICB8
IF8gPT4gZmFsc2UNCg0KCXZhbCBpc0luc3RydWN0aW9uQmluQUxfc3JjSW1tZWRpYXRlMCA6IHN0
YXRlbWVudF90eXBlIC0+IGJvb2wNCgkgID0gZm4gQXNzZW1ibHkuSW5zdHJ1Y3Rpb24gKEluc3Ry
dWN0aW9uLkJpbkFMDQoJCQkJICAgICB7b3BlciwNCgkJCQkgICAgICBzcmMgPSBPcGVyYW5kLklt
bWVkaWF0ZSBpbW1lZGlhdGUsDQoJCQkJICAgICAgLi4ufSkNCiAgICAgICAJICAgICA9PiAoY2Fz
ZSBvcGVyDQoJCSAgIG9mIEluc3RydWN0aW9uLkFEQyA9PiBmYWxzZQ0KCQkgICAgfCBJbnN0cnVj
dGlvbi5TQkIgPT4gZmFsc2UNCgkJICAgIHwgXyA9PiB0cnVlKQ0KICAgICAgICAgICAgICAgIGFu
ZGFsc28NCgkJaXNJbW1lZGlhdGUwIGltbWVkaWF0ZQ0KCSAgICAgfCBfID0+IGZhbHNlDQoNCgl2
YWwgdGVtcGxhdGUgOiB0ZW1wbGF0ZQ0KCSAgPSB7c3RhcnQgPSBFbXB0eU9yTm9uRW1wdHksDQoJ
ICAgICBzdGF0ZW1lbnRzID0gW09uZSBpc0luc3RydWN0aW9uTU9WLA0KCQkJICAgQWxsIGlzQ29t
bWVudCwNCgkJCSAgIE9uZSBpc0luc3RydWN0aW9uQmluQUxfc3JjSW1tZWRpYXRlMF0sDQoJICAg
ICBmaW5pc2ggPSBFbXB0eU9yTm9uRW1wdHksDQoJICAgICB0cmFuc2ZlciA9IGZuIF8gPT4gdHJ1
ZX0NCg0KCXZhbCByZXdyaXRlciA6IHJld3JpdGVyDQoJICA9IGZuIHtsYWJlbCwNCgkJcHJvZmls
ZUluZm8sDQoJCXN0YXJ0LCANCgkJc3RhdGVtZW50cyBhcw0KCQlbW0Fzc2VtYmx5Lkluc3RydWN0
aW9uIChJbnN0cnVjdGlvbi5NT1YNCgkJCQkJe3NyYyA9IHNyYzEsDQoJCQkJCSBkc3QgPSBkc3Qx
LCANCgkJCQkJIHNpemUgPSBzaXplMX0pXSwNCgkJIGNvbW1lbnRzLA0KCQkgW0Fzc2VtYmx5Lklu
c3RydWN0aW9uIChJbnN0cnVjdGlvbi5CaW5BTA0KCQkJCQl7b3BlciA9IG9wZXIyLA0KCQkJCQkg
c3JjID0gc3JjMiBhcyBPcGVyYW5kLkltbWVkaWF0ZSBpbW1lZGlhdGUsDQoJCQkJCSBkc3QgPSBk
c3QyLA0KCQkJCQkgc2l6ZSA9IHNpemUyfSldXSwNCgkJZmluaXNoIGFzIFtdLCANCgkJdHJhbnNm
ZXIgYXMgVHJhbnNmZXIuSWZmIHtjb25kaXRpb24gPSBJbnN0cnVjdGlvbi5PLA0KCQkJCQkgIHRy
dWVlLA0KCQkJCQkgIGZhbHNlZX19DQoJICAgICA9PiBpZiBTaXplLmVxKHNpemUxLCBzaXplMikg
YW5kYWxzbw0KCSAgICAgICAgICAgT3BlcmFuZC5lcShkc3QxLCBkc3QyKQ0KCQkgIHRoZW4gbGV0
DQoJCQkgdmFsIHN0YXRlbWVudHMNCgkJCSAgID0gKGZuIGwgDQoJCQkgICAgICAgPT4gY2FzZSBv
cGVyMg0KCQkJCSAgICBvZiBJbnN0cnVjdGlvbi5BREQNCgkJCQkgICAgID0+IChBc3NlbWJseS5p
bnN0cnVjdGlvbl9tb3YNCgkJCQkJIHtzcmMgPSBzcmMxLA0KCQkJCQkgIGRzdCA9IGRzdDEsDQoJ
CQkJCSAgc2l6ZSA9IHNpemUxfSk6Og0KCQkJCSAgICAgICAgbA0KCQkJICAgICAgICAgICAgIHwg
SW5zdHJ1Y3Rpb24uU1VCDQoJCQkJICAgICA9PiAoQXNzZW1ibHkuaW5zdHJ1Y3Rpb25fbW92DQoJ
CQkJCSB7c3JjID0gc3JjMSwNCgkJCQkJICBkc3QgPSBkc3QxLA0KCQkJCQkgIHNpemUgPSBzaXpl
MX0pOjoNCgkJCQkJbA0KCQkJICAgICAgICAgICAgIHwgSW5zdHJ1Y3Rpb24uQU5EDQoJCQkJICAg
ICA9PiAoQXNzZW1ibHkuaW5zdHJ1Y3Rpb25fbW92DQoJCQkJCSB7c3JjID0gc3JjMiwNCgkJCQkJ
ICBkc3QgPSBkc3QxLA0KCQkJCQkgIHNpemUgPSBzaXplMX0pOjoNCgkJCQkJbA0KCQkJICAgICAg
ICAgICAgIHwgSW5zdHJ1Y3Rpb24uT1INCgkJCQkgICAgID0+IChBc3NlbWJseS5pbnN0cnVjdGlv
bl9tb3YNCgkJCQkJIHtzcmMgPSBzcmMxLA0KCQkJCQkgIGRzdCA9IGRzdDEsDQoJCQkJCSAgc2l6
ZSA9IHNpemUxfSk6Og0KCQkJCQlsDQoJCQkgICAgICAgICAgICAgfCBJbnN0cnVjdGlvbi5YT1IN
CgkJCQkgICAgID0+IChBc3NlbWJseS5pbnN0cnVjdGlvbl9tb3YNCgkJCQkJIHtzcmMgPSBzcmMx
LA0KCQkJCQkgIGRzdCA9IGRzdDEsDQoJCQkJCSAgc2l6ZSA9IHNpemUxfSk6Og0KCQkJCQlsDQoJ
CQkJICAgICB8IF8gPT4gRXJyb3IuYnVnICJlbGltQmluQUwwUiIpDQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZpbmlzaA0KDQoJCQkgdmFsIHN0YXRlbWVudHMNCgkJCSAgID0gTGlzdC5m
b2xkKHN0YXJ0LA0KCQkJCSAgICAgICBMaXN0LmNvbmNhdCBbY29tbWVudHMsDQoJCQkJCQkgICAg
c3RhdGVtZW50c10sDQoJCQkJICAgICAgIG9wIDo6KQ0KDQoJCQkgdmFsIHRyYW5zZmVyID0gVHJh
bnNmZXIuR290byB7dGFyZ2V0ID0gZmFsc2VlfQ0KCQkgICAgICAgaW4NCgkJCSBTT01FIChCbG9j
ay5UDQoJCQkgICAgICAge2xhYmVsID0gbGFiZWwsDQoJCQkJcHJvZmlsZUluZm8gPSBwcm9maWxl
SW5mbywNCgkJCQlzdGF0ZW1lbnRzID0gc3RhdGVtZW50cywNCgkJCQl0cmFuc2ZlciA9IHRyYW5z
ZmVyfSkNCgkJICAgICAgIGVuZA0KCQkgIGVsc2UgTk9ORQ0KCSAgICAgfCB7bGFiZWwsDQoJCXBy
b2ZpbGVJbmZvLA0KCQlzdGFydCwgDQoJCXN0YXRlbWVudHMgYXMNCgkJW1tBc3NlbWJseS5JbnN0
cnVjdGlvbiAoSW5zdHJ1Y3Rpb24uTU9WDQoJCQkJCXtzcmMgPSBzcmMxLA0KCQkJCQkgZHN0ID0g
ZHN0MSwgDQoJCQkJCSBzaXplID0gc2l6ZTF9KV0sDQoJCSBjb21tZW50cywNCgkJIFtBc3NlbWJs
eS5JbnN0cnVjdGlvbiAoSW5zdHJ1Y3Rpb24uQmluQUwNCgkJCQkJe29wZXIgPSBvcGVyMiwNCgkJ
CQkJIHNyYyA9IHNyYzIgYXMgT3BlcmFuZC5JbW1lZGlhdGUgaW1tZWRpYXRlLA0KCQkJCQkgZHN0
ID0gZHN0MiwNCgkJCQkJIHNpemUgPSBzaXplMn0pXV0sDQoJCWZpbmlzaCBhcyBbXSwgDQoJCXRy
YW5zZmVyIGFzIFRyYW5zZmVyLklmZiB7Y29uZGl0aW9uID0gSW5zdHJ1Y3Rpb24uTk8sDQoJCQkJ
CSAgdHJ1ZWUsDQoJCQkJCSAgZmFsc2VlfX0NCgkgICAgID0+IGlmIFNpemUuZXEoc2l6ZTEsIHNp
emUyKSBhbmRhbHNvDQoJICAgICAgICAgICBPcGVyYW5kLmVxKGRzdDEsIGRzdDIpDQoJCSAgdGhl
biBsZXQNCgkJCSB2YWwgc3RhdGVtZW50cw0KCQkJICAgPSAoZm4gbA0KCQkJICAgICAgID0+IGNh
c2Ugb3BlcjINCgkJCQkgICAgb2YgSW5zdHJ1Y3Rpb24uQUREDQoJCQkJICAgICA9PiAoQXNzZW1i
bHkuaW5zdHJ1Y3Rpb25fbW92DQoJCQkJICAgICAgICAge3NyYyA9IHNyYzEsDQoJCQkJCSAgZHN0
ID0gZHN0MSwNCgkJCQkJICBzaXplID0gc2l6ZTF9KTo6DQoJCQkJICAgICAgICBsDQoJCQkgICAg
ICAgICAgICAgfCBJbnN0cnVjdGlvbi5TVUINCgkJCQkgICAgID0+IChBc3NlbWJseS5pbnN0cnVj
dGlvbl9tb3YNCgkJCQkJIHtzcmMgPSBzcmMxLA0KCQkJCQkgIGRzdCA9IGRzdDEsDQoJCQkJCSAg
c2l6ZSA9IHNpemUxfSk6Og0KCQkJCQlsDQoJCQkgICAgICAgICAgICAgfCBJbnN0cnVjdGlvbi5B
TkQNCgkJCQkgICAgID0+IChBc3NlbWJseS5pbnN0cnVjdGlvbl9tb3YNCgkJCQkJIHtzcmMgPSBz
cmMyLA0KCQkJCQkgIGRzdCA9IGRzdDEsDQoJCQkJCSAgc2l6ZSA9IHNpemUxfSk6Og0KCQkJCQls
DQoJCQkgICAgICAgICAgICAgfCBJbnN0cnVjdGlvbi5PUg0KCQkJCSAgICAgPT4gKEFzc2VtYmx5
Lmluc3RydWN0aW9uX21vdg0KCQkJCQkge3NyYyA9IHNyYzEsDQoJCQkJCSAgZHN0ID0gZHN0MSwN
CgkJCQkJICBzaXplID0gc2l6ZTF9KTo6DQoJCQkJCWwNCgkJCSAgICAgICAgICAgICB8IEluc3Ry
dWN0aW9uLlhPUg0KCQkJCSAgICAgPT4gKEFzc2VtYmx5Lmluc3RydWN0aW9uX21vdg0KCQkJCQkg
e3NyYyA9IHNyYzEsDQoJCQkJCSAgZHN0ID0gZHN0MSwNCgkJCQkJICBzaXplID0gc2l6ZTF9KTo6
DQoJCQkJCWwNCgkJCQkgICAgIHwgXyA9PiBFcnJvci5idWcgImVsaW1CaW5BTDBSIikNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZmluaXNoDQoNCgkJCSB2YWwgc3RhdGVtZW50cw0KCQkJ
ICAgPSBMaXN0LmZvbGQoc3RhcnQsDQoJCQkJICAgICAgIExpc3QuY29uY2F0IFtjb21tZW50cywN
CgkJCQkJCSAgICBzdGF0ZW1lbnRzXSwNCgkJCQkgICAgICAgb3AgOjopDQoNCgkJCSB2YWwgdHJh
bnNmZXIgPSBUcmFuc2Zlci5Hb3RvIHt0YXJnZXQgPSB0cnVlZX0NCgkJICAgICAgIGluDQoJCQkg
U09NRSAoQmxvY2suVA0KCQkJICAgICAgIHtsYWJlbCA9IGxhYmVsLA0KCQkJCXByb2ZpbGVJbmZv
ID0gcHJvZmlsZUluZm8sDQoJCQkJc3RhdGVtZW50cyA9IHN0YXRlbWVudHMsDQoJCQkJdHJhbnNm
ZXIgPSB0cmFuc2Zlcn0pDQoJCSAgICAgICBlbmQNCgkJICBlbHNlIE5PTkUNCgkgICAgIHwge2xh
YmVsLA0KCQlwcm9maWxlSW5mbywNCgkJc3RhcnQsIA0KCQlzdGF0ZW1lbnRzIGFzDQoJCVtbQXNz
ZW1ibHkuSW5zdHJ1Y3Rpb24gKEluc3RydWN0aW9uLk1PVg0KCQkJCQl7c3JjID0gc3JjMSwNCgkJ
CQkJIGRzdCA9IGRzdDEsIA0KCQkJCQkgc2l6ZSA9IHNpemUxfSldLA0KCQkgY29tbWVudHMsDQoJ
CSBbQXNzZW1ibHkuSW5zdHJ1Y3Rpb24gKEluc3RydWN0aW9uLkJpbkFMDQoJCQkJCXtvcGVyID0g
b3BlcjIsDQoJCQkJCSBzcmMgPSBzcmMyIGFzIE9wZXJhbmQuSW1tZWRpYXRlIGltbWVkaWF0ZSwN
CgkJCQkJIGRzdCA9IGRzdDIsDQoJCQkJCSBzaXplID0gc2l6ZTJ9KV1dLA0KCQlmaW5pc2gsIA0K
CQl0cmFuc2Zlcn0NCgkgICAgID0+IGlmIFNpemUuZXEoc2l6ZTEsIHNpemUyKSBhbmRhbHNvDQoJ
ICAgICAgICAgICBPcGVyYW5kLmVxKGRzdDEsIGRzdDIpDQoJCSAgdGhlbiBsZXQNCgkJCSB2YWwg
c3RhdGVtZW50cw0KCQkJICAgPSAoZm4gbA0KCQkJICAgICAgID0+IGNhc2Ugb3BlcjINCgkJCQkg
ICAgb2YgSW5zdHJ1Y3Rpb24uQUREDQoJCQkJICAgICA9PiAoQXNzZW1ibHkuaW5zdHJ1Y3Rpb25f
bW92DQoJCQkJCSB7c3JjID0gc3JjMSwNCgkJCQkJICBkc3QgPSBkc3QxLA0KCQkJCQkgIHNpemUg
PSBzaXplMX0pOjoNCgkJCQkgICAgICAgIGwNCgkJCSAgICAgICAgICAgICB8IEluc3RydWN0aW9u
LlNVQg0KCQkJCSAgICAgPT4gKEFzc2VtYmx5Lmluc3RydWN0aW9uX21vdg0KCQkJCQkge3NyYyA9
IHNyYzEsDQoJCQkJCSAgZHN0ID0gZHN0MSwNCgkJCQkJICBzaXplID0gc2l6ZTF9KTo6DQoJCQkJ
CWwNCgkJCSAgICAgICAgICAgICB8IEluc3RydWN0aW9uLkFORA0KCQkJCSAgICAgPT4gKEFzc2Vt
Ymx5Lmluc3RydWN0aW9uX21vdg0KCQkJCQkge3NyYyA9IHNyYzIsDQoJCQkJCSAgZHN0ID0gZHN0
MSwNCgkJCQkJICBzaXplID0gc2l6ZTF9KTo6DQoJCQkJCWwNCgkJCSAgICAgICAgICAgICB8IElu
c3RydWN0aW9uLk9SDQoJCQkJICAgICA9PiAoQXNzZW1ibHkuaW5zdHJ1Y3Rpb25fbW92DQoJCQkJ
CSB7c3JjID0gc3JjMSwNCgkJCQkJICBkc3QgPSBkc3QxLA0KCQkJCQkgIHNpemUgPSBzaXplMX0p
OjoNCgkJCQkJbA0KCQkJICAgICAgICAgICAgIHwgSW5zdHJ1Y3Rpb24uWE9SDQoJCQkJICAgICA9
PiAoQXNzZW1ibHkuaW5zdHJ1Y3Rpb25fbW92DQoJCQkJCSB7c3JjID0gc3JjMSwNCgkJCQkJICBk
c3QgPSBkc3QxLA0KCQkJCQkgIHNpemUgPSBzaXplMX0pOjoNCgkJCQkJbA0KCQkJCSAgICAgfCBf
ID0+IEVycm9yLmJ1ZyAiZWxpbUJpbkFMMFIiKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmaW5pc2gNCg0KCQkJIHZhbCBzdGF0ZW1lbnRzDQoJCQkgICA9IExpc3QuZm9sZChzdGFydCwN
CgkJCQkgICAgICAgTGlzdC5jb25jYXQgW2NvbW1lbnRzLA0KCQkJCQkJICAgIHN0YXRlbWVudHNd
LA0KCQkJCSAgICAgICBvcCA6OikNCgkJICAgICAgIGluDQoJCQkgU09NRSAoQmxvY2suVA0KCQkJ
ICAgICAgIHtsYWJlbCA9IGxhYmVsLA0KCQkJCXByb2ZpbGVJbmZvID0gcHJvZmlsZUluZm8sDQoJ
CQkJc3RhdGVtZW50cyA9IHN0YXRlbWVudHMsDQoJCQkJdHJhbnNmZXIgPSB0cmFuc2Zlcn0pDQoJ
CSAgICAgICBlbmQNCgkJICBlbHNlIE5PTkUNCgkgICAgIHwgXyA9PiBFcnJvci5idWcgIlBlZXBo
b2xlOiBlbGltQmluQUwwUiINCg0KCXZhbCAoY2FsbGJhY2ssZWxpbUJpbkFMMFJfbXNnKSANCgkg
ID0gbWFrZV9jYWxsYmFja19tc2cgImVsaW1CaW5BTDBSIg0KICAgICAgaW4NCgl2YWwgZWxpbUJp
bkFMMFIgOiBvcHRpbWl6YXRpb24NCgkgID0ge3RlbXBsYXRlID0gdGVtcGxhdGUsDQoJICAgICBy
ZXdyaXRlciA9IHJld3JpdGVyLA0KCSAgICAgY2FsbGJhY2sgPSBjYWxsYmFja30NCgl2YWwgZWxp
bUJpbkFMMFJfbXNnID0gZWxpbUJpbkFMMFJfbXNnDQogICAgICBlbmQNCg0KICAgICAgbG9jYWwN
Cgl2YWwgaXNJbW1lZGlhdGUxDQoJICA9IGZuIEltbWVkaWF0ZS5Db25zdCAoSW1tZWRpYXRlLkNo
YXIgIyJcMDAxIikgPT4gdHJ1ZQ0KCSAgICAgfCBJbW1lZGlhdGUuQ29uc3QgKEltbWVkaWF0ZS5J
bnQgMSkgPT4gdHJ1ZQ0KCSAgICAgfCBJbW1lZGlhdGUuQ29uc3QgKEltbWVkaWF0ZS5JbnQgfjEp
ID0+IHRydWUNCgkgICAgIHwgSW1tZWRpYXRlLkNvbnN0IChJbW1lZGlhdGUuV29yZCAwd3gxKSA9
PiB0cnVlDQoJICAgICB8IEltbWVkaWF0ZS5Db25zdCAoSW1tZWRpYXRlLldvcmQgMHd4RkZGRkZG
RkYpID0+IHRydWUNCgkgICAgIHwgXyA9PiBmYWxzZQ0KDQoJdmFsIGdldEltbWVkaWF0ZTENCgkg
ID0gZm4gSW1tZWRpYXRlLkNvbnN0IChJbW1lZGlhdGUuQ2hhciAjIlwwMDEiKSA9PiBTT01FIGZh
bHNlDQoJICAgICB8IEltbWVkaWF0ZS5Db25zdCAoSW1tZWRpYXRlLkludCAxKSA9PiBTT01FIGZh
bHNlDQoJICAgICB8IEltbWVkaWF0ZS5Db25zdCAoSW1tZWRpYXRlLkludCB+MSkgPT4gU09NRSB0
cnVlDQoJICAgICB8IEltbWVkaWF0ZS5Db25zdCAoSW1tZWRpYXRlLldvcmQgMHd4MSkgPT4gU09N
RSBmYWxzZQ0KCSAgICAgfCBJbW1lZGlhdGUuQ29uc3QgKEltbWVkaWF0ZS5Xb3JkIDB3eEZGRkZG
RkZGKSA9PiBTT01FIHRydWUNCgkgICAgIHwgXyA9PiBOT05FDQoNCgl2YWwgaXNJbnN0cnVjdGlv
bkFERG9yU1VCX3NyY0ltbWVkaWF0ZTEgOiBzdGF0ZW1lbnRfdHlwZSAtPiBib29sDQoJPSBmbiBB
c3NlbWJseS5JbnN0cnVjdGlvbiAoSW5zdHJ1Y3Rpb24uQmluQUwgDQoJCQkJICAge29wZXIsDQoJ
CQkJICAgIHNyYyA9IE9wZXJhbmQuSW1tZWRpYXRlIGltbWVkaWF0ZSwNCgkJCQkgICAgLi4ufSkN
CgkgICA9PiAoY2FzZSBvcGVyDQoJCSBvZiBJbnN0cnVjdGlvbi5BREQgPT4gdHJ1ZQ0KCQkgIHwg
SW5zdHJ1Y3Rpb24uU1VCID0+IHRydWUNCgkJICB8IF8gPT4gZmFsc2UpDQoJICAgICAgYW5kYWxz
bw0KCSAgICAgIGlzU29tZSAoZ2V0SW1tZWRpYXRlMSBpbW1lZGlhdGUpDQoJICAgfCBfID0+IGZh
bHNlDQoNCgl2YWwgdGVtcGxhdGUgOiB0ZW1wbGF0ZSANCgkgID0ge3N0YXJ0ID0gRW1wdHlPck5v
bkVtcHR5LA0KCSAgICAgc3RhdGVtZW50cyA9IFtPbmUgaXNJbnN0cnVjdGlvbkFERG9yU1VCX3Ny
Y0ltbWVkaWF0ZTFdLA0KCSAgICAgZmluaXNoID0gRW1wdHlPck5vbkVtcHR5LA0KCSAgICAgdHJh
bnNmZXIgPSBmbiBfID0+IHRydWV9DQoNCgl2YWwgcmV3cml0ZXIgOiByZXdyaXRlcg0KCSAgPSBm
biB7bGFiZWwsDQoJCXByb2ZpbGVJbmZvLA0KCQlzdGFydCwgDQoJCXN0YXRlbWVudHMgYXMNCgkJ
W1tBc3NlbWJseS5JbnN0cnVjdGlvbiAoSW5zdHJ1Y3Rpb24uQmluQUwgDQoJCQkJCXtvcGVyLA0K
CQkJCQkgc3JjID0gT3BlcmFuZC5JbW1lZGlhdGUgaW1tZWRpYXRlLCANCgkJCQkJIGRzdCwgDQoJ
CQkJCSBzaXplfSldXSwNCgkJZmluaXNoLCANCgkJdHJhbnNmZXJ9DQoJICAgICA9PiBsZXQNCgkJ
ICB2YWwgb3Blcg0KCQkgICAgPSBjYXNlIChvcGVyLCBnZXRJbW1lZGlhdGUxIGltbWVkaWF0ZSkN
CgkJICAgICAgICBvZiAoSW5zdHJ1Y3Rpb24uQURELCBTT01FIGZhbHNlKSA9PiBJbnN0cnVjdGlv
bi5JTkMNCgkJICAgICAgICAgfCAoSW5zdHJ1Y3Rpb24uQURELCBTT01FIHRydWUgKSA9PiBJbnN0
cnVjdGlvbi5ERUMNCgkJICAgICAgICAgfCAoSW5zdHJ1Y3Rpb24uU1VCLCBTT01FIGZhbHNlKSA9
PiBJbnN0cnVjdGlvbi5ERUMNCgkJICAgICAgICAgfCAoSW5zdHJ1Y3Rpb24uU1VCLCBTT01FIHRy
dWUgKSA9PiBJbnN0cnVjdGlvbi5JTkMNCgkJCSB8IF8gPT4gRXJyb3IuYnVnICJlbGltQWRkU3Vi
MSINCg0KCQkgIHZhbCBzdGF0ZW1lbnRzDQoJCSAgICA9IChBc3NlbWJseS5pbnN0cnVjdGlvbl91
bmFsDQoJCSAgICAgICB7b3BlciA9IG9wZXIsDQoJCQlkc3QgPSBkc3QsDQoJCQlzaXplID0gc2l6
ZX0pOjoNCgkJICAgICAgZmluaXNoDQoNCgkJICB2YWwgc3RhdGVtZW50cw0KCQkgICAgPSBMaXN0
LmZvbGQoc3RhcnQsDQoJCQkJc3RhdGVtZW50cywNCgkJCQlvcCA6OikNCgkJaW4gDQoJCSAgU09N
RSAoQmxvY2suVA0KCQkJe2xhYmVsID0gbGFiZWwsDQoJCQkgcHJvZmlsZUluZm8gPSBwcm9maWxl
SW5mbywNCgkJCSBzdGF0ZW1lbnRzID0gc3RhdGVtZW50cywNCgkJCSB0cmFuc2ZlciA9IHRyYW5z
ZmVyfSkNCgkJZW5kDQoJICAgICB8IF8gPT4gRXJyb3IuYnVnICJQZWVwaG9sZTogZWxpbUFkZFN1
YjEiDQogDQoJdmFsIChjYWxsYmFjayxlbGltQWRkU3ViMV9tc2cpIA0KCSAgPSBtYWtlX2NhbGxi
YWNrX21zZyAiZWxpbUFkZFN1YjEiDQogICAgICBpbg0KCXZhbCBlbGltQWRkU3ViMTogb3B0aW1p
emF0aW9uDQoJICA9IHt0ZW1wbGF0ZSA9IHRlbXBsYXRlLA0KCSAgICAgcmV3cml0ZXIgPSByZXdy
aXRlciwNCgkgICAgIGNhbGxiYWNrID0gY2FsbGJhY2t9DQoJdmFsIGVsaW1BZGRTdWIxX21zZyA9
IGVsaW1BZGRTdWIxX21zZw0KICAgICAgZW5kDQoNCiAgICAgIGxvY2FsDQoJdmFsIHJlYyBsb2cy
Jw0KCSAgPSBmbiAoMHd4MCwgXykgPT4gTk9ORQ0KCSAgICAgfCAodyA6IFdvcmQzMi53b3JkLCBp
IDogaW50KQ0KCSAgICAgPT4gaWYgMHd4MSA9IFdvcmQzMi5hbmRiKHcsIDB3eDEpDQoJCSAgdGhl
biBjYXNlIHcNCgkJCSBvZiAwd3gwMDAwMDAwMSA9PiBTT01FIChpLCBmYWxzZSkNCgkJCSAgfCAw
d3hGRkZGRkZGRiA9PiBTT01FIChpLCB0cnVlKQ0KCQkJICB8IF8gPT4gTk9ORQ0KCQkgIGVsc2Ug
bG9nMicgKFdvcmQzMi5+Pj4odywgMHd4MSksIGkgKyAxKQ0KCWZ1biBsb2cyIHcgPSBsb2cyJyAo
dywgMCA6IGludCkNCg0KCXZhbCBpc0ltbWVkaWF0ZVBvdzINCgkgID0gZm4gSW1tZWRpYXRlLkNv
bnN0IChJbW1lZGlhdGUuQ2hhciBjKSANCgkgICAgID0+IGlzU29tZSAobG9nMiAoV29yZC5mcm9t
Q2hhciBjKSkNCgkgICAgIHwgSW1tZWRpYXRlLkNvbnN0IChJbW1lZGlhdGUuSW50IGkpIA0KCSAg
ICAgPT4gaXNTb21lIChsb2cyIChXb3JkLmZyb21JbnQgaSkpDQoJICAgICB8IEltbWVkaWF0ZS5D
b25zdCAoSW1tZWRpYXRlLldvcmQgdykgDQoJICAgICA9PiBpc1NvbWUgKGxvZzIgdykNCgkgICAg
IHwgXyA9PiBmYWxzZQ0KDQoJdmFsIGdldEltbWVkaWF0ZUxvZzINCgkgID0gZm4gSW1tZWRpYXRl
LkNvbnN0IChJbW1lZGlhdGUuQ2hhciBjKSANCgkgICAgID0+IGxvZzIgKFdvcmQuZnJvbUNoYXIg
YykNCgkgICAgIHwgSW1tZWRpYXRlLkNvbnN0IChJbW1lZGlhdGUuSW50IGkpIA0KCSAgICAgPT4g
bG9nMiAoV29yZC5mcm9tSW50IGkpDQoJICAgICB8IEltbWVkaWF0ZS5Db25zdCAoSW1tZWRpYXRl
LldvcmQgdykNCgkgICAgID0+IGxvZzIgdw0KCSAgICAgfCBfID0+IE5PTkUNCg0KCXZhbCBpc0lu
c3RydWN0aW9uTVVMb3JESVZfc3JjSW1tZWRpYXRlUG93MiA6IHN0YXRlbWVudF90eXBlIC0+IGJv
b2wNCgk9IGZuIEFzc2VtYmx5Lkluc3RydWN0aW9uIChJbnN0cnVjdGlvbi5wTUQgDQoJCQkJICAg
e29wZXIsDQoJCQkJICAgIHNyYyA9IE9wZXJhbmQuSW1tZWRpYXRlIGltbWVkaWF0ZSwNCgkJCQkg
ICAgLi4ufSkNCgkgICA9PiAoY2FzZSBvcGVyDQoJCSBvZiBJbnN0cnVjdGlvbi5JTVVMID0+IHRy
dWUNCgkJICB8IEluc3RydWN0aW9uLk1VTCA9PiB0cnVlDQoJCSAgfCBJbnN0cnVjdGlvbi5JRElW
ID0+IHRydWUNCgkJICB8IEluc3RydWN0aW9uLkRJViA9PiB0cnVlDQoJCSAgfCBfID0+IGZhbHNl
KQ0KCSAgICAgIGFuZGFsc28NCgkgICAgICBpc0ltbWVkaWF0ZVBvdzIgaW1tZWRpYXRlDQoJICAg
fCBfID0+IGZhbHNlDQoNCgl2YWwgdGVtcGxhdGUgOiB0ZW1wbGF0ZSANCgkgID0ge3N0YXJ0ID0g
RW1wdHlPck5vbkVtcHR5LA0KCSAgICAgc3RhdGVtZW50cyANCgkgICAgID0gW09uZSBpc0luc3Ry
dWN0aW9uTVVMb3JESVZfc3JjSW1tZWRpYXRlUG93Ml0sDQoJICAgICBmaW5pc2ggPSBFbXB0eU9y
Tm9uRW1wdHksDQoJICAgICB0cmFuc2ZlciA9IGZuIF8gPT4gdHJ1ZX0NCg0KCXZhbCByZXdyaXRl
ciA6IHJld3JpdGVyDQoJICA9IGZuIHtsYWJlbCwNCgkJcHJvZmlsZUluZm8sDQoJCXN0YXJ0LCAN
CgkJc3RhdGVtZW50cyBhcw0KCQlbW0Fzc2VtYmx5Lkluc3RydWN0aW9uIChJbnN0cnVjdGlvbi5w
TUQgDQoJCQkJCXtvcGVyID0gSW5zdHJ1Y3Rpb24uSU1VTCwgDQoJCQkJCSBzcmMgPSBPcGVyYW5k
LkltbWVkaWF0ZSBpbW1lZGlhdGUsIA0KCQkJCQkgZHN0LCANCgkJCQkJIHNpemV9KV1dLA0KCQlm
aW5pc2ggYXMgW10sIA0KCQl0cmFuc2ZlciBhcyBUcmFuc2Zlci5JZmYge2NvbmRpdGlvbiA9IElu
c3RydWN0aW9uLk8sDQoJCQkJCSAgdHJ1ZWUsDQoJCQkJCSAgZmFsc2VlfX0NCgkgICAgID0+IE5P
TkUNCgkgICAgIHwge2xhYmVsLA0KCQlwcm9maWxlSW5mbywNCgkJc3RhcnQsIA0KCQlzdGF0ZW1l
bnRzIGFzDQoJCVtbQXNzZW1ibHkuSW5zdHJ1Y3Rpb24gKEluc3RydWN0aW9uLnBNRCANCgkJCQkJ
e29wZXIgPSBJbnN0cnVjdGlvbi5JTVVMLCANCgkJCQkJIHNyYyA9IE9wZXJhbmQuSW1tZWRpYXRl
IGltbWVkaWF0ZSwgDQoJCQkJCSBkc3QsIA0KCQkJCQkgc2l6ZX0pXV0sDQoJCWZpbmlzaCBhcyBb
XSwgDQoJCXRyYW5zZmVyIGFzIFRyYW5zZmVyLklmZiB7Y29uZGl0aW9uID0gSW5zdHJ1Y3Rpb24u
Tk8sDQoJCQkJCSAgdHJ1ZWUsDQoJCQkJCSAgZmFsc2VlfX0NCgkgICAgID0+IE5PTkUNCgkgICAg
IHwge2xhYmVsLA0KCQlwcm9maWxlSW5mbywNCgkJc3RhcnQsIA0KCQlzdGF0ZW1lbnRzIGFzDQoJ
CVtbQXNzZW1ibHkuSW5zdHJ1Y3Rpb24gKEluc3RydWN0aW9uLnBNRCANCgkJCQkJe29wZXIgPSBJ
bnN0cnVjdGlvbi5JTVVMLCANCgkJCQkJIHNyYyA9IE9wZXJhbmQuSW1tZWRpYXRlIGltbWVkaWF0
ZSwgDQoJCQkJCSBkc3QsIA0KCQkJCQkgc2l6ZX0pXV0sDQoJCWZpbmlzaCwgDQoJCXRyYW5zZmVy
fQ0KCSAgICAgPT4gKGNhc2UgZ2V0SW1tZWRpYXRlTG9nMiBpbW1lZGlhdGUNCgkJICAgb2YgTk9O
RSA9PiBFcnJvci5idWcgIlBlZXBob2xlOiBlbGltTURQb3cyIg0KCQkgICAgfCBTT01FICgwLGZh
bHNlKSANCgkJICAgID0+IFNPTUUgKEJsb2NrLlQNCgkJCSAgICAge2xhYmVsID0gbGFiZWwsDQoJ
CQkgICAgICBwcm9maWxlSW5mbyA9IHByb2ZpbGVJbmZvLA0KCQkJICAgICAgc3RhdGVtZW50cyA9
IExpc3QuZm9sZChzdGFydCwNCgkJCQkJCSAgICAgZmluaXNoLA0KCQkJCQkJICAgICBvcCA6Oiks
DQoJCQkgICAgICB0cmFuc2ZlciA9IHRyYW5zZmVyfSkNCgkJICAgIHwgU09NRSAoMCx0cnVlKQ0K
CQkgICAgPT4gbGV0DQoJCQkgdmFsIHN0YXRlbWVudHMNCgkJCSAgID0gKEFzc2VtYmx5Lmluc3Ry
dWN0aW9uX3VuYWwNCgkJCSAgICAgIHtvcGVyID0gSW5zdHJ1Y3Rpb24uTkVHLA0KCQkJICAgICAg
IGRzdCA9IGRzdCwNCgkJCSAgICAgICBzaXplID0gc2l6ZX0pOjoNCgkJCSAgICAgZmluaXNoDQoN
CgkJCSB2YWwgc3RhdGVtZW50cw0KCQkJICAgPSBMaXN0LmZvbGQoc3RhcnQsIA0KCQkJCSAgICAg
ICBzdGF0ZW1lbnRzLA0KCQkJCSAgICAgICBvcCA6OikNCgkJICAgICAgIGluDQoJCQkgU09NRSAo
QmxvY2suVA0KCQkJICAgICAgIHtsYWJlbCA9IGxhYmVsLA0KCQkJCXByb2ZpbGVJbmZvID0gcHJv
ZmlsZUluZm8sDQoJCQkJc3RhdGVtZW50cyA9IHN0YXRlbWVudHMsDQoJCQkJdHJhbnNmZXIgPSB0
cmFuc2Zlcn0pDQoJCSAgICAgICBlbmQNCgkJICAgIHwgU09NRSAoaSxiKQ0KCQkgICAgPT4gaWYg
aSA8ICg4ICogU2l6ZS50b0J5dGVzIHNpemUpDQoJCQkgdGhlbiBsZXQNCgkJCQl2YWwgc3RhdGVt
ZW50cw0KCQkJCSAgPSAoZm4gbA0KCQkJCSAgICAgID0+IChBc3NlbWJseS5pbnN0cnVjdGlvbl9z
cmFsDQoJCQkJCSAge29wZXIgPSBJbnN0cnVjdGlvbi5TQUwsDQoJCQkJCSAgIGNvdW50ID0gT3Bl
cmFuZC5pbW1lZGlhdGVfY29uc3RfaW50IGksDQoJCQkJCSAgIGRzdCA9IGRzdCwNCgkJCQkJICAg
c2l6ZSA9IHNpemV9KTo6DQoJCQkJICAgICAgICAgKGlmIGINCgkJCQkJICAgIHRoZW4gKEFzc2Vt
Ymx5Lmluc3RydWN0aW9uX3VuYWwNCgkJCQkJCSAge29wZXIgPSBJbnN0cnVjdGlvbi5ORUcsDQoJ
CQkJCQkgICBkc3QgPSBkc3QsDQoJCQkJCQkgICBzaXplID0gc2l6ZX0pOjoNCgkJCQkJICAgICAg
ICAgbA0KCQkJCQkgICAgZWxzZSBsKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZpbmlzaA0KDQoJCQkJdmFsIHN0YXRlbWVudHMNCgkJCQkgID0gTGlzdC5mb2xkKHN0YXJ0
LCANCgkJCQkJICAgICAgc3RhdGVtZW50cywNCgkJCQkJICAgICAgb3AgOjopDQoJCQkgICAgICBp
bg0KCQkJCVNPTUUgKEJsb2NrLlQNCgkJCQkgICAgICB7bGFiZWwgPSBsYWJlbCwNCgkJCQkgICAg
ICAgcHJvZmlsZUluZm8gPSBwcm9maWxlSW5mbywNCgkJCQkgICAgICAgc3RhdGVtZW50cyA9IHN0
YXRlbWVudHMsDQoJCQkJICAgICAgIHRyYW5zZmVyID0gdHJhbnNmZXJ9KQ0KCQkJICAgICAgZW5k
DQoJCQkgZWxzZSBOT05FKQ0KCSAgICAgfCB7bGFiZWwsDQoJCXByb2ZpbGVJbmZvLA0KCQlzdGFy
dCwgDQoJCXN0YXRlbWVudHMgYXMNCgkJW1tBc3NlbWJseS5JbnN0cnVjdGlvbiAoSW5zdHJ1Y3Rp
b24ucE1EIA0KCQkJCQkge29wZXIgPSBJbnN0cnVjdGlvbi5NVUwsIA0KCQkJCQkgIHNyYyA9IE9w
ZXJhbmQuSW1tZWRpYXRlIGltbWVkaWF0ZSwgDQoJCQkJCSAgZHN0LCANCgkJCQkJICBzaXplfSld
XSwNCgkJZmluaXNoLCANCgkJdHJhbnNmZXJ9DQoJICAgICA9PiAoY2FzZSBnZXRJbW1lZGlhdGVM
b2cyIGltbWVkaWF0ZQ0KCQkgICBvZiBOT05FID0+IEVycm9yLmJ1ZyAiUGVlcGhvbGU6IGVsaW1N
RFBvdzIiDQoJCSAgICB8IFNPTUUgKDAsZmFsc2UpIA0KCQkgICAgPT4gU09NRSAoQmxvY2suVA0K
CQkJICAgICB7bGFiZWwgPSBsYWJlbCwNCgkJCSAgICAgIHByb2ZpbGVJbmZvID0gcHJvZmlsZUlu
Zm8sDQoJCQkgICAgICBzdGF0ZW1lbnRzID0gTGlzdC5mb2xkKHN0YXJ0LA0KCQkJCQkJICAgICBm
aW5pc2gsDQoJCQkJCQkgICAgIG9wIDo6KSwNCgkJCSAgICAgIHRyYW5zZmVyID0gdHJhbnNmZXJ9
KQ0KCQkgICAgfCBTT01FIChpLGZhbHNlKQ0KCQkgICAgPT4gaWYgaSA8ICg4ICogU2l6ZS50b0J5
dGVzIHNpemUpDQoJCQkgdGhlbiBsZXQNCgkJCQl2YWwgc3RhdGVtZW50cw0KCQkJCSAgPSAoQXNz
ZW1ibHkuaW5zdHJ1Y3Rpb25fc3JhbA0KCQkJCSAgICAge29wZXIgPSBJbnN0cnVjdGlvbi5TQUws
DQoJCQkJICAgICAgY291bnQgPSBPcGVyYW5kLmltbWVkaWF0ZV9jb25zdF9pbnQgaSwNCgkJCQkg
ICAgICBkc3QgPSBkc3QsDQoJCQkJICAgICAgc2l6ZSA9IHNpemV9KTo6DQoJCQkJICAgIGZpbmlz
aA0KDQoJCQkJdmFsIHN0YXRlbWVudHMNCgkJCQkgID0gTGlzdC5mb2xkKHN0YXJ0LCANCgkJCQkJ
ICAgICAgc3RhdGVtZW50cywNCgkJCQkJICAgICAgb3AgOjopDQoJCQkgICAgICBpbiANCgkJCQlT
T01FIChCbG9jay5UDQoJCQkJICAgICAge2xhYmVsID0gbGFiZWwsDQoJCQkJICAgICAgIHByb2Zp
bGVJbmZvID0gcHJvZmlsZUluZm8sDQoJCQkJICAgICAgIHN0YXRlbWVudHMgPSBzdGF0ZW1lbnRz
LA0KCQkJCSAgICAgICB0cmFuc2ZlciA9IHRyYW5zZmVyfSkNCgkJCSAgICAgIGVuZA0KCQkJIGVs
c2UgTk9ORQ0KCQkgICAgfCBTT01FIChpLHRydWUpDQoJCSAgICA9PiBOT05FKQ0KCSAgICAgfCB7
bGFiZWwsDQoJCXByb2ZpbGVJbmZvLA0KCQlzdGFydCwgDQoJCXN0YXRlbWVudHMgYXMNCgkJW1tB
c3NlbWJseS5JbnN0cnVjdGlvbiAoSW5zdHJ1Y3Rpb24ucE1EDQoJCQkJCXtvcGVyID0gSW5zdHJ1
Y3Rpb24uSURJViwNCgkJCQkJIHNyYyA9IE9wZXJhbmQuSW1tZWRpYXRlIGltbWVkaWF0ZSwgDQoJ
CQkJCSBkc3QsIA0KCQkJCQkgc2l6ZX0pXV0sDQoJCWZpbmlzaCwgDQoJCXRyYW5zZmVyfQ0KCSAg
ICAgPT4gKGNhc2UgZ2V0SW1tZWRpYXRlTG9nMiBpbW1lZGlhdGUNCgkJICAgb2YgTk9ORSA9PiBF
cnJvci5idWcgIlBlZXBob2xlOiBlbGltTURQb3cyIg0KCQkgICAgfCBTT01FICgwLGZhbHNlKSAN
CgkJICAgID0+IFNPTUUgKEJsb2NrLlQNCgkJCSAgICAge2xhYmVsID0gbGFiZWwsDQoJCQkgICAg
ICBwcm9maWxlSW5mbyA9IHByb2ZpbGVJbmZvLA0KCQkJICAgICAgc3RhdGVtZW50cyA9IExpc3Qu
Zm9sZChzdGFydCwNCgkJCQkJCSAgICAgZmluaXNoLA0KCQkJCQkJICAgICBvcCA6OiksDQoJCQkg
ICAgICB0cmFuc2ZlciA9IHRyYW5zZmVyfSkNCgkJICAgIHwgU09NRSAoMCx0cnVlKQ0KCQkgICAg
PT4gbGV0DQoJCQkgdmFsIHN0YXRlbWVudHMNCgkJCSAgID0gKEFzc2VtYmx5Lmluc3RydWN0aW9u
X3VuYWwNCgkJCSAgICAgIHtvcGVyID0gSW5zdHJ1Y3Rpb24uTkVHLA0KCQkJICAgICAgIGRzdCA9
IGRzdCwNCgkJCSAgICAgICBzaXplID0gc2l6ZX0pOjoNCgkJCSAgICAgZmluaXNoDQoNCgkJCSB2
YWwgc3RhdGVtZW50cw0KCQkJICAgPSBMaXN0LmZvbGQoc3RhcnQsIA0KCQkJCSAgICAgICBzdGF0
ZW1lbnRzLA0KCQkJCSAgICAgICBvcCA6OikNCgkJICAgICAgIGluDQoJCQkgU09NRSAoQmxvY2su
VA0KCQkJICAgICAgIHtsYWJlbCA9IGxhYmVsLA0KCQkJCXByb2ZpbGVJbmZvID0gcHJvZmlsZUlu
Zm8sDQoJCQkJc3RhdGVtZW50cyA9IHN0YXRlbWVudHMsDQoJCQkJdHJhbnNmZXIgPSB0cmFuc2Zl
cn0pDQoJCSAgICAgICBlbmQNCgkJICAgIHwgU09NRSAoaSxiKQ0KCQkgICAgPT4gaWYgaSA8ICg4
ICogU2l6ZS50b0J5dGVzIHNpemUpDQoJCQkgdGhlbiBsZXQNCgkJCQl2YWwgdGVtcA0KCQkJCSAg
PSAoT3BlcmFuZC5tZW1sb2MgbyBNZW1Mb2MuaW1tKQ0KCQkJCSAgICB7YmFzZSA9IEltbWVkaWF0
ZS5jb25zdF9pbnQgMCwNCgkJCQkgICAgIGluZGV4ID0gSW1tZWRpYXRlLmNvbnN0X2ludCAwLA0K
CQkJCSAgICAgc2NhbGUgPSBTY2FsZS5Gb3VyLA0KCQkJCSAgICAgc2l6ZSA9IFNpemUuTE9ORywN
CgkJCQkgICAgIGNvbW1pdCA9IE1lbUxvYy5Db21taXQuY29tbWl0DQoJCQkJICAgICAgICAgICAg
ICB7aXNUZW1wID0gdHJ1ZSwNCgkJCQkJICAgICAgIG9uRmx1c2ggPSBmYWxzZX0sDQoJCQkJICAg
ICBjbGFzcyA9IE1lbUxvYy5DbGFzcy5uZXcgIlRlbXAifQ0KDQoJCQkJdmFsIHdpZHRoID0gOCAq
IFNpemUudG9CeXRlcyBzaXplDQoNCgkJCQl2YWwgc3RhdGVtZW50cw0KCQkJCSAgPSAoKGZuIGwN
CgkJCQkgICAgICAgPT4gKEFzc2VtYmx5Lmluc3RydWN0aW9uX21vdg0KCQkJCQkgICB7c3JjID0g
ZHN0LA0KCQkJCQkgICAgZHN0ID0gdGVtcCwNCgkJCQkJICAgIHNpemUgPSBzaXplfSk6Og0KCQkJ
CSAgICAgICAgICBsKSBvDQoJCQkJICAgICAoZm4gbA0KCQkJCSAgICAgICA9PiBpZiBpID4gMA0K
CQkJCQkgICAgdGhlbiAoQXNzZW1ibHkuaW5zdHJ1Y3Rpb25fc3JhbA0KCQkJCQkJICB7b3BlciA9
IEluc3RydWN0aW9uLlNBUiwNCgkJCQkJCSAgIGRzdCA9IHRlbXAsDQoJCQkJCQkgICBjb3VudCAN
CgkJCQkJCSAgID0gT3BlcmFuZC5pbW1lZGlhdGVfY29uc3RfaW50IChpIC0gMSksDQoJCQkJCQkg
ICBzaXplID0gc2l6ZX0pOjoNCgkJCQkJICAgICAgICAgbA0KCQkJCQkgICAgZWxzZSBsKSBvDQoJ
CQkJICAgICAoZm4gbA0KCQkJCSAgICAgICA9PiBpZiBpIDwgd2lkdGgNCgkJCQkJICAgIHRoZW4g
KEFzc2VtYmx5Lmluc3RydWN0aW9uX3NyYWwNCgkJCQkJCSAge29wZXIgPSBJbnN0cnVjdGlvbi5T
SFIsDQoJCQkJCQkgICBkc3QgPSB0ZW1wLA0KCQkJCQkJICAgY291bnQgDQoJCQkJCQkgICA9IE9w
ZXJhbmQuaW1tZWRpYXRlX2NvbnN0X2ludCAod2lkdGggLSBpKSwNCgkJCQkJCSAgIHNpemUgPSBz
aXplfSk6Og0KCQkJCQkgICAgICAgICBsDQoJCQkJCSAgICBlbHNlIGwpIG8NCgkJCQkgICAgIChm
biBsDQoJCQkJICAgICAgID0+IChBc3NlbWJseS5pbnN0cnVjdGlvbl9iaW5hbA0KCQkJCQkgICB7
b3BlciA9IEluc3RydWN0aW9uLkFERCwNCgkJCQkJICAgIHNyYyA9IHRlbXAsDQoJCQkJCSAgICBk
c3QgPSBkc3QsDQoJCQkJCSAgICBzaXplID0gc2l6ZX0pOjoNCgkJCQkJICAoQXNzZW1ibHkuaW5z
dHJ1Y3Rpb25fc3JhbA0KCQkJCQkgICB7b3BlciA9IEluc3RydWN0aW9uLlNBUiwNCgkJCQkJICAg
IGNvdW50ID0gT3BlcmFuZC5pbW1lZGlhdGVfY29uc3RfaW50IGksDQoJCQkJCSAgICBkc3QgPSBk
c3QsDQoJCQkJCSAgICBzaXplID0gc2l6ZX0pOjoNCgkJCQkJICBsKSBvDQoJCQkJICAgICAoZm4g
bA0KCQkJCSAgICAgICA9PiBpZiBiDQoJCQkJCSAgICB0aGVuIChBc3NlbWJseS5pbnN0cnVjdGlv
bl91bmFsDQoJCQkJCQkgIHtvcGVyID0gSW5zdHJ1Y3Rpb24uTkVHLA0KCQkJCQkJICAgZHN0ID0g
ZHN0LA0KCQkJCQkJICAgc2l6ZSA9IHNpemV9KTo6DQoJCQkJCSAgICAgICAgICBsDQoJCQkJCSAg
ICAgZWxzZSBsKSkNCgkJCQkgICAgZmluaXNoDQoNCgkJCQl2YWwgc3RhdGVtZW50cw0KCQkJCSAg
PSBMaXN0LmZvbGQoc3RhcnQsDQoJCQkJCSAgICAgIHN0YXRlbWVudHMsDQoJCQkJCSAgICAgIG9w
IDo6KQ0KCQkJICAgICAgaW4gDQoJCQkJU09NRSAoQmxvY2suVA0KCQkJCSAgICAgIHtsYWJlbCA9
IGxhYmVsLA0KCQkJCSAgICAgICBwcm9maWxlSW5mbyA9IHByb2ZpbGVJbmZvLA0KCQkJCSAgICAg
ICBzdGF0ZW1lbnRzID0gc3RhdGVtZW50cywNCgkJCQkgICAgICAgdHJhbnNmZXIgPSB0cmFuc2Zl
cn0pDQoJCQkgICAgICBlbmQNCgkJCSBlbHNlIE5PTkUpDQoJICAgICB8IHtsYWJlbCwNCgkJcHJv
ZmlsZUluZm8sDQoJCXN0YXJ0LCANCgkJc3RhdGVtZW50cyBhcw0KCQlbW0Fzc2VtYmx5Lkluc3Ry
dWN0aW9uIChJbnN0cnVjdGlvbi5wTUQNCgkJCQkJe29wZXIgPSBJbnN0cnVjdGlvbi5ESVYsDQoJ
CQkJCSBzcmMgPSBPcGVyYW5kLkltbWVkaWF0ZSBpbW1lZGlhdGUsIA0KCQkJCQkgZHN0LCANCgkJ
CQkJIHNpemV9KV1dLA0KCQlmaW5pc2gsIA0KCQl0cmFuc2Zlcn0NCgkgICAgID0+IChjYXNlIGdl
dEltbWVkaWF0ZUxvZzIgaW1tZWRpYXRlDQoJCSAgIG9mIE5PTkUgPT4gRXJyb3IuYnVnICJQZWVw
aG9sZTogZWxpbU1EUG93MiINCgkJICAgIHwgU09NRSAoMCxmYWxzZSkgDQoJCSAgICA9PiBTT01F
IChCbG9jay5UDQoJCQkgICAgIHtsYWJlbCA9IGxhYmVsLA0KCQkJICAgICAgcHJvZmlsZUluZm8g
PSBwcm9maWxlSW5mbywNCgkJCSAgICAgIHN0YXRlbWVudHMgPSBMaXN0LmZvbGQoc3RhcnQsDQoJ
CQkJCQkgICAgIGZpbmlzaCwNCgkJCQkJCSAgICAgb3AgOjopLA0KCQkJICAgICAgdHJhbnNmZXIg
PSB0cmFuc2Zlcn0pDQoJCSAgICB8IFNPTUUgKGksZmFsc2UpDQoJCSAgICA9PiBpZiBpIDwgKDgg
KiBTaXplLnRvQnl0ZXMgc2l6ZSkNCgkJCSB0aGVuIGxldA0KCQkJCXZhbCBzdGF0ZW1lbnRzDQoJ
CQkJICA9IChBc3NlbWJseS5pbnN0cnVjdGlvbl9zcmFsDQoJCQkJICAgICB7b3BlciA9IEluc3Ry
dWN0aW9uLlNIUiwNCgkJCQkgICAgICBjb3VudCA9IE9wZXJhbmQuaW1tZWRpYXRlX2NvbnN0X2lu
dCBpLA0KCQkJCSAgICAgIGRzdCA9IGRzdCwNCgkJCQkgICAgICBzaXplID0gc2l6ZX0pOjoNCgkJ
CQkgICAgZmluaXNoDQoNCgkJCQl2YWwgc3RhdGVtZW50cw0KCQkJCSAgPSBMaXN0LmZvbGQoc3Rh
cnQsDQoJCQkJCSAgICAgIHN0YXRlbWVudHMsDQoJCQkJCSAgICAgIG9wIDo6KQ0KCQkJICAgICAg
aW4gDQoJCQkJU09NRSAoQmxvY2suVA0KCQkJCSAgICAgIHtsYWJlbCA9IGxhYmVsLA0KCQkJCSAg
ICAgICBwcm9maWxlSW5mbyA9IHByb2ZpbGVJbmZvLA0KCQkJCSAgICAgICBzdGF0ZW1lbnRzID0g
c3RhdGVtZW50cywNCgkJCQkgICAgICAgdHJhbnNmZXIgPSB0cmFuc2Zlcn0pDQoJCQkgICAgICBl
bmQNCgkJCSBlbHNlIE5PTkUNCgkgICAgICAgICAgICB8IFNPTUUgKGksdHJ1ZSkgPT4gTk9ORSkN
CiAJICAgICB8IF8gPT4gRXJyb3IuYnVnICJQZWVwaG9sZTogZWxpbU1EUG93MiINCg0KCXZhbCAo
Y2FsbGJhY2ssZWxpbU1EUG93Ml9tc2cpIA0KCSAgPSBtYWtlX2NhbGxiYWNrX21zZyAiZWxpbU1E
UG93MiINCiAgICAgIGluDQoJdmFsIGVsaW1NRFBvdzIgOiBvcHRpbWl6YXRpb24NCgkgID0ge3Rl
bXBsYXRlID0gdGVtcGxhdGUsDQoJICAgICByZXdyaXRlciA9IHJld3JpdGVyLA0KCSAgICAgY2Fs
bGJhY2sgPSBjYWxsYmFja30NCgl2YWwgZWxpbU1EUG93Ml9tc2cgPSBlbGltTURQb3cyX21zZw0K
ICAgICAgZW5kICANCg0KICAgICAgbG9jYWwNCgl2YWwgaXNJbnN0cnVjdGlvbkNNUG9yVEVTVA0K
CSAgPSBmbiBBc3NlbWJseS5JbnN0cnVjdGlvbiAoSW5zdHJ1Y3Rpb24uQ01QIF8pDQoJICAgICA9
PiB0cnVlDQoJICAgICB8IEFzc2VtYmx5Lkluc3RydWN0aW9uIChJbnN0cnVjdGlvbi5URVNUIF8p
DQoJICAgICA9PiB0cnVlDQoJICAgICB8IF8gPT4gZmFsc2UNCg0KCXZhbCBpc1RyYW5zZmVyX0lm
Zg0KCSAgPSBmbiBUcmFuc2Zlci5JZmYge3RydWVlLCBmYWxzZWUsIC4uLn0NCgkgICAgID0+IHRy
dWUNCgkgICAgIHwgXyA9PiBmYWxzZQ0KDQoJdmFsIHRlbXBsYXRlIA0KCSAgPSB7c3RhcnQgPSBF
bXB0eU9yTm9uRW1wdHksDQoJICAgICBzdGF0ZW1lbnRzID0gW09uZSBpc0luc3RydWN0aW9uQ01Q
b3JURVNULA0KCQkJICAgQWxsIGlzQ29tbWVudF0sDQoJICAgICBmaW5pc2ggPSBFbXB0eSwNCgkg
ICAgIHRyYW5zZmVyID0gbm90IG8gaXNUcmFuc2Zlcl9JZmZ9DQoNCgl2YWwgcmV3cml0ZXIgDQoJ
ICA9IGZuIHtsYWJlbCwNCgkJcHJvZmlsZUluZm8sDQoJCXN0YXJ0LCANCgkJc3RhdGVtZW50cyBh
cw0KCQlbW0Fzc2VtYmx5Lkluc3RydWN0aW9uIGluc3RydWN0aW9uXSwNCgkJIGNvbW1lbnRzXSwN
CgkJZmluaXNoIGFzIFtdLA0KCQl0cmFuc2Zlcn0NCgkgICAgID0+IGxldA0KCQkgIHZhbCBzdGF0
ZW1lbnRzIA0KCQkgICAgPSBMaXN0LmZvbGQoc3RhcnQsIA0KCQkJCWNvbW1lbnRzLA0KCQkJCW9w
IDo6KQ0KCQlpbiANCgkJICBTT01FIChCbG9jay5UIHtsYWJlbCA9IGxhYmVsLA0KCQkJCSBwcm9m
aWxlSW5mbyA9IHByb2ZpbGVJbmZvLA0KCQkJCSBzdGF0ZW1lbnRzID0gc3RhdGVtZW50cywNCgkJ
CQkgdHJhbnNmZXIgPSB0cmFuc2Zlcn0pDQoJCWVuZA0KCSAgICAgfCBfID0+IEVycm9yLmJ1ZyAi
ZWxpbUNNUFRTVCINCg0KCXZhbCAoY2FsbGJhY2ssZWxpbUNNUFRTVF9tc2cpIA0KCSAgPSBtYWtl
X2NhbGxiYWNrX21zZyAiZWxpbUNNUFRTVCINCiAgICAgIGluDQoJdmFsIGVsaW1DTVBUU1QgOiBv
cHRpbWl6YXRpb24NCgkgID0ge3RlbXBsYXRlID0gdGVtcGxhdGUsDQoJICAgICByZXdyaXRlciA9
IHJld3JpdGVyLA0KCSAgICAgY2FsbGJhY2sgPSBjYWxsYmFja30NCgl2YWwgZWxpbUNNUFRTVF9t
c2cgPSBlbGltQ01QVFNUX21zZw0KICAgICAgZW5kDQoNCiAgICAgIGxvY2FsDQoJdmFsIG9wdGlt
aXphdGlvbnNfcHJlDQoJICA9IFtjb21tdXRlQmluQUxNRCwNCigqDQogCSAgICAgZWxpbUJpbkFM
MEwsDQoJICAgICBlbGltQmluQUwwUiwNCiopDQoJICAgICBlbGltQWRkU3ViMSwNCgkgICAgIGVs
aW1NRFBvdzJdDQoJdmFsIG9wdGltaXphdGlvbnNfcHJlX21zZw0KCSAgPSBbY29tbXV0ZUJpbkFM
TURfbXNnLA0KKCoNCgkgICAgIGVsaW1CaW5BTDBMX21zZywNCgkgICAgIGVsaW1CaW5BTDBSX21z
ZywNCiopDQoJICAgICBlbGltQWRkU3ViMV9tc2csDQoJICAgICBlbGltTURQb3cyX21zZ10NCg0K
CXZhbCBvcHRpbWl6YXRpb25zX3Bvc3QNCgkgID0gW2VsaW1CaW5BTE1ERG91YmxlLA0KCSAgICAg
ZWxpbUZsdEJpbkFEb3VibGUsDQoJICAgICBlbGltQ01QVFNUXQ0KCXZhbCBvcHRpbWl6YXRpb25z
X3Bvc3RfbXNnDQoJICA9IFtlbGltQmluQUxNRERvdWJsZV9tc2csDQoJICAgICBlbGltRmx0Qmlu
QURvdWJsZV9tc2csDQoJICAgICBlbGltQ01QVFNUX21zZ10NCiAgICAgIGluDQoJdmFsIChwZWVw
aG9sZUJsb2NrX3ByZSwgcGVlcGhvbGVCbG9ja19wcmVfbXNnKQ0KCSAgPSB0cmFjZXINCgkgICAg
InBlZXBob2xlQmxvY2tfcHJlIg0KCSAgICAoZm4gYmxvY2sgPT4gcGVlcGhvbGVCbG9jayB7b3B0
aW1pemF0aW9ucyA9IG9wdGltaXphdGlvbnNfcHJlLA0KCQkJCQlibG9jayA9IGJsb2NrfSkNCgl2
YWwgcGVlcGhvbGVCbG9ja19wcmVfbXNnDQoJICA9IGZuICgpID0+IChwZWVwaG9sZUJsb2NrX3By
ZV9tc2cgKCk7DQoJCSAgICAgIENvbnRyb2wuaW5kZW50ICgpOw0KCQkgICAgICBMaXN0LmZvcmVh
Y2gob3B0aW1pemF0aW9uc19wcmVfbXNnLCBmbiBtc2cgPT4gbXNnICgpKTsNCgkJICAgICAgQ29u
dHJvbC51bmluZGVudCAoKSkNCg0KCXZhbCAocGVlcGhvbGVCbG9ja19wb3N0LCBwZWVwaG9sZUJs
b2NrX3Bvc3RfbXNnKQ0KCSAgPSB0cmFjZXINCgkgICAgInBlZXBob2xlQmxvY2tfcG9zdCINCgkg
ICAgKGZuIGJsb2NrID0+IHBlZXBob2xlQmxvY2sge29wdGltaXphdGlvbnMgPSBvcHRpbWl6YXRp
b25zX3Bvc3QsDQoJCQkJCWJsb2NrID0gYmxvY2t9KQ0KDQoJdmFsIHBlZXBob2xlQmxvY2tfcG9z
dF9tc2cNCgkgID0gZm4gKCkgPT4gKHBlZXBob2xlQmxvY2tfcG9zdF9tc2cgKCk7DQoJCSAgICAg
IENvbnRyb2wuaW5kZW50ICgpOw0KCQkgICAgICBMaXN0LmZvcmVhY2gob3B0aW1pemF0aW9uc19w
b3N0X21zZywgZm4gbXNnID0+IG1zZyAoKSk7DQoJCSAgICAgIENvbnRyb2wudW5pbmRlbnQgKCkp
DQogICAgICBlbmQNCg0KICAgICAgb3BlbiBKdW1wSW5mbw0KDQogICAgICB2YWwgKGNhbGxiYWNr
X2VsaW1JZmYsZWxpbUlmZl9tc2cpDQoJPSBtYWtlX2NhbGxiYWNrX21zZyAiZWxpbUlmZiINCiAg
ICAgIGZ1biBtYWtlRWxpbUlmZiB7anVtcEluZm8gOiB7Z2V0OiBMYWJlbC50IC0+IHN0YXR1cyBy
ZWZ9fSA6DQoJICAgICAgICAgICAgICBvcHRpbWl6YXRpb24NCgk9IGxldA0KCSAgICB2YWwgaXND
b21tZW50DQoJICAgICAgPSBmbiBBc3NlbWJseS5Db21tZW50IF8gPT4gdHJ1ZQ0KCSAgICAgICAg
IHwgXyA9PiBmYWxzZQ0KDQoJICAgIHZhbCBpc0luc3RydWN0aW9uQ01Qb3JURVNUDQoJICAgICAg
PSBmbiBBc3NlbWJseS5JbnN0cnVjdGlvbiAoSW5zdHJ1Y3Rpb24uQ01QIF8pDQoJICAgICAgICAg
PT4gdHJ1ZQ0KCSAgICAgICAgIHwgQXNzZW1ibHkuSW5zdHJ1Y3Rpb24gKEluc3RydWN0aW9uLlRF
U1QgXykNCgkgICAgICAgICA9PiB0cnVlDQoJICAgICAgICAgfCBfID0+IGZhbHNlDQoNCgkgICAg
dmFsIGlzVHJhbnNmZXJJZmZfZXFUYXJnZXRzDQoJICAgICAgPSBmbiBUcmFuc2Zlci5JZmYge3Ry
dWVlLCBmYWxzZWUsIC4uLn0NCgkgICAgICAgICA9PiBMYWJlbC5lcXVhbHModHJ1ZWUsIGZhbHNl
ZSkNCgkgICAgICAgICB8IF8gPT4gZmFsc2UNCg0KCSAgICB2YWwgdGVtcGxhdGUgDQoJICAgICAg
PSB7c3RhcnQgPSBFbXB0eU9yTm9uRW1wdHksDQoJCSBzdGF0ZW1lbnRzID0gW09uZSBpc0luc3Ry
dWN0aW9uQ01Qb3JURVNULA0KCQkJICAgICAgIEFsbCBpc0NvbW1lbnRdLA0KCQkgZmluaXNoID0g
RW1wdHksDQoJCSB0cmFuc2ZlciA9IGlzVHJhbnNmZXJJZmZfZXFUYXJnZXRzfQ0KDQoJICAgIHZh
bCByZXdyaXRlciANCgkgICAgICA9IGZuIHtsYWJlbCwNCgkJICAgIHByb2ZpbGVJbmZvLA0KCQkg
ICAgc3RhcnQsIA0KCQkgICAgc3RhdGVtZW50cyBhcw0KCQkgICAgW3N0YXRlbWVudCwNCgkJICAg
ICBjb21tZW50c10sDQoJCSAgICBmaW5pc2ggYXMgW10sDQoJCSAgICB0cmFuc2ZlciBhcyBUcmFu
c2Zlci5JZmYge2NvbmRpdGlvbiwgdHJ1ZWUsIGZhbHNlZX19DQoJICAgICAgICAgPT4gbGV0DQoJ
CSAgICAgIHZhbCBfID0gZGVjIHtsYWJlbCA9IGZhbHNlZSwNCgkJCQkgICBqdW1wSW5mbyA9IGp1
bXBJbmZvfQ0KCQkJDQoJCSAgICAgIHZhbCBzdGF0ZW1lbnRzIA0KCQkJPSBMaXN0LmZvbGQoc3Rh
cnQsIA0KCQkJCSAgICBjb21tZW50cywgDQoJCQkJICAgIG9wIDo6KQ0KCQkJDQoJCSAgICAgIHZh
bCB0cmFuc2ZlciA9IFRyYW5zZmVyLmdvdG8ge3RhcmdldCA9IHRydWVlfQ0KCQkgICAgaW4gDQoJ
CSAgICAgIFNPTUUgKEJsb2NrLlQge2xhYmVsID0gbGFiZWwsDQoJCQkJICAgICBwcm9maWxlSW5m
byA9IHByb2ZpbGVJbmZvLA0KCQkJCSAgICAgc3RhdGVtZW50cyA9IHN0YXRlbWVudHMsDQoJCQkJ
ICAgICB0cmFuc2ZlciA9IHRyYW5zZmVyfSkNCgkJICAgIGVuZA0KCSAgICAgICAgIHwgXyA9PiBF
cnJvci5idWcgImVsaW1JZmYiDQoJICBpbg0KCSAgICB7dGVtcGxhdGUgPSB0ZW1wbGF0ZSwNCgkg
ICAgIHJld3JpdGVyID0gcmV3cml0ZXIsDQoJICAgICBjYWxsYmFjayA9IGNhbGxiYWNrX2VsaW1J
ZmZ9DQoJICBlbmQNCg0KICAgICAgdmFsIChjYWxsYmFja19lbGltU3dpdGNoVGVzdCxlbGltU3dp
dGNoVGVzdF9tc2cpDQoJPSBtYWtlX2NhbGxiYWNrX21zZyAiZWxpbVN3aXRjaFRlc3QiDQogICAg
ICBmdW4gbWFrZUVsaW1Td2l0Y2hUZXN0IHtqdW1wSW5mbyA6IHtnZXQ6IExhYmVsLnQgLT4gc3Rh
dHVzIHJlZn19IDoNCgkgICAgICAgICAgICAgICAgICAgICBvcHRpbWl6YXRpb24NCgk9IGxldA0K
CSAgICB2YWwgaXNDb21tZW50DQoJICAgICAgPSBmbiBBc3NlbWJseS5Db21tZW50IF8gPT4gdHJ1
ZQ0KCSAgICAgICAgIHwgXyA9PiBmYWxzZQ0KDQoJICAgIHZhbCBpc1RyYW5zZmVyU3dpdGNoX3Rl
c3RJbW1lZGlhdGVFdmFsDQoJICAgICAgPSBmbiBUcmFuc2Zlci5Td2l0Y2gge3Rlc3QgYXMgT3Bl
cmFuZC5JbW1lZGlhdGUgaW1tZWRpYXRlLCAuLi59DQoJICAgICAgICAgPT4gaXNTb21lIChJbW1l
ZGlhdGUuZXZhbCBpbW1lZGlhdGUpDQogICAgICAgICAgICAgICAgIHwgXyA9PiBmYWxzZQ0KDQoJ
ICAgIHZhbCB0ZW1wbGF0ZSANCgkgICAgICA9IHtzdGFydCA9IEVtcHR5LA0KCQkgc3RhdGVtZW50
cyA9IFtBbGwgKGZuIF8gPT4gdHJ1ZSldLA0KCQkgZmluaXNoID0gRW1wdHksDQoJCSB0cmFuc2Zl
ciA9IGlzVHJhbnNmZXJTd2l0Y2hfdGVzdEltbWVkaWF0ZUV2YWx9DQoNCgkgICAgdmFsIHJld3Jp
dGVyIA0KCSAgICAgID0gZm4ge2xhYmVsLA0KCQkgICAgcHJvZmlsZUluZm8sDQoJCSAgICBzdGFy
dCBhcyBbXSwgDQoJCSAgICBzdGF0ZW1lbnRzIGFzIFtzdGF0ZW1lbnRzJ10sDQoJCSAgICBmaW5p
c2ggYXMgW10sDQoJCSAgICB0cmFuc2ZlciBhcyBUcmFuc2Zlci5Td2l0Y2gge3Rlc3QgYXMgT3Bl
cmFuZC5JbW1lZGlhdGUgaW1tZWRpYXRlLA0KCQkJCQkJIGNhc2VzLCANCgkJCQkJCSBkZWZhdWx0
fX0NCgkgICAgICAgICA9PiBsZXQNCgkJICAgICAgdmFsIHN0YXRlbWVudHMgPSBzdGF0ZW1lbnRz
Jw0KCQkgICAgICB2YWwgdGVzdCA9IHZhbE9mIChJbW1lZGlhdGUuZXZhbCBpbW1lZGlhdGUpDQoJ
CSAgICAgIHZhbCBjYXNlcw0KCQkJPSBUcmFuc2Zlci5DYXNlcy5rZWVwQWxsJw0KCQkJICAoY2Fz
ZXMsDQoJCQkgICBmbiBrID0+IGsgPSB0ZXN0LA0KCQkJICAgZm4gKGMsdGFyZ2V0KSANCgkJCSAg
ICA9PiAoZGVjIHtsYWJlbCA9IHRhcmdldCwNCgkJCQkgICAgIGp1bXBJbmZvID0ganVtcEluZm99
Ow0KCQkJCShXb3JkLmZyb21JbnQgbyBDaGFyLm9yZCkgYyksDQoJCQkgICBmbiAoaSx0YXJnZXQp
IA0KCQkJICAgID0+IChkZWMge2xhYmVsID0gdGFyZ2V0LA0KCQkJCSAgICAganVtcEluZm8gPSBq
dW1wSW5mb307DQoJCQkJV29yZC5mcm9tSW50IGkpLA0KCQkJICAgZm4gKHcsdGFyZ2V0KSANCgkJ
CSAgICA9PiAoZGVjIHtsYWJlbCA9IGxhYmVsLA0KCQkJCSAgICAganVtcEluZm8gPSBqdW1wSW5m
b307DQoJCQkJdykpDQoJCQkgIA0KCQkgICAgICB2YWwgdHJhbnNmZXINCgkJCT0gaWYgVHJhbnNm
ZXIuQ2FzZXMuaXNFbXB0eSBjYXNlcw0KCQkJICAgIHRoZW4gVHJhbnNmZXIuZ290byB7dGFyZ2V0
ID0gZGVmYXVsdH0NCgkJCSAgZWxzZSBpZiBUcmFuc2Zlci5DYXNlcy5pc1NpbmdsZSBjYXNlcw0K
CQkJICAgIHRoZW4gbGV0DQoJCQkJICAgdmFsIF8gPSBkZWMge2xhYmVsID0gZGVmYXVsdCwNCgkJ
CQkJCWp1bXBJbmZvID0ganVtcEluZm99DQoJCQkJICAgdmFsIHRhcmdldA0KCQkJCSAgICAgPSBU
cmFuc2Zlci5DYXNlcy5leHRyYWN0DQoJCQkJICAgICAgIChjYXNlcywgDQoJCQkJCWZuIHRhcmdl
dCA9PiB0YXJnZXQpDQoJCQkJICAgdmFsIF8gPSBpbmMge2xhYmVsID0gdGFyZ2V0LA0KCQkJCQkJ
anVtcEluZm8gPSBqdW1wSW5mb30NCgkJCQkgaW4NCgkJCQkgICBUcmFuc2Zlci5nb3RvIHt0YXJn
ZXQgPSB0YXJnZXR9DQoJCQkJIGVuZA0KCQkJICBlbHNlIEVycm9yLmJ1ZyAiZWxpbVN3aXRjaFRl
c3QiDQoJCSAgICBpbg0KCQkgICAgICBTT01FIChCbG9jay5UIHtsYWJlbCA9IGxhYmVsLA0KCQkJ
CSAgICAgcHJvZmlsZUluZm8gPSBwcm9maWxlSW5mbywNCgkJCQkgICAgIHN0YXRlbWVudHMgPSBz
dGF0ZW1lbnRzLA0KCQkJCSAgICAgdHJhbnNmZXIgPSB0cmFuc2Zlcn0pDQoJCSAgICBlbmQNCgkg
ICAgICAgICB8IF8gPT4gRXJyb3IuYnVnICJlbGltU3dpdGNoVGVzdCINCgkgIGluDQoJICAgIHt0
ZW1wbGF0ZSA9IHRlbXBsYXRlLA0KCSAgICAgcmV3cml0ZXIgPSByZXdyaXRlciwNCgkgICAgIGNh
bGxiYWNrID0gY2FsbGJhY2tfZWxpbVN3aXRjaFRlc3R9DQoJICBlbmQNCg0KICAgICAgdmFsIChj
YWxsYmFja19lbGltU3dpdGNoQ2FzZXMsZWxpbVN3aXRjaENhc2VzX21zZykNCgk9IG1ha2VfY2Fs
bGJhY2tfbXNnICJlbGltU3dpdGNoQ2FzZXMiDQogICAgICBmdW4gbWFrZUVsaW1Td2l0Y2hDYXNl
cyB7anVtcEluZm8gOiB7Z2V0OiBMYWJlbC50IC0+IHN0YXR1cyByZWZ9fSA6DQoJICAgICAgICAg
ICAgICAgICAgICAgICBvcHRpbWl6YXRpb24NCgk9IGxldA0KCSAgICB2YWwgaXNDb21tZW50DQoJ
ICAgICAgPSBmbiBBc3NlbWJseS5Db21tZW50IF8gPT4gdHJ1ZQ0KCSAgICAgICAgIHwgXyA9PiBm
YWxzZQ0KDQoJICAgIHZhbCBpc1RyYW5zZmVyU3dpdGNoX2Nhc2VzRGVmYXVsdA0KCSAgICAgID0g
Zm4gVHJhbnNmZXIuU3dpdGNoIHtjYXNlcywgZGVmYXVsdCwgLi4ufQ0KCSAgICAgICAgID0+IGxl
dA0KCQkgICAgICB2YWwgbiA9IFRyYW5zZmVyLkNhc2VzLmNvdW50DQoJCQkgICAgICAoY2FzZXMs
IA0KCQkJICAgICAgIGZuIHRhcmdldCA9PiBMYWJlbC5lcXVhbHModGFyZ2V0LCBkZWZhdWx0KSkN
CgkJICAgIGluIA0KCQkgICAgICBuID4gMA0KCQkgICAgZW5kDQoJCSB8IF8gPT4gZmFsc2UNCg0K
CSAgICB2YWwgdGVtcGxhdGUgDQoJICAgICAgPSB7c3RhcnQgPSBFbXB0eSwNCgkJIHN0YXRlbWVu
dHMgPSBbQWxsIChmbiBfID0+IHRydWUpXSwNCgkJIGZpbmlzaCA9IEVtcHR5LA0KCQkgdHJhbnNm
ZXIgPSBpc1RyYW5zZmVyU3dpdGNoX2Nhc2VzRGVmYXVsdH0NCg0KCSAgICB2YWwgcmV3cml0ZXIg
DQoJICAgICAgPSBmbiB7bGFiZWwsDQoJCSAgICBwcm9maWxlSW5mbywNCgkJICAgIHN0YXJ0IGFz
IFtdLCANCgkJICAgIHN0YXRlbWVudHMgYXMgW3N0YXRlbWVudHMnXSwNCgkJICAgIGZpbmlzaCBh
cyBbXSwNCgkJICAgIHRyYW5zZmVyIGFzIFRyYW5zZmVyLlN3aXRjaCB7dGVzdCwgY2FzZXMsIGRl
ZmF1bHR9fQ0KCSAgICAgICAgID0+IGxldA0KCQkgICAgICB2YWwgc3RhdGVtZW50cyA9IHN0YXRl
bWVudHMnDQoJCSAgICAgIHZhbCBjYXNlcw0KCQkJPSBUcmFuc2Zlci5DYXNlcy5rZWVwQWxsDQoJ
CQkgIChjYXNlcywNCgkJCSAgIGZuIHRhcmdldCA9PiBpZiBMYWJlbC5lcXVhbHModGFyZ2V0LCBk
ZWZhdWx0KQ0KCQkJCQkgIHRoZW4gKGRlYyB7bGFiZWwgPSB0YXJnZXQsDQoJCQkJCQkgICAgIGp1
bXBJbmZvID0ganVtcEluZm99Ow0KCQkJCQkJZmFsc2UpDQoJCQkJCSAgZWxzZSB0cnVlKQ0KDQoJ
CSAgICAgIHZhbCAoc3RhdGVtZW50cywgdHJhbnNmZXIpDQoJCQk9IGlmIFRyYW5zZmVyLkNhc2Vz
LmlzRW1wdHkgY2FzZXMNCgkJCSAgICB0aGVuIChzdGF0ZW1lbnRzLA0KCQkJCSAgVHJhbnNmZXIu
Z290byB7dGFyZ2V0ID0gZGVmYXVsdH0pDQoJCQkgIGVsc2UgaWYgVHJhbnNmZXIuQ2FzZXMuaXNT
aW5nbGUgY2FzZXMNCgkJCSAgICB0aGVuIGxldA0KCQkJCSAgIHZhbCAoayx0YXJnZXQpDQoJCQkJ
ICAgICA9IFRyYW5zZmVyLkNhc2VzLmV4dHJhY3QnDQoJCQkJICAgICAgIChjYXNlcywNCgkJCQkJ
Zm4gKGssdGFyZ2V0KSA9PiAoayx0YXJnZXQpLA0KCQkJCQlmbiAoYyx0YXJnZXQpIA0KCQkJCQkg
PT4gKEltbWVkaWF0ZS5jb25zdF9jaGFyIGMsIHRhcmdldCksDQoJCQkJCWZuIChpLHRhcmdldCkN
CgkJCQkJID0+IChJbW1lZGlhdGUuY29uc3RfaW50IGksIHRhcmdldCksDQoJCQkJCWZuICh3LHRh
cmdldCkNCgkJCQkJID0+IChJbW1lZGlhdGUuY29uc3Rfd29yZCB3LCB0YXJnZXQpKQ0KCQkJCSAg
IHZhbCBzaXplDQoJCQkJICAgICA9IGNhc2UgT3BlcmFuZC5zaXplIHRlc3QNCgkJCQkJIG9mIFNP
TUUgc2l6ZSA9PiBzaXplDQoJCQkJCSAgfCBOT05FID0+IFNpemUuTE9ORw0KCQkJCSBpbiANCgkJ
CQkgICAoTGlzdC5jb25jYXQNCgkJCQkgICAgW3N0YXRlbWVudHMsDQoJCQkJICAgICBbQXNzZW1i
bHkuaW5zdHJ1Y3Rpb25fY21wDQoJCQkJICAgICAge3NyYzEgPSB0ZXN0LA0KCQkJCSAgICAgICBz
cmMyID0gT3BlcmFuZC5pbW1lZGlhdGUgaywNCgkJCQkgICAgICAgc2l6ZSA9IHNpemV9XV0sDQoJ
CQkJICAgIFRyYW5zZmVyLmlmZiB7Y29uZGl0aW9uID0gSW5zdHJ1Y3Rpb24uRSwNCgkJCQkJCSAg
dHJ1ZWUgPSB0YXJnZXQsDQoJCQkJCQkgIGZhbHNlZSA9IGRlZmF1bHR9KQ0KCQkJCSBlbmQJCQkJ
ICAgIA0KCQkJICBlbHNlIChzdGF0ZW1lbnRzLA0KCQkJCVRyYW5zZmVyLnN3aXRjaCB7dGVzdCA9
IHRlc3QsDQoJCQkJCQkgY2FzZXMgPSBjYXNlcywNCgkJCQkJCSBkZWZhdWx0ID0gZGVmYXVsdH0p
DQoJCSAgICBpbiANCgkJICAgICAgU09NRSAoQmxvY2suVCB7bGFiZWwgPSBsYWJlbCwJDQoJCQkJ
ICAgICBwcm9maWxlSW5mbyA9IHByb2ZpbGVJbmZvLA0KCQkJCSAgICAgc3RhdGVtZW50cyA9IHN0
YXRlbWVudHMsDQoJCQkJICAgICB0cmFuc2ZlciA9IHRyYW5zZmVyfSkNCgkJICAgIGVuZA0KCSAg
ICAgICAgIHwgXyA9PiBFcnJvci5idWcgImVsaW1Td2l0Y2hDYXNlcyINCgkgIGluDQoJICAgIHt0
ZW1wbGF0ZSA9IHRlbXBsYXRlLA0KCSAgICAgcmV3cml0ZXIgPSByZXdyaXRlciwNCgkgICAgIGNh
bGxiYWNrID0gY2FsbGJhY2tfZWxpbVN3aXRjaENhc2VzfQ0KCSAgZW5kDQogICAgZW5kDQoNCiAg
c3RydWN0dXJlIEVsaW1Hb3RvID0NCiAgICBzdHJ1Y3QNCiAgICAgIG9wZW4gSnVtcEluZm8NCg0K
ICAgICAgZnVuIGVsaW1TaW1wbGVHb3RvIHtibG9ja3MgOiBCbG9jay50IGxpc3QsDQoJCQkgIGp1
bXBJbmZvIDoge2dldDogTGFiZWwudCAtPiBzdGF0dXMgcmVmfX0gDQoJPSBsZXQNCgkgICAgdmFs
IGdvdG9JbmZvIGFzIHtnZXQ6IExhYmVsLnQgLT4gTGFiZWwudCBvcHRpb24sDQoJCQkgICAgIHNl
dDogTGFiZWwudCAqIExhYmVsLnQgb3B0aW9uIC0+IHVuaXR9DQoJICAgICAgPSBQcm9wZXJ0eS5n
ZXRTZXQoTGFiZWwucGxpc3QsIFByb3BlcnR5LmluaXRDb25zdCBOT05FKQ0KCSAgICB2YWwgY2hh
bmdlZCA9IHJlZiBmYWxzZQ0KCSAgICAgIA0KCSAgICB2YWwgbGFiZWxzDQoJICAgICAgPSBMaXN0
LmtlZXBBbGxNYXANCgkgICAgICAgIChibG9ja3MsDQoJCSBmbiBibG9jayBhcyBCbG9jay5UIHts
YWJlbCwgDQoJCQkJICAgICAgcHJvZmlsZUluZm8sDQoJCQkJICAgICAgc3RhdGVtZW50cywgDQoJ
CQkJICAgICAgdHJhbnNmZXIgYXMgVHJhbnNmZXIuR290byB7dGFyZ2V0fX0NCgkJICA9PiBpZiBM
aXN0LmZvcmFsbChzdGF0ZW1lbnRzLA0KCQkJCSAgICBmbiBBc3NlbWJseS5Db21tZW50IF8gPT4g
dHJ1ZQ0KCQkJCSAgICAgfCBfID0+IGZhbHNlKQ0KCQkgICAgICAgIGFuZGFsc28NCgkJCW5vdCAo
TGFiZWwuZXF1YWxzKGxhYmVsLCB0YXJnZXQpKQ0KCQkJYW5kYWxzbw0KCQkJISgoI2dldCBqdW1w
SW5mbykgbGFiZWwpIDw+IE11c3QNCgkJICAgICAgIHRoZW4gKHNldChsYWJlbCwgU09NRSB0YXJn
ZXQpOyBTT01FIGxhYmVsKQ0KCQkgICAgICAgZWxzZSBOT05FDQoJCSAgfCBfID0+IE5PTkUpDQoJ
CQ0KCSAgICBmdW4gbG9vcCAoKQ0KCSAgICAgID0gaWYgTGlzdC5mb2xkKGxhYmVscywNCgkJCSAg
ICAgZmFsc2UsDQoJCQkgICAgIGZuIChsYWJlbCxiKQ0KCQkJICAgICAgPT4gY2FzZSBnZXQgbGFi
ZWwNCgkJCQkgICBvZiBOT05FID0+IGINCgkJCSAgICAgICAgICAgIHwgU09NRSB0YXJnZXQNCgkJ
CQkgICAgPT4gKGNhc2UgZ2V0IHRhcmdldA0KCQkJCQkgIG9mIE5PTkUgPT4gYg0KCQkJCQkgICB8
IFNPTUUgdGFyZ2V0Jw0KCQkJCQkgICA9PiAoc2V0KGxhYmVsLCBTT01FIHRhcmdldCcpOw0KCQkJ
CQkgICAgICAgdHJ1ZSkpKQ0KCQkgIHRoZW4gbG9vcCAoKQ0KCQkgIGVsc2UgKCkNCgkJICAgIA0K
CSAgICB2YWwgXyA9IGxvb3AgKCkNCg0KCSAgICBmdW4gdXBkYXRlIHRhcmdldA0KCSAgICAgID0g
Y2FzZSBnZXQgdGFyZ2V0DQoJCSAgb2YgU09NRSB0YXJnZXQnDQoJCSAgID0+IChjaGFuZ2VkIDo9
IHRydWU7DQoJCSAgICAgICBkZWMge2xhYmVsID0gdGFyZ2V0LA0KCQkJICAgIGp1bXBJbmZvID0g
anVtcEluZm99Ow0KCQkgICAgICAgaW5jIHtsYWJlbCA9IHRhcmdldCcsDQoJCQkgICAganVtcElu
Zm8gPSBqdW1wSW5mb307DQoJCSAgICAgICB0YXJnZXQnKQ0KCQkgICB8IE5PTkUgPT4gdGFyZ2V0
DQoNCgkgICAgdmFsIGVsaW1TaW1wbGVHb3RvJw0KCSAgICAgID0gZm4gVHJhbnNmZXIuR290byB7
dGFyZ2V0fSANCgkgICAgICAgICA9PiBUcmFuc2Zlci5Hb3RvIHt0YXJnZXQgPSB1cGRhdGUgdGFy
Z2V0fQ0KCQkgfCBUcmFuc2Zlci5JZmYge2NvbmRpdGlvbiwgdHJ1ZWUsIGZhbHNlZX0NCgkgICAg
ICAgICA9PiBUcmFuc2Zlci5JZmYge2NvbmRpdGlvbiA9IGNvbmRpdGlvbiwNCgkJCQkgIHRydWVl
ID0gdXBkYXRlIHRydWVlLA0KCQkJCSAgZmFsc2VlID0gdXBkYXRlIGZhbHNlZX0NCgkgICAgICAg
ICB8IFRyYW5zZmVyLlN3aXRjaCB7dGVzdCwgY2FzZXMsIGRlZmF1bHR9DQoJICAgICAgICAgPT4g
VHJhbnNmZXIuU3dpdGNoIHt0ZXN0ID0gdGVzdCwNCgkJCQkgICAgIGNhc2VzID0gVHJhbnNmZXIu
Q2FzZXMubWFwDQoJCQkJICAgICAgICAgICAgIChjYXNlcywNCgkJCQkJICAgICAgZm4gdGFyZ2V0
ID0+IHVwZGF0ZSB0YXJnZXQpLA0KCQkJICAgICAgICAgICAgIGRlZmF1bHQgPSB1cGRhdGUgZGVm
YXVsdH0NCgkgICAgICAgICB8IHRyYW5zZmVyID0+IHRyYW5zZmVyDQoNCgkgICAgdmFsIGJsb2Nr
cw0KCSAgICAgID0gTGlzdC5tYXANCgkgICAgICAgIChibG9ja3MsDQoJCSBmbiBCbG9jay5UIHts
YWJlbCwgcHJvZmlsZUluZm8sIHN0YXRlbWVudHMsIHRyYW5zZmVyfQ0KCQkgID0+IEJsb2NrLlQg
e2xhYmVsID0gbGFiZWwsDQoJCQkgICAgICBwcm9maWxlSW5mbyA9IHByb2ZpbGVJbmZvLA0KCQkJ
ICAgICAgc3RhdGVtZW50cyA9IHN0YXRlbWVudHMsDQoJCQkgICAgICB0cmFuc2ZlciA9IGVsaW1T
aW1wbGVHb3RvJyB0cmFuc2Zlcn0pDQoNCgkgICAgdmFsIGJsb2Nrcw0KCSAgICAgID0gTGlzdC5y
ZW1vdmVBbGwNCgkgICAgICAgIChibG9ja3MsDQoJCSBmbiBCbG9jay5UIHtsYWJlbCwuLi59DQoJ
CSAgPT4gKGNhc2UgZ2V0IGxhYmVsDQoJCQlvZiBTT01FIGxhYmVsJyA9PiAoY2hhbmdlZCA6PSB0
cnVlOw0KCQkJCQkgICBkZWMge2xhYmVsID0gbGFiZWwnLA0KCQkJCQkJanVtcEluZm8gPSBqdW1w
SW5mb307DQoJCQkJCSAgIHRydWUpDQoJCQkgfCBOT05FID0+IGZhbHNlKSkNCgkgIGluDQoJICAg
IHtibG9ja3MgPSBibG9ja3MsDQoJICAgICBjaGFuZ2VkID0gIWNoYW5nZWR9DQoJICBlbmQNCg0K
ICAgICAgdmFsIChlbGltU2ltcGxlR290byxlbGltU2ltcGxlR290b19tc2cpDQoJPSB0cmFjZXIN
CgkgICJlbGltU2ltcGxlR290byINCgkgIGVsaW1TaW1wbGVHb3RvDQoNCiAgICAgIGZ1biBlbGlt
Q29tcGxleEdvdG8ge2Jsb2NrcyA6IEJsb2NrLnQgbGlzdCwNCgkJCSAgIGp1bXBJbmZvIDoge2dl
dDogTGFiZWwudCAtPiBzdGF0dXMgcmVmfX0NCgk9IGxldA0KCSAgICB2YWwgZ290b0luZm8gYXMg
e2dldDogTGFiZWwudCAtPiBCbG9jay50IG9wdGlvbiwNCgkJCSAgICAgc2V0OiBMYWJlbC50ICog
QmxvY2sudCBvcHRpb24gLT4gdW5pdH0NCgkgICAgICA9IFByb3BlcnR5LmdldFNldChMYWJlbC5w
bGlzdCwgUHJvcGVydHkuaW5pdENvbnN0IE5PTkUpDQoNCgkgICAgdmFsIGxhYmVscw0KCSAgICAg
ID0gTGlzdC5rZWVwQWxsTWFwDQoJICAgICAgICAoYmxvY2tzLA0KCQkgZm4gYmxvY2sgYXMgQmxv
Y2suVCB7bGFiZWwsLi4ufQ0KCQkgID0+IGlmICEoKCNnZXQganVtcEluZm8pIGxhYmVsKSA9IE1h
eWJlIDENCgkJICAgICAgIHRoZW4gKHNldChsYWJlbCwgU09NRSBibG9jayk7IFNPTUUgbGFiZWwp
DQoJCSAgICAgICBlbHNlIE5PTkUpDQoNCgkgICAgZnVuIGxvb3AgKCkNCgkgICAgICA9IGlmIExp
c3QuZm9sZA0KCSAgICAgICAgICAgKGxhYmVscywNCgkJICAgIGZhbHNlLA0KCQkgICAgZm4gKGxh
YmVsLGIpDQoJCSAgICAgPT4gY2FzZSBnZXQgbGFiZWwNCgkJCSAgb2YgU09NRSAoQmxvY2suVCAN
CgkJCQkgICB7bGFiZWwsDQoJCQkJICAgIHByb2ZpbGVJbmZvLA0KCQkJCSAgICBzdGF0ZW1lbnRz
LA0KCQkJCSAgICB0cmFuc2ZlciBhcyBUcmFuc2Zlci5Hb3RvIHt0YXJnZXR9fSkNCgkJCSAgID0+
IChpZiBMYWJlbC5lcXVhbHMobGFiZWwsdGFyZ2V0KQ0KCQkJCSB0aGVuIGINCgkJCQkgZWxzZSAo
Y2FzZSBnZXQgdGFyZ2V0DQoJCQkJCSBvZiBOT05FID0+IGINCgkJCQkJICB8IFNPTUUgKEJsb2Nr
LlQNCgkJCQkJCSAge2xhYmVsID0gbGFiZWwnLA0KCQkJCQkJICAgcHJvZmlsZUluZm8gDQoJCQkJ
CQkgICA9IHByb2ZpbGVJbmZvJywNCgkJCQkJCSAgIHN0YXRlbWVudHMgPSBzdGF0ZW1lbnRzJywN
CgkJCQkJCSAgIHRyYW5zZmVyID0gdHJhbnNmZXInfSkNCgkJCQkJICA9PiAoc2V0KGxhYmVsLA0K
CQkJCQkJICBTT01FIChCbG9jay5UDQoJCQkJCQkJe2xhYmVsID0gbGFiZWwsDQoJCQkJCQkJIHBy
b2ZpbGVJbmZvDQoJCQkJCQkJID0gUHJvZmlsZUluZm8uY29tYmluZQ0KCQkJCQkJCSAgIChwcm9m
aWxlSW5mbywNCgkJCQkJCQkgICAgcHJvZmlsZUluZm8nKSwNCgkJCQkJCQkgc3RhdGVtZW50cw0K
CQkJCQkJCSA9IExpc3QuY29uY2F0DQoJCQkJCQkJICAgW3N0YXRlbWVudHMsIA0KCQkJCQkJCSAg
ICBzdGF0ZW1lbnRzJ10sDQoJCQkJCQkgICAgICAgICB0cmFuc2ZlciANCgkJCQkJCSAgICAgICAg
ID0gdHJhbnNmZXInfSkpOw0KCQkJCQkgICAgICB0cnVlKSkpDQoJCSAgICAgICAgICAgfCBfID0+
IGIpDQoJCSAgdGhlbiBsb29wICgpDQoJCSAgZWxzZSAoKQ0KDQoJICAgIHZhbCBfID0gbG9vcCAo
KQ0KDQoJICAgIHZhbCBlbGltQ29tcGxleEdvdG8nDQoJICAgICAgPSBmbiBibG9jayBhcyBCbG9j
ay5UIHtsYWJlbCwgDQoJCQkJICAgICBwcm9maWxlSW5mbywNCgkJCQkgICAgIHN0YXRlbWVudHMs
IA0KCQkJCSAgICAgdHJhbnNmZXIgYXMgVHJhbnNmZXIuR290byB7dGFyZ2V0fX0NCgkJID0+IGlm
IExhYmVsLmVxdWFscyhsYWJlbCx0YXJnZXQpDQoJCSAgICAgIHRoZW4gYmxvY2sNCgkJICAgICAg
ZWxzZSAoY2FzZSBnZXQgdGFyZ2V0DQoJCQkgICAgICBvZiBOT05FID0+IGJsb2NrDQoJCQkgICAg
ICAgfCBTT01FIChCbG9jay5UIHtsYWJlbCA9IGxhYmVsJywNCgkJCQkJCXByb2ZpbGVJbmZvID0g
cHJvZmlsZUluZm8nLA0KCQkJCQkJc3RhdGVtZW50cyA9IHN0YXRlbWVudHMnLA0KCQkJCQkJdHJh
bnNmZXIgPSB0cmFuc2Zlcid9KQ0KCQkJICAgICAgID0+IGxldA0KCQkJCSAgICB2YWwgXyA9IGRl
YyB7bGFiZWwgPSBsYWJlbCcsDQoJCQkJCQkganVtcEluZm8gPSBqdW1wSW5mb30NCgkJCQkgICAg
dmFsIF8gPSBMaXN0LmZvcmVhY2gNCgkJCQkgICAgICAgICAgICAoVHJhbnNmZXIudGFyZ2V0cyB0
cmFuc2ZlcicsDQoJCQkJCSAgICAgZm4gdGFyZ2V0IA0KCQkJCQkgICAgICA9PiBpbmMge2xhYmVs
ID0gdGFyZ2V0LCANCgkJCQkJCSAgICAgIGp1bXBJbmZvID0ganVtcEluZm99KQ0KDQoJCQkJICAg
IHZhbCBibG9jaw0KCQkJCSAgICAgID0gQmxvY2suVCB7bGFiZWwgPSBsYWJlbCwNCgkJCQkJCSBw
cm9maWxlSW5mbyANCgkJCQkJCSA9IFByb2ZpbGVJbmZvLmNvbWJpbmUNCgkJCQkJCSAgIChwcm9m
aWxlSW5mbywNCgkJCQkJCSAgICBwcm9maWxlSW5mbycpLA0KCQkJCQkJIHN0YXRlbWVudHMgDQoJ
CQkJCQkgPSBMaXN0LmNvbmNhdA0KCQkJCQkJICAgW3N0YXRlbWVudHMsIA0KCQkJCQkJICAgIHN0
YXRlbWVudHMnXSwNCgkJCQkJCSB0cmFuc2ZlciA9IHRyYW5zZmVyJ30NCgkJCQkgIGluDQoJCQkJ
ICAgIGJsb2NrDQoJCQkJICBlbmQpDQoJICAgICAgICAgfCBibG9jayA9PiBibG9jaw0KDQoJICAg
IHZhbCBibG9ja3MNCgkgICAgICA9IExpc3QubWFwKGJsb2NrcywgZWxpbUNvbXBsZXhHb3RvJykN
Cg0KCSAgICBmdW4gbG9vcCB7YmxvY2tzLCBjaGFuZ2VkfQ0KCSAgICAgID0gbGV0DQoJCSAgdmFs
IHtibG9ja3MsY2hhbmdlZCd9DQoJCSAgICA9IExpc3QuZm9sZHINCgkJICAgICAgKGJsb2NrcywN
CgkJICAgICAgIHtibG9ja3MgPSBbXSwgY2hhbmdlZCcgPSBmYWxzZX0sDQoJCSAgICAgICBmbiAo
YmxvY2sgYXMgQmxvY2suVCB7bGFiZWwsdHJhbnNmZXIsLi4ufSwNCgkJCSAgIHtibG9ja3MsIGNo
YW5nZWQnfSkNCgkJICAgICAgICA9PiBpZiAhKCgjZ2V0IGp1bXBJbmZvIGxhYmVsKSkgPSBNYXli
ZSAwDQoJCQkgICAgIHRoZW4gbGV0DQoJCQkJICAgIHZhbCBfID0gTGlzdC5mb3JlYWNoDQoJCQkJ
ICAgICAgICAgICAgKFRyYW5zZmVyLnRhcmdldHMgdHJhbnNmZXIsDQoJCQkJCSAgICAgZm4gdGFy
Z2V0IA0KCQkJCQkgICAgICA9PiBkZWMge2xhYmVsID0gdGFyZ2V0LA0KCQkJCQkJICAgICAganVt
cEluZm8gPSBqdW1wSW5mb30pDQoJCQkJICBpbg0KCQkJCSAgICB7YmxvY2tzID0gYmxvY2tzLA0K
CQkJCSAgICAgY2hhbmdlZCcgPSB0cnVlfQ0KCQkJCSAgZW5kDQoJCQkgICAgIGVsc2Uge2Jsb2Nr
cyA9IGJsb2NrOjpibG9ja3MsDQoJCQkJICAgY2hhbmdlZCcgPSBjaGFuZ2VkJ30pDQoJCWluDQoJ
CSAgaWYgY2hhbmdlZCcNCgkJICAgIHRoZW4gbG9vcCB7YmxvY2tzID0gYmxvY2tzLCBjaGFuZ2Vk
ID0gdHJ1ZX0NCgkJICAgIGVsc2Uge2Jsb2NrcyA9IGJsb2NrcywgY2hhbmdlZCA9IGNoYW5nZWR9
DQoJCWVuZA0KDQoJICAgIHZhbCB7YmxvY2tzLCBjaGFuZ2VkfSA9IGxvb3Age2Jsb2NrcyA9IGJs
b2NrcywgY2hhbmdlZCA9IGZhbHNlfQ0KCSAgaW4NCgkgICAge2Jsb2NrcyA9IGJsb2NrcywNCgkg
ICAgIGNoYW5nZWQgPSBjaGFuZ2VkfQ0KCSAgZW5kDQoNCiAgICAgIHZhbCAoZWxpbUNvbXBsZXhH
b3RvLCBlbGltQ29tcGxleEdvdG9fbXNnKQ0KCT0gdHJhY2VyDQoJICAiZWxpbUNvbXBsZXhHb3Rv
Ig0KCSAgZWxpbUNvbXBsZXhHb3RvDQoNCiAgICAgIGZ1biBlbGltR290byB7YmxvY2tzIDogQmxv
Y2sudCBsaXN0LA0KCQkgICAganVtcEluZm8gOiB7Z2V0OiBMYWJlbC50IC0+IHN0YXR1cyByZWZ9
fQ0KCT0gbGV0DQoJICAgIHZhbCBlbGltSWZmIA0KCSAgICAgID0gUGVlcGhvbGVCbG9jay5tYWtl
RWxpbUlmZiB7anVtcEluZm8gPSBqdW1wSW5mb30NCgkgICAgdmFsIGVsaW1Td2l0Y2hUZXN0DQoJ
ICAgICAgPSBQZWVwaG9sZUJsb2NrLm1ha2VFbGltU3dpdGNoVGVzdCB7anVtcEluZm8gPSBqdW1w
SW5mb30NCgkgICAgdmFsIGVsaW1Td2l0Y2hDYXNlcyANCgkgICAgICA9IFBlZXBob2xlQmxvY2su
bWFrZUVsaW1Td2l0Y2hDYXNlcyB7anVtcEluZm8gPSBqdW1wSW5mb30NCg0KCSAgICBmdW4gbG9v
cCB7YmxvY2tzLGNoYW5nZWR9DQoJICAgICAgPSBsZXQNCgkJICB2YWwge2Jsb2NrcywNCgkJICAg
ICAgIGNoYW5nZWQgPSBjaGFuZ2VkX2VsaW1TaW1wbGVHb3RvfQ0KCQkgICAgPSBlbGltU2ltcGxl
R290byB7YmxvY2tzID0gYmxvY2tzLA0KCQkJCSAgICAgIGp1bXBJbmZvID0ganVtcEluZm99DQoN
CgkJICB2YWwge2Jsb2NrcywNCgkJICAgICAgIGNoYW5nZWQgPSBjaGFuZ2VkX3BlZXBob2xlQmxv
Y2tzfQ0KCQkgICAgPSBQZWVwaG9sZUJsb2NrLnBlZXBob2xlQmxvY2tzDQoJCSAgICAgIHtibG9j
a3MgPSBibG9ja3MsDQoJCSAgICAgICBvcHRpbWl6YXRpb25zID0gW2VsaW1JZmYsDQoJCQkJCWVs
aW1Td2l0Y2hUZXN0LA0KCQkJCQllbGltU3dpdGNoQ2FzZXNdfQ0KCQlpbg0KCQkgIGlmIGNoYW5n
ZWRfZWxpbVNpbXBsZUdvdG8gb3JlbHNlIGNoYW5nZWRfcGVlcGhvbGVCbG9ja3MNCgkJICAgIHRo
ZW4gbG9vcCB7YmxvY2tzID0gYmxvY2tzLCBjaGFuZ2VkID0gdHJ1ZX0NCgkJICAgIGVsc2Uge2Js
b2NrcyA9IGJsb2NrcywgY2hhbmdlZCA9IGNoYW5nZWR9DQoJCWVuZA0KDQoJICAgIHZhbCB7Ymxv
Y2tzLCANCgkJIGNoYW5nZWQgPSBjaGFuZ2VkX2xvb3B9IA0KCSAgICAgID0gbG9vcCB7YmxvY2tz
ID0gYmxvY2tzLCBjaGFuZ2VkID0gZmFsc2V9DQoNCgkgICAgdmFsIHtibG9ja3MsDQoJCSBjaGFu
Z2VkID0gY2hhbmdlZF9lbGltQ29tcGxleEdvdG99IA0KCSAgICAgID0gZWxpbUNvbXBsZXhHb3Rv
IHtibG9ja3MgPSBibG9ja3MsDQoJCQkJIGp1bXBJbmZvID0ganVtcEluZm99DQoJICBpbg0KCSAg
ICB7YmxvY2tzID0gYmxvY2tzLA0KCSAgICAgY2hhbmdlZCA9IGNoYW5nZWRfbG9vcCBvcmVsc2Ug
Y2hhbmdlZF9lbGltQ29tcGxleEdvdG99DQoJICBlbmQNCg0KICAgICAgdmFsIChlbGltR290bywg
ZWxpbUdvdG9fbXNnKQ0KCT0gdHJhY2VyDQoJICAiZWxpbUdvdG8iDQoJICBlbGltR290bw0KDQog
ICAgICB2YWwgZWxpbUdvdG9fbXNnIA0KCT0gZm4gKCkgPT4gKGVsaW1Hb3RvX21zZyAoKTsNCgkJ
ICAgIENvbnRyb2wuaW5kZW50ICgpOw0KCQkgICAgUGVlcGhvbGVCbG9jay5lbGltSWZmX21zZyAo
KTsNCgkJICAgIFBlZXBob2xlQmxvY2suZWxpbVN3aXRjaFRlc3RfbXNnICgpOw0KCQkgICAgUGVl
cGhvbGVCbG9jay5lbGltU3dpdGNoQ2FzZXNfbXNnICgpOw0KCQkgICAgZWxpbVNpbXBsZUdvdG9f
bXNnICgpOw0KCQkgICAgZWxpbUNvbXBsZXhHb3RvX21zZyAoKTsNCgkJICAgIENvbnRyb2wudW5p
bmRlbnQgKCkpDQogICAgZW5kDQoNCiAgc3RydWN0dXJlIExpdmVuZXNzID0NCiAgICBzdHJ1Y3QN
Cg0KICAgICAgdHlwZSB0ID0ge2xpdmVPdXQ6IE1lbUxvYy50IGxpc3QsDQoJCWRlYWQ6IE1lbUxv
Yy50IGxpc3R9DQoNCiAgICAgIGZ1biB0b1N0cmluZyB7bGl2ZU91dCwgZGVhZH0NCgk9IGxldA0K
CSAgICBmdW4gZG9pdCAobmFtZSwgbCwgdG9TdHJpbmcsIHMpDQoJICAgICAgPSBMaXN0LmZvbGQo
bCwgcywNCgkJCSAgZm4gKHgsIHMpDQoJCQkgICA9PiBjb25jYXQgW25hbWUsIHRvU3RyaW5nIHgs
ICJcbiIsIHNdKQ0KCSAgaW4NCgkgICAgZG9pdCgibGl2ZU91dDogIiwgbGl2ZU91dCwgTWVtTG9j
LnRvU3RyaW5nLA0KCSAgICBkb2l0KCJkZWFkOiAiLCBkZWFkLCBNZW1Mb2MudG9TdHJpbmcsDQoJ
CSAiIikpDQoJICBlbmQNCgkNCiAgICAgIGZ1biBlcSh7bGl2ZU91dCA9IGxpdmVPdXQxLA0KCSAg
ICAgIGRlYWQgPSBkZWFkMX0sDQoJICAgICB7bGl2ZU91dCA9IGxpdmVPdXQyLA0KCSAgICAgIGRl
YWQgPSBkZWFkMn0pDQoJPSBMaXN0LmVxdWFsc0FzU2V0KGxpdmVPdXQxLCBsaXZlT3V0MiwgTWVt
TG9jLmVxKQ0KCSAgYW5kYWxzbw0KCSAgTGlzdC5lcXVhbHNBc1NldChkZWFkMSwgZGVhZDIsIE1l
bUxvYy5lcSkNCg0KICAgICAgZnVuIHRlbXBfdXNlc19kZWZzIHt1c2VzIDogT3BlcmFuZC50IGxp
c3QsDQoJCQkgIGRlZnMgOiBPcGVyYW5kLnQgbGlzdH0NCgk9IGxldA0KCSAgICB2YWwgYmFzZVVz
ZXMNCgkgICAgICA9IExpc3QuZm9sZA0KCSAgICAgICAgKHVzZXMsDQoJCSBbXSwNCgkJIGZuIChv
cGVyYW5kLCBiYXNlVXNlcykNCgkJICA9PiBjYXNlIE9wZXJhbmQuZGVNZW1sb2Mgb3BlcmFuZA0K
CQkgICAgICAgb2YgU09NRSBtZW1sb2MgPT4gaWYgTWVtTG9jLmlzVGVtcCBtZW1sb2MNCgkJCSAg
ICAgICAgICAgICAgICAgICAgYW5kYWxzbyANCgkJCQkJICAgIG5vdCAoTGlzdC5jb250YWlucyhi
YXNlVXNlcywNCgkJCQkJCQkgICAgICAgbWVtbG9jLA0KCQkJCQkJCSAgICAgICBNZW1Mb2MuZXEp
KQ0KCQkJCQkgICB0aGVuIG1lbWxvYzo6YmFzZVVzZXMNCgkJCQkJICAgZWxzZSBiYXNlVXNlcw0K
CQkgICAgICAgIHwgTk9ORSA9PiBiYXNlVXNlcykNCgkJICAgDQoJICAgIHZhbCB0ZW1wVXNlcw0K
CSAgICAgID0gbGV0DQoJCSAgZnVuIGRvaXQgKG9wZXJhbmRzLCB0ZW1wVXNlcykNCgkJICAgID0g
TGlzdC5mb2xkDQoJCSAgICAgIChvcGVyYW5kcywNCgkJICAgICAgIHRlbXBVc2VzLA0KCQkgICAg
ICAgZm4gKG9wZXJhbmQsIHRlbXBVc2VzKQ0KCQkgICAgICAgID0+IGNhc2UgT3BlcmFuZC5kZU1l
bWxvYyBvcGVyYW5kDQoJCQkgICAgIG9mIFNPTUUgbWVtbG9jDQoJCQkgICAgICA9PiBMaXN0LmZv
bGQoTWVtTG9jLnV0aWxpemVkIG1lbWxvYywNCgkJCQkJICAgdGVtcFVzZXMsDQoJCQkJCSAgIGZu
IChtZW1sb2MsIHRlbXBVc2VzKQ0KCQkJCQkgICAgPT4gaWYgTWVtTG9jLmlzVGVtcCBtZW1sb2MN
CgkJCQkJICAgICAgICAgIGFuZGFsc28NCgkJCQkJCSAgbm90IChMaXN0LmNvbnRhaW5zKHRlbXBV
c2VzLA0KCQkJCQkJCQkgICAgIG1lbWxvYywNCgkJCQkJCQkJICAgICBNZW1Mb2MuZXEpKQ0KCQkJ
CQkJIHRoZW4gbWVtbG9jOjp0ZW1wVXNlcw0KCQkJCQkJIGVsc2UgdGVtcFVzZXMpDQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8IE5PTkUgPT4gdGVtcFVzZXMpDQoJCWluDQoJCSAgZG9p
dChkZWZzLCANCgkJICBkb2l0KHVzZXMsIA0KCQkgICAgICAgYmFzZVVzZXMpKQ0KCQllbmQNCg0K
CSAgICB2YWwgYmFzZURlZnMNCgkgICAgICA9IExpc3QuZm9sZA0KCSAgICAgICAgKGRlZnMsDQoJ
CSBbXSwNCgkJIGZuIChvcGVyYW5kLCBiYXNlRGVmcykNCgkJICA9PiBjYXNlIE9wZXJhbmQuZGVN
ZW1sb2Mgb3BlcmFuZA0KCQkgICAgICAgb2YgU09NRSBtZW1sb2MgPT4gaWYgTWVtTG9jLmlzVGVt
cCBtZW1sb2MNCgkJCSAgICAgICAgICAgICAgICAgICAgYW5kYWxzbyANCgkJCQkJICAgIG5vdCAo
TGlzdC5jb250YWlucyhiYXNlRGVmcywNCgkJCQkJCQkgICAgICAgbWVtbG9jLA0KCQkJCQkJCSAg
ICAgICBNZW1Mb2MuZXEpKQ0KCQkJCQkgICB0aGVuIG1lbWxvYzo6YmFzZURlZnMNCgkJCQkJICAg
ZWxzZSBiYXNlRGVmcw0KCQkJfCBOT05FID0+IGJhc2VEZWZzKQ0KCSAgICB2YWwgdGVtcERlZnMg
PSBiYXNlRGVmcw0KCSAgaW4NCgkgICAge3VzZXMgPSB0ZW1wVXNlcywNCgkgICAgIGRlZnMgPSB0
ZW1wRGVmc30NCgkgIGVuZA0KDQogICAgICBmdW4gbGl2ZW5lc3Mge3VzZXMgOiBNZW1Mb2MudCBs
aXN0LA0KCQkgICAgZGVmcyA6IE1lbUxvYy50IGxpc3QsDQoJCSAgICBsaXZlIDogTWVtTG9jLnQg
bGlzdH0gOiANCgkgICAgICAgICAgIHtpbmZvIDogdCwNCgkJICAgIGxpdmUgOiBNZW1Mb2MudCBs
aXN0fQ0KCT0gbGV0DQoJICAgIHZhbCBsaXZlT3V0ID0gbGl2ZQ0KDQoJICAgIHZhbCBsaXZlSW4N
CgkgICAgICA9IGxldA0KCQkgIGZ1biBkb2l0IChtZW1sb2NzLCBsaXZlSW4pDQoJCSAgICA9IExp
c3QuZm9sZChtZW1sb2NzLA0KCQkJCWxpdmVJbiwNCgkJCQlmbiAobWVtbG9jLGxpdmVJbikNCgkJ
CQkgPT4gaWYgTGlzdC5jb250YWlucyhkZWZzLA0KCQkJCQkJICAgICBtZW1sb2MsDQoJCQkJCQkg
ICAgIE1lbUxvYy5lcSkNCiAgCQkJCSAgICAgICBvcmVsc2UNCgkJCQkgICAgICAgTGlzdC5jb250
YWlucyhsaXZlSW4sDQoJCQkJCQkgICAgIG1lbWxvYywNCgkJCQkJCSAgICAgTWVtTG9jLmVxKQ0K
CQkJCSAgICAgIHRoZW4gbGl2ZUluDQoJCQkJICAgICAgZWxzZSBtZW1sb2M6OmxpdmVJbikNCgkJ
aW4NCgkJICBkb2l0KGxpdmUsDQoJCSAgICAgICB1c2VzKQ0KCQllbmQNCg0KCSAgICB2YWwgZGVh
ZA0KCSAgICAgID0gbGV0DQoJCSAgZnVuIGRvaXQgKG1lbWxvY3MsIGRlYWQpDQoJCSAgICA9IExp
c3QuZm9sZChtZW1sb2NzLA0KCQkJCWRlYWQsDQoJCQkJZm4gKG1lbWxvYyxkZWFkKQ0KCQkJCSA9
PiBpZiBMaXN0LmNvbnRhaW5zKGxpdmVPdXQsDQoJCQkJCQkgICAgIG1lbWxvYywNCgkJCQkJCSAg
ICAgTWVtTG9jLmVxKQ0KCQkJCSAgICAgICBvcmVsc2UNCgkJCQkgICAgICAgTGlzdC5jb250YWlu
cyhkZWFkLA0KCQkJCQkJICAgICBtZW1sb2MsDQoJCQkJCQkgICAgIE1lbUxvYy5lcSkNCgkJCQkg
ICAgICB0aGVuIGRlYWQNCgkJCQkgICAgICBlbHNlIG1lbWxvYzo6ZGVhZCkNCgkJaW4NCgkJICBk
b2l0KGxpdmVJbiwNCgkJICBkb2l0KGRlZnMsDQoJCSAgICAgICBbXSkpDQoJCWVuZA0KCSAgaW4N
CgkgICAge2luZm8gPSB7bGl2ZU91dCA9IGxpdmVPdXQsDQoJCSAgICAgZGVhZCA9IGRlYWR9LA0K
CSAgICAgbGl2ZSA9IGxpdmVJbn0NCgkgIGVuZA0KDQogICAgICBmdW4gbGl2ZW5lc3NBc3NlbWJs
eSB7YXNzZW1ibHk6IEFzc2VtYmx5LnQsDQoJCQkgICAgbGl2ZTogTWVtTG9jLnQgbGlzdH0gOg0K
CSAgICAgICAgICAgICAgICAgICB7aW5mbzogdCwNCgkJCSAgICBsaXZlOiBNZW1Mb2MudCBsaXN0
fQ0KCT0gbGV0DQoJICAgIHZhbCB7dXNlcyxkZWZzLC4uLn0gPSBBc3NlbWJseS51c2VzX2RlZnNf
a2lsbHMgYXNzZW1ibHkNCgkgICAgdmFsIHt1c2VzLGRlZnN9ID0gdGVtcF91c2VzX2RlZnMge3Vz
ZXMgPSB1c2VzLCBkZWZzID0gZGVmc30NCgkgIGluIA0KCSAgICBsaXZlbmVzcyB7dXNlcyA9IHVz
ZXMsDQoJCSAgICAgIGRlZnMgPSBkZWZzLA0KCQkgICAgICBsaXZlID0gbGl2ZX0NCgkgIGVuZCAN
Cg0KICAgICAgZnVuIGxpdmVuZXNzVHJhbnNmZXInIHt0cmFuc2ZlcjogVHJhbnNmZXIudCwNCgkJ
CSAgICAgbGl2ZTogTWVtTG9jLnQgbGlzdH0gOg0KCSAgICAgICAgICAgICAgICAgICAge2luZm86
IHQsDQoJCQkgICAgIGxpdmU6IE1lbUxvYy50IGxpc3R9DQoJPSBsZXQNCgkgICAgdmFsIHt1c2Vz
LGRlZnMsLi4ufSA9IFRyYW5zZmVyLnVzZXNfZGVmc19raWxscyB0cmFuc2Zlcg0KCSAgICB2YWwg
e3VzZXMsZGVmc30gPSB0ZW1wX3VzZXNfZGVmcyB7dXNlcyA9IHVzZXMsIGRlZnMgPSBkZWZzfQ0K
CSAgaW4gDQoJICAgIGxpdmVuZXNzIHt1c2VzID0gdXNlcywNCgkJICAgICAgZGVmcyA9IGRlZnMs
DQoJCSAgICAgIGxpdmUgPSBsaXZlfQ0KCSAgZW5kDQoNCiAgICAgIGZ1biBsaXZlbmVzc1RyYW5z
ZmVyIHt0cmFuc2ZlcjogVHJhbnNmZXIudCwNCgkJCSAgICBsaXZlSW5mbyANCgkJCSAgICBhcyB7
Z2V0OiBMYWJlbC50IC0+IE1lbUxvYy50IGxpc3QsDQoJCQkJc2V0OiBMYWJlbC50ICogTWVtTG9j
LnQgbGlzdCAtPiB1bml0fX0gOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAge2luZm86IHQs
DQoJCQkgICAgbGl2ZTogTWVtTG9jLnQgbGlzdH0NCgk9IGxldA0KCSAgICB2YWwgdGFyZ2V0cyA9
IFRyYW5zZmVyLnRhcmdldHMgdHJhbnNmZXINCgkgICAgdmFsIGxpdmUgPSBMaXN0LmNvbmNhdE1h
cCh0YXJnZXRzLCBnZXQpDQoJICBpbg0KCSAgICBsaXZlbmVzc1RyYW5zZmVyJyB7dHJhbnNmZXIg
PSB0cmFuc2ZlciwNCgkJCSAgICAgICBsaXZlID0gbGl2ZX0NCgkgIGVuZA0KDQogICAgICBmdW4g
bGl2ZW5lc3NCbG9ja0ZuIHtibG9jayBhcyBCbG9jay5UIHtsYWJlbCwgcHJvZmlsZUluZm8sDQoJ
CQkJCSAgICAgc3RhdGVtZW50cywgdHJhbnNmZXJ9fQ0KCT0gbGV0DQoJICAgIHZhbCB7dXNlcywg
ZGVmcywgLi4ufSA9IFRyYW5zZmVyLnVzZXNfZGVmc19raWxscyB0cmFuc2Zlcg0KCSAgICB2YWwg
e3VzZXMsIGRlZnN9ID0gdGVtcF91c2VzX2RlZnMge3VzZXMgPSB1c2VzLCBkZWZzID0gZGVmc30N
Cg0KCSAgICB2YWwge3VzZXNfYmxvY2ssIGRlZnNfYmxvY2t9DQoJICAgICAgPSBMaXN0LmZvbGRy
DQoJICAgICAgICAoc3RhdGVtZW50cywNCgkJIHt1c2VzX2Jsb2NrID0gdXNlcywNCgkJICBkZWZz
X2Jsb2NrID0gZGVmc30sDQoJCSBmbiAoYXNtLHt1c2VzX2Jsb2NrLGRlZnNfYmxvY2t9KQ0KCQkg
ID0+IGxldA0KCQkgICAgICAgdmFsIHt1c2VzLGRlZnMsLi4ufSANCgkJCSA9IEFzc2VtYmx5LnVz
ZXNfZGVmc19raWxscyBhc20NCgkJICAgICAgIHZhbCB7dXNlcyxkZWZzfSANCgkJCSA9IHRlbXBf
dXNlc19kZWZzIHt1c2VzID0gdXNlcywgZGVmcyA9IGRlZnN9DQoNCgkJICAgICAgIHZhbCB1c2Vz
X2Jsb2NrDQoJCQkgPSBMaXN0LmZvbGQodXNlc19ibG9jaywNCgkJCQkgICAgIHVzZXMsDQoJCQkJ
ICAgICBmbiAobWVtbG9jLHVzZXNfYmxvY2spDQoJCQkJICAgICAgPT4gaWYgTGlzdC5jb250YWlu
cyhkZWZzLA0KCQkJCQkJCSAgbWVtbG9jLA0KCQkJCQkJCSAgTWVtTG9jLmVxKQ0KCQkJCSAgICAg
ICAgICAgIG9yZWxzZQ0KCQkJCQkgICAgTGlzdC5jb250YWlucyh1c2VzX2Jsb2NrLA0KCQkJCQkJ
CSAgbWVtbG9jLA0KCQkJCQkJCSAgTWVtTG9jLmVxKQ0KCQkJCQkgICB0aGVuIHVzZXNfYmxvY2sN
CgkJCQkJICAgZWxzZSBtZW1sb2M6OnVzZXNfYmxvY2spDQoNCgkJICAgICAgIHZhbCBkZWZzX2Js
b2NrDQoJCQkgPSBMaXN0LmZvbGQoZGVmcywNCgkJCQkgICAgIGRlZnNfYmxvY2ssDQoJCQkJICAg
ICBmbiAobWVtbG9jLGRlZnNfYmxvY2spDQoJCQkJICAgICAgPT4gaWYgTGlzdC5jb250YWlucyhk
ZWZzX2Jsb2NrLA0KCQkJCQkJCSAgbWVtbG9jLA0KCQkJCQkJCSAgTWVtTG9jLmVxKQ0KCQkJCQkg
ICB0aGVuIGRlZnNfYmxvY2sNCgkJCQkJICAgZWxzZSBtZW1sb2M6OmRlZnNfYmxvY2spDQoJCQkJ
CQkJIA0KCQkgICAgIGluDQoJCSAgICAgICB7dXNlc19ibG9jayA9IHVzZXNfYmxvY2ssDQoJCQlk
ZWZzX2Jsb2NrID0gZGVmc19ibG9ja30NCgkJICAgICBlbmQpDQoJICBpbg0KCSAgICBmbiBsaXZl
ID0+IGxpdmVuZXNzIHt1c2VzID0gdXNlc19ibG9jaywNCgkJCQkgZGVmcyA9IGRlZnNfYmxvY2ss
DQoJCQkJIGxpdmUgPSBsaXZlfQ0KCSAgZW5kDQoNCigqDQogICAgICBmdW4gdmVyaWZ5TGl2ZUlu
Zm8ge2Jsb2NrcywNCgkJCSAgbGl2ZUluZm8NCgkJCSAgYXMge2dldDogTGFiZWwudCAtPiBNZW1M
b2MudCBsaXN0LA0KCQkJICAgICAgc2V0OiBMYWJlbC50ICogTWVtTG9jLnQgbGlzdCAtPiB1bml0
fX0NCgk9IGxldCANCgkgICAgdmFsIGVycm9yID0gZm4gXyA9PiBFcnJvci5idWcgImdldEJsb2Nr
SW5mbzogbGl2ZW5lc3NGbiINCgkgICAgdmFsIGJsb2NrSW5mbw0KCSAgICAgIGFzIHtnZXQgPSBn
ZXRCbG9ja0luZm8gOiANCgkJICAgICAgICBMYWJlbC50IC0+IA0KCQkJe3ByZWQ6IExhYmVsLnQg
bGlzdCByZWYsDQoJCQkgc3VjYzogTGFiZWwudCBsaXN0IHJlZiwNCgkJCSB0b3BvOiBpbnQgcmVm
LA0KCQkJIGxpdmVuZXNzRm46IChNZW1Mb2MudCBsaXN0IC0+IA0KCQkJCSAgICAgIHtpbmZvOiB0
LCBsaXZlOiBNZW1Mb2MudCBsaXN0fSkgcmVmfX0NCgkgICAgICA9IFByb3BlcnR5LmdldA0KCSAg
ICAgICAgKExhYmVsLnBsaXN0LA0KCSAgICAgICAgIFByb3BlcnR5LmluaXRGdW4gKGZuIGxhYmVs
ID0+IHtwcmVkID0gcmVmIFtdLA0KCQkJCQkJc3VjYyA9IHJlZiBbXSwNCgkJCQkJCXRvcG8gPSBy
ZWYgfjEsDQoJCQkJCQlsaXZlbmVzc0ZuID0gcmVmIGVycm9yfSkpDQoJICAgIHZhbCBnZXRfcHJl
ZCA9ICgjcHJlZCBvIGdldEJsb2NrSW5mbykNCgkgICAgdmFsIGdldF9zdWNjID0gKCNzdWNjIG8g
Z2V0QmxvY2tJbmZvKQ0KCSAgICB2YWwgZ2V0X3RvcG8gPSAoI3RvcG8gbyBnZXRCbG9ja0luZm8p
DQoJICAgIHZhbCBnZXRfbGl2ZW5lc3NGbiA9ICgjbGl2ZW5lc3NGbiBvIGdldEJsb2NrSW5mbykN
CgkgICAgdmFsIGdldF9wcmVkJyA9ICghIG8gI3ByZWQgbyBnZXRCbG9ja0luZm8pDQoJICAgIHZh
bCBnZXRfc3VjYycgPSAoISBvICNzdWNjIG8gZ2V0QmxvY2tJbmZvKQ0KCSAgICB2YWwgZ2V0X3Rv
cG8nID0gKCEgbyAjdG9wbyBvIGdldEJsb2NrSW5mbykNCgkgICAgdmFsIGdldF9saXZlbmVzc0Zu
JyA9ICghIG8gI2xpdmVuZXNzRm4gbyBnZXRCbG9ja0luZm8pDQoNCgkgICAgdmFsIGxhYmVscw0K
CSAgICAgID0gTGlzdC5tYXANCgkgICAgICAgIChibG9ja3MsDQoJCSBmbiBibG9jaycgYXMgQmxv
Y2suVCB7bGFiZWwsdHJhbnNmZXIsLi4ufQ0KCQkgID0+IGxldA0KCQkgICAgICAgdmFsIHtzdWNj
LHRvcG8sbGl2ZW5lc3NGbiwuLi59ID0gZ2V0QmxvY2tJbmZvIGxhYmVsDQoJCSAgICAgICB2YWwg
dGFyZ2V0cyA9IFRyYW5zZmVyLnRhcmdldHMgdHJhbnNmZXINCgkJICAgICBpbiAJCQ0KCQkgICAg
ICAgc3VjYyA6PSB0YXJnZXRzOw0KCQkgICAgICAgdG9wbyA6PSAwOw0KCQkgICAgICAgbGl2ZW5l
c3NGbiA6PSBsaXZlbmVzc0Jsb2NrRm4ge2Jsb2NrID0gYmxvY2snfTsNCgkJICAgICAgIExpc3Qu
Zm9yZWFjaA0KCQkgICAgICAgKHRhcmdldHMsDQoJCQlmbiB0YXJnZXQgPT4gTGlzdC5wdXNoKGdl
dF9wcmVkIHRhcmdldCwgbGFiZWwpKTsNCgkJICAgICAgIGxhYmVsDQoJCSAgICAgZW5kKQ0KDQoJ
ICAgIGxvY2FsDQoJICAgICAgdmFsIHRvZG8gPSByZWYgW10NCgkgICAgICBmdW4gdG9wb19vcmRl
cih4LHkpID0gSW50LmNvbXBhcmUoZ2V0X3RvcG8nIHgsIGdldF90b3BvJyB5KQ0KCSAgICBpbg0K
CSAgICAgIGZ1biBhZGRfdG9kbyB4ID0gdG9kbyA6PSBMaXN0Lmluc2VydCghdG9kbywgeCwgdG9w
b19vcmRlcikNCgkgICAgICBmdW4gcHVzaF90b2RvIHggPSB0b2RvIDo9IHg6OighdG9kbykNCgkg
ICAgICBmdW4gcmV2X3RvZG8gKCkgPSB0b2RvIDo9IExpc3QucmV2ICghdG9kbykNCgkgICAgICBm
dW4gZ2V0X3RvZG8gKCkgDQoJCT0gKGNhc2UgIXRvZG8NCgkJICAgICBvZiBbXSA9PiBOT05FDQoJ
CSAgICAgIHwgKHg6OnRvZG8nKSA9PiAodG9kbyA6PSB0b2RvJzsNCgkJCQkgICAgICAgU09NRSB4
KSkNCgkgICAgZW5kDQoNCgkgICAgbG9jYWwNCgkgICAgICB2YWwgbnVtID0gcmVmIDENCgkgICAg
aW4NCgkgICAgICBmdW4gdG9wb19zb3J0IGxhYmVsDQoJCT0gbGV0DQoJCSAgICB2YWwge3RvcG8s
IHByZWQsIC4uLn0gPSBnZXRCbG9ja0luZm8gbGFiZWwNCgkJICBpbg0KCQkgICAgaWYgIXRvcG8g
PSAwDQoJCSAgICAgIHRoZW4gKHRvcG8gOj0gIW51bTsNCgkJCSAgICBJbnQuaW5jIG51bTsNCgkJ
CSAgICBwdXNoX3RvZG8gbGFiZWw7DQoJCQkgICAgTGlzdC5mb3JlYWNoKCFwcmVkLCB0b3BvX3Nv
cnQpKQ0KCQkgICAgICBlbHNlICgpDQoJCSAgZW5kDQoJICAgICAgZnVuIHRvcG9fcm9vdCBsYWJl
bA0KCQk9IChnZXRfdG9wbyBsYWJlbCA6PSAhbnVtOw0KCQkgICBJbnQuaW5jIG51bTsNCgkJICAg
cHVzaF90b2RvIGxhYmVsKQ0KCSAgICBlbmQNCg0KCSAgICBmdW4gbG9vcCAobGFiZWxzLCBuKQ0K
CSAgICAgID0gaWYgTGlzdC5pc0VtcHR5IGxhYmVscw0KCQkgIHRoZW4gKCkNCgkJICBlbHNlIGxl
dA0KCQkJIHZhbCAoZXhpdHMsbGFiZWxzKQ0KCQkJICAgPSBwYXJ0aXRpb24NCgkJCSAgICAgKGxh
YmVscywNCgkJCSAgICAgIGZuIGxhYmVsDQoJCQkgICAgICAgPT4gbGV0DQoJCQkJICAgIHZhbCBz
dWNjID0gZ2V0X3N1Y2MnIGxhYmVsDQoJCQkJICAgIHZhbCBzdWNjJyANCgkJCQkgICAgICA9IExp
c3QucmVtb3ZlQWxsDQoJCQkJICAgICAgICAoc3VjYywNCgkJCQkJIGZuIHRhcmdldCANCgkJCQkJ
ICA9PiBnZXRfdG9wbycgdGFyZ2V0ID0gfjEpDQoJCQkJICBpbg0KCQkJCSAgICBMaXN0Lmxlbmd0
aCBzdWNjJyA9IG4NCgkJCQkgIGVuZCkNCgkJCSB2YWwgZXhpdHMNCgkJCSAgID0gTGlzdC5yZW1v
dmVBbGwNCgkJCSAgICAgKGV4aXRzLA0KCQkJICAgICAgZm4gbGFiZWwgPT4gZ2V0X3RvcG8nIGxh
YmVsIDw+IDApDQoJCQkgdmFsIF8gDQoJCQkgICA9IChMaXN0LmZvcmVhY2gNCgkJCSAgICAgIChl
eGl0cywgDQoJCQkgICAgICAgZm4gbGFiZWwgPT4gdG9wb19yb290IGxhYmVsKTsNCgkJCSAgICAg
IExpc3QuZm9yZWFjaA0KCQkJICAgICAgKGV4aXRzLA0KCQkJICAgICAgIGZuIGxhYmVsIA0KCQkJ
ICAgICAgICA9PiBMaXN0LmZvcmVhY2goZ2V0X3ByZWQnIGxhYmVsLCB0b3BvX3NvcnQpKSkNCgkJ
ICAgICAgIGluDQoJCQkgbG9vcChsYWJlbHMsIG4gKyAxKQ0KCQkgICAgICAgZW5kDQoJICAgIHZh
bCBfID0gbG9vcChsYWJlbHMsIDApDQoJICAgIHZhbCBfID0gcmV2X3RvZG8gKCkNCg0KCSAgICB2
YWwgY2hhbmdlZCA9IHJlZiBmYWxzZQ0KCSAgICBmdW4gZG9pdCAoKQ0KCSAgICAgID0gKGNhc2Ug
Z2V0X3RvZG8gKCkNCgkJICAgb2YgTk9ORSA9PiAoKQ0KCQkgICAgfCBTT01FIGxhYmVsDQoJCSAg
ICA9PiBsZXQNCgkJCSB2YWwge3ByZWQsIHN1Y2MsIGxpdmVuZXNzRm4sIC4uLn0gPSBnZXRCbG9j
a0luZm8gbGFiZWwNCg0KCQkJIHZhbCBsaXZlID0gTGlzdC5jb25jYXRNYXANCgkJCSAgICAgICAg
ICAgICghc3VjYywNCgkJCQkgICAgIGZuIGxhYmVsID0+IGNhc2UgZ2V0IGxhYmVsDQoJCQkJCQkg
ICAgb2YgU09NRSBsaXZlID0+IGxpdmUNCgkJCQkJCSAgICAgfCBOT05FID0+IFtdKQ0KCQkJCSAg
ICANCgkJCSB2YWwge2xpdmUsLi4ufSA9ICghbGl2ZW5lc3NGbikgbGl2ZQ0KDQoJCQkgdmFsIGxp
dmUnID0gY2FzZSBnZXQgbGFiZWwNCgkJCQkgICAgICAgb2YgU09NRSBsaXZlJyA9PiBsaXZlJw0K
CQkJCQl8IE5PTkUgPT4gW10NCgkJICAgICAgIGluDQoJCQkgaWYgTGlzdC5lcXVhbHNBc1NldChs
aXZlLGxpdmUnLE1lbUxvYy5lcSkNCgkJCSAgIHRoZW4gKCkNCgkJCSAgIGVsc2UgKHNldChsYWJl
bCwgU09NRSBsaXZlKTsNCgkJCQkgTGlzdC5mb3JlYWNoKCFwcmVkLCBhZGRfdG9kbyk7DQooKg0K
CQkJCSBwcmludCAiTGl2ZW5lc3M6IHZlcmlmeUxpdmVJbmZvOiAiOw0KCQkJCSBwcmludCAoTGFi
ZWwudG9TdHJpbmcgbGFiZWwpOw0KCQkJICAgICAgICAgcHJpbnQgIlxuIjsNCgkJCSAgICAgICAg
IHByaW50ICJiYWNrZW5kOiAiOw0KCQkJICAgICAgICAgTGlzdC5mb3JlYWNoDQoJCQkgICAgICAg
ICAobGl2ZScsDQoJCQkgICAgICAgICAgZm4gbSANCgkJCSAgICAgICAgICAgPT4gKHByaW50IChN
ZW1Mb2MudG9TdHJpbmcgbSk7DQoJCQkgICAgICAgICBwcmludCAiICIpKTsNCgkJCSAgICAgICAg
IHByaW50ICJcbiI7DQoJCQkgICAgICAgICBwcmludCAiY2FsY3VsYXRlZDogIjsNCgkJCQkgTGlz
dC5mb3JlYWNoDQoJCQkgICAgICAgICAobGl2ZSwNCgkJCSAgICAgICAgICBmbiBtIA0KCQkJICAg
ICAgICAgICA9PiAocHJpbnQgKE1lbUxvYy50b1N0cmluZyBtKTsNCgkJCSAgICAgICAJIHByaW50
ICIgIikpOw0KCQkJICAgICAgICAgcHJpbnQgIlxuIjsNCiopDQoJCQkJIGNoYW5nZWQgOj0gdHJ1
ZSk7DQoJCQkgZG9pdCAoKQ0KCQkgICAgICAgZW5kKQ0KCSAgICB2YWwgXyA9IGRvaXQgKCkNCgkg
IGluDQoJICAgIHtjaGFuZ2VkID0gIWNoYW5nZWR9DQoJICBlbmQNCiopDQoNCiAgICAgIGZ1biB2
ZXJpZnlMaXZlSW5mbyB7YmxvY2tzLA0KCQkJICBsaXZlSW5mbw0KCQkJICBhcyB7Z2V0OiBMYWJl
bC50IC0+IE1lbUxvYy50IGxpc3QsDQoJCQkgICAgICBzZXQ6IExhYmVsLnQgKiBNZW1Mb2MudCBs
aXN0IC0+IHVuaXR9fQ0KCT0gbGV0IA0KCSAgICB2YWwgYmxvY2tJbmZvDQoJICAgICAgYXMge2dl
dCA9IGdldEJsb2NrSW5mbyA6IA0KCQkgICAgICAgIExhYmVsLnQgLT4ge3ByZWQ6IExhYmVsLnQg
bGlzdCByZWYsDQoJCQkJICAgIGJsb2NrOiBCbG9jay50IG9wdGlvbiByZWYsDQoJCQkJICAgIHRv
cG86IGludCByZWZ9fQ0KCSAgICAgID0gUHJvcGVydHkuZ2V0DQoJICAgICAgICAoTGFiZWwucGxp
c3QsDQoJICAgICAgICAgUHJvcGVydHkuaW5pdEZ1biAoZm4gbGFiZWwgPT4ge3ByZWQgPSByZWYg
W10sDQoJCQkJCQlibG9jayA9IHJlZiBOT05FLA0KCQkJCQkJdG9wbyA9IHJlZiB+MX0pKQ0KCSAg
ICB2YWwgZ2V0X3ByZWQgPSAoI3ByZWQgbyBnZXRCbG9ja0luZm8pDQoJICAgIHZhbCBnZXRfYmxv
Y2sgPSAoI2Jsb2NrIG8gZ2V0QmxvY2tJbmZvKQ0KCSAgICB2YWwgZ2V0X3RvcG8gPSAoI3RvcG8g
byBnZXRCbG9ja0luZm8pDQoJICAgIHZhbCBnZXRfcHJlZCcgPSAoISBvICNwcmVkIG8gZ2V0Qmxv
Y2tJbmZvKQ0KCSAgICB2YWwgZ2V0X2Jsb2NrJyA9ICghIG8gI2Jsb2NrIG8gZ2V0QmxvY2tJbmZv
KQ0KCSAgICB2YWwgZ2V0X3RvcG8nID0gKCEgbyAjdG9wbyBvIGdldEJsb2NrSW5mbykNCg0KCSAg
ICB2YWwgbGFiZWxzDQoJICAgICAgPSBMaXN0Lm1hcA0KCSAgICAgICAgKGJsb2NrcywNCgkJIGZu
IGJsb2NrJyBhcyBCbG9jay5UIHtsYWJlbCx0cmFuc2ZlciwuLi59DQoJCSAgPT4gbGV0DQoJCSAg
ICAgICB2YWwge2Jsb2NrLHRvcG8sLi4ufSA9IGdldEJsb2NrSW5mbyBsYWJlbA0KCQkgICAgICAg
dmFsIHRhcmdldHMgPSBUcmFuc2Zlci50YXJnZXRzIHRyYW5zZmVyDQoJCSAgICAgaW4gDQoJCSAg
ICAgICBibG9jayA6PSBTT01FIGJsb2NrJzsNCgkJICAgICAgIHRvcG8gOj0gMDsNCgkJICAgICAg
IExpc3QuZm9yZWFjaA0KCQkgICAgICAgKHRhcmdldHMsDQoJCQlmbiB0YXJnZXQgPT4gTGlzdC5w
dXNoKGdldF9wcmVkIHRhcmdldCwgbGFiZWwpKTsNCgkJICAgICAgIGxhYmVsDQoJCSAgICAgZW5k
KQ0KDQoJICAgIGxvY2FsDQoJICAgICAgdmFsIHRvZG8gPSByZWYgW10NCgkgICAgICBmdW4gdG9w
b19vcmRlcih4LHkpID0gSW50LmNvbXBhcmUoZ2V0X3RvcG8nIHgsIGdldF90b3BvJyB5KQ0KCSAg
ICBpbg0KCSAgICAgIGZ1biBhZGRfdG9kbyB4ID0gdG9kbyA6PSBMaXN0Lmluc2VydCghdG9kbywg
eCwgdG9wb19vcmRlcikNCgkgICAgICBmdW4gcHVzaF90b2RvIHggPSB0b2RvIDo9IHg6OighdG9k
bykNCgkgICAgICBmdW4gcmV2X3RvZG8gKCkgPSB0b2RvIDo9IExpc3QucmV2ICghdG9kbykNCgkg
ICAgICBmdW4gZ2V0X3RvZG8gKCkgDQoJCT0gKGNhc2UgIXRvZG8NCgkJICAgICBvZiBbXSA9PiBO
T05FDQoJCSAgICAgIHwgKHg6OnRvZG8nKSA9PiAodG9kbyA6PSB0b2RvJzsNCgkJCQkgICAgICAg
U09NRSB4KSkNCgkgICAgZW5kDQoNCgkgICAgbG9jYWwNCgkgICAgICB2YWwgbnVtID0gQ291bnRl
ci5uZXcgMQ0KCSAgICBpbg0KCSAgICAgIGZ1biB0b3BvX3NvcnQgbGFiZWwNCgkJPSBsZXQNCgkJ
ICAgIHZhbCB7dG9wbywgcHJlZCwgLi4ufSA9IGdldEJsb2NrSW5mbyBsYWJlbA0KCQkgIGluDQoJ
CSAgICBpZiAhdG9wbyA9IDANCgkJICAgICAgdGhlbiAodG9wbyA6PSBDb3VudGVyLm5leHQgbnVt
Ow0KCQkJICAgIHB1c2hfdG9kbyBsYWJlbDsNCgkJCSAgICBMaXN0LmZvcmVhY2goIXByZWQsIHRv
cG9fc29ydCkpDQoJCSAgICAgIGVsc2UgKCkNCgkJICBlbmQNCgkgICAgICBmdW4gdG9wb19yb290
IGxhYmVsDQoJCT0gKGdldF90b3BvIGxhYmVsIDo9IENvdW50ZXIubmV4dCBudW07DQoJCSAgIHB1
c2hfdG9kbyBsYWJlbCkNCgkgICAgZW5kDQoNCgkgICAgZnVuIGxvb3AgKGxhYmVscywgbikNCgkg
ICAgICA9IGlmIExpc3QuaXNFbXB0eSBsYWJlbHMNCgkJICB0aGVuICgpDQoJCSAgZWxzZSBsZXQN
CgkJCSB2YWwgKGV4aXRzLGxhYmVscykNCgkJCSAgID0gcGFydGl0aW9uDQoJCQkgICAgIChsYWJl
bHMsDQoJCQkgICAgICBmbiBsYWJlbA0KCQkJICAgICAgID0+IGxldA0KCQkJCSAgICB2YWwgQmxv
Y2suVCB7dHJhbnNmZXIsLi4ufSANCgkJCQkgICAgICA9IHZhbE9mIChnZXRfYmxvY2snIGxhYmVs
KQ0KCQkJCSAgICB2YWwgdGFyZ2V0cyA9IFRyYW5zZmVyLnRhcmdldHMgdHJhbnNmZXINCg0KCQkJ
CSAgICB2YWwgdGFyZ2V0cycNCgkJCQkgICAgICA9IExpc3QuZm9sZCh0YXJnZXRzLA0KCQkJCQkJ
ICAwLA0KCQkJCQkJICBmbiAodGFyZ2V0LHRhcmdldHMnKQ0KCQkJCQkJICAgPT4gaWYgZ2V0X3Rv
cG8nIHRhcmdldCA9IH4xDQoJCQkJCQkJdGhlbiB0YXJnZXRzJw0KCQkJCQkJCWVsc2UgdGFyZ2V0
cycgKyAxKQ0KCQkJCSAgaW4NCgkJCQkgICAgdGFyZ2V0cycgPSBuDQoJCQkJICBlbmQpDQoJCQkg
dmFsIGV4aXRzDQoJCQkgICA9IExpc3QucmVtb3ZlQWxsDQoJCQkgICAgIChleGl0cywNCgkJCSAg
ICAgIGZuIGxhYmVsID0+IGdldF90b3BvJyBsYWJlbCA8PiAwKQ0KCQkJIHZhbCBfIA0KCQkJICAg
PSAoTGlzdC5mb3JlYWNoDQoJCQkgICAgICAoZXhpdHMsIA0KCQkJICAgICAgIGZuIGxhYmVsID0+
IHRvcG9fcm9vdCBsYWJlbCk7DQoJCQkgICAgICBMaXN0LmZvcmVhY2gNCgkJCSAgICAgIChleGl0
cywNCgkJCSAgICAgICBmbiBsYWJlbCANCgkJCSAgICAgICAgPT4gTGlzdC5mb3JlYWNoKGdldF9w
cmVkJyBsYWJlbCwgdG9wb19zb3J0KSkpDQoJCSAgICAgICBpbg0KCQkJIGxvb3AobGFiZWxzLCBu
ICsgMSkNCgkJICAgICAgIGVuZA0KCSAgICB2YWwgXyA9IGxvb3AobGFiZWxzLCAwKQ0KCSAgICB2
YWwgXyA9IHJldl90b2RvICgpDQoNCgkgICAgdmFsIGNoYW5nZWQgPSByZWYgZmFsc2UNCgkgICAg
ZnVuIGRvaXQgKCkNCgkgICAgICA9IChjYXNlIGdldF90b2RvICgpDQoJCSAgIG9mIE5PTkUgPT4g
KCkNCgkJICAgIHwgU09NRSBsYWJlbA0KCQkgICAgPT4gbGV0DQoJCQkgdmFsIHtwcmVkLCBibG9j
aywgLi4ufSA9IGdldEJsb2NrSW5mbyBsYWJlbA0KCQkJIHZhbCAoQmxvY2suVCB7c3RhdGVtZW50
cywgdHJhbnNmZXIsLi4ufSkgDQoJCQkgICA9IHZhbE9mICghYmxvY2spDQoNCgkJCSB2YWwge2xp
dmUsLi4ufQ0KCQkJICAgPSBsaXZlbmVzc1RyYW5zZmVyIHt0cmFuc2ZlciA9IHRyYW5zZmVyLA0K
CQkJCQkgICAgICAgbGl2ZUluZm8gPSBsaXZlSW5mb30NCgkJCSAgIA0KCQkJIHZhbCBsaXZlDQoJ
CQkgICA9IExpc3QuZm9sZHINCgkJCSAgICAgKHN0YXRlbWVudHMsDQoJCQkgICAgICBsaXZlLA0K
CQkJICAgICAgZm4gKGFzbSxsaXZlKQ0KCQkJICAgICAgID0+IGxldA0KCQkJCSAgICB2YWwge2xp
dmUsLi4ufQ0KCQkJCSAgICAgID0gbGl2ZW5lc3NBc3NlbWJseSANCgkJCQkgICAgICAgIHthc3Nl
bWJseSA9IGFzbSwNCgkJCQkJIGxpdmUgPSBsaXZlfQ0KCQkJCSAgaW4NCgkJCQkgICAgbGl2ZQ0K
CQkJCSAgZW5kKQ0KCQkJICAgICANCgkJCSB2YWwgbGl2ZScgPSBnZXQgbGFiZWwNCgkJICAgICAg
IGluDQoJCQkgaWYgTGlzdC5lcXVhbHNBc1NldChsaXZlLGxpdmUnLE1lbUxvYy5lcSkNCgkJCSAg
IHRoZW4gKCkNCgkJCSAgIGVsc2UgKHNldChsYWJlbCwgbGl2ZSk7DQoJCQkJIExpc3QuZm9yZWFj
aCghcHJlZCwgYWRkX3RvZG8pOw0KKCoNCgkJCQkgcHJpbnQgIkxpdmVuZXNzOiB2ZXJpZnlMaXZl
SW5mbzogIjsNCgkJCQkgcHJpbnQgKExhYmVsLnRvU3RyaW5nIGxhYmVsKTsNCgkJCSAgICAgICAg
IHByaW50ICJcbiI7DQoJCQkgICAgICAgICBwcmludCAiYmFja2VuZDogIjsNCgkJCSAgICAgICAg
IExpc3QuZm9yZWFjaA0KCQkJICAgICAgICAgKGxpdmUnLA0KCQkJICAgICAgICAgIGZuIG0gDQoJ
CQkgICAgICAgICAgID0+IChwcmludCAoTWVtTG9jLnRvU3RyaW5nIG0pOw0KCQkJICAgICAgICAg
cHJpbnQgIiAiKSk7DQoJCQkgICAgICAgICBwcmludCAiXG4iOw0KCQkJICAgICAgICAgcHJpbnQg
ImNhbGN1bGF0ZWQ6ICI7DQoJCQkJIExpc3QuZm9yZWFjaA0KCQkJICAgICAgICAgKGxpdmUsDQoJ
CQkgICAgICAgICAgZm4gbSANCgkJCSAgICAgICAgICAgPT4gKHByaW50IChNZW1Mb2MudG9TdHJp
bmcgbSk7DQoJCQkgICAgICAgICBwcmludCAiICIpKTsNCgkJCSAgICAgICAgIHByaW50ICJcbiI7
DQoqKQ0KCQkJCSBjaGFuZ2VkIDo9IHRydWUpOw0KCQkJIGRvaXQgKCkNCgkJICAgICAgIGVuZCkN
CgkgICAgdmFsIF8gPSBkb2l0ICgpDQoJICBpbg0KCSAgICB7Y2hhbmdlZCA9ICFjaGFuZ2VkfQ0K
CSAgZW5kDQoNCigqDQogICAgICBmdW4gdmVyaWZ5TGl2ZUluZm8ge2Jsb2NrcywNCgkJCSAgbGl2
ZUluZm8gDQoJCQkgIGFzIHtnZXQ6IExhYmVsLnQgLT4gTWVtTG9jLnQgbGlzdCwNCgkJCSAgICAg
IHNldDogTGFiZWwudCAqIE1lbUxvYy50IGxpc3QgLT4gdW5pdH19DQoJPSBsZXQgDQoJICAgIGZ1
biBsb29wIGNoYW5nZWQNCgkgICAgICA9IGlmIExpc3QuZm9sZA0KCSAgICAgICAgICAgKGJsb2Nr
cywNCgkJICAgIGZhbHNlLA0KCQkgICAgZm4gKGJsb2NrIGFzIEJsb2NrLlQge2xhYmVsLCBwcm9m
aWxlSW5mbywNCgkJCQkJICBzdGF0ZW1lbnRzLCB0cmFuc2Zlcn0sDQoJCQljaGFuZ2VkKQ0KCQkg
ICAgPT4gbGV0DQoJCQkgdmFsIHtsaXZlLC4uLn0NCgkJCSAgID0gbGl2ZW5lc3NUcmFuc2ZlciB7
dHJhbnNmZXIgPSB0cmFuc2ZlciwNCgkJCQkJICAgICAgIGxpdmVJbmZvID0gbGl2ZUluZm99DQoN
CgkJCSB2YWwgbGl2ZQ0KCQkJICAgPSBMaXN0LmZvbGRyDQoJCQkgICAgIChzdGF0ZW1lbnRzLA0K
CQkJICAgICAgbGl2ZSwNCgkJCSAgICAgIGZuIChhc20sbGl2ZSkNCgkJCSAgICAgICA9PiBsZXQN
CgkJCQkgICAgdmFsIHtsaXZlLC4uLn0NCgkJCQkgICAgICA9IGxpdmVuZXNzQXNzZW1ibHkge2Fz
c2VtYmx5ID0gYXNtLA0KCQkJCQkJCSAgbGl2ZSA9IGxpdmV9DQoJCQkJICBpbg0KCQkJCSAgICBs
aXZlDQoJCQkJICBlbmQpDQoNCgkJCSB2YWwgbGl2ZScgDQoJCQkgICA9IGNhc2UgZ2V0IGxhYmVs
DQoJCQkgICAgICAgb2YgU09NRSBsaXZlJyA9PiBsaXZlJw0KCQkJICAgICAgICB8IE5PTkUgPT4g
W10NCgkJICAgICAgIGluDQoJCQkgaWYgTGlzdC5lcXVhbHNBc1NldChsaXZlLGxpdmUnLE1lbUxv
Yy5lcSkNCgkJCSAgIHRoZW4gY2hhbmdlZA0KCQkJICAgZWxzZSAoc2V0KGxhYmVsLCBTT01FIGxp
dmUpOw0KKCoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ICJMaXZlbmVz
czogdmVyaWZ5TGl2ZUluZm86ICI7DQoJCQkJIHByaW50IChMYWJlbC50b1N0cmluZyBsYWJlbCk7
DQoJCQkJIHByaW50ICJcbiI7DQoJCQkJIHByaW50ICJiYWNrZW5kOiAiOw0KCQkJCSBMaXN0LmZv
cmVhY2gNCgkJCQkgKGxpdmUnLA0KCQkJCSAgZm4gbSANCgkJCQkgICA9PiAocHJpbnQgKE1lbUxv
Yy50b1N0cmluZyBtKTsNCgkJCQkgICAgICAgcHJpbnQgIiAiKSk7DQoJCQkJIHByaW50ICJcbiI7
DQoJCQkJIHByaW50ICJjYWxjdWxhdGVkOiAiOw0KCQkJCSBMaXN0LmZvcmVhY2gNCgkJCQkgKGxp
dmUsDQoJCQkJICBmbiBtIA0KCQkJCSAgID0+IChwcmludCAoTWVtTG9jLnRvU3RyaW5nIG0pOw0K
CQkJCSAgICAgICBwcmludCAiICIpKTsNCgkJCQkgcHJpbnQgIlxuIjsNCiopDQoJCQkJIHRydWUp
DQoJCSAgICAgICBlbmQpDQoJCSAgdGhlbiBsb29wIHRydWUNCgkJICBlbHNlIGNoYW5nZWQNCg0K
ICAgICAgICAgICAgdmFsIGNoYW5nZWQgPSBsb29wIGZhbHNlDQoJICBpbg0KCSAgICB7Y2hhbmdl
ZCA9IGNoYW5nZWR9DQoJICBlbmQNCiopDQoNCiAgICAgIHZhbCAodmVyaWZ5TGl2ZUluZm8gOg0K
CSAgIHtibG9ja3M6IEJsb2NrLnQgbGlzdCwgDQoJICAgIGxpdmVJbmZvOiB7Z2V0OiBMYWJlbC50
IC0+IE1lbUxvYy50IGxpc3QsDQoJCSAgICAgICBzZXQ6IExhYmVsLnQgKiBNZW1Mb2MudCBsaXN0
IC0+IHVuaXR9fSAtPg0KCSAgIHtjaGFuZ2VkOiBib29sfSwNCgkgICB2ZXJpZnlMaXZlSW5mb19t
c2cpDQoJPSB0cmFjZXINCiAgICAgICAgICAidmVyaWZ5TGl2ZUluZm8iDQoJICB2ZXJpZnlMaXZl
SW5mbw0KICAgIGVuZA0KDQogIHN0cnVjdHVyZSBMaXZlbmVzc0Jsb2NrID0NCiAgICBzdHJ1Y3QN
Cg0KICAgICAgZGF0YXR5cGUgdCA9IFQgb2Yge2xhYmVsOiBMYWJlbC50LA0KCQkJIHByb2ZpbGVJ
bmZvOiBQcm9maWxlSW5mby50LA0KCQkJIHN0YXRlbWVudHM6IChBc3NlbWJseS50ICogTGl2ZW5l
c3MudCkgbGlzdCwNCgkJCSB0cmFuc2ZlcjogVHJhbnNmZXIudCAqIExpdmVuZXNzLnR9DQoNCiAg
ICAgIGZ1biB0b1N0cmluZyAoVCB7bGFiZWwsIHByb2ZpbGVJbmZvLCBzdGF0ZW1lbnRzLCB0cmFu
c2Zlcn0pDQoJPSBjb25jYXQgW0xhYmVsLnRvU3RyaW5nIGxhYmVsLA0KCQkgICI6XG4iLA0KCQkg
IExpc3QuZm9sZA0KCQkgIChzdGF0ZW1lbnRzLA0KCQkgICAiIiwNCgkJICAgZm4gKChhc20saW5m
bykscykNCgkJICAgPT4gY29uY2F0IFtzLA0KCQkJICAgICAgQXNzZW1ibHkudG9TdHJpbmcgYXNt
LA0KCQkJICAgICAgIlxuIiwNCgkJCSAgICAgIExpdmVuZXNzLnRvU3RyaW5nIGluZm9dKSwNCgkJ
ICBsZXQNCgkJICAgIHZhbCAodHJhbnMsaW5mbykgPSB0cmFuc2Zlcg0KCQkgIGluDQoJCSAgICBj
b25jYXRbVHJhbnNmZXIudG9TdHJpbmcgdHJhbnMsDQoJCQkgICAiXG4iLA0KCQkJICAgTGl2ZW5l
c3MudG9TdHJpbmcgaW5mb10NCgkJICBlbmRdDQoNCiAgICAgIGZ1biBwcmludF9ibG9jayAoVCB7
bGFiZWwsIHByb2ZpbGVJbmZvLCBzdGF0ZW1lbnRzLCB0cmFuc2Zlcn0pDQoJPSAocHJpbnQgKExh
YmVsLnRvU3RyaW5nIGxhYmVsKTsNCgkgICBwcmludCAiOlxuIjsNCgkgICBMaXN0LmZvcmVhY2gN
CgkgICAoc3RhdGVtZW50cywNCgkgICAgZm4gKGFzbSxpbmZvKQ0KCSAgICAgPT4gKHByaW50IChB
c3NlbWJseS50b1N0cmluZyBhc20pOw0KCQkgcHJpbnQgIlxuIjsNCgkJIHByaW50IChMaXZlbmVz
cy50b1N0cmluZyBpbmZvKSkpOw0KCSAgIGxldA0KCSAgICAgdmFsICh0cmFucyxpbmZvKSA9IHRy
YW5zZmVyDQoJICAgaW4NCgkgICAgIHByaW50IChUcmFuc2Zlci50b1N0cmluZyB0cmFucyk7DQoJ
ICAgICBwcmludCAiXG4iOw0KCSAgICAgcHJpbnQgKExpdmVuZXNzLnRvU3RyaW5nIGluZm8pDQoJ
ICAgZW5kKQ0KDQogICAgICBmdW4gdG9MaXZlbmVzc1N0YXRlbWVudHMge3N0YXRlbWVudHMsDQoJ
CQkJbGl2ZX0NCgk9IGxldA0KCSAgICB2YWwge3N0YXRlbWVudHMsbGl2ZX0NCgkgICAgICA9IExp
c3QuZm9sZHIoc3RhdGVtZW50cywNCgkJCSAgIHtzdGF0ZW1lbnRzID0gW10sIGxpdmUgPSBsaXZl
fSwNCgkJCSAgIGZuIChhc20se3N0YXRlbWVudHMsbGl2ZX0pDQoJCQkgICAgPT4gbGV0DQoJCQkJ
IHZhbCB7aW5mbywgbGl2ZX0NCgkJCQkgICA9IExpdmVuZXNzLmxpdmVuZXNzQXNzZW1ibHkgDQoJ
CQkJICAgICB7YXNzZW1ibHkgPSBhc20sDQoJCQkJICAgICAgbGl2ZSA9IGxpdmV9DQoJCQkgICAg
ICAgaW4NCgkJCQkge3N0YXRlbWVudHMgPSAoYXNtLCBpbmZvKTo6c3RhdGVtZW50cywgDQoJCQkJ
ICBsaXZlID0gbGl2ZX0NCgkJCSAgICAgICBlbmQpDQoJICBpbg0KCSAgICB7c3RhdGVtZW50cyA9
IHN0YXRlbWVudHMsDQoJICAgICBsaXZlID0gbGl2ZX0NCgkgIGVuZA0KDQogICAgICBmdW4gcmVM
aXZlbmVzc1N0YXRlbWVudHMge3N0YXRlbWVudHM6IChBc3NlbWJseS50ICogTGl2ZW5lc3MudCkg
bGlzdCwNCgkJCQlsaXZlfQ0KCT0gbGV0DQoJICAgIHZhbCB7c3RhdGVtZW50cyxsaXZlLC4uLn0N
CgkgICAgICA9IExpc3QuZm9sZHIoc3RhdGVtZW50cywNCgkJCSAgIHtzdGF0ZW1lbnRzID0gW10s
IA0KCQkJICAgIGxpdmUgPSBsaXZlLCANCgkJCSAgICBjb250aW51ZSA9IGZhbHNlfSwNCgkJCSAg
IGZuICgoYXNtLGluZm8pLHtzdGF0ZW1lbnRzLGxpdmUsY29udGludWV9KQ0KCQkJICAgPT4gaWYg
Y29udGludWUNCgkJCQl0aGVuIHtzdGF0ZW1lbnRzID0gKGFzbSxpbmZvKTo6c3RhdGVtZW50cywN
CgkJCQkgICAgICBsaXZlID0gW10sDQoJCQkJICAgICAgY29udGludWUgPSBjb250aW51ZX0NCgkJ
CQllbHNlIGxldA0KCQkJCSAgICAgICB2YWwge2luZm8gPSBpbmZvJywgbGl2ZSA9IGxpdmUnfQ0K
CQkJCQkgPSBMaXZlbmVzcy5saXZlbmVzc0Fzc2VtYmx5IA0KCQkJCQkgICB7YXNzZW1ibHkgPSBh
c20sDQoJCQkJCSAgICBsaXZlID0gbGl2ZX0NCgkJCQkgICAgIGluDQoJCQkJICAgICAgIHtzdGF0
ZW1lbnRzID0gKGFzbSwgaW5mbycpOjpzdGF0ZW1lbnRzLCANCgkJCQkJbGl2ZSA9IGxpdmUnLA0K
CQkJCQljb250aW51ZSA9IExpdmVuZXNzLmVxKGluZm8saW5mbycpfQ0KCQkJCSAgICAgZW5kKQ0K
CSAgaW4NCgkgICAge3N0YXRlbWVudHMgPSBzdGF0ZW1lbnRzfQ0KCSAgZW5kDQoNCiAgICAgIGZ1
biB0b0xpdmVuZXNzVHJhbnNmZXIge3RyYW5zZmVyLA0KCQkJICAgICAgbGl2ZUluZm99DQoJPSBs
ZXQNCgkgICAgdmFsIHtpbmZvLCBsaXZlfQ0KCSAgICAgID0gTGl2ZW5lc3MubGl2ZW5lc3NUcmFu
c2ZlciB7dHJhbnNmZXIgPSB0cmFuc2ZlciwNCgkJCQkJICAgbGl2ZUluZm8gPSBsaXZlSW5mb30N
CgkgIGluDQoJICAgIHt0cmFuc2ZlciA9ICh0cmFuc2ZlcixpbmZvKSwNCgkgICAgIGxpdmUgPSBs
aXZlfQ0KCSAgZW5kDQoNCiAgICAgIGZ1biByZUxpdmVuZXNzVHJhbnNmZXIge3RyYW5zZmVyOiBU
cmFuc2Zlci50ICogTGl2ZW5lc3MudH0NCgk9IGxldA0KCSAgICB2YWwgKHRyYW5zZmVyLHtsaXZl
T3V0LC4uLn0pID0gdHJhbnNmZXINCgkgICAgdmFsIHtpbmZvLCBsaXZlfSA9IExpdmVuZXNzLmxp
dmVuZXNzVHJhbnNmZXInIHt0cmFuc2ZlciA9IHRyYW5zZmVyLA0KCQkJCQkJCSAgIGxpdmUgPSBs
aXZlT3V0fQ0KCSAgaW4NCgkgICAge3RyYW5zZmVyID0gKHRyYW5zZmVyLCBpbmZvKSwNCgkgICAg
IGxpdmUgPSBsaXZlfQ0KCSAgZW5kDQoNCiAgICAgIGZ1biB0b0xpdmVuZXNzQmxvY2sge2Jsb2Nr
IGFzIEJsb2NrLlQge2xhYmVsLCBwcm9maWxlSW5mbywNCgkJCQkJICAgICBzdGF0ZW1lbnRzLCB0
cmFuc2Zlcn0sDQoJCQkgICBsaXZlSW5mbyA6IHtnZXQ6IExhYmVsLnQgLT4gTWVtTG9jLnQgbGlz
dCwNCgkJCQkgICAgICAgc2V0OiBMYWJlbC50ICogTWVtTG9jLnQgbGlzdCAtPiB1bml0fX0NCg0K
CT0gbGV0DQoJICAgIHZhbCB7dHJhbnNmZXIsIGxpdmV9DQoJICAgICAgPSB0b0xpdmVuZXNzVHJh
bnNmZXIge3RyYW5zZmVyID0gdHJhbnNmZXIsDQoJCQkJICAgIGxpdmVJbmZvID0gbGl2ZUluZm99
DQoNCgkgICAgdmFsIHtzdGF0ZW1lbnRzLCBsaXZlfQ0KCSAgICAgID0gdG9MaXZlbmVzc1N0YXRl
bWVudHMge3N0YXRlbWVudHMgPXN0YXRlbWVudHMsDQoJCQkJICAgICAgbGl2ZSA9IGxpdmV9DQoN
CgkgICAgdmFsIGxpdmVuZXNzX2Jsb2NrDQoJICAgICAgPSBUIHtsYWJlbCA9IGxhYmVsLA0KCQkg
ICBwcm9maWxlSW5mbyA9IHByb2ZpbGVJbmZvLA0KCQkgICBzdGF0ZW1lbnRzID0gc3RhdGVtZW50
cywNCgkJICAgdHJhbnNmZXIgPSB0cmFuc2Zlcn0NCgkgIGluIA0KCSAgICBsaXZlbmVzc19ibG9j
aw0KCSAgZW5kDQoNCiAgICAgIHZhbCAodG9MaXZlbmVzc0Jsb2NrOg0KCSAgIHtibG9jazogQmxv
Y2sudCwNCgkgICAgbGl2ZUluZm86IHtnZXQ6IExhYmVsLnQgLT4gTWVtTG9jLnQgbGlzdCwNCgkg
ICAgICAgICAgICAgICBzZXQ6IExhYmVsLnQgKiBNZW1Mb2MudCBsaXN0IC0+IHVuaXR9fSAtPg0K
CSAgIHQsDQoJICAgdG9MaXZlbmVzc0Jsb2NrX21zZykNCgk9IHRyYWNlcg0KCSAgInRvTGl2ZW5l
c3NCbG9jayINCiAgICAgICAgICB0b0xpdmVuZXNzQmxvY2sNCg0KICAgICAgZnVuIHZlcmlmeUxp
dmVuZXNzU3RhdGVtZW50cyB7c3RhdGVtZW50cywNCgkJCQkgICAgbGl2ZX0NCgk9IExpc3QuZm9s
ZHIoc3RhdGVtZW50cywNCgkJICAgICB7dmVyaWZpZWQgPSB0cnVlLCBsaXZlID0gbGl2ZX0sDQoJ
CSAgICAgZm4gKChhc20saW5mbykse3ZlcmlmaWVkLCBsaXZlfSkNCgkJICAgICAgPT4gbGV0DQoJ
CQkgICB2YWwge2luZm8gPSBpbmZvJywgbGl2ZX0NCgkJCSAgICAgPSBMaXZlbmVzcy5saXZlbmVz
c0Fzc2VtYmx5IA0KCQkJICAgICAgIHthc3NlbWJseSA9IGFzbSwNCgkJCQlsaXZlID0gbGl2ZX0N
CgkJCSBpbg0KCQkJICAge3ZlcmlmaWVkID0gdmVyaWZpZWQgYW5kYWxzbyANCgkJCSAgICAgICAg
ICAgICAgIExpdmVuZXNzLmVxKGluZm8sIGluZm8nKSwgDQoJCQkgICAgbGl2ZSA9IGxpdmV9DQoJ
CQkgZW5kKQ0KDQogICAgICBmdW4gdmVyaWZ5TGl2ZW5lc3NUcmFuc2ZlciB7dHJhbnNmZXIgPSAo
dHJhbnNmZXIsaW5mbyksDQoJCQkJICBsaXZlSW5mb30NCgk9IGxldA0KCSAgICB2YWwge2luZm8g
PSBpbmZvJywgbGl2ZX0NCgkgICAgICA9IExpdmVuZXNzLmxpdmVuZXNzVHJhbnNmZXIge3RyYW5z
ZmVyID0gdHJhbnNmZXIsDQoJCQkJCSAgIGxpdmVJbmZvID0gbGl2ZUluZm99DQoJICBpbg0KCSAg
ICB7dmVyaWZpZWQgPSBMaXZlbmVzcy5lcShpbmZvLCBpbmZvJyksDQoJICAgICBsaXZlID0gbGl2
ZX0NCgkgIGVuZA0KDQogICAgICBmdW4gdmVyaWZ5TGl2ZW5lc3NCbG9jayB7YmxvY2sgYXMgVCB7
bGFiZWwsIHByb2ZpbGVJbmZvLA0KCQkJCQkgICBzdGF0ZW1lbnRzLCB0cmFuc2Zlcn0sDQoJCQkg
ICAgICAgbGl2ZUluZm8gDQoJCQkgICAgICAgYXMge2dldDogTGFiZWwudCAtPiBNZW1Mb2MudCBs
aXN0LA0KCQkJCSAgIHNldDogTGFiZWwudCAqIE1lbUxvYy50IGxpc3QgLT4gdW5pdH19DQoJPSBs
ZXQNCgkgICAgdmFsIHt2ZXJpZmllZCA9IHZlcmlmaWVkX3RyYW5zZmVyLA0KCQkgbGl2ZX0NCgkg
ICAgICA9IHZlcmlmeUxpdmVuZXNzVHJhbnNmZXIge3RyYW5zZmVyID0gdHJhbnNmZXIsDQoJCQkJ
CWxpdmVJbmZvID0gbGl2ZUluZm99DQoNCgkgICAgdmFsIHt2ZXJpZmllZCA9IHZlcmlmaWVkX3N0
YXRlbWVudHMsDQoJCSBsaXZlfQ0KCSAgICAgID0gdmVyaWZ5TGl2ZW5lc3NTdGF0ZW1lbnRzIHtz
dGF0ZW1lbnRzID1zdGF0ZW1lbnRzLA0KCQkJCQkgIGxpdmUgPSBsaXZlfQ0KDQooKg0KCSAgICB2
YWwgbGl2ZScgPSBnZXQgbGFiZWwNCg0KCSAgICB2YWwgdmVyaWZpZWRfbGl2ZSA9IExpc3QuZXF1
YWxzQXNTZXQobGl2ZSwgbGl2ZScsIE1lbUxvYy5lcSkNCiopDQoJICAgIHZhbCB2ZXJpZmllZF9s
aXZlID0gdHJ1ZQ0KCSAgaW4gDQoJICAgIHZlcmlmaWVkX3RyYW5zZmVyIGFuZGFsc28gDQoJICAg
IHZlcmlmaWVkX3N0YXRlbWVudHMgYW5kYWxzbw0KCSAgICB2ZXJpZmllZF9saXZlDQoJICBlbmQN
Cg0KICAgICAgdmFsICh2ZXJpZnlMaXZlbmVzc0Jsb2NrOg0KCSAgIHtibG9jazogdCwNCgkgICAg
bGl2ZUluZm86IHtnZXQ6IExhYmVsLnQgLT4gTWVtTG9jLnQgbGlzdCwNCgkgICAgICAgICAgICAg
ICBzZXQ6IExhYmVsLnQgKiBNZW1Mb2MudCBsaXN0IC0+IHVuaXR9fSAtPg0KCSAgIGJvb2wsDQoJ
ICAgdmVyaWZ5TGl2ZW5lc3NCbG9ja19tc2cpDQoJPSB0cmFjZXINCgkgICJ2ZXJpZnlMaXZlbmVz
c0Jsb2NrIg0KICAgICAgICAgIHZlcmlmeUxpdmVuZXNzQmxvY2sNCg0KICAgICAgZnVuIHRvQmxv
Y2sgKFQge2xhYmVsLCBwcm9maWxlSW5mbywgc3RhdGVtZW50cywgdHJhbnNmZXJ9KQ0KCT0gbGV0
DQoJICAgIHZhbCBzdGF0ZW1lbnRzID0gTGlzdC5tYXAoc3RhdGVtZW50cywgZm4gKGFzbSxpbmZv
KSA9PiBhc20pDQoJICAgIHZhbCAodHJhbnNmZXIsaW5mbykgPSB0cmFuc2Zlcg0KCSAgaW4gDQoJ
ICAgIEJsb2NrLlQge2xhYmVsID0gbGFiZWwsDQoJCSAgICAgcHJvZmlsZUluZm8gPSBwcm9maWxl
SW5mbywNCgkJICAgICBzdGF0ZW1lbnRzID0gc3RhdGVtZW50cywNCgkJICAgICB0cmFuc2ZlciA9
IHRyYW5zZmVyfQ0KCSAgZW5kDQoNCiAgICAgIHZhbCAodG9CbG9jazogdCAtPiBCbG9jay50LCAN
CgkgICB0b0Jsb2NrX21zZykNCgk9IHRyYWNlcg0KCSAgInRvQmxvY2siDQogICAgICAgICAgdG9C
bG9jaw0KICAgIGVuZA0KDQogIHN0cnVjdHVyZSBNb3ZlSG9pc3RMaXZlbmVzc0Jsb2NrID0gDQog
ICAgc3RydWN0DQogICAgICBmdW4gbW92ZUhvaXN0IHtibG9jayBhcyBMaXZlbmVzc0Jsb2NrLlQg
DQoJCSAgICAgICAgICAgICAge2xhYmVsLCBwcm9maWxlSW5mbywgc3RhdGVtZW50cywgdHJhbnNm
ZXJ9fQ0KCT0gbGV0DQoJICAgIHZhbCB7dHJhbnNmZXIsbGl2ZX0gDQoJICAgICAgPSBMaXZlbmVz
c0Jsb2NrLnJlTGl2ZW5lc3NUcmFuc2ZlciB7dHJhbnNmZXIgPSB0cmFuc2Zlcn0NCg0KCSAgICB2
YWwge3N0YXRlbWVudHMsIGNoYW5nZWQsIG1vdmVzLCBsaXZlfQ0KCSAgICAgID0gTGlzdC5mb2xk
cg0KCSAgICAgICAgKHN0YXRlbWVudHMsDQoJCSB7c3RhdGVtZW50cyA9IFtdLA0KCQkgIGNoYW5n
ZWQgPSBmYWxzZSwNCgkJICBtb3ZlcyA9IFtdLA0KCQkgIGxpdmUgPSBsaXZlfSwNCgkJIGZuICgo
YXNtLGluZm8gYXMge2RlYWQsLi4ufSksDQoJCSAgICAge3N0YXRlbWVudHMsY2hhbmdlZCxtb3Zl
cyxsaXZlfSkNCgkJICA9PiBsZXQNCgkJICAgICAgIGZ1biBkZWZhdWx0ICgpDQoJCQkgPSBsZXQN
CgkJCSAgICAgdmFsIHt1c2VzLGRlZnMsLi4ufSA9IEFzc2VtYmx5LnVzZXNfZGVmc19raWxscyBh
c20NCg0KCQkJICAgICB2YWwgYmFzZVVzZXMNCgkJCSAgICAgICA9IExpc3QuZm9sZA0KCQkJICAg
ICAgICAgKHVzZXMsDQoJCQkJICBbXSwNCgkJCQkgIGZuIChvcGVyYW5kLGJhc2VVc2VzKQ0KCQkJ
CSAgID0+IGNhc2UgT3BlcmFuZC5kZU1lbWxvYyBvcGVyYW5kDQoJCQkJCW9mIFNPTUUgbWVtbG9j
DQoJCQkJCSA9PiBpZiBMaXN0LmNvbnRhaW5zDQoJCQkJCSAgICAgICAoYmFzZVVzZXMsDQoJCQkJ
CQltZW1sb2MsDQoJCQkJCQlNZW1Mb2MuZXEpDQoJCQkJCSAgICAgIHRoZW4gYmFzZVVzZXMNCgkJ
CQkJICAgICAgZWxzZSBtZW1sb2M6OmJhc2VVc2VzDQoJCQkJICAgICAgICAgfCBOT05FID0+IGJh
c2VVc2VzKQ0KCQkJICAgICB2YWwgYmFzZURlZnMNCgkJCSAgICAgICA9IExpc3QuZm9sZA0KCQkJ
ICAgICAgICAgKGRlZnMsDQoJCQkJICBbXSwNCgkJCQkgIGZuIChvcGVyYW5kLGJhc2VEZWZzKQ0K
CQkJCSAgID0+IGNhc2UgT3BlcmFuZC5kZU1lbWxvYyBvcGVyYW5kDQoJCQkJCW9mIFNPTUUgbWVt
bG9jDQoJCQkJCSA9PiBpZiBMaXN0LmNvbnRhaW5zDQoJCQkJCSAgICAgICAoYmFzZURlZnMsDQoJ
CQkJCQltZW1sb2MsDQoJCQkJCQlNZW1Mb2MuZXEpDQoJCQkJCSAgICAgIHRoZW4gYmFzZURlZnMN
CgkJCQkJICAgICAgZWxzZSBtZW1sb2M6OmJhc2VEZWZzDQoJCQkJICAgICAgICAgfCBOT05FID0+
IGJhc2VEZWZzKQ0KDQoJCQkgICAgIHZhbCBhbGxVc2VzDQoJCQkgICAgICAgPSBsZXQNCgkJCQkg
ICBmdW4gZG9pdChtZW1sb2NzLGFsbFVzZXMpDQoJCQkJICAgICA9IExpc3QuZm9sZA0KCQkJCSAg
ICAgICAobWVtbG9jcywNCgkJCQkJYWxsVXNlcywNCgkJCQkJZm4gKG1lbWxvYyxhbGxVc2VzKQ0K
CQkJCQkgPT4gTGlzdC5mb2xkDQoJCQkJCSAgICAoTWVtTG9jLnV0aWxpemVkIG1lbWxvYywNCgkJ
CQkJICAgICBhbGxVc2VzLA0KCQkJCQkgICAgIGZuIChtZW1sb2MsYWxsVXNlcykNCgkJCQkJICAg
ICAgPT4gaWYgTGlzdC5jb250YWlucw0KCQkJCQkgICAgICAgICAgICAoYWxsVXNlcywNCgkJCQkJ
CSAgICAgbWVtbG9jLA0KCQkJCQkJICAgICBNZW1Mb2MuZXEpDQoJCQkJCQkgICB0aGVuIGFsbFVz
ZXMNCgkJCQkJCSAgIGVsc2UgbWVtbG9jOjphbGxVc2VzKSkNCgkJCQkgaW4NCgkJCQkgICBkb2l0
KGJhc2VEZWZzLA0KCQkJCSAgIGRvaXQoYmFzZVVzZXMsDQoJCQkJCWJhc2VVc2VzKSkNCgkJCQkg
ZW5kDQoJCQkgICAgIHZhbCBhbGxEZWZzID0gYmFzZURlZnMNCg0KCQkJICAgICB2YWwge2ZvcmNl
cywNCgkJCQkgIG1vdmVzLA0KCQkJCSAgLi4ufQ0KCQkJICAgICAgID0gTGlzdC5mb2xkDQoJCQkg
ICAgICAgICAobW92ZXMsDQoJCQkJICB7Zm9yY2VzID0gW10sDQoJCQkJICAgbW92ZXMgPSBbXSwN
CgkJCQkgICBhbGxVc2VzID0gYWxsVXNlcywNCgkJCQkgICBhbGxEZWZzID0gYWxsRGVmc30sDQoJ
CQkJICBmbiAobW92ZSBhcyB7c3JjLGRzdCwuLi59LA0KCQkJCSAgICAgIHtmb3JjZXMsDQoJCQkJ
ICAgICAgIG1vdmVzLA0KCQkJCSAgICAgICBhbGxVc2VzLA0KCQkJCSAgICAgICBhbGxEZWZzfSkN
CgkJCQkgICA9PiBsZXQNCgkJCQkJdmFsIHV0aWxpemVkX3NyYw0KCQkJCQkgID0gTWVtTG9jLnV0
aWxpemVkIHNyYw0KCQkJCQl2YWwgdXRpbGl6ZWRfZHN0DQoJCQkJCSAgPSBNZW1Mb2MudXRpbGl6
ZWQgZHN0DQoJCQkJICAgICAgaW4gDQoJCQkJCWlmIExpc3QuZXhpc3RzDQoJCQkJICAgICAgICAg
ICAoYWxsRGVmcywNCgkJCQkJICAgIGZuIG1lbWxvYycNCgkJCQkJICAgICA9PiBMaXN0LmV4aXN0
cw0KCQkJCQkgICAgICAgIChzcmM6OnV0aWxpemVkX3NyYywNCgkJCQkJCSBmbiBtZW1sb2MnJyAN
CgkJCQkJCSAgPT4gTWVtTG9jLm1heUFsaWFzDQoJCQkJCQkgICAgIChtZW1sb2MnLCBtZW1sb2Mn
JykpKQ0KCQkJCQkgICBvcmVsc2UNCgkJCQkJICAgTGlzdC5leGlzdHMNCgkJCQkJICAgKGFsbERl
ZnMsDQoJCQkJCSAgICBmbiBtZW1sb2MnDQoJCQkJCSAgICAgPT4gTGlzdC5leGlzdHMNCgkJCQkJ
ICAgICAgICAoZHN0Ojp1dGlsaXplZF9kc3QsDQoJCQkJCQkgZm4gbWVtbG9jJycgDQoJCQkJCQkg
ID0+IE1lbUxvYy5tYXlBbGlhcw0KCQkJCQkJICAgICAobWVtbG9jJywgbWVtbG9jJycpKSkNCgkJ
CQkJICAgb3JlbHNlDQoJCQkJCSAgIExpc3QuZXhpc3RzDQoJCQkJCSAgIChhbGxVc2VzLA0KCQkJ
CQkgICAgZm4gbWVtbG9jJw0KCQkJCQkgICAgID0+IE1lbUxvYy5tYXlBbGlhcw0KCQkJCQkgICAg
ICAgIChtZW1sb2MnLGRzdCkgDQoJCQkJCQlvcmVsc2UNCgkJCQkJCU1lbUxvYy5tYXlBbGlhcw0K
CQkJCQkJKG1lbWxvYycsc3JjKSkNCgkJCQkJICB0aGVuIHtmb3JjZXMgPSBtb3ZlOjpmb3JjZXMs
DQoJCQkJCQltb3ZlcyA9IG1vdmVzLA0KCQkJCQkJYWxsVXNlcw0KCQkJCQkJPSBzcmM6OihMaXN0
LmNvbmNhdA0KCQkJCQkJCVt1dGlsaXplZF9zcmMsDQoJCQkJCQkJIHV0aWxpemVkX2RzdCwNCgkJ
CQkJCQkgYWxsVXNlc10pLA0KCQkJCQkJYWxsRGVmcyANCgkJCQkJCT0gZHN0OjphbGxEZWZzfQ0K
CQkJCQkgIGVsc2Uge2ZvcmNlcyA9IGZvcmNlcywNCgkJCQkJCW1vdmVzID0gbW92ZTo6bW92ZXMs
DQoJCQkJCQlhbGxVc2VzID0gYWxsVXNlcywNCgkJCQkJCWFsbERlZnMgPSBhbGxEZWZzfQ0KCQkJ
CSAgICAgIGVuZCkNCg0KCQkJICAgICB2YWwgbW92ZXMgDQoJCQkgICAgICAgPSBMaXN0LnJldk1h
cA0KCQkJICAgICAgICAgKG1vdmVzLA0KCQkJCSAgZm4gbW92ZSBhcyB7c3JjLGRzdCxzaXplLGFn
ZX0NCgkJCQkgICA9PiB7c3JjID0gc3JjLA0KCQkJCSAgICAgICBkc3QgPSBkc3QsDQoJCQkJICAg
ICAgIHNpemUgPSBzaXplLA0KCQkJCSAgICAgICBhZ2UgPSBhZ2UgKyAxfSkNCgkJCSAgICAgICAN
CgkJCSAgICAgdmFsIHN0YXRlbWVudHNfZm9yY2VzDQoJCQkgICAgICAgPSBMaXN0LnJldk1hcA0K
CQkJICAgICAgICAgKGZvcmNlcywNCgkJCQkgIGZuIGZvcmNlIGFzIHtzcmMsZHN0LHNpemUsLi4u
fQ0KCQkJCSAgID0+IChjYXNlIFNpemUuY2xhc3Mgc2l6ZQ0KCQkJCQkgb2YgU2l6ZS5JTlQNCgkJ
CQkJICA9PiBBc3NlbWJseS5pbnN0cnVjdGlvbl9tb3YNCgkJCQkJICAgICB7c3JjID0gT3BlcmFu
ZC5tZW1sb2Mgc3JjLA0KCQkJCQkgICAgICBkc3QgPSBPcGVyYW5kLm1lbWxvYyBkc3QsDQoJCQkJ
CSAgICAgIHNpemUgPSBzaXplfQ0KCQkJCQkgIHwgXw0KCQkJCQkgID0+IEFzc2VtYmx5Lmluc3Ry
dWN0aW9uX3BmbW92DQoJCQkJCSAgICAge3NyYyA9IE9wZXJhbmQubWVtbG9jIHNyYywNCgkJCQkJ
ICAgICAgZHN0ID0gT3BlcmFuZC5tZW1sb2MgZHN0LA0KCQkJCQkgICAgICBzaXplID0gc2l6ZX0p
KQ0KDQoJCQkgICAgIHZhbCB7c3RhdGVtZW50cyA9IHN0YXRlbWVudHNfYXNtX2ZvcmNlcywNCgkJ
CQkgIGxpdmV9DQoJCQkgICAgICAgPSBMaXZlbmVzc0Jsb2NrLnRvTGl2ZW5lc3NTdGF0ZW1lbnRz
DQoJCQkgICAgICAgICB7c3RhdGVtZW50cyA9IGFzbTo6c3RhdGVtZW50c19mb3JjZXMsDQoJCQkJ
ICBsaXZlID0gbGl2ZX0NCgkJCSAgIGluDQoJCQkgICAgIHtzdGF0ZW1lbnRzIA0KCQkJICAgICAg
PSBMaXN0LmNvbmNhdA0KCQkJICAgICAgICBbc3RhdGVtZW50c19hc21fZm9yY2VzLA0KCQkJCSBz
dGF0ZW1lbnRzXSwNCgkJCSAgICAgIGNoYW5nZWQgDQoJCQkgICAgICA9IGNoYW5nZWQgDQoJCQkg
ICAgICAgIG9yZWxzZQ0KCQkJCUxpc3QuZXhpc3RzKGZvcmNlcywNCgkJCQkJICAgIGZuIGZvcmNl
IGFzIHthZ2UsLi4ufQ0KCQkJCQkgICAgID0+IGFnZSA8PiAwKSwNCgkJCSAgICAgIG1vdmVzID0g
bW92ZXMsDQoJCQkgICAgICBsaXZlID0gbGl2ZX0NCgkJCSAgIGVuZA0KDQoJCSAgICAgICBmdW4g
Zm9yY2UgKCkNCgkJCSA9IGxldA0KCQkJICAgICB2YWwgZm9yY2VzID0gbW92ZXMNCgkJCSAgICAg
dmFsIHN0YXRlbWVudHNfZm9yY2VzDQoJCQkgICAgICAgPSBMaXN0Lm1hcA0KCQkJICAgICAgICAg
KGZvcmNlcywNCgkJCQkgIGZuIGZvcmNlIGFzIHtzcmMsZHN0LHNpemUsLi4ufQ0KCQkJCSAgID0+
IChjYXNlIFNpemUuY2xhc3Mgc2l6ZQ0KCQkJCQkgb2YgU2l6ZS5JTlQNCgkJCQkJICA9PiBBc3Nl
bWJseS5pbnN0cnVjdGlvbl9tb3YNCgkJCQkJICAgICB7c3JjID0gT3BlcmFuZC5tZW1sb2Mgc3Jj
LA0KCQkJCQkgICAgICBkc3QgPSBPcGVyYW5kLm1lbWxvYyBkc3QsDQoJCQkJCSAgICAgIHNpemUg
PSBzaXplfQ0KCQkJCQkgIHwgXw0KCQkJCQkgID0+IEFzc2VtYmx5Lmluc3RydWN0aW9uX3BmbW92
DQoJCQkJCSAgICAge3NyYyA9IE9wZXJhbmQubWVtbG9jIHNyYywNCgkJCQkJICAgICAgZHN0ID0g
T3BlcmFuZC5tZW1sb2MgZHN0LA0KCQkJCQkgICAgICBzaXplID0gc2l6ZX0pKQ0KCQkJCSANCgkJ
CSAgICAgdmFsIHtzdGF0ZW1lbnRzID0gc3RhdGVtZW50c19hc21fZm9yY2VzLA0KCQkJCSAgbGl2
ZX0NCgkJCSAgICAgICA9IExpdmVuZXNzQmxvY2sudG9MaXZlbmVzc1N0YXRlbWVudHMNCgkJCSAg
ICAgICAgIHtzdGF0ZW1lbnRzID0gYXNtOjpzdGF0ZW1lbnRzX2ZvcmNlcywNCgkJCQkgIGxpdmUg
PSBsaXZlfQ0KCQkJICAgaW4NCgkJCSAgICAge3N0YXRlbWVudHMgDQoJCQkgICAgICA9IExpc3Qu
Y29uY2F0DQoJCQkgICAgICAgIFtzdGF0ZW1lbnRzX2FzbV9mb3JjZXMsDQoJCQkJIHN0YXRlbWVu
dHNdLA0KCQkJICAgICAgY2hhbmdlZCA9IGNoYW5nZWQNCgkJCSAgICAgICAgICAgICAgICBvcmVs
c2UNCgkJCQkJTGlzdC5leGlzdHMoZm9yY2VzLA0KCQkJCQkJICAgIGZuIGZvcmNlIGFzIHthZ2Us
Li4ufQ0KCQkJCQkJICAgICA9PiBhZ2UgPD4gMCksDQoJCQkgICAgICBtb3ZlcyA9IFtdLA0KCQkJ
ICAgICAgbGl2ZSA9IGxpdmV9DQoJCQkgICBlbmQNCgkJICAgICBpbg0KCQkgICAgICAgY2FzZSBh
c20NCgkJCSBvZiBBc3NlbWJseS5JbnN0cnVjdGlvbiANCgkJCSAgICAoSW5zdHJ1Y3Rpb24uTU9W
DQoJCQkgICAgIHtzcmMgYXMgT3BlcmFuZC5NZW1Mb2MgbWVtbG9jX3NyYywNCgkJCSAgICAgIGRz
dCBhcyBPcGVyYW5kLk1lbUxvYyBtZW1sb2NfZHN0LA0KCQkJICAgICAgc2l6ZX0pDQoJCQkgID0+
IGlmIExpc3QuY29udGFpbnMoZGVhZCwNCgkJCQkJICAgICAgbWVtbG9jX3NyYywNCgkJCQkJICAg
ICAgTWVtTG9jLmVxKQ0KCQkJICAgICAgICBvcmVsc2UNCgkJCQlMaXN0LmV4aXN0cyhtb3ZlcywN
CgkJCQkJICAgIGZuIHtzcmMsLi4ufQ0KCQkJCQkgICAgID0+IE1lbUxvYy5lcShtZW1sb2Nfc3Jj
LHNyYykpDQoJCQkgICAgICAgdGhlbiB7c3RhdGVtZW50cyA9IHN0YXRlbWVudHMsDQoJCQkJICAg
ICBjaGFuZ2VkID0gY2hhbmdlZCwNCgkJCQkgICAgIG1vdmVzID0ge3NyYyA9IG1lbWxvY19zcmMs
DQoJCQkJCSAgICAgIGRzdCA9IG1lbWxvY19kc3QsDQoJCQkJCSAgICAgIHNpemUgPSBzaXplLA0K
CQkJCQkgICAgICBhZ2UgPSAwfTo6bW92ZXMsDQoJCQkJICAgICBsaXZlID0gbGl2ZX0NCgkJCSAg
ICAgICBlbHNlIGRlZmF1bHQgKCkNCgkJCSAgfCBBc3NlbWJseS5JbnN0cnVjdGlvbiANCgkJCSAg
ICAoSW5zdHJ1Y3Rpb24ucEZNT1YNCgkJCSAgICAge3NyYyBhcyBPcGVyYW5kLk1lbUxvYyBtZW1s
b2Nfc3JjLA0KCQkJICAgICAgZHN0IGFzIE9wZXJhbmQuTWVtTG9jIG1lbWxvY19kc3QsDQoJCQkg
ICAgICBzaXplfSkNCgkJCSAgPT4gaWYgTGlzdC5jb250YWlucyhkZWFkLA0KCQkJCQkgICAgICBt
ZW1sb2Nfc3JjLA0KCQkJCQkgICAgICBNZW1Mb2MuZXEpDQoJCQkgICAgICAgIG9yZWxzZQ0KCQkJ
CUxpc3QuZXhpc3RzKG1vdmVzLA0KCQkJCQkgICAgZm4ge3NyYywuLi59DQoJCQkJCSAgICAgPT4g
TWVtTG9jLmVxKG1lbWxvY19zcmMsc3JjKSkNCgkJCSAgICAgICB0aGVuIHtzdGF0ZW1lbnRzID0g
c3RhdGVtZW50cywNCgkJCQkgICAgIGNoYW5nZWQgPSBjaGFuZ2VkLA0KCQkJCSAgICAgbW92ZXMg
PSB7c3JjID0gbWVtbG9jX3NyYywNCgkJCQkJICAgICAgZHN0ID0gbWVtbG9jX2RzdCwNCgkJCQkJ
ICAgICAgc2l6ZSA9IHNpemUsDQoJCQkJCSAgICAgIGFnZSA9IDB9Ojptb3ZlcywNCgkJCQkgICAg
IGxpdmUgPSBsaXZlfQ0KCQkJICAgICAgIGVsc2UgZGVmYXVsdCAoKQ0KCQkJICB8IF8gPT4gZGVm
YXVsdCAoKQ0KCQkgICAgIGVuZCkNCg0KCSAgICB2YWwgZm9yY2VzID0gbW92ZXMNCgkgICAgdmFs
IHN0YXRlbWVudHNfZm9yY2VzDQoJICAgICAgPSBMaXN0Lm1hcA0KCSAgICAgICAgKGZvcmNlcywN
CgkJIGZuIG1vdmUgYXMge3NyYyxkc3Qsc2l6ZSwuLi59DQoJCSAgPT4gKGNhc2UgU2l6ZS5jbGFz
cyBzaXplDQoJCQlvZiBTaXplLklOVA0KCQkJID0+IEFzc2VtYmx5Lmluc3RydWN0aW9uX21vdg0K
CQkJICAgIHtzcmMgPSBPcGVyYW5kLm1lbWxvYyBzcmMsDQoJCQkgICAgIGRzdCA9IE9wZXJhbmQu
bWVtbG9jIGRzdCwNCgkJCSAgICAgc2l6ZSA9IHNpemV9DQoJCQkgfCBfDQoJCQkgPT4gQXNzZW1i
bHkuaW5zdHJ1Y3Rpb25fcGZtb3YNCgkJCSAgICB7c3JjID0gT3BlcmFuZC5tZW1sb2Mgc3JjLA0K
CQkJICAgICBkc3QgPSBPcGVyYW5kLm1lbWxvYyBkc3QsDQoJCQkgICAgIHNpemUgPSBzaXplfSkp
DQoJICAgIHZhbCB7c3RhdGVtZW50cyA9IHN0YXRlbWVudHNfZm9yY2VzLA0KCQkgbGl2ZX0NCgkg
ICAgICA9IExpdmVuZXNzQmxvY2sudG9MaXZlbmVzc1N0YXRlbWVudHMNCgkgICAgICAgIHtzdGF0
ZW1lbnRzID0gc3RhdGVtZW50c19mb3JjZXMsDQoJCSBsaXZlID0gbGl2ZX0NCgkgICAgdmFsIHN0
YXRlbWVudHMgPSBMaXN0LmNvbmNhdCBbc3RhdGVtZW50c19mb3JjZXMsIA0KCQkJCQkgIHN0YXRl
bWVudHNdDQoJICAgIHZhbCBjaGFuZ2VkID0gY2hhbmdlZA0KCSAgICAgICAgICAgICAgICAgIG9y
ZWxzZQ0KCQkJICBMaXN0LmV4aXN0cyhmb3JjZXMsDQoJCQkJICAgICAgZm4gZm9yY2UgYXMge2Fn
ZSwuLi59DQoJCQkJICAgICAgID0+IGFnZSA8PiAwKQ0KCSAgICB2YWwgYmxvY2sgPSBMaXZlbmVz
c0Jsb2NrLlQge2xhYmVsID0gbGFiZWwsDQoJCQkJCSBwcm9maWxlSW5mbyA9IHByb2ZpbGVJbmZv
LA0KCQkJCQkgc3RhdGVtZW50cyA9IHN0YXRlbWVudHMsDQoJCQkJCSB0cmFuc2ZlciA9IHRyYW5z
ZmVyfQ0KCSAgaW4NCgkgICAge2Jsb2NrID0gYmxvY2ssDQoJICAgICBjaGFuZ2VkID0gY2hhbmdl
ZH0NCgkgIGVuZA0KDQogICAgICB2YWwgKG1vdmVIb2lzdDogDQoJICAge2Jsb2NrOiBMaXZlbmVz
c0Jsb2NrLnR9IC0+IA0KCSAgIHtibG9jazogTGl2ZW5lc3NCbG9jay50LCANCgkgICAgY2hhbmdl
ZDogYm9vbH0sDQoJICAgbW92ZUhvaXN0X21zZykNCgk9IHRyYWNlcg0KCSAgIm1vdmVIb2lzdCIN
CgkgIG1vdmVIb2lzdA0KICAgIGVuZA0KDQogIHN0cnVjdHVyZSBDb3B5UHJvcGFnYXRlTGl2ZW5l
c3NCbG9jayA9DQogICAgc3RydWN0DQogICAgICBmdW4gY29weVByb3BhZ2F0ZScge3NyYywNCgkJ
CSAgZHN0IGFzIE9wZXJhbmQuTWVtTG9jIG1lbWxvY19kc3QsDQoJCQkgIGJsb2NrIGFzIExpdmVu
ZXNzQmxvY2suVCB7bGFiZWwsDQoJCQkJCQkgICAgcHJvZmlsZUluZm8sDQoJCQkJCQkgICAgc3Rh
dGVtZW50cywNCgkJCQkJCSAgICB0cmFuc2Zlcn0sDQoJCQkgIGxpdmVJbmZvfQ0KCT0gbGV0DQoJ
ICAgIHZhbCBjaGFuZ2VkID0gcmVmIDANCgkgICAgdmFsIChhbGwscmVwbGFjZXIpDQoJICAgICAg
PSBjYXNlIHNyYw0KCQkgIG9mIE9wZXJhbmQuTWVtTG9jIG1lbWxvY19zcmMNCgkJICAgPT4gbGV0
DQoJCQl2YWwgYWxsDQoJCQkgID0gbGV0DQoJCQkgICAgICBmdW4gZG9pdCAobWVtbG9jcywgYWxs
KQ0KCQkJCT0gTGlzdC5mb2xkDQoJCQkJICAobWVtbG9jcywNCgkJCQkgICBhbGwsDQoJCQkJICAg
Zm4gKG1lbWxvYyxhbGwpDQoJCQkJICAgID0+IGlmIExpc3QuY29udGFpbnMoYWxsLA0KCQkJCQkJ
CW1lbWxvYywNCgkJCQkJCQlNZW1Mb2MuZXEpDQoJCQkJCSB0aGVuIGFsbA0KCQkJCQkgZWxzZSBt
ZW1sb2M6OmFsbCkNCgkJCSAgICBpbg0KCQkJICAgICAgZG9pdChtZW1sb2NfZHN0OjooTWVtTG9j
LnV0aWxpemVkIG1lbWxvY19kc3QpLA0KCQkJICAgICAgZG9pdChtZW1sb2Nfc3JjOjooTWVtTG9j
LnV0aWxpemVkIG1lbWxvY19zcmMpLA0KCQkJCSAgIFtdKSkNCgkJCSAgICBlbmQNCg0KCQkJZnVu
IHJlcGxhY2VyJyBtZW1sb2MNCgkJCSAgPSBpZiBNZW1Mb2MuZXEobWVtbG9jLG1lbWxvY19kc3Qp
DQoJCQkgICAgICB0aGVuIChjaGFuZ2VkIDo9ICFjaGFuZ2VkICsgMTsgDQoJCQkJICAgIG1lbWxv
Y19zcmMpDQoJCQkgICAgICBlbHNlIG1lbWxvYw0KCQkJCQ0KCQkJdmFsIHJlcGxhY2VyDQoJCQkg
ID0gZm4ge3VzZSxkZWZ9ID0+IGZuIG9wZXJhbmQNCgkJCSAgICAgPT4gaWYgdXNlIGFuZGFsc28g
bm90IGRlZg0KCQkJCSAgdGhlbiBjYXNlIG9wZXJhbmQNCgkJCQkJIG9mIE9wZXJhbmQuTWVtTG9j
IG1lbWxvYw0KCQkJCQkgID0+IE9wZXJhbmQubWVtbG9jIA0KCQkJCQkgICAgIChNZW1Mb2MucmVw
bGFjZSByZXBsYWNlcicgDQoJCQkJCSAgICAgICAgICAgICAgICAgICAgIG1lbWxvYykNCgkJCQkJ
ICB8IF8gPT4gb3BlcmFuZA0KCQkJCWVsc2UgY2FzZSBvcGVyYW5kDQoJCQkJICAgICAgIG9mIE9w
ZXJhbmQuTWVtTG9jIG1lbWxvYw0KCQkJCSAgICAgICAgPT4gaWYgTWVtTG9jLmVxKG1lbWxvYywN
CgkJCQkJCQltZW1sb2NfZHN0KQ0KCQkJCQkgICAgIHRoZW4gb3BlcmFuZA0KCQkJCQkgICAgIGVs
c2UgT3BlcmFuZC5tZW1sb2MNCgkJCQkJICAgICAgICAgIChNZW1Mb2MucmVwbGFjZSByZXBsYWNl
cicgDQoJCQkJCQkgICAgICAgICAgICAgICAgICBtZW1sb2MpDQoJCQkJICAgICAgICB8IF8gPT4g
b3BlcmFuZA0KCQkgICAgICBpbg0KCQkJKGFsbCwgcmVwbGFjZXIpDQoJCSAgICAgIGVuZA0KCQkg
ICB8IF8NCgkJICAgPT4gbGV0DQoJCQl2YWwgYWxsDQoJCQkgID0gbGV0DQoJCQkgICAgICBmdW4g
ZG9pdCAobWVtbG9jcywgYWxsKQ0KCQkJCT0gTGlzdC5mb2xkDQoJCQkJICAobWVtbG9jcywNCgkJ
CQkgICBhbGwsDQoJCQkJICAgZm4gKG1lbWxvYyxhbGwpDQoJCQkJICAgID0+IGlmIExpc3QuY29u
dGFpbnMoYWxsLA0KCQkJCQkJCW1lbWxvYywNCgkJCQkJCQlNZW1Mb2MuZXEpDQoJCQkJCSB0aGVu
IGFsbA0KCQkJCQkgZWxzZSBtZW1sb2M6OmFsbCkNCgkJCSAgICBpbg0KCQkJICAgICAgZG9pdCht
ZW1sb2NfZHN0OjooTWVtTG9jLnV0aWxpemVkIG1lbWxvY19kc3QpLA0KCQkJCSAgIFtdKQ0KCQkJ
ICAgIGVuZA0KCQkJCQ0KCQkJdmFsIHJlcGxhY2VyDQoJCQkgID0gZm4ge3VzZSxkZWZ9IA0KCQkJ
ICAgICA9PiBmbiBvcGVyYW5kDQoJCQkgICAgICAgICA9PiBpZiB1c2UgYW5kYWxzbyBub3QgZGVm
DQoJCQkJICAgICAgdGhlbiBpZiBPcGVyYW5kLmVxKG9wZXJhbmQsZHN0KQ0KCQkJCQkgICAgIHRo
ZW4gKGNoYW5nZWQgOj0gIWNoYW5nZWQgKyAxOyANCgkJCQkJCSAgIHNyYykNCgkJCQkJICAgICBl
bHNlIG9wZXJhbmQNCgkJCQkgICAgICBlbHNlIG9wZXJhbmQNCgkJICAgICAgaW4NCgkJCShhbGws
IHJlcGxhY2VyKQ0KCQkgICAgICBlbmQNCg0KCSAgICB2YWwgKHRyYW5zZmVyLF8pID0gdHJhbnNm
ZXINCg0KCSAgICBmdW4gZG9pdCAoW10gOiAoQXNzZW1ibHkudCAqIExpdmVuZXNzLnQpIGxpc3Qp
IA0KCSAgICAgID0gU09NRSAoQmxvY2suVCB7bGFiZWwgPSBsYWJlbCwNCgkJCSAgICAgICBwcm9m
aWxlSW5mbyA9IHByb2ZpbGVJbmZvLA0KCQkJICAgICAgIHN0YXRlbWVudHMgPSBbXSwNCgkJCSAg
ICAgICB0cmFuc2ZlciA9IFRyYW5zZmVyLnJlcGxhY2UNCgkJCSAgICAgICAgICAgICAgICAgIHJl
cGxhY2VyDQoJCQkJCSAgdHJhbnNmZXJ9KQ0KCSAgICAgIHwgZG9pdCAoKGFzbSx7ZGVhZCwuLi59
KTo6c3RhdGVtZW50cykNCgkgICAgICA9IGxldA0KCQkgIHZhbCBhc20gPSBBc3NlbWJseS5yZXBs
YWNlIHJlcGxhY2VyIGFzbQ0KDQoJCSAgdmFsIHt1c2VzLGRlZnMsLi4ufSA9IEFzc2VtYmx5LnVz
ZXNfZGVmc19raWxscyBhc20NCg0KCQkgIGxvY2FsDQoJCSAgICBmdW4gZG9pdCBvcGVyYW5kcw0K
CQkgICAgICA9IExpc3QuZm9sZA0KCQkgICAgICAgIChvcGVyYW5kcywNCgkJCSBbXSwNCgkJCSBm
biAob3BlcmFuZCxtZW1sb2NzKQ0KCQkJICA9PiBjYXNlIE9wZXJhbmQuZGVNZW1sb2Mgb3BlcmFu
ZA0KCQkJICAgICAgIG9mIFNPTUUgbWVtbG9jDQoJCQkJPT4gaWYgTGlzdC5jb250YWlucyhtZW1s
b2NzLA0KCQkJCQkJICAgIG1lbWxvYywNCgkJCQkJCSAgICBNZW1Mb2MuZXEpDQoJCQkJICAgICB0
aGVuIG1lbWxvY3MNCgkJCQkgICAgIGVsc2UgbWVtbG9jOjptZW1sb2NzDQoJCQkJfCBOT05FID0+
IG1lbWxvY3MpDQoJCSAgaW4NCgkJICAgIHZhbCB1c2VzID0gZG9pdCB1c2VzDQoJCSAgICB2YWwg
ZGVmcyA9IGRvaXQgZGVmcw0KCQkgIGVuZA0KDQoJCSAgdmFsIHVzZXMnDQoJCSAgICA9IGxldA0K
CQkJZnVuIGRvaXQobWVtbG9jcyx1c2VzJykNCgkJCSAgPSBMaXN0LmZvbGQNCgkJCSAgICAobWVt
bG9jcywNCgkJCSAgICAgdXNlcycsDQoJCQkgICAgIGZuIChtZW1sb2MsdXNlcycpDQoJCQkgICAg
ICA9PiBpZiBMaXN0LmNvbnRhaW5zKHVzZXMnLA0KCQkJCQkJICBtZW1sb2MsDQoJCQkJCQkgIE1l
bUxvYy5lcSkNCgkJCQkgICB0aGVuIHVzZXMnDQoJCQkJICAgZWxzZSBtZW1sb2M6OnVzZXMnKQ0K
CQkJZnVuIGRvaXQnKG1lbWxvY3MsdXNlcycpDQoJCQkgID0gTGlzdC5mb2xkDQoJCQkgICAgKG1l
bWxvY3MsDQoJCQkgICAgIHVzZXMnLA0KCQkJICAgICBmbiAobWVtbG9jLHVzZXMnKQ0KCQkJICAg
ICAgPT4gZG9pdChNZW1Mb2MudXRpbGl6ZWQgbWVtbG9jLCB1c2VzJykpDQoJCSAgICAgIGluDQoJ
CQlkb2l0JyhkZWZzLA0KCQkgICAgICAgIGRvaXQnKHVzZXMsDQoJCQlkb2l0KHVzZXMsDQoJCQkg
ICAgIFtdKSkpDQoJCSAgICAgIGVuZA0KCQlpbg0KCQkgIGlmIG5vdCAoTGlzdC5jb250YWlucyh1
c2VzJywNCgkJCQkJbWVtbG9jX2RzdCwNCgkJCQkJTWVtTG9jLmVxKSkNCgkJICAgIHRoZW4gaWYg
TGlzdC5jb250YWlucyhkZWFkLG1lbWxvY19kc3QsTWVtTG9jLmVxKQ0KCQkJICAgdGhlbiBsZXQN
CgkJCQkgIHZhbCBzdGF0ZW1lbnRzIA0KCQkJCSAgICA9IExpc3QubWFwKHN0YXRlbWVudHMsIA0K
CQkJCQkgICAgICAgZm4gKGFzbSx7Li4ufSkgPT4gYXNtKQ0KCQkJCWluIA0KCQkJCSAgU09NRSAo
QmxvY2suVCANCgkJCQkJe2xhYmVsID0gbGFiZWwsDQoJCQkJCSBwcm9maWxlSW5mbyA9IHByb2Zp
bGVJbmZvLA0KCQkJCQkgc3RhdGVtZW50cyA9IGFzbTo6c3RhdGVtZW50cywNCgkJCQkJIHRyYW5z
ZmVyID0gdHJhbnNmZXJ9KQ0KCQkJCWVuZA0KCQkJIGVsc2UgaWYgTGlzdC5mb3JhbGwNCgkJCSAg
ICAgICAgIChhbGwsDQoJCQkJICBmbiBtZW1sb2MNCgkJCQkgICA9PiBMaXN0LmZvcmFsbA0KCQkJ
CSAgICAgIChkZWZzLA0KCQkJCSAgICAgICBmbiBtZW1sb2MnDQoJCQkgICAgICAgICAgICAgICAg
PT4gbm90IChNZW1Mb2MubWF5QWxpYXMobWVtbG9jLCANCgkJCQkJCQkJbWVtbG9jJykpKSkNCgkJ
CSAgIHRoZW4gY2FzZSBkb2l0IHN0YXRlbWVudHMNCgkJCQkgIG9mIE5PTkUgPT4gTk9ORQ0KCQkJ
CSAgIHwgU09NRSAoQmxvY2suVCB7bGFiZWwsDQoJCQkJCQkgICAgcHJvZmlsZUluZm8sDQoJCQkJ
CQkgICAgc3RhdGVtZW50cywNCgkJCQkJCSAgICB0cmFuc2Zlcn0pDQoJCQkJICAgPT4gU09NRSAo
QmxvY2suVCANCgkJCQkJICAgIHtsYWJlbCA9IGxhYmVsLA0KCQkJCQkgICAgIHByb2ZpbGVJbmZv
ID0gcHJvZmlsZUluZm8sDQoJCQkJCSAgICAgc3RhdGVtZW50cyA9IGFzbTo6c3RhdGVtZW50cywN
CgkJCQkJICAgICB0cmFuc2ZlciA9IHRyYW5zZmVyfSkNCgkJICAgICAgICAgZWxzZSBOT05FDQoJ
CSAgICBlbHNlIE5PTkUNCgkJZW5kDQoJICBpbg0KCSAgICBjYXNlIGRvaXQgc3RhdGVtZW50cw0K
CSAgICAgIG9mIE5PTkUgPT4gTk9ORQ0KCSAgICAgICB8IFNPTUUgYmxvY2sgPT4gU09NRSB7Ymxv
Y2sgPSBMaXZlbmVzc0Jsb2NrLnRvTGl2ZW5lc3NCbG9jayANCgkJCQkgICAgICAgICAgICAge2Js
b2NrID0gYmxvY2ssDQoJCQkJCSAgICAgIGxpdmVJbmZvID0gbGl2ZUluZm99LA0KCQkJCSAgICAg
Y2hhbmdlZCA9ICFjaGFuZ2VkID4gMH0NCgkgIGVuZA0KCXwgY29weVByb3BhZ2F0ZScgXyA9IEVy
cm9yLmJ1ZyAiY29weVByb3BhZ2F0ZSciDQoNCiAgICAgIGZ1biBjb3B5UHJvcGFnYXRlIHtibG9j
ayBhcyBMaXZlbmVzc0Jsb2NrLlQgDQoJCQkgICAgICAgICAge2xhYmVsLCBwcm9maWxlSW5mbywg
c3RhdGVtZW50cywgdHJhbnNmZXJ9LA0KCQkJIGxpdmVJbmZvfQ0KCT0gbGV0DQoJICAgIHZhbCAo
Xyx7bGl2ZU91dCwuLi59KSA9IHRyYW5zZmVyDQoNCgkgICAgdmFsIHtibG9jayxjaGFuZ2VkLGxp
dmVPdXR9DQoJICAgICAgPSBMaXN0LmZvbGRyDQoJICAgICAgICAoc3RhdGVtZW50cywNCgkJIHti
bG9jayA9IExpdmVuZXNzQmxvY2suVCB7bGFiZWwgPSBsYWJlbCwNCgkJCQkJICAgcHJvZmlsZUlu
Zm8gPSBwcm9maWxlSW5mbywNCgkJCQkJICAgc3RhdGVtZW50cyA9IFtdLA0KCQkJCQkgICB0cmFu
c2ZlciA9IHRyYW5zZmVyfSwNCgkJICBjaGFuZ2VkID0gZmFsc2UsDQoJCSAgbGl2ZU91dCA9IGxp
dmVPdXR9LA0KCQkgZm4gKChhc20gYXMgQXNzZW1ibHkuSW5zdHJ1Y3Rpb24gDQoJCSAgICAgICAg
ICAgICAoSW5zdHJ1Y3Rpb24uTU9WDQoJCQkgICAgICB7c3JjLA0KCQkJICAgICAgIGRzdCBhcyBP
cGVyYW5kLk1lbUxvYyBtZW1sb2NfZHN0LA0KCQkJICAgICAgIHNpemV9KSwNCgkJICAgICAgaW5m
byBhcyB7ZGVhZCwuLi59KSwNCgkJICAgICB7YmxvY2sgYXMgTGl2ZW5lc3NCbG9jay5UIHtsYWJl
bCxwcm9maWxlSW5mbywNCgkJCQkJCXN0YXRlbWVudHMsdHJhbnNmZXJ9LA0KCQkgICAgICBjaGFu
Z2VkLA0KCQkgICAgICBsaXZlT3V0fSkNCgkJICA9PiBsZXQNCgkJICAgICAgIHZhbCBibG9jaycN
CgkJCSA9IExpdmVuZXNzQmxvY2suVCANCgkJCSAgIHtsYWJlbCA9IGxhYmVsLA0KCQkJICAgIHBy
b2ZpbGVJbmZvID0gcHJvZmlsZUluZm8sDQoJCQkgICAgc3RhdGVtZW50cyA9IChhc20saW5mbyk6
OnN0YXRlbWVudHMsDQoJCQkgICAgdHJhbnNmZXIgPSB0cmFuc2Zlcn0JDQoJCSAgICAgICB2YWwg
bGl2ZU91dCcNCgkJCSA9IExpc3QucmVtb3ZlQWxsKGxpdmVPdXQsDQoJCQkJCSAgZm4gbWVtbG9j
IA0KCQkJCQkgICA9PiBMaXN0LmNvbnRhaW5zDQoJCQkJCSAgICAgIChkZWFkLA0KCQkJCQkgICAg
ICAgbWVtbG9jLA0KCQkJCQkgICAgICAgTWVtTG9jLmVxKSkNCgkJICAgICBpbg0KCQkgICAgICAg
aWYgTWVtTG9jLmlzVGVtcCBtZW1sb2NfZHN0IA0KCQkJICBhbmRhbHNvDQoJCQkgIG5vdCAoTGlz
dC5jb250YWlucyhsaXZlT3V0LA0KCQkJCQkgICAgIG1lbWxvY19kc3QsDQoJCQkJCSAgICAgTWVt
TG9jLmVxKSkNCgkJCSB0aGVuIGNhc2UgY29weVByb3BhZ2F0ZScge3NyYyA9IHNyYywNCgkJCQkJ
CSAgIGRzdCA9IGRzdCwNCgkJCQkJCSAgIGJsb2NrID0gYmxvY2ssDQoJCQkJCQkgICBsaXZlSW5m
byA9IGxpdmVJbmZvfQ0KCQkJCW9mIE5PTkUgPT4ge2Jsb2NrID0gYmxvY2snLA0KCQkJCQkgICAg
Y2hhbmdlZCA9IGNoYW5nZWQsDQoJCQkJCSAgICBsaXZlT3V0ID0gbGl2ZU91dCd9DQoJCQkJIHwg
U09NRSB7YmxvY2sgPSBibG9jaycsDQoJCQkJCSBjaGFuZ2VkID0gY2hhbmdlZCd9DQoJCQkJICA9
PiB7YmxvY2sgPSBibG9jaycsDQoJCQkJICAgICAgY2hhbmdlZCA9IGNoYW5nZWQgb3JlbHNlIGNo
YW5nZWQnLA0KCQkJCSAgICAgIGxpdmVPdXQgPSBsaXZlT3V0J30NCgkJCSBlbHNlIHtibG9jayA9
IGJsb2NrJywNCgkJCSAgICAgICBjaGFuZ2VkID0gY2hhbmdlZCwNCgkJCSAgICAgICBsaXZlT3V0
ID0gbGl2ZU91dCd9DQoJCSAgICAgZW5kDQoJCSAgfCAoKGFzbSBhcyBBc3NlbWJseS5JbnN0cnVj
dGlvbiANCgkJICAgICAgICAgICAgIChJbnN0cnVjdGlvbi5wRk1PVg0KCQkJICAgICAge3NyYywN
CgkJCSAgICAgICBkc3QgYXMgT3BlcmFuZC5NZW1Mb2MgbWVtbG9jX2RzdCwNCgkJCSAgICAgICBz
aXplfSksDQoJCSAgICAgIGluZm8gYXMge2RlYWQsLi4ufSksDQoJCSAgICAge2Jsb2NrIGFzIExp
dmVuZXNzQmxvY2suVCB7bGFiZWwscHJvZmlsZUluZm8sDQoJCQkJCQlzdGF0ZW1lbnRzLHRyYW5z
ZmVyfSwNCgkJICAgICAgY2hhbmdlZCwNCgkJICAgICAgbGl2ZU91dH0pDQoJCSAgPT4gbGV0DQoJ
CSAgICAgICB2YWwgYmxvY2snDQoJCQkgPSBMaXZlbmVzc0Jsb2NrLlQgDQoJCQkgICB7bGFiZWwg
PSBsYWJlbCwNCgkJCSAgICBwcm9maWxlSW5mbyA9IHByb2ZpbGVJbmZvLA0KCQkJICAgIHN0YXRl
bWVudHMgPSAoYXNtLGluZm8pOjpzdGF0ZW1lbnRzLA0KCQkJICAgIHRyYW5zZmVyID0gdHJhbnNm
ZXJ9CQ0KCQkgICAgICAgdmFsIGxpdmVPdXQnDQoJCQkgPSBMaXN0LnJlbW92ZUFsbChsaXZlT3V0
LA0KCQkJCQkgIGZuIG1lbWxvYyANCgkJCQkJICAgPT4gTGlzdC5jb250YWlucw0KCQkJCQkgICAg
ICAoZGVhZCwNCgkJCQkJICAgICAgIG1lbWxvYywNCgkJCQkJICAgICAgIE1lbUxvYy5lcSkpDQoJ
CSAgICAgaW4gDQoJCSAgICAgICBpZiBNZW1Mb2MuaXNUZW1wIG1lbWxvY19kc3QgDQoJCSAgICAg
ICAgICBhbmRhbHNvDQoJCQkgIG5vdCAoTGlzdC5jb250YWlucyhsaXZlT3V0LA0KCQkJCQkgICAg
IG1lbWxvY19kc3QsDQoJCQkJCSAgICAgTWVtTG9jLmVxKSkNCgkJCSB0aGVuIGNhc2UgY29weVBy
b3BhZ2F0ZScge3NyYyA9IHNyYywNCgkJCQkJCSAgIGRzdCA9IGRzdCwNCgkJCQkJCSAgIGJsb2Nr
ID0gYmxvY2ssDQoJCQkJCQkgICBsaXZlSW5mbyA9IGxpdmVJbmZvfQ0KCQkJCW9mIE5PTkUgDQoJ
CQkJID0+IHtibG9jayA9IGJsb2NrJywNCgkJCQkgICAgIGNoYW5nZWQgPSBjaGFuZ2VkLA0KCQkJ
CSAgICAgbGl2ZU91dCA9IGxpdmVPdXQnfQ0KCQkJCSB8IFNPTUUge2Jsb2NrID0gYmxvY2snLA0K
CQkJCQkgY2hhbmdlZCA9IGNoYW5nZWQnfQ0KCQkJCSA9PiB7YmxvY2sgPSBibG9jaycsDQoJCQkJ
ICAgICBjaGFuZ2VkID0gY2hhbmdlZCBvcmVsc2UgY2hhbmdlZCcsDQoJCQkJICAgICBsaXZlT3V0
ID0gbGl2ZU91dCd9DQoJCQkgZWxzZSB7YmxvY2sgPSBibG9jaycsDQoJCQkgICAgICAgY2hhbmdl
ZCA9IGNoYW5nZWQsDQoJCQkgICAgICAgbGl2ZU91dCA9IGxpdmVPdXQnfQ0KCQkgICAgIGVuZA0K
CQkgIHwgKChhc20saW5mbyBhcyB7ZGVhZCwuLi59KSwNCgkJICAgICB7YmxvY2sgYXMgTGl2ZW5l
c3NCbG9jay5UIHtsYWJlbCxwcm9maWxlSW5mbywNCgkJCQkJCXN0YXRlbWVudHMsdHJhbnNmZXJ9
LA0KCQkgICAgICBjaGFuZ2VkLA0KCQkgICAgICBsaXZlT3V0fSkNCgkJICA9PiBsZXQNCgkJICAg
ICAgIHZhbCBibG9jaycNCgkJCSA9IExpdmVuZXNzQmxvY2suVCANCgkJCSAgIHtsYWJlbCA9IGxh
YmVsLA0KCQkJICAgIHByb2ZpbGVJbmZvID0gcHJvZmlsZUluZm8sDQoJCQkgICAgc3RhdGVtZW50
cyA9IChhc20saW5mbyk6OnN0YXRlbWVudHMsDQoJCQkgICAgdHJhbnNmZXIgPSB0cmFuc2Zlcn0N
CgkJICAgICAgIHZhbCBsaXZlT3V0Jw0KCQkJID0gTGlzdC5yZW1vdmVBbGwobGl2ZU91dCwNCgkJ
CQkJICBmbiBtZW1sb2MgDQoJCQkJCSAgID0+IExpc3QuY29udGFpbnMNCgkJCQkJICAgICAgKGRl
YWQsDQoJCQkJCSAgICAgICBtZW1sb2MsDQoJCQkJCSAgICAgICBNZW1Mb2MuZXEpKQ0KCQkgICAg
IGluDQoJCSAgICAgICB7YmxvY2sgPSBibG9jaycsDQoJCQljaGFuZ2VkID0gY2hhbmdlZCwNCgkJ
CWxpdmVPdXQgPSBsaXZlT3V0J30NCgkJICAgICBlbmQpDQoJICBpbg0KCSAgICB7YmxvY2sgPSBi
bG9jaywNCgkgICAgIGNoYW5nZWQgPSBjaGFuZ2VkfQ0KCSAgZW5kDQoNCiAgICAgIHZhbCAoY29w
eVByb3BhZ2F0ZSA6IA0KCSAgIHtibG9jazogTGl2ZW5lc3NCbG9jay50LCANCgkgICAgbGl2ZUlu
Zm86IHtnZXQ6IExhYmVsLnQgLT4gTWVtTG9jLnQgbGlzdCwNCgkJICAgICAgIHNldDogTGFiZWwu
dCAqIE1lbUxvYy50IGxpc3QgLT4gdW5pdH19IC0+DQoJICAge2Jsb2NrOiBMaXZlbmVzc0Jsb2Nr
LnQsDQoJICAgIGNoYW5nZWQ6IGJvb2x9LA0KCSAgIGNvcHlQcm9wYWdhdGVfbXNnKQ0KCT0gdHJh
Y2VyDQoJICAiY29weVByb3BhZ2F0ZSINCgkgIGNvcHlQcm9wYWdhdGUNCiAgICBlbmQNCg0KICBz
dHJ1Y3R1cmUgUGVlcGhvbGVMaXZlbmVzc0Jsb2NrID0NCiAgICBzdHJ1Y3QNCiAgICAgIHN0cnVj
dHVyZSBQZWVwaG9sZSANCgk9IFBlZXBob2xlKHR5cGUgbGFiZWxfdHlwZSA9IExhYmVsLnQNCgkJ
ICAgdHlwZSBwcm9maWxlSW5mb190eXBlID0gUHJvZmlsZUluZm8udA0KCQkgICB0eXBlIHN0YXRl
bWVudF90eXBlID0gQXNzZW1ibHkudCAqIExpdmVuZXNzLnQNCgkJICAgdHlwZSB0cmFuc2Zlcl90
eXBlID0gVHJhbnNmZXIudCAqIExpdmVuZXNzLnQNCgkJICAgZGF0YXR5cGUgYmxvY2sgPSBkYXRh
dHlwZSBMaXZlbmVzc0Jsb2NrLnQpDQogICAgICBvcGVuIFBlZXBob2xlDQoNCiAgICAgIGZ1biBt
YWtlX2NhbGxiYWNrX21zZyBuYW1lDQoJPSBsZXQNCgkgICAgdmFsIGNvdW50ID0gcmVmIDANCgkg
ICAgdmFsIHRvdGFsID0gcmVmIDANCgkgICAgdmFsIGNhbGxiYWNrID0gZm4gdHJ1ZSA9PiAoSW50
LmluYyBjb3VudDsgSW50LmluYyB0b3RhbCkNCgkgICAgICAgICAgICAgICAgICAgIHwgZmFsc2Ug
PT4gSW50LmluYyB0b3RhbA0KCSAgICB2YWwgbXNnID0gZm4gKCkgPT4gQ29udHJvbC5tZXNzYWdl
U3RyIA0KCSAgICAgICAgICAgICAgICAgICAgICAgKGNvbmNhdCBbbmFtZSwgDQoJCQkJCSI6ICIs
IEludC50b1N0cmluZyAoIWNvdW50KSwNCgkJCQkJIiAvICIsIEludC50b1N0cmluZyAoIXRvdGFs
KV0pDQoJICBpbg0KCSAgICAoY2FsbGJhY2ssbXNnKQ0KCSAgZW5kDQoNCiAgICAgIHZhbCBpc0Nv
bW1lbnQgOiBzdGF0ZW1lbnRfdHlwZSAtPiBib29sDQoJPSBmbiAoQXNzZW1ibHkuQ29tbWVudCBf
LCANCgkgICAgICB7Li4ufSkgPT4gdHJ1ZQ0KCSAgIHwgXyA9PiBmYWxzZQ0KDQogICAgICBsb2Nh
bA0KCXZhbCBpc0luc3RydWN0aW9uX2RzdHNUZW1wX2RzdHNEZWFkIDogc3RhdGVtZW50X3R5cGUg
LT4gYm9vbA0KCSAgPSBmbiAoQXNzZW1ibHkuSW5zdHJ1Y3Rpb24gaW5zdHJ1Y3Rpb24sDQoJCXtk
ZWFkLC4uLn0pDQoJICAgICA9PiBsZXQNCgkJICB2YWwge2RzdHMsLi4ufSA9IEluc3RydWN0aW9u
LnNyY3NfZHN0cyBpbnN0cnVjdGlvbg0KCQlpbiANCgkJICBjYXNlIGRzdHMNCgkJICAgIG9mIE5P
TkUgPT4gZmFsc2UNCgkJICAgICB8IFNPTUUgZHN0cyA9PiBMaXN0LmZvcmFsbA0KCQkgICAgICAg
ICAgICAgICAgICAgIChkc3RzLA0KCQkJCSAgICAgZm4gT3BlcmFuZC5NZW1Mb2MgbWVtbG9jDQoJ
CQkJICAgICAgPT4gTWVtTG9jLmlzVGVtcCBtZW1sb2MNCgkJCQkgICAgICAgICBhbmRhbHNvDQoJ
CQkJCSBMaXN0LmNvbnRhaW5zKGRlYWQsbWVtbG9jLE1lbUxvYy5lcSkNCgkJCQkgICAgICB8IF8g
PT4gZmFsc2UpDQoJCWVuZCANCgkgICAgIHwgXyA9PiBmYWxzZQ0KDQoJdmFsIHRlbXBsYXRlIDog
dGVtcGxhdGUgDQoJICA9IHtzdGFydCA9IEVtcHR5T3JOb25FbXB0eSwNCgkgICAgIHN0YXRlbWVu
dHMgPSBbT25lIGlzSW5zdHJ1Y3Rpb25fZHN0c1RlbXBfZHN0c0RlYWRdLA0KCSAgICAgZmluaXNo
ID0gRW1wdHlPck5vbkVtcHR5LA0KCSAgICAgdHJhbnNmZXIgPSBmbiBfID0+IHRydWV9DQoNCgl2
YWwgcmV3cml0ZXIgOiByZXdyaXRlcg0KCSAgPSBmbiB7bGFiZWwsDQoJCXByb2ZpbGVJbmZvLA0K
CQlzdGFydCwgDQoJCXN0YXRlbWVudHMgYXMNCgkJW1soQXNzZW1ibHkuSW5zdHJ1Y3Rpb24gaW5z
dHJ1Y3Rpb24sDQoJCSAgIGluZm8gYXMgey4uLn0pXV0sDQoJCWZpbmlzaCBhcyBbXSwgDQoJCXRy
YW5zZmVyIGFzIChUcmFuc2Zlci5JZmYge2NvbmRpdGlvbiA9IEluc3RydWN0aW9uLk8sDQoJCQkJ
CSAgIHRydWVlLA0KCQkJCQkgICBmYWxzZWV9LA0KCQkJICAgICB7Li4ufSl9DQoJICAgICA9PiBO
T05FDQoJICAgICB8IHtsYWJlbCwNCgkJcHJvZmlsZUluZm8sDQoJCXN0YXJ0LCANCgkJc3RhdGVt
ZW50cyBhcw0KCQlbWyhBc3NlbWJseS5JbnN0cnVjdGlvbiBpbnN0cnVjdGlvbiwNCgkJICAgaW5m
byBhcyB7Li4ufSldXSwNCgkJZmluaXNoIGFzIFtdLCANCgkJdHJhbnNmZXIgYXMgKFRyYW5zZmVy
LklmZiB7Y29uZGl0aW9uID0gSW5zdHJ1Y3Rpb24uTk8sDQoJCQkJCSAgIHRydWVlLA0KCQkJCQkg
ICBmYWxzZWV9LA0KCQkJICAgICB7Li4ufSl9DQoJICAgICA9PiBOT05FDQoJICAgICB8IHtsYWJl
bCwNCgkJcHJvZmlsZUluZm8sDQoJCXN0YXJ0LCANCgkJc3RhdGVtZW50cyBhcw0KCQlbWyhBc3Nl
bWJseS5JbnN0cnVjdGlvbiBpbnN0cnVjdGlvbiwNCgkJICAgaW5mbyBhcyB7bGl2ZU91dCwuLi59
KV1dLA0KCQlmaW5pc2gsIA0KCQl0cmFuc2Zlcn0NCgkgICAgID0+IGxldA0KCQkgIHZhbCB7c3Rh
dGVtZW50c30NCgkJICAgID0gTGl2ZW5lc3NCbG9jay5yZUxpdmVuZXNzU3RhdGVtZW50cw0KCQkg
ICAgICB7c3RhdGVtZW50cyA9IExpc3QucmV2IHN0YXJ0LA0KCQkgICAgICAgbGl2ZSA9IGxpdmVP
dXR9DQoNCgkJICB2YWwgc3RhdGVtZW50cw0KCQkgICAgPSBMaXN0LmNvbmNhdCBbc3RhdGVtZW50
cywgZmluaXNoXQ0KCQlpbg0KCQkgIFNPTUUgKExpdmVuZXNzQmxvY2suVA0KCQkJe2xhYmVsID0g
bGFiZWwsDQoJCQkgcHJvZmlsZUluZm8gPSBwcm9maWxlSW5mbywNCgkJCSBzdGF0ZW1lbnRzID0g
c3RhdGVtZW50cywNCgkJCSB0cmFuc2ZlciA9IHRyYW5zZmVyfSkNCgkJZW5kDQogICAgICAgICAg
ICAgfCBfID0+IEVycm9yLmJ1ZyAiUGVlcGhvbGU6IGVsaW1EZWFkRHN0cyINCg0KCXZhbCAoY2Fs
bGJhY2ssZWxpbURlYWREc3RzX21zZykNCgkgID0gbWFrZV9jYWxsYmFja19tc2cgImVsaW1EZWFk
RHN0cyINCiAgICAgIGluDQoJdmFsIGVsaW1EZWFkRHN0cyA6IG9wdGltaXphdGlvbg0KCSAgPSB7
dGVtcGxhdGUgPSB0ZW1wbGF0ZSwNCgkgICAgIHJld3JpdGVyID0gcmV3cml0ZXIsDQoJICAgICBj
YWxsYmFjayA9IGNhbGxiYWNrfQ0KCXZhbCBlbGltRGVhZERzdHNfbXNnID0gZWxpbURlYWREc3Rz
X21zZw0KICAgICAgZW5kDQoNCiAgICAgIGxvY2FsDQoJdmFsIGlzSW5zdHJ1Y3Rpb25NT1ZfZHN0
VGVtcCA6IHN0YXRlbWVudF90eXBlIC0+IGJvb2wNCgkgID0gZm4gKEFzc2VtYmx5Lkluc3RydWN0
aW9uIChJbnN0cnVjdGlvbi5NT1YgDQoJCQkJICAgICAge2RzdCA9IE9wZXJhbmQuTWVtTG9jIG1l
bWxvYywuLi59KSwgDQoJCXsuLi59KQ0KCSAgICAgPT4gTWVtTG9jLmlzVGVtcCBtZW1sb2MNCgkg
ICAgIHwgXyA9PiBmYWxzZQ0KDQoJdmFsIGlzSW5zdHJ1Y3Rpb25BTF9kc3RUZW1wIDogc3RhdGVt
ZW50X3R5cGUgLT4gYm9vbA0KCSAgPSBmbiAoQXNzZW1ibHkuSW5zdHJ1Y3Rpb24gKEluc3RydWN0
aW9uLkJpbkFMDQoJCQkJICAgICAge2RzdCA9IE9wZXJhbmQuTWVtTG9jIG1lbWxvYywuLi59KSwN
CgkJey4uLn0pDQoJICAgICA9PiBNZW1Mb2MuaXNUZW1wIG1lbWxvYw0KCSAgICAgfCAoQXNzZW1i
bHkuSW5zdHJ1Y3Rpb24gKEluc3RydWN0aW9uLnBNRA0KCQkJCSAgICAgIHtkc3QgPSBPcGVyYW5k
Lk1lbUxvYyBtZW1sb2MsLi4ufSksDQoJCQ0KCQl7Li4ufSkNCgkgICAgID0+IE1lbUxvYy5pc1Rl
bXAgbWVtbG9jDQoJICAgICB8IChBc3NlbWJseS5JbnN0cnVjdGlvbiAoSW5zdHJ1Y3Rpb24uVW5B
TA0KCQkJCSAgICAgIHtkc3QgPSBPcGVyYW5kLk1lbUxvYyBtZW1sb2MsLi4ufSksDQoJCQ0KCQl7
Li4ufSkNCgkgICAgID0+IE1lbUxvYy5pc1RlbXAgbWVtbG9jDQoJICAgICB8IChBc3NlbWJseS5J
bnN0cnVjdGlvbiAoSW5zdHJ1Y3Rpb24uU1JBTA0KCQkJCSAgICAgIHtkc3QgPSBPcGVyYW5kLk1l
bUxvYyBtZW1sb2MsLi4ufSksDQoJCQ0KCQl7Li4ufSkNCgkgICAgID0+IE1lbUxvYy5pc1RlbXAg
bWVtbG9jDQoJICAgICB8IF8gPT4gZmFsc2UNCg0KCXZhbCBpc0luc3RydWN0aW9uTU9WX3NyY1Rl
bXBfc3JjRGVhZCA6IHN0YXRlbWVudF90eXBlIC0+IGJvb2wNCgkgID0gZm4gKEFzc2VtYmx5Lklu
c3RydWN0aW9uIChJbnN0cnVjdGlvbi5NT1YgDQoJCQkJICAgICAge3NyYyA9IE9wZXJhbmQuTWVt
TG9jIG1lbWxvYywuLi59KSwNCgkJe2RlYWQsLi4ufSkNCgkgICAgID0+IE1lbUxvYy5pc1RlbXAg
bWVtbG9jDQoJICAgICAgICBhbmRhbHNvDQoJCUxpc3QuY29udGFpbnMoZGVhZCwgbWVtbG9jLCBN
ZW1Mb2MuZXEpDQoJICAgICB8IF8gPT4gZmFsc2UNCg0KCXZhbCB0ZW1wbGF0ZSA6IHRlbXBsYXRl
IA0KCSAgPSB7c3RhcnQgPSBFbXB0eU9yTm9uRW1wdHksDQoJICAgICBzdGF0ZW1lbnRzID0gW09u
ZSBpc0luc3RydWN0aW9uTU9WX2RzdFRlbXAsDQoJCQkgICBBbGwgKGZuIGFzbSANCgkJCQkgPT4g
KGlzQ29tbWVudCBhc20pIA0KCQkJCSAgICBvcmVsc2UNCgkJCQkgICAgKGlzSW5zdHJ1Y3Rpb25B
TF9kc3RUZW1wIGFzbSkpLA0KCQkJICAgT25lIGlzSW5zdHJ1Y3Rpb25NT1Zfc3JjVGVtcF9zcmNE
ZWFkXSwNCgkgICAgIGZpbmlzaCA9IEVtcHR5T3JOb25FbXB0eSwNCgkgICAgIHRyYW5zZmVyID0g
Zm4gXyA9PiB0cnVlfQ0KDQoJdmFsIHJld3JpdGVyIDogcmV3cml0ZXINCgkgID0gZm4ge2xhYmVs
LA0KCQlwcm9maWxlSW5mbywNCgkJc3RhcnQsIA0KCQlzdGF0ZW1lbnRzIGFzDQoJCVtbKEFzc2Vt
Ymx5Lkluc3RydWN0aW9uIChJbnN0cnVjdGlvbi5NT1YgDQoJCQkJCSB7c3JjID0gc3JjMSwNCgkJ
CQkJICBkc3QgPSBkc3QxIGFzIE9wZXJhbmQuTWVtTG9jIG1lbWxvYzEsDQoJCQkJCSAgc2l6ZSA9
IHNpemUxfSksDQoJCSAgIHsuLi59KV0sDQoJCSBzdGF0ZW1lbnRzJywNCgkJIFsoQXNzZW1ibHku
SW5zdHJ1Y3Rpb24gKEluc3RydWN0aW9uLk1PViANCgkJCQkJIHtzcmMgPSBzcmMyIGFzIE9wZXJh
bmQuTWVtTG9jIG1lbWxvYzIsDQoJCQkJCSAgZHN0ID0gZHN0MiwNCgkJCQkJICBzaXplID0gc2l6
ZTJ9KSwNCgkJICAge2xpdmVPdXQgPSBsaXZlT3V0MiwuLi59KV1dLA0KCQlmaW5pc2gsIA0KCQl0
cmFuc2Zlcn0NCgkgICAgID0+IGlmIFNpemUuZXEoc2l6ZTEsc2l6ZTIpIGFuZGFsc28NCgkgICAg
ICAgICAgIE1lbUxvYy5lcShtZW1sb2MxLG1lbWxvYzIpIGFuZGFsc28NCgkJICAgTGlzdC5mb3Jh
bGwNCgkJICAgKHN0YXRlbWVudHMnLA0KCQkgICAgZm4gKEFzc2VtYmx5LkNvbW1lbnQgXywgbGl2
ZUluZm8pID0+IHRydWUNCgkJICAgICB8IChBc3NlbWJseS5JbnN0cnVjdGlvbiAoSW5zdHJ1Y3Rp
b24uQmluQUwNCgkJCQkJICAgICAge29wZXIsIA0KCQkJCQkgICAgICAgc3JjLCANCgkJCQkJICAg
ICAgIGRzdCBhcyBPcGVyYW5kLk1lbUxvYyBtZW1sb2MsIA0KCQkJCQkgICAgICAgc2l6ZX0pLA0K
CQkJbGl2ZUluZm8pDQoJCSAgICAgPT4gU2l6ZS5lcShzaXplMSxzaXplKSBhbmRhbHNvDQogICAg
ICAgICAgICAgICAgICAgICAgICBNZW1Mb2MuZXEobWVtbG9jMSxtZW1sb2MpIGFuZGFsc28NCgkJ
CShjYXNlIChzcmMsZHN0MikNCgkJCSAgIG9mIChPcGVyYW5kLk1lbUxvYyBtZW1sb2Nfc3JjLA0K
CQkJICAgICAgIE9wZXJhbmQuTWVtTG9jIG1lbWxvY19kc3QyKQ0KCQkJICAgID0+IExpc3QuZm9y
YWxsDQoJCQkgICAgICAgKG1lbWxvY19zcmM6OihNZW1Mb2MudXRpbGl6ZWQgbWVtbG9jX3NyYyks
DQoJCQkJZm4gbWVtbG9jJyANCgkJCQkgPT4gbm90IChNZW1Mb2MubWF5QWxpYXMobWVtbG9jX2Rz
dDIsbWVtbG9jJykpKQ0KCQkJICAgIHwgKE9wZXJhbmQuSW1tZWRpYXRlIF8sIF8pID0+IHRydWUN
CgkJCSAgICB8IF8gPT4gZmFsc2UpDQoJCSAgICAgfCAoQXNzZW1ibHkuSW5zdHJ1Y3Rpb24gKElu
c3RydWN0aW9uLnBNRA0KCQkJCQkgICAgICB7b3BlciwgDQoJCQkJCSAgICAgICBzcmMsIA0KCQkJ
CQkgICAgICAgZHN0IGFzIE9wZXJhbmQuTWVtTG9jIG1lbWxvYywgDQoJCQkJCSAgICAgICBzaXpl
fSksDQoJCQlsaXZlSW5mbykNCgkJICAgICA9PiBTaXplLmVxKHNpemUxLHNpemUpIGFuZGFsc28N
CiAgICAgICAgICAgICAgICAgICAgICAgIE1lbUxvYy5lcShtZW1sb2MxLG1lbWxvYykgYW5kYWxz
bw0KCQkJKGNhc2UgKHNyYyxkc3QyKQ0KCQkJICAgb2YgKE9wZXJhbmQuTWVtTG9jIG1lbWxvY19z
cmMsDQoJCQkgICAgICAgT3BlcmFuZC5NZW1Mb2MgbWVtbG9jX2RzdDIpDQoJCQkgICAgPT4gTGlz
dC5mb3JhbGwNCgkJCSAgICAgICAobWVtbG9jX3NyYzo6KE1lbUxvYy51dGlsaXplZCBtZW1sb2Nf
c3JjKSwNCgkJCQlmbiBtZW1sb2MnIA0KCQkJCSA9PiBub3QgKE1lbUxvYy5tYXlBbGlhcyhtZW1s
b2NfZHN0MixtZW1sb2MnKSkpDQoJCQkgICAgfCAoT3BlcmFuZC5JbW1lZGlhdGUgXywgXykgPT4g
dHJ1ZQ0KCQkJICAgIHwgXyA9PiBmYWxzZSkNCgkJICAgICB8IChBc3NlbWJseS5JbnN0cnVjdGlv
biAoSW5zdHJ1Y3Rpb24uVW5BTA0KCQkJCQkgICAgICB7b3BlciwgDQoJCQkJCSAgICAgICBkc3Qg
YXMgT3BlcmFuZC5NZW1Mb2MgbWVtbG9jLCANCgkJCQkJICAgICAgIHNpemV9KSwNCgkJCWxpdmVJ
bmZvKQ0KCQkgICAgID0+IFNpemUuZXEoc2l6ZTEsc2l6ZSkgYW5kYWxzbw0KICAgICAgICAgICAg
ICAgICAgICAgICAgTWVtTG9jLmVxKG1lbWxvYzEsbWVtbG9jKSANCgkJICAgICB8IChBc3NlbWJs
eS5JbnN0cnVjdGlvbiAoSW5zdHJ1Y3Rpb24uU1JBTA0KCQkJCQkgICAgICB7b3BlciwgDQoJCQkJ
CSAgICAgICBjb3VudCwNCgkJCQkJICAgICAgIGRzdCBhcyBPcGVyYW5kLk1lbUxvYyBtZW1sb2Ms
IA0KCQkJCQkgICAgICAgc2l6ZX0pLA0KCQkJbGl2ZUluZm8pDQoJCSAgICAgPT4gU2l6ZS5lcShz
aXplMSxzaXplKSBhbmRhbHNvDQogICAgICAgICAgICAgICAgICAgICAgICBNZW1Mb2MuZXEobWVt
bG9jMSxtZW1sb2MpIGFuZGFsc28NCgkJCShjYXNlIChjb3VudCxkc3QyKQ0KCQkJICAgb2YgKE9w
ZXJhbmQuTWVtTG9jIG1lbWxvY19jb3VudCwNCgkJCSAgICAgICBPcGVyYW5kLk1lbUxvYyBtZW1s
b2NfZHN0MikNCgkJCSAgICA9PiBMaXN0LmZvcmFsbA0KCQkJICAgICAgIChtZW1sb2NfY291bnQ6
OihNZW1Mb2MudXRpbGl6ZWQgbWVtbG9jX2NvdW50KSwNCgkJCQlmbiBtZW1sb2MnIA0KCQkJCSA9
PiBub3QgKE1lbUxvYy5tYXlBbGlhcyhtZW1sb2NfZHN0MixtZW1sb2MnKSkpDQoJCQkgICAgfCAo
T3BlcmFuZC5JbW1lZGlhdGUgXywgXykgPT4gdHJ1ZQ0KCQkJICAgIHwgXyA9PiBmYWxzZSkNCgkJ
ICAgICB8IF8gPT4gRXJyb3IuYnVnICJQZWVwaG9sZTogZWxpbUFMQ29weSIpDQoJCSAgdGhlbiBs
ZXQNCgkJCSB2YWwgc3RhdGVtZW50cw0KCQkJICAgPSBMaXN0Lm1hcA0KCQkJICAgICAoc3RhdGVt
ZW50cycsDQoJCQkgICAgICBmbiAoYXNtLGluZm8pDQoJCQkgICAgICAgPT4gQXNzZW1ibHkucmVw
bGFjZQ0KCQkJICAgICAgICAgIChmbiB7dXNlLCBkZWZ9IA0KCQkJCSAgICA9PiBmbiBvcGVyYW5k
IA0KCQkJCSAgICAgICAgPT4gaWYgT3BlcmFuZC5lcShvcGVyYW5kLGRzdDEpDQoJCQkJCSAgICAg
dGhlbiBkc3QyDQoJCQkJCSAgICAgZWxzZSBvcGVyYW5kKQ0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFzbSkNCg0KCQkJIHZhbCB7c3RhdGVtZW50cywgLi4ufQ0KCQkJICAgPSBM
aXZlbmVzc0Jsb2NrLnRvTGl2ZW5lc3NTdGF0ZW1lbnRzDQoJCQkgICAgIHtzdGF0ZW1lbnRzIA0K
CQkJICAgICAgPSAoQXNzZW1ibHkuaW5zdHJ1Y3Rpb25fbW92DQoJCQkJIHtzcmMgPSBzcmMxLA0K
CQkJCSAgZHN0ID0gZHN0MiwNCgkJCQkgIHNpemUgPSBzaXplMX0pOjpzdGF0ZW1lbnRzLA0KCQkJ
ICAgICAgbGl2ZSA9IGxpdmVPdXQyfQ0KDQoJCQkgdmFsIHN0YXRlbWVudHMNCgkJCSAgID0gTGlz
dC5mb2xkKHN0YXJ0LA0KCQkJCSAgICAgICBMaXN0LmNvbmNhdCBbc3RhdGVtZW50cywNCgkJCQkJ
CSAgICBmaW5pc2hdLA0KCQkJCSAgICAgICBvcCA6OikNCgkJICAgICAgIGluDQoJCQkgU09NRSAo
TGl2ZW5lc3NCbG9jay5UDQoJCQkgICAgICAge2xhYmVsID0gbGFiZWwsDQoJCQkJcHJvZmlsZUlu
Zm8gPSBwcm9maWxlSW5mbywNCgkJCQlzdGF0ZW1lbnRzID0gc3RhdGVtZW50cywNCgkJCQl0cmFu
c2ZlciA9IHRyYW5zZmVyfSkJCSANCgkJICAgICAgIGVuZA0KCQkgIGVsc2UgTk9ORQ0KICAgICAg
ICAgICAgIHwgXyA9PiBFcnJvci5idWcgIlBlZXBob2xlOiBlbGltQUxDb3B5Ig0KDQoJdmFsIChj
YWxsYmFjayxlbGltQUxDb3B5X21zZykNCgkgID0gbWFrZV9jYWxsYmFja19tc2cgImVsaW1BTENv
cHkiDQogICAgICBpbg0KCXZhbCBlbGltQUxDb3B5IDogb3B0aW1pemF0aW9uDQoJICA9IHt0ZW1w
bGF0ZSA9IHRlbXBsYXRlLA0KCSAgICAgcmV3cml0ZXIgPSByZXdyaXRlciwNCgkgICAgIGNhbGxi
YWNrID0gY2FsbGJhY2t9DQoJdmFsIGVsaW1BTENvcHlfbXNnID0gZWxpbUFMQ29weV9tc2cNCiAg
ICAgIGVuZA0KDQogICAgICBsb2NhbA0KCXZhbCBpc0luc3RydWN0aW9uTU9WX2VxU3JjRHN0IDog
c3RhdGVtZW50X3R5cGUgLT4gYm9vbA0KCT0gZm4gKEFzc2VtYmx5Lkluc3RydWN0aW9uIChJbnN0
cnVjdGlvbi5NT1YgDQoJCQkJICAgIHtkc3QgPSBPcGVyYW5kLk1lbUxvYyBtZW1sb2MxLA0KCQkJ
CSAgICAgc3JjID0gT3BlcmFuZC5NZW1Mb2MgbWVtbG9jMiwuLi59KSwNCgkgICAgICB7Li4ufSkg
DQoJICAgPT4gTWVtTG9jLmVxKG1lbWxvYzEsbWVtbG9jMikgDQoJICAgfCBfID0+IGZhbHNlDQoN
Cgl2YWwgdGVtcGxhdGUgOiB0ZW1wbGF0ZSANCgkgID0ge3N0YXJ0ID0gRW1wdHlPck5vbkVtcHR5
LA0KCSAgICAgc3RhdGVtZW50cyA9IFtPbmUgaXNJbnN0cnVjdGlvbk1PVl9lcVNyY0RzdF0sDQoJ
ICAgICBmaW5pc2ggPSBFbXB0eU9yTm9uRW1wdHksDQoJICAgICB0cmFuc2ZlciA9IGZuIF8gPT4g
dHJ1ZX0NCg0KCXZhbCByZXdyaXRlciA6IHJld3JpdGVyDQoJICA9IGZuIHtsYWJlbCwNCgkJcHJv
ZmlsZUluZm8sDQoJCXN0YXJ0LCANCgkJc3RhdGVtZW50cyBhcw0KCQlbWyhBc3NlbWJseS5JbnN0
cnVjdGlvbiAoSW5zdHJ1Y3Rpb24uTU9WIA0KCQkJCQkge3NyYyA9IHNyYzEsIA0KCQkJCQkgIGRz
dCA9IGRzdDEsIA0KCQkJCQkgIHNpemUgPSBzaXplMX0pLA0KCQkgICB7Li4ufSldXSwNCgkJZmlu
aXNoLCANCgkJdHJhbnNmZXJ9DQoJICAgICA9PiBsZXQNCgkJICB2YWwgc3RhdGVtZW50cw0KCQkg
ICAgPSBMaXN0LmZvbGQoc3RhcnQsDQoJCQkJZmluaXNoLA0KCQkJCW9wIDo6KQ0KCQlpbiANCgkJ
ICBTT01FIChMaXZlbmVzc0Jsb2NrLlQNCgkJCXtsYWJlbCA9IGxhYmVsLA0KCQkJIHByb2ZpbGVJ
bmZvID0gcHJvZmlsZUluZm8sDQoJCQkgc3RhdGVtZW50cyA9IHN0YXRlbWVudHMsDQoJCQkgdHJh
bnNmZXIgPSB0cmFuc2Zlcn0pDQoJCWVuZA0KCSAgICAgfCBfID0+IEVycm9yLmJ1ZyAiUGVlcGhv
bGU6IGVsaW1TZWxmTW92ZSINCg0KCXZhbCAoY2FsbGJhY2ssZWxpbVNlbGZNb3ZlX21zZykNCgkg
ID0gbWFrZV9jYWxsYmFja19tc2cgImVsaW1TZWxmTW92ZSINCiAgICAgIGluDQoJdmFsIGVsaW1T
ZWxmTW92ZSA6IG9wdGltaXphdGlvbg0KCSAgPSB7dGVtcGxhdGUgPSB0ZW1wbGF0ZSwNCgkgICAg
IHJld3JpdGVyID0gcmV3cml0ZXIsDQoJICAgICBjYWxsYmFjayA9IGNhbGxiYWNrfQ0KCXZhbCBl
bGltU2VsZk1vdmVfbXNnID0gZWxpbVNlbGZNb3ZlX21zZw0KICAgICAgZW5kDQoNCiAgICAgIGxv
Y2FsDQoJdmFsIGlzSW5zdHJ1Y3Rpb25NT1ZfZHN0TWVtbG9jIDogc3RhdGVtZW50X3R5cGUgLT4g
Ym9vbA0KCSAgPSBmbiAoQXNzZW1ibHkuSW5zdHJ1Y3Rpb24gKEluc3RydWN0aW9uLk1PViANCgkJ
CQkgICAgICB7ZHN0ID0gT3BlcmFuZC5NZW1Mb2MgbWVtbG9jLC4uLn0pLA0KCQl7Li4ufSkNCgkg
ICAgID0+IHRydWUNCgkgICAgIHwgXyA9PiBmYWxzZQ0KDQoJdmFsIGlzSW5zdHJ1Y3Rpb25CaW5B
TE1EX2RzdE1lbWxvY19vcGVyQ29tbXV0ZSA6IHN0YXRlbWVudF90eXBlIC0+IGJvb2wNCgkgID0g
Zm4gKEFzc2VtYmx5Lkluc3RydWN0aW9uIChJbnN0cnVjdGlvbi5CaW5BTA0KCQkJCSAgICAgIHtv
cGVyLA0KCQkJCSAgICAgICBkc3QgPSBPcGVyYW5kLk1lbUxvYyBtZW1sb2MsLi4ufSksDQoJCXsu
Li59KQ0KCSAgICAgPT4gKG9wZXIgPSBJbnN0cnVjdGlvbi5BREQpDQoJICAgICAgICBvcmVsc2UN
CgkJKG9wZXIgPSBJbnN0cnVjdGlvbi5BREMpDQoJCW9yZWxzZQ0KCQkob3BlciA9IEluc3RydWN0
aW9uLkFORCkNCgkJb3JlbHNlDQoJCShvcGVyID0gSW5zdHJ1Y3Rpb24uT1IpDQoJCW9yZWxzZQ0K
CQkob3BlciA9IEluc3RydWN0aW9uLlhPUikNCgkgICAgIHwgKEFzc2VtYmx5Lkluc3RydWN0aW9u
IChJbnN0cnVjdGlvbi5wTUQNCgkJCQkgICAgICB7b3BlciwNCgkJCQkgICAgICAgZHN0ID0gT3Bl
cmFuZC5NZW1Mb2MgbWVtbG9jLC4uLn0pLA0KCQl7Li4ufSkNCgkgICAgID0+IChvcGVyID0gSW5z
dHJ1Y3Rpb24uSU1VTCkNCgkgICAgICAgIG9yZWxzZQ0KCQkob3BlciA9IEluc3RydWN0aW9uLk1V
TCkNCgkgICB8IF8gPT4gZmFsc2UNCg0KCXZhbCB0ZW1wbGF0ZSA6IHRlbXBsYXRlIA0KCSAgPSB7
c3RhcnQgPSBFbXB0eU9yTm9uRW1wdHksDQoJICAgICBzdGF0ZW1lbnRzID0gW09uZSBpc0luc3Ry
dWN0aW9uTU9WX2RzdE1lbWxvYywNCgkJCSAgIEFsbCBpc0NvbW1lbnQsDQoJCQkgICBPbmUgaXNJ
bnN0cnVjdGlvbkJpbkFMTURfZHN0TWVtbG9jX29wZXJDb21tdXRlXSwNCgkgICAgIGZpbmlzaCA9
IEVtcHR5T3JOb25FbXB0eSwNCgkgICAgIHRyYW5zZmVyID0gZm4gXyA9PiB0cnVlfQ0KDQoJdmFs
IHJld3JpdGVyIDogcmV3cml0ZXINCgkgID0gZm4ge2xhYmVsLA0KCQlwcm9maWxlSW5mbywNCgkJ
c3RhcnQsIA0KCQlzdGF0ZW1lbnRzIGFzDQoJCVtbKEFzc2VtYmx5Lkluc3RydWN0aW9uIChJbnN0
cnVjdGlvbi5NT1YgDQoJCQkJCSB7c3JjID0gc3JjMSwNCgkJCQkJICBkc3QgDQoJCQkJCSAgPSBk
c3QxIGFzIE9wZXJhbmQuTWVtTG9jIG1lbWxvY19kc3QxLA0KCQkJCQkgIHNpemUgPSBzaXplMX0p
LA0KCQkgICB7ZGVhZCA9IGRlYWQxLC4uLn0pXSwNCgkJIGNvbW1lbnRzLA0KCQkgWyhBc3NlbWJs
eS5JbnN0cnVjdGlvbiAoSW5zdHJ1Y3Rpb24uQmluQUwgDQoJCQkJCSB7b3BlciA9IG9wZXIyLA0K
CQkJCQkgIHNyYyA9IHNyYzIsDQoJCQkJCSAgZHN0IA0KCQkJCQkgID0gZHN0MiBhcyBPcGVyYW5k
Lk1lbUxvYyBtZW1sb2NfZHN0MiwNCgkJCQkJICBzaXplID0gc2l6ZTJ9KSwNCgkJICAge2RlYWQg
PSBkZWFkMiwNCgkJICAgIGxpdmVPdXQgPSBsaXZlT3V0MiwuLi59KV1dLA0KCQlmaW5pc2gsIA0K
CQl0cmFuc2Zlcn0NCgkgICAgID0+IGlmIFNpemUuZXEoc2l6ZTEsc2l6ZTIpIGFuZGFsc28NCgkg
ICAgICAgICAgIE9wZXJhbmQuZXEoZHN0MSxkc3QyKSBhbmRhbHNvDQoJCSAgIG5vdCAoT3BlcmFu
ZC5lcShzcmMxLHNyYzIpKSBhbmRhbHNvDQoJCSAgIChjYXNlIChzcmMxLHNyYzIpDQoJCSAgICAg
IG9mIChPcGVyYW5kLk1lbUxvYyBtZW1sb2Nfc3JjMSwNCgkJCSAgT3BlcmFuZC5NZW1Mb2MgbWVt
bG9jX3NyYzIpDQoJCSAgICAgICA9PiBMaXN0LmNvbnRhaW5zKGRlYWQyLA0KCQkJCQltZW1sb2Nf
c3JjMiwNCgkJCQkJTWVtTG9jLmVxKQ0KCQkJICBhbmRhbHNvDQoJCQkgIG5vdCAoTGlzdC5jb250
YWlucyhkZWFkMSwNCgkJCQkJICAgICBtZW1sb2Nfc3JjMSwNCgkJCQkJICAgICBNZW1Mb2MuZXEp
KQ0KCQkgICAgICAgfCAoXywgT3BlcmFuZC5NZW1Mb2MgbWVtbG9jX3NyYzIpDQoJCSAgICAgICA9
PiBMaXN0LmNvbnRhaW5zKGRlYWQyLA0KCQkJCQltZW1sb2Nfc3JjMiwNCgkJCQkJTWVtTG9jLmVx
KQ0KCQkgICAgICAgfCBfID0+IGZhbHNlKSBhbmRhbHNvDQoJCSAgIChjYXNlIHNyYzENCgkJICAg
ICAgb2YgT3BlcmFuZC5NZW1Mb2MgbWVtbG9jX3NyYzENCgkJICAgICAgID0+IG5vdCAoTGlzdC5l
eGlzdHMNCgkJCSAgICAgICAobWVtbG9jX3NyYzE6OihNZW1Mb2MudXRpbGl6ZWQgbWVtbG9jX3Ny
YzEpLA0KCQkJCWZuIG1lbWxvYycNCgkJCQkgPT4gTWVtTG9jLm1heUFsaWFzKG1lbWxvYycsbWVt
bG9jX2RzdDEpKSkNCgkJICAgICAgIHwgXyA9PiB0cnVlKSBhbmRhbHNvDQoJCSAgIChjYXNlIHNy
YzINCgkJICAgICAgb2YgT3BlcmFuZC5NZW1Mb2MgbWVtbG9jX3NyYzINCgkJICAgICAgID0+IG5v
dCAoTGlzdC5leGlzdHMNCgkJCSAgICAgICAobWVtbG9jX3NyYzI6OihNZW1Mb2MudXRpbGl6ZWQg
bWVtbG9jX3NyYzIpLA0KCQkJCWZuIG1lbWxvYycNCgkJCQkgPT4gTWVtTG9jLm1heUFsaWFzKG1l
bWxvYycsbWVtbG9jX2RzdDEpKSkNCgkJICAgICAgIHwgXyA9PiB0cnVlKQ0KCQkgIHRoZW4gbGV0
DQoJCQkgdmFsIHN0YXRlbWVudHMNCgkJCSAgID0gKEFzc2VtYmx5Lmluc3RydWN0aW9uX21vdg0K
CQkJICAgICAge3NyYyA9IHNyYzIsDQoJCQkgICAgICAgZHN0ID0gZHN0MSwNCgkJCSAgICAgICBz
aXplID0gc2l6ZTF9KTo6DQoJCQkgICAgIChMaXN0LmNvbmNhdA0KCQkJICAgICAgW0xpc3QubWFw
KGNvbW1lbnRzLCAjMSksDQoJCQkgICAgICAgW0Fzc2VtYmx5Lmluc3RydWN0aW9uX2JpbmFsDQoJ
CQkJe29wZXIgPSBvcGVyMiwNCgkJCQkgc3JjID0gc3JjMSwNCgkJCQkgZHN0ID0gZHN0MiwNCgkJ
CQkgc2l6ZSA9IHNpemUyfV1dKQ0KDQoJCQkgdmFsIHtzdGF0ZW1lbnRzLCAuLi59DQoJCQkgICA9
IExpdmVuZXNzQmxvY2sudG9MaXZlbmVzc1N0YXRlbWVudHMNCgkJCSAgICAge3N0YXRlbWVudHMg
PSBzdGF0ZW1lbnRzLA0KCQkJICAgICAgbGl2ZSA9IGxpdmVPdXQyfQ0KDQoJCQkgdmFsIHN0YXRl
bWVudHMNCgkJCSAgID0gTGlzdC5mb2xkKHN0YXJ0LA0KCQkJCSAgICAgICBMaXN0LmNvbmNhdCBb
c3RhdGVtZW50cywgDQoJCQkJCQkgICAgZmluaXNoXSwNCgkJCQkgICAgICAgb3AgOjopDQoJCSAg
ICAgICBpbg0KCQkJIFNPTUUgKExpdmVuZXNzQmxvY2suVA0KCQkJICAgICAgIHtsYWJlbCA9IGxh
YmVsLAkNCgkJCQlwcm9maWxlSW5mbyA9IHByb2ZpbGVJbmZvLA0KCQkJCXN0YXRlbWVudHMgPSBz
dGF0ZW1lbnRzLA0KCQkJCXRyYW5zZmVyID0gdHJhbnNmZXJ9KQkJIA0KCQkgICAgICAgZW5kDQoJ
CSAgZWxzZSBOT05FDQoJICAgICB8IHtsYWJlbCwNCgkJcHJvZmlsZUluZm8sDQoJCXN0YXJ0LCAN
CgkJc3RhdGVtZW50cyBhcw0KCQlbWyhBc3NlbWJseS5JbnN0cnVjdGlvbiAoSW5zdHJ1Y3Rpb24u
TU9WIA0KCQkJCQkge3NyYyA9IHNyYzEsDQoJCQkJCSAgZHN0IA0KCQkJCQkgID0gZHN0MSBhcyBP
cGVyYW5kLk1lbUxvYyBtZW1sb2NfZHN0MSwNCgkJCQkJICBzaXplID0gc2l6ZTF9KSwNCgkJICAg
e2RlYWQgPSBkZWFkMSwuLi59KV0sDQoJCSBjb21tZW50cywNCgkJIFsoQXNzZW1ibHkuSW5zdHJ1
Y3Rpb24gKEluc3RydWN0aW9uLnBNRCANCgkJCQkJIHtvcGVyID0gb3BlcjIsDQoJCQkJCSAgc3Jj
ID0gc3JjMiwNCgkJCQkJICBkc3QgDQoJCQkJCSAgPSBkc3QyIGFzIE9wZXJhbmQuTWVtTG9jIG1l
bWxvY19kc3QyLA0KCQkJCQkgIHNpemUgPSBzaXplMn0pLA0KCQkgICB7ZGVhZCA9IGRlYWQyLA0K
CQkgICAgbGl2ZU91dCA9IGxpdmVPdXQyLC4uLn0pXV0sDQoJCWZpbmlzaCwgDQoJCXRyYW5zZmVy
fQ0KCSAgICAgPT4gaWYgU2l6ZS5lcShzaXplMSxzaXplMikgYW5kYWxzbw0KCSAgICAgICAgICAg
T3BlcmFuZC5lcShkc3QxLGRzdDIpIGFuZGFsc28NCgkJICAgbm90IChPcGVyYW5kLmVxKHNyYzEs
c3JjMikpIGFuZGFsc28NCgkJICAgKGNhc2UgKHNyYzEsc3JjMikNCgkJICAgICAgb2YgKE9wZXJh
bmQuTWVtTG9jIG1lbWxvY19zcmMxLA0KCQkJICBPcGVyYW5kLk1lbUxvYyBtZW1sb2Nfc3JjMikN
CgkJICAgICAgID0+IExpc3QuY29udGFpbnMoZGVhZDIsDQoJCQkJCW1lbWxvY19zcmMyLA0KCQkJ
CQlNZW1Mb2MuZXEpDQoJCQkgIGFuZGFsc28NCgkJCSAgbm90IChMaXN0LmNvbnRhaW5zKGRlYWQx
LA0KCQkJCQkgICAgIG1lbWxvY19zcmMxLA0KCQkJCQkgICAgIE1lbUxvYy5lcSkpDQoJCSAgICAg
ICB8IChfLCBPcGVyYW5kLk1lbUxvYyBtZW1sb2Nfc3JjMikNCgkJICAgICAgID0+IExpc3QuY29u
dGFpbnMoZGVhZDIsDQoJCQkJCW1lbWxvY19zcmMyLA0KCQkJCQlNZW1Mb2MuZXEpDQoJCSAgICAg
ICB8IF8gPT4gZmFsc2UpIGFuZGFsc28NCgkJICAgKGNhc2Ugc3JjMQ0KCQkgICAgICBvZiBPcGVy
YW5kLk1lbUxvYyBtZW1sb2Nfc3JjMQ0KCQkgICAgICAgPT4gbm90IChMaXN0LmV4aXN0cw0KCQkJ
ICAgICAgIChtZW1sb2Nfc3JjMTo6KE1lbUxvYy51dGlsaXplZCBtZW1sb2Nfc3JjMSksDQoJCQkJ
Zm4gbWVtbG9jJw0KCQkJCSA9PiBNZW1Mb2MubWF5QWxpYXMobWVtbG9jJyxtZW1sb2NfZHN0MSkp
KQ0KCQkgICAgICAgfCBfID0+IHRydWUpIGFuZGFsc28NCgkJICAgKGNhc2Ugc3JjMg0KCQkgICAg
ICBvZiBPcGVyYW5kLk1lbUxvYyBtZW1sb2Nfc3JjMg0KCQkgICAgICAgPT4gbm90IChMaXN0LmV4
aXN0cw0KCQkJICAgICAgIChtZW1sb2Nfc3JjMjo6KE1lbUxvYy51dGlsaXplZCBtZW1sb2Nfc3Jj
MiksDQoJCQkJZm4gbWVtbG9jJw0KCQkJCSA9PiBNZW1Mb2MubWF5QWxpYXMobWVtbG9jJyxtZW1s
b2NfZHN0MSkpKQ0KCQkgICAgICAgfCBfID0+IHRydWUpDQoJCSAgdGhlbiBsZXQNCgkJCSB2YWwg
c3RhdGVtZW50cw0KCQkJICAgPSAoQXNzZW1ibHkuaW5zdHJ1Y3Rpb25fbW92DQoJCQkgICAgICB7
c3JjID0gc3JjMiwNCgkJCSAgICAgICBkc3QgPSBkc3QxLA0KCQkJICAgICAgIHNpemUgPSBzaXpl
MX0pOjoNCgkJCSAgICAgKExpc3QuY29uY2F0DQoJCQkgICAgICBbTGlzdC5tYXAoY29tbWVudHMs
ICMxKSwNCgkJCSAgICAgICBbQXNzZW1ibHkuaW5zdHJ1Y3Rpb25fcG1kDQoJCQkJe29wZXIgPSBv
cGVyMiwNCgkJCQkgc3JjID0gc3JjMSwNCgkJCQkgZHN0ID0gZHN0MiwNCgkJCQkgc2l6ZSA9IHNp
emUyfV1dKQ0KDQoJCQkgdmFsIHtzdGF0ZW1lbnRzLCAuLi59DQoJCQkgICA9IExpdmVuZXNzQmxv
Y2sudG9MaXZlbmVzc1N0YXRlbWVudHMNCgkJCSAgICAge3N0YXRlbWVudHMgPSBzdGF0ZW1lbnRz
LA0KCQkJICAgICAgbGl2ZSA9IGxpdmVPdXQyfQ0KDQoJCQkgdmFsIHN0YXRlbWVudHMNCgkJCSAg
ID0gTGlzdC5mb2xkKHN0YXJ0LA0KCQkJCSAgICAgICBMaXN0LmNvbmNhdCBbc3RhdGVtZW50cywN
CgkJCQkJCSAgICBmaW5pc2hdLA0KCQkJCSAgICAgICBvcCA6OikNCgkJICAgICAgIGluDQoJCQkg
U09NRSAoTGl2ZW5lc3NCbG9jay5UDQoJCQkgICAgICAge2xhYmVsID0gbGFiZWwsDQoJCQkJcHJv
ZmlsZUluZm8gPSBwcm9maWxlSW5mbywNCgkJCQlzdGF0ZW1lbnRzID0gc3RhdGVtZW50cywNCgkJ
CQl0cmFuc2ZlciA9IHRyYW5zZmVyfSkJCSANCgkJICAgICAgIGVuZA0KCQkgIGVsc2UgTk9ORQ0K
ICAgICAgICAgICAgIHwgXyA9PiBFcnJvci5idWcgIlBlZXBob2xlOiBjb21tdXRlQmluQUxNRCIN
Cg0KCXZhbCAoY2FsbGJhY2ssY29tbXV0ZUJpbkFMTURfbXNnKQ0KCSAgPSBtYWtlX2NhbGxiYWNr
X21zZyAiY29tbXV0ZUJpbkFMTUQiDQogICAgICBpbg0KCXZhbCBjb21tdXRlQmluQUxNRCA6IG9w
dGltaXphdGlvbg0KCSAgPSB7dGVtcGxhdGUgPSB0ZW1wbGF0ZSwNCgkgICAgIHJld3JpdGVyID0g
cmV3cml0ZXIsDQoJICAgICBjYWxsYmFjayA9IGNhbGxiYWNrfQ0KCXZhbCBjb21tdXRlQmluQUxN
RF9tc2cgPSBjb21tdXRlQmluQUxNRF9tc2cNCiAgICAgIGVuZA0KDQogICAgICBsb2NhbA0KCXZh
bCBpc0luc3RydWN0aW9uRk1PVl9kc3RUZW1wIDogc3RhdGVtZW50X3R5cGUgLT4gYm9vbA0KCSAg
PSBmbiAoQXNzZW1ibHkuSW5zdHJ1Y3Rpb24gKEluc3RydWN0aW9uLnBGTU9WIA0KCQkJCSAgICAg
IHtkc3QgPSBPcGVyYW5kLk1lbUxvYyBtZW1sb2MsLi4ufSksIA0KCQl7Li4ufSkNCgkgICAgID0+
IE1lbUxvYy5pc1RlbXAgbWVtbG9jDQoJICAgICB8IF8gPT4gZmFsc2UNCg0KCXZhbCBpc0luc3Ry
dWN0aW9uRmx0QV9kc3RUZW1wIDogc3RhdGVtZW50X3R5cGUgLT4gYm9vbA0KCSAgPSBmbiAoQXNz
ZW1ibHkuSW5zdHJ1Y3Rpb24gKEluc3RydWN0aW9uLnBGQmluQQ0KCQkJCSAgICAgIHtkc3QgPSBP
cGVyYW5kLk1lbUxvYyBtZW1sb2MsLi4ufSksDQoJCXsuLi59KQ0KCSAgICAgPT4gTWVtTG9jLmlz
VGVtcCBtZW1sb2MNCgkgICAgIHwgKEFzc2VtYmx5Lkluc3RydWN0aW9uIChJbnN0cnVjdGlvbi5w
RlVuQQ0KCQkJCSAgICAgIHtkc3QgPSBPcGVyYW5kLk1lbUxvYyBtZW1sb2MsLi4ufSksDQoJCQ0K
CQl7Li4ufSkNCgkgICAgID0+IE1lbUxvYy5pc1RlbXAgbWVtbG9jDQoJICAgICB8IChBc3NlbWJs
eS5JbnN0cnVjdGlvbiAoSW5zdHJ1Y3Rpb24ucEZQVEFODQoJCQkJICAgICAge2RzdCA9IE9wZXJh
bmQuTWVtTG9jIG1lbWxvYywuLi59KSwNCgkJDQoJCXsuLi59KQ0KCSAgICAgPT4gTWVtTG9jLmlz
VGVtcCBtZW1sb2MNCgkgICAgIHwgKEFzc2VtYmx5Lkluc3RydWN0aW9uIChJbnN0cnVjdGlvbi5w
RkJpbkFTDQoJCQkJICAgICAge2RzdCA9IE9wZXJhbmQuTWVtTG9jIG1lbWxvYywuLi59KSwNCgkJ
ey4uLn0pDQoJICAgICA9PiBNZW1Mb2MuaXNUZW1wIG1lbWxvYw0KCSAgICAgfCAoQXNzZW1ibHku
SW5zdHJ1Y3Rpb24gKEluc3RydWN0aW9uLnBGQmluQVNQDQoJCQkJICAgICAge2RzdCA9IE9wZXJh
bmQuTWVtTG9jIG1lbWxvYywuLi59KSwNCgkJey4uLn0pDQoJICAgICA9PiBNZW1Mb2MuaXNUZW1w
IG1lbWxvYw0KCSAgICAgfCBfID0+IGZhbHNlDQoNCgl2YWwgaXNJbnN0cnVjdGlvbkZNT1Zfc3Jj
VGVtcF9zcmNEZWFkIDogc3RhdGVtZW50X3R5cGUgLT4gYm9vbA0KCSAgPSBmbiAoQXNzZW1ibHku
SW5zdHJ1Y3Rpb24gKEluc3RydWN0aW9uLnBGTU9WIA0KCQkJCSAgICAgIHtzcmMgPSBPcGVyYW5k
Lk1lbUxvYyBtZW1sb2MsLi4ufSksDQoJCXtkZWFkLC4uLn0pDQoJICAgICA9PiBNZW1Mb2MuaXNU
ZW1wIG1lbWxvYw0KCSAgICAgICAgYW5kYWxzbw0KCQlMaXN0LmNvbnRhaW5zKGRlYWQsIG1lbWxv
YywgTWVtTG9jLmVxKQ0KCSAgICAgfCBfID0+IGZhbHNlDQoNCgl2YWwgdGVtcGxhdGUgOiB0ZW1w
bGF0ZSANCgkgID0ge3N0YXJ0ID0gRW1wdHlPck5vbkVtcHR5LA0KCSAgICAgc3RhdGVtZW50cyA9
IFtPbmUgaXNJbnN0cnVjdGlvbkZNT1ZfZHN0VGVtcCwNCgkJCSAgIEFsbCAoZm4gYXNtIA0KCQkJ
CSA9PiAoaXNDb21tZW50IGFzbSkgDQoJCQkJICAgIG9yZWxzZQ0KCQkJCSAgICAoaXNJbnN0cnVj
dGlvbkZsdEFfZHN0VGVtcCBhc20pKSwNCgkJCSAgIE9uZSBpc0luc3RydWN0aW9uRk1PVl9zcmNU
ZW1wX3NyY0RlYWRdLA0KCSAgICAgZmluaXNoID0gRW1wdHlPck5vbkVtcHR5LA0KCSAgICAgdHJh
bnNmZXIgPSBmbiBfID0+IHRydWV9DQoNCgl2YWwgcmV3cml0ZXIgOiByZXdyaXRlcg0KCSAgPSBm
biB7bGFiZWwsDQoJCXByb2ZpbGVJbmZvLA0KCQlzdGFydCwgDQoJCXN0YXRlbWVudHMgYXMNCgkJ
W1soQXNzZW1ibHkuSW5zdHJ1Y3Rpb24gKEluc3RydWN0aW9uLnBGTU9WIA0KCQkJCQkge3NyYyA9
IHNyYzEsDQoJCQkJCSAgZHN0ID0gZHN0MSBhcyBPcGVyYW5kLk1lbUxvYyBtZW1sb2MxLA0KCQkJ
CQkgIHNpemUgPSBzaXplMX0pLA0KCQkgICB7Li4ufSldLA0KCQkgc3RhdGVtZW50cycsDQoJCSBb
KEFzc2VtYmx5Lkluc3RydWN0aW9uIChJbnN0cnVjdGlvbi5wRk1PViANCgkJCQkJIHtzcmMgPSBz
cmMyIGFzIE9wZXJhbmQuTWVtTG9jIG1lbWxvYzIsDQoJCQkJCSAgZHN0ID0gZHN0MiwNCgkJCQkJ
ICBzaXplID0gc2l6ZTJ9KSwNCgkJICAge2xpdmVPdXQgPSBsaXZlT3V0MiwuLi59KV1dLA0KCQlm
aW5pc2gsIA0KCQl0cmFuc2Zlcn0NCgkgICAgID0+IGlmIFNpemUuZXEoc2l6ZTEsc2l6ZTIpIGFu
ZGFsc28NCgkgICAgICAgICAgIE1lbUxvYy5lcShtZW1sb2MxLG1lbWxvYzIpIGFuZGFsc28NCgkJ
ICAgTGlzdC5mb3JhbGwNCgkJICAgKHN0YXRlbWVudHMnLA0KCQkgICAgZm4gKEFzc2VtYmx5LkNv
bW1lbnQgXywgbGl2ZUluZm8pID0+IHRydWUNCgkJICAgICB8IChBc3NlbWJseS5JbnN0cnVjdGlv
biAoSW5zdHJ1Y3Rpb24ucEZCaW5BDQoJCQkJCSAgICAgIHtvcGVyLCANCgkJCQkJICAgICAgIHNy
YywgDQoJCQkJCSAgICAgICBkc3QgYXMgT3BlcmFuZC5NZW1Mb2MgbWVtbG9jLCANCgkJCQkJICAg
ICAgIHNpemV9KSwNCgkJCWxpdmVJbmZvKQ0KCQkgICAgID0+IFNpemUuZXEoc2l6ZTEsc2l6ZSkg
YW5kYWxzbw0KICAgICAgICAgICAgICAgICAgICAgICAgTWVtTG9jLmVxKG1lbWxvYzEsbWVtbG9j
KSBhbmRhbHNvDQoJCQkoY2FzZSAoc3JjLGRzdDIpDQoJCQkgICBvZiAoT3BlcmFuZC5NZW1Mb2Mg
bWVtbG9jX3NyYywNCgkJCSAgICAgICBPcGVyYW5kLk1lbUxvYyBtZW1sb2NfZHN0MikNCgkJCSAg
ICA9PiBMaXN0LmZvcmFsbA0KCQkJICAgICAgIChtZW1sb2Nfc3JjOjooTWVtTG9jLnV0aWxpemVk
IG1lbWxvY19zcmMpLA0KCQkJCWZuIG1lbWxvYycgDQoJCQkJID0+IG5vdCAoTWVtTG9jLm1heUFs
aWFzKG1lbWxvY19kc3QyLG1lbWxvYycpKSkNCgkJCSAgICB8IChPcGVyYW5kLkltbWVkaWF0ZSBf
LCBfKSA9PiB0cnVlDQoJCQkgICAgfCBfID0+IGZhbHNlKQ0KCQkgICAgIHwgKEFzc2VtYmx5Lklu
c3RydWN0aW9uIChJbnN0cnVjdGlvbi5wRlVuQQ0KCQkJCQkgICAgICB7b3BlciwgDQoJCQkJCSAg
ICAgICBkc3QgYXMgT3BlcmFuZC5NZW1Mb2MgbWVtbG9jLCANCgkJCQkJICAgICAgIHNpemV9KSwN
CgkJCWxpdmVJbmZvKQ0KCQkgICAgID0+IFNpemUuZXEoc2l6ZTEsc2l6ZSkgYW5kYWxzbw0KICAg
ICAgICAgICAgICAgICAgICAgICAgTWVtTG9jLmVxKG1lbWxvYzEsbWVtbG9jKSANCgkJICAgICB8
IChBc3NlbWJseS5JbnN0cnVjdGlvbiAoSW5zdHJ1Y3Rpb24ucEZQVEFODQoJCQkJCSAgICAgIHtk
c3QgYXMgT3BlcmFuZC5NZW1Mb2MgbWVtbG9jLCANCgkJCQkJICAgICAgIHNpemV9KSwNCgkJCWxp
dmVJbmZvKQ0KCQkgICAgID0+IFNpemUuZXEoc2l6ZTEsc2l6ZSkgYW5kYWxzbw0KICAgICAgICAg
ICAgICAgICAgICAgICAgTWVtTG9jLmVxKG1lbWxvYzEsbWVtbG9jKSANCgkJICAgICB8IChBc3Nl
bWJseS5JbnN0cnVjdGlvbiAoSW5zdHJ1Y3Rpb24ucEZCaW5BUw0KCQkJCQkgICAgICB7b3Blciwg
DQoJCQkJCSAgICAgICBzcmMsIA0KCQkJCQkgICAgICAgZHN0IGFzIE9wZXJhbmQuTWVtTG9jIG1l
bWxvYywgDQoJCQkJCSAgICAgICBzaXplfSksDQoJCQlsaXZlSW5mbykNCgkJICAgICA9PiBTaXpl
LmVxKHNpemUxLHNpemUpIGFuZGFsc28NCiAgICAgICAgICAgICAgICAgICAgICAgIE1lbUxvYy5l
cShtZW1sb2MxLG1lbWxvYykgYW5kYWxzbw0KCQkJKGNhc2UgKHNyYyxkc3QyKQ0KCQkJICAgb2Yg
KE9wZXJhbmQuTWVtTG9jIG1lbWxvY19zcmMsDQoJCQkgICAgICAgT3BlcmFuZC5NZW1Mb2MgbWVt
bG9jX2RzdDIpDQoJCQkgICAgPT4gTGlzdC5mb3JhbGwNCgkJCSAgICAgICAobWVtbG9jX3NyYzo6
KE1lbUxvYy51dGlsaXplZCBtZW1sb2Nfc3JjKSwNCgkJCQlmbiBtZW1sb2MnIA0KCQkJCSA9PiBu
b3QgKE1lbUxvYy5tYXlBbGlhcyhtZW1sb2NfZHN0MixtZW1sb2MnKSkpDQoJCQkgICAgfCAoT3Bl
cmFuZC5JbW1lZGlhdGUgXywgXykgPT4gdHJ1ZQ0KCQkJICAgIHwgXyA9PiBmYWxzZSkNCgkJICAg
ICB8IChBc3NlbWJseS5JbnN0cnVjdGlvbiAoSW5zdHJ1Y3Rpb24ucEZCaW5BU1ANCgkJCQkJICAg
ICAge29wZXIsIA0KCQkJCQkgICAgICAgc3JjLCANCgkJCQkJICAgICAgIGRzdCBhcyBPcGVyYW5k
Lk1lbUxvYyBtZW1sb2MsIA0KCQkJCQkgICAgICAgc2l6ZX0pLA0KCQkJbGl2ZUluZm8pDQoJCSAg
ICAgPT4gU2l6ZS5lcShzaXplMSxzaXplKSBhbmRhbHNvDQogICAgICAgICAgICAgICAgICAgICAg
ICBNZW1Mb2MuZXEobWVtbG9jMSxtZW1sb2MpIGFuZGFsc28NCgkJCShjYXNlIChzcmMsZHN0MikN
CgkJCSAgIG9mIChPcGVyYW5kLk1lbUxvYyBtZW1sb2Nfc3JjLA0KCQkJICAgICAgIE9wZXJhbmQu
TWVtTG9jIG1lbWxvY19kc3QyKQ0KCQkJICAgID0+IExpc3QuZm9yYWxsDQoJCQkgICAgICAgKG1l
bWxvY19zcmM6OihNZW1Mb2MudXRpbGl6ZWQgbWVtbG9jX3NyYyksDQoJCQkJZm4gbWVtbG9jJyAN
CgkJCQkgPT4gbm90IChNZW1Mb2MubWF5QWxpYXMobWVtbG9jX2RzdDIsbWVtbG9jJykpKQ0KCQkJ
ICAgIHwgKE9wZXJhbmQuSW1tZWRpYXRlIF8sIF8pID0+IHRydWUNCgkJCSAgICB8IF8gPT4gZmFs
c2UpDQoJCSAgICAgfCBfID0+IEVycm9yLmJ1ZyAiUGVlcGhvbGU6IGVsaW1GbHRBQ29weSIpDQoJ
CSAgdGhlbiBsZXQNCgkJCSB2YWwgc3RhdGVtZW50cw0KCQkJICAgPSBMaXN0Lm1hcA0KCQkJICAg
ICAoc3RhdGVtZW50cycsDQoJCQkgICAgICBmbiAoYXNtLGluZm8pDQoJCQkgICAgICAgPT4gQXNz
ZW1ibHkucmVwbGFjZQ0KCQkJICAgICAgICAgIChmbiB7dXNlLCBkZWZ9IA0KCQkJCSAgICA9PiBm
biBvcGVyYW5kIA0KCQkJCSAgICAgICAgPT4gaWYgT3BlcmFuZC5lcShvcGVyYW5kLGRzdDEpDQoJ
CQkJCSAgICAgdGhlbiBkc3QyDQoJCQkJCSAgICAgZWxzZSBvcGVyYW5kKQ0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFzbSkNCg0KCQkJIHZhbCB7c3RhdGVtZW50cywgLi4ufQ0K
CQkJICAgPSBMaXZlbmVzc0Jsb2NrLnRvTGl2ZW5lc3NTdGF0ZW1lbnRzDQoJCQkgICAgIHtzdGF0
ZW1lbnRzIA0KCQkJICAgICAgPSAoQXNzZW1ibHkuaW5zdHJ1Y3Rpb25fcGZtb3YNCgkJCQkge3Ny
YyA9IHNyYzEsDQoJCQkJICBkc3QgPSBkc3QyLA0KCQkJCSAgc2l6ZSA9IHNpemUxfSk6OnN0YXRl
bWVudHMsDQoJCQkgICAgICBsaXZlID0gbGl2ZU91dDJ9DQoNCgkJCSB2YWwgc3RhdGVtZW50cw0K
CQkJICAgPSBMaXN0LmZvbGQoc3RhcnQsDQoJCQkJICAgICAgIExpc3QuY29uY2F0IFtzdGF0ZW1l
bnRzLCANCgkJCQkJCSAgICBmaW5pc2hdLA0KCQkJCSAgICAgICBvcCA6OikNCgkJICAgICAgIGlu
DQoJCQkgU09NRSAoTGl2ZW5lc3NCbG9jay5UDQoJCQkgICAgICAge2xhYmVsID0gbGFiZWwsDQoJ
CQkJcHJvZmlsZUluZm8gPSBwcm9maWxlSW5mbywNCgkJCQlzdGF0ZW1lbnRzID0gc3RhdGVtZW50
cywNCgkJCQl0cmFuc2ZlciA9IHRyYW5zZmVyfSkJCSANCgkJICAgICAgIGVuZA0KCQkgIGVsc2Ug
Tk9ORQ0KICAgICAgICAgICAgIHwgXyA9PiBFcnJvci5idWcgIlBlZXBob2xlOiBlbGltRmx0QUNv
cHkiDQoNCgl2YWwgKGNhbGxiYWNrLGVsaW1GbHRBQ29weV9tc2cpDQoJICA9IG1ha2VfY2FsbGJh
Y2tfbXNnICJlbGltRmx0QUNvcHkiDQogICAgICBpbg0KCXZhbCBlbGltRmx0QUNvcHkgOiBvcHRp
bWl6YXRpb24NCgkgID0ge3RlbXBsYXRlID0gdGVtcGxhdGUsDQoJICAgICByZXdyaXRlciA9IHJl
d3JpdGVyLA0KCSAgICAgY2FsbGJhY2sgPSBjYWxsYmFja30NCgl2YWwgZWxpbUZsdEFDb3B5X21z
ZyA9IGVsaW1GbHRBQ29weV9tc2cNCiAgICAgIGVuZA0KDQogICAgICBsb2NhbA0KCXZhbCBpc0lu
c3RydWN0aW9uRk1PVl9lcVNyY0RzdCA6IHN0YXRlbWVudF90eXBlIC0+IGJvb2wNCgk9IGZuIChB
c3NlbWJseS5JbnN0cnVjdGlvbiAoSW5zdHJ1Y3Rpb24ucEZNT1YgDQoJCQkJICAgIHtkc3QgPSBP
cGVyYW5kLk1lbUxvYyBtZW1sb2MxLA0KCQkJCSAgICAgc3JjID0gT3BlcmFuZC5NZW1Mb2MgbWVt
bG9jMiwuLi59KSwNCgkgICAgICB7Li4ufSkgDQoJICAgPT4gTWVtTG9jLmVxKG1lbWxvYzEsbWVt
bG9jMikgDQoJICAgfCBfID0+IGZhbHNlDQoNCgl2YWwgdGVtcGxhdGUgOiB0ZW1wbGF0ZSANCgkg
ID0ge3N0YXJ0ID0gRW1wdHlPck5vbkVtcHR5LA0KCSAgICAgc3RhdGVtZW50cyA9IFtPbmUgaXNJ
bnN0cnVjdGlvbkZNT1ZfZXFTcmNEc3RdLA0KCSAgICAgZmluaXNoID0gRW1wdHlPck5vbkVtcHR5
LA0KCSAgICAgdHJhbnNmZXIgPSBmbiBfID0+IHRydWV9DQoNCgl2YWwgcmV3cml0ZXIgOiByZXdy
aXRlcg0KCSAgPSBmbiB7bGFiZWwsDQoJCXByb2ZpbGVJbmZvLA0KCQlzdGFydCwgDQoJCXN0YXRl
bWVudHMgYXMNCgkJW1soQXNzZW1ibHkuSW5zdHJ1Y3Rpb24gKEluc3RydWN0aW9uLnBGTU9WIA0K
CQkJCQkge3NyYyA9IHNyYzEsIA0KCQkJCQkgIGRzdCA9IGRzdDEsIA0KCQkJCQkgIHNpemUgPSBz
aXplMX0pLA0KCQkgICB7Li4ufSldXSwNCgkJZmluaXNoLCANCgkJdHJhbnNmZXJ9DQoJICAgICA9
PiBsZXQNCgkJICB2YWwgc3RhdGVtZW50cyANCgkJICAgID0gTGlzdC5mb2xkDQoJCSAgICAgIChz
dGFydCwgDQoJCSAgICAgICBmaW5pc2gsIA0KCQkgICAgICAgb3AgOjopDQoJCWluIA0KCQkgIFNP
TUUgKExpdmVuZXNzQmxvY2suVA0KCQkJe2xhYmVsID0gbGFiZWwsDQoJCQkgcHJvZmlsZUluZm8g
PSBwcm9maWxlSW5mbywNCgkJCSBzdGF0ZW1lbnRzID0gc3RhdGVtZW50cywNCgkJCSB0cmFuc2Zl
ciA9IHRyYW5zZmVyfSkNCgkJZW5kDQoJICAgICB8IF8gPT4gRXJyb3IuYnVnICJQZWVwaG9sZTog
ZWxpbUZsdFNlbGZNb3ZlIg0KIA0KCXZhbCAoY2FsbGJhY2ssZWxpbUZsdFNlbGZNb3ZlX21zZykN
CgkgID0gbWFrZV9jYWxsYmFja19tc2cgImVsaW1GbHRTZWxmTW92ZSINCiAgICAgIGluDQoJdmFs
IGVsaW1GbHRTZWxmTW92ZSA6IG9wdGltaXphdGlvbg0KCSAgPSB7dGVtcGxhdGUgPSB0ZW1wbGF0
ZSwNCgkgICAgIHJld3JpdGVyID0gcmV3cml0ZXIsDQoJICAgICBjYWxsYmFjayA9IGNhbGxiYWNr
fQ0KCXZhbCBlbGltRmx0U2VsZk1vdmVfbXNnID0gZWxpbUZsdFNlbGZNb3ZlX21zZw0KICAgICAg
ZW5kDQoNCiAgICAgIGxvY2FsDQoJdmFsIGlzSW5zdHJ1Y3Rpb25GTU9WX2RzdE1lbWxvYyA6IHN0
YXRlbWVudF90eXBlIC0+IGJvb2wNCgkgID0gZm4gKEFzc2VtYmx5Lkluc3RydWN0aW9uIChJbnN0
cnVjdGlvbi5wRk1PViANCgkJCQkgICAgICB7ZHN0ID0gT3BlcmFuZC5NZW1Mb2MgbWVtbG9jLC4u
Ln0pLA0KCQl7Li4ufSkNCgkgICAgID0+IHRydWUNCgkgICAgIHwgXyA9PiBmYWxzZQ0KDQoJdmFs
IGlzSW5zdHJ1Y3Rpb25GbHRCaW5BX2RzdE1lbWxvYyA6IHN0YXRlbWVudF90eXBlIC0+IGJvb2wN
CgkgID0gZm4gKEFzc2VtYmx5Lkluc3RydWN0aW9uIChJbnN0cnVjdGlvbi5wRkJpbkENCgkJCQkg
ICAgICB7b3BlciwNCgkJCQkgICAgICAgZHN0ID0gT3BlcmFuZC5NZW1Mb2MgbWVtbG9jLC4uLn0p
LA0KCQl7Li4ufSkNCgkgICAgID0+IHRydWUNCgkgICAgIHwgXyA9PiBmYWxzZQ0KDQoJdmFsIHRl
bXBsYXRlIDogdGVtcGxhdGUgDQoJICA9IHtzdGFydCA9IEVtcHR5T3JOb25FbXB0eSwNCgkgICAg
IHN0YXRlbWVudHMgPSBbT25lIGlzSW5zdHJ1Y3Rpb25GTU9WX2RzdE1lbWxvYywNCgkJCSAgIEFs
bCBpc0NvbW1lbnQsDQoJCQkgICBPbmUgaXNJbnN0cnVjdGlvbkZsdEJpbkFfZHN0TWVtbG9jXSwN
CgkgICAgIGZpbmlzaCA9IEVtcHR5T3JOb25FbXB0eSwNCgkgICAgIHRyYW5zZmVyID0gZm4gXyA9
PiB0cnVlfQ0KDQoJdmFsIHJld3JpdGVyIDogcmV3cml0ZXINCgkgID0gZm4ge2xhYmVsLA0KCQlw
cm9maWxlSW5mbywNCgkJc3RhcnQsIA0KCQlzdGF0ZW1lbnRzIGFzDQoJCVtbKEFzc2VtYmx5Lklu
c3RydWN0aW9uIChJbnN0cnVjdGlvbi5wRk1PViANCgkJCQkJIHtzcmMgPSBzcmMxLA0KCQkJCQkg
IGRzdCANCgkJCQkJICA9IGRzdDEgYXMgT3BlcmFuZC5NZW1Mb2MgbWVtbG9jX2RzdDEsDQoJCQkJ
CSAgc2l6ZSA9IHNpemUxfSksDQoJCSAgIHtkZWFkID0gZGVhZDEsLi4ufSldLA0KCQkgY29tbWVu
dHMsDQoJCSBbKEFzc2VtYmx5Lkluc3RydWN0aW9uIChJbnN0cnVjdGlvbi5wRkJpbkEgDQoJCQkJ
CSB7b3BlciA9IG9wZXIyLA0KCQkJCQkgIHNyYyA9IHNyYzIsDQoJCQkJCSAgZHN0IA0KCQkJCQkg
ID0gZHN0MiBhcyBPcGVyYW5kLk1lbUxvYyBtZW1sb2NfZHN0MiwNCgkJCQkJICBzaXplID0gc2l6
ZTJ9KSwNCgkJICAge2RlYWQgPSBkZWFkMiwNCgkJICAgIGxpdmVPdXQgPSBsaXZlT3V0MiwuLi59
KV1dLA0KCQlmaW5pc2gsIA0KCQl0cmFuc2Zlcn0NCgkgICAgID0+IGlmIFNpemUuZXEoc2l6ZTEs
c2l6ZTIpIGFuZGFsc28NCgkgICAgICAgICAgIE9wZXJhbmQuZXEoZHN0MSxkc3QyKSBhbmRhbHNv
DQoJCSAgIG5vdCAoT3BlcmFuZC5lcShzcmMxLCBzcmMyKSkgYW5kYWxzbw0KCQkgICAoY2FzZSAo
c3JjMSxzcmMyKQ0KCQkgICAgICBvZiAoT3BlcmFuZC5NZW1Mb2MgbWVtbG9jX3NyYzEsDQoJCQkg
IE9wZXJhbmQuTWVtTG9jIG1lbWxvY19zcmMyKQ0KCQkgICAgICAgPT4gTGlzdC5jb250YWlucyhk
ZWFkMiwNCgkJCQkJbWVtbG9jX3NyYzIsDQoJCQkJCU1lbUxvYy5lcSkNCgkJCSAgYW5kYWxzbw0K
CQkJICBub3QgKExpc3QuY29udGFpbnMoZGVhZDEsDQoJCQkJCSAgICAgbWVtbG9jX3NyYzEsDQoJ
CQkJCSAgICAgTWVtTG9jLmVxKSkNCgkJICAgICAgIHwgKF8sIE9wZXJhbmQuTWVtTG9jIG1lbWxv
Y19zcmMyKQ0KCQkgICAgICAgPT4gTGlzdC5jb250YWlucyhkZWFkMiwNCgkJCQkJbWVtbG9jX3Ny
YzIsDQoJCQkJCU1lbUxvYy5lcSkNCgkJICAgICAgIHwgXyA9PiBmYWxzZSkgYW5kYWxzbw0KCQkg
ICAoY2FzZSBzcmMxDQoJCSAgICAgIG9mIE9wZXJhbmQuTWVtTG9jIG1lbWxvY19zcmMxDQoJCSAg
ICAgICA9PiBub3QgKExpc3QuZXhpc3RzDQoJCQkgICAgICAgKG1lbWxvY19zcmMxOjooTWVtTG9j
LnV0aWxpemVkIG1lbWxvY19zcmMxKSwNCgkJCQlmbiBtZW1sb2MnDQoJCQkJID0+IE1lbUxvYy5t
YXlBbGlhcyhtZW1sb2MnLG1lbWxvY19kc3QxKSkpDQoJCSAgICAgICB8IF8gPT4gdHJ1ZSkgYW5k
YWxzbw0KCQkgICAoY2FzZSBzcmMyDQoJCSAgICAgIG9mIE9wZXJhbmQuTWVtTG9jIG1lbWxvY19z
cmMyDQoJCSAgICAgICA9PiBub3QgKExpc3QuZXhpc3RzDQoJCQkgICAgICAgKG1lbWxvY19zcmMy
OjooTWVtTG9jLnV0aWxpemVkIG1lbWxvY19zcmMyKSwNCgkJCQlmbiBtZW1sb2MnDQoJCQkJID0+
IE1lbUxvYy5tYXlBbGlhcyhtZW1sb2MnLG1lbWxvY19kc3QxKSkpDQoJCSAgICAgICB8IF8gPT4g
dHJ1ZSkNCgkJICB0aGVuIGxldA0KCQkJIHZhbCBzdGF0ZW1lbnRzDQoJCQkgICA9IChBc3NlbWJs
eS5pbnN0cnVjdGlvbl9wZm1vdg0KCQkJICAgICAge3NyYyA9IHNyYzIsDQoJCQkgICAgICAgZHN0
ID0gZHN0MSwNCgkJCSAgICAgICBzaXplID0gc2l6ZTF9KTo6DQoJCQkgICAgIChMaXN0LmNvbmNh
dA0KCQkJICAgICAgW0xpc3QubWFwKGNvbW1lbnRzLCAjMSksDQoJCQkgICAgICAgW0Fzc2VtYmx5
Lmluc3RydWN0aW9uX3BmYmluYQ0KCQkJCXtvcGVyID0gSW5zdHJ1Y3Rpb24uZmJpbmFfcmV2ZXJz
ZSBvcGVyMiwNCgkJCQkgc3JjID0gc3JjMSwNCgkJCQkgZHN0ID0gZHN0MiwNCgkJCQkgc2l6ZSA9
IHNpemUyfV1dKQ0KDQoJCQkgdmFsIHtzdGF0ZW1lbnRzLCAuLi59DQoJCQkgICA9IExpdmVuZXNz
QmxvY2sudG9MaXZlbmVzc1N0YXRlbWVudHMNCgkJCSAgICAge3N0YXRlbWVudHMgPSBzdGF0ZW1l
bnRzLA0KCQkJICAgICAgbGl2ZSA9IGxpdmVPdXQyfQ0KDQoJCQkgdmFsIHN0YXRlbWVudHMgDQoJ
CQkgICA9IExpc3QuZm9sZChzdGFydCwgDQoJCQkJICAgICAgIExpc3QuY29uY2F0IFtzdGF0ZW1l
bnRzLA0KCQkJCQkJICAgIGZpbmlzaF0sIA0KCQkJCSAgICAgICBvcCA6OikNCgkJICAgICAgIGlu
DQoJCQkgU09NRSAoTGl2ZW5lc3NCbG9jay5UDQoJCQkgICAgICAge2xhYmVsID0gbGFiZWwsCQ0K
CQkJCXByb2ZpbGVJbmZvID0gcHJvZmlsZUluZm8sDQoJCQkJc3RhdGVtZW50cyA9IHN0YXRlbWVu
dHMsDQoJCQkJdHJhbnNmZXIgPSB0cmFuc2Zlcn0pCQkgDQoJCSAgICAgICBlbmQNCgkJICBlbHNl
IE5PTkUNCiAgICAgICAgICAgICB8IF8gPT4gRXJyb3IuYnVnICJQZWVwaG9sZTogY29tbXV0ZUZs
dEJpbkEiDQoNCgl2YWwgKGNhbGxiYWNrLGNvbW11dGVGbHRCaW5BX21zZykNCgkgID0gbWFrZV9j
YWxsYmFja19tc2cgImNvbW11dGVGbHRCaW5BIg0KICAgICAgaW4NCgl2YWwgY29tbXV0ZUZsdEJp
bkEgOiBvcHRpbWl6YXRpb24NCgkgID0ge3RlbXBsYXRlID0gdGVtcGxhdGUsDQoJICAgICByZXdy
aXRlciA9IHJld3JpdGVyLA0KCSAgICAgY2FsbGJhY2sgPSBjYWxsYmFja30NCgl2YWwgY29tbXV0
ZUZsdEJpbkFfbXNnID0gY29tbXV0ZUZsdEJpbkFfbXNnDQogICAgICBlbmQNCg0KICAgICAgbG9j
YWwNCgl2YWwgaXNJbnN0cnVjdGlvblNFVGNjX2RzdFRlbXAgOiBzdGF0ZW1lbnRfdHlwZSAtPiBi
b29sDQoJICA9IGZuIChBc3NlbWJseS5JbnN0cnVjdGlvbiAoSW5zdHJ1Y3Rpb24uU0VUY2MgDQoJ
CQkJICAgICAge2RzdCA9IE9wZXJhbmQuTWVtTG9jIG1lbWxvYywuLi59KSwNCgkJey4uLn0pIA0K
CSAgICAgPT4gTWVtTG9jLmlzVGVtcCBtZW1sb2MNCgkgICAgIHwgXyA9PiBmYWxzZQ0KDQoJdmFs
IGlzSW5zdHJ1Y3Rpb25URVNUX2VxU3Jjc19zcmNzVGVtcF9zcmNzRGVhZCA6IHN0YXRlbWVudF90
eXBlIC0+IGJvb2wNCgkgID0gZm4gKEFzc2VtYmx5Lkluc3RydWN0aW9uIChJbnN0cnVjdGlvbi5U
RVNUIA0KCQkJCSAgICAgIHtzcmMxID0gT3BlcmFuZC5NZW1Mb2MgbWVtbG9jMSwNCgkJCQkgICAg
ICAgc3JjMiA9IE9wZXJhbmQuTWVtTG9jIG1lbWxvYzIsLi4ufSksDQoJCXtkZWFkLC4uLn0pDQoJ
ICAgICA9PiBNZW1Mb2MuZXEobWVtbG9jMSxtZW1sb2MyKSBhbmRhbHNvDQoJICAgICAgICBNZW1M
b2MuaXNUZW1wIG1lbWxvYzEgYW5kYWxzbw0KCQlMaXN0LmNvbnRhaW5zKGRlYWQsIG1lbWxvYzEs
IE1lbUxvYy5lcSkNCgkgICAgIHwgXyA9PiBmYWxzZQ0KDQoJdmFsIGlzSWZmX2NvbmRpdGlvblpv
ck5aIDogdHJhbnNmZXJfdHlwZSAtPiBib29sDQoJICA9IGZuIChUcmFuc2Zlci5JZmYge2NvbmRp
dGlvbiwuLi59LA0KCQl7Li4ufSkNCgkgICAgID0+IChjYXNlIGNvbmRpdGlvbg0KCQkgICBvZiBJ
bnN0cnVjdGlvbi5aID0+IHRydWUNCgkJICAgIHwgSW5zdHJ1Y3Rpb24uTlogPT4gdHJ1ZQ0KCQkg
ICAgfCBfID0+IGZhbHNlKQ0KCSAgICAgfCBfID0+IGZhbHNlDQoNCgl2YWwgdGVtcGxhdGUgOiB0
ZW1wbGF0ZQ0KCSAgPSB7c3RhcnQgPSBFbXB0eU9yTm9uRW1wdHksDQoJICAgICBzdGF0ZW1lbnRz
ID0gW09uZSBpc0luc3RydWN0aW9uU0VUY2NfZHN0VGVtcCwNCgkJCSAgIEFsbCBpc0NvbW1lbnQs
DQoJCQkgICBPbmUgaXNJbnN0cnVjdGlvblRFU1RfZXFTcmNzX3NyY3NUZW1wX3NyY3NEZWFkLA0K
CQkJICAgQWxsIGlzQ29tbWVudF0sDQoJICAgICBmaW5pc2ggPSBFbXB0eSwNCgkgICAgIHRyYW5z
ZmVyID0gaXNJZmZfY29uZGl0aW9uWm9yTlp9DQoNCgl2YWwgcmV3cml0ZXIgOiByZXdyaXRlcg0K
CSAgPSBmbiB7bGFiZWwsDQoJCXByb2ZpbGVJbmZvLA0KCQlzdGFydCwgDQoJCXN0YXRlbWVudHMg
YXMNCgkJW1soQXNzZW1ibHkuSW5zdHJ1Y3Rpb24gKEluc3RydWN0aW9uLlNFVGNjDQoJCQkJCSB7
Y29uZGl0aW9uID0gY29uZGl0aW9uMSwNCgkJCQkJICBkc3QgDQoJCQkJCSAgPSBkc3QxIGFzIE9w
ZXJhbmQuTWVtTG9jIG1lbWxvYzEsDQoJCQkJCSAgc2l6ZSA9IHNpemUxfSksDQoJCSAgIHsuLi59
KV0sDQoJCSBjb21tZW50czEsDQoJCSBbKEFzc2VtYmx5Lkluc3RydWN0aW9uIChJbnN0cnVjdGlv
bi5URVNUDQoJCQkJCSB7c3JjMSANCgkJCQkJICA9IHNyYzEyIGFzIE9wZXJhbmQuTWVtTG9jIG1l
bWxvYzEyLA0KCQkJCQkgIHNyYzIgDQoJCQkJCSAgPSBzcmMyMiBhcyBPcGVyYW5kLk1lbUxvYyBt
ZW1sb2MyMiwNCgkJCQkJICBzaXplID0gc2l6ZTJ9KSwNCgkJICAgey4uLn0pXSwNCgkJIGNvbW1l
bnRzMl0sDQoJCWZpbmlzaCBhcyBbXSwNCgkJdHJhbnNmZXIgYXMNCgkJKFRyYW5zZmVyLklmZiB7
Y29uZGl0aW9uLCB0cnVlZSwgZmFsc2VlfSwNCgkJIGluZm9UIGFzIHsuLi59KX0NCgkgICAgID0+
IGlmIE1lbUxvYy5lcShtZW1sb2MxLG1lbWxvYzEyKQ0KCQkgIHRoZW4gbGV0DQoJCQkgdmFsIGNv
bmRpdGlvbiANCgkJCSAgID0gY2FzZSBjb25kaXRpb24NCgkJCSAgICAgICBvZiBJbnN0cnVjdGlv
bi5aIA0KCQkJCT0+IEluc3RydWN0aW9uLmNvbmRpdGlvbl9uZWdhdGUgY29uZGl0aW9uMQ0KCQkJ
ICAgICAgICB8IEluc3RydWN0aW9uLk5aID0+IGNvbmRpdGlvbjENCgkJCSAgICAgICAgfCBfID0+
IEVycm9yLmJ1ZyAiUGVlcGhvbGU6IGNvbmRpdGlvbmFsSnVtcCINCg0KCQkJIHZhbCB0cmFuc2Zl
ciANCgkJCSAgID0gKFRyYW5zZmVyLmlmZiB7Y29uZGl0aW9uID0gY29uZGl0aW9uLA0KCQkJCQkg
ICAgdHJ1ZWUgPSB0cnVlZSwNCgkJCQkJICAgIGZhbHNlZSA9IGZhbHNlZX0sDQoJCQkgICAgICBp
bmZvVCkNCg0KCQkJIHZhbCB7dHJhbnNmZXIsbGl2ZX0NCgkJCSAgID0gTGl2ZW5lc3NCbG9jay5y
ZUxpdmVuZXNzVHJhbnNmZXIgDQoJCQkgICAgIHt0cmFuc2ZlciA9IHRyYW5zZmVyfQ0KDQoJCQkg
dmFsIHN0YXRlbWVudHMNCgkJCSAgID0gTGlzdC5jb25jYXQNCgkJCSAgICAgW0xpc3QubWFwKGNv
bW1lbnRzMSwgIzEpLA0KCQkJICAgICAgTGlzdC5tYXAoY29tbWVudHMyLCAjMSldDQoNCgkJCSB2
YWwge3N0YXRlbWVudHMsIC4uLn0NCgkJCSAgID0gTGl2ZW5lc3NCbG9jay50b0xpdmVuZXNzU3Rh
dGVtZW50cw0KCQkJICAgICB7c3RhdGVtZW50cyA9IHN0YXRlbWVudHMsDQoJCQkgICAgICBsaXZl
ID0gbGl2ZX0NCg0KCQkJIHZhbCBzdGF0ZW1lbnRzIA0KCQkJICAgPSBMaXN0LmZvbGQoc3RhcnQs
IA0KCQkJCSAgICAgICBzdGF0ZW1lbnRzLCANCgkJCQkgICAgICAgb3AgOjopDQoJCSAgICAgICBp
bg0KCQkJIFNPTUUgKExpdmVuZXNzQmxvY2suVA0KCQkJICAgICAgIHtsYWJlbCA9IGxhYmVsLA0K
CQkJCXByb2ZpbGVJbmZvID0gcHJvZmlsZUluZm8sDQoJCQkJc3RhdGVtZW50cyA9IHN0YXRlbWVu
dHMsDQoJCQkJdHJhbnNmZXIgPSB0cmFuc2Zlcn0pDQoJCSAgICAgICBlbmQNCgkJICBlbHNlIE5P
TkUNCgkgICAgIHwgXyA9PiBFcnJvci5idWcgIlBlZXBob2xlOiBjb25kaXRpb25hbEp1bXAiDQoN
Cgl2YWwgKGNhbGxiYWNrLGNvbmRpdGlvbmFsSnVtcF9tc2cpDQoJICA9IG1ha2VfY2FsbGJhY2tf
bXNnICJjb25kaXRpb25hbEp1bXAiDQogICAgICBpbg0KCXZhbCBjb25kaXRpb25hbEp1bXAgOiBv
cHRpbWl6YXRpb24NCgkgID0ge3RlbXBsYXRlID0gdGVtcGxhdGUsDQoJICAgICByZXdyaXRlciA9
IHJld3JpdGVyLA0KCSAgICAgY2FsbGJhY2sgPSBjYWxsYmFja30NCgl2YWwgY29uZGl0aW9uYWxK
dW1wX21zZyA9IGNvbmRpdGlvbmFsSnVtcF9tc2cNCiAgICAgIGVuZA0KDQogICAgICBsb2NhbA0K
CXZhbCB7dGVtcGxhdGUsIHJld3JpdGVyLCAuLi59ID0gZWxpbURlYWREc3RzDQoJdmFsIChjYWxs
YmFjayxlbGltRGVhZERzdHNfbWlub3JfbXNnKQ0KCSAgPSBtYWtlX2NhbGxiYWNrX21zZyAiZWxp
bURlYWREc3RzX21pbm9yIg0KICAgICAgaW4NCgl2YWwgZWxpbURlYWREc3RzX21pbm9yIDogb3B0
aW1pemF0aW9uDQoJICA9IHt0ZW1wbGF0ZSA9IHRlbXBsYXRlLA0KCSAgICAgcmV3cml0ZXIgPSBy
ZXdyaXRlciwNCgkgICAgIGNhbGxiYWNrID0gY2FsbGJhY2t9DQoJdmFsIGVsaW1EZWFkRHN0c19t
aW5vcl9tc2cgPSBlbGltRGVhZERzdHNfbWlub3JfbXNnDQogICAgICBlbmQNCg0KICAgICAgbG9j
YWwNCgl2YWwge3RlbXBsYXRlLCByZXdyaXRlciwgLi4ufSA9IGVsaW1TZWxmTW92ZQ0KCXZhbCAo
Y2FsbGJhY2ssZWxpbVNlbGZNb3ZlX21pbm9yX21zZykNCgkgID0gbWFrZV9jYWxsYmFja19tc2cg
ImVsaW1TZWxmTW92ZV9taW5vciINCiAgICAgIGluDQoJdmFsIGVsaW1TZWxmTW92ZV9taW5vciA6
IG9wdGltaXphdGlvbg0KCSAgPSB7dGVtcGxhdGUgPSB0ZW1wbGF0ZSwNCgkgICAgIHJld3JpdGVy
ID0gcmV3cml0ZXIsDQoJICAgICBjYWxsYmFjayA9IGNhbGxiYWNrfQ0KCXZhbCBlbGltU2VsZk1v
dmVfbWlub3JfbXNnID0gZWxpbVNlbGZNb3ZlX21pbm9yX21zZw0KICAgICAgZW5kDQoNCiAgICAg
IGxvY2FsDQoJdmFsIHt0ZW1wbGF0ZSwgcmV3cml0ZXIsIC4uLn0gPSBlbGltRmx0U2VsZk1vdmUN
Cgl2YWwgKGNhbGxiYWNrLGVsaW1GbHRTZWxmTW92ZV9taW5vcl9tc2cpDQoJICA9IG1ha2VfY2Fs
bGJhY2tfbXNnICJlbGltRmx0U2VsZk1vdmVfbWlub3IiDQogICAgICBpbg0KCXZhbCBlbGltRmx0
U2VsZk1vdmVfbWlub3IgOiBvcHRpbWl6YXRpb24NCgkgID0ge3RlbXBsYXRlID0gdGVtcGxhdGUs
DQoJICAgICByZXdyaXRlciA9IHJld3JpdGVyLA0KCSAgICAgY2FsbGJhY2sgPSBjYWxsYmFja30N
Cgl2YWwgZWxpbUZsdFNlbGZNb3ZlX21pbm9yX21zZyA9IGVsaW1GbHRTZWxmTW92ZV9taW5vcl9t
c2cNCiAgICAgIGVuZA0KDQogICAgICBsb2NhbA0KCXZhbCBvcHRpbWl6YXRpb25zIA0KCSAgPSBb
ZWxpbUFMQ29weSwgDQoJICAgICBlbGltRmx0QUNvcHksDQoJICAgICBlbGltRGVhZERzdHMsDQoJ
ICAgICBlbGltU2VsZk1vdmUsDQoJICAgICBlbGltRmx0U2VsZk1vdmUsDQoJICAgICBjb21tdXRl
QmluQUxNRCwNCgkgICAgIGNvbW11dGVGbHRCaW5BLA0KCSAgICAgY29uZGl0aW9uYWxKdW1wXQ0K
CXZhbCBvcHRpbWl6YXRpb25zX21zZw0KCSAgPSBbZWxpbUFMQ29weV9tc2csIA0KCSAgICAgZWxp
bUZsdEFDb3B5X21zZywNCgkgICAgIGVsaW1EZWFkRHN0c19tc2csDQoJICAgICBlbGltU2VsZk1v
dmVfbXNnLA0KCSAgICAgZWxpbUZsdFNlbGZNb3ZlX21zZywNCgkgICAgIGNvbW11dGVCaW5BTE1E
X21zZywNCgkgICAgIGNvbW11dGVGbHRCaW5BX21zZywNCgkgICAgIGNvbmRpdGlvbmFsSnVtcF9t
c2ddDQoNCgl2YWwgb3B0aW1pemF0aW9uc19taW5vcg0KCSAgPSBbZWxpbURlYWREc3RzX21pbm9y
LA0KCSAgICAgZWxpbVNlbGZNb3ZlX21pbm9yLA0KCSAgICAgZWxpbUZsdFNlbGZNb3ZlX21pbm9y
XQ0KCXZhbCBvcHRpbWl6YXRpb25zX21pbm9yX21zZw0KCSAgPSBbZWxpbURlYWREc3RzX21pbm9y
X21zZywNCgkgICAgIGVsaW1TZWxmTW92ZV9taW5vcl9tc2csDQoJICAgICBlbGltRmx0U2VsZk1v
dmVfbWlub3JfbXNnXQ0KICAgICAgaW4NCgl2YWwgKHBlZXBob2xlTGl2ZW5lc3NCbG9jaywgcGVl
cGhvbGVMaXZlbmVzc0Jsb2NrX21zZykNCgkgID0gdHJhY2VyDQogICAgICAgICAgICAicGVlcGhv
bGVMaXZlbmVzc0Jsb2NrIg0KCSAgICAoZm4gYmxvY2sgPT4gcGVlcGhvbGVCbG9jayB7b3B0aW1p
emF0aW9ucyA9IG9wdGltaXphdGlvbnMsDQoJCQkJCWJsb2NrID0gYmxvY2t9KQ0KDQoJdmFsIHBl
ZXBob2xlTGl2ZW5lc3NCbG9ja19tc2cNCgkgID0gZm4gKCkgPT4gKHBlZXBob2xlTGl2ZW5lc3NC
bG9ja19tc2cgKCk7DQoJCSAgICAgIENvbnRyb2wuaW5kZW50ICgpOw0KCQkgICAgICBMaXN0LmZv
cmVhY2gob3B0aW1pemF0aW9uc19tc2csIGZuIG1zZyA9PiBtc2cgKCkpOw0KCQkgICAgICBDb250
cm9sLnVuaW5kZW50ICgpKQ0KDQoJdmFsIChwZWVwaG9sZUxpdmVuZXNzQmxvY2tfbWlub3IsIHBl
ZXBob2xlTGl2ZW5lc3NCbG9ja19taW5vcl9tc2cpDQoJICA9IHRyYWNlcg0KICAgICAgICAgICAg
InBlZXBob2xlTGl2ZW5lc3NCbG9ja19taW5vciINCgkgICAgKGZuIGJsb2NrID0+IHBlZXBob2xl
QmxvY2sge29wdGltaXphdGlvbnMgPSBvcHRpbWl6YXRpb25zX21pbm9yLA0KCQkJCQlibG9jayA9
IGJsb2NrfSkNCg0KCXZhbCBwZWVwaG9sZUxpdmVuZXNzQmxvY2tfbWlub3JfbXNnDQoJICA9IGZu
ICgpID0+IChwZWVwaG9sZUxpdmVuZXNzQmxvY2tfbWlub3JfbXNnICgpOw0KCQkgICAgICBDb250
cm9sLmluZGVudCAoKTsNCgkJICAgICAgTGlzdC5mb3JlYWNoKG9wdGltaXphdGlvbnNfbWlub3Jf
bXNnLCBmbiBtc2cgPT4gbXNnICgpKTsNCgkJICAgICAgQ29udHJvbC51bmluZGVudCAoKSkNCiAg
ICAgIGVuZA0KICAgIGVuZA0KDQogIHN0cnVjdHVyZSBMaXZlVHJhbnNmZXJJbmZvID0NCiAgICBz
dHJ1Y3QNCiAgICAgIG9wZW4gSnVtcEluZm8NCg0KICAgICAgZnVuIHRlbXBfdXNlc19kZWZzIHt1
c2VzIDogT3BlcmFuZC50IGxpc3QsDQoJCQkgIGRlZnMgOiBPcGVyYW5kLnQgbGlzdH0NCgk9IGxl
dA0KCSAgICB2YWwgYmFzZVVzZXMNCgkgICAgICA9IExpc3QuZm9sZA0KCSAgICAgICAgKHVzZXMs
DQoJCSBbXSwNCgkJIGZuIChvcGVyYW5kLCBiYXNlVXNlcykNCgkJICA9PiBjYXNlIE9wZXJhbmQu
ZGVNZW1sb2Mgb3BlcmFuZA0KCQkgICAgICAgb2YgU09NRSBtZW1sb2MgPT4gaWYgTWVtTG9jLmlz
VGVtcCBtZW1sb2MNCgkJCSAgICAgICAgICAgICAgICAgICAgYW5kYWxzbyANCgkJCQkJICAgIG5v
dCAoTGlzdC5jb250YWlucyhiYXNlVXNlcywNCgkJCQkJCQkgICAgICAgbWVtbG9jLA0KCQkJCQkJ
CSAgICAgICBNZW1Mb2MuZXEpKQ0KCQkJCQkgICB0aGVuIG1lbWxvYzo6YmFzZVVzZXMNCgkJCQkJ
ICAgZWxzZSBiYXNlVXNlcw0KCQkgICAgICAgIHwgTk9ORSA9PiBiYXNlVXNlcykNCgkJICAgDQoJ
ICAgIHZhbCB0ZW1wVXNlcw0KCSAgICAgID0gbGV0DQoJCSAgZnVuIGRvaXQgKG9wZXJhbmRzLCB0
ZW1wVXNlcykNCgkJICAgID0gTGlzdC5mb2xkDQoJCSAgICAgIChvcGVyYW5kcywNCgkJICAgICAg
IHRlbXBVc2VzLA0KCQkgICAgICAgZm4gKG9wZXJhbmQsIHRlbXBVc2VzKQ0KCQkgICAgICAgID0+
IGNhc2UgT3BlcmFuZC5kZU1lbWxvYyBvcGVyYW5kDQoJCQkgICAgIG9mIFNPTUUgbWVtbG9jDQoJ
CQkgICAgICA9PiBMaXN0LmZvbGQoTWVtTG9jLnV0aWxpemVkIG1lbWxvYywNCgkJCQkJICAgdGVt
cFVzZXMsDQoJCQkJCSAgIGZuIChtZW1sb2MsIHRlbXBVc2VzKQ0KCQkJCQkgICAgPT4gaWYgTWVt
TG9jLmlzVGVtcCBtZW1sb2MNCgkJCQkJICAgICAgICAgIGFuZGFsc28NCgkJCQkJCSAgbm90IChM
aXN0LmNvbnRhaW5zDQoJCQkJCQkgICAgICAgKHRlbXBVc2VzLA0KCQkJCQkJCW1lbWxvYywNCgkJ
CQkJCQlNZW1Mb2MuZXEpKQ0KCQkJCQkJIHRoZW4gbWVtbG9jOjp0ZW1wVXNlcw0KCQkJCQkJIGVs
c2UgdGVtcFVzZXMpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5PTkUgPT4gdGVt
cFVzZXMpDQoJCWluDQoJCSAgZG9pdChkZWZzLCANCgkJICBkb2l0KHVzZXMsIA0KCQkgICAgICAg
YmFzZVVzZXMpKQ0KCQllbmQNCg0KCSAgICB2YWwgYmFzZURlZnMNCgkgICAgICA9IExpc3QuZm9s
ZA0KCSAgICAgICAgKGRlZnMsDQoJCSBbXSwNCgkJIGZuIChvcGVyYW5kLCBiYXNlRGVmcykNCgkJ
ICA9PiBjYXNlIE9wZXJhbmQuZGVNZW1sb2Mgb3BlcmFuZA0KCQkgICAgICAgb2YgU09NRSBtZW1s
b2MgPT4gaWYgTWVtTG9jLmlzVGVtcCBtZW1sb2MNCgkJCSAgICAgICAgICAgICAgICAgICAgYW5k
YWxzbyANCgkJCQkJICAgIG5vdCAoTGlzdC5jb250YWlucyhiYXNlRGVmcywNCgkJCQkJCQkgICAg
ICAgbWVtbG9jLA0KCQkJCQkJCSAgICAgICBNZW1Mb2MuZXEpKQ0KCQkJCQkgICB0aGVuIG1lbWxv
Yzo6YmFzZURlZnMNCgkJCQkJICAgZWxzZSBiYXNlRGVmcw0KCQkJfCBOT05FID0+IGJhc2VEZWZz
KQ0KCSAgICB2YWwgdGVtcERlZnMgPSBiYXNlRGVmcw0KCSAgaW4NCgkgICAge3VzZXMgPSB0ZW1w
VXNlcywNCgkgICAgIGRlZnMgPSB0ZW1wRGVmc30NCgkgIGVuZA0KDQogICAgICBmdW4gY29tcHV0
ZUxpdmVUcmFuc2ZlckluZm8ge2Jsb2NrcyA6IEJsb2NrLnQgbGlzdCwNCgkJCQkgICB0cmFuc2Zl
clJlZ3MgOiBSZWdpc3Rlci50IGxpc3QsDQoJCQkJICAgbGl2ZUluZm8gOiANCgkJCQkgICB7Z2V0
IDogTGFiZWwudCAtPiBNZW1Mb2MudCBsaXN0LA0KCQkJCSAgICBzZXQgOiBMYWJlbC50ICogTWVt
TG9jLnQgbGlzdCAtPiB1bml0fSwNCgkJCQkgICBqdW1wSW5mbyA6IHtnZXQ6IExhYmVsLnQgLT4g
c3RhdHVzIHJlZn19DQoJPSBsZXQNCgkgICAgZGF0YXR5cGUgbGl2ZVRyYW5zZmVyVHlwZQ0KCSAg
ICAgID0gTm9ybWFsDQoJICAgICAgfCBEZWZhdWx0IG9mIExhYmVsLnQgbGlzdA0KCSAgICAgIHwg
Q2FzZSBvZiBMYWJlbC50DQoJICAgICAgfCBUb3ANCg0KCSAgICB2YWwgam9pbg0KCSAgICAgID0g
Zm4gKE5vcm1hbCwgaykgPT4gaw0KCQkgfCAoaywgTm9ybWFsKSA9PiBrDQoJCSB8IChEZWZhdWx0
IGwxLCBEZWZhdWx0IGwyKSANCgkgICAgICAgICA9PiBpZiBMaXN0LmVxdWFsc0FzU2V0KGwxLCBs
MiwgTGFiZWwuZXF1YWxzKQ0KCQkgICAgICB0aGVuIERlZmF1bHQgbDENCgkJICAgICAgZWxzZSBU
b3ANCgkJIHwgKENhc2UgbDEsIENhc2UgbDIpIA0KCQkgPT4gaWYgTGFiZWwuZXF1YWxzKGwxLGwy
KQ0KCQkgICAgICB0aGVuIENhc2UgbDENCgkJICAgICAgZWxzZSBUb3ANCgkJIHwgXyA9PiBUb3AN
Cg0KCSAgICB2YWwgYmxvY2tJbmZvDQoJICAgICBhcyB7Z2V0ID0gZ2V0QmxvY2tJbmZvIDoNCgkJ
ICAgICAgIExhYmVsLnQgLT4ge3ByZWQ6IExhYmVsLnQgbGlzdCByZWYsDQoJCQkJICAgYmxvY2s6
IEJsb2NrLnQgb3B0aW9uIHJlZiwNCgkJCQkgICBzdWNjOiBMYWJlbC50IGxpc3QgcmVmLA0KCQkJ
CSAgIGRpc3RhbmNlc0Y6IA0KCQkJCSAgIChNZW1Mb2MudCAqIChpbnQgbGlzdCkgcmVmKSBsaXN0
IHJlZiwNCgkJCQkgICBkaXN0YW5jZXNCOiANCgkJCQkgICAoTWVtTG9jLnQgKiAoaW50IGxpc3Qp
IHJlZikgbGlzdCByZWYsDQoJCQkJICAgbGl2ZVRyYW5zZmVyVHlwZTogbGl2ZVRyYW5zZmVyVHlw
ZSByZWZ9fQ0KCSAgICAgID0gUHJvcGVydHkuZ2V0DQoJICAgICAgICAoTGFiZWwucGxpc3QsDQoJ
CSBQcm9wZXJ0eS5pbml0RnVuIChmbiBsYWJlbCANCgkJCQkgICAgPT4ge3ByZWQgPSByZWYgW10s
DQoJCQkJCWJsb2NrID0gcmVmIE5PTkUsDQoJCQkJCXN1Y2MgPSByZWYgW10sDQoJCQkJCWRpc3Rh
bmNlc0YgPSByZWYgW10sDQoJCQkJCWRpc3RhbmNlc0IgPSByZWYgW10sDQoJCQkJCWxpdmVUcmFu
c2ZlclR5cGUgPSByZWYgTm9ybWFsfSkpDQoNCgkgICAgdmFsIGdldF9wcmVkID0gKCNwcmVkIG8g
Z2V0QmxvY2tJbmZvKQ0KCSAgICB2YWwgZ2V0X2Jsb2NrID0gKCNibG9jayBvIGdldEJsb2NrSW5m
bykNCgkgICAgdmFsIGdldF9zdWNjID0gKCNzdWNjIG8gZ2V0QmxvY2tJbmZvKQ0KCSAgICB2YWwg
Z2V0X2xpdmVUcmFuc2ZlclR5cGUgPSAoI2xpdmVUcmFuc2ZlclR5cGUgbyBnZXRCbG9ja0luZm8p
DQoJICAgIGZ1biBqb2luX2xpdmVUcmFuc2ZlclR5cGUgKGxhYmVsLCBsaXZlVHJhbnNmZXJUeXBl
JykNCgkgICAgICA9IGxldA0KCQkgIHZhbCBsaXZlVHJhbnNmZXJUeXBlID0gZ2V0X2xpdmVUcmFu
c2ZlclR5cGUgbGFiZWwNCgkJaW4NCgkJICBsaXZlVHJhbnNmZXJUeXBlIDo9IGpvaW4obGl2ZVRy
YW5zZmVyVHlwZScsIA0KCQkJCQkgICAhbGl2ZVRyYW5zZmVyVHlwZSkNCgkJZW5kDQoNCgkgICAg
ZnVuIGdldF9kaXN0YW5jZXNGJyB7dGVtcCA6IE1lbUxvYy50LA0KCQkJCSBsYWJlbCA6IExhYmVs
LnR9DQoJICAgICAgPSBsZXQNCgkJICB2YWwge2Jsb2NrLCBzdWNjLCBkaXN0YW5jZXNGLCAuLi59
ID0gZ2V0QmxvY2tJbmZvIGxhYmVsDQoJCWluDQoJCSAgY2FzZSBMaXN0LnBlZWsoIWRpc3RhbmNl
c0YsDQoJCQkJIGZuICh0ZW1wJyxfKSA9PiBNZW1Mb2MuZXEodGVtcCx0ZW1wJykpDQoJCSAgICBv
ZiBTT01FIChfLGRpc3RhbmNlcykgPT4gIWRpc3RhbmNlcw0KCQkgICAgIHwgTk9ORSANCgkJICAg
ICA9PiBsZXQNCgkJCSAgdmFsIHRlbXBfZGlzdGFuY2VzRiA9IHJlZiBbXQ0KCQkJICB2YWwgXyA9
IExpc3QucHVzaChkaXN0YW5jZXNGLCANCgkJCQkJICAgICh0ZW1wLHRlbXBfZGlzdGFuY2VzRikp
Ow0KDQoJCQkgIHZhbCBCbG9jay5UIHtzdGF0ZW1lbnRzLCB0cmFuc2ZlciwgLi4ufSANCgkJCSAg
ICA9IHZhbE9mICghYmxvY2spDQoNCgkJCSAgZGF0YXR5cGUgdCA9IFBvcyBvZiBpbnQgfCBMZW5n
dGggb2YgaW50DQoJCQkgIGZ1biBwb3NGIChbXSxuKSANCgkJCSAgICA9IGxldA0KCQkJCXZhbCB7
dXNlcyxkZWZzLC4uLn0gDQoJCQkJICA9IFRyYW5zZmVyLnVzZXNfZGVmc19raWxscyB0cmFuc2Zl
cg0KCQkJCXZhbCB7dXNlcyxkZWZzfSANCgkJCQkgID0gdGVtcF91c2VzX2RlZnMge3VzZXMgPSB1
c2VzLA0KCQkJCQkJICAgIGRlZnMgPSBkZWZzfQ0KCQkJICAgICAgaW4NCgkJCQlpZiBMaXN0LmNv
bnRhaW5zKHVzZXMsDQoJCQkJCQkgdGVtcCwNCgkJCQkJCSBNZW1Mb2MuZXEpDQoJCQkJICB0aGVu
IFBvcyBuDQoJCQkJICBlbHNlIExlbmd0aCAobiArIDEpDQoJCQkgICAgICBlbmQNCgkJCSAgICB8
IHBvc0YgKGFzbTo6YXNzZW1ibHksbikNCgkJCSAgICA9IGxldA0KCQkJCXZhbCB7dXNlcyxkZWZz
LC4uLn0gDQoJCQkJICA9IEFzc2VtYmx5LnVzZXNfZGVmc19raWxscyBhc20NCgkJCQl2YWwge3Vz
ZXMsZGVmc30gDQoJCQkJICA9IHRlbXBfdXNlc19kZWZzIHt1c2VzID0gdXNlcywNCgkJCQkJCSAg
ICBkZWZzID0gZGVmc30NCgkJCSAgICAgIGluDQoJCQkJaWYgTGlzdC5jb250YWlucyh1c2VzLA0K
CQkJCQkJIHRlbXAsDQoJCQkJCQkgTWVtTG9jLmVxKQ0KCQkJCSAgdGhlbiBQb3Mgbg0KCQkJCSAg
ZWxzZSBwb3NGIChhc3NlbWJseSwgbiArIDEpDQoJCQkgICAgICBlbmQNCg0KCQkJICB2YWwgZGlz
dGFuY2VzDQoJCQkgICAgPSBjYXNlIHBvc0Yoc3RhdGVtZW50cywgMSkNCgkJCQlvZiBQb3MgbiA9
PiBbbl0NCgkJCQkgfCBMZW5ndGggbg0KCQkJCSA9PiBMaXN0LmNvbmNhdE1hcA0KCQkJCSAgICAo
IXN1Y2MsDQoJCQkJICAgICBmbiBsYWJlbA0KCQkJCSAgICAgID0+IGlmIExpc3QuY29udGFpbnMN
CgkJCQkgICAgICAgICAgICAoKCNnZXQgbGl2ZUluZm8pIGxhYmVsLA0KCQkJCQkgICAgIHRlbXAs
DQoJCQkJCSAgICAgTWVtTG9jLmVxKQ0KCQkJCQkgICB0aGVuIExpc3QubWFwDQoJCQkJCSAgICAg
ICAgKGdldF9kaXN0YW5jZXNGJyANCgkJCQkJCSB7dGVtcCA9IHRlbXAsDQoJCQkJCQkgIGxhYmVs
ID0gbGFiZWx9LA0KCQkJCQkJIGZuIG0gPT4gbSArIG4pDQoJCQkJCSAgIGVsc2UgW10pDQoJCQlp
bg0KCQkJICB0ZW1wX2Rpc3RhbmNlc0YgOj0gZGlzdGFuY2VzOw0KCQkJICBkaXN0YW5jZXMNCgkJ
CWVuZA0KCQllbmQNCg0KCSAgICBmdW4gZ2V0X2Rpc3RhbmNlc0Yge3RlbXAgOiBNZW1Mb2MudCwN
CgkJCQlsYWJlbCA6IExhYmVsLnR9DQoJICAgICAgPSBsZXQNCgkJICB2YWwgZGlzdGFuY2VzIA0K
CQkgICAgPSBnZXRfZGlzdGFuY2VzRicge3RlbXAgPSB0ZW1wLA0KCQkJCSAgICAgICBsYWJlbCA9
IGxhYmVsfQ0KCQlpbg0KCQkgIGRpc3RhbmNlcw0KCQllbmQNCg0KCSAgICBmdW4gZ2V0X2Rpc3Rh
bmNlc0InIHt0ZW1wIDogTWVtTG9jLnQsDQoJCQkJIGxhYmVsIDogTGFiZWwudH0NCgkgICAgICA9
IGxldA0KCQkgIHZhbCB7cHJlZCwgYmxvY2ssIGRpc3RhbmNlc0IsIC4uLn0gPSBnZXRCbG9ja0lu
Zm8gbGFiZWwNCgkJaW4NCgkJICBjYXNlIExpc3QucGVlayghZGlzdGFuY2VzQiwNCgkJCQkgZm4g
KHRlbXAnLF8pID0+IE1lbUxvYy5lcSh0ZW1wLHRlbXAnKSkNCgkJICAgIG9mIFNPTUUgKF8sZGlz
dGFuY2VzKSA9PiAhZGlzdGFuY2VzDQoJCSAgICAgfCBOT05FIA0KCQkgICAgID0+IGxldA0KCQkJ
ICB2YWwgdGVtcF9kaXN0YW5jZXNCID0gcmVmIFtdDQoJCQkgIHZhbCBfID0gTGlzdC5wdXNoKGRp
c3RhbmNlc0IsIA0KCQkJCQkgICAgKHRlbXAsdGVtcF9kaXN0YW5jZXNCKSk7DQoNCgkJCSAgdmFs
IEJsb2NrLlQge3N0YXRlbWVudHMsIHRyYW5zZmVyLCAuLi59IA0KCQkJICAgID0gdmFsT2YgKCFi
bG9jaykNCg0KCQkJICBkYXRhdHlwZSB0ID0gUG9zIG9mIGludCB8IExlbmd0aCBvZiBpbnQNCgkJ
CSAgZnVuIHBvc1IgW10NCgkJCSAgICA9IGxldA0KCQkJCXZhbCB7dXNlcyxkZWZzLC4uLn0gDQoJ
CQkJICA9IFRyYW5zZmVyLnVzZXNfZGVmc19raWxscyB0cmFuc2Zlcg0KCQkJCXZhbCB7dXNlcyxk
ZWZzfSANCgkJCQkgID0gdGVtcF91c2VzX2RlZnMge3VzZXMgPSB1c2VzLA0KCQkJCQkJICAgIGRl
ZnMgPSBkZWZzfQ0KCQkJICAgICAgaW4NCgkJCQlpZiBMaXN0LmNvbnRhaW5zKHVzZXMsDQoJCQkJ
CQkgdGVtcCwNCgkJCQkJCSBNZW1Mb2MuZXEpDQoJCQkJICAgb3JlbHNlDQoJCQkJICAgTGlzdC5j
b250YWlucyhkZWZzLA0KCQkJCQkJIHRlbXAsDQoJCQkJCQkgTWVtTG9jLmVxKQ0KCQkJCSAgdGhl
biBQb3MgMQ0KCQkJCSAgZWxzZSBMZW5ndGggMg0KCQkJICAgICAgZW5kDQoJCQkgICAgfCBwb3NS
IChhc206OmFzc2VtYmx5KQ0KCQkJICAgID0gKGNhc2UgcG9zUiBhc3NlbWJseQ0KCQkJCSBvZiBQ
b3MgbiA9PiBQb3Mgbg0KCQkJCSAgfCBMZW5ndGggbg0KCQkJCSAgPT4gbGV0DQoJCQkJICAgICAg
IHZhbCB7dXNlcyxkZWZzLC4uLn0gDQoJCQkJCSA9IEFzc2VtYmx5LnVzZXNfZGVmc19raWxscyBh
c20NCgkJCQkgICAgICAgdmFsIHt1c2VzLGRlZnN9IA0KCQkJCQkgPSB0ZW1wX3VzZXNfZGVmcyB7
dXNlcyA9IHVzZXMsDQoJCQkJCQkJICAgZGVmcyA9IGRlZnN9DQoJCQkJICAgICBpbg0KCQkJCSAg
ICAgICBpZiBMaXN0LmNvbnRhaW5zKHVzZXMsDQoJCQkJCQkJdGVtcCwNCgkJCQkJCQlNZW1Mb2Mu
ZXEpDQoJCQkJCSAgb3JlbHNlDQoJCQkJCSAgTGlzdC5jb250YWlucyhkZWZzLA0KCQkJCQkJCXRl
bXAsDQoJCQkJCQkJTWVtTG9jLmVxKQ0KCQkJCQkgdGhlbiBQb3Mgbg0KCQkJCQkgZWxzZSBMZW5n
dGggKG4gKyAxKQ0KCQkJCSAgICAgZW5kKQ0KDQoJCQkgIHZhbCBkaXN0YW5jZXMNCgkJCSAgICA9
IGNhc2UgcG9zUiBzdGF0ZW1lbnRzDQoJCQkJb2YgUG9zIG4gPT4gW25dDQoJCQkJIHwgTGVuZ3Ro
IG4NCgkJCQkgPT4gTGlzdC5jb25jYXRNYXANCgkJCQkgICAgKCFwcmVkLA0KCQkJCSAgICAgZm4g
bGFiZWwNCgkJCQkgICAgICA9PiBMaXN0Lm1hcA0KCQkJCSAgICAgICAgIChnZXRfZGlzdGFuY2Vz
Qicge3RlbXAgPSB0ZW1wLA0KCQkJCQkJCSAgIGxhYmVsID0gbGFiZWx9LA0KCQkJCQkgIGZuIG0g
PT4gbSArIG4pKQ0KCQkJaW4NCgkJCSAgdGVtcF9kaXN0YW5jZXNCIDo9IGRpc3RhbmNlczsNCgkJ
CSAgZGlzdGFuY2VzDQoJCQllbmQNCgkJZW5kDQoNCgkgICAgZnVuIGdldF9kaXN0YW5jZXNCIHt0
ZW1wIDogTWVtTG9jLnQsDQoJCQkJbGFiZWwgOiBMYWJlbC50fQ0KCSAgICAgID0gbGV0DQoJCSAg
dmFsIHtwcmVkLCAuLi59ID0gZ2V0QmxvY2tJbmZvIGxhYmVsDQoNCgkJICB2YWwgZGlzdGFuY2Vz
DQoJCSAgICA9IExpc3QuY29uY2F0TWFwDQoJCSAgICAgICghcHJlZCwNCgkJICAgICAgIGZuIGxh
YmVsDQoJCSAgICAgICAgPT4gZ2V0X2Rpc3RhbmNlc0InIHt0ZW1wID0gdGVtcCwNCgkJCQkJICAg
IGxhYmVsID0gbGFiZWx9KQ0KCQlpbg0KCQkgICAgICBkaXN0YW5jZXMNCgkJZW5kDQoNCgkgICAg
dmFsIGxpdmVUcmFuc2ZlckluZm8NCgkgICAgIGFzIHtnZXQgPSBnZXRMaXZlVHJhbnNmZXJJbmZv
IDoNCgkJICAgICAgIExhYmVsLnQgLT4gKE1lbUxvYy50ICogUmVnaXN0ZXIudCkgbGlzdCwNCgkJ
IHNldCA9IHNldExpdmVUcmFuc2ZlckluZm99DQoJICAgICA9IFByb3BlcnR5LmdldFNldA0KCSAg
ICAgICAoTGFiZWwucGxpc3QsDQoJCVByb3BlcnR5LmluaXRGdW4gKGZuIGxhYmVsID0+IFtdKSkN
Cg0KCSAgICB2YWwgbGFiZWxzDQoJICAgICAgPSBMaXN0Lm1hcA0KCSAgICAgICAgKGJsb2NrcywN
CgkJIGZuIGJsb2NrJyBhcyBCbG9jay5UIHtsYWJlbCwgdHJhbnNmZXIsIC4uLn0NCgkJICA9PiBs
ZXQNCgkJICAgICAgIHZhbCB7YmxvY2ssc3VjYyxsaXZlVHJhbnNmZXJUeXBlLC4uLn0gDQoJCQkg
PSBnZXRCbG9ja0luZm8gbGFiZWwNCgkJICAgICAgIHZhbCB0YXJnZXRzID0gVHJhbnNmZXIudGFy
Z2V0cyB0cmFuc2Zlcg0KCQkgICAgIGluIA0KCQkgICAgICAgYmxvY2sgOj0gU09NRSBibG9jayc7
DQoJCSAgICAgICBzdWNjIDo9IHRhcmdldHM7DQoJCSAgICAgICAoaWYgISgoI2dldCBqdW1wSW5m
bykgbGFiZWwpID0gTXVzdA0KCQkJICB0aGVuIGxpdmVUcmFuc2ZlclR5cGUgOj0gVG9wDQoJCQkg
IGVsc2UgKCkpOw0KCQkgICAgICAgTGlzdC5mb3JlYWNoDQoJCSAgICAgICAodGFyZ2V0cywNCgkJ
CWZuIHRhcmdldCA9PiBMaXN0LnB1c2goZ2V0X3ByZWQgdGFyZ2V0LCBsYWJlbCkpOw0KCQkgICAg
ICAgKGNhc2UgdHJhbnNmZXINCgkJCSAgb2YgVHJhbnNmZXIuU3dpdGNoIHtkZWZhdWx0LCBjYXNl
cywgLi4ufQ0KCQkJICAgPT4gbGV0DQoJCQkJdmFsIGNhc2VzDQoJCQkJICA9IFRyYW5zZmVyLkNh
c2VzLm1hcCcNCgkJCQkgICAgKGNhc2VzLA0KCQkJCSAgICAgZm4gdGFyZ2V0ID0+IHRhcmdldCwN
CgkJCQkgICAgIGZuIChrLCB0YXJnZXQpID0+IHRhcmdldCwNCgkJCQkgICAgIGZuIChrLCB0YXJn
ZXQpID0+IHRhcmdldCwNCgkJCQkgICAgIGZuIChrLCB0YXJnZXQpID0+IHRhcmdldCkNCgkJCSAg
ICAgIGluDQoJCQkJKGpvaW5fbGl2ZVRyYW5zZmVyVHlwZSAoZGVmYXVsdCwgDQoJCQkJCQkJRGVm
YXVsdCBjYXNlcyk7DQoJCQkJIExpc3QuZm9yZWFjaA0KCQkJCSAoY2FzZXMsDQoJCQkJICBmbiB0
YXJnZXQgDQoJCQkJICAgPT4gam9pbl9saXZlVHJhbnNmZXJUeXBlICh0YXJnZXQsIA0KCQkJCQkJ
CSAgICAgQ2FzZSBkZWZhdWx0KSkpDQoJCQkgICAgICBlbmQNCgkJCSAgIHwgXyA9PiAoKSk7DQoJ
CSAgICAgICBsYWJlbA0KCQkgICAgIGVuZCkNCg0KCSAgICBmdW4gZG9pdCBsYWJlbA0KCSAgICAg
ID0gbGV0DQoJCSAgdmFsIGxpdmVJbl9kaXN0YW5jZQ0KCQkgICAgPSBMaXN0LmtlZXBBbGxNYXAN
CgkJICAgICAgKCgjZ2V0IGxpdmVJbmZvKSBsYWJlbCwNCgkJICAgICAgIGZuIHRlbXANCgkJICAg
ICAgICA9PiBpZiBMaXN0LmV4aXN0cw0KCQkgICAgICAgICAgICAgICh0cmFuc2ZlclJlZ3MsDQoJ
CQkgICAgICAgZm4gcmVnaXN0ZXINCgkJCSAgICAgICAgPT4gTWVtTG9jLnNpemUgdGVtcCA9IFJl
Z2lzdGVyLnNpemUgcmVnaXN0ZXIpDQoJCQkgICAgIHRoZW4gbGV0DQoJCQkJICAgIHZhbCBkaXN0
YW5jZXNGDQoJCQkJICAgICAgPSBnZXRfZGlzdGFuY2VzRiB7dGVtcCA9IHRlbXAsDQoJCQkJCQkJ
bGFiZWwgPSBsYWJlbH0NCgkJCQkgICAgdmFsIGRpc3RhbmNlc0INCgkJCQkgICAgICA9IGdldF9k
aXN0YW5jZXNCIHt0ZW1wID0gdGVtcCwNCgkJCQkJCQlsYWJlbCA9IGxhYmVsfQ0KDQoJCQkJICAg
IHZhbCAodG90YWwsbnVtKQ0KCQkJCSAgICAgID0gTGlzdC5mb2xkDQoJCQkJICAgICAgICAoZGlz
dGFuY2VzRiwNCgkJCQkJICgwLDApLA0KCQkJCQkgZm4gKGRpc3RhbmNlRiwodG90YWwsbnVtKSkN
CgkJCQkJICA9PiBMaXN0LmZvbGQNCgkJCQkJICAgICAoZGlzdGFuY2VzQiwNCgkJCQkJICAgICAg
KHRvdGFsLG51bSksDQoJCQkJCSAgICAgIGZuIChkaXN0YW5jZUIsKHRvdGFsLG51bSkpDQoJCQkJ
CSAgICAgICA9PiAodG90YWwgDQoJCQkJCQkgICArIGRpc3RhbmNlRg0KCQkJCQkJICAgKyBkaXN0
YW5jZUIsIA0KCQkJCQkJICAgbnVtICsgMSkpKQ0KCQkJCSAgaW4NCgkJCQkgICAgU09NRSAodGVt
cCwgdG90YWwgZGl2IG51bSkNCgkJCQkgIGVuZA0KCQkJICAgICBlbHNlIE5PTkUpDQoNCgkJICB2
YWwgbGl2ZUluX2Rpc3RhbmNlX3NvcnRlZA0KCQkgICAgPSBMaXN0Lmluc2VydGlvblNvcnQNCgkJ
ICAgICAgKGxpdmVJbl9kaXN0YW5jZSwNCgkJICAgICAgIGZuICgoXyxkaXN0YW5jZTEpLChfLGRp
c3RhbmNlMikpIA0KCQkgICAgICAgID0+IGRpc3RhbmNlMSA8IGRpc3RhbmNlMikNCg0KCQkgIHZh
bCBsaXZlSW4gPSBMaXN0Lm1hcChsaXZlSW5fZGlzdGFuY2Vfc29ydGVkLCAjMSkNCg0KCQkgIHZh
bCAoXyxsaXZlVHJhbnNmZXIpDQoJCSAgICA9IExpc3QuZm9sZA0KCQkgICAgICAobGl2ZUluLA0K
CQkgICAgICAgKHRyYW5zZmVyUmVncyxbXSksDQoJCSAgICAgICBmbiAodGVtcCwodHJhbnNmZXJS
ZWdzLGxpdmVUcmFuc2ZlcikpDQoJCSAgICAgICAgPT4gY2FzZSBMaXN0LnBlZWsNCgkJICAgICAg
ICAgICAgICAgICh0cmFuc2ZlclJlZ3MsDQoJCQkJIGZuIHJlZ2lzdGVyIA0KCQkJCSAgPT4gTWVt
TG9jLnNpemUgdGVtcCA9IFJlZ2lzdGVyLnNpemUgcmVnaXN0ZXIpDQoJCQkgICAgIG9mIFNPTUUg
cmVnaXN0ZXINCgkJCSAgICAgID0+IChMaXN0LnJlbW92ZUFsbA0KCQkJCSAgKHRyYW5zZmVyUmVn
cywNCgkJCQkgICBmbiByZWdpc3RlcicNCgkJCQkgICAgPT4gUmVnaXN0ZXIuY29pbmNpZGUocmVn
aXN0ZXIsDQoJCQkJCQkJIHJlZ2lzdGVyJykpLA0KCQkJCSAgKHRlbXAscmVnaXN0ZXIpOjpsaXZl
VHJhbnNmZXIpDQoJCQkgICAgICB8IE5PTkUgPT4gKHRyYW5zZmVyUmVncyxsaXZlVHJhbnNmZXIp
KQ0KCQlpbg0KCQkgIHNldExpdmVUcmFuc2ZlckluZm8obGFiZWwsIGxpdmVUcmFuc2ZlcikNCgkJ
ZW5kDQoNCgkgICAgZnVuIGRvaXQnIGxhYmVscw0KCSAgICAgID0gbGV0DQoJCSAgdmFsIGxpdmVJ
bl9kaXN0YW5jZScnDQoJCSAgICA9IExpc3QuY29uY2F0TWFwDQoJCSAgICAgIChsYWJlbHMsDQoJ
CSAgICAgICBmbiBsYWJlbCANCgkJICAgICAgICA9PiBMaXN0LmtlZXBBbGxNYXANCgkJICAgICAg
ICAgICAoKCNnZXQgbGl2ZUluZm8pIGxhYmVsLA0KCQkJICAgIGZuIHRlbXANCgkJCSAgICAgPT4g
aWYgTGlzdC5leGlzdHMNCgkJCSAgICAgICAgICAgKHRyYW5zZmVyUmVncywNCgkJCQkgICAgZm4g
cmVnaXN0ZXINCgkJCQkgICAgID0+IE1lbUxvYy5zaXplIHRlbXAgPSBSZWdpc3Rlci5zaXplIHJl
Z2lzdGVyKQ0KCQkJCSAgdGhlbiBsZXQNCgkJCQkJIHZhbCBkaXN0YW5jZXNGDQoJCQkJCSAgID0g
Z2V0X2Rpc3RhbmNlc0Yge3RlbXAgPSB0ZW1wLA0KCQkJCQkJCSAgICAgbGFiZWwgPSBsYWJlbH0N
CgkJCQkJIHZhbCBkaXN0YW5jZXNCDQoJCQkJCSAgID0gZ2V0X2Rpc3RhbmNlc0Ige3RlbXAgPSB0
ZW1wLA0KCQkJCQkJCSAgICAgbGFiZWwgPSBsYWJlbH0NCgkJCQkJICAgDQoJCQkJCSB2YWwgKHRv
dGFsLG51bSkNCgkJCQkJICAgPSBMaXN0LmZvbGQNCgkJCQkJICAgICAoZGlzdGFuY2VzRiwNCgkJ
CQkJICAgICAgKDAsMCksDQoJCQkJCSAgICAgIGZuIChkaXN0YW5jZUYsKHRvdGFsLG51bSkpDQoJ
CQkJCSAgICAgICA9PiBMaXN0LmZvbGQNCgkJCQkJICAgICAgICAgIChkaXN0YW5jZXNCLA0KCQkJ
CQkJICAgKHRvdGFsLG51bSksDQoJCQkJCQkgICBmbiAoZGlzdGFuY2VCLCh0b3RhbCxudW0pKQ0K
CQkJCQkJICAgPT4gKHRvdGFsIA0KCQkJCQkJICAgICAgICsgZGlzdGFuY2VGDQoJCQkJCQkgICAg
ICAgKyBkaXN0YW5jZUIsIA0KCQkJCQkJICAgICAgIG51bSArIDEpKSkNCgkJCQkgICAgICAgaW4N
CgkJCQkJIFNPTUUgKHRlbXAsIHRvdGFsIGRpdiBudW0pDQoJCQkJICAgICAgIGVuZA0KCQkJCSAg
ZWxzZSBOT05FKSkNCg0KCQkgIHZhbCBsaXZlSW5fZGlzdGFuY2UnDQoJCSAgICA9IExpc3QuZm9s
ZA0KCQkgICAgICAobGl2ZUluX2Rpc3RhbmNlJycsDQoJCSAgICAgICBbXSwNCgkJICAgICAgIGZu
ICgodGVtcCxkaXN0YW5jZSksbGl2ZUluX2Rpc3RhbmNlJykNCgkJICAgICAgICA9PiBsZXQNCgkJ
CSAgICAgdmFsIHJlYyBhZGQNCgkJCSAgICAgICA9IGZuIFtdID0+IFsodGVtcCxkaXN0YW5jZSwx
KV0NCgkJCSAgICAgICAgICB8ICh0ZW1wJyxkaXN0YW5jZScsbnVtJyk6OmxpdmVJbl9kaXN0YW5j
ZScNCgkJCSAgICAgICAgICA9PiBpZiBNZW1Mb2MuZXEodGVtcCwgdGVtcCcpDQoJCQkJICAgICAg
IHRoZW4gKHRlbXAnLA0KCQkJCQkgICAgIGRpc3RhbmNlJyArIGRpc3RhbmNlLA0KCQkJCQkgICAg
IG51bScgKyAxKTo6DQoJCQkJCSAgICBsaXZlSW5fZGlzdGFuY2UnDQoJCQkJICAgICAgIGVsc2Ug
KHRlbXAnLA0KCQkJCQkgICAgIGRpc3RhbmNlJywNCgkJCQkJICAgICBudW0nKTo6DQoJCQkJCSAg
ICAoYWRkIGxpdmVJbl9kaXN0YW5jZScpDQoJCQkgICBpbg0KCQkJICAgICBhZGQgbGl2ZUluX2Rp
c3RhbmNlJw0KCQkJICAgZW5kKQ0KDQoJCSAgdmFsIGxpdmVJbl9kaXN0YW5jZQ0KCQkgICAgPSBM
aXN0Lm1hcA0KCQkgICAgICAobGl2ZUluX2Rpc3RhbmNlJywNCgkJICAgICAgIGZuICh0ZW1wLGRp
c3RhbmNlLG51bSkgPT4gKHRlbXAsIGRpc3RhbmNlIGRpdiBudW0pKQ0KDQoJCSAgdmFsIGxpdmVJ
bl9kaXN0YW5jZV9zb3J0ZWQNCgkJICAgID0gTGlzdC5pbnNlcnRpb25Tb3J0DQoJCSAgICAgIChs
aXZlSW5fZGlzdGFuY2UsDQoJCSAgICAgICBmbiAoKF8sZGlzdGFuY2UxKSwoXyxkaXN0YW5jZTIp
KSANCgkJICAgICAgICA9PiBkaXN0YW5jZTEgPCBkaXN0YW5jZTIpDQoNCgkJICB2YWwgbGl2ZUlu
ID0gTGlzdC5tYXAobGl2ZUluX2Rpc3RhbmNlX3NvcnRlZCwgIzEpDQoNCgkJICB2YWwgKF8sbGl2
ZVRyYW5zZmVyKQ0KCQkgICAgPSBMaXN0LmZvbGQNCgkJICAgICAgKGxpdmVJbiwNCgkJICAgICAg
ICh0cmFuc2ZlclJlZ3MsW10pLA0KCQkgICAgICAgZm4gKHRlbXAsKHRyYW5zZmVyUmVncyxsaXZl
VHJhbnNmZXIpKQ0KCQkgICAgICAgID0+IGNhc2UgTGlzdC5wZWVrDQoJCSAgICAgICAgICAgICAg
ICAodHJhbnNmZXJSZWdzLA0KCQkJCSBmbiByZWdpc3RlciANCgkJCQkgID0+IE1lbUxvYy5zaXpl
IHRlbXAgPSBSZWdpc3Rlci5zaXplIHJlZ2lzdGVyKQ0KCQkJICAgICBvZiBTT01FIHJlZ2lzdGVy
DQoJCQkgICAgICA9PiAoTGlzdC5yZW1vdmVBbGwNCgkJCQkgICh0cmFuc2ZlclJlZ3MsDQoJCQkJ
ICAgZm4gcmVnaXN0ZXInDQoJCQkJICAgID0+IFJlZ2lzdGVyLmNvaW5jaWRlKHJlZ2lzdGVyLA0K
CQkJCQkJCSByZWdpc3RlcicpKSwNCgkJCQkgICh0ZW1wLHJlZ2lzdGVyKTo6bGl2ZVRyYW5zZmVy
KQ0KCQkJICAgICAgfCBOT05FID0+ICh0cmFuc2ZlclJlZ3MsbGl2ZVRyYW5zZmVyKSkNCgkJaW4N
CgkJICBMaXN0LmZvcmVhY2gNCgkJICAobGFiZWxzLA0KCQkgICBmbiBsYWJlbA0KCQkgICAgPT4g
bGV0DQoJCQkgdmFsIGxpdmVJbiA9ICgjZ2V0IGxpdmVJbmZvKSBsYWJlbA0KDQoJCQkgdmFsIGxp
dmVUcmFuc2Zlcg0KCQkJICAgPSBMaXN0LmtlZXBBbGwNCgkJCSAgICAgKGxpdmVUcmFuc2ZlciwN
CgkJCSAgICAgIGZuICh0ZW1wLHJlZ2lzdGVyKQ0KCQkJICAgICAgID0+IExpc3QuY29udGFpbnMo
bGl2ZUluLA0KCQkJCQkJdGVtcCwNCgkJCQkJCU1lbUxvYy5lcSkpDQoJCSAgICAgICBpbg0KCQkJ
IHNldExpdmVUcmFuc2ZlckluZm8obGFiZWwsIGxpdmVUcmFuc2ZlcikNCgkJICAgICAgIGVuZCkN
CgkJZW5kDQoNCgkgICAgdmFsIF8NCgkgICAgICA9IExpc3QuZm9yZWFjaA0KCSAgICAgICAgKGxh
YmVscywNCgkJIGZuIGxhYmVsDQoJCSAgPT4gY2FzZSAhKGdldF9saXZlVHJhbnNmZXJUeXBlIGxh
YmVsKQ0KCQkgICAgICAgb2YgTm9ybWFsID0+IGRvaXQgbGFiZWwNCgkJCXwgRGVmYXVsdCBsYWJl
bHMNCgkJCT0+IGlmIExpc3QuZm9yYWxsDQoJCQkgICAgICAobGFiZWxzLA0KCQkJICAgICAgIGZu
IGxhYmVsJyANCgkJCSAgICAgICAgPT4gY2FzZSAhKGdldF9saXZlVHJhbnNmZXJUeXBlIGxhYmVs
JykNCgkJCQkgICAgIG9mIENhc2UgbGFiZWwnJyANCgkJCQkgICAgICA9PiBMYWJlbC5lcXVhbHMo
bGFiZWwsbGFiZWwnJykNCgkJCQkgICAgICB8IF8gPT4gZmFsc2UpDQoJCQkgICAgIHRoZW4gZG9p
dCcgKGxhYmVsOjpsYWJlbHMpDQoJCQkgICAgIGVsc2Ugc2V0TGl2ZVRyYW5zZmVySW5mbyhsYWJl
bCwgW10pDQoJCQl8IENhc2UgbGFiZWwnID0+ICgpDQoJCQl8IFRvcCA9PiBzZXRMaXZlVHJhbnNm
ZXJJbmZvKGxhYmVsLCBbXSkpDQoJICBpbg0KCSAgICBsaXZlVHJhbnNmZXJJbmZvDQoJICBlbmQN
Cg0KICAgICAgdmFsIChjb21wdXRlTGl2ZVRyYW5zZmVySW5mbywgY29tcHV0ZUxpdmVUcmFuc2Zl
ckluZm9fbXNnKQ0KCT0gdHJhY2VyDQoJICAiY29tcHV0ZUxpdmVUcmFuc2ZlckluZm8iDQoJICBj
b21wdXRlTGl2ZVRyYW5zZmVySW5mbw0KDQogICAgICBmdW4gY29tcHV0ZU5vTGl2ZVRyYW5zZmVy
SW5mbyAoKQ0KCT0gbGV0DQoJICAgIHZhbCBsaXZlVHJhbnNmZXJJbmZvDQoJICAgICBhcyB7Z2V0
ID0gZ2V0TGl2ZVRyYW5zZmVySW5mbyA6DQoJCSAgICAgICBMYWJlbC50IC0+IChNZW1Mb2MudCAq
IFJlZ2lzdGVyLnQpIGxpc3QsDQoJCSBzZXQgPSBzZXRMaXZlVHJhbnNmZXJJbmZvfQ0KCSAgICAg
PSBQcm9wZXJ0eS5nZXRTZXQNCgkgICAgICAgKExhYmVsLnBsaXN0LA0KCQlQcm9wZXJ0eS5pbml0
RnVuIChmbiBsYWJlbCA9PiBbXSkpDQoJICBpbg0KCSAgICBsaXZlVHJhbnNmZXJJbmZvDQoJICBl
bmQNCiAgICBlbmQNCg0KICBzdHJ1Y3R1cmUgR2VuZXJhdGVUcmFuc2ZlcnMgPQ0KICAgIHN0cnVj
dA0KICAgICAgb3BlbiBUcmFuc2Zlcg0KICAgICAgb3BlbiBKdW1wSW5mbw0KDQogICAgICBkYXRh
dHlwZSBnZWYgPSBHRUYgb2Yge2dlbmVyYXRlIDogZ2VmIC0+IA0KCQkJICAgICAgICAgICAgICAg
IHtsYWJlbCA6IExhYmVsLnQsDQoJCQkJCSBiZWdpbiA6IGJvb2wsDQoJCQkJCSBhbGlnbiA6IGJv
b2x9IC0+IA0KCQkJCQlBc3NlbWJseS50IGxpc3QsDQoJCQkgICAgIGVmZmVjdCA6IGdlZiAtPiAN
CgkJCSAgICAgICAgICAgICAge3RyYW5zZmVyIDogVHJhbnNmZXIudCwNCgkJCQkgICAgICAgcHJv
ZmlsZV9lbmQgOiBBc3NlbWJseS50IGxpc3R9IC0+DQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEFzc2VtYmx5LnQgbGlzdCwNCgkJCSAgICAgZmFsbCA6IGdlZiAtPg0KCQkJ
ICAgICAgICAgICAge3Byb2ZpbGVfZW5kIDogQXNzZW1ibHkudCBsaXN0LA0KCQkJCSAgICAgbGFi
ZWwgOiBMYWJlbC50LA0KCQkJCSAgICAgbGl2ZSA6IE1lbUxvYy50IGxpc3R9IC0+DQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBc3NlbWJseS50IGxpc3R9DQoNCiAgICAgIGZ1
biBnZW5lcmF0ZVRyYW5zZmVycyB7YmxvY2tzIDogQmxvY2sudCBsaXN0LA0KCQkJICAgICBleHBv
cnRzIDogTGFiZWwudCBsaXN0LA0KCQkJICAgICBvcHRpbWl6ZTogaW50LA0KCQkJICAgICBibG9j
a19wcmUgOiBMYWJlbC50IC0+IEFzc2VtYmx5LnQgbGlzdCBvcHRpb24sDQoJCQkgICAgIGJsb2Nr
X2JlZ2luIDogQXNzZW1ibHkudCBsaXN0LA0KCQkJICAgICBibG9ja19lbmQgOiBBc3NlbWJseS50
IGxpc3QsDQoJCQkgICAgIGJsb2NrX2ZhbGwgOiBBc3NlbWJseS50IGxpc3QsDQoJCQkgICAgIHRy
YW5zZmVyUmVncyA6IFJlZ2lzdGVyLnQgbGlzdCwNCgkJCSAgICAgbGl2ZUluZm8gOiB7Z2V0IDog
TGFiZWwudCAtPiBNZW1Mb2MudCBsaXN0LA0KCQkJCQkgc2V0IDogTGFiZWwudCAqIE1lbUxvYy50
IGxpc3QgDQoJCQkJCSAgICAgICAtPiB1bml0fSwNCgkJCSAgICAganVtcEluZm8gOiB7Z2V0OiBM
YWJlbC50IC0+IHN0YXR1cyByZWZ9fQ0KCT0gbGV0DQoJICAgIHZhbCBsaXZlVHJhbnNmZXJJbmZv
DQoJICAgICAgPSBpZiAhQ29udHJvbC5OYXRpdmUubGl2ZVRyYW5zZmVyDQoJCSAgdGhlbiBMaXZl
VHJhbnNmZXJJbmZvLmNvbXB1dGVMaXZlVHJhbnNmZXJJbmZvDQoJCSAgICAgICB7YmxvY2tzID0g
YmxvY2tzLA0KCQkJdHJhbnNmZXJSZWdzID0gdHJhbnNmZXJSZWdzLA0KCQkJbGl2ZUluZm8gPSBs
aXZlSW5mbywNCgkJCWp1bXBJbmZvID0ganVtcEluZm99DQoJCSAgZWxzZSBMaXZlVHJhbnNmZXJJ
bmZvLmNvbXB1dGVOb0xpdmVUcmFuc2ZlckluZm8gKCkNCg0KCSAgICB2YWwgbGF5b3V0SW5mbyBh
cyB7Z2V0IDogTGFiZWwudCAtPiBCbG9jay50IG9wdGlvbiwNCgkJCSAgICAgICBzZXR9DQoJICAg
ICAgPSBQcm9wZXJ0eS5nZXRTZXQoTGFiZWwucGxpc3QsIFByb3BlcnR5LmluaXRDb25zdCBOT05F
KQ0KDQoJICAgIHZhbCBfIA0KCSAgICAgID0gTGlzdC5mb3JlYWNoDQoJICAgICAgICAoYmxvY2tz
LA0KCQkgZm4gYmxvY2sgYXMgQmxvY2suVCB7bGFiZWwsLi4ufQ0KCQkgID0+IHNldChsYWJlbCwg
U09NRSBibG9jaykpDQoNCgkgICAgbG9jYWwNCgkgICAgICB2YWwgcXVldWUgPSByZWYgKFF1ZXVl
LmVtcHR5ICgpKQ0KCSAgICBpbg0KCSAgICAgIGZ1biBlbnF1ZSB4ID0gcXVldWUgOj0gUXVldWUu
ZW5xdWUoIXF1ZXVlLCB4KQ0KCSAgICAgIGZ1biBkZXF1ZSAoKSA9IGNhc2UgUXVldWUuZGVxdWUo
IXF1ZXVlKQ0KCQkJICAgICAgIG9mIE5PTkUgPT4gTk9ORQ0KCQkJCXwgU09NRSh4LCBxdWV1ZScp
ID0+IChxdWV1ZSA6PSBxdWV1ZSc7DQoJCQkJCQkgICAgICBTT01FIHgpDQoJICAgIGVuZA0KDQoJ
ICAgIGZ1biBnZW5lcmF0ZUFsbCAoZ2VmIGFzIEdFRiB7Z2VuZXJhdGUsZWZmZWN0LGZhbGx9KQ0K
CSAgICAgICAgICAgICAgICAgICAge2xhYmVsLCBiZWdpbiwgYWxpZ259IDogQXNzZW1ibHkudCBs
aXN0DQoJICAgICAgPSAoY2FzZSBnZXQgbGFiZWwNCgkJICAgb2YgTk9ORSA9PiBbXQ0KCQkgICAg
fCBTT01FIChCbG9jay5UIHtsYWJlbCwgcHJvZmlsZUluZm8sDQoJCQkJICAgICBzdGF0ZW1lbnRz
LCB0cmFuc2Zlcn0pDQoJCSAgICA9PiBsZXQNCgkJCSB2YWwgXyA9IHNldChsYWJlbCwgTk9ORSkN
Cg0KCQkJIHZhbCAocHJvZmlsZV9iZWdpbixwcm9maWxlX2VuZCkNCgkJCSAgID0gUHJvZmlsZUlu
Zm8ucHJvZmlsZV9iZWdpbl9lbmQgcHJvZmlsZUluZm8NCg0KCQkJIHZhbCBwcmUgDQoJCQkgICA9
IGlmIGJlZ2luDQoJCQkgICAgICAgdGhlbiAoKGZuIGwNCgkJCQkgICAgICAgPT4gaWYgYWxpZ24N
CgkJCQkJICAgIHRoZW4gKEFzc2VtYmx5LnBzZXVkb29wX3AyYWxpZ24gMik6Og0KCQkJCQkgICAg
ICAgICBsDQoJCQkJCSAgICBlbHNlIGwpIG8NCgkJCQkgICAgIChmbiBsDQoJCQkJICAgICAgID0+
IGlmIExpc3QuY29udGFpbnMoZXhwb3J0cywNCgkJCQkJCQkgICBsYWJlbCwNCgkJCQkJCQkgICBM
YWJlbC5lcXVhbHMpDQoJCQkJCSAgICB0aGVuIChBc3NlbWJseS5wc2V1ZG9vcF9nbG9iYWwgbGFi
ZWwpOjoNCgkJCQkJICAgICAgICAgbA0KCQkJCQkgICAgZWxzZSBsKSBvDQoJCQkJICAgICAoZm4g
bA0KCQkJCSAgICAgICA9PiBjYXNlIGJsb2NrX3ByZSBsYWJlbA0KCQkJCQkgICAgb2YgTk9ORSA9
PiBsDQoJCQkJCSAgICAgfCBTT01FIGFzc2VtYmx5ID0+IExpc3QuY29uY2F0DQoJCQkJCSAgICAg
ICAgICAgICAgICAgICAgICAgIFthc3NlbWJseSwgbF0pKQ0KCQkJCSAgICAoKEFzc2VtYmx5Lmxh
YmVsIGxhYmVsKTo6DQoJCQkJICAgICAoTGlzdC5mb2xkDQoJCQkJICAgICAgKCgjZ2V0IGxpdmVU
cmFuc2ZlckluZm8pIGxhYmVsLA0KCQkJCSAgICAgICBibG9ja19iZWdpbiwNCgkJCQkgICAgICAg
Zm4gKCh0ZW1wLHJlZ2lzdGVyKSxibG9ja19iZWdpbikNCgkJCQkgICAgICAgID0+ICh4ODYuQXNz
ZW1ibHkuZGlyZWN0aXZlX2Fzc3VtZQ0KCQkJCQkgICAge3JlZ2lzdGVyID0gcmVnaXN0ZXIsDQoJ
CQkJCSAgICAgbWVtbG9jID0gdGVtcCwNCgkJCQkJICAgICB3ZWlnaHQgPSAxMDI0LA0KCQkJCQkg
ICAgIHN5bmMgPSBmYWxzZSwNCgkJCQkJICAgICByZXNlcnZlID0gZmFsc2V9KTo6DQoJCQkJICAg
ICAgICAgICBibG9ja19iZWdpbikpKQ0KCQkJICAgICAgIGVsc2UgW10NCg0KCQkJIHZhbCBzdGF0
ZW1lbnRzID0gc3RhdGVtZW50cw0KDQoJCQkgdmFsIHBvc3QgDQoJCQkgICA9IExpc3QuY29uY2F0
IFtibG9ja19lbmQsIA0KCQkJCQkgIFtBc3NlbWJseS5kaXJlY3RpdmVfZmx1c2ggKCldXQ0KDQoJ
CQkgdmFsIHRyYW5zZmVyID0gZWZmZWN0IGdlZiB7dHJhbnNmZXIgPSB0cmFuc2ZlciwNCgkJCQkJ
CSAgICBwcm9maWxlX2VuZCA9IHByb2ZpbGVfZW5kfQ0KCQkgICAgICAgaW4NCgkJCSBMaXN0LmNv
bmNhdCBbcHJvZmlsZV9iZWdpbiwNCgkJCQkgICAgICBwcmUsDQoJCQkJICAgICAgc3RhdGVtZW50
cywNCgkJCQkgICAgICBwb3N0LA0KCQkJCSAgICAgIHRyYW5zZmVyXQ0KCQkgICAgICAgZW5kKQ0K
DQoJICAgIGZ1biBlZmZlY3REZWZhdWx0IChnZWYgYXMgR0VGIHtnZW5lcmF0ZSxlZmZlY3QsZmFs
bH0pDQoJICAgICAgICAgICAgICAgICAgICAgIHt0cmFuc2ZlciwgcHJvZmlsZV9lbmR9IDogQXNz
ZW1ibHkudCBsaXN0DQoJICAgICAgPSAoY2FzZSB0cmFuc2Zlcg0KCQkgICBvZiBBc3NlbWJseSBh
c3NlbWJseSANCgkJICAgID0+IExpc3QuY29uY2F0IFthc3NlbWJseSwgcHJvZmlsZV9lbmRdDQoJ
ICAgICAgICAgICAgfCBHb3RvIHt0YXJnZXR9DQoJCSAgICA9PiBmYWxsIGdlZg0KCQkgICAgICAg
ICAgICB7cHJvZmlsZV9lbmQgPSBwcm9maWxlX2VuZCwNCgkJCSAgICAgbGFiZWwgPSB0YXJnZXQs
DQoJCQkgICAgIGxpdmUgPSAoI2dldCBsaXZlSW5mbykgdGFyZ2V0fQ0KCQkgICAgfCBJZmYge2Nv
bmRpdGlvbiwgdHJ1ZWUsIGZhbHNlZX0NCgkJICAgID0+IGxldA0KCQkJIHZhbCBjb25kaXRpb25f
bmVnIA0KCQkJICAgPSBJbnN0cnVjdGlvbi5jb25kaXRpb25fbmVnYXRlIGNvbmRpdGlvbg0KCQkJ
ICAgDQoJCQkgdmFsIHRydWVlX2xpdmUgPSAoI2dldCBsaXZlSW5mbykgdHJ1ZWUNCgkJCSB2YWwg
dHJ1ZWVfbGl2ZVRyYW5zZmVyIA0KCQkJICAgPSAoI2dldCBsaXZlVHJhbnNmZXJJbmZvKSB0cnVl
ZQ0KCQkJIHZhbCB0cnVlZV9saXZlDQoJCQkgICA9IExpc3QucmVtb3ZlQWxsDQoJCQkgICAgICh0
cnVlZV9saXZlLA0KCQkJICAgICAgZm4gdGVtcCA9PiBMaXN0LmV4aXN0cw0KCQkJICAgICAgICAg
ICAgICAgICAodHJ1ZWVfbGl2ZVRyYW5zZmVyLA0KCQkJCQkgIGZuICh0ZW1wJyxfKSANCgkJCQkJ
ICAgPT4gTWVtTG9jLmVxKHRlbXAsIHRlbXAnKSkpDQoNCgkJCSB2YWwgZmFsc2VlX2xpdmUgPSAo
I2dldCBsaXZlSW5mbykgZmFsc2VlDQoJCQkgdmFsIGZhbHNlZV9saXZlVHJhbnNmZXINCgkJCSAg
ID0gKCNnZXQgbGl2ZVRyYW5zZmVySW5mbykgZmFsc2VlDQoJCQkgdmFsIGZhbHNlZV9saXZlDQoJ
CQkgICA9IExpc3QucmVtb3ZlQWxsDQoJCQkgICAgIChmYWxzZWVfbGl2ZSwNCgkJCSAgICAgIGZu
IHRlbXAgPT4gTGlzdC5leGlzdHMNCgkJCSAgICAgICAgICAgICAgICAgKGZhbHNlZV9saXZlVHJh
bnNmZXIsDQoJCQkJCSAgZm4gKHRlbXAnLF8pIA0KCQkJCQkgICA9PiBNZW1Mb2MuZXEodGVtcCwg
dGVtcCcpKSkNCg0KCQkJIHZhbCBjb21tb25fbGl2ZQ0KCQkJICAgPSBMaXN0LmtlZXBBbGwodHJ1
ZWVfbGl2ZSwNCgkJCQkJICBmbiB0ZW1wDQoJCQkJCSAgID0+IExpc3QuY29udGFpbnMoZmFsc2Vl
X2xpdmUsDQoJCQkJCQkJICAgIHRlbXAsDQoJCQkJCQkJICAgIE1lbUxvYy5lcSkpDQoNCgkJCSB2
YWwgKHRydWVlX2xpdmUsdHJ1ZWVfbGl2ZV9sZW5ndGgpDQoJCQkgICA9IExpc3QuZm9sZA0KCQkJ
ICAgICAodHJ1ZWVfbGl2ZSwNCgkJCSAgICAgIChbXSwwKSwNCgkJCSAgICAgIGZuICh0ZW1wLCh0
cnVlZV9saXZlLHRydWVlX2xpdmVfbGVuZ3RoKSkNCgkJCSAgICAgICA9PiBpZiBMaXN0LmNvbnRh
aW5zKGNvbW1vbl9saXZlLA0KCQkJCQkJICAgdGVtcCwNCgkJCQkJCSAgIE1lbUxvYy5lcSkNCgkJ
CQkgICAgdGhlbiAodHJ1ZWVfbGl2ZSx0cnVlZV9saXZlX2xlbmd0aCkNCgkJCQkgICAgZWxzZSAo
dGVtcDo6dHJ1ZWVfbGl2ZSwNCgkJCQkJICAxICsgdHJ1ZWVfbGl2ZV9sZW5ndGgpKQ0KCQkJIHZh
bCB0cnVlZV9saXZlX2xlbmd0aA0KCQkJICAgPSB0cnVlZV9saXZlX2xlbmd0aCArIA0KCQkJICAg
ICAoTGlzdC5sZW5ndGggdHJ1ZWVfbGl2ZVRyYW5zZmVyKQ0KCQkJICAgDQoNCgkJCSB2YWwgKGZh
bHNlZV9saXZlLGZhbHNlZV9saXZlX2xlbmd0aCkNCgkJCSAgID0gTGlzdC5mb2xkDQoJCQkgICAg
IChmYWxzZWVfbGl2ZSwNCgkJCSAgICAgIChbXSwwKSwNCgkJCSAgICAgIGZuICh0ZW1wLChmYWxz
ZWVfbGl2ZSxmYWxzZWVfbGl2ZV9sZW5ndGgpKQ0KCQkJICAgICAgID0+IGlmIExpc3QuY29udGFp
bnMoY29tbW9uX2xpdmUsDQoJCQkJCQkgICB0ZW1wLA0KCQkJCQkJICAgTWVtTG9jLmVxKQ0KCQkJ
CSAgICB0aGVuIChmYWxzZWVfbGl2ZSxmYWxzZWVfbGl2ZV9sZW5ndGgpDQoJCQkJICAgIGVsc2Ug
KHRlbXA6OmZhbHNlZV9saXZlLA0KCQkJCQkgIDEgKyBmYWxzZWVfbGl2ZV9sZW5ndGgpKQ0KCQkJ
IHZhbCBmYWxzZWVfbGl2ZV9sZW5ndGgNCgkJCSAgID0gZmFsc2VlX2xpdmVfbGVuZ3RoICsgDQoJ
CQkgICAgIChMaXN0Lmxlbmd0aCBmYWxzZWVfbGl2ZVRyYW5zZmVyKQ0KDQoJCQkgZnVuIGZhbGxf
dHJ1ZWUgKCkNCgkJCSAgID0gKGVucXVlIGZhbHNlZTsNCgkJCSAgICAgIExpc3QuY29uY2F0DQoJ
CQkgICAgICBbKEFzc2VtYmx5LmRpcmVjdGl2ZV9jb21taXQgDQoJCQkJe21lbWxvY3MgPSBMaXN0
LmNvbmNhdCBbY29tbW9uX2xpdmUsIA0KCQkJCQkJCWZhbHNlZV9saXZlXX0pOjoNCgkJCSAgICAg
ICAoTGlzdC5tYXANCgkJCQkoZmFsc2VlX2xpdmVUcmFuc2ZlciwNCgkJCQkgZm4gKHRlbXAscmVn
aXN0ZXIpDQoJCQkJICA9PiBBc3NlbWJseS5kaXJlY3RpdmVfY2FjaGUNCgkJCQkgICAgIHtyZWdp
c3RlciA9IHJlZ2lzdGVyLA0KCQkJCSAgICAgIG1lbWxvYyA9IHRlbXAsDQoJCQkJICAgICAgcmVz
ZXJ2ZSA9IGZhbHNlfSkpLA0KCQkJICAgICAgIChBc3NlbWJseS5pbnN0cnVjdGlvbl9qY2MNCgkJ
CQl7Y29uZGl0aW9uID0gY29uZGl0aW9uX25lZywNCgkJCQkgdGFyZ2V0ID0gT3BlcmFuZC5sYWJl
bCBmYWxzZWV9KTo6DQoJCQkgICAgICAgKGZhbGwgZ2VmIA0KIAkJCSAgICAgICAgICAgICB7cHJv
ZmlsZV9lbmQgPSBwcm9maWxlX2VuZCwNCgkJCQkgICAgICBsYWJlbCA9IHRydWVlLA0KCQkJCSAg
ICAgIGxpdmUgPSB0cnVlZV9saXZlfSldKQ0KDQoJCQkgZnVuIGZhbGxfZmFsc2VlICgpDQoJCQkg
ICA9IChlbnF1ZSB0cnVlZTsNCgkJCSAgICAgIExpc3QuY29uY2F0DQoJCQkgICAgICBbKEFzc2Vt
Ymx5LmRpcmVjdGl2ZV9jb21taXQgDQoJCQkJe21lbWxvY3MgPSBMaXN0LmNvbmNhdCBbY29tbW9u
X2xpdmUsDQoJCQkJCQkJdHJ1ZWVfbGl2ZV19KTo6DQoJCQkgICAgICAgKExpc3QubWFwDQoJCQkJ
KHRydWVlX2xpdmVUcmFuc2ZlciwNCgkJCQkgZm4gKHRlbXAscmVnaXN0ZXIpDQoJCQkJICA9PiBB
c3NlbWJseS5kaXJlY3RpdmVfY2FjaGUNCgkJCQkgICAgIHtyZWdpc3RlciA9IHJlZ2lzdGVyLA0K
CQkJCSAgICAgIG1lbWxvYyA9IHRlbXAsDQoJCQkJICAgICAgcmVzZXJ2ZSA9IGZhbHNlfSkpLA0K
CQkJICAgICAgIChBc3NlbWJseS5pbnN0cnVjdGlvbl9qY2MNCgkJCQl7Y29uZGl0aW9uID0gY29u
ZGl0aW9uLA0KCQkJCSB0YXJnZXQgPSBPcGVyYW5kLmxhYmVsIHRydWVlfSk6Og0KCQkJICAgICAg
IChmYWxsIGdlZg0KCQkJICAgICAgICAgICAgIHtwcm9maWxlX2VuZCA9IHByb2ZpbGVfZW5kLA0K
CQkJCSAgICAgIGxhYmVsID0gZmFsc2VlLA0KCQkJCSAgICAgIGxpdmUgPSBmYWxzZWVfbGl2ZX0p
XSkNCgkJICAgICAgIGluIA0KCQkJIGNhc2UgKCEoKCNnZXQganVtcEluZm8pIHRydWVlKSwNCgkJ
CSAgICAgICAhKCgjZ2V0IGp1bXBJbmZvKSBmYWxzZWUpKQ0KCQkJICAgb2YgKE1heWJlIDEsIE1h
eWJlIDEpDQoJCQkgICAgPT4gaWYgdHJ1ZWVfbGl2ZV9sZW5ndGggPD0gZmFsc2VlX2xpdmVfbGVu
Z3RoDQoJCQkJIHRoZW4gZmFsbF9mYWxzZWUgKCkNCgkJCQkgZWxzZSBmYWxsX3RydWVlICgpDQoJ
CQkgICAgfCAoTWF5YmUgMSwgXykNCgkJCSAgICA9PiBmYWxsX3RydWVlICgpDQoJCQkgICAgfCAo
XywgTWF5YmUgMSkNCgkJCSAgICA9PiBmYWxsX2ZhbHNlZSAoKQ0KCQkJICAgIHwgXw0KCQkJICAg
ID0+IGlmIHRydWVlX2xpdmVfbGVuZ3RoIDw9IGZhbHNlZV9saXZlX2xlbmd0aA0KCQkJCSB0aGVu
IGZhbGxfZmFsc2VlICgpDQoJCQkJIGVsc2UgZmFsbF90cnVlZSAoKQ0KCQkgICAgICAgZW5kDQoJ
ICAgICAgICAgICAgfCBTd2l0Y2gge3Rlc3QsIGNhc2VzLCBkZWZhdWx0fQ0KCQkgICAgPT4gbGV0
DQoJCQkgdmFsIHNpemUgDQoJCQkgICA9IGNhc2UgT3BlcmFuZC5zaXplIHRlc3QNCgkJCSAgICAg
ICBvZiBTT01FIHNpemUgPT4gc2l6ZQ0KCQkJCXwgTk9ORSA9PiBTaXplLkxPTkcNCg0KCQkJIHZh
bCBkZWZhdWx0X2xpdmUgPSAoI2dldCBsaXZlSW5mbykgZGVmYXVsdA0KCQkJIHZhbCBkZWZhdWx0
X2xpdmVUcmFuc2Zlcg0KCQkJICAgPSAoI2dldCBsaXZlVHJhbnNmZXJJbmZvKSBkZWZhdWx0DQoJ
CQkgdmFsIGRlZmF1bHRfbGl2ZQ0KCQkJICAgPSBMaXN0LnJlbW92ZUFsbA0KCQkJICAgICAoZGVm
YXVsdF9saXZlLA0KCQkJICAgICAgZm4gdGVtcCANCgkJCSAgICAgICA9PiBMaXN0LmV4aXN0cw0K
CQkJICAgICAgICAgIChkZWZhdWx0X2xpdmVUcmFuc2ZlciwNCgkJCQkgICBmbiAodGVtcCcsXykg
DQoJCQkJICAgID0+IE1lbUxvYy5lcSh0ZW1wLCB0ZW1wJykpKQ0KDQoJCQkgdmFsIGNhc2VzX2Nh
c2VzX2xpdmVfY2FzZXNfbGl2ZVRyYW5zZmVyDQoJCQkgICA9IFRyYW5zZmVyLkNhc2VzLm1hcCcN
CgkJCSAgICAgKGNhc2VzLA0KCQkJICAgICAgZm4gKGssIHRhcmdldCkgDQoJCQkgICAgICAgPT4g
bGV0DQoJCQkJICAgIHZhbCB0YXJnZXRfbGl2ZSA9ICgjZ2V0IGxpdmVJbmZvKSB0YXJnZXQNCgkJ
CQkgICAgdmFsIHRhcmdldF9saXZlVHJhbnNmZXINCgkJCQkgICAgICA9ICgjZ2V0IGxpdmVUcmFu
c2ZlckluZm8pIHRhcmdldA0KCQkJCSAgICB2YWwgdGFyZ2V0X2xpdmUNCgkJCQkgICAgICA9IExp
c3QucmVtb3ZlQWxsDQoJCQkJICAgICAgICAodGFyZ2V0X2xpdmUsDQoJCQkJCSBmbiB0ZW1wIA0K
CQkJCQkgID0+IExpc3QuZXhpc3RzDQoJCQkJCSAgICAgKHRhcmdldF9saXZlVHJhbnNmZXIsDQoJ
CQkJCSAgICAgIGZuICh0ZW1wJyxfKSANCgkJCQkJICAgICAgID0+IE1lbUxvYy5lcSh0ZW1wLCB0
ZW1wJykpKQ0KCQkJCSAgaW4NCgkJCQkgICAgKChrLHRhcmdldCksDQoJCQkJICAgICB0YXJnZXRf
bGl2ZSwNCgkJCQkgICAgIHRhcmdldF9saXZlVHJhbnNmZXIpDQoJCQkJICBlbmQsDQoJCQkgICAg
ICBmbiAoYywgdGFyZ2V0KSA9PiAoSW1tZWRpYXRlLkNoYXIgYywgdGFyZ2V0KSwNCgkJCSAgICAg
IGZuIChpLCB0YXJnZXQpID0+IChJbW1lZGlhdGUuSW50IGksIHRhcmdldCksDQoJCQkgICAgICBm
biAodywgdGFyZ2V0KSA9PiAoSW1tZWRpYXRlLldvcmQgdywgdGFyZ2V0KSkNCg0KCQkJIHZhbCAo
Y2FzZXMsIGNhcnJ5X2xpdmUsIGNhcnJ5X2xpdmVUcmFuc2ZlcikNCgkJCSAgID0gTGlzdC5mb2xk
DQoJCQkgICAgIChjYXNlc19jYXNlc19saXZlX2Nhc2VzX2xpdmVUcmFuc2ZlciwNCgkJCSAgICAg
IChbXSwgW10sIFtdKSwNCgkJCSAgICAgIGZuICgoKGssdGFyZ2V0KSwgDQoJCQkJICAgdGFyZ2V0
X2xpdmUsIA0KCQkJCSAgIHRhcmdldF9saXZlVHJhbnNmZXIpLA0KCQkJCSAgKGNhc2VzLCANCgkJ
CQkgICBjYXJyeV9saXZlLCANCgkJCQkgICBjYXJyeV9saXZlVHJhbnNmZXIpKQ0KCQkJICAgICAg
ID0+IGxldA0KCQkJCSAgICB2YWwgKHRhcmdldF9saXZlLA0KCQkJCQkgY2FycnlfbGl2ZSkNCgkJ
CQkgICAgICA9IExpc3QuZm9sZA0KCQkJCSAgICAgICAgKHRhcmdldF9saXZlLA0KCQkJCQkgKFtd
LGNhcnJ5X2xpdmUpLA0KCQkJCQkgZm4gKHRlbXAsDQoJCQkJCSAgICAgKHRhcmdldF9saXZlJywN
CgkJCQkJICAgICAgY2FycnlfbGl2ZScpKQ0KCQkJCQkgID0+IGlmIExpc3QuY29udGFpbnMNCgkJ
CQkJICAgICAgICAoY2FycnlfbGl2ZSwNCgkJCQkJCSB0ZW1wLA0KCQkJCQkJIE1lbUxvYy5lcSkN
CgkJCQkJICAgICAgIHRoZW4gKHRhcmdldF9saXZlJywNCgkJCQkJCSAgICAgY2FycnlfbGl2ZScp
DQoJCQkJCSAgICAgICBlbHNlICh0ZW1wOjp0YXJnZXRfbGl2ZScsDQoJCQkJCQkgICAgIHRlbXA6
OmNhcnJ5X2xpdmUnKSkNCg0KCQkJCSAgICB2YWwgKHRhcmdldF9saXZlVHJhbnNmZXIsDQoJCQkJ
CSBjYXJyeV9saXZlVHJhbnNmZXIpDQoJCQkJICAgICAgPSBMaXN0LmZvbGQNCgkJCQkgICAgICAg
ICh0YXJnZXRfbGl2ZVRyYW5zZmVyLA0KCQkJCQkgKFtdLGNhcnJ5X2xpdmVUcmFuc2ZlciksDQoJ
CQkJCSBmbiAoKHRlbXAscmVnaXN0ZXIpLA0KCQkJCQkgICAgICh0YXJnZXRfbGl2ZVRyYW5zZmVy
JywNCgkJCQkJICAgICAgY2FycnlfbGl2ZVRyYW5zZmVyJykpDQoJCQkJCSAgPT4gaWYgTGlzdC5j
b250YWlucw0KCQkJCQkgICAgICAgIChjYXJyeV9saXZlVHJhbnNmZXIsDQoJCQkJCQkgKHRlbXAs
cmVnaXN0ZXIpLA0KCQkJCQkJIGZuICgodDEscjEpLCh0MixyMikpDQoJCQkJCQkgID0+IE1lbUxv
Yy5lcSh0MSx0MikNCgkJCQkJCSAgICAgYW5kYWxzbw0KCQkJCQkJICAgICBSZWdpc3Rlci5lcShy
MSxyMikpDQoJCQkJCSAgICAgICB0aGVuICh0YXJnZXRfbGl2ZVRyYW5zZmVyJywNCgkJCQkJCSAg
ICAgY2FycnlfbGl2ZVRyYW5zZmVyJykNCgkJCQkJICAgICAgIGVsc2UgKCh0ZW1wLHJlZ2lzdGVy
KTo6DQoJCQkJCQkgICAgIHRhcmdldF9saXZlVHJhbnNmZXInLA0KCQkJCQkJICAgICAodGVtcCxy
ZWdpc3Rlcik6Og0KCQkJCQkJICAgICBjYXJyeV9saXZlVHJhbnNmZXInKSkNCgkJCQkgIGluDQoJ
CQkJICAgIGVucXVlIHRhcmdldDsNCgkJCQkgICAgKExpc3QuY29uY2F0DQoJCQkJICAgICBbKEFz
c2VtYmx5Lmluc3RydWN0aW9uX2pjYw0KCQkJCSAgICAgICB7Y29uZGl0aW9uID0gSW5zdHJ1Y3Rp
b24uRSwNCgkJCQkJdGFyZ2V0ID0gT3BlcmFuZC5sYWJlbCB0YXJnZXR9KTo6DQoJCQkJICAgICAg
KEFzc2VtYmx5Lmluc3RydWN0aW9uX2NtcA0KCQkJCSAgICAgICB7c3JjMSA9IHRlc3QsDQoJCQkJ
CXNyYzIgPSBPcGVyYW5kLmltbWVkaWF0ZV9jb25zdCBrLA0KCQkJCQlzaXplID0gc2l6ZX0pOjoJ
DQoJCQkJICAgICAgKExpc3QubWFwDQoJCQkJICAgICAgICh0YXJnZXRfbGl2ZVRyYW5zZmVyLA0K
CQkJCQlmbiAodGVtcCxyZWdpc3RlcikNCgkJCQkJID0+IEFzc2VtYmx5LmRpcmVjdGl2ZV9jYWNo
ZQ0KCQkJCQkgICAge3JlZ2lzdGVyID0gcmVnaXN0ZXIsDQoJCQkJCSAgICAgbWVtbG9jID0gdGVt
cCwNCgkJCQkJICAgICByZXNlcnZlID0gdHJ1ZX0pKSwNCgkJCQkgICAgICAoQXNzZW1ibHkuZGly
ZWN0aXZlX2NvbW1pdCANCgkJCQkgICAgICAge21lbWxvY3MgPSB0YXJnZXRfbGl2ZX0pOjoNCgkJ
CQkgICAgICBjYXNlc10sDQoJCQkJICAgICBjYXJyeV9saXZlLA0KCQkJCSAgICAgY2FycnlfbGl2
ZVRyYW5zZmVyKQ0KCQkJCSAgZW5kKQ0KDQoJCQkgdmFsIGRlZmF1bHRfbGl2ZQ0KCQkJICAgPSBM
aXN0LnJlbW92ZUFsbA0KCQkJICAgICAoZGVmYXVsdF9saXZlLA0KCQkJICAgICAgZm4gdGVtcCAN
CgkJCSAgICAgICA9PiBMaXN0LmNvbnRhaW5zDQoJCQkgICAgICAgICAgKGNhcnJ5X2xpdmUsDQoJ
CQkJICAgdGVtcCwNCgkJCQkgICBNZW1Mb2MuZXEpKQ0KDQoJCQkgdmFsIGNhc2VzDQoJCQkgICA9
IExpc3QuZm9sZA0KCQkJICAgICAoY2FycnlfbGl2ZVRyYW5zZmVyLA0KCQkJICAgICAgY2FzZXMs
DQoJCQkgICAgICBmbiAoKHRlbXAscmVnaXN0ZXIpLGNhc2VzKQ0KCQkJICAgICAgID0+IChBc3Nl
bWJseS5kaXJlY3RpdmVfdW5yZXNlcnZlDQoJCQkJICAge3JlZ2lzdGVyID0gcmVnaXN0ZXJ9KTo6
DQoJCQkgICAgICAgICAgY2FzZXMpDQoJCSAgICAgICBpbiANCgkJCSBMaXN0LmZvbGQoY2FzZXMs
DQoJCQkgICAgICAgICAgIGZhbGwgZ2VmDQoJCQkgICAgICAgICAgICAgICAge3Byb2ZpbGVfZW5k
ID0gcHJvZmlsZV9lbmQsDQoJCQkgICAgICAgIAkgbGFiZWwgPSBkZWZhdWx0LA0KCQkJCQkgbGl2
ZSA9IGRlZmF1bHRfbGl2ZX0sDQoJCQkJICAgb3AgOjopDQoJCSAgICAgIGVuZCkNCg0KCSAgICBm
dW4gZWZmZWN0SnVtcFRhYmxlIChnZWYgYXMgR0VGIHtnZW5lcmF0ZSxlZmZlY3QsZmFsbH0pDQoJ
ICAgICAgICAgICAgICAgICAgICAgICAgIHt0cmFuc2ZlciwgcHJvZmlsZV9lbmR9IDogQXNzZW1i
bHkudCBsaXN0DQoJICAgICAgPSBjYXNlIHRyYW5zZmVyDQoJCSAgb2YgU3dpdGNoIHt0ZXN0LCBj
YXNlcywgZGVmYXVsdH0NCgkJICAgPT4gbGV0DQoJCQlmdW4gcmVkdWNlKGNhc2VzLA0KCQkJCSAg
IG9wcyBhcyB7emVybywNCgkJCQkJICAgZXZlbiwNCgkJCQkJICAgaW5jRm4sIGRlY0ZuLCBoYWxm
Rm4sDQoJCQkJCSAgIGx0Rm4sIGd0Rm4sDQoJCQkJCSAgIG1pbiwgbWluRm4sDQoJCQkJCSAgIG1h
eCwgbWF4Rm4sDQoJCQkJCSAgIHJhbmdlfSkNCgkJCSAgPSBsZXQNCgkJCSAgICAgIGZ1biByZWR1
Y2UnIGNhc2VzDQoJCQkJPSBsZXQNCgkJCQkgICAgdmFsIChtaW5LLG1heEssbGVuZ3RoLA0KCQkJ
CQkgYWxsRXZlbixhbGxPZGQpDQoJCQkJICAgICAgPSBMaXN0LmZvbGQNCgkJCQkgICAgICAgIChj
YXNlcywNCgkJCQkJIChtYXgsIG1pbiwgMCwNCgkJCQkJICB0cnVlLCB0cnVlKSwNCgkJCQkJIGZu
ICgoayx0YXJnZXQpLA0KCQkJCQkgICAgIChtaW5LLG1heEssbGVuZ3RoLA0KCQkJCQkgICAgICBh
bGxFdmVuLGFsbE9kZCkpDQoJCQkJCSAgPT4gbGV0DQoJCQkJCSAgICAgICB2YWwgaXNFdmVuID0g
ZXZlbiBrDQoJCQkJCSAgICAgaW4NCgkJCQkJICAgICAgIChtaW5GbihrLG1pbkspLA0KCQkJCQkJ
bWF4Rm4oayxtYXhLKSwNCgkJCQkJCWxlbmd0aCArIDEsDQoJCQkJCQlhbGxFdmVuIGFuZGFsc28g
aXNFdmVuLA0KCQkJCQkJYWxsT2RkIGFuZGFsc28gbm90IGlzRXZlbikNCgkJCQkJICAgICBlbmQp
DQoJCQkJICBpbg0KCQkJCSAgICBpZiBsZW5ndGggPiAxIGFuZGFsc28NCgkJCQkgICAgICAgKGFs
bEV2ZW4gb3JlbHNlIGFsbE9kZCkNCgkJCQkgICAgICB0aGVuIGxldA0KCQkJCQkgICAgIHZhbCBm
ID0gaWYgYWxsT2RkDQoJCQkJCQkgICAgICAgdGhlbiBoYWxmRm4gbyBkZWNGbg0KCQkJCQkJICAg
ICAgIGVsc2UgaGFsZkZuDQoJCQkJCSAgICAgdmFsIGNhc2VzJyANCgkJCQkJICAgICAgID0gTGlz
dC5tYXANCgkJCQkJICAgICAgICAgKGNhc2VzLA0KCQkJCQkJICBmbiAoayx0YXJnZXQpDQoJCQkJ
CQkgICA9PiAoZiBrLCB0YXJnZXQpKQ0KDQoJCQkJCSAgICAgdmFsIChjYXNlcycnLCANCgkJCQkJ
CSAgbWluSycnLCBtYXhLJycsIGxlbmd0aCcnLA0KCQkJCQkJICBzaGlmdCcnLCBtYXNrJycpDQoJ
CQkJCSAgICAgICA9IHJlZHVjZScgY2FzZXMnDQoNCgkJCQkJICAgICB2YWwgc2hpZnQnID0gMSAr
IHNoaWZ0JycNCgkJCQkJICAgICB2YWwgbWFzaycgDQoJCQkJCSAgICAgICA9IFdvcmQub3JiDQoJ
CQkJCSAgICAgICAgIChXb3JkLjw8KG1hc2snJywgMHd4MSksDQoJCQkJCQkgIGlmIGFsbE9kZA0K
CQkJCQkJICAgIHRoZW4gMHd4MQ0KCQkJCQkJICAgIGVsc2UgMHd4MCkNCgkJCQkJICAgaW4NCgkJ
CQkJICAgICAoY2FzZXMnJywgDQoJCQkJCSAgICAgIG1pbksnJywgbWF4SycnLCBsZW5ndGgnJywN
CgkJCQkJICAgICAgc2hpZnQnLCBtYXNrJykNCgkJCQkJICAgZW5kDQoJCQkJICAgICAgZWxzZSAo
Y2FzZXMsIA0KCQkJCQkgICAgbWluSywgbWF4SywgbGVuZ3RoLA0KCQkJCQkgICAgMCwgMHd4MCkN
CgkJCQkgIGVuZA0KCQkJICAgIGluIA0KCQkJICAgICAgcmVkdWNlJyBjYXNlcw0KCQkJICAgIGVu
ZA0KDQoJCQlmdW4gZG9pdFRhYmxlKGNhc2VzLA0KCQkJCSAgICAgIG9wcyBhcyB7emVybywNCgkJ
CQkJICAgICAgZXZlbiwNCgkJCQkJICAgICAgaW5jRm4sIGRlY0ZuLCBoYWxmRm4sDQoJCQkJCSAg
ICAgIGx0Rm4sIGd0Rm4sDQoJCQkJCSAgICAgIG1pbiwgbWluRm4sDQoJCQkJCSAgICAgIG1heCwg
bWF4Rm4sDQoJCQkJCSAgICAgIHJhbmdlfSwNCgkJCQkgICAgICBtaW5LLCBtYXhLLCByYW5nZUss
IHNoaWZ0LCBtYXNrLA0KCQkJCSAgICAgIGNvbnN0Rm4pDQoJCQkgID0gbGV0DQoJCQkgICAgICB2
YWwganVtcF90YWJsZV9sYWJlbA0KCQkJCT0gTGFiZWwubmV3U3RyaW5nICJqdW1wVGFibGUiDQoN
CgkJCSAgICAgIHZhbCByZWMgZmlsbGVyIA0KCQkJCT0gZm4gKFtdLF8pID0+IFtdDQoJCQkJICAg
fCAoY2FzZXMgYXMgKGksdGFyZ2V0KTo6Y2FzZXMnLGopDQoJCQkJICAgPT4gaWYgaSA9IGoNCgkJ
CQkJdGhlbiAoZW5xdWUgdGFyZ2V0Ow0KCQkJCQkgICAgICAoSW1tZWRpYXRlLmxhYmVsIHRhcmdl
dCk6Og0KCQkJCQkgICAgICAoZmlsbGVyKGNhc2VzJywgaW5jRm4gaikpKQ0KCQkJCQllbHNlIChJ
bW1lZGlhdGUubGFiZWwgZGVmYXVsdCk6Og0KCQkJCQkgICAgIChmaWxsZXIoY2FzZXMsIGluY0Zu
IGopKQ0KDQoJCQkgICAgICB2YWwgXyA9IGVucXVlIGRlZmF1bHQNCgkJCSAgICAgIHZhbCBqdW1w
X3RhYmxlID0gZmlsbGVyIChjYXNlcywgbWluSykNCg0KCQkJICAgICAgdmFsIGluZGV4DQoJCQkJ
PSBNZW1Mb2MuaW1tDQoJCQkJICB7YmFzZSA9IEltbWVkaWF0ZS5jb25zdF9pbnQgMCwNCgkJCQkg
ICBpbmRleCA9IEltbWVkaWF0ZS5jb25zdF9pbnQgMCwNCgkJCQkgICBzY2FsZSA9IFNjYWxlLkZv
dXIsDQoJCQkJICAgc2l6ZSA9IFNpemUuTE9ORywNCgkJCQkgICBjb21taXQgPSBNZW1Mb2MuQ29t
bWl0LmNvbW1pdA0KCQkJCSAgICAgICAgICAgIHtpc1RlbXAgPSB0cnVlLA0KCQkJCQkgICAgIG9u
Rmx1c2ggPSBmYWxzZX0sDQoJCQkJICAgY2xhc3MgPSBNZW1Mb2MuQ2xhc3MubmV3ICJUZW1wIn0N
CgkJCSAgICAgIHZhbCBjaGVjaw0KCQkJCT0gTWVtTG9jLmltbQ0KCQkJCSAge2Jhc2UgPSBJbW1l
ZGlhdGUuY29uc3RfaW50IDAsDQoJCQkJICAgaW5kZXggPSBJbW1lZGlhdGUuY29uc3RfaW50IDAs
DQoJCQkJICAgc2NhbGUgPSBTY2FsZS5Gb3VyLA0KCQkJCSAgIHNpemUgPSBTaXplLkxPTkcsDQoJ
CQkJICAgY29tbWl0ID0gTWVtTG9jLkNvbW1pdC5jb21taXQNCgkJCQkgICAgICAgICAgICB7aXNU
ZW1wID0gdHJ1ZSwNCgkJCQkJICAgICBvbkZsdXNoID0gZmFsc2V9LA0KCQkJCSAgIGNsYXNzID0g
TWVtTG9jLkNsYXNzLm5ldyAiVGVtcCJ9DQoNCgkJCSAgICAgIHZhbCBhZGRyZXNzDQoJCQkJPSBN
ZW1Mb2MuYmFzaWMNCgkJCQkgIHtiYXNlID0gSW1tZWRpYXRlLmxhYmVsIGp1bXBfdGFibGVfbGFi
ZWwsDQoJCQkJICAgaW5kZXggPSBpbmRleCwNCgkJCQkgICBzY2FsZSA9IFNjYWxlLkZvdXIsDQoJ
CQkJICAgc2l6ZSA9IFNpemUuTE9ORywNCgkJCQkgICBjb21taXQgPSBNZW1Mb2MuQ29tbWl0LmNv
bW1pdA0KCQkJCSAgICAgICAgICAgIHtpc1RlbXAgPSB0cnVlLA0KCQkJCQkgICAgIG9uRmx1c2gg
PSBmYWxzZX0sDQoJCQkJICAgY2xhc3MgPSBNZW1Mb2MuQ2xhc3MuQ29kZX0NCg0KCQkJICAgICAg
dmFsIHNpemUgDQoJCQkJPSBjYXNlIE9wZXJhbmQuc2l6ZSB0ZXN0DQoJCQkJICAgIG9mIFNPTUUg
c2l6ZSA9PiBzaXplDQoJCQkJICAgICB8IE5PTkUgPT4gU2l6ZS5MT05HDQoJCQkgICAgICB2YWwg
aW5kZXggPSBPcGVyYW5kLm1lbWxvYyBpbmRleA0KCQkJICAgICAgdmFsIGNoZWNrID0gT3BlcmFu
ZC5tZW1sb2MgY2hlY2sNCgkJCSAgICAgIHZhbCBhZGRyZXNzID0gT3BlcmFuZC5tZW1sb2MgYWRk
cmVzcw0KCQkJICAgICAgdmFsIGRlZmF1bHQgPSBPcGVyYW5kLmxhYmVsIGRlZmF1bHQNCgkJCSAg
ICBpbg0KCQkJICAgICAgKChmbiBsDQoJCQkJID0+IGlmIFNpemUubHQoc2l6ZSwgU2l6ZS5MT05H
KQ0KCQkJCSAgICAgIHRoZW4gKEFzc2VtYmx5Lmluc3RydWN0aW9uX21vdngNCgkJCQkJICAgIHtv
cGVyID0gSW5zdHJ1Y3Rpb24uTU9WWlgsDQoJCQkJCSAgICAgc3JjID0gdGVzdCwNCgkJCQkJICAg
ICBzcmNzaXplID0gc2l6ZSwNCgkJCQkJICAgICBkc3QgPSBpbmRleCwNCgkJCQkJICAgICBkc3Rz
aXplID0gU2l6ZS5MT05HfSk6Og0KCQkJCQkgICBsDQoJCQkJICAgICAgZWxzZSAoQXNzZW1ibHku
aW5zdHJ1Y3Rpb25fbW92DQoJCQkJCSAgICB7c3JjID0gdGVzdCwNCgkJCQkJICAgICBkc3QgPSBp
bmRleCwNCgkJCQkJICAgICBzaXplID0gU2l6ZS5MT05HfSk6Og0KCQkJCQkgICBsKSBvDQoJCQkg
ICAgICAgKGZuIGwNCgkJCQkgPT4gaWYgc2hpZnQgPiAwDQoJCQkJICAgICAgdGhlbiAoKGZuIGwN
CgkJCQkJICAgICAgPT4gKEFzc2VtYmx5Lmluc3RydWN0aW9uX21vdg0KCQkJCQkJICB7c3JjID0g
aW5kZXgsDQoJCQkJCQkgICBkc3QgPSBjaGVjaywNCgkJCQkJCSAgIHNpemUgPSBTaXplLkxPTkd9
KTo6DQoJCQkJCSAgICAgICAgIChBc3NlbWJseS5pbnN0cnVjdGlvbl9iaW5hbA0KCQkJCQkJICB7
b3BlciA9IEluc3RydWN0aW9uLkFORCwNCgkJCQkJCSAgIHNyYyA9IE9wZXJhbmQuaW1tZWRpYXRl
X2NvbnN0X3dvcmQgKG9uZXMgc2hpZnQpLA0KCQkJCQkJICAgZHN0ID0gY2hlY2ssDQoJCQkJCQkg
ICBzaXplID0gU2l6ZS5MT05HfSk6Og0KCQkJCQkJIGwpIG8NCgkJCQkJICAgIChmbiBsDQoJCQkJ
CSAgICAgID0+IGlmIG1hc2sgPSAwd3gwDQoJCQkJCQkgICB0aGVuIGwNCgkJCQkJCSAgIGVsc2Ug
KEFzc2VtYmx5Lmluc3RydWN0aW9uX2JpbmFsDQoJCQkJCQkJIHtvcGVyID0gSW5zdHJ1Y3Rpb24u
U1VCLA0KCQkJCQkJCSAgc3JjID0gT3BlcmFuZC5pbW1lZGlhdGVfY29uc3Rfd29yZCBtYXNrLA0K
CQkJCQkJCSAgZHN0ID0gY2hlY2ssDQoJCQkJCQkJICBzaXplID0gU2l6ZS5MT05HfSk6Og0KCQkJ
CQkJICAgICAgICBsKSBvDQoJCQkJCSAgICAoZm4gbA0KCQkJCQkgICAgICA9PiAoQXNzZW1ibHku
aW5zdHJ1Y3Rpb25famNjDQoJCQkJCQkgIHtjb25kaXRpb24gPSBJbnN0cnVjdGlvbi5OWiwNCgkJ
CQkJCSAgIHRhcmdldCA9IGRlZmF1bHR9KTo6DQoJCQkJCSAgICAgICAgIChBc3NlbWJseS5pbnN0
cnVjdGlvbl9zcmFsDQoJCQkJCQkgIHtvcGVyID0gSW5zdHJ1Y3Rpb24uU0FSLA0KCQkJCQkJICAg
Y291bnQgPSBPcGVyYW5kLmltbWVkaWF0ZV9jb25zdF9pbnQgc2hpZnQsDQoJCQkJCQkgICBkc3Qg
PSBpbmRleCwNCgkJCQkJCSAgIHNpemUgPSBTaXplLkxPTkd9KTo6DQoJCQkJCQkgbCkpIA0KCQkJ
CQkgICBsDQoJCQkJICAgICAgZWxzZSBsKSBvDQoJCQkgICAgICAgKGZuIGwNCgkJCQkgPT4gaWYg
bWluSyA9IHplcm8NCgkJCQkgICAgICB0aGVuIGwNCgkJCQkgICAgICBlbHNlIChBc3NlbWJseS5p
bnN0cnVjdGlvbl9iaW5hbA0KCQkJCQkgICAge29wZXIgPSBJbnN0cnVjdGlvbi5TVUIsDQoJCQkJ
CSAgICAgc3JjID0gT3BlcmFuZC5pbW1lZGlhdGUgDQoJCQkJCSAgICAgICAgICAgKGNvbnN0Rm4g
bWluSyksDQoJCQkJCSAgICAgZHN0ID0gaW5kZXgsDQoJCQkJCSAgICAgc2l6ZSA9IFNpemUuTE9O
R30pOjoNCgkJCQkJICAgbCkgbw0KCQkJICAgICAgIChmbiBsDQoJCQkJID0+IChBc3NlbWJseS5p
bnN0cnVjdGlvbl9jbXANCgkJCQkgICAgIHtzcmMxID0gaW5kZXgsDQoJCQkJICAgICAgc3JjMiA9
IE9wZXJhbmQuaW1tZWRpYXRlX2NvbnN0X2ludCByYW5nZUssDQoJCQkJICAgICAgc2l6ZSA9IHNp
emV9KTo6DQoJCQkJICAgIChBc3NlbWJseS5pbnN0cnVjdGlvbl9qY2MNCgkJCQkgICAgIHtjb25k
aXRpb24gPSBJbnN0cnVjdGlvbi5BRSwNCgkJCQkgICAgICB0YXJnZXQgPSBkZWZhdWx0fSk6Og0K
CQkJCSAgICAoQXNzZW1ibHkuaW5zdHJ1Y3Rpb25fam1wDQoJCQkJICAgICB7dGFyZ2V0ID0gYWRk
cmVzcywNCgkJCQkgICAgICBhYnNvbHV0ZSA9IHRydWV9KTo6DQoJCQkJICAgIGwpKQ0KCQkJICAg
ICAgKExpc3QuY29uY2F0DQoJCQkgICAgICAgW3Byb2ZpbGVfZW5kLA0KCQkJCVtBc3NlbWJseS5w
c2V1ZG9vcF9kYXRhICgpLA0KCQkJCSBBc3NlbWJseS5wc2V1ZG9vcF9wMmFsaWduIDIsDQoJCQkJ
IEFzc2VtYmx5LmxhYmVsIGp1bXBfdGFibGVfbGFiZWwsDQoJCQkJIEFzc2VtYmx5LnBzZXVkb29w
X2xvbmcganVtcF90YWJsZSwNCgkJCQkgQXNzZW1ibHkucHNldWRvb3BfdGV4dCAoKV1dKQ0KCQkJ
ICAgIGVuZA0KDQoJCQlmdW4gZG9pdChjYXNlcywNCgkJCQkgb3BzIGFzIHt6ZXJvLA0KCQkJCQkg
ZXZlbiwNCgkJCQkJIGluY0ZuLCBkZWNGbiwgaGFsZkZuLA0KCQkJCQkgbHRGbiwgZ3RGbiwNCgkJ
CQkJIG1pbiwgbWluRm4sDQoJCQkJCSBtYXgsIG1heEZuLA0KCQkJCQkgcmFuZ2V9LA0KCQkJCSBj
b25zdEZuKQ0KCQkJICA9IGxldA0KCQkJICAgICAgdmFsIChjYXNlcywgDQoJCQkJICAgbWluSywg
bWF4SywgbGVuZ3RoLA0KCQkJCSAgIHNoaWZ0LCBtYXNrKSANCgkJCQk9IHJlZHVjZShjYXNlcywg
b3BzKQ0KDQoJCQkgICAgICB2YWwgcmFuZ2VLIA0KCQkJCT0gU09NRSAocmFuZ2UobWluSyxtYXhL
KSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGUgT3ZlcmZsb3cNCgkJ
CQkgID0+IE5PTkUNCgkJCSAgICBpbg0KCQkJICAgICAgaWYgbGVuZ3RoID49IDggDQoJCQkJIGFu
ZGFsc28NCgkJCQkgKGlzU29tZSByYW5nZUsNCgkJCQkgIGFuZGFsc28NCgkJCQkgIHZhbE9mIHJh
bmdlSyA8PSAyICogbGVuZ3RoKQ0KCQkJCXRoZW4gbGV0DQoJCQkJICAgICAgIHZhbCByYW5nZUsg
PSB2YWxPZiByYW5nZUsNCg0KCQkJCSAgICAgICB2YWwgZGVmYXVsdF9saXZlIA0KCQkJCQkgPSAo
I2dldCBsaXZlSW5mbykgZGVmYXVsdA0KCQkJCSAgICAgICB2YWwgZGVmYXVsdF9saXZlVHJhbnNm
ZXINCgkJCQkJID0gKCNnZXQgbGl2ZVRyYW5zZmVySW5mbykgZGVmYXVsdA0KCQkJCSAgICAgICB2
YWwgZGVmYXVsdF9saXZlDQoJCQkJCSA9IExpc3QucmVtb3ZlQWxsDQoJCQkJCSAgIChkZWZhdWx0
X2xpdmUsDQoJCQkJCSAgICBmbiB0ZW1wIA0KCQkJCQkgICAgID0+IExpc3QuZXhpc3RzDQoJCQkJ
CSAgICAgICAgKGRlZmF1bHRfbGl2ZVRyYW5zZmVyLA0KCQkJCQkJIGZuICh0ZW1wJyxfKSANCgkJ
CQkJCSAgPT4gTWVtTG9jLmVxKHRlbXAsIHRlbXAnKSkpDQoNCgkJCQkgICAgICAgdmFsIGNhc2Vz
IA0KCQkJCQkgPSBMaXN0Lmluc2VydGlvblNvcnQNCgkJCQkJICAgKGNhc2VzLCANCgkJCQkJICAg
IGZuICgoayx0YXJnZXQpLChrJyx0YXJnZXQnKSkgDQoJCQkJCSAgICAgPT4gbHRGbihrLGsnKSkN
CgkJCQkgICAgIA0KCQkJCSAgICAgICB2YWwgY2FzZXNfbGl2ZV9jYXNlc19saXZlVHJhbnNmZXIN
CgkJCQkJID0gTGlzdC5tYXANCgkJCQkJICAgKGNhc2VzLA0KCQkJCQkgICAgZm4gKGssIHRhcmdl
dCkNCgkJCQkJICAgICA9PiBsZXQNCgkJCQkJCSAgdmFsIHRhcmdldF9saXZlIA0KCQkJCQkJICAg
ID0gKCNnZXQgbGl2ZUluZm8pIHRhcmdldA0KCQkJCQkJICB2YWwgdGFyZ2V0X2xpdmVUcmFuc2Zl
cg0KCQkJCQkJICAgID0gKCNnZXQgbGl2ZVRyYW5zZmVySW5mbykgDQoJCQkJCQkgICAgICB0YXJn
ZXQNCgkJCQkJCSAgdmFsIHRhcmdldF9saXZlDQoJCQkJCQkgICAgPSBMaXN0LnJlbW92ZUFsbA0K
CQkJCQkJICAgICAgKHRhcmdldF9saXZlLA0KCQkJCQkJICAgICAgIGZuIHRlbXAgDQoJCQkJCQkg
ICAgICAgID0+IExpc3QuZXhpc3RzDQoJCQkJCQkgICAgICAgICAgICh0YXJnZXRfbGl2ZVRyYW5z
ZmVyLA0KCQkJCQkJCSAgICBmbiAodGVtcCcsXykgDQoJCQkJCQkJICAgICA9PiBNZW1Mb2MuZXEo
dGVtcCwgdGVtcCcpKSkNCgkJCQkJCWluIA0KCQkJCQkJICAodGFyZ2V0X2xpdmUsDQoJCQkJCQkg
ICB0YXJnZXRfbGl2ZVRyYW5zZmVyKQ0KCQkJCQkJZW5kKQ0KDQoJCQkJICAgICAgIHZhbCAobGl2
ZSxsaXZlVHJhbnNmZXIpDQoJCQkJCSA9IExpc3QuZm9sZA0KCQkJCQkgICAoY2FzZXNfbGl2ZV9j
YXNlc19saXZlVHJhbnNmZXIsDQoJCQkJCSAgICAoZGVmYXVsdF9saXZlLA0KCQkJCQkgICAgIGRl
ZmF1bHRfbGl2ZVRyYW5zZmVyKSwNCgkJCQkJICAgIGZuICgodGFyZ2V0X2xpdmUsDQoJCQkJCQkg
dGFyZ2V0X2xpdmVUcmFuc2ZlciksDQoJCQkJCQkobGl2ZSwNCgkJCQkJCSBsaXZlVHJhbnNmZXIp
KQ0KCQkJCQkgICAgID0+IGxldA0KCQkJCQkJICB2YWwgbGl2ZQ0KCQkJCQkJICAgID0gTGlzdC5m
b2xkDQoJCQkJCQkgICAgICAodGFyZ2V0X2xpdmUsDQoJCQkJCQkgICAgICAgbGl2ZSwNCgkJCQkJ
CSAgICAgICBmbiAodGVtcCwNCgkJCQkJCQkgICBsaXZlKQ0KCQkJCQkJICAgICAgICA9PiBpZiBM
aXN0LmNvbnRhaW5zDQoJCQkJCQkgICAgICAgICAgICAgIChsaXZlLA0KCQkJCQkJCSAgICAgICB0
ZW1wLA0KCQkJCQkJCSAgICAgICBNZW1Mb2MuZXEpDQoJCQkJCQkJICAgICB0aGVuIGxpdmUNCgkJ
CQkJCQkgICAgIGVsc2UgdGVtcDo6bGl2ZSkNCg0KCQkJCQkJICB2YWwgbGl2ZVRyYW5zZmVyDQoJ
CQkJCQkgICAgPSBMaXN0LmZvbGQNCgkJCQkJCSAgICAgICh0YXJnZXRfbGl2ZVRyYW5zZmVyLA0K
CQkJCQkJICAgICAgIGxpdmVUcmFuc2ZlciwNCgkJCQkJCSAgICAgICBmbiAoKHRlbXAscmVnaXN0
ZXIpLA0KCQkJCQkJCSAgIGxpdmVUcmFuc2ZlcikNCgkJCQkJCSAgICAgICAgPT4gaWYgTGlzdC5j
b250YWlucw0KCQkJCQkJICAgICAgICAgICAgICAobGl2ZVRyYW5zZmVyLA0KCQkJCQkJCSAgICAg
ICAodGVtcCxyZWdpc3RlciksDQoJCQkJCQkJICAgICAgIGZuICgodDEscjEpLCh0MixyMikpDQoJ
CQkJCQkJICAgICAgICA9PiBNZW1Mb2MuZXEodDEsdDIpDQoJCQkJCQkJICAgICAgICAgICBhbmRh
bHNvDQoJCQkJCQkJCSAgIFJlZ2lzdGVyLmVxKHIxLHIyKSkNCgkJCQkJCQkgICAgIHRoZW4gbGl2
ZVRyYW5zZmVyDQoJCQkJCQkJICAgICBlbHNlICh0ZW1wLHJlZ2lzdGVyKTo6DQoJCQkJCQkJICAg
ICAgICAgIGxpdmVUcmFuc2ZlcikNCgkJCQkJCWluIA0KCQkJCQkJICAobGl2ZSxsaXZlVHJhbnNm
ZXIpDQoJCQkJCQllbmQpDQoNCg0KCQkJCSAgICAgaW4gDQoJCQkJICAgICAgIExpc3QuY29uY2F0
DQoJCQkJICAgICAgIFsoQXNzZW1ibHkuZGlyZWN0aXZlX2NvbW1pdA0KCQkJCQkge21lbWxvY3Mg
PSBsaXZlfSk6Og0KCQkJCQkoTGlzdC5tYXANCgkJCQkJIChsaXZlVHJhbnNmZXIsDQoJCQkJCSAg
Zm4gKHRlbXAscmVnaXN0ZXIpDQoJCQkJCSAgID0+IEFzc2VtYmx5LmRpcmVjdGl2ZV9jYWNoZQ0K
CQkJCQkgICAgICB7cmVnaXN0ZXIgPSByZWdpc3RlciwNCgkJCQkJICAgICAgIG1lbWxvYyA9IHRl
bXAsDQoJCQkJCSAgICAgICByZXNlcnZlID0gdHJ1ZX0pKSwNCgkJCQkJKGRvaXRUYWJsZShjYXNl
cywgDQoJCQkJCQkgICBvcHMsDQoJCQkJCQkgICBtaW5LLCBtYXhLLCByYW5nZUssDQoJCQkJCQkg
ICBzaGlmdCwgbWFzaywNCgkJCQkJCSAgIGNvbnN0Rm4pKV0NCgkJCQkgICAgIGVuZA0KCQkJCWVs
c2UgZWZmZWN0RGVmYXVsdCBnZWYNCgkJCQkgICAgICAgICAgICAgICAgICAge3RyYW5zZmVyID0g
dHJhbnNmZXIsDQoJCQkJCQkgICAgcHJvZmlsZV9lbmQgPSBwcm9maWxlX2VuZH0NCgkJCSAgICBl
bmQNCgkJICAgICAgaW4NCgkJCWNhc2UgY2FzZXMNCgkJCSAgb2YgVHJhbnNmZXIuQ2FzZXMuQ2hh
ciBjYXNlcw0KCQkJICAgPT4gZG9pdA0KCQkJICAgICAgKGNhc2VzLA0KCQkJICAgICAgIHt6ZXJv
ID0gIyJcMDAwIiwNCgkJCQlldmVuID0gZm4gYyA9PiAoQ2hhci5vcmQgYykgbW9kIDIgPSAwLA0K
CQkJCWluY0ZuID0gQ2hhci5zdWNjLA0KCQkJCWRlY0ZuID0gQ2hhci5wcmVkLA0KCQkJCWhhbGZG
biA9IGZuIGMgPT4gQ2hhci5jaHIoKENoYXIub3JkIGMpIGRpdiAyKSwNCgkJCQlsdEZuID0gQ2hh
ci48LA0KCQkJCWd0Rm4gPSBDaGFyLj4sDQoJCQkJbWluID0gQ2hhci5taW5DaGFyLA0KCQkJCW1p
bkZuID0gQ2hhci5taW4sDQoJCQkJbWF4ID0gQ2hhci5tYXhDaGFyLA0KCQkJCW1heEZuID0gQ2hh
ci5tYXgsDQoJCQkJcmFuZ2UgPSBmbiAobWluLG1heCkgPT4gKChDaGFyLm9yZCBtYXgpIC0gDQoJ
CQkJCQkJIChDaGFyLm9yZCBtaW4pKSArIDF9LA0KCQkJICAgICAgIEltbWVkaWF0ZS5jb25zdF9j
aGFyKQ0KCQkJICAgfCBUcmFuc2Zlci5DYXNlcy5JbnQgY2FzZXMNCgkJCSAgID0+IGRvaXQNCgkJ
CSAgICAgIChjYXNlcywNCgkJCSAgICAgICB7emVybyA9IDAsDQoJCQkJZXZlbiA9IGZuIGkgPT4g
aSBtb2QgMiA9IDAsDQoJCQkJaW5jRm4gPSBmbiBpID0+IGkgKyAxLA0KCQkJCWRlY0ZuID0gZm4g
aSA9PiBpIC0gMSwNCgkJCQloYWxmRm4gPSBmbiBpID0+IGkgZGl2IDIsDQoJCQkJbHRGbiA9IElu
dC48LA0KCQkJCWd0Rm4gPSBJbnQuPiwNCgkJCQltaW4gPSBJbnQubWluSW50LA0KCQkJCW1pbkZu
ID0gSW50Lm1pbiwNCgkJCQltYXggPSBJbnQubWF4SW50LA0KCQkJCW1heEZuID0gSW50Lm1heCwN
CgkJCQlyYW5nZSA9IGZuIChtaW4sbWF4KSA9PiBtYXggLSBtaW4gKyAxfSwNCgkJCSAgICAgICBJ
bW1lZGlhdGUuY29uc3RfaW50KQ0KCQkJICAgfCBUcmFuc2Zlci5DYXNlcy5Xb3JkIGNhc2VzDQoJ
CQkgICA9PiBkb2l0DQoJCQkgICAgICAoY2FzZXMsDQoJCQkgICAgICAge3plcm8gPSAwd3gwLA0K
CQkJCWV2ZW4gPSBmbiB3ID0+IFdvcmQubW9kKHcsMHd4MikgPSAwd3gwLA0KCQkJCWluY0ZuID0g
Zm4geCA9PiBXb3JkLisoeCwwd3gxKSwNCgkJCQlkZWNGbiA9IGZuIHggPT4gV29yZC4tKHgsMHd4
MSksDQoJCQkJaGFsZkZuID0gZm4geCA9PiBXb3JkLmRpdih4LDB3eDIpLA0KCQkJCWx0Rm4gPSBX
b3JkLjwsDQoJCQkJZ3RGbiA9IFdvcmQuPiwNCgkJCQltaW4gPSAwd3gwLA0KCQkJCW1pbkZuID0g
V29yZC5taW4sDQoJCQkJbWF4ID0gMHd4RkZGRkZGRkYsDQoJCQkJbWF4Rm4gPSBXb3JkLm1heCwN
CgkJCQlyYW5nZSA9IGZuIChtaW4sbWF4KSA9PiAoKFdvcmQudG9JbnQgbWF4KSAtDQoJCQkJCQkJ
IChXb3JkLnRvSW50IG1pbikgKyANCgkJCQkJCQkgMSl9LA0KCQkJICAgICAgIEltbWVkaWF0ZS5j
b25zdF93b3JkKQ0KCQkgICAgICBlbmQNCgkJICAgfCBfID0+IGVmZmVjdERlZmF1bHQgZ2VmIA0K
CQkgICAgICAgICAgICAgICAgICAgICAgICB7dHJhbnNmZXIgPSB0cmFuc2ZlciwNCgkJCQkJIHBy
b2ZpbGVfZW5kID0gcHJvZmlsZV9lbmR9DQoNCgkgICAgZnVuIGZhbGxOb25lIChnZWYgYXMgR0VG
IHtnZW5lcmF0ZSxlZmZlY3QsZmFsbH0pDQoJICAgICAgICAgICAgICAgICB7cHJvZmlsZV9lbmQs
IGxhYmVsLCBsaXZlfSA6IEFzc2VtYmx5LnQgbGlzdA0KCSAgICAgID0gbGV0DQoJCSAgdmFsIGxp
dmVUcmFuc2ZlciA9ICgjZ2V0IGxpdmVUcmFuc2ZlckluZm8pIGxhYmVsDQoNCgkJICB2YWwgbGl2
ZSANCgkJICAgID0gTGlzdC5yZW1vdmVBbGwNCgkJICAgICAgKGxpdmUsDQoJCSAgICAgICBmbiB0
ZW1wIA0KCQkgICAgICAgID0+IExpc3QuZXhpc3RzDQoJCSAgICAgICAgICAgKGxpdmVUcmFuc2Zl
ciwNCgkJCSAgICBmbiAodGVtcCcsXykgDQoJCQkgICAgID0+IE1lbUxvYy5lcSh0ZW1wLCB0ZW1w
JykpKQ0KDQoJCSAgZnVuIGRlZmF1bHQgKCkNCgkJICAgID0gTGlzdC5jb25jYXQNCgkJICAgICAg
WyhBc3NlbWJseS5kaXJlY3RpdmVfY29tbWl0DQoJCQl7bWVtbG9jcyA9IGxpdmV9KTo6DQoJCSAg
ICAgICAoTGlzdC5tYXANCgkJCShsaXZlVHJhbnNmZXIsDQoJCQkgZm4gKHRlbXAscmVnaXN0ZXIp
DQoJCQkgID0+IEFzc2VtYmx5LmRpcmVjdGl2ZV9jYWNoZQ0KCQkJICAgICB7cmVnaXN0ZXIgPSBy
ZWdpc3RlciwNCgkJCSAgICAgIG1lbWxvYyA9IHRlbXAsDQoJCQkgICAgICByZXNlcnZlID0gZmFs
c2V9KSksDQoJCSAgICAgICAoQXNzZW1ibHkuaW5zdHJ1Y3Rpb25fam1wDQoJCQl7dGFyZ2V0ID0g
T3BlcmFuZC5sYWJlbCBsYWJlbCwNCgkJCSBhYnNvbHV0ZSA9IGZhbHNlfSk6Og0KCQkgICAgICAg
cHJvZmlsZV9lbmRdDQoJCWluDQoJCSAgY2FzZSBnZXQgbGFiZWwNCgkJICAgIG9mIE5PTkUNCgkJ
ICAgICA9PiBkZWZhdWx0ICgpDQoJCSAgICAgfCBTT01FIChibG9jayBhcyBCbG9jay5UIHtsYWJl
bCwuLi59KQ0KCQkgICAgID0+IChlbnF1ZSBsYWJlbDsNCgkJCSBkZWZhdWx0ICgpKQ0KCQllbmQN
Cg0KCSAgICBmdW4gZmFsbERlZmF1bHQgKGdlZiBhcyBHRUYge2dlbmVyYXRlLGVmZmVjdCxmYWxs
fSkNCgkgICAgICAgICAgICAgICAgICAgIHtwcm9maWxlX2VuZCwgbGFiZWwsIGxpdmV9IDogQXNz
ZW1ibHkudCBsaXN0DQoJICAgICAgPSBsZXQNCgkJICB2YWwgbGl2ZVRyYW5zZmVyID0gKCNnZXQg
bGl2ZVRyYW5zZmVySW5mbykgbGFiZWwNCg0KCQkgIHZhbCBsaXZlIA0KCQkgICAgPSBMaXN0LnJl
bW92ZUFsbA0KCQkgICAgICAobGl2ZSwNCgkJICAgICAgIGZuIHRlbXAgDQoJCSAgICAgICAgPT4g
TGlzdC5leGlzdHMNCgkJICAgICAgICAgICAobGl2ZVRyYW5zZmVyLA0KCQkJICAgIGZuICh0ZW1w
JyxfKSANCgkJCSAgICAgPT4gTWVtTG9jLmVxKHRlbXAsIHRlbXAnKSkpDQoNCgkJICBmdW4gZGVm
YXVsdCAoKQ0KCQkgICAgPSBMaXN0LmNvbmNhdA0KCQkgICAgICBbKEFzc2VtYmx5LmRpcmVjdGl2
ZV9jb21taXQNCgkJCXttZW1sb2NzID0gbGl2ZX0pOjoNCgkJICAgICAgIChMaXN0Lm1hcA0KCQkJ
KGxpdmVUcmFuc2ZlciwNCgkJCSBmbiAodGVtcCxyZWdpc3RlcikNCgkJCSAgPT4gQXNzZW1ibHku
ZGlyZWN0aXZlX2NhY2hlDQoJCQkgICAgIHtyZWdpc3RlciA9IHJlZ2lzdGVyLA0KCQkJICAgICAg
bWVtbG9jID0gdGVtcCwNCgkJCSAgICAgIHJlc2VydmUgPSBmYWxzZX0pKSwNCgkJICAgICAgIChB
c3NlbWJseS5pbnN0cnVjdGlvbl9qbXANCgkJCXt0YXJnZXQgPSBPcGVyYW5kLmxhYmVsIGxhYmVs
LA0KCQkJIGFic29sdXRlID0gZmFsc2V9KTo6DQoJCSAgICAgICBwcm9maWxlX2VuZF0NCgkJaW4N
CgkJICBjYXNlIGdldCBsYWJlbA0KCQkgICAgb2YgTk9ORSANCgkJICAgICA9PiBkZWZhdWx0ICgp
DQoJCSAgICAgfCBTT01FIChibG9jayBhcyBCbG9jay5UIHtsYWJlbCwuLi59KQ0KCQkgICAgID0+
IChjYXNlIGJsb2NrX3ByZSBsYWJlbA0KCQkJICAgb2YgU09NRSBfIA0KCQkJICAgID0+IChlbnF1
ZSBsYWJlbDsNCgkJCQlkZWZhdWx0ICgpKQ0KCQkJICAgIHwgTk9ORSANCgkJCSAgICA9PiAoY2Fz
ZSAhKCgjZ2V0IGp1bXBJbmZvKSBsYWJlbCkNCgkJCQkgIG9mIE1heWJlIDEgDQoJCQkJICAgPT4g
TGlzdC5jb25jYXQNCgkJCQkgICAgICBbYmxvY2tfZmFsbCwNCgkJCQkgICAgICAgcHJvZmlsZV9l
bmQsDQoJCQkJICAgICAgIGdlbmVyYXRlIGdlZg0KCQkJCSAgICAgICAgICAgICAgICB7bGFiZWwg
PSBsYWJlbCwNCgkJCQkJIAkgYmVnaW4gPSBmYWxzZSwNCgkJCQkJCSBhbGlnbiA9IGZhbHNlfV0N
CgkJCQkgICB8IF8gPT4gTGlzdC5jb25jYXQNCgkJCQkgICAgICAgICAgWyhBc3NlbWJseS5kaXJl
Y3RpdmVfY29tbWl0IA0KCQkJCQkgICAge21lbWxvY3MgPSBsaXZlfSk6Og0KCQkJCQkgICAoTGlz
dC5tYXANCgkJCQkJICAgIChsaXZlVHJhbnNmZXIsDQoJCQkJCSAgICAgZm4gKHRlbXAscmVnaXN0
ZXIpDQoJCQkJCSAgICAgID0+IEFzc2VtYmx5LmRpcmVjdGl2ZV9jYWNoZQ0KCQkJCQkgICAgICAg
ICB7cmVnaXN0ZXIgPSByZWdpc3RlciwNCgkJCQkJCSAgbWVtbG9jID0gdGVtcCwNCgkJCQkJCSAg
cmVzZXJ2ZSA9IGZhbHNlfSkpLA0KCQkJCQkgICAoQXNzZW1ibHkuZGlyZWN0aXZlX3Jlc2V0ICgp
KTo6DQoJCQkJCSAgIChMaXN0LmNvbmNhdA0KCQkJCQkgICAgW3Byb2ZpbGVfZW5kLA0KCQkJCQkg
ICAgIChnZW5lcmF0ZSBnZWYNCgkJCQkJICAgICAgICAgICAgICAge2xhYmVsID0gbGFiZWwsDQoJ
CQkJCQkJYmVnaW4gPSB0cnVlLA0KCQkJCQkJCWFsaWduID0gZmFsc2V9KV0pXSkpDQoJCWVuZA0K
DQoJICAgIGZ1biBtYWtlIHtnZW5lcmF0ZSwgZWZmZWN0LCBmYWxsfQ0KCSAgICAgID0gZ2VuZXJh
dGUgKEdFRiB7Z2VuZXJhdGUgPSBnZW5lcmF0ZSwNCgkJCSAgICAgICBlZmZlY3QgPSBlZmZlY3Qs
DQoJCQkgICAgICAgZmFsbCA9IGZhbGx9KQ0KCQkJIA0KCSAgICB2YWwgZ2VuZXJhdGUNCgkgICAg
ICA9IGNhc2Ugb3B0aW1pemUgDQoJCSAgb2YgMCA9PiBtYWtlIHtnZW5lcmF0ZSA9IGdlbmVyYXRl
QWxsLA0KCQkJCWVmZmVjdCA9IGVmZmVjdERlZmF1bHQsDQoJCQkJZmFsbCA9IGZhbGxOb25lfQ0K
CQkgICB8IF8gPT4gbWFrZSB7Z2VuZXJhdGUgPSBnZW5lcmF0ZUFsbCwNCgkJCQllZmZlY3QgPSBl
ZmZlY3RKdW1wVGFibGUsDQoJCQkJZmFsbCA9IGZhbGxEZWZhdWx0fQ0KDQoJICAgIHZhbCBfID0g
TGlzdC5mb3JlYWNoKGV4cG9ydHMsIGZuIGxhYmVsID0+IGVucXVlIGxhYmVsKQ0KCSAgICBmdW4g
ZG9pdCAoKSA6IEFzc2VtYmx5LnQgbGlzdCBsaXN0DQoJICAgICAgPSAoY2FzZSBkZXF1ZSAoKQ0K
CQkgICBvZiBOT05FID0+IFtdDQoJCSAgICB8IFNPTUUgbGFiZWwNCgkJICAgID0+IChjYXNlIGdl
bmVyYXRlIHtsYWJlbCA9IGxhYmVsLA0KCQkJCSAgICAgICBiZWdpbiA9IHRydWUsDQoJCQkJICAg
ICAgIGFsaWduID0gdHJ1ZX0NCgkJCSAgb2YgW10gPT4gZG9pdCAoKQ0KCQkJICAgfCBibG9jayA9
PiBibG9jazo6KGRvaXQgKCkpKSkNCgkgICAgdmFsIGFzc2VtYmx5ID0gZG9pdCAoKQ0KICAgICAg
IAkgIGluDQoJICAgIGFzc2VtYmx5DQoJICBlbmQNCg0KICAgICAgdmFsIChnZW5lcmF0ZVRyYW5z
ZmVycywgZ2VuZXJhdGVUcmFuc2ZlcnNfbXNnKQ0KCT0gdHJhY2VyDQogICAgICAgICAgImdlbmVy
YXRlVHJhbnNmZXJzIg0KCSAgZ2VuZXJhdGVUcmFuc2ZlcnMNCiAgICBlbmQNCg0KICBmdW4gc2lt
cGxpZnkge2NodW5rIGFzIENodW5rLlQge2V4cG9ydHMsIGJsb2Nrc306IENodW5rLnQsDQoJCW9w
dGltaXplIDogaW50LA0KCQlibG9ja19wcmUgOiBMYWJlbC50IC0+IEFzc2VtYmx5LnQgbGlzdCBv
cHRpb24sDQoJCWJsb2NrX2JlZ2luIDogQXNzZW1ibHkudCBsaXN0LA0KCQlibG9ja19lbmQgOiBB
c3NlbWJseS50IGxpc3QsDQoJCWJsb2NrX2ZhbGwgOiBBc3NlbWJseS50IGxpc3QsDQoJCXRyYW5z
ZmVyUmVncyA6IFJlZ2lzdGVyLnQgbGlzdCwNCgkJbGl2ZUluZm8gOiB7Z2V0IDogTGFiZWwudCAt
PiBNZW1Mb2MudCBsaXN0LA0KCQkJICAgIHNldCA6IExhYmVsLnQgKiBNZW1Mb2MudCBsaXN0IC0+
IHVuaXR9fSA6DQogICAgICAgICAgICAgICBBc3NlbWJseS50IGxpc3QgbGlzdA0KICAgID0gbGV0
DQoJdmFsIGxhYmVscw0KCSAgPSBMaXN0Lm1hcChibG9ja3MsIGZuIEJsb2NrLlQge2xhYmVsLC4u
Ln0gPT4gbGFiZWwpDQoNCglmdW4gY2hhbmdlZF9tc2coY2hhbmdlZCxtc2cpDQooKg0KCSAgPSBD
b250cm9sLm1lc3NhZ2VTdHIgKCJjb21wbGV0ZWQgIiBeIG1zZykNCiopDQooKg0KCSAgPSBpZiBj
aGFuZ2VkDQoJICAgICAgdGhlbiBDb250cm9sLm1lc3NhZ2VTdHIgKG1zZyBeICIgY2hhbmdlZCIp
DQoJICAgICAgZWxzZSAoKQ0KKikNCgkgID0gKCkNCg0KCSgqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopDQoJKCogdmVy
aWZ5TGl2ZUluZm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKikNCgkoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKQ0KCXZhbCB7Y2hhbmdlZH0gPSBMaXZlbmVzcy52ZXJp
ZnlMaXZlSW5mbyB7YmxvY2tzID0gYmxvY2tzLA0KCQkJCQkJIGxpdmVJbmZvID0gbGl2ZUluZm99
DQoJdmFsIF8gPSBjaGFuZ2VkX21zZyhjaGFuZ2VkLCAidmVyaWZ5TGl2ZUluZm8iKQ0KCSAgDQoJ
KCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKikNCgkoKiBjb21wdXRlSnVtcEluZm8gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKQ0KCSgqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopDQoJdmFsIGp1
bXBJbmZvDQoJICA9IEp1bXBJbmZvLmNvbXB1dGVKdW1wSW5mbyB7YmxvY2tzID0gYmxvY2tzLA0K
CQkJCSAgICAgIGV4cG9ydHMgPSBleHBvcnRzLA0KCQkJCSAgICAgIGJsb2NrX3ByZSA9IGJsb2Nr
X3ByZX0NCg0KDQoJKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKikNCgkoKiBvcHRpbWl6ZXIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKQ0KCSgqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KiopDQoJZnVuIG9wdGltaXplciBibG9ja3MNCgkgID0gbGV0DQoJICAgICAgIHZhbCBibG9ja3Mg
PSBibG9ja3MNCgkgICAgICAgdmFsIGNoYW5nZWQgPSBmYWxzZQ0KDQoJICAgICAgICgqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKikN
CgkgICAgICAgKCogZWxpbUdvdG8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAqKQ0KCSAgICAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopDQoJICAgICAgIHZhbCB7YmxvY2tzID0g
YmxvY2tzJywNCgkJICAgIGNoYW5nZWQgPSBjaGFuZ2VkJ30NCgkJID0gRWxpbUdvdG8uZWxpbUdv
dG8ge2Jsb2NrcyA9IGJsb2NrcywNCgkJCQkgICAgICBqdW1wSW5mbyA9IGp1bXBJbmZvfQ0KDQoJ
ICAgICAgIHZhbCBfDQoJCSA9IEFzc2VydC5hc3NlcnQNCgkJICAgKCJ2ZXJpZnlKdW1wSW5mbyIs
DQoJCSAgICBmbiAoKSA9PiBKdW1wSW5mby52ZXJpZnlKdW1wSW5mbyB7YmxvY2tzID0gYmxvY2tz
JywNCgkJCQkJCSAgICAgIGV4cG9ydHMgPSBleHBvcnRzLA0KCQkJCQkJICAgICAgYmxvY2tfcHJl
ID0gYmxvY2tfcHJlLA0KCQkJCQkJICAgICAganVtcEluZm8gPSBqdW1wSW5mb30pDQoNCgkgICAg
ICAgdmFsIGJsb2NrcyA9IGJsb2NrcycNCgkgICAgICAgdmFsIF8gDQoJCSA9IGNoYW5nZWRfbXNn
DQoJCSAgIChjaGFuZ2VkJywgDQoJCSAgICAiZWxpbUdvdG8iKQ0KCSAgICAgICB2YWwgY2hhbmdl
ZCA9IGNoYW5nZWQgb3JlbHNlIGNoYW5nZWQnCQkgDQoNCgkgICAgICAgKCoqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKQ0KCSAgICAg
ICAoKiBwZWVwaG9sZUJsb2NrL21vdmVIb2lzdC9wZWVwaG9sZUxpdmVuZXNzQmxvY2svY29weVBy
b3BhZ2F0ZSopDQoJICAgICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKikNCgkgICAgICAgdmFsIHtibG9ja3MgPSBibG9ja3Mn
LA0KCQkgICAgY2hhbmdlZCA9IGNoYW5nZWQnfQ0KCQkgPSBMaXN0LmZvbGQNCgkJICAgKGJsb2Nr
cywNCgkJICAgIHtibG9ja3MgPSBbXSwgY2hhbmdlZCA9IGZhbHNlfSwNCgkJICAgIGZuIChibG9j
aywge2Jsb2NrcywgY2hhbmdlZH0pDQoJCSAgICAgPT4gbGV0DQoJCQkgIHZhbCBibG9jayA9IGJs
b2NrDQoJCQkgIHZhbCBjaGFuZ2VkID0gY2hhbmdlZA0KDQoJCQkgICgqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopDQoJCQkgICgqIHBlZXBob2xlQmxv
Y2tfcHJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopDQoJCQkgICgqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopDQoJCQkgIHZhbCB7Ymxv
Y2sgPSBibG9jaycsDQoJCQkgICAgICAgY2hhbmdlZCA9IGNoYW5nZWQnfQ0KCQkJICAgID0gUGVl
cGhvbGVCbG9jay5wZWVwaG9sZUJsb2NrX3ByZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYmxvY2sNCg0KCQkJICB2YWwgYmxvY2sgPSBibG9jaycNCgkJCSAgdmFsIF8gDQoJCQkgICAg
PSBjaGFuZ2VkX21zZw0KCQkJICAgICAgKGNoYW5nZWQnLCANCgkJCSAgICAgICAicGVlcGhvbGVC
bG9ja19wcmUiKQ0KCQkJICB2YWwgY2hhbmdlZCA9IGNoYW5nZWQgb3JlbHNlIGNoYW5nZWQnDQoN
CgkJCSAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KikNCgkJCSAgKCogdG9MaXZlbmVzc0Jsb2NrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKikNCgkJCSAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKikNCgkJCSAgdmFsIGJsb2NrJw0KCQkJICAgID0gTGl2ZW5lc3NCbG9jay50b0xpdmVu
ZXNzQmxvY2sgDQoJCQkgICAgICB7YmxvY2sgPSBibG9jaywNCgkJCSAgICAgICBsaXZlSW5mbyA9
IGxpdmVJbmZvfQ0KCQkJICB2YWwgY2hhbmdlZCcgPSBmYWxzZQ0KDQoJCQkgIHZhbCBibG9jayA9
IGJsb2NrJw0KCQkJICB2YWwgYmxvY2tfdG9MaXZlbmVzc0Jsb2NrID0gYmxvY2sNCgkJCSAgdmFs
IF8gDQoJCQkgICAgPSBjaGFuZ2VkX21zZw0KCQkJICAgICAgKGNoYW5nZWQnLCANCgkJCSAgICAg
ICAidG9MaXZlbmVzc0Jsb2NrIikNCgkJCSAgdmFsIGNoYW5nZWQgPSBjaGFuZ2VkIG9yZWxzZSBj
aGFuZ2VkJw0KDQoJCQkgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKiopDQoJCQkgICgqIG1vdmVIb2lzdCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICopDQoJCQkgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKiopDQoJCQkgIHZhbCB7YmxvY2sgPSBibG9jaycsIA0KCQkJICAgICAg
IGNoYW5nZWQgPSBjaGFuZ2VkJ30NCgkJCSAgICA9IGlmICFDb250cm9sLk5hdGl2ZS5tb3ZlSG9p
c3QNCgkJCQl0aGVuIE1vdmVIb2lzdExpdmVuZXNzQmxvY2subW92ZUhvaXN0DQoJCQkJICAgICB7
YmxvY2sgPSBibG9ja30NCgkJCQllbHNlIHtibG9jayA9IGJsb2NrLA0KCQkJCSAgICAgIGNoYW5n
ZWQgPSBmYWxzZX0NCg0KCQkJICB2YWwgXw0KCQkJICAgID0gQXNzZXJ0LmFzc2VydA0KCQkJICAg
ICAgKCJ2ZXJpZnlMaXZlbmVzc0Jsb2NrOiBtb3ZlSG9pc3QiLA0KCQkJICAgICAgIGZuICgpID0+
IExpdmVuZXNzQmxvY2sudmVyaWZ5TGl2ZW5lc3NCbG9jaw0KCQkJICAgICAgICAgICAgICAgIHti
bG9jayA9IGJsb2NrJywNCgkJCQkJIGxpdmVJbmZvID0gbGl2ZUluZm99KQ0KDQoJCQkgIHZhbCBi
bG9jayA9IGJsb2NrJw0KCQkJICB2YWwgYmxvY2tfbW92ZUhvaXN0ID0gYmxvY2sNCgkJCSAgdmFs
IF8gDQoJCQkgICAgPSBjaGFuZ2VkX21zZw0KCQkJICAgICAgKGNoYW5nZWQnLCANCgkJCSAgICAg
ICAibW92ZUhvaXN0TGl2ZW5lc3NCbG9jayIpDQoJCQkgIHZhbCBjaGFuZ2VkID0gY2hhbmdlZCBv
cmVsc2UgY2hhbmdlZCcNCg0KCQkJICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKQ0KCQkJICAoKiBwZWVwaG9sZUxpdmVuZXNzQmxvY2sgICAgICAg
ICAgICAgICAgICAgICAgICAgICAqKQ0KCQkJICAoKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKQ0KCQkJICB2YWwge2Jsb2NrID0gYmxvY2snLA0KCQkJ
ICAgICAgIGNoYW5nZWQgPSBjaGFuZ2VkJ30NCgkJCSAgICA9IFBlZXBob2xlTGl2ZW5lc3NCbG9j
ay5wZWVwaG9sZUxpdmVuZXNzQmxvY2sNCgkJCSAgICAgIGJsb2NrDQoNCgkJCSAgdmFsIF8NCgkJ
CSAgICA9IEFzc2VydC5hc3NlcnQNCgkJCSAgICAgICgidmVyaWZ5TGl2ZW5lc3NCbG9jazogcGVl
cGhvbGVMaXZlbmVzc0Jsb2NrIiwNCgkJCSAgICAgICBmbiAoKSA9PiBMaXZlbmVzc0Jsb2NrLnZl
cmlmeUxpdmVuZXNzQmxvY2sNCgkJCSAgICAgICAgICAgICAgICB7YmxvY2sgPSBibG9jaycsDQoJ
CQkJCSBsaXZlSW5mbyA9IGxpdmVJbmZvfSkNCg0KCQkJICB2YWwgYmxvY2sgPSBibG9jaycNCgkJ
CSAgdmFsIGJsb2NrX3BlZXBob2xlTGl2ZW5lc3NCbG9jayA9IGJsb2NrDQoJCQkgIHZhbCBfIA0K
CQkJICAgID0gY2hhbmdlZF9tc2cNCgkJCSAgICAgIChjaGFuZ2VkJywgDQoJCQkgICAgICAgInBl
ZXBob2xlTGl2ZW5lc3NCbG9jayIpDQoJCQkgIHZhbCBjaGFuZ2VkID0gY2hhbmdlZCBvcmVsc2Ug
Y2hhbmdlZCcNCg0KCQkJICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKQ0KCQkJICAoKiBjb3B5UHJvcGFnYXRlICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAqKQ0KCQkJICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKQ0KCQkJICB2YWwge2Jsb2NrID0gYmxvY2snLCANCgkJCSAgICAg
ICBjaGFuZ2VkID0gY2hhbmdlZCd9DQoJCQkgICAgPSBpZiAhQ29udHJvbC5OYXRpdmUuY29weVBy
b3ANCgkJCQl0aGVuIENvcHlQcm9wYWdhdGVMaXZlbmVzc0Jsb2NrLmNvcHlQcm9wYWdhdGUNCgkJ
CQkgICAgIHtibG9jayA9IGJsb2NrLA0KCQkJCSAgICAgIGxpdmVJbmZvID0gbGl2ZUluZm99DQoJ
CQkJZWxzZSB7YmxvY2sgPSBibG9jaywNCgkJCQkgICAgICBjaGFuZ2VkID0gZmFsc2V9DQoNCgkJ
CSAgdmFsIF8NCgkJCSAgICA9IEFzc2VydC5hc3NlcnQNCgkJCSAgICAgICgidmVyaWZ5TGl2ZW5l
c3NCbG9jazogY29weVByb3BhZ2F0ZSIsDQoJCQkgICAgICAgZm4gKCkgPT4gTGl2ZW5lc3NCbG9j
ay52ZXJpZnlMaXZlbmVzc0Jsb2NrDQoJCQkgICAgICAgICAgICAgICAge2Jsb2NrID0gYmxvY2sn
LA0KCQkJCQkgbGl2ZUluZm8gPSBsaXZlSW5mb30pDQoNCgkJCSAgdmFsIGJsb2NrID0gYmxvY2sn
DQoJCQkgIHZhbCBibG9ja19jb3B5UHJvcGFnYXRlID0gYmxvY2sNCgkJCSAgdmFsIF8gDQoJCQkg
ICAgPSBjaGFuZ2VkX21zZw0KCQkJICAgICAgKGNoYW5nZWQnLCANCgkJCSAgICAgICAiY29weVBy
b3BhZ2F0ZSIpDQoJCQkgIHZhbCBjaGFuZ2VkID0gY2hhbmdlZCBvcmVsc2UgY2hhbmdlZCcNCg0K
CQkJICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KQ0KCQkJICAoKiBwZWVwaG9sZUxpdmVuZXNzQmxvY2tfbWlub3IgICAgICAgICAgICAgICAgICAg
ICAqKQ0KCQkJICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKQ0KCQkJICB2YWwge2Jsb2NrID0gYmxvY2snLA0KCQkJICAgICAgIGNoYW5nZWQgPSBj
aGFuZ2VkJ30NCgkJCSAgICA9IFBlZXBob2xlTGl2ZW5lc3NCbG9jay5wZWVwaG9sZUxpdmVuZXNz
QmxvY2tfbWlub3INCgkJCSAgICAgIGJsb2NrDQoNCgkJCSAgdmFsIF8NCgkJCSAgICA9IEFzc2Vy
dC5hc3NlcnQNCgkJCSAgICAgICgidmVyaWZ5TGl2ZW5lc3NCbG9jazogcGVlcGhvbGVMaXZlbmVz
c0Jsb2NrX21pbm9yIiwNCgkJCSAgICAgICBmbiAoKSA9PiBMaXZlbmVzc0Jsb2NrLnZlcmlmeUxp
dmVuZXNzQmxvY2sNCgkJCSAgICAgICAgICAgICAgICB7YmxvY2sgPSBibG9jaycsDQoJCQkJCSBs
aXZlSW5mbyA9IGxpdmVJbmZvfSkNCg0KCQkJICB2YWwgYmxvY2sgPSBibG9jaycNCgkJCSAgdmFs
IGJsb2NrX3BlZXBob2xlTGl2ZW5lc3NCbG9ja19taW5vciA9IGJsb2NrDQoJCQkgIHZhbCBfIA0K
CQkJICAgID0gY2hhbmdlZF9tc2cNCgkJCSAgICAgIChjaGFuZ2VkJywgDQoJCQkgICAgICAgInBl
ZXBob2xlTGl2ZW5lc3NCbG9ja19taW5vciIpDQoJCQkgIHZhbCBjaGFuZ2VkID0gY2hhbmdlZCBv
cmVsc2UgY2hhbmdlZCcNCg0KCQkJICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKQ0KCQkJICAoKiB0b0Jsb2NrICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAqKQ0KCQkJICAoKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKQ0KCQkJICB2YWwgYmxvY2snDQoJCQkgICAgPSBMaXZl
bmVzc0Jsb2NrLnRvQmxvY2sgYmxvY2sNCgkJCSAgdmFsIGNoYW5nZWQnID0gZmFsc2UNCg0KCQkJ
ICB2YWwgYmxvY2sgPSBibG9jaycNCgkJCSAgdmFsIGJsb2NrX3RvQmxvY2sgPSBibG9jaw0KCQkJ
ICB2YWwgXyA9IGNoYW5nZWRfbXNnKGNoYW5nZWQnLCAidG9CbG9jayIpDQoJCQkgIHZhbCBjaGFu
Z2VkID0gY2hhbmdlZCBvcmVsc2UgY2hhbmdlZCcNCg0KCQkJICAoKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKQ0KCQkJICAoKiBwZWVwaG9sZUJsb2Nr
X3Bvc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKQ0KCQkJICAoKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKQ0KCQkJICB2YWwge2Jsb2Nr
ID0gYmxvY2snLA0KCQkJICAgICAgIGNoYW5nZWQgPSBjaGFuZ2VkJ30NCgkJCSAgICA9IFBlZXBo
b2xlQmxvY2sucGVlcGhvbGVCbG9ja19wb3N0DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBibG9jaw0KDQoJCQkgIHZhbCBibG9jayA9IGJsb2NrJw0KCQkJICB2YWwgYmxvY2tfcGVlcGhv
bGVCbG9ja19wb3N0ID0gYmxvY2sNCgkJCSAgdmFsIF8gPSBjaGFuZ2VkX21zZyhjaGFuZ2VkJywg
InBlZXBob2xlQmxvY2tfcG9zdCIpDQoJCQkgIHZhbCBjaGFuZ2VkID0gY2hhbmdlZCBvcmVsc2Ug
Y2hhbmdlZCcNCgkJCWluDQoJCQkgIHtibG9ja3MgPSBibG9jazo6YmxvY2tzLA0KCQkJICAgY2hh
bmdlZCA9IGNoYW5nZWR9DQoJCQllbmQpDQoNCgkgICAgICAgdmFsIGJsb2NrcyA9IGJsb2NrcycN
CgkgICAgICAgdmFsIF8gPSBjaGFuZ2VkX21zZyhjaGFuZ2VkJywgInBlZXBob2xlQmxvY2svbW92
ZUhvaXN0L3BlZXBob2xlTGl2ZW5lc3NCbG9jay9jb3B5UHJvcGFnYXRlIikNCgkgICAgICAgdmFs
IGNoYW5nZWQgPSBjaGFuZ2VkIG9yZWxzZSBjaGFuZ2VkJw0KDQoJICAgICAgICgqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKikNCgkg
ICAgICAgKCogdmVyaWZ5TGl2ZUluZm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAqKQ0KCSAgICAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKiopDQoJICAgICAgIHZhbCB7Y2hhbmdlZCA9IGNo
YW5nZWQnfSANCgkJID0gTGl2ZW5lc3MudmVyaWZ5TGl2ZUluZm8ge2Jsb2NrcyA9IGJsb2NrcywN
CgkJCQkJICAgIGxpdmVJbmZvID0gbGl2ZUluZm99DQoJICAgICAgIHZhbCBfID0gY2hhbmdlZF9t
c2coY2hhbmdlZCwgInZlcmlmeUxpdmVJbmZvIikNCgkgICAgICAgdmFsIGNoYW5nZWQgPSBjaGFu
Z2VkIG9yZWxzZSBjaGFuZ2VkJw0KCSAgICBpbg0KCSAgICAgIHtibG9ja3MgPSBibG9ja3MsDQoJ
ICAgICAgIGNoYW5nZWQgPSBjaGFuZ2VkfQ0KCSAgICBlbmQNCg0KDQoJKCoqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKikN
CgkoKiBvcHRpbWl6ZXJfbG9vcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAqKQ0KCSgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopDQoJZnVuIG9wdGltaXplcl9sb29wIGJs
b2Nrcw0KCSAgPSBsZXQNCgkgICAgICBmdW4gbG9vcCAoYmxvY2tzLGNoYW5nZWQpDQoJCT0gbGV0
DQoJCSAgICB2YWwge2Jsb2NrcywNCgkJCSBjaGFuZ2VkID0gY2hhbmdlZCd9DQoJCSAgICAgID0g
b3B0aW1pemVyIGJsb2Nrcw0KCQkgIGluDQoJCSAgICBpZiBjaGFuZ2VkJw0KCQkgICAgICB0aGVu
IGxvb3AgKGJsb2NrcywgdHJ1ZSkNCgkJICAgICAgZWxzZSAoYmxvY2tzLGNoYW5nZWQpDQoJCSAg
ZW5kDQoNCgkgICAgICB2YWwgKGJsb2NrcyxjaGFuZ2VkKSA9IGxvb3AgKGJsb2NrcyxmYWxzZSkN
CgkgICAgaW4NCgkgICAgICB7YmxvY2tzID0gYmxvY2tzLA0KCSAgICAgICBjaGFuZ2VkID0gY2hh
bmdlZH0NCgkgICAgZW5kDQoNCg0KCSgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopDQoJKCogYmxvY2tzICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKikNCgko
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKQ0KCXZhbCB7YmxvY2tzLC4uLn0NCgkgID0gY2FzZSBvcHRpbWl6ZQ0KCSAg
ICAgIG9mIDAgPT4ge2Jsb2NrcyA9IGJsb2NrcywgY2hhbmdlZCA9IGZhbHNlfQ0KCSAgICAgICB8
IDEgPT4gb3B0aW1pemVyIGJsb2Nrcw0KCSAgICAgICB8IF8gPT4gb3B0aW1pemVyX2xvb3AgYmxv
Y2tzDQoNCgkoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKQ0KCSgqIGFzc2VtYmx5ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopDQoJKCoqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKikN
Cgl2YWwgYXNzZW1ibHkNCgkgID0gR2VuZXJhdGVUcmFuc2ZlcnMuZ2VuZXJhdGVUcmFuc2ZlcnMN
CgkgICAge2Jsb2NrcyA9IGJsb2NrcywNCgkgICAgIGV4cG9ydHMgPSBleHBvcnRzLA0KCSAgICAg
b3B0aW1pemUgPSBvcHRpbWl6ZSwNCgkgICAgIGJsb2NrX3ByZSA9IGJsb2NrX3ByZSwNCgkgICAg
IGJsb2NrX2JlZ2luID0gYmxvY2tfYmVnaW4sDQoJICAgICBibG9ja19lbmQgPSBibG9ja19lbmQs
DQoJICAgICBibG9ja19mYWxsID0gYmxvY2tfZmFsbCwNCgkgICAgIHRyYW5zZmVyUmVncyA9IHRy
YW5zZmVyUmVncywNCgkgICAgIGxpdmVJbmZvID0gbGl2ZUluZm8sDQoJICAgICBqdW1wSW5mbyA9
IGp1bXBJbmZvfQ0KDQoJdmFsIF8gPSBMaXN0LmZvcmVhY2gobGFiZWxzLCBMYWJlbC5jbGVhcikN
CiAgICAgIGluDQoJYXNzZW1ibHkNCiAgICAgIGVuZA0KDQogIHZhbCAoc2ltcGxpZnksIHNpbXBs
aWZ5X21zZykNCiAgICA9IHRyYWNlcg0KICAgICAgInNpbXBsaWZ5Ig0KICAgICAgc2ltcGxpZnkN
Cg0KICBmdW4gc2ltcGxpZnlfdG90YWxzICgpDQogICAgPSAoc2ltcGxpZnlfbXNnICgpOw0KICAg
ICAgIENvbnRyb2wuaW5kZW50ICgpOw0KICAgICAgIExpdmVuZXNzLnZlcmlmeUxpdmVJbmZvX21z
ZyAoKTsNCiAgICAgICBKdW1wSW5mby5jb21wdXRlSnVtcEluZm9fbXNnICgpOw0KICAgICAgIEVs
aW1Hb3RvLmVsaW1Hb3RvX21zZyAoKTsNCiAgICAgICBKdW1wSW5mby52ZXJpZnlKdW1wSW5mb19t
c2cgKCk7DQogICAgICAgUGVlcGhvbGVCbG9jay5wZWVwaG9sZUJsb2NrX3ByZV9tc2cgKCk7DQog
ICAgICAgTGl2ZW5lc3NCbG9jay50b0xpdmVuZXNzQmxvY2tfbXNnICgpOw0KICAgICAgIE1vdmVI
b2lzdExpdmVuZXNzQmxvY2subW92ZUhvaXN0X21zZyAoKTsNCiAgICAgICBQZWVwaG9sZUxpdmVu
ZXNzQmxvY2sucGVlcGhvbGVMaXZlbmVzc0Jsb2NrX21zZyAoKTsNCiAgICAgICBDb3B5UHJvcGFn
YXRlTGl2ZW5lc3NCbG9jay5jb3B5UHJvcGFnYXRlX21zZyAoKTsNCiAgICAgICBQZWVwaG9sZUxp
dmVuZXNzQmxvY2sucGVlcGhvbGVMaXZlbmVzc0Jsb2NrX21pbm9yX21zZyAoKTsNCiAgICAgICBM
aXZlbmVzc0Jsb2NrLnZlcmlmeUxpdmVuZXNzQmxvY2tfbXNnICgpOw0KICAgICAgIExpdmVuZXNz
QmxvY2sudG9CbG9ja19tc2cgKCk7DQogICAgICAgUGVlcGhvbGVCbG9jay5wZWVwaG9sZUJsb2Nr
X3Bvc3RfbXNnICgpOw0KICAgICAgIEdlbmVyYXRlVHJhbnNmZXJzLmdlbmVyYXRlVHJhbnNmZXJz
X21zZyAoKTsNCiAgICAgICBDb250cm9sLmluZGVudCAoKTsNCiAgICAgICBMaXZlVHJhbnNmZXJJ
bmZvLmNvbXB1dGVMaXZlVHJhbnNmZXJJbmZvX21zZyAoKTsNCiAgICAgICBDb250cm9sLnVuaW5k
ZW50ICgpOw0KICAgICAgIENvbnRyb2wudW5pbmRlbnQgKCkpDQplbmQNCg==

---559023410-33463914-979849094=:15661--