<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>215363</bug_id>
          
          <creation_ts>2020-08-11 02:49:37 -0700</creation_ts>
          <short_desc>Web Inspector: rename `ScriptDebugServer` subclasses/methods</short_desc>
          <delta_ts>2020-08-24 21:45:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>215362</dependson>
          <blocked>215793</blocked>
    
    <blocked>215794</blocked>
    
    <blocked>215795</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Devin Rousso">hi</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>annulen</cc>
    
    <cc>bburg</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mkwst</cc>
    
    <cc>msaboff</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1679346</commentid>
    <comment_count>0</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-08-11 02:49:37 -0700</bug_when>
    <thetext>&lt;https://webkit.org/b/215362&gt; will `Inspector::ScriptDebugServer` into `JSC::Debugger`, so keeping the name around won&apos;t make much sense :/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681038</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-08-18 02:50:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/67310441&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682393</commentid>
    <comment_count>2</comment_count>
      <attachid>407111</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-08-24 10:47:35 -0700</bug_when>
    <thetext>Created attachment 407111
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682410</commentid>
    <comment_count>3</comment_count>
      <attachid>407111</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-08-24 11:31:59 -0700</bug_when>
    <thetext>Comment on attachment 407111
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682413</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-08-24 11:40:36 -0700</bug_when>
    <thetext>Committed r266077: &lt;https://trac.webkit.org/changeset/266077&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 407111.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407111</attachid>
            <date>2020-08-24 10:47:35 -0700</date>
            <delta_ts>2020-08-24 11:40:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215363-20200824104734.patch</filename>
            <type>text/plain</type>
            <size>122239</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDRhZTU4ODRkZDRlNzFhNjBmMTc5NTVhN2IzN2Ix
ZmI1ZDE5Mzk1YmYuLmRmNjkwNmU4NDE2MDRmMmUyZjViYTNjZWYwOTMyYTYxNjcxMGYzZGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIwLTA4LTI0ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBy
ZW5hbWUgYFNjcmlwdERlYnVnU2VydmVyYCBzdWJjbGFzc2VzL21ldGhvZHMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTM2MworICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNjczMTA0NDE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgcjI2NjA3NCBtZXJnZWQgYEluc3BlY3Rvcjo6U2NyaXB0RGVidWdTZXJ2
ZXJgIGludG8gYEpTQzo6RGVidWdnZXJgLiBBbGwgc3ViY2xhc3NlcyBhbmQKKyAgICAgICAgZnVu
Y3Rpb25zIHNob3VsZCBiZSByZW5hbWVkIHRvIG1hdGNoIHRoaXMgY2hhbmdlLgorCisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBT
b3VyY2VzLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRW52aXJvbm1lbnQuaDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvSlNHbG9iYWxPYmplY3REZWJ1Z2dlci5oOiBSZW5hbWVkIGZy
b20gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdFNjcmlwdERl
YnVnU2VydmVyLmguCisgICAgICAgICogaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0RGVidWdnZXIu
Y3BwOiBSZW5hbWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2Jh
bE9iamVjdFNjcmlwdERlYnVnU2VydmVyLmNwcC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSlNHbG9i
YWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL0pTR2xv
YmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JBdWRpdEFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JBdWRpdEFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
UnVudGltZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50
aW1lQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yU2NyaXB0
UHJvZmlsZXJBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9i
amVjdERlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUvUmVtb3Rl
SW5zcGVjdGlvblRhcmdldC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9S
ZW1vdGVDb25uZWN0aW9uVG9UYXJnZXRDb2NvYS5tbToKKwogMjAyMC0wOC0yNCAgRGV2aW4gUm91
c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogYWxsb3cg
ZXZlbnQgYnJlYWtwb2ludHMgdG8gYmUgY29uZmlndXJlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDlkZTM0ZDFj
MjJkM2Q3M2YyMjEyNGRlYWM1ZTYyMTkxZWEyNjE4ZWQuLmU0MTdjMjA3ZmZhOWFjYmE3MDliMTIw
MGNmMjYxM2E2NzA4MzllNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAyMC0wOC0y
NCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogcmVuYW1lIGBTY3JpcHREZWJ1Z1NlcnZlcmAgc3ViY2xhc3Nlcy9tZXRob2RzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTUzNjMKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzY3MzEwNDQxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIHIyNjYwNzQgbWVyZ2VkIGBJbnNwZWN0b3I6OlNjcmlwdERl
YnVnU2VydmVyYCBpbnRvIGBKU0M6OkRlYnVnZ2VyYC4gQWxsIHN1YmNsYXNzZXMgYW5kCisgICAg
ICAgIGZ1bmN0aW9ucyBzaG91bGQgYmUgcmVuYW1lZCB0byBtYXRjaCB0aGlzIGNoYW5nZS4KKwor
ICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAg
ICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgICogaW5z
cGVjdG9yL1BhZ2VEZWJ1Z2dlci5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5oLgorICAgICAgICAqIGluc3BlY3Rvci9QYWdlRGVi
dWdnZXIuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VTY3Jp
cHREZWJ1Z1NlcnZlci5jcHAuCisgICAgICAgICogaW5zcGVjdG9yL21hYy9QYWdlRGVidWdnZXJN
YWMubW06IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvbWFjL1BhZ2VTY3Jp
cHREZWJ1Z1NlcnZlck1hYy5tbS4KKyAgICAgICAgKiBpbnNwZWN0b3IvV29ya2VyRGVidWdnZXIu
aDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJTY3JpcHREZWJ1
Z1NlcnZlci5oLgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlci5jcHA6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIu
Y3BwLgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmg6Cisg
ICAgICAgICogaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHA6CisgICAgICAg
ICogaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcDoKKwogMjAyMC0w
OC0yNCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIElu
c3BlY3RvcjogYWxsb3cgZXZlbnQgYnJlYWtwb2ludHMgdG8gYmUgY29uZmlndXJlZApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1MWJmYTE5MjI2MGNmOTk5ODdhMzUwMzFkMjViNGM0
NDk2NzQxMGI2Li45MTM3MDBlYzkzOTdmNmEzNDA3YmI3MzJhNzEyZGJkNGIyMTY1MWI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTM5Myw3ICsxMzkzLDcgQEAKIAkJQTNGRjlC
QzcyMjM0NzQ5MTAwQjFBOUFCIC8qIFlhcnJGbGFncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTNGRjlCQzUyMjM0NzQ2NjAwQjFBOUFCIC8qIFlhcnJG
bGFncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUE1MDNGQTFBMTg4RTBGQjAwMDExMEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExNDE4OEUwRkFG
MDAxMTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5oICovOyB9OwogCQlBNTAzRkExRTE4OEUw
RkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExODE4OEUwRkIwMDAx
MTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmggKi87IH07Ci0JCUE1MDNG
QTJBMTg4RjEwNTkwMDExMEYxNCAvKiBKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkEyODE4
OEYxMDU5MDAxMTBGMTQgLyogSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlci5oICovOyB9
OworCQlBNTAzRkEyQTE4OEYxMDU5MDAxMTBGMTQgLyogSlNHbG9iYWxPYmplY3REZWJ1Z2dlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMjgx
ODhGMTA1OTAwMTEwRjE0IC8qIEpTR2xvYmFsT2JqZWN0RGVidWdnZXIuaCAqLzsgfTsKIAkJQTUw
OThCMDQxQzE2QUEwMjAwMDg3Nzk3IC8qIFNlY3VyaXR5LmZyYW1ld29yayBpbiBGcmFtZXdvcmtz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDk4QjAzMUMxNkFBMDIwMDA4
Nzc5NyAvKiBTZWN1cml0eS5mcmFtZXdvcmsgKi87IH07CiAJCUE1MEU0QjYyMTg4MDlERDUwMDY4
QTQ2RCAvKiBJbnNwZWN0b3JSdW50aW1lQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MEU0QjVFMTg4MDlERDUwMDY4QTQ2RCAvKiBJbnNwZWN0
b3JSdW50aW1lQWdlbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlBNTBFNEI2NDE4ODA5REQ1MDA2OEE0NkQgLyogSlNHbG9iYWxPYmplY3RSdW50
aW1lQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE1MEU0QjYwMTg4MDlERDUwMDY4QTQ2RCAvKiBKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5o
ICovOyB9OwpAQCAtNDM4OCw4ICs0Mzg4LDggQEAKIAkJQTUwM0ZBMTYxODhFMEZCMDAwMTEwRjE0
IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU0phdmFTY3JpcHRDYWxsRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTUwM0ZBMTcxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3Rv
dHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0phdmFTY3Jp
cHRDYWxsRnJhbWVQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
NTAzRkExODE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSmF2YVNjcmlwdENhbGxGcmFt
ZVByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNTAzRkEyNzE4OEYx
MDU5MDAxMTBGMTQgLyogSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVn
U2VydmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTUwM0ZBMjgxODhGMTA1
OTAwMTEwRjE0IC8qIEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTAzRkEyNzE4OEYxMDU5MDAxMTBGMTQg
LyogSlNHbG9iYWxPYmplY3REZWJ1Z2dlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0dsb2JhbE9iamVjdERlYnVnZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQTUwM0ZBMjgxODhGMTA1OTAwMTEwRjE0IC8qIEpTR2xvYmFsT2JqZWN0RGVi
dWdnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNHbG9iYWxPYmplY3RE
ZWJ1Z2dlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTA5OEIwMzFDMTZBQTAy
MDAwODc3OTcgLyogU2VjdXJpdHkuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBTZWN1cml0
eS5mcmFtZXdvcms7IHBhdGggPSBQbGF0Zm9ybXMvTWFjT1NYLnBsYXRmb3JtL0RldmVsb3Blci9T
REtzL01hY09TWDEwLjExLnNkay9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZy
YW1ld29yazsgc291cmNlVHJlZSA9IERFVkVMT1BFUl9ESVI7IH07CiAJCUE1MEU0QjVEMTg4MDlE
RDUwMDY4QTQ2RCAvKiBJbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUwRTRCNUUxODgwOURENTAwNjhBNDZEIC8qIEluc3BlY3Rv
clJ1bnRpbWVBZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0
b3JSdW50aW1lQWdlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg2ODgsMTAg
Kzg2ODgsMTAgQEAKIAkJCQlBNTAzRkExNDE4OEUwRkFGMDAxMTBGMTQgLyogSmF2YVNjcmlwdENh
bGxGcmFtZS5oICovLAogCQkJCUE1QzNBMUEzMThDMDQ5MDIwMEM5NTkzQSAvKiBKU0dsb2JhbE9i
amVjdENvbnNvbGVDbGllbnQuY3BwICovLAogCQkJCUE1QzNBMUE0MThDMDQ5MDIwMEM5NTkzQSAv
KiBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQuaCAqLywKKwkJCQlBNTAzRkEyNzE4OEYxMDU5
MDAxMTBGMTQgLyogSlNHbG9iYWxPYmplY3REZWJ1Z2dlci5jcHAgKi8sCisJCQkJQTUwM0ZBMjgx
ODhGMTA1OTAwMTEwRjE0IC8qIEpTR2xvYmFsT2JqZWN0RGVidWdnZXIuaCAqLywKIAkJCQlBNTEw
MDdCRTE4N0NDM0M2MDBCMzg4NzkgLyogSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVy
LmNwcCAqLywKIAkJCQlBNTEwMDdCRjE4N0NDM0M2MDBCMzg4NzkgLyogSlNHbG9iYWxPYmplY3RJ
bnNwZWN0b3JDb250cm9sbGVyLmggKi8sCi0JCQkJQTUwM0ZBMjcxODhGMTA1OTAwMTEwRjE0IC8q
IEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIuY3BwICovLAotCQkJCUE1MDNGQTI4MTg4
RjEwNTkwMDExMEYxNCAvKiBKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyLmggKi8sCiAJ
CQkJQTUxM0U1QkExODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCAq
LywKIAkJCQlBNTEzRTVCQjE4NUJGQUNDMDA3RTk1QUQgLyogSlNJbmplY3RlZFNjcmlwdEhvc3Qu
aCAqLywKIAkJCQlBNTEzRTVCQzE4NUJGQUNDMDA3RTk1QUQgLyogSlNJbmplY3RlZFNjcmlwdEhv
c3RQcm90b3R5cGUuY3BwICovLApAQCAtOTk3NSwxMiArOTk3NSwxMiBAQAogCQkJCTkxMjc4RDU4
MjFERURBOTYwMEI1NzE4NCAvKiBKU0dsb2JhbE9iamVjdEF1ZGl0QWdlbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE1QzNBMUE2MThDMDQ5MDIwMEM5NTkzQSAvKiBKU0dsb2JhbE9iamVjdENvbnNv
bGVDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1OTQ1NTkzMTgyNDc0NDcwMENDMzg0MyAv
KiBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1MDNGQTJB
MTg4RjEwNTkwMDExMEYxNCAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2VyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBNTdEMjNFQTE4OTFCMDc3MDAzMUM3RkEgLyogSlNHbG9iYWxPYmplY3REZWJ1Z2dl
ckFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzc1NkZDOTBFMjAzMUIyMDBERTdEMTIgLyog
SlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTc5QjgxOTkzMURE
MjVDRjUwMEREQzcxNCAvKiBKU0dsb2JhbE9iamVjdElubGluZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE1MTAwN0MxMTg3Q0MzQzYwMEIzODg3OSAvKiBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNv
bnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MEU0QjY0MTg4MDlERDUwMDY4QTQ2RCAv
KiBKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTUwM0ZB
MkExODhGMTA1OTAwMTEwRjE0IC8qIEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGMENBRUZDMUVDNERBNkIwMDk3MEQxMiAvKiBKU0hlYXBGaW5h
bGl6ZXJQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1M0YxMUY0MTIwOTEzOEQ3MDBFNDEx
QTcgLyogSlNJbW11dGFibGVCdXR0ZXJmbHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MTNFNUMw
MTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2NyaXB0SG9zdC5oIGluIEhlYWRlcnMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggMDA4M2Y0ZTQ0OWY1ODFkMTZhNzgwNWQz
OTViNTU0ZDNiMTJlMGJhZi4uMGU4MzdkMWQ1MmE0ZTg0MDY5YmMzNmM5MzlmMGJiODZjOTdhYjQ3
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtNTgyLDggKzU4Miw4IEBAIGluc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZFJvdXRlci5jcHAKIGluc3BlY3Rvci9JbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlci5jcHAKIGluc3BlY3Rvci9JbnNwZWN0b3JUYXJnZXQuY3BwCiBpbnNwZWN0
b3IvSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50LmNwcAoraW5zcGVjdG9yL0pTR2xvYmFsT2Jq
ZWN0RGVidWdnZXIuY3BwCiBpbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9s
bGVyLmNwcAotaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIuY3BwCiBp
bnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCiBpbnNwZWN0b3IvSlNJbmplY3RlZFNj
cmlwdEhvc3RQcm90b3R5cGUuY3BwCiBpbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JF
bnZpcm9ubWVudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JF
bnZpcm9ubWVudC5oCmluZGV4IGM1YjEyNmU4MDU2MWY3MDZkNWYzYzc4YTgyMWQ2ZWMxZTVjOWM0
OTguLjIwNGMwY2E5YjhlZDhhMjNmODZlMzcwMDQzMDI5ODRhZDMwODE3OTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRW52aXJvbm1lbnQuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckVudmlyb25tZW50
LmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgSW5zcGVjdG9yRXZhbHVh
dGVIYW5kbGVyIGV2YWx1YXRlSGFuZGxlcigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZnJvbnRlbmRJbml0aWFsaXplZCgpID0gMDsKICAgICB2aXJ0dWFsIFdURjo6U3RvcHdhdGNoJiBl
eGVjdXRpb25TdG9wd2F0Y2goKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBKU0M6OkRlYnVnZ2Vy
JiBzY3JpcHREZWJ1Z1NlcnZlcigpID0gMDsKKyAgICB2aXJ0dWFsIEpTQzo6RGVidWdnZXImIGRl
YnVnZ2VyKCkgPSAwOwogICAgIHZpcnR1YWwgSlNDOjpWTSYgdm0oKSA9IDA7CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0RGVi
dWdnZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVj
dERlYnVnZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MThjZGUxODkzZjQyY2E3Njc3ZjdlMGUwODAzZDM2
MGZlZDA3NjczCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9KU0dsb2JhbE9iamVjdERlYnVnZ2VyLmNwcApAQCAtMCwwICsxLDkwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE0LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3REZWJ1Z2dlci5oIgorCisjaW5jbHVkZSAi
SlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU0xvY2suaCIKKyNpbmNsdWRlIDx3dGYvUnVu
TG9vcC5oPgorCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsK
KworSlNHbG9iYWxPYmplY3REZWJ1Z2dlcjo6SlNHbG9iYWxPYmplY3REZWJ1Z2dlcihKU0dsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0KQorICAgIDogRGVidWdnZXIoZ2xvYmFsT2JqZWN0LnZtKCkp
CisgICAgLCBtX2dsb2JhbE9iamVjdChnbG9iYWxPYmplY3QpCit7Cit9CisKK3ZvaWQgSlNHbG9i
YWxPYmplY3REZWJ1Z2dlcjo6YXR0YWNoRGVidWdnZXIoKQoreworICAgIEpTQzo6RGVidWdnZXI6
OmF0dGFjaERlYnVnZ2VyKCk7CisKKyAgICBhdHRhY2goJm1fZ2xvYmFsT2JqZWN0KTsKK30KKwor
dm9pZCBKU0dsb2JhbE9iamVjdERlYnVnZ2VyOjpkZXRhY2hEZWJ1Z2dlcihib29sIGlzQmVpbmdE
ZXN0cm95ZWQpCit7CisgICAgSlNDOjpEZWJ1Z2dlcjo6ZGV0YWNoRGVidWdnZXIoaXNCZWluZ0Rl
c3Ryb3llZCk7CisKKyAgICBkZXRhY2goJm1fZ2xvYmFsT2JqZWN0LCBpc0JlaW5nRGVzdHJveWVk
ID8gRGVidWdnZXI6Okdsb2JhbE9iamVjdElzRGVzdHJ1Y3RpbmcgOiBEZWJ1Z2dlcjo6VGVybWlu
YXRpbmdEZWJ1Z2dpbmdTZXNzaW9uKTsKKyAgICBpZiAoIWlzQmVpbmdEZXN0cm95ZWQpCisgICAg
ICAgIHJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKCk7Cit9CisKK3ZvaWQgSlNHbG9iYWxPYmplY3RE
ZWJ1Z2dlcjo6cnVuRXZlbnRMb29wV2hpbGVQYXVzZWQoKQoreworICAgIEpTQzo6RGVidWdnZXI6
OnJ1bkV2ZW50TG9vcFdoaWxlUGF1c2VkKCk7CisKKyAgICAvLyBEcm9wIGFsbCBsb2NrcyBzbyBh
bm90aGVyIHRocmVhZCBjYW4gd29yayBpbiB0aGUgVk0gd2hpbGUgd2UgYXJlIG5lc3RlZC4KKyAg
ICBKU0M6OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcygmbV9nbG9iYWxPYmplY3Qu
dm0oKSk7CisKKyAgICB3aGlsZSAoIWRvbmVQcm9jZXNzaW5nRGVidWdnZXJFdmVudHMoKSkgewor
ICAgICAgICBpZiAoUnVuTG9vcDo6Y3ljbGUoSlNHbG9iYWxPYmplY3REZWJ1Z2dlcjo6cnVuTG9v
cE1vZGUoKSkgPT0gUnVuTG9vcDo6Q3ljbGVSZXN1bHQ6OlN0b3ApCisgICAgICAgICAgICBicmVh
azsKKyAgICB9Cit9CisKK1J1bkxvb3BNb2RlIEpTR2xvYmFsT2JqZWN0RGVidWdnZXI6OnJ1bkxv
b3BNb2RlKCkKK3sKKyNpZiBVU0UoQ0YpICYmICFQTEFURk9STShXQVRDSE9TKQorICAgIC8vIFJ1
biB0aGUgUnVuTG9vcCBpbiBhIGN1c3RvbSBydW4gbG9vcCBtb2RlIHRvIHByZXZlbnQgZGVmYXVs
dCBvYnNlcnZlcnMKKyAgICAvLyB0byBydW4gYW5kIHBvdGVudGlhbGx5IGV2YWx1YXRlIEphdmFT
Y3JpcHQgaW4gdGhpcyBjb250ZXh0IHdoaWxlIHdlIGFyZQorICAgIC8vIG5lc3RlZC4gT25seSB0
aGUgZGVidWdnZXIgc2hvdWxkIGNvbnRyb2wgdGhpbmdzIHVudGlsIHdlIGNvbnRpbnVlLgorICAg
IC8vIEZJWE1FOiBUaGlzIGlzIG5vdCBhIHBlcmZlY3Qgc29sdXRpb24sIGFzIGJhY2tncm91bmQg
dGhyZWFkcyBhcmUgbm90CisgICAgLy8gcGF1c2VkIGFuZCBjYW4gc3RpbGwgYWNjZXNzIGFuZCBl
dmFsdXRlIHNjcmlwdCBpbiB0aGUgSlNDb250ZXh0LgorCisgICAgLy8gRklYTUU6IDxyZGFyOi8v
cHJvYmxlbS8yNTk3Mjc3Nz4uIE9uIHdhdGNoT1MsIGluIG9yZGVyIGZvciBhdXRvLWF0dGFjaCB0
byB3b3JrLAorICAgIC8vIHdlIG5lZWQgdG8gcnVuIGluIHRoZSBkZWZhdWx0IHJ1biBsb29wIG1v
ZGUgb3RoZXJ3aXNlIHdlIGRvIG5vdCByZWNlaXZlIHRoZSBYUEMgbWVzc2FnZXMKKyAgICAvLyBu
ZWNlc3NhcnkgdG8gc2V0dXAgdGhlIHJlbGF5IGNvbm5lY3Rpb24gYW5kIG5lZ290aWF0ZSBhbiBh
dXRvLWF0dGFjaCBkZWJ1Z2dlci4KKyAgICByZXR1cm4gQ0ZTVFIoImNvbS5hcHBsZS5KYXZhU2Ny
aXB0Q29yZS5yZW1vdGUtaW5zcGVjdG9yLXJ1bmxvb3AtbW9kZSIpOworI2Vsc2UKKyAgICByZXR1
cm4gRGVmYXVsdFJ1bkxvb3BNb2RlOworI2VuZGlmCit9CisKK30gLy8gbmFtZXNwYWNlIEluc3Bl
Y3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2Jh
bE9iamVjdERlYnVnZ2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xv
YmFsT2JqZWN0RGVidWdnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMzJjYzQwYzk1OWU5OWNkYjNiODcyMDc4
MjAzZDNhMmZkZTFjOGNlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdERlYnVnZ2VyLmgKQEAgLTAsMCArMSw1MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJEZWJ1Z2dlci5oIgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisK
K25hbWVzcGFjZSBJbnNwZWN0b3IgeworCitjbGFzcyBKU0dsb2JhbE9iamVjdERlYnVnZ2VyIGZp
bmFsIDogcHVibGljIEpTQzo6RGVidWdnZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEpT
R2xvYmFsT2JqZWN0RGVidWdnZXIpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVi
bGljOgorICAgIEpTR2xvYmFsT2JqZWN0RGVidWdnZXIoSlNDOjpKU0dsb2JhbE9iamVjdCYpOwor
ICAgIH5KU0dsb2JhbE9iamVjdERlYnVnZ2VyKCkgZmluYWwgeyB9CisKKyAgICBKU0M6OkpTR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QoKSBjb25zdCB7IHJldHVybiBtX2dsb2JhbE9iamVjdDsg
fQorCisgICAgc3RhdGljIFJ1bkxvb3BNb2RlIHJ1bkxvb3BNb2RlKCk7CisKK3ByaXZhdGU6Cisg
ICAgLy8gSlNDOjpEZWJ1Z2dlcgorICAgIHZvaWQgYXR0YWNoRGVidWdnZXIoKSBmaW5hbDsKKyAg
ICB2b2lkIGRldGFjaERlYnVnZ2VyKGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCkgZmluYWw7CisgICAg
dm9pZCBydW5FdmVudExvb3BXaGlsZVBhdXNlZCgpIGZpbmFsOworCisgICAgSlNDOjpKU0dsb2Jh
bE9iamVjdCYgbV9nbG9iYWxPYmplY3Q7Cit9OworCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmpl
Y3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCAxY2IwNDM3MmQz
MTc4M2YxZjgwNjEzNjQ2YzkzZjY0ZWJmNGVjYmJkLi5kNGRiNTYzZWJkNzY1MzI2NjA0ZjUxMmMz
MWU5ZGIyODZkMTA4M2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIu
Y3BwCkBAIC02Miw3ICs2Miw3IEBAIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6
SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyKEpTR2xvYmFsT2JqCiAgICAgOiBtX2ds
b2JhbE9iamVjdChnbG9iYWxPYmplY3QpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlciht
YWtlVW5pcXVlPEluamVjdGVkU2NyaXB0TWFuYWdlcj4oKnRoaXMsIEluamVjdGVkU2NyaXB0SG9z
dDo6Y3JlYXRlKCkpKQogICAgICwgbV9leGVjdXRpb25TdG9wd2F0Y2goU3RvcHdhdGNoOjpjcmVh
dGUoKSkKLSAgICAsIG1fc2NyaXB0RGVidWdTZXJ2ZXIoZ2xvYmFsT2JqZWN0KQorICAgICwgbV9k
ZWJ1Z2dlcihnbG9iYWxPYmplY3QpCiAgICAgLCBtX2Zyb250ZW5kUm91dGVyKEZyb250ZW5kUm91
dGVyOjpjcmVhdGUoKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoQmFja2VuZERpc3BhdGNo
ZXI6OmNyZWF0ZShtX2Zyb250ZW5kUm91dGVyLmNvcHlSZWYoKSkpCiB7CkBAIC0yNDcsOSArMjQ3
LDkgQEAgU3RvcHdhdGNoJiBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmV4ZWN1
dGlvblN0b3B3YXRjaCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZXhlY3V0aW9uU3RvcHdhdGNoOwog
fQogCi1KU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyJiBKU0dsb2JhbE9iamVjdEluc3Bl
Y3RvckNvbnRyb2xsZXI6OnNjcmlwdERlYnVnU2VydmVyKCkKK0pTR2xvYmFsT2JqZWN0RGVidWdn
ZXImIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGVidWdnZXIoKQogewotICAg
IHJldHVybiBtX3NjcmlwdERlYnVnU2VydmVyOworICAgIHJldHVybiBtX2RlYnVnZ2VyOwogfQog
CiBWTSYgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjp2bSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9y
Q29udHJvbGxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9i
amVjdEluc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCAzZDk2ZTRjZWJkZjMzNGQ2ZDYwNGMzMmQ2
MWVjYWU3MmEzMzA1MjY4Li41MTFlNjZkYjA0N2E0YmQ2YjEzMmNmZmE0N2YxNTY3M2M0M2ExNGU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2Jq
ZWN0SW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTI4LDcgKzI4LDcg
QEAKICNpbmNsdWRlICJJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9yRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZFJvdXRlci5oIgot
I2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIuaCIKKyNpbmNsdWRlICJK
U0dsb2JhbE9iamVjdERlYnVnZ2VyLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
QEAgLTg5LDcgKzg5LDcgQEAgcHVibGljOgogICAgIEluc3BlY3RvckV2YWx1YXRlSGFuZGxlciBl
dmFsdWF0ZUhhbmRsZXIoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIGZyb250ZW5kSW5pdGlhbGl6
ZWQoKSBmaW5hbDsKICAgICBXVEY6OlN0b3B3YXRjaCYgZXhlY3V0aW9uU3RvcHdhdGNoKCkgY29u
c3QgZmluYWw7Ci0gICAgSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlciYgc2NyaXB0RGVi
dWdTZXJ2ZXIoKSBmaW5hbDsKKyAgICBKU0dsb2JhbE9iamVjdERlYnVnZ2VyJiBkZWJ1Z2dlcigp
IGZpbmFsOwogICAgIEpTQzo6Vk0mIHZtKCkgZmluYWw7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9S
X0FMVEVSTkFURV9ESVNQQVRDSEVSUykKQEAgLTExNCw3ICsxMTQsNyBAQCBwcml2YXRlOgogICAg
IHN0ZDo6dW5pcXVlX3B0cjxJbmplY3RlZFNjcmlwdE1hbmFnZXI+IG1faW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ+
IG1fY29uc29sZUNsaWVudDsKICAgICBSZWY8V1RGOjpTdG9wd2F0Y2g+IG1fZXhlY3V0aW9uU3Rv
cHdhdGNoOwotICAgIEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIgbV9zY3JpcHREZWJ1
Z1NlcnZlcjsKKyAgICBKU0dsb2JhbE9iamVjdERlYnVnZ2VyIG1fZGVidWdnZXI7CiAKICAgICBB
Z2VudFJlZ2lzdHJ5IG1fYWdlbnRzOwogICAgIEluc3BlY3RvckNvbnNvbGVBZ2VudCogbV9jb25z
b2xlQWdlbnQgeyBudWxscHRyIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzJmNzBjN2QwY2M4Mjk5Zjg2ZTUyMmJm
NzhhOTU5NmEyZjgwZGEwNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0U2Ny
aXB0RGVidWdTZXJ2ZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsOTAgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIuaCIKLQot
I2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCi0jaW5jbHVkZSAiSlNMb2NrLmgiCi0jaW5jbHVk
ZSA8d3RmL1J1bkxvb3AuaD4KLQotbmFtZXNwYWNlIEluc3BlY3RvciB7Ci0KLXVzaW5nIG5hbWVz
cGFjZSBKU0M7Ci0KLUpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXI6OkpTR2xvYmFsT2Jq
ZWN0U2NyaXB0RGVidWdTZXJ2ZXIoSlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKLSAgICA6
IERlYnVnZ2VyKGdsb2JhbE9iamVjdC52bSgpKQotICAgICwgbV9nbG9iYWxPYmplY3QoZ2xvYmFs
T2JqZWN0KQotewotfQotCi12b2lkIEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXI6OmF0
dGFjaERlYnVnZ2VyKCkKLXsKLSAgICBKU0M6OkRlYnVnZ2VyOjphdHRhY2hEZWJ1Z2dlcigpOwot
Ci0gICAgYXR0YWNoKCZtX2dsb2JhbE9iamVjdCk7Ci19Ci0KLXZvaWQgSlNHbG9iYWxPYmplY3RT
Y3JpcHREZWJ1Z1NlcnZlcjo6ZGV0YWNoRGVidWdnZXIoYm9vbCBpc0JlaW5nRGVzdHJveWVkKQot
ewotICAgIEpTQzo6RGVidWdnZXI6OmRldGFjaERlYnVnZ2VyKGlzQmVpbmdEZXN0cm95ZWQpOwot
Ci0gICAgZGV0YWNoKCZtX2dsb2JhbE9iamVjdCwgaXNCZWluZ0Rlc3Ryb3llZCA/IERlYnVnZ2Vy
OjpHbG9iYWxPYmplY3RJc0Rlc3RydWN0aW5nIDogRGVidWdnZXI6OlRlcm1pbmF0aW5nRGVidWdn
aW5nU2Vzc2lvbik7Ci0gICAgaWYgKCFpc0JlaW5nRGVzdHJveWVkKQotICAgICAgICByZWNvbXBp
bGVBbGxKU0Z1bmN0aW9ucygpOwotfQotCi12b2lkIEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdT
ZXJ2ZXI6OnJ1bkV2ZW50TG9vcFdoaWxlUGF1c2VkKCkKLXsKLSAgICBKU0M6OkRlYnVnZ2VyOjpy
dW5FdmVudExvb3BXaGlsZVBhdXNlZCgpOwotCi0gICAgLy8gRHJvcCBhbGwgbG9ja3Mgc28gYW5v
dGhlciB0aHJlYWQgY2FuIHdvcmsgaW4gdGhlIFZNIHdoaWxlIHdlIGFyZSBuZXN0ZWQuCi0gICAg
SlNDOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoJm1fZ2xvYmFsT2JqZWN0LnZt
KCkpOwotCi0gICAgd2hpbGUgKCFkb25lUHJvY2Vzc2luZ0RlYnVnZ2VyRXZlbnRzKCkpIHsKLSAg
ICAgICAgaWYgKFJ1bkxvb3A6OmN5Y2xlKEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXI6
OnJ1bkxvb3BNb2RlKCkpID09IFJ1bkxvb3A6OkN5Y2xlUmVzdWx0OjpTdG9wKQotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgfQotfQotCi1SdW5Mb29wTW9kZSBKU0dsb2JhbE9iamVjdFNjcmlwdERl
YnVnU2VydmVyOjpydW5Mb29wTW9kZSgpCi17Ci0jaWYgVVNFKENGKSAmJiAhUExBVEZPUk0oV0FU
Q0hPUykKLSAgICAvLyBSdW4gdGhlIFJ1bkxvb3AgaW4gYSBjdXN0b20gcnVuIGxvb3AgbW9kZSB0
byBwcmV2ZW50IGRlZmF1bHQgb2JzZXJ2ZXJzCi0gICAgLy8gdG8gcnVuIGFuZCBwb3RlbnRpYWxs
eSBldmFsdWF0ZSBKYXZhU2NyaXB0IGluIHRoaXMgY29udGV4dCB3aGlsZSB3ZSBhcmUKLSAgICAv
LyBuZXN0ZWQuIE9ubHkgdGhlIGRlYnVnZ2VyIHNob3VsZCBjb250cm9sIHRoaW5ncyB1bnRpbCB3
ZSBjb250aW51ZS4KLSAgICAvLyBGSVhNRTogVGhpcyBpcyBub3QgYSBwZXJmZWN0IHNvbHV0aW9u
LCBhcyBiYWNrZ3JvdW5kIHRocmVhZHMgYXJlIG5vdAotICAgIC8vIHBhdXNlZCBhbmQgY2FuIHN0
aWxsIGFjY2VzcyBhbmQgZXZhbHV0ZSBzY3JpcHQgaW4gdGhlIEpTQ29udGV4dC4KLQotICAgIC8v
IEZJWE1FOiA8cmRhcjovL3Byb2JsZW0vMjU5NzI3Nzc+LiBPbiB3YXRjaE9TLCBpbiBvcmRlciBm
b3IgYXV0by1hdHRhY2ggdG8gd29yaywKLSAgICAvLyB3ZSBuZWVkIHRvIHJ1biBpbiB0aGUgZGVm
YXVsdCBydW4gbG9vcCBtb2RlIG90aGVyd2lzZSB3ZSBkbyBub3QgcmVjZWl2ZSB0aGUgWFBDIG1l
c3NhZ2VzCi0gICAgLy8gbmVjZXNzYXJ5IHRvIHNldHVwIHRoZSByZWxheSBjb25uZWN0aW9uIGFu
ZCBuZWdvdGlhdGUgYW4gYXV0by1hdHRhY2ggZGVidWdnZXIuCi0gICAgcmV0dXJuIENGU1RSKCJj
b20uYXBwbGUuSmF2YVNjcmlwdENvcmUucmVtb3RlLWluc3BlY3Rvci1ydW5sb29wLW1vZGUiKTsK
LSNlbHNlCi0gICAgcmV0dXJuIERlZmF1bHRSdW5Mb29wTW9kZTsKLSNlbmRpZgotfQotCi19IC8v
IG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3NzFhMTg3OTdkZTc4NWRjMzViOGMyODU5MTVm
OGUwYzNiOWNjZjMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdFNjcmlwdERl
YnVnU2VydmVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE0LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lu
Y2x1ZGUgIkRlYnVnZ2VyLmgiCi0jaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KLQotbmFtZXNwYWNl
IEluc3BlY3RvciB7Ci0KLWNsYXNzIEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIgZmlu
YWwgOiBwdWJsaWMgSlNDOjpEZWJ1Z2dlciB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSlNH
bG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlcik7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7Ci1wdWJsaWM6Ci0gICAgSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlcihKU0M6OkpT
R2xvYmFsT2JqZWN0Jik7Ci0gICAgfkpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIoKSBm
aW5hbCB7IH0KLQotICAgIEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCgpIGNvbnN0
IHsgcmV0dXJuIG1fZ2xvYmFsT2JqZWN0OyB9Ci0KLSAgICBzdGF0aWMgUnVuTG9vcE1vZGUgcnVu
TG9vcE1vZGUoKTsKLQotcHJpdmF0ZToKLSAgICAvLyBKU0M6OkRlYnVnZ2VyCi0gICAgdm9pZCBh
dHRhY2hEZWJ1Z2dlcigpIGZpbmFsOwotICAgIHZvaWQgZGV0YWNoRGVidWdnZXIoYm9vbCBpc0Jl
aW5nRGVzdHJveWVkKSBmaW5hbDsKLSAgICB2b2lkIHJ1bkV2ZW50TG9vcFdoaWxlUGF1c2VkKCkg
ZmluYWw7Ci0KLSAgICBKU0M6OkpTR2xvYmFsT2JqZWN0JiBtX2dsb2JhbE9iamVjdDsKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXVkaXRBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBdWRpdEFnZW50LmNwcAppbmRl
eCA5N2NlYTk0YmQ1YWZhYTY1YWU0MDNhM2QwOTUwNTJlZDc5OTI5Mjk4Li5jNDJjNGY5MzRkZjFi
ZjY2N2Q0YmEwMDhmMDk2YzU1OGQ4Y2E3NjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBdWRpdEFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBdWRpdEFnZW50LmNw
cApAQCAtNDMsNyArNDMsNyBAQCBJbnNwZWN0b3JBdWRpdEFnZW50OjpJbnNwZWN0b3JBdWRpdEFn
ZW50KEFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiQXVk
aXQiX3MpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEF1ZGl0QmFja2VuZERpc3BhdGNoZXI6
OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAgICAsIG1faW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKGNvbnRleHQuaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQotICAgICwgbV9z
Y3JpcHREZWJ1Z1NlcnZlcihjb250ZXh0LmVudmlyb25tZW50LnNjcmlwdERlYnVnU2VydmVyKCkp
CisgICAgLCBtX2RlYnVnZ2VyKGNvbnRleHQuZW52aXJvbm1lbnQuZGVidWdnZXIoKSkKIHsKIH0K
IApAQCAtMTA1LDE1ICsxMDUsMTUgQEAgdm9pZCBJbnNwZWN0b3JBdWRpdEFnZW50OjpydW4oRXJy
b3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRlc3QsIGNvbnMKIAogICAgIE9w
dGlvbmFsPGludD4gc2F2ZWRSZXN1bHRJbmRleDsKIAotICAgIGF1dG8gcHJldmlvdXNQYXVzZU9u
RXhjZXB0aW9uc1N0YXRlID0gbV9zY3JpcHREZWJ1Z1NlcnZlci5wYXVzZU9uRXhjZXB0aW9uc1N0
YXRlKCk7CisgICAgYXV0byBwcmV2aW91c1BhdXNlT25FeGNlcHRpb25zU3RhdGUgPSBtX2RlYnVn
Z2VyLnBhdXNlT25FeGNlcHRpb25zU3RhdGUoKTsKIAotICAgIG1fc2NyaXB0RGVidWdTZXJ2ZXIu
c2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShEZWJ1Z2dlcjo6RG9udFBhdXNlT25FeGNlcHRpb25z
KTsKKyAgICBtX2RlYnVnZ2VyLnNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUoRGVidWdnZXI6OkRv
bnRQYXVzZU9uRXhjZXB0aW9ucyk7CiAgICAgbXV0ZUNvbnNvbGUoKTsKIAogICAgIGluamVjdGVk
U2NyaXB0LmV4ZWN1dGUoZXJyb3JTdHJpbmcsIGZ1bmN0aW9uU3RyaW5nLnRvU3RyaW5nKCksIFdU
Rk1vdmUob3B0aW9ucyksIHJlc3VsdCwgd2FzVGhyb3duLCBzYXZlZFJlc3VsdEluZGV4KTsKIAog
ICAgIHVubXV0ZUNvbnNvbGUoKTsKLSAgICBtX3NjcmlwdERlYnVnU2VydmVyLnNldFBhdXNlT25F
eGNlcHRpb25zU3RhdGUocHJldmlvdXNQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKTsKKyAgICBtX2Rl
YnVnZ2VyLnNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUocHJldmlvdXNQYXVzZU9uRXhjZXB0aW9u
c1N0YXRlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JBdWRpdEFnZW50Ojp0ZWFyZG93bihFcnJvclN0
cmluZyYgZXJyb3JTdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBdWRpdEFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBdWRpdEFnZW50LmgKaW5kZXggMDZiMWE4M2Zk
ODIzNTM2MDgwMjY1ZjliOWIyMmYwNjU2OTBjZWM0MS4uNWI2ZDhhYWI3MjI2M2YxOGFhNjQxMDc4
NWMwMWM5YmE4YzRkMzBmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQXVkaXRBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckF1ZGl0QWdlbnQuaApAQCAtNzQsNyArNzQs
NyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIFJlZlB0cjxBdWRpdEJhY2tlbmREaXNwYXRj
aGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogICAgIEluamVjdGVkU2NyaXB0TWFuYWdlciYgbV9p
bmplY3RlZFNjcmlwdE1hbmFnZXI7Ci0gICAgSlNDOjpEZWJ1Z2dlciYgbV9zY3JpcHREZWJ1Z1Nl
cnZlcjsKKyAgICBKU0M6OkRlYnVnZ2VyJiBtX2RlYnVnZ2VyOwogCiAgICAgSlNDOjpTdHJvbmc8
SlNDOjpKU09iamVjdD4gbV9pbmplY3RlZFdlYkluc3BlY3RvckF1ZGl0VmFsdWU7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAppbmRleCAyYTRhOWQ0OTc1ZGUwZDZiNTU0YTU2
ODczZDY2ZDIwOWEwNTkzZjQxLi5jMzg2NWY2NmMwNzBiODAwMmI3MDUwOGM1MzI5OWM3ZDFhMWE0
NTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcApAQCAtMjE4LDcgKzIxOCw3
IEBAIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQoQWdlbnRD
b250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJEZWJ1Z2dlciJfcykK
ICAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8RGVidWdnZXJGcm9udGVuZERp
c3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0
Y2hlcihEZWJ1Z2dlckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlz
cGF0Y2hlciwgdGhpcykpCi0gICAgLCBtX3NjcmlwdERlYnVnU2VydmVyKGNvbnRleHQuZW52aXJv
bm1lbnQuc2NyaXB0RGVidWdTZXJ2ZXIoKSkKKyAgICAsIG1fZGVidWdnZXIoY29udGV4dC5lbnZp
cm9ubWVudC5kZWJ1Z2dlcigpKQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoY29udGV4
dC5pbmplY3RlZFNjcmlwdE1hbmFnZXIpCiB7CiAgICAgLy8gRklYTUU6IG1ha2UgcGF1c2VSZWFz
b24gb3B0aW9uYWwgc28gdGhhdCB0aGVyZSB3YXMgbm8gbmVlZCB0byBpbml0IGl0IHdpdGggIm90
aGVyIi4KQEAgLTI0MSw3ICsyNDEsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmVu
YWJsZSgpCiB7CiAgICAgbV9lbmFibGVkID0gdHJ1ZTsKIAotICAgIG1fc2NyaXB0RGVidWdTZXJ2
ZXIuYWRkT2JzZXJ2ZXIoKnRoaXMpOworICAgIG1fZGVidWdnZXIuYWRkT2JzZXJ2ZXIoKnRoaXMp
OwogCiAgICAgZm9yIChhdXRvKiBsaXN0ZW5lciA6IGNvcHlUb1ZlY3RvcihtX2xpc3RlbmVycykp
CiAgICAgICAgIGxpc3RlbmVyLT5kZWJ1Z2dlcldhc0VuYWJsZWQoKTsKQEAgLTI1Myw3ICsyNTMs
NyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmVuYWJsZSgpCiAgICAgICAgICAgICAg
ICAgYmxhY2tib3hUeXBlID0gSlNDOjpEZWJ1Z2dlcjo6QmxhY2tib3hUeXBlOjpJZ25vcmVkOwog
ICAgICAgICB9IGVsc2UgaWYgKHNob3VsZEJsYWNrYm94VVJMKHNjcmlwdC5zb3VyY2VVUkwpIHx8
IHNob3VsZEJsYWNrYm94VVJMKHNjcmlwdC51cmwpKQogICAgICAgICAgICAgYmxhY2tib3hUeXBl
ID0gSlNDOjpEZWJ1Z2dlcjo6QmxhY2tib3hUeXBlOjpEZWZlcnJlZDsKLSAgICAgICAgbV9zY3Jp
cHREZWJ1Z1NlcnZlci5zZXRCbGFja2JveFR5cGUoc291cmNlSUQsIGJsYWNrYm94VHlwZSk7Cisg
ICAgICAgIG1fZGVidWdnZXIuc2V0QmxhY2tib3hUeXBlKHNvdXJjZUlELCBibGFja2JveFR5cGUp
OwogICAgIH0KIH0KIApAQCAtMjYyLDEyICsyNjIsMTIgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpkaXNhYmxlKGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCkKICAgICBmb3IgKGF1dG8qIGxp
c3RlbmVyIDogY29weVRvVmVjdG9yKG1fbGlzdGVuZXJzKSkKICAgICAgICAgbGlzdGVuZXItPmRl
YnVnZ2VyV2FzRGlzYWJsZWQoKTsKIAotICAgIG1fc2NyaXB0RGVidWdTZXJ2ZXIucmVtb3ZlT2Jz
ZXJ2ZXIoKnRoaXMsIGlzQmVpbmdEZXN0cm95ZWQpOworICAgIG1fZGVidWdnZXIucmVtb3ZlT2Jz
ZXJ2ZXIoKnRoaXMsIGlzQmVpbmdEZXN0cm95ZWQpOwogCiAgICAgY2xlYXJJbnNwZWN0b3JCcmVh
a3BvaW50U3RhdGUoKTsKIAogICAgIGlmICghaXNCZWluZ0Rlc3Ryb3llZCkKLSAgICAgICAgbV9z
Y3JpcHREZWJ1Z1NlcnZlci5kZWFjdGl2YXRlQnJlYWtwb2ludHMoKTsKKyAgICAgICAgbV9kZWJ1
Z2dlci5kZWFjdGl2YXRlQnJlYWtwb2ludHMoKTsKIAogICAgIGNsZWFyQXN5bmNTdGFja1RyYWNl
RGF0YSgpOwogCkBAIC0yOTQsNyArMjk0LDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpkaXNhYmxlKEVycm9yU3RyaW5nJikKIAogYm9vbCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpi
cmVha3BvaW50c0FjdGl2ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc2NyaXB0RGVidWdTZXJ2
ZXIuYnJlYWtwb2ludHNBY3RpdmUoKTsKKyAgICByZXR1cm4gbV9kZWJ1Z2dlci5icmVha3BvaW50
c0FjdGl2ZSgpOwogfQogCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEFzeW5jU3Rh
Y2tUcmFjZURlcHRoKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IGRlcHRoKQpAQCAtMzE2
LDE5ICszMTYsMTkgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRBc3luY1N0YWNr
VHJhY2VEZXB0aChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGkKIHZvaWQgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludHNBY3RpdmUoRXJyb3JTdHJpbmcmLCBib29sIGFjdGl2
ZSkKIHsKICAgICBpZiAoYWN0aXZlKQotICAgICAgICBtX3NjcmlwdERlYnVnU2VydmVyLmFjdGl2
YXRlQnJlYWtwb2ludHMoKTsKKyAgICAgICAgbV9kZWJ1Z2dlci5hY3RpdmF0ZUJyZWFrcG9pbnRz
KCk7CiAgICAgZWxzZQotICAgICAgICBtX3NjcmlwdERlYnVnU2VydmVyLmRlYWN0aXZhdGVCcmVh
a3BvaW50cygpOworICAgICAgICBtX2RlYnVnZ2VyLmRlYWN0aXZhdGVCcmVha3BvaW50cygpOwog
fQogCiBib29sIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmlzUGF1c2VkKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gbV9zY3JpcHREZWJ1Z1NlcnZlci5pc1BhdXNlZCgpOworICAgIHJldHVybiBtX2Rl
YnVnZ2VyLmlzUGF1c2VkKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0
U3VwcHJlc3NBbGxQYXVzZXMoYm9vbCBzdXBwcmVzcykKIHsKLSAgICBtX3NjcmlwdERlYnVnU2Vy
dmVyLnNldFN1cHByZXNzQWxsUGF1c2VzKHN1cHByZXNzKTsKKyAgICBtX2RlYnVnZ2VyLnNldFN1
cHByZXNzQWxsUGF1c2VzKHN1cHByZXNzKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50Ojp1cGRhdGVQYXVzZVJlYXNvbkFuZERhdGEoRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6
OlJlYXNvbiByZWFzb24sIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgZGF0YSkKQEAgLTYxOSwxMyAr
NjE5LDEzIEBAIGJvb2wgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cmVzb2x2ZUJyZWFrcG9pbnQo
Y29uc3QgSlNDOjpEZWJ1Z2dlcjo6U2NyaXB0JiBzY3JpCiAgICAgaWYgKGRlYnVnZ2VyQnJlYWtw
b2ludC5saW5lTnVtYmVyKCkgPCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2NyaXB0LnN0YXJ0TGlu
ZSkgfHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNjcmlwdC5lbmRMaW5lKSA8IGRlYnVnZ2VyQnJl
YWtwb2ludC5saW5lTnVtYmVyKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVy
biBtX3NjcmlwdERlYnVnU2VydmVyLnJlc29sdmVCcmVha3BvaW50KGRlYnVnZ2VyQnJlYWtwb2lu
dCwgc2NyaXB0LnNvdXJjZVByb3ZpZGVyLmdldCgpKTsKKyAgICByZXR1cm4gbV9kZWJ1Z2dlci5y
ZXNvbHZlQnJlYWtwb2ludChkZWJ1Z2dlckJyZWFrcG9pbnQsIHNjcmlwdC5zb3VyY2VQcm92aWRl
ci5nZXQoKSk7CiB9CiAKIGJvb2wgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtwb2lu
dChKU0M6OkJyZWFrcG9pbnQmIGRlYnVnZ2VyQnJlYWtwb2ludCkKIHsKLSAgICBKU0M6OkpTTG9j
a0hvbGRlciBsb2NrZXIobV9zY3JpcHREZWJ1Z1NlcnZlci52bSgpKTsKLSAgICByZXR1cm4gbV9z
Y3JpcHREZWJ1Z1NlcnZlci5zZXRCcmVha3BvaW50KGRlYnVnZ2VyQnJlYWtwb2ludCk7CisgICAg
SlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKG1fZGVidWdnZXIudm0oKSk7CisgICAgcmV0dXJuIG1f
ZGVidWdnZXIuc2V0QnJlYWtwb2ludChkZWJ1Z2dlckJyZWFrcG9pbnQpOwogfQogCiB2b2lkIElu
c3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnJlbW92ZUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBjb25z
dCBJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkJiBwcm90b2NvbEJy
ZWFrcG9pbnRJRCkKQEAgLTYzNiw4ICs2MzYsOCBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OnJlbW92ZUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBjb25zdCBJbnNwZWN0b3I6OlBybwog
ICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGFjdGlvbiA6IGRlYnVnZ2VyQnJlYWtwb2ludC0+YWN0
aW9ucygpKQogICAgICAgICAgICAgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIucmVsZWFzZU9iamVj
dEdyb3VwKG9iamVjdEdyb3VwRm9yQnJlYWtwb2ludEFjdGlvbihhY3Rpb24uaWQpKTsKIAotICAg
ICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIobV9zY3JpcHREZWJ1Z1NlcnZlci52bSgpKTsK
LSAgICAgICAgbV9zY3JpcHREZWJ1Z1NlcnZlci5yZW1vdmVCcmVha3BvaW50KGRlYnVnZ2VyQnJl
YWtwb2ludCk7CisgICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcihtX2RlYnVnZ2VyLnZt
KCkpOworICAgICAgICBtX2RlYnVnZ2VyLnJlbW92ZUJyZWFrcG9pbnQoZGVidWdnZXJCcmVha3Bv
aW50KTsKICAgICB9CiB9CiAKQEAgLTY1OSw3ICs2NTksNyBAQCB2b2lkIEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQ6OmNvbnRpbnVlVG9Mb2NhdGlvbihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNv
bnN0CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX2NvbnRpbnVlVG9Mb2NhdGlvbkRlYnVn
Z2VyQnJlYWtwb2ludCkgewotICAgICAgICBtX3NjcmlwdERlYnVnU2VydmVyLnJlbW92ZUJyZWFr
cG9pbnQoKm1fY29udGludWVUb0xvY2F0aW9uRGVidWdnZXJCcmVha3BvaW50KTsKKyAgICAgICAg
bV9kZWJ1Z2dlci5yZW1vdmVCcmVha3BvaW50KCptX2NvbnRpbnVlVG9Mb2NhdGlvbkRlYnVnZ2Vy
QnJlYWtwb2ludCk7CiAgICAgICAgIG1fY29udGludWVUb0xvY2F0aW9uRGVidWdnZXJCcmVha3Bv
aW50ID0gbnVsbHB0cjsKICAgICB9CiAKQEAgLTY3MSw3ICs2NzEsNyBAQCB2b2lkIEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6OmNvbnRpbnVlVG9Mb2NhdGlvbihFcnJvclN0cmluZyYgZXJyb3JTdHJp
bmcsIGNvbnN0CiAKICAgICBhdXRvIHNjcmlwdEl0ZXJhdG9yID0gbV9zY3JpcHRzLmZpbmQoc291
cmNlSUQpOwogICAgIGlmIChzY3JpcHRJdGVyYXRvciA9PSBtX3NjcmlwdHMuZW5kKCkpIHsKLSAg
ICAgICAgbV9zY3JpcHREZWJ1Z1NlcnZlci5jb250aW51ZVByb2dyYW0oKTsKKyAgICAgICAgbV9k
ZWJ1Z2dlci5jb250aW51ZVByb2dyYW0oKTsKICAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIt
PnJlc3VtZWQoKTsKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBzY3JpcHQgZm9yIHNj
cmlwdElkIGluIGdpdmVuIGxvY2F0aW9uIl9zOwogICAgICAgICByZXR1cm47CkBAIC02ODcsNyAr
Njg3LDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpjb250aW51ZVRvTG9jYXRpb24o
RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdAogICAgIGF1dG8gZGVidWdnZXJCcmVha3Bv
aW50ID0gcHJvdG9jb2xCcmVha3BvaW50LT5jcmVhdGVEZWJ1Z2dlckJyZWFrcG9pbnQobV9uZXh0
RGVidWdnZXJCcmVha3BvaW50SUQrKywgc291cmNlSUQpOwogCiAgICAgaWYgKCFyZXNvbHZlQnJl
YWtwb2ludChzY3JpcHRJdGVyYXRvci0+dmFsdWUsIGRlYnVnZ2VyQnJlYWtwb2ludCkpIHsKLSAg
ICAgICAgbV9zY3JpcHREZWJ1Z1NlcnZlci5jb250aW51ZVByb2dyYW0oKTsKKyAgICAgICAgbV9k
ZWJ1Z2dlci5jb250aW51ZVByb2dyYW0oKTsKICAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIt
PnJlc3VtZWQoKTsKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiQ291bGQgbm90IHJlc29sdmUgYnJl
YWtwb2ludCJfczsKICAgICAgICAgcmV0dXJuOwpAQCAtNjk3LDcgKzY5Nyw3IEBAIHZvaWQgSW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6Y29udGludWVUb0xvY2F0aW9uKEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgY29uc3QKICAgICAgICAgLy8gVGhlcmUgaXMgYW4gZXhpc3RpbmcgYnJlYWtwb2lu
dCBhdCB0aGlzIGxvY2F0aW9uLiBJbnN0ZWFkIG9mCiAgICAgICAgIC8vIGFjdGluZyBsaWtlIGEg
c2VyaWVzIG9mIHN0ZXBzLCBqdXN0IHJlc3VtZSBhbmQgd2Ugd2lsbCBlaXRoZXIKICAgICAgICAg
Ly8gaGl0IHRoaXMgbmV3IGJyZWFrcG9pbnQgb3Igbm90LgotICAgICAgICBtX3NjcmlwdERlYnVn
U2VydmVyLmNvbnRpbnVlUHJvZ3JhbSgpOworICAgICAgICBtX2RlYnVnZ2VyLmNvbnRpbnVlUHJv
Z3JhbSgpOwogICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVzdW1lZCgpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQpAQCAtNzA3LDcgKzcwNyw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6Y29udGludWVUb0xvY2F0aW9uKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29u
c3QKICAgICAvLyBUcmVhdCB0aGlzIGFzIGEgc2VyaWVzIG9mIHN0ZXBzIHVudGlsIHJlYWNoaW5n
IHRoZSBuZXcgYnJlYWtwb2ludC4KICAgICAvLyBTbyBkb24ndCBpc3N1ZSBhIHJlc3VtZWQgZXZl
bnQgdW5sZXNzIHdlIGV4aXQgdGhlIFZNIHdpdGhvdXQgcGF1c2luZy4KICAgICB3aWxsU3RlcEFu
ZE1heUJlY29tZUlkbGUoKTsKLSAgICBtX3NjcmlwdERlYnVnU2VydmVyLmNvbnRpbnVlUHJvZ3Jh
bSgpOworICAgIG1fZGVidWdnZXIuY29udGludWVQcm9ncmFtKCk7CiB9CiAKIHZvaWQgSW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6c2VhcmNoSW5Db250ZW50KEVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZywgY29uc3QgU3RyaW5nJiBzY3JpcHRJRFN0ciwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3Qg
Ym9vbCogb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBvcHRpb25hbElzUmVnZXgs
IFJlZlB0cjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpHZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNo
Pj4mIHJlc3VsdHMpCkBAIC03NTQsOCArNzU0LDggQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50OjpzY2hlZHVsZVBhdXNlQXROZXh0T3Bwb3J0dW5pdHkoRGVidWdnZXJGcm9udGVuZERpc3AK
IAogICAgIHVwZGF0ZVBhdXNlUmVhc29uQW5kRGF0YShyZWFzb24sIFdURk1vdmUoZGF0YSkpOwog
Ci0gICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKG1fc2NyaXB0RGVidWdTZXJ2ZXIudm0oKSk7
Ci0gICAgbV9zY3JpcHREZWJ1Z1NlcnZlci5zY2hlZHVsZVBhdXNlQXROZXh0T3Bwb3J0dW5pdHko
KTsKKyAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIobV9kZWJ1Z2dlci52bSgpKTsKKyAgICBt
X2RlYnVnZ2VyLnNjaGVkdWxlUGF1c2VBdE5leHRPcHBvcnR1bml0eSgpOwogfQogCiB2b2lkIElu
c3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNhbmNlbFBhdXNlQXROZXh0T3Bwb3J0dW5pdHkoKQpAQCAt
NzY2LDE1ICs3NjYsMTUgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjYW5jZWxQYXVz
ZUF0TmV4dE9wcG9ydHVuaXR5KCkKICAgICBtX2phdmFTY3JpcHRQYXVzZVNjaGVkdWxlZCA9IGZh
bHNlOwogCiAgICAgY2xlYXJQYXVzZURldGFpbHMoKTsKLSAgICBtX3NjcmlwdERlYnVnU2VydmVy
LmNhbmNlbFBhdXNlQXROZXh0T3Bwb3J0dW5pdHkoKTsKKyAgICBtX2RlYnVnZ2VyLmNhbmNlbFBh
dXNlQXROZXh0T3Bwb3J0dW5pdHkoKTsKICAgICBtX2VuYWJsZVBhdXNlV2hlbklkbGUgPSBmYWxz
ZTsKIH0KIAogYm9vbCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzY2hlZHVsZVBhdXNlRm9yU3Bl
Y2lhbEJyZWFrcG9pbnQoSlNDOjpCcmVha3BvaW50JiBicmVha3BvaW50LCBEZWJ1Z2dlckZyb250
ZW5kRGlzcGF0Y2hlcjo6UmVhc29uIHJlYXNvbiwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBkYXRh
KQogewotICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcihtX3NjcmlwdERlYnVnU2VydmVyLnZt
KCkpOworICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcihtX2RlYnVnZ2VyLnZtKCkpOwogCi0g
ICAgaWYgKCFtX3NjcmlwdERlYnVnU2VydmVyLnNjaGVkdWxlUGF1c2VGb3JTcGVjaWFsQnJlYWtw
b2ludChicmVha3BvaW50KSkKKyAgICBpZiAoIW1fZGVidWdnZXIuc2NoZWR1bGVQYXVzZUZvclNw
ZWNpYWxCcmVha3BvaW50KGJyZWFrcG9pbnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICB1cGRhdGVQYXVzZVJlYXNvbkFuZERhdGEocmVhc29uLCBXVEZNb3ZlKGRhdGEpKTsKQEAgLTc4
Myw3ICs3ODMsNyBAQCBib29sIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNjaGVkdWxlUGF1c2VG
b3JTcGVjaWFsQnJlYWtwb2ludChKU0M6OkJyZWFrcG9pbnQmCiAKIGJvb2wgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6Y2FuY2VsUGF1c2VGb3JTcGVjaWFsQnJlYWtwb2ludChKU0M6OkJyZWFrcG9p
bnQmIGJyZWFrcG9pbnQpCiB7Ci0gICAgaWYgKCFtX3NjcmlwdERlYnVnU2VydmVyLmNhbmNlbFBh
dXNlRm9yU3BlY2lhbEJyZWFrcG9pbnQoYnJlYWtwb2ludCkpCisgICAgaWYgKCFtX2RlYnVnZ2Vy
LmNhbmNlbFBhdXNlRm9yU3BlY2lhbEJyZWFrcG9pbnQoYnJlYWtwb2ludCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIGNsZWFyUGF1c2VEZXRhaWxzKCk7CkBAIC04MDMsNyArODAzLDcg
QEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZXN1bWUoRXJyb3JTdHJpbmcmIGVycm9y
U3RyaW5nKQogICAgIH0KIAogICAgIGNhbmNlbFBhdXNlQXROZXh0T3Bwb3J0dW5pdHkoKTsKLSAg
ICBtX3NjcmlwdERlYnVnU2VydmVyLmNvbnRpbnVlUHJvZ3JhbSgpOworICAgIG1fZGVidWdnZXIu
Y29udGludWVQcm9ncmFtKCk7CiAgICAgbV9jb25kaXRpb25Ub0Rpc3BhdGNoUmVzdW1lZCA9IFNo
b3VsZERpc3BhdGNoUmVzdW1lZDo6V2hlbkNvbnRpbnVlZDsKIH0KIApAQCAtODEzLDcgKzgxMyw3
IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c3RlcE5leHQoRXJyb3JTdHJpbmcmIGVy
cm9yU3RyaW5nKQogICAgICAgICByZXR1cm47CiAKICAgICB3aWxsU3RlcEFuZE1heUJlY29tZUlk
bGUoKTsKLSAgICBtX3NjcmlwdERlYnVnU2VydmVyLnN0ZXBOZXh0RXhwcmVzc2lvbigpOworICAg
IG1fZGVidWdnZXIuc3RlcE5leHRFeHByZXNzaW9uKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6c3RlcE92ZXIoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nKQpAQCAtODIyLDcg
KzgyMiw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c3RlcE92ZXIoRXJyb3JTdHJp
bmcmIGVycm9yU3RyaW5nKQogICAgICAgICByZXR1cm47CiAKICAgICB3aWxsU3RlcEFuZE1heUJl
Y29tZUlkbGUoKTsKLSAgICBtX3NjcmlwdERlYnVnU2VydmVyLnN0ZXBPdmVyU3RhdGVtZW50KCk7
CisgICAgbV9kZWJ1Z2dlci5zdGVwT3ZlclN0YXRlbWVudCgpOwogfQogCiB2b2lkIEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6OnN0ZXBJbnRvKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZykKQEAgLTgz
MSw3ICs4MzEsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnN0ZXBJbnRvKEVycm9y
U3RyaW5nJiBlcnJvclN0cmluZykKICAgICAgICAgcmV0dXJuOwogCiAgICAgd2lsbFN0ZXBBbmRN
YXlCZWNvbWVJZGxlKCk7Ci0gICAgbV9zY3JpcHREZWJ1Z1NlcnZlci5zdGVwSW50b1N0YXRlbWVu
dCgpOworICAgIG1fZGVidWdnZXIuc3RlcEludG9TdGF0ZW1lbnQoKTsKIH0KIAogdm9pZCBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OjpzdGVwT3V0KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZykKQEAg
LTg0MCwxNCArODQwLDE0IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c3RlcE91dChF
cnJvclN0cmluZyYgZXJyb3JTdHJpbmcpCiAgICAgICAgIHJldHVybjsKIAogICAgIHdpbGxTdGVw
QW5kTWF5QmVjb21lSWRsZSgpOwotICAgIG1fc2NyaXB0RGVidWdTZXJ2ZXIuc3RlcE91dE9mRnVu
Y3Rpb24oKTsKKyAgICBtX2RlYnVnZ2VyLnN0ZXBPdXRPZkZ1bmN0aW9uKCk7CiB9CiAKIHZvaWQg
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cmVnaXN0ZXJJZGxlSGFuZGxlcigpCiB7CiAgICAgaWYg
KCFtX3JlZ2lzdGVyZWRJZGxlQ2FsbGJhY2spIHsKICAgICAgICAgbV9yZWdpc3RlcmVkSWRsZUNh
bGxiYWNrID0gdHJ1ZTsKLSAgICAgICAgSlNDOjpWTSYgdm0gPSBtX3NjcmlwdERlYnVnU2VydmVy
LnZtKCk7CisgICAgICAgIEpTQzo6Vk0mIHZtID0gbV9kZWJ1Z2dlci52bSgpOwogICAgICAgICB2
bS53aGVuSWRsZShbdGhpc10oKSB7CiAgICAgICAgICAgICBkaWRCZWNvbWVJZGxlKCk7CiAgICAg
ICAgIH0pOwpAQCAtODY5LDcgKzg2OSw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
ZGlkQmVjb21lSWRsZSgpCiAKICAgICBpZiAobV9jb25kaXRpb25Ub0Rpc3BhdGNoUmVzdW1lZCA9
PSBTaG91bGREaXNwYXRjaFJlc3VtZWQ6OldoZW5JZGxlKSB7CiAgICAgICAgIGNhbmNlbFBhdXNl
QXROZXh0T3Bwb3J0dW5pdHkoKTsKLSAgICAgICAgbV9zY3JpcHREZWJ1Z1NlcnZlci5jb250aW51
ZVByb2dyYW0oKTsKKyAgICAgICAgbV9kZWJ1Z2dlci5jb250aW51ZVByb2dyYW0oKTsKICAgICAg
ICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlc3VtZWQoKTsKICAgICB9CiAKQEAgLTg4Myw3ICs4
ODMsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZEJlY29tZUlkbGUoKQogCiB2
b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldFBhdXNlT25EZWJ1Z2dlclN0YXRlbWVudHMo
RXJyb3JTdHJpbmcmLCBib29sIGVuYWJsZWQpCiB7Ci0gICAgbV9zY3JpcHREZWJ1Z1NlcnZlci5z
ZXRQYXVzZU9uRGVidWdnZXJTdGF0ZW1lbnRzKGVuYWJsZWQpOworICAgIG1fZGVidWdnZXIuc2V0
UGF1c2VPbkRlYnVnZ2VyU3RhdGVtZW50cyhlbmFibGVkKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpzZXRQYXVzZU9uRXhjZXB0aW9ucyhFcnJvclN0cmluZyYgZXJyb3JTdHJp
bmcsIGNvbnN0IFN0cmluZyYgc3RyaW5nUGF1c2VTdGF0ZSkKQEAgLTkwMCw4ICs5MDAsOCBAQCB2
b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldFBhdXNlT25FeGNlcHRpb25zKEVycm9yU3Ry
aW5nJiBlcnJvclN0cmluZywgY29ucwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9z
Y3JpcHREZWJ1Z1NlcnZlci5zZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKHN0YXRpY19jYXN0PEpT
Qzo6RGVidWdnZXI6OlBhdXNlT25FeGNlcHRpb25zU3RhdGU+KHBhdXNlU3RhdGUpKTsKLSAgICBp
ZiAobV9zY3JpcHREZWJ1Z1NlcnZlci5wYXVzZU9uRXhjZXB0aW9uc1N0YXRlKCkgIT0gcGF1c2VT
dGF0ZSkKKyAgICBtX2RlYnVnZ2VyLnNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUoc3RhdGljX2Nh
c3Q8SlNDOjpEZWJ1Z2dlcjo6UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZT4ocGF1c2VTdGF0ZSkpOwor
ICAgIGlmIChtX2RlYnVnZ2VyLnBhdXNlT25FeGNlcHRpb25zU3RhdGUoKSAhPSBwYXVzZVN0YXRl
KQogICAgICAgICBlcnJvclN0cmluZyA9ICJJbnRlcm5hbCBlcnJvci4gQ291bGQgbm90IGNoYW5n
ZSBwYXVzZSBvbiBleGNlcHRpb25zIHN0YXRlIl9zOwogfQogCkBAIC05MjYsMTEgKzkyNiwxMSBA
QCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmV2YWx1YXRlT25DYWxsRnJhbWUoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
YXV0byBwYXVzZVN0YXRlID0gbV9zY3JpcHREZWJ1Z1NlcnZlci5wYXVzZU9uRXhjZXB0aW9uc1N0
YXRlKCk7CisgICAgYXV0byBwYXVzZVN0YXRlID0gbV9kZWJ1Z2dlci5wYXVzZU9uRXhjZXB0aW9u
c1N0YXRlKCk7CiAgICAgYm9vbCBwYXVzZUFuZE11dGUgPSBkb05vdFBhdXNlT25FeGNlcHRpb25z
QW5kTXV0ZUNvbnNvbGUgJiYgKmRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZTsK
ICAgICBpZiAocGF1c2VBbmRNdXRlKSB7CiAgICAgICAgIGlmIChwYXVzZVN0YXRlICE9IEpTQzo6
RGVidWdnZXI6OkRvbnRQYXVzZU9uRXhjZXB0aW9ucykKLSAgICAgICAgICAgIG1fc2NyaXB0RGVi
dWdTZXJ2ZXIuc2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShKU0M6OkRlYnVnZ2VyOjpEb250UGF1
c2VPbkV4Y2VwdGlvbnMpOworICAgICAgICAgICAgbV9kZWJ1Z2dlci5zZXRQYXVzZU9uRXhjZXB0
aW9uc1N0YXRlKEpTQzo6RGVidWdnZXI6OkRvbnRQYXVzZU9uRXhjZXB0aW9ucyk7CiAgICAgICAg
IG11dGVDb25zb2xlKCk7CiAgICAgfQogCkBAIC05NDAsNyArOTQwLDcgQEAgdm9pZCBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5nJiBlcnJvclN0
cmluZywgY29uc3QKIAogICAgIGlmIChwYXVzZUFuZE11dGUpIHsKICAgICAgICAgdW5tdXRlQ29u
c29sZSgpOwotICAgICAgICBtX3NjcmlwdERlYnVnU2VydmVyLnNldFBhdXNlT25FeGNlcHRpb25z
U3RhdGUocGF1c2VTdGF0ZSk7CisgICAgICAgIG1fZGVidWdnZXIuc2V0UGF1c2VPbkV4Y2VwdGlv
bnNTdGF0ZShwYXVzZVN0YXRlKTsKICAgICB9CiB9CiAKQEAgLTk3Miw3ICs5NzIsNyBAQCB2b2lk
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldFNob3VsZEJsYWNrYm94VVJMKEVycm9yU3RyaW5n
JiBlcnJvclN0cmluZywgY29ucwogICAgICAgICBPcHRpb25hbDxKU0M6OkRlYnVnZ2VyOjpCbGFj
a2JveFR5cGU+IGJsYWNrYm94VHlwZTsKICAgICAgICAgaWYgKHNob3VsZEJsYWNrYm94VVJMKHNj
cmlwdC5zb3VyY2VVUkwpIHx8IHNob3VsZEJsYWNrYm94VVJMKHNjcmlwdC51cmwpKQogICAgICAg
ICAgICAgYmxhY2tib3hUeXBlID0gSlNDOjpEZWJ1Z2dlcjo6QmxhY2tib3hUeXBlOjpEZWZlcnJl
ZDsKLSAgICAgICAgbV9zY3JpcHREZWJ1Z1NlcnZlci5zZXRCbGFja2JveFR5cGUoc291cmNlSUQs
IGJsYWNrYm94VHlwZSk7CisgICAgICAgIG1fZGVidWdnZXIuc2V0QmxhY2tib3hUeXBlKHNvdXJj
ZUlELCBibGFja2JveFR5cGUpOwogICAgIH0KIH0KIApAQCAtOTkxLDcgKzk5MSw3IEBAIGJvb2wg
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2hvdWxkQmxhY2tib3hVUkwoY29uc3QgU3RyaW5nJiB1
cmwpIGNvbnN0CiAKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2NyaXB0RXhlY3V0aW9u
QmxvY2tlZEJ5Q1NQKGNvbnN0IFN0cmluZyYgZGlyZWN0aXZlVGV4dCkKIHsKLSAgICBpZiAobV9z
Y3JpcHREZWJ1Z1NlcnZlci5wYXVzZU9uRXhjZXB0aW9uc1N0YXRlKCkgIT0gSlNDOjpEZWJ1Z2dl
cjo6RG9udFBhdXNlT25FeGNlcHRpb25zKQorICAgIGlmIChtX2RlYnVnZ2VyLnBhdXNlT25FeGNl
cHRpb25zU3RhdGUoKSAhPSBKU0M6OkRlYnVnZ2VyOjpEb250UGF1c2VPbkV4Y2VwdGlvbnMpCiAg
ICAgICAgIGJyZWFrUHJvZ3JhbShEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpD
U1BWaW9sYXRpb24sIGJ1aWxkQ1NQVmlvbGF0aW9uUGF1c2VSZWFzb24oZGlyZWN0aXZlVGV4dCkp
OwogfQogCkBAIC0xMDIwLDcgKzEwMjAsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
OnNldFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzKEVycm9yU3RyaW5nJiwgYm9vbCBzaG91bAogICAg
IGZvciAoYXV0byYgW3NvdXJjZUlELCBzY3JpcHRdIDogbV9zY3JpcHRzKSB7CiAgICAgICAgIGlm
ICghaXNXZWJLaXRJbmplY3RlZFNjcmlwdChzY3JpcHQuc291cmNlVVJMKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICBtX3NjcmlwdERlYnVnU2VydmVyLnNldEJsYWNrYm94VHlwZShz
b3VyY2VJRCwgYmxhY2tib3hUeXBlKTsKKyAgICAgICAgbV9kZWJ1Z2dlci5zZXRCbGFja2JveFR5
cGUoc291cmNlSUQsIGJsYWNrYm94VHlwZSk7CiAgICAgfQogfQogCkBAIC0xMDQyLDkgKzEwNDIs
OSBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFBhcnNlU291cmNlKEpTQzo6U291
cmNlSUQgc291cmNlSUQsIGNvbnN0IEpTQzo6RAogCiAgICAgaWYgKGlzV2ViS2l0SW5qZWN0ZWRT
Y3JpcHQoc291cmNlVVJMKSkgewogICAgICAgICBpZiAoIW1fcGF1c2VGb3JJbnRlcm5hbFNjcmlw
dHMpCi0gICAgICAgICAgICBtX3NjcmlwdERlYnVnU2VydmVyLnNldEJsYWNrYm94VHlwZShzb3Vy
Y2VJRCwgSlNDOjpEZWJ1Z2dlcjo6QmxhY2tib3hUeXBlOjpJZ25vcmVkKTsKKyAgICAgICAgICAg
IG1fZGVidWdnZXIuc2V0QmxhY2tib3hUeXBlKHNvdXJjZUlELCBKU0M6OkRlYnVnZ2VyOjpCbGFj
a2JveFR5cGU6Oklnbm9yZWQpOwogICAgIH0gZWxzZSBpZiAoc2hvdWxkQmxhY2tib3hVUkwoc291
cmNlVVJMKSB8fCBzaG91bGRCbGFja2JveFVSTChzY3JpcHQudXJsKSkKLSAgICAgICAgbV9zY3Jp
cHREZWJ1Z1NlcnZlci5zZXRCbGFja2JveFR5cGUoc291cmNlSUQsIEpTQzo6RGVidWdnZXI6OkJs
YWNrYm94VHlwZTo6RGVmZXJyZWQpOworICAgICAgICBtX2RlYnVnZ2VyLnNldEJsYWNrYm94VHlw
ZShzb3VyY2VJRCwgSlNDOjpEZWJ1Z2dlcjo6QmxhY2tib3hUeXBlOjpEZWZlcnJlZCk7CiAKICAg
ICBTdHJpbmcgc2NyaXB0VVJMRm9yQnJlYWtwb2ludHMgPSBoYXNTb3VyY2VVUkwgPyBzY3JpcHQu
c291cmNlVVJMIDogc2NyaXB0LnVybDsKICAgICBpZiAoc2NyaXB0VVJMRm9yQnJlYWtwb2ludHMu
aXNFbXB0eSgpKQpAQCAtMTEwMyw5ICsxMTAzLDkgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50OjpkaWRQYXVzZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6RGUK
IAogICAgIC8vIElmIGEgaGlnaCBsZXZlbCBwYXVzZSBwYXVzZSByZWFzb24gaXMgbm90IGFscmVh
ZHkgc2V0LCB0cnkgdG8gaW5mZXIgYSByZWFzb24gZnJvbSB0aGUgZGVidWdnZXIuCiAgICAgaWYg
KG1fcGF1c2VSZWFzb24gPT0gRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6T3Ro
ZXIpIHsKLSAgICAgICAgc3dpdGNoIChtX3NjcmlwdERlYnVnU2VydmVyLnJlYXNvbkZvclBhdXNl
KCkpIHsKKyAgICAgICAgc3dpdGNoIChtX2RlYnVnZ2VyLnJlYXNvbkZvclBhdXNlKCkpIHsKICAg
ICAgICAgY2FzZSBKU0M6OkRlYnVnZ2VyOjpQYXVzZWRGb3JCcmVha3BvaW50OiB7Ci0gICAgICAg
ICAgICBhdXRvIGRlYnVnZ2VyQnJlYWtwb2ludElkID0gbV9zY3JpcHREZWJ1Z1NlcnZlci5wYXVz
aW5nQnJlYWtwb2ludElEKCk7CisgICAgICAgICAgICBhdXRvIGRlYnVnZ2VyQnJlYWtwb2ludElk
ID0gbV9kZWJ1Z2dlci5wYXVzaW5nQnJlYWtwb2ludElEKCk7CiAgICAgICAgICAgICBpZiAoIW1f
Y29udGludWVUb0xvY2F0aW9uRGVidWdnZXJCcmVha3BvaW50IHx8IGRlYnVnZ2VyQnJlYWtwb2lu
dElkICE9IG1fY29udGludWVUb0xvY2F0aW9uRGVidWdnZXJCcmVha3BvaW50LT5pZCgpKQogICAg
ICAgICAgICAgICAgIHVwZGF0ZVBhdXNlUmVhc29uQW5kRGF0YShEZWJ1Z2dlckZyb250ZW5kRGlz
cGF0Y2hlcjo6UmVhc29uOjpCcmVha3BvaW50LCBidWlsZEJyZWFrcG9pbnRQYXVzZVJlYXNvbihk
ZWJ1Z2dlckJyZWFrcG9pbnRJZCkpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMTM4LDEyICsx
MTM4LDEyIEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkUGF1c2UoSlNDOjpKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkRlCiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBpZiAobV9zY3JpcHREZWJ1Z1NlcnZlci5yZWFzb25Gb3JQYXVzZSgpID09IEpTQzo6RGVidWdn
ZXI6OlBhdXNlZEFmdGVyQmxhY2tib3hlZFNjcmlwdCkgeworICAgIGlmIChtX2RlYnVnZ2VyLnJl
YXNvbkZvclBhdXNlKCkgPT0gSlNDOjpEZWJ1Z2dlcjo6UGF1c2VkQWZ0ZXJCbGFja2JveGVkU2Ny
aXB0KSB7CiAgICAgICAgIC8vIEVuc3VyZSB0aGF0IGBtX3ByZUJsYWNrYm94UGF1c2VSZWFzb25g
IGlzIHBvcHVsYXRlZCB3aXRoIHRoZSBtb3N0IHJlY2VudCBkYXRhLgogICAgICAgICB1cGRhdGVQ
YXVzZVJlYXNvbkFuZERhdGEobV9wYXVzZVJlYXNvbiwgbnVsbHB0cik7CiAKICAgICAgICAgUmVm
UHRyPEpTT046Ok9iamVjdD4gZGF0YTsKLSAgICAgICAgaWYgKGF1dG8gZGVidWdnZXJCcmVha3Bv
aW50SWQgPSBtX3NjcmlwdERlYnVnU2VydmVyLnBhdXNpbmdCcmVha3BvaW50SUQoKSkgeworICAg
ICAgICBpZiAoYXV0byBkZWJ1Z2dlckJyZWFrcG9pbnRJZCA9IG1fZGVidWdnZXIucGF1c2luZ0Jy
ZWFrcG9pbnRJRCgpKSB7CiAgICAgICAgICAgICBBU1NFUlQoIW1fY29udGludWVUb0xvY2F0aW9u
RGVidWdnZXJCcmVha3BvaW50IHx8IGRlYnVnZ2VyQnJlYWtwb2ludElkICE9IG1fY29udGludWVU
b0xvY2F0aW9uRGVidWdnZXJCcmVha3BvaW50LT5pZCgpKTsKICAgICAgICAgICAgIGRhdGEgPSBK
U09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgICAgICAgICAgZGF0YS0+c2V0U3RyaW5nKCJvcmln
aW5hbFJlYXNvbiJfcywgUHJvdG9jb2w6Okluc3BlY3RvckhlbHBlcnM6OmdldEVudW1Db25zdGFu
dFZhbHVlKERlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkJyZWFrcG9pbnQpKTsK
QEAgLTExNzcsNyArMTE3Nyw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkUGF1
c2UoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkRlCiAgICAgbV9qYXZh
U2NyaXB0UGF1c2VTY2hlZHVsZWQgPSBmYWxzZTsKIAogICAgIGlmIChtX2NvbnRpbnVlVG9Mb2Nh
dGlvbkRlYnVnZ2VyQnJlYWtwb2ludCkgewotICAgICAgICBtX3NjcmlwdERlYnVnU2VydmVyLnJl
bW92ZUJyZWFrcG9pbnQoKm1fY29udGludWVUb0xvY2F0aW9uRGVidWdnZXJCcmVha3BvaW50KTsK
KyAgICAgICAgbV9kZWJ1Z2dlci5yZW1vdmVCcmVha3BvaW50KCptX2NvbnRpbnVlVG9Mb2NhdGlv
bkRlYnVnZ2VyQnJlYWtwb2ludCk7CiAgICAgICAgIG1fY29udGludWVUb0xvY2F0aW9uRGVidWdn
ZXJCcmVha3BvaW50ID0gbnVsbHB0cjsKICAgICB9CiAKQEAgLTEyMjgsNyArMTIyOCw3IEBAIHZv
aWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YnJlYWtQcm9ncmFtKERlYnVnZ2VyRnJvbnRlbmRE
aXNwYXRjaGVyOjpSZWFzb24gcmVhCiB7CiAgICAgdXBkYXRlUGF1c2VSZWFzb25BbmREYXRhKHJl
YXNvbiwgV1RGTW92ZShkYXRhKSk7CiAKLSAgICBtX3NjcmlwdERlYnVnU2VydmVyLmJyZWFrUHJv
Z3JhbSgpOworICAgIG1fZGVidWdnZXIuYnJlYWtQcm9ncmFtKCk7CiB9CiAKIHZvaWQgSW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6Y2xlYXJJbnNwZWN0b3JCcmVha3BvaW50U3RhdGUoKQpAQCAtMTI0
MCw3ICsxMjQwLDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjbGVhckluc3BlY3Rv
ckJyZWFrcG9pbnRTdGF0ZSgpCiAgICAgbV9wcm90b2NvbEJyZWFrcG9pbnRGb3JQcm90b2NvbEJy
ZWFrcG9pbnRJRC5jbGVhcigpOwogCiAgICAgaWYgKG1fY29udGludWVUb0xvY2F0aW9uRGVidWdn
ZXJCcmVha3BvaW50KSB7Ci0gICAgICAgIG1fc2NyaXB0RGVidWdTZXJ2ZXIucmVtb3ZlQnJlYWtw
b2ludCgqbV9jb250aW51ZVRvTG9jYXRpb25EZWJ1Z2dlckJyZWFrcG9pbnQpOworICAgICAgICBt
X2RlYnVnZ2VyLnJlbW92ZUJyZWFrcG9pbnQoKm1fY29udGludWVUb0xvY2F0aW9uRGVidWdnZXJC
cmVha3BvaW50KTsKICAgICAgICAgbV9jb250aW51ZVRvTG9jYXRpb25EZWJ1Z2dlckJyZWFrcG9p
bnQgPSBudWxscHRyOwogICAgIH0KIApAQCAtMTI1MCw5ICsxMjUwLDkgQEAgdm9pZCBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpjbGVhckluc3BlY3RvckJyZWFrcG9pbnRTdGF0ZSgpCiB2b2lkIElu
c3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNsZWFyRGVidWdnZXJCcmVha3BvaW50U3RhdGUoKQogewog
ICAgIHsKLSAgICAgICAgSlNDOjpKU0xvY2tIb2xkZXIgaG9sZGVyKG1fc2NyaXB0RGVidWdTZXJ2
ZXIudm0oKSk7Ci0gICAgICAgIG1fc2NyaXB0RGVidWdTZXJ2ZXIuY2xlYXJCcmVha3BvaW50cygp
OwotICAgICAgICBtX3NjcmlwdERlYnVnU2VydmVyLmNsZWFyQmxhY2tib3goKTsKKyAgICAgICAg
SlNDOjpKU0xvY2tIb2xkZXIgaG9sZGVyKG1fZGVidWdnZXIudm0oKSk7CisgICAgICAgIG1fZGVi
dWdnZXIuY2xlYXJCcmVha3BvaW50cygpOworICAgICAgICBtX2RlYnVnZ2VyLmNsZWFyQmxhY2ti
b3goKTsKICAgICB9CiAKICAgICBtX3BhdXNlZEdsb2JhbE9iamVjdCA9IG51bGxwdHI7CkBAIC0x
MjY3LDcgKzEyNjcsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNsZWFyRGVidWdn
ZXJCcmVha3BvaW50U3RhdGUoKQogICAgIG1faGFzRXhjZXB0aW9uVmFsdWUgPSBmYWxzZTsKIAog
ICAgIGlmIChpc1BhdXNlZCgpKSB7Ci0gICAgICAgIG1fc2NyaXB0RGVidWdTZXJ2ZXIuY29udGlu
dWVQcm9ncmFtKCk7CisgICAgICAgIG1fZGVidWdnZXIuY29udGludWVQcm9ncmFtKCk7CiAgICAg
ICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5yZXN1bWVkKCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yRGVidWdnZXJBZ2VudC5oCmluZGV4IGRiMzAwYmQ5ZjUzMjIxM2ZlNGFjNTg3MmQzN2VlODE4
NDU0NjhjZTMuLjg4Y2JiYWZlZGFjMWRjY2ViZTIwMTEwZDY3NWNjZmRhNjRjYjc2ZGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRl
YnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKQEAgLTE0OCw3ICsxNDgsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKSBjb25z
dCB7IHJldHVybiBtX2luamVjdGVkU2NyaXB0TWFuYWdlcjsgfQogICAgIHZpcnR1YWwgSW5qZWN0
ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEVycm9yU3RyaW5nJiwgY29uc3QgaW50KiBl
eGVjdXRpb25Db250ZXh0SWQpID0gMDsKIAotICAgIEpTQzo6RGVidWdnZXImIHNjcmlwdERlYnVn
U2VydmVyKCkgeyByZXR1cm4gbV9zY3JpcHREZWJ1Z1NlcnZlcjsgfQorICAgIEpTQzo6RGVidWdn
ZXImIGRlYnVnZ2VyKCkgeyByZXR1cm4gbV9kZWJ1Z2dlcjsgfQogCiAgICAgdmlydHVhbCB2b2lk
IG11dGVDb25zb2xlKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1bm11dGVDb25zb2xlKCkgPSAw
OwpAQCAtMjI1LDcgKzIyNSw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPERlYnVn
Z2VyRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKICAgICBSZWZQdHI8
RGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKIAotICAgIEpT
Qzo6RGVidWdnZXImIG1fc2NyaXB0RGVidWdTZXJ2ZXI7CisgICAgSlNDOjpEZWJ1Z2dlciYgbV9k
ZWJ1Z2dlcjsKICAgICBJbmplY3RlZFNjcmlwdE1hbmFnZXImIG1faW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyOwogICAgIEhhc2hNYXA8SlNDOjpTb3VyY2VJRCwgSlNDOjpEZWJ1Z2dlcjo6U2NyaXB0PiBt
X3NjcmlwdHM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCmluZGV4IDNlYTBkYTMz
ZDgwZDUxYzc5MTZjNjUwNjg3OGFhZTJiMDFiMDA2NzkuLjE5MGI1NjZkYTE3MWU4Mjk0N2Q4ODBm
N2ZjZWQ0YjFiZjE2NjcxODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcApAQCAt
NjQsNyArNjQsNyBAQCBzdGF0aWMgaW50IGFzSW50KGNvbnN0IGludCogaSkKIEluc3BlY3RvclJ1
bnRpbWVBZ2VudDo6SW5zcGVjdG9yUnVudGltZUFnZW50KEFnZW50Q29udGV4dCYgY29udGV4dCkK
ICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiUnVudGltZSJfcykKICAgICAsIG1faW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKGNvbnRleHQuaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQotICAgICwgbV9zY3Jp
cHREZWJ1Z1NlcnZlcihjb250ZXh0LmVudmlyb25tZW50LnNjcmlwdERlYnVnU2VydmVyKCkpCisg
ICAgLCBtX2RlYnVnZ2VyKGNvbnRleHQuZW52aXJvbm1lbnQuZGVidWdnZXIoKSkKICAgICAsIG1f
dm0oY29udGV4dC5lbnZpcm9ubWVudC52bSgpKQogewogfQpAQCAtNzMsMTEgKzczLDExIEBAIElu
c3BlY3RvclJ1bnRpbWVBZ2VudDo6fkluc3BlY3RvclJ1bnRpbWVBZ2VudCgpCiB7CiB9CiAKLXN0
YXRpYyBKU0M6OkRlYnVnZ2VyOjpQYXVzZU9uRXhjZXB0aW9uc1N0YXRlIHNldFBhdXNlT25FeGNl
cHRpb25zU3RhdGUoSlNDOjpEZWJ1Z2dlciYgc2NyaXB0RGVidWdTZXJ2ZXIsIEpTQzo6RGVidWdn
ZXI6OlBhdXNlT25FeGNlcHRpb25zU3RhdGUgbmV3U3RhdGUpCitzdGF0aWMgSlNDOjpEZWJ1Z2dl
cjo6UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSBzZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKEpTQzo6
RGVidWdnZXImIGRlYnVnZ2VyLCBKU0M6OkRlYnVnZ2VyOjpQYXVzZU9uRXhjZXB0aW9uc1N0YXRl
IG5ld1N0YXRlKQogewotICAgIGF1dG8gcHJlc2VudFN0YXRlID0gc2NyaXB0RGVidWdTZXJ2ZXIu
cGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSgpOworICAgIGF1dG8gcHJlc2VudFN0YXRlID0gZGVidWdn
ZXIucGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSgpOwogICAgIGlmIChwcmVzZW50U3RhdGUgIT0gbmV3
U3RhdGUpCi0gICAgICAgIHNjcmlwdERlYnVnU2VydmVyLnNldFBhdXNlT25FeGNlcHRpb25zU3Rh
dGUobmV3U3RhdGUpOworICAgICAgICBkZWJ1Z2dlci5zZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRl
KG5ld1N0YXRlKTsKICAgICByZXR1cm4gcHJlc2VudFN0YXRlOwogfQogCkBAIC0xMjUsNyArMTI1
LDcgQEAgdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmV2YWx1YXRlKEVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBleHAKIAogICAgIGF1dG8gcHJldmlvdXNQYXVzZU9u
RXhjZXB0aW9uc1N0YXRlID0gSlNDOjpEZWJ1Z2dlcjo6RG9udFBhdXNlT25FeGNlcHRpb25zOwog
ICAgIGlmIChhc0Jvb2woZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlKSkKLSAg
ICAgICAgcHJldmlvdXNQYXVzZU9uRXhjZXB0aW9uc1N0YXRlID0gc2V0UGF1c2VPbkV4Y2VwdGlv
bnNTdGF0ZShtX3NjcmlwdERlYnVnU2VydmVyLCBKU0M6OkRlYnVnZ2VyOjpEb250UGF1c2VPbkV4
Y2VwdGlvbnMpOworICAgICAgICBwcmV2aW91c1BhdXNlT25FeGNlcHRpb25zU3RhdGUgPSBzZXRQ
YXVzZU9uRXhjZXB0aW9uc1N0YXRlKG1fZGVidWdnZXIsIEpTQzo6RGVidWdnZXI6OkRvbnRQYXVz
ZU9uRXhjZXB0aW9ucyk7CiAgICAgaWYgKGFzQm9vbChkb05vdFBhdXNlT25FeGNlcHRpb25zQW5k
TXV0ZUNvbnNvbGUpKQogICAgICAgICBtdXRlQ29uc29sZSgpOwogCkBAIC0xMzMsNyArMTMzLDcg
QEAgdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmV2YWx1YXRlKEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgY29uc3QgU3RyaW5nJiBleHAKIAogICAgIGlmIChhc0Jvb2woZG9Ob3RQYXVzZU9u
RXhjZXB0aW9uc0FuZE11dGVDb25zb2xlKSkgewogICAgICAgICB1bm11dGVDb25zb2xlKCk7Ci0g
ICAgICAgIHNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUobV9zY3JpcHREZWJ1Z1NlcnZlciwgcHJl
dmlvdXNQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKTsKKyAgICAgICAgc2V0UGF1c2VPbkV4Y2VwdGlv
bnNTdGF0ZShtX2RlYnVnZ2VyLCBwcmV2aW91c1BhdXNlT25FeGNlcHRpb25zU3RhdGUpOwogICAg
IH0KIH0KIApAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50Ojpj
YWxsRnVuY3Rpb25PbihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluCiAKICAg
ICBhdXRvIHByZXZpb3VzUGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSA9IEpTQzo6RGVidWdnZXI6OkRv
bnRQYXVzZU9uRXhjZXB0aW9uczsKICAgICBpZiAoYXNCb29sKGRvTm90UGF1c2VPbkV4Y2VwdGlv
bnNBbmRNdXRlQ29uc29sZSkpCi0gICAgICAgIHByZXZpb3VzUGF1c2VPbkV4Y2VwdGlvbnNTdGF0
ZSA9IHNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUobV9zY3JpcHREZWJ1Z1NlcnZlciwgSlNDOjpE
ZWJ1Z2dlcjo6RG9udFBhdXNlT25FeGNlcHRpb25zKTsKKyAgICAgICAgcHJldmlvdXNQYXVzZU9u
RXhjZXB0aW9uc1N0YXRlID0gc2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShtX2RlYnVnZ2VyLCBK
U0M6OkRlYnVnZ2VyOjpEb250UGF1c2VPbkV4Y2VwdGlvbnMpOwogICAgIGlmIChhc0Jvb2woZG9O
b3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlKSkKICAgICAgICAgbXV0ZUNvbnNvbGUo
KTsKIApAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpjYWxs
RnVuY3Rpb25PbihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluCiAKICAgICBp
ZiAoYXNCb29sKGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSkpIHsKICAgICAg
ICAgdW5tdXRlQ29uc29sZSgpOwotICAgICAgICBzZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKG1f
c2NyaXB0RGVidWdTZXJ2ZXIsIHByZXZpb3VzUGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSk7CisgICAg
ICAgIHNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUobV9kZWJ1Z2dlciwgcHJldmlvdXNQYXVzZU9u
RXhjZXB0aW9uc1N0YXRlKTsKICAgICB9CiB9CiAKQEAgLTE4NywxMyArMTg3LDEzIEBAIHZvaWQg
SW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRQcmV2aWV3KEVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZywgY29uc3QgU3RyaW5nJiBvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHBy
ZXZpb3VzUGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSA9IHNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUo
bV9zY3JpcHREZWJ1Z1NlcnZlciwgSlNDOjpEZWJ1Z2dlcjo6RG9udFBhdXNlT25FeGNlcHRpb25z
KTsKKyAgICBhdXRvIHByZXZpb3VzUGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSA9IHNldFBhdXNlT25F
eGNlcHRpb25zU3RhdGUobV9kZWJ1Z2dlciwgSlNDOjpEZWJ1Z2dlcjo6RG9udFBhdXNlT25FeGNl
cHRpb25zKTsKICAgICBtdXRlQ29uc29sZSgpOwogCiAgICAgaW5qZWN0ZWRTY3JpcHQuZ2V0UHJl
dmlldyhlcnJvclN0cmluZywgb2JqZWN0SWQsIHByZXZpZXcpOwogCiAgICAgdW5tdXRlQ29uc29s
ZSgpOwotICAgIHNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUobV9zY3JpcHREZWJ1Z1NlcnZlciwg
cHJldmlvdXNQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKTsKKyAgICBzZXRQYXVzZU9uRXhjZXB0aW9u
c1N0YXRlKG1fZGVidWdnZXIsIHByZXZpb3VzUGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSk7CiB9CiAK
IHZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgYm9vbCogb3duUHJvcGVy
dGllcywgY29uc3QgaW50KiBmZXRjaFN0YXJ0LCBjb25zdCBpbnQqIGZldGNoQ291bnQsIGNvbnN0
IGJvb2wqIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlJ1
bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRvcj4+JiBwcm9wZXJ0aWVzLCBSZWZQdHI8SlNPTjo6QXJy
YXlPZjxQcm90b2NvbDo6UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+PiYgaW50
ZXJuYWxQcm9wZXJ0aWVzKQpAQCAtMjE2LDcgKzIxNiw3IEBAIHZvaWQgSW5zcGVjdG9yUnVudGlt
ZUFnZW50OjpnZXRQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3Ry
aW5nCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHByZXZpb3VzUGF1c2VPbkV4
Y2VwdGlvbnNTdGF0ZSA9IHNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUobV9zY3JpcHREZWJ1Z1Nl
cnZlciwgSlNDOjpEZWJ1Z2dlcjo6RG9udFBhdXNlT25FeGNlcHRpb25zKTsKKyAgICBhdXRvIHBy
ZXZpb3VzUGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSA9IHNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUo
bV9kZWJ1Z2dlciwgSlNDOjpEZWJ1Z2dlcjo6RG9udFBhdXNlT25FeGNlcHRpb25zKTsKICAgICBt
dXRlQ29uc29sZSgpOwogCiAgICAgaW5qZWN0ZWRTY3JpcHQuZ2V0UHJvcGVydGllcyhlcnJvclN0
cmluZywgb2JqZWN0SWQsIGFzQm9vbChvd25Qcm9wZXJ0aWVzKSwgc3RhcnQsIGNvdW50LCBhc0Jv
b2woZ2VuZXJhdGVQcmV2aWV3KSwgcHJvcGVydGllcyk7CkBAIC0yMjYsNyArMjI2LDcgQEAgdm9p
ZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcmIGVycm9y
U3RyaW5nLCBjb25zdCBTdHJpbmcKICAgICAgICAgaW5qZWN0ZWRTY3JpcHQuZ2V0SW50ZXJuYWxQ
cm9wZXJ0aWVzKGVycm9yU3RyaW5nLCBvYmplY3RJZCwgYXNCb29sKGdlbmVyYXRlUHJldmlldyks
IGludGVybmFsUHJvcGVydGllcyk7CiAKICAgICB1bm11dGVDb25zb2xlKCk7Ci0gICAgc2V0UGF1
c2VPbkV4Y2VwdGlvbnNTdGF0ZShtX3NjcmlwdERlYnVnU2VydmVyLCBwcmV2aW91c1BhdXNlT25F
eGNlcHRpb25zU3RhdGUpOworICAgIHNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUobV9kZWJ1Z2dl
ciwgcHJldmlvdXNQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JS
dW50aW1lQWdlbnQ6OmdldERpc3BsYXlhYmxlUHJvcGVydGllcyhFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IGludCogZmV0Y2hTdGFydCwgY29u
c3QgaW50KiBmZXRjaENvdW50LCBjb25zdCBib29sKiBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxK
U09OOjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+PiYgcHJv
cGVydGllcywgUmVmUHRyPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlJ1bnRpbWU6OkludGVybmFs
UHJvcGVydHlEZXNjcmlwdG9yPj4mIGludGVybmFsUHJvcGVydGllcykKQEAgLTI0OSw3ICsyNDks
NyBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0RGlzcGxheWFibGVQcm9wZXJ0aWVz
KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgYwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgYXV0byBwcmV2aW91c1BhdXNlT25FeGNlcHRpb25zU3RhdGUgPSBzZXRQYXVzZU9uRXhjZXB0
aW9uc1N0YXRlKG1fc2NyaXB0RGVidWdTZXJ2ZXIsIEpTQzo6RGVidWdnZXI6OkRvbnRQYXVzZU9u
RXhjZXB0aW9ucyk7CisgICAgYXV0byBwcmV2aW91c1BhdXNlT25FeGNlcHRpb25zU3RhdGUgPSBz
ZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKG1fZGVidWdnZXIsIEpTQzo6RGVidWdnZXI6OkRvbnRQ
YXVzZU9uRXhjZXB0aW9ucyk7CiAgICAgbXV0ZUNvbnNvbGUoKTsKIAogICAgIGluamVjdGVkU2Ny
aXB0LmdldERpc3BsYXlhYmxlUHJvcGVydGllcyhlcnJvclN0cmluZywgb2JqZWN0SWQsIHN0YXJ0
LCBjb3VudCwgYXNCb29sKGdlbmVyYXRlUHJldmlldyksIHByb3BlcnRpZXMpOwpAQCAtMjU5LDcg
KzI1OSw3IEBAIHZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXREaXNwbGF5YWJsZVByb3Bl
cnRpZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjCiAgICAgICAgIGluamVjdGVkU2NyaXB0
LmdldEludGVybmFsUHJvcGVydGllcyhlcnJvclN0cmluZywgb2JqZWN0SWQsIGFzQm9vbChnZW5l
cmF0ZVByZXZpZXcpLCBpbnRlcm5hbFByb3BlcnRpZXMpOwogCiAgICAgdW5tdXRlQ29uc29sZSgp
OwotICAgIHNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUobV9zY3JpcHREZWJ1Z1NlcnZlciwgcHJl
dmlvdXNQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKTsKKyAgICBzZXRQYXVzZU9uRXhjZXB0aW9uc1N0
YXRlKG1fZGVidWdnZXIsIHByZXZpb3VzUGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSk7CiB9CiAKIHZv
aWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRDb2xsZWN0aW9uRW50cmllcyhFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IFN0cmluZyogb2Jq
ZWN0R3JvdXAsIGNvbnN0IGludCogZmV0Y2hTdGFydCwgY29uc3QgaW50KiBmZXRjaENvdW50LCBS
ZWZQdHI8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6UnVudGltZTo6Q29sbGVjdGlvbkVudHJ5Pj4m
IGVudHJpZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCmluZGV4IDlkNzY1ZDk2MDdhYTlm
Njg2MmIwNzZhYjM5YzZjYmQyODU0ZDZkNjUuLjE3NTYxNTExYWY5NzliM2IyYjc5MWM3NGRkNzI3
ZDRhZTMxMjRlY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCkBAIC05NCw3ICs5NCw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRDb250cm9sRmxvd1Byb2ZpbGVyRW5hYmxlZFN0YXRl
KGJvb2wpOwogCiAgICAgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiBtX2luamVjdGVkU2NyaXB0TWFu
YWdlcjsKLSAgICBKU0M6OkRlYnVnZ2VyJiBtX3NjcmlwdERlYnVnU2VydmVyOworICAgIEpTQzo6
RGVidWdnZXImIG1fZGVidWdnZXI7CiAgICAgSlNDOjpWTSYgbV92bTsKICAgICBib29sIG1fZW5h
YmxlZCB7ZmFsc2V9OwogICAgIGJvb2wgbV9pc1R5cGVQcm9maWxpbmdFbmFibGVkIHtmYWxzZX07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwCmluZGV4IGMxMmVj
NjlhMDE1ZjVhZGI2MTdmODdhZDEyOWY3ZDk1ZmVlZWIyYTMuLjY4MTNlMDc1YTk0YjM2MzFmYjUy
ZWFkZDljZTc5OWI5YzdkY2Q4ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2Zp
bGVyQWdlbnQuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgSW5zcGVjdG9yU2NyaXB0UHJvZmls
ZXJBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoRGlzY29ubmVjdFJlYXNvCiAg
ICAgaWYgKG1fdHJhY2tpbmcpIHsKICAgICAgICAgbV90cmFja2luZyA9IGZhbHNlOwogICAgICAg
ICBtX2FjdGl2ZUV2YWx1YXRlU2NyaXB0ID0gZmFsc2U7Ci0gICAgICAgIG1fZW52aXJvbm1lbnQu
c2NyaXB0RGVidWdTZXJ2ZXIoKS5zZXRQcm9maWxpbmdDbGllbnQobnVsbHB0cik7CisgICAgICAg
IG1fZW52aXJvbm1lbnQuZGVidWdnZXIoKS5zZXRQcm9maWxpbmdDbGllbnQobnVsbHB0cik7CiAK
ICAgICAgICAgLy8gU3RvcCBzYW1wbGluZyB3aXRob3V0IHByb2Nlc3NpbmcgdGhlIHNhbXBsZXMu
CiAgICAgICAgIHN0b3BTYW1wbGluZ1doZW5EaXNjb25uZWN0aW5nKCk7CkBAIC03NSw3ICs3NSw3
IEBAIHZvaWQgSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudDo6c3RhcnRUcmFja2luZyhFcnJv
clN0cmluZyYsIGNvbnN0IGJvb2wqIGluY2x1CiAKICNpZiBFTkFCTEUoU0FNUExJTkdfUFJPRklM
RVIpCiAgICAgaWYgKGluY2x1ZGVTYW1wbGVzICYmICppbmNsdWRlU2FtcGxlcykgewotICAgICAg
ICBWTSYgdm0gPSBtX2Vudmlyb25tZW50LnNjcmlwdERlYnVnU2VydmVyKCkudm0oKTsKKyAgICAg
ICAgVk0mIHZtID0gbV9lbnZpcm9ubWVudC5kZWJ1Z2dlcigpLnZtKCk7CiAgICAgICAgIFNhbXBs
aW5nUHJvZmlsZXImIHNhbXBsaW5nUHJvZmlsZXIgPSB2bS5lbnN1cmVTYW1wbGluZ1Byb2ZpbGVy
KHN0b3B3YXRjaCk7CiAKICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoc2FtcGxpbmdQcm9maWxl
ci5nZXRMb2NrKCkpOwpAQCAtODgsNyArODgsNyBAQCB2b2lkIEluc3BlY3RvclNjcmlwdFByb2Zp
bGVyQWdlbnQ6OnN0YXJ0VHJhY2tpbmcoRXJyb3JTdHJpbmcmLCBjb25zdCBib29sKiBpbmNsdQog
ICAgIFVOVVNFRF9QQVJBTShpbmNsdWRlU2FtcGxlcyk7CiAjZW5kaWYgLy8gRU5BQkxFKFNBTVBM
SU5HX1BST0ZJTEVSKQogCi0gICAgbV9lbnZpcm9ubWVudC5zY3JpcHREZWJ1Z1NlcnZlcigpLnNl
dFByb2ZpbGluZ0NsaWVudCh0aGlzKTsKKyAgICBtX2Vudmlyb25tZW50LmRlYnVnZ2VyKCkuc2V0
UHJvZmlsaW5nQ2xpZW50KHRoaXMpOwogCiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnRyYWNr
aW5nU3RhcnQoc3RvcHdhdGNoLmVsYXBzZWRUaW1lKCkuc2Vjb25kcygpKTsKIH0KQEAgLTEwMSw3
ICsxMDEsNyBAQCB2b2lkIEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQ6OnN0b3BUcmFja2lu
ZyhFcnJvclN0cmluZyYpCiAgICAgbV90cmFja2luZyA9IGZhbHNlOwogICAgIG1fYWN0aXZlRXZh
bHVhdGVTY3JpcHQgPSBmYWxzZTsKIAotICAgIG1fZW52aXJvbm1lbnQuc2NyaXB0RGVidWdTZXJ2
ZXIoKS5zZXRQcm9maWxpbmdDbGllbnQobnVsbHB0cik7CisgICAgbV9lbnZpcm9ubWVudC5kZWJ1
Z2dlcigpLnNldFByb2ZpbGluZ0NsaWVudChudWxscHRyKTsKIAogICAgIHRyYWNraW5nQ29tcGxl
dGUoKTsKIH0KQEAgLTExNyw3ICsxMTcsNyBAQCBTZWNvbmRzIEluc3BlY3RvclNjcmlwdFByb2Zp
bGVyQWdlbnQ6OndpbGxFdmFsdWF0ZVNjcmlwdCgpCiAKICNpZiBFTkFCTEUoU0FNUExJTkdfUFJP
RklMRVIpCiAgICAgaWYgKG1fZW5hYmxlZFNhbXBsaW5nUHJvZmlsZXIpIHsKLSAgICAgICAgU2Ft
cGxpbmdQcm9maWxlciogc2FtcGxpbmdQcm9maWxlciA9IG1fZW52aXJvbm1lbnQuc2NyaXB0RGVi
dWdTZXJ2ZXIoKS52bSgpLnNhbXBsaW5nUHJvZmlsZXIoKTsKKyAgICAgICAgU2FtcGxpbmdQcm9m
aWxlciogc2FtcGxpbmdQcm9maWxlciA9IG1fZW52aXJvbm1lbnQuZGVidWdnZXIoKS52bSgpLnNh
bXBsaW5nUHJvZmlsZXIoKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2FtcGxpbmdQcm9maWxl
cik7CiAgICAgICAgIHNhbXBsaW5nUHJvZmlsZXItPm5vdGljZUN1cnJlbnRUaHJlYWRBc0pTQ0V4
ZWN1dGlvblRocmVhZCgpOwogICAgIH0KQEAgLTIwNyw3ICsyMDcsNyBAQCB2b2lkIEluc3BlY3Rv
clNjcmlwdFByb2ZpbGVyQWdlbnQ6OnRyYWNraW5nQ29tcGxldGUoKQogCiAjaWYgRU5BQkxFKFNB
TVBMSU5HX1BST0ZJTEVSKQogICAgIGlmIChtX2VuYWJsZWRTYW1wbGluZ1Byb2ZpbGVyKSB7Ci0g
ICAgICAgIFZNJiB2bSA9IG1fZW52aXJvbm1lbnQuc2NyaXB0RGVidWdTZXJ2ZXIoKS52bSgpOwor
ICAgICAgICBWTSYgdm0gPSBtX2Vudmlyb25tZW50LmRlYnVnZ2VyKCkudm0oKTsKICAgICAgICAg
SlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAgICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7
IC8vIFRoaXMgaXMgcmVxdWlyZWQgYmVjYXVzZSB3ZSB3aWxsIGhhdmUgcmF3IHBvaW50ZXJzIGlu
dG8gdGhlIGhlYXAgYWZ0ZXIgd2UgcmVsZWFzZVN0YWNrVHJhY2VzKCkuCiAgICAgICAgIFNhbXBs
aW5nUHJvZmlsZXIqIHNhbXBsaW5nUHJvZmlsZXIgPSB2bS5zYW1wbGluZ1Byb2ZpbGVyKCk7CkBA
IC0yMzYsNyArMjM2LDcgQEAgdm9pZCBJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50OjpzdG9w
U2FtcGxpbmdXaGVuRGlzY29ubmVjdGluZygpCiAgICAgaWYgKCFtX2VuYWJsZWRTYW1wbGluZ1By
b2ZpbGVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBWTSYgdm0gPSBtX2Vudmlyb25tZW50LnNj
cmlwdERlYnVnU2VydmVyKCkudm0oKTsKKyAgICBWTSYgdm0gPSBtX2Vudmlyb25tZW50LmRlYnVn
Z2VyKCkudm0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAgICAgU2FtcGxpbmdQcm9m
aWxlciogc2FtcGxpbmdQcm9maWxlciA9IHZtLnNhbXBsaW5nUHJvZmlsZXIoKTsKICAgICBSRUxF
QVNFX0FTU0VSVChzYW1wbGluZ1Byb2ZpbGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdERl
YnVnZ2VyQWdlbnQuY3BwCmluZGV4IGQzMGZlOTM2NzIzMGVmY2EwNjJhMmMxMWQyNDQ3MjQ2Mjc5
NDEwODMuLjI1NTFlN2E0MjM5Mzk5NWQ2YTNlZWE5Y2U0OTE3NDlhMzg3ODkxODkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0
RGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmNwcApAQCAtMjksNyArMjksNyBAQAog
I2luY2x1ZGUgIkNvbnNvbGVNZXNzYWdlLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29uc29sZUFnZW50LmgiCi0jaW5jbHVkZSAiSlNH
bG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlci5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0
RGVidWdnZXIuaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgiCiAKIG5hbWVz
cGFjZSBJbnNwZWN0b3IgewpAQCAtNTEsNyArNTEsNyBAQCBJbmplY3RlZFNjcmlwdCBKU0dsb2Jh
bE9iamVjdERlYnVnZ2VyQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmluZyYg
ZQogICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQoKTsKICAgICB9CiAKLSAgICBKU0dsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNHbG9iYWxPYmplY3RTY3JpcHRE
ZWJ1Z1NlcnZlciY+KHNjcmlwdERlYnVnU2VydmVyKCkpLmdsb2JhbE9iamVjdCgpOworICAgIEpT
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QgPSBzdGF0aWNfY2FzdDxKU0dsb2JhbE9iamVjdERl
YnVnZ2VyJj4oZGVidWdnZXIoKSkuZ2xvYmFsT2JqZWN0KCk7CiAgICAgcmV0dXJuIGluamVjdGVk
U2NyaXB0TWFuYWdlcigpLmluamVjdGVkU2NyaXB0Rm9yKCZnbG9iYWxPYmplY3QpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJ
bnNwZWN0aW9uVGFyZ2V0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVt
b3RlL1JlbW90ZUluc3BlY3Rpb25UYXJnZXQuY3BwCmluZGV4IDFmZWJhZWZhYzc3NTE0ODFmMmUx
ODBjMGMwZDY2MjE0NWUwNDgwMmYuLmJmZmZhMTdhZGI0Y2Q4YmY1MDYzOTk5ZmE2Yjc0NGEyZDcy
NzIxMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3Rl
L1JlbW90ZUluc3BlY3Rpb25UYXJnZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rpb25UYXJnZXQuY3BwCkBAIC0yOCw3ICsyOCw3
IEBACiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKIAotI2luY2x1ZGUgIkpTR2xvYmFs
T2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdERlYnVn
Z2VyLmgiCiAjaW5jbHVkZSAiUmVtb3RlSW5zcGVjdG9yLmgiCiAjaW5jbHVkZSA8d3RmL1J1bkxv
b3AuaD4KIApAQCAtNTksNyArNTksNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rpb25UYXJnZXQ6OnBh
dXNlV2FpdGluZ0ZvckF1dG9tYXRpY0luc3BlY3Rpb24oKQogICAgIEFTU0VSVChhdXRvbWF0aWNJ
bnNwZWN0aW9uQWxsb3dlZCgpKTsKIAogICAgIHdoaWxlIChSZW1vdGVJbnNwZWN0b3I6OnNpbmds
ZXRvbigpLndhaXRpbmdGb3JBdXRvbWF0aWNJbnNwZWN0aW9uKHRhcmdldElkZW50aWZpZXIoKSkp
IHsKLSAgICAgICAgaWYgKFJ1bkxvb3A6OmN5Y2xlKEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdT
ZXJ2ZXI6OnJ1bkxvb3BNb2RlKCkpID09IFJ1bkxvb3A6OkN5Y2xlUmVzdWx0OjpTdG9wKQorICAg
ICAgICBpZiAoUnVuTG9vcDo6Y3ljbGUoSlNHbG9iYWxPYmplY3REZWJ1Z2dlcjo6cnVuTG9vcE1v
ZGUoKSkgPT0gUnVuTG9vcDo6Q3ljbGVSZXN1bHQ6OlN0b3ApCiAgICAgICAgICAgICBicmVhazsK
ICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Jl
bW90ZS9jb2NvYS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXRDb2NvYS5tbSBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUNvbm5lY3Rpb25Ub1Rhcmdl
dENvY29hLm1tCmluZGV4IGU2ZDllODZmYTZiMDNjNzRiNDI2OGIxZWE5MDZlNGJhMGFjMDg0NWMu
LjM0YTVmNGM1ZDRmNTZkNzgwZmEzMDMxODI1MDlhOWQzNGIyMjBiMTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUNvbm5lY3Rp
b25Ub1RhcmdldENvY29hLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL2NvY29hL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldENvY29hLm1tCkBAIC0yOCw3ICsy
OCw3IEBACiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKIAotI2ltcG9ydCAiSlNHbG9i
YWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlci5oIgorI2ltcG9ydCAiSlNHbG9iYWxPYmplY3REZWJ1
Z2dlci5oIgogI2ltcG9ydCAiUmVtb3RlQXV0b21hdGlvblRhcmdldC5oIgogI2ltcG9ydCAiUmVt
b3RlSW5zcGVjdGlvblRhcmdldC5oIgogI2ltcG9ydCAiUmVtb3RlSW5zcGVjdG9yLmgiCkBAIC04
OCw3ICs4OCw3IEBAIHN0YXRpYyB2b2lkIFJlbW90ZVRhcmdldEluaXRpYWxpemVHbG9iYWxRdWV1
ZSgpCiAKICAgICAgICAgLy8gQWRkIHRvIHRoZSBkZWZhdWx0IHJ1biBsb29wIG1vZGUgZm9yIGRl
ZmF1bHQgaGFuZGxpbmcsIGFuZCB0aGUgSlNDb250ZXh0IHJlbW90ZSBpbnNwZWN0b3IgcnVuIGxv
b3AgbW9kZSB3aGVuIHBhdXNlZC4KICAgICAgICAgQ0ZSdW5Mb29wQWRkU291cmNlKENGUnVuTG9v
cEdldE1haW4oKSwgcndpUnVuTG9vcFNvdXJjZSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKLSAg
ICAgICAgYXV0byBtb2RlID0gSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlcjo6cnVuTG9v
cE1vZGUoKTsKKyAgICAgICAgYXV0byBtb2RlID0gSlNHbG9iYWxPYmplY3REZWJ1Z2dlcjo6cnVu
TG9vcE1vZGUoKTsKICAgICAgICAgaWYgKG1vZGUgIT0gRGVmYXVsdFJ1bkxvb3BNb2RlKQogICAg
ICAgICAgICAgQ0ZSdW5Mb29wQWRkU291cmNlKENGUnVuTG9vcEdldE1haW4oKSwgcndpUnVuTG9v
cFNvdXJjZSwgbW9kZSk7CiAgICAgfSk7CkBAIC0yNjEsNyArMjYxLDcgQEAgdm9pZCBSZW1vdGVD
b25uZWN0aW9uVG9UYXJnZXQ6OnNldHVwUnVuTG9vcCgpCiAgICAgbV9ydW5Mb29wU291cmNlID0g
YWRvcHRDRihDRlJ1bkxvb3BTb3VyY2VDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMSwgJnJ1
bkxvb3BTb3VyY2VDb250ZXh0KSk7CiAKICAgICBDRlJ1bkxvb3BBZGRTb3VyY2UobV9ydW5Mb29w
LmdldCgpLCBtX3J1bkxvb3BTb3VyY2UuZ2V0KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7Ci0g
ICAgYXV0byBtb2RlID0gSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlcjo6cnVuTG9vcE1v
ZGUoKTsKKyAgICBhdXRvIG1vZGUgPSBKU0dsb2JhbE9iamVjdERlYnVnZ2VyOjpydW5Mb29wTW9k
ZSgpOwogICAgIGlmIChtb2RlICE9IERlZmF1bHRSdW5Mb29wTW9kZSkKICAgICAgICAgQ0ZSdW5M
b29wQWRkU291cmNlKG1fcnVuTG9vcC5nZXQoKSwgbV9ydW5Mb29wU291cmNlLmdldCgpLCBtb2Rl
KTsKIH0KQEAgLTI3Miw3ICsyNzIsNyBAQCB2b2lkIFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6
dGVhcmRvd25SdW5Mb29wKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQ0ZSdW5Mb29wUmVtb3Zl
U291cmNlKG1fcnVuTG9vcC5nZXQoKSwgbV9ydW5Mb29wU291cmNlLmdldCgpLCBrQ0ZSdW5Mb29w
RGVmYXVsdE1vZGUpOwotICAgIGF1dG8gbW9kZSA9IEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdT
ZXJ2ZXI6OnJ1bkxvb3BNb2RlKCk7CisgICAgYXV0byBtb2RlID0gSlNHbG9iYWxPYmplY3REZWJ1
Z2dlcjo6cnVuTG9vcE1vZGUoKTsKICAgICBpZiAobW9kZSAhPSBEZWZhdWx0UnVuTG9vcE1vZGUp
CiAgICAgICAgIENGUnVuTG9vcFJlbW92ZVNvdXJjZShtX3J1bkxvb3AuZ2V0KCksIG1fcnVuTG9v
cFNvdXJjZS5nZXQoKSwgbW9kZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRl
cnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IGE2Y2E1NDEwYzQx
YWZmZWIxYmI1ZWQxMDZhNmFkMTkzYjNiYWYzNzguLjNlZWI0OGIwMmEwZGI2OTEzMGQ0NTM2MDY1
MmZkZTI0ZDE4YjE1NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UK
KysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtNjg1LDcgKzY4NSw3IEBAIHNl
dChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBpbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmgKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yT3Zlcmxh
eS5oCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvcldlYkFnZW50QmFzZS5oCi0gICAgaW5zcGVjdG9y
L1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5oCisgICAgaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlci5oCiAK
ICAgICBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQK
aW5kZXggMDlkNTAzZmU0YzZjNGY4MTc0ODc5MzczZWJjYzU1MzgwZTYxYTM5Yy4uZGU0OWZkMjY2
YjZhODRiOWM4NTNiNmM1ZDk0ZmUzOGIyNjAzMTMzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTEzNjUs
MTIgKzEzNjUsMTIgQEAgaW5zcGVjdG9yL0luc3BlY3RvclNoYWRlclByb2dyYW0uY3BwCiBpbnNw
ZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKIGluc3BlY3Rvci9JbnN0cnVtZW50aW5nQWdl
bnRzLmNwcAogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAotaW5zcGVjdG9yL1Bh
Z2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAKK2luc3BlY3Rvci9QYWdlRGVidWdnZXIuY3BwCiBpbnNw
ZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcAogaW5zcGVjdG9yL1dlYkluamVjdGVkU2Ny
aXB0SG9zdC5jcHAKIGluc3BlY3Rvci9XZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCiBpbnNw
ZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAKLWluc3BlY3Rvci9Xb3JrZXJTY3Jp
cHREZWJ1Z1NlcnZlci5jcHAKK2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlci5jcHAKIGluc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQuY3BwCiBpbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yQ1BVUHJvZmlsZXJBZ2VudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IGIxNzEx
NGNiYzIxZmUyOTM5MTAyYTMxZDZmZjAyYjljMzEyYzk4OGYuLjQwOTVjMjJjNzczM2E3OTUyMzBh
OGRhM2RmMjNkNzlmYTVhMTdmZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXND
b2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMTYxLDcg
KzE2MSw3IEBAIGh0bWwvc2hhZG93L0ltYWdlQ29udHJvbHNSb290RWxlbWVudC5jcHAKIGh0bWwv
c2hhZG93L1lvdVR1YmVFbWJlZFNoYWRvd0VsZW1lbnQuY3BwCiBodG1sL3NoYWRvdy9tYWMvSW1h
Z2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWMuY3BwCiBodG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250
cm9sc1Jvb3RFbGVtZW50TWFjLmNwcAotaW5zcGVjdG9yL21hYy9QYWdlU2NyaXB0RGVidWdTZXJ2
ZXJNYWMubW0KK2luc3BlY3Rvci9tYWMvUGFnZURlYnVnZ2VyTWFjLm1tCiBsb2FkZXIvYXJjaGl2
ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJj
aGl2ZU1hYy5tbQogbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDI1
MDE4M2JmYzEyZTk4M2M5ZDQzMjI4YTQxOTM5NmU3Yjk1NzhhMWQuLjNhMzYxYWE5OGU5YzI3YjM5
ZjcyYmMyNWFmOThmZjAwY2E2MDNiMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMxODMsNyArMzE4Myw3IEBACiAJCUE1MkIz
NDlFMUZBNDE3MDMwMDhCNjI0NiAvKiBXb3JrZXJEZWJ1Z2dlclByb3h5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTJCMzQ5QzFGQTQxNkY4MDA4QjYy
NDYgLyogV29ya2VyRGVidWdnZXJQcm94eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUE1NDE2RkU2MTg4MTBFRjgwMDA5RkM1RiAvKiBZb3VUdWJl
RW1iZWRTaGFkb3dFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNTQxNkZFNDE4ODEwRUY4MDAwOUZDNUYgLyogWW91VHViZUVtYmVkU2hhZG93
RWxlbWVudC5oICovOyB9OwogCQlBNTRBMEM2MjFEQjdGOEMxMDAxN0E5MEIgLyogV29ya2VySW5z
cGVjdG9yQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTU0QTBDNjAxREI3RjhCNzAwMTdBOTBCIC8qIFdvcmtlckluc3BlY3RvckNvbnRy
b2xsZXIuaCAqLzsgfTsKLQkJQTU0QTBDNjYxREI4MDUzNjAwMTdBOTBCIC8qIFdvcmtlclNjcmlw
dERlYnVnU2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNTRBMEM2NDFEQjgwNTMyMDAxN0E5MEIgLyogV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIu
aCAqLzsgfTsKKwkJQTU0QTBDNjYxREI4MDUzNjAwMTdBOTBCIC8qIFdvcmtlckRlYnVnZ2VyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTRBMEM2NDFE
QjgwNTMyMDAxN0E5MEIgLyogV29ya2VyRGVidWdnZXIuaCAqLzsgfTsKIAkJQTU0QTBDNjgxREI4
MDdEOTAwMTdBOTBCIC8qIFdvcmtlclRvUGFnZUZyb250ZW5kQ2hhbm5lbC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU0QTBDNjcxREI4MDdEMDAwMTdB
OTBCIC8qIFdvcmtlclRvUGFnZUZyb250ZW5kQ2hhbm5lbC5oICovOyB9OwogCQlBNTRBMEM2QzFE
QjgzMUY5MDAxN0E5MEIgLyogV29ya2VySW5zcGVjdG9yUHJveHkuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NEEwQzZBMURCODMxRjIwMDE3QTkwQiAv
KiBXb3JrZXJJbnNwZWN0b3JQcm94eS5oICovOyB9OwogCQlBNTU0QjVGMzFFMzgzOTNBMDAxRDRF
MDMgLyogUGVyZm9ybWFuY2VVc2VyVGltaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBNTU0QjVGMTFFMzgzOTM2MDAxRDRFMDMgLyogUGVyZm9ybWFu
Y2VVc2VyVGltaW5nLmggKi87IH07CkBAIC0zMjQyLDcgKzMyNDIsNyBAQAogCQlBNUNCMDUyNTFG
QjUxRjNBMDAwODlCOTcgLyogV29ya2VyTmV0d29ya0FnZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUNCMDUyMzFGQjUxRjI0MDAwODlCOTcgLyog
V29ya2VyTmV0d29ya0FnZW50LmggKi87IH07CiAJCUE1Q0U5RjNGMUU0QzQxNzQwMDFCQkU3QyAv
KiBSZXNvdXJjZVRpbWluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTVDRTlGM0MxRTRCQzU4NjAwMUJCRTdDIC8qIFJlc291cmNlVGltaW5nLmggKi87
IH07CiAJCUE1REVCREE0MTZGQjkwODcwMDgzNkZFMCAvKiBXZWJLaXRQbGF5YmFja1RhcmdldEF2
YWlsYWJpbGl0eUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNURFQkRBMDE2RkI5MDg3MDA4MzZGRTAgLyogV2ViS2l0UGxheWJhY2tUYXJnZXRB
dmFpbGFiaWxpdHlFdmVudC5oICovOyB9OwotCQlBNUYzNkQzQjE4Rjc1ODcyMDA1NEMwMjQgLyog
UGFnZVNjcmlwdERlYnVnU2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNUYzNkQzOTE4Rjc1ODcyMDA1NEMwMjQgLyogUGFnZVNjcmlwdERlYnVn
U2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJQTVGMzZEM0IxOEY3NTg3MjAwNTRDMDI0IC8qIFBhZ2VEZWJ1Z2dlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVGMzZEMzkxOEY3NTg3MjAwNTRD
MDI0IC8qIFBhZ2VEZWJ1Z2dlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUE2MTQ4QTc5MTJFNDFFM0IwMDQ0QTc4NCAvKiBKU0hUTUxLZXlnZW5F
bGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NjE0OEE3NzEyRTQxRTNCMDA0NEE3ODQgLyogSlNIVE1MS2V5Z2VuRWxlbWVudC5oICovOyB9Owog
CQlBNkQxNjk2NDEzNDZCNEMxMDAwRUI3NzAgLyogU2hhZG93Um9vdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTZEMTY5NjMxMzQ2QjRDMTAwMEVCNzcw
IC8qIFNoYWRvd1Jvb3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlBNkQ1QTk5QzE2MjlENzAwMDAyOTczMzAgLyogU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVEZWxlZ2F0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNkQ1QTk5QTE2MjlENkZGMDAyOTczMzAgLyogU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVEZWxlZ2F0ZS5jcHAgKi87IH07CkBAIC0xMDkwNyw3ICsxMDkwNyw3IEBACiAJCTkx
Mjc4RDYwMjFERURBRjAwMEI1NzE4NCAvKiBXb3JrZXJBdWRpdEFnZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtlckF1ZGl0QWdlbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTEzRkU1OTgyMzYyNzk5OTAwRjk0NDZBIC8qIEluc3BlY3RvckFuaW1h
dGlvbkFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEluc3Bl
Y3RvckFuaW1hdGlvbkFnZW50LmNwcDsgcGF0aCA9IGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
QW5pbWF0aW9uQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTkxM0ZF
NTlBMjM2Mjc5OTkwMEY5NDQ2QSAvKiBJbnNwZWN0b3JBbmltYXRpb25BZ2VudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBJbnNwZWN0b3JBbmltYXRpb25BZ2VudC5oOyBwYXRo
ID0gaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBbmltYXRpb25BZ2VudC5oOyBzb3VyY2VUcmVl
ID0gU09VUkNFX1JPT1Q7IH07Ci0JCTkxNzRFQTVEMjQ0MEY5QTUwMDA4MzQ5QyAvKiBQYWdlU2Ny
aXB0RGVidWdTZXJ2ZXJNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBQYWdlU2NyaXB0RGVidWdTZXJ2ZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTkxNzRFQTVEMjQ0MEY5QTUwMDA4MzQ5QyAvKiBQYWdlRGVidWdnZXJNYWMubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQYWdlRGVidWdnZXJNYWMubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkxNzVDRTU3MjFFMjgxRUIwMERGMkMyNyAv
KiBJbnNwZWN0b3JBdWRpdERPTU9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJbnNwZWN0b3JBdWRpdERPTU9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkxNzVDRTU3MjFFMjgxRUIwMERGMkMyOCAvKiBKU0luc3BlY3RvckF1ZGl0
RE9NT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSW5z
cGVjdG9yQXVkaXRET01PYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
MTc1Q0U1ODIxRTI4MUVDMDBERjJDMjcgLyogSW5zcGVjdG9yQXVkaXRET01PYmplY3QuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yQXVkaXRET01PYmplY3QuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExOTk0LDggKzExOTk0LDggQEAKIAkJQTU0
MTZGRTQxODgxMEVGODAwMDlGQzVGIC8qIFlvdVR1YmVFbWJlZFNoYWRvd0VsZW1lbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWW91VHViZUVtYmVkU2hhZG93RWxlbWVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTRBMEM1RjFEQjdGOEI3MDAxN0E5MEIg
LyogV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTU0QTBDNjAxREI3RjhCNzAwMTdBOTBCIC8qIFdvcmtlckluc3Bl
Y3RvckNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2Vy
SW5zcGVjdG9yQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNTRB
MEM2MzFEQjgwNTMyMDAxN0E5MEIgLyogV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNTRBMEM2NDFEQjgwNTMyMDAxN0E5
MEIgLyogV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTU0QTBDNjMxREI4MDUzMjAwMTdBOTBCIC8qIFdvcmtlckRlYnVnZ2VyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtlckRlYnVnZ2VyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU0QTBDNjQxREI4MDUzMjAwMTdBOTBCIC8q
IFdvcmtlckRlYnVnZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtl
ckRlYnVnZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1NEEwQzY3MURCODA3
RDAwMDE3QTkwQiAvKiBXb3JrZXJUb1BhZ2VGcm9udGVuZENoYW5uZWwuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2VyVG9QYWdlRnJvbnRlbmRDaGFubmVsLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1NEEwQzY5MURCODMxRjEwMDE3QTkwQiAvKiBXb3Jr
ZXJJbnNwZWN0b3JQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXb3JrZXJJbnNwZWN0b3JQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE1NEEwQzZBMURCODMxRjIwMDE3QTkwQiAvKiBXb3JrZXJJbnNwZWN0b3JQcm94eS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrZXJJbnNwZWN0b3JQcm94eS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTIxMTYsOCArMTIxMTYsOCBAQAogCQlBNURFQkQ5
RjE2RkI5MDg3MDA4MzZGRTAgLyogV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVu
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJLaXRQbGF5YmFj
a1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTVERUJEQTAxNkZCOTA4NzAwODM2RkUwIC8qIFdlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxh
YmlsaXR5RXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0UGxh
eWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBNURFQkRBMTE2RkI5MDg3MDA4MzZGRTAgLyogV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFp
bGFiaWxpdHlFdmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViS2l0UGxheWJhY2tU
YXJnZXRBdmFpbGFiaWxpdHlFdmVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUE1RjM2RDM4MThGNzU4NzIwMDU0QzAyNCAvKiBQYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFnZVNjcmlwdERlYnVnU2VydmVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTVGMzZEMzkxOEY3NTg3MjAwNTRD
MDI0IC8qIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBQYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQTVGMzZEMzgxOEY3NTg3MjAwNTRDMDI0IC8qIFBhZ2VEZWJ1Z2dlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYWdlRGVidWdnZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlBNUYzNkQzOTE4Rjc1ODcyMDA1NEMwMjQgLyogUGFnZURl
YnVnZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhZ2VEZWJ1Z2dlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNUY2RTE2QzEzMkVENDZFMDA4RURBRTMg
LyogQXV0b2NhcGl0YWxpemUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQXV0b2NhcGl0YWxpemUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNjE0
OEE3NjEyRTQxRTNCMDA0NEE3ODQgLyogSlNIVE1MS2V5Z2VuRWxlbWVudC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0hUTUxLZXlnZW5FbGVtZW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTYxNDhBNzcxMkU0MUUzQjAwNDRBNzg0IC8qIEpT
SFRNTEtleWdlbkVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNI
VE1MS2V5Z2VuRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTgwOTQs
OCArMTgwOTQsOCBAQAogCQkJCUYzQUJGRTBCMTMwRTlEQTAwMEU3RjdEMSAvKiBJbnN0cnVtZW50
aW5nQWdlbnRzLmggKi8sCiAJCQkJNTlDMjdGMDQxMzhEMjhDMTAwNzlCN0UyIC8qIE5ldHdvcmtS
ZXNvdXJjZXNEYXRhLmNwcCAqLywKIAkJCQk1OUMyN0YwNjEzOEQyOENGMDA3OUI3RTIgLyogTmV0
d29ya1Jlc291cmNlc0RhdGEuaCAqLywKLQkJCQlBNUYzNkQzODE4Rjc1ODcyMDA1NEMwMjQgLyog
UGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcCAqLywKLQkJCQlBNUYzNkQzOTE4Rjc1ODcyMDA1NEMw
MjQgLyogUGFnZVNjcmlwdERlYnVnU2VydmVyLmggKi8sCisJCQkJQTVGMzZEMzgxOEY3NTg3MjAw
NTRDMDI0IC8qIFBhZ2VEZWJ1Z2dlci5jcHAgKi8sCisJCQkJQTVGMzZEMzkxOEY3NTg3MjAwNTRD
MDI0IC8qIFBhZ2VEZWJ1Z2dlci5oICovLAogCQkJCTkxQjk1MjIyMUY1OEE1ODAwMDkzMURDMiAv
KiBSZWNvcmRpbmdTd2l6emxlVHlwZXMuaCAqLywKIAkJCQk3NTUzQ0ZFNzEwOEY0NzNGMDBFQTI4
MUUgLyogVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcCAqLywKIAkJCQk3NTUzQ0ZFNjEwOEY0NzNG
MDBFQTI4MUUgLyogVGltZWxpbmVSZWNvcmRGYWN0b3J5LmggKi8sCkBAIC0xODEwMywxMCArMTgx
MDMsMTAgQEAKIAkJCQlBNTg0MEUyMzE4N0I4QUMyMDA4NDNCMTAgLyogV2ViSW5qZWN0ZWRTY3Jp
cHRIb3N0LmggKi8sCiAJCQkJQTU4NEZFMkQxODY0Q0I4NDAwODQzQjEwIC8qIFdlYkluamVjdGVk
U2NyaXB0TWFuYWdlci5jcHAgKi8sCiAJCQkJQTU4NEZFMkUxODY0Q0I4NDAwODQzQjEwIC8qIFdl
YkluamVjdGVkU2NyaXB0TWFuYWdlci5oICovLAorCQkJCUE1NEEwQzYzMURCODA1MzIwMDE3QTkw
QiAvKiBXb3JrZXJEZWJ1Z2dlci5jcHAgKi8sCisJCQkJQTU0QTBDNjQxREI4MDUzMjAwMTdBOTBC
IC8qIFdvcmtlckRlYnVnZ2VyLmggKi8sCiAJCQkJQTU0QTBDNUYxREI3RjhCNzAwMTdBOTBCIC8q
IFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwICovLAogCQkJCUE1NEEwQzYwMURCN0Y4Qjcw
MDE3QTkwQiAvKiBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmggKi8sCi0JCQkJQTU0QTBDNjMx
REI4MDUzMjAwMTdBOTBCIC8qIFdvcmtlclNjcmlwdERlYnVnU2VydmVyLmNwcCAqLywKLQkJCQlB
NTRBMEM2NDFEQjgwNTMyMDAxN0E5MEIgLyogV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuaCAqLywK
IAkJCQlBNTRBMEM2NzFEQjgwN0QwMDAxN0E5MEIgLyogV29ya2VyVG9QYWdlRnJvbnRlbmRDaGFu
bmVsLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGluc3BlY3RvcjsKQEAgLTIyMjc4LDcgKzIyMjc4
LDcgQEAKIAkJOTE3NEVBNUMyNDQwRjk4QTAwMDgzNDlDIC8qIG1hYyAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJOTE3NEVBNUQyNDQwRjlBNTAwMDgzNDlD
IC8qIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlck1hYy5tbSAqLywKKwkJCQk5MTc0RUE1RDI0NDBGOUE1
MDAwODM0OUMgLyogUGFnZURlYnVnZ2VyTWFjLm1tICovLAogCQkJKTsKIAkJCXBhdGggPSBtYWM7
CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMzI4NTMsNiArMzI4NTMsNyBAQAogCQkJ
CUE1QjgxQ0MyMUZBQTQ0QkMwMDM3RDFFNiAvKiBQYWdlQ29uc29sZUFnZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlEQUVEMjAzMTE2RjI0NDQ4MDA3MEVDMEYgLyogUGFnZUNvbnNvbGVDbGllbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE1QTJBRjBDMTgyOTczNDMwMERFMTcyOSAvKiBQYWdlRGVi
dWdnYWJsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTVGMzZEM0IxOEY3NTg3MjAwNTRDMDI0IC8q
IFBhZ2VEZWJ1Z2dlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVCODFDQzMxRkFBNDRCQzAwMzdE
MUU2IC8qIFBhZ2VEZWJ1Z2dlckFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MUUwRERDMTIz
MEI0MUU1MDAxOUUxRTMgLyogUGFnZURPTURlYnVnZ2VyQWdlbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTkzMDJCMEJGMEQ3OUY4MkMwMEM3RUU4MyAvKiBQYWdlR3JvdXAuaCBpbiBIZWFkZXJzICov
LApAQCAtMzI4NjQsNyArMzI4NjUsNiBAQAogCQkJCTJENUM5RDAyMTlDN0I1MkUwMEIzQzVDMSAv
KiBQYWdlT3ZlcmxheUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZCREI2MUExMTZE
NjAzN0UwMEJCMzM5NCAvKiBQYWdlUnVsZUNvbGxlY3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTVCODFDQzUxRkFBNDRCQzAwMzdEMUU2IC8qIFBhZ2VSdW50aW1lQWdlbnQuaCBpbiBIZWFkZXJz
ICovLAotCQkJCUE1RjM2RDNCMThGNzU4NzIwMDU0QzAyNCAvKiBQYWdlU2NyaXB0RGVidWdTZXJ2
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3MUU2NUNDMTM2NjFFREMwMEJFRURCMCAvKiBQYWdl
U2VyaWFsaXplci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTEyODRBRTExMDQ0N0Q0NTAwRUFFQjUy
IC8qIFBhZ2VUcmFuc2l0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNzdBQkEwMTVE
RUZFRUYwMDMxRkQwNCAvKiBQYWdpbmF0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTM0MzEyLDYg
KzM0MzEyLDcgQEAKIAkJCQk0MUE3RDM1MzFGNDM4RDE2MDA4OTg4REUgLyogV29ya2VyQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVCODFDQ0QxRkFBNDRERTAw
MzdEMUU2IC8qIFdvcmtlckNvbnNvbGVBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU1NjM5
RDExQzZGMDlFMzAwODA2RDhFIC8qIFdvcmtlckNvbnNvbGVDbGllbnQuaCBpbiBIZWFkZXJzICov
LAorCQkJCUE1NEEwQzY2MURCODA1MzYwMDE3QTkwQiAvKiBXb3JrZXJEZWJ1Z2dlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTVCODFDQ0UxRkFBNDRERTAwMzdEMUU2IC8qIFdvcmtlckRlYnVnZ2Vy
QWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MkIzNDlFMUZBNDE3MDMwMDhCNjI0NiAvKiBX
b3JrZXJEZWJ1Z2dlclByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MUUwRERDNDIzMEI0MUYx
MDAxOUUxRTMgLyogV29ya2VyRE9NRGVidWdnZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0z
NDMzMiw3ICszNDMzMyw2IEBACiAJCQkJMkU0MzQ2NTMwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtl
clJ1bkxvb3AuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1QjgxQ0NGMUZBQTQ0REUwMDM3RDFFNiAv
KiBXb3JrZXJSdW50aW1lQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxQTY0M0YyMEVDMDk3
MjUwMDc3OTY2OCAvKiBXb3JrZXJTY3JpcHRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKLQkJ
CQlBNTRBMEM2NjFEQjgwNTM2MDAxN0E5MEIgLyogV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUE3RDZCMzQ5MEY2MTEwNDUwMEI3OUZEMSAvKiBXb3JrZXJTY3Jp
cHRMb2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTJFQTc2ODA0MEZFNzEyNjQwMEFCOUM4QSAv
KiBXb3JrZXJTY3JpcHRMb2FkZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTJFNDM0NjU1
MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJUaHJlYWQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IGE1
OTVjMTM0OTQ0NDJjNmE2OWM0ZjI0YjEzNDdmMDU3Yjc3MDIxMWIuLjJlOTBjMTE5NDhhN2UwZWI2
MTA1YTgzZTJjMDhjYjRmODJhOGYyZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTY1LDExICs2NSwxMSBAQAogI2luY2x1ZGUg
IlBhZ2VBdWRpdEFnZW50LmgiCiAjaW5jbHVkZSAiUGFnZUNvbnNvbGVBZ2VudC5oIgogI2luY2x1
ZGUgIlBhZ2VET01EZWJ1Z2dlckFnZW50LmgiCisjaW5jbHVkZSAiUGFnZURlYnVnZ2VyLmgiCiAj
aW5jbHVkZSAiUGFnZURlYnVnZ2VyQWdlbnQuaCIKICNpbmNsdWRlICJQYWdlSGVhcEFnZW50Lmgi
CiAjaW5jbHVkZSAiUGFnZU5ldHdvcmtBZ2VudC5oIgogI2luY2x1ZGUgIlBhZ2VSdW50aW1lQWdl
bnQuaCIKLSNpbmNsdWRlICJQYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaCIKICNpbmNsdWRlICJTZXR0
aW5ncy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIldlYkluamVjdGVk
U2NyaXB0SG9zdC5oIgpAQCAtMTAwLDcgKzEwMCw3IEBAIEluc3BlY3RvckNvbnRyb2xsZXI6Oklu
c3BlY3RvckNvbnRyb2xsZXIoUGFnZSYgcGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JD
CiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUobV9m
cm9udGVuZFJvdXRlci5jb3B5UmVmKCkpKQogICAgICwgbV9vdmVybGF5KG1ha2VVbmlxdWU8SW5z
cGVjdG9yT3ZlcmxheT4ocGFnZSwgaW5zcGVjdG9yQ2xpZW50KSkKICAgICAsIG1fZXhlY3V0aW9u
U3RvcHdhdGNoKFN0b3B3YXRjaDo6Y3JlYXRlKCkpCi0gICAgLCBtX3NjcmlwdERlYnVnU2VydmVy
KHBhZ2UpCisgICAgLCBtX2RlYnVnZ2VyKHBhZ2UpCiAgICAgLCBtX3BhZ2UocGFnZSkKICAgICAs
IG1faW5zcGVjdG9yQ2xpZW50KGluc3BlY3RvckNsaWVudCkKIHsKQEAgLTQ5NSw5ICs0OTUsOSBA
QCBTdG9wd2F0Y2gmIEluc3BlY3RvckNvbnRyb2xsZXI6OmV4ZWN1dGlvblN0b3B3YXRjaCgpIGNv
bnN0CiAgICAgcmV0dXJuIG1fZXhlY3V0aW9uU3RvcHdhdGNoOwogfQogCi1QYWdlU2NyaXB0RGVi
dWdTZXJ2ZXImIEluc3BlY3RvckNvbnRyb2xsZXI6OnNjcmlwdERlYnVnU2VydmVyKCkKK1BhZ2VE
ZWJ1Z2dlciYgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGVidWdnZXIoKQogewotICAgIHJldHVybiBt
X3NjcmlwdERlYnVnU2VydmVyOworICAgIHJldHVybiBtX2RlYnVnZ2VyOwogfQogCiBKU0M6OlZN
JiBJbnNwZWN0b3JDb250cm9sbGVyOjp2bSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCBiY2E1ZWFkMzNkMDRlM2IxZjRkNjdjZDMzNTI0
MjMzNGU5Mzg5MmNhLi5iMzExODA4MGFjNWY2MWIyMzNhNWY0OTk4ZWE5YTYzZGM5NWNjYTc1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKQEAg
LTMyLDcgKzMyLDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiSW5zcGVjdG9yT3Zlcmxh
eS5oIgotI2luY2x1ZGUgIlBhZ2VTY3JpcHREZWJ1Z1NlcnZlci5oIgorI2luY2x1ZGUgIlBhZ2VE
ZWJ1Z2dlci5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckFnZW50UmVnaXN0
cnkuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JFbnZpcm9ubWVudC5oPgog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC0xMTksNyArMTE5LDcgQEAgcHVibGljOgogICAg
IEluc3BlY3Rvcjo6SW5zcGVjdG9yRXZhbHVhdGVIYW5kbGVyIGV2YWx1YXRlSGFuZGxlcigpIGNv
bnN0IG92ZXJyaWRlOwogICAgIHZvaWQgZnJvbnRlbmRJbml0aWFsaXplZCgpIG92ZXJyaWRlOwog
ICAgIFdURjo6U3RvcHdhdGNoJiBleGVjdXRpb25TdG9wd2F0Y2goKSBjb25zdCBmaW5hbDsKLSAg
ICBQYWdlU2NyaXB0RGVidWdTZXJ2ZXImIHNjcmlwdERlYnVnU2VydmVyKCkgb3ZlcnJpZGU7Cisg
ICAgUGFnZURlYnVnZ2VyJiBkZWJ1Z2dlcigpIG92ZXJyaWRlOwogICAgIEpTQzo6Vk0mIHZtKCkg
b3ZlcnJpZGU7CiAKIHByaXZhdGU6CkBAIC0xMzQsNyArMTM0LDcgQEAgcHJpdmF0ZToKICAgICBS
ZWY8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yT3ZlcmxheT4gbV9vdmVybGF5OwogICAgIFJlZjxX
VEY6OlN0b3B3YXRjaD4gbV9leGVjdXRpb25TdG9wd2F0Y2g7Ci0gICAgUGFnZVNjcmlwdERlYnVn
U2VydmVyIG1fc2NyaXB0RGVidWdTZXJ2ZXI7CisgICAgUGFnZURlYnVnZ2VyIG1fZGVidWdnZXI7
CiAgICAgSW5zcGVjdG9yOjpBZ2VudFJlZ2lzdHJ5IG1fYWdlbnRzOwogCiAgICAgUGFnZSYgbV9w
YWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li41MTMzNmUwZmYwZGVhY2NjYjkxYzBiMTI4MDFjZmIwNzcyYTFmZDkxCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlci5jcHAKQEAgLTAsMCAr
MSwxOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBhZ2VEZWJ1Z2dlci5oIgorCisjaW5j
bHVkZSAiQ29tbW9uVk0uaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkZyYW1l
LmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxl
ci5oIgorI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmgiCisjaW5jbHVkZSAiSlNE
T01FeGNlcHRpb25IYW5kbGluZy5oIgorI2luY2x1ZGUgIkpTRE9NV2luZG93Q3VzdG9tLmgiCisj
aW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgorI2luY2x1ZGUgIlBsdWdp
blZpZXdCYXNlLmgiCisjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIlRp
bWVyLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNMb2NrLmg+CisjaW5jbHVkZSA8d3Rm
L01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQorI2luY2x1ZGUgIldlYkNvcmVUaHJlYWRJbnRlcm5hbC5oIgorI2Vu
ZGlmCisKKworbmFtZXNwYWNlIFdlYkNvcmUgewordXNpbmcgbmFtZXNwYWNlIEpTQzsKK3VzaW5n
IG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKK1BhZ2VEZWJ1Z2dlcjo6UGFnZURlYnVnZ2VyKFBhZ2Um
IHBhZ2UpCisgICAgOiBEZWJ1Z2dlcihXZWJDb3JlOjpjb21tb25WTSgpKQorICAgICwgbV9wYWdl
KHBhZ2UpCit7Cit9CisKK3ZvaWQgUGFnZURlYnVnZ2VyOjphdHRhY2hEZWJ1Z2dlcigpCit7Cisg
ICAgSlNDOjpEZWJ1Z2dlcjo6YXR0YWNoRGVidWdnZXIoKTsKKworICAgIG1fcGFnZS5zZXREZWJ1
Z2dlcih0aGlzKTsKK30KKwordm9pZCBQYWdlRGVidWdnZXI6OmRldGFjaERlYnVnZ2VyKGJvb2wg
aXNCZWluZ0Rlc3Ryb3llZCkKK3sKKyAgICBKU0M6OkRlYnVnZ2VyOjpkZXRhY2hEZWJ1Z2dlcihp
c0JlaW5nRGVzdHJveWVkKTsKKworICAgIG1fcGFnZS5zZXREZWJ1Z2dlcihudWxscHRyKTsKKyAg
ICBpZiAoIWlzQmVpbmdEZXN0cm95ZWQpCisgICAgICAgIHJlY29tcGlsZUFsbEpTRnVuY3Rpb25z
KCk7Cit9CisKK3ZvaWQgUGFnZURlYnVnZ2VyOjpyZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucygpCit7
CisgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0oKSk7CisgICAgRGVidWdnZXI6OnJlY29tcGlsZUFs
bEpTRnVuY3Rpb25zKCk7Cit9CisKK3ZvaWQgUGFnZURlYnVnZ2VyOjpkaWRQYXVzZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIEpTQzo6RGVidWdnZXI6OmRpZFBhdXNlKGds
b2JhbE9iamVjdCk7CisKKyAgICBzZXRKYXZhU2NyaXB0UGF1c2VkKG1fcGFnZS5ncm91cCgpLCB0
cnVlKTsKK30KKwordm9pZCBQYWdlRGVidWdnZXI6OmRpZENvbnRpbnVlKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpCit7CisgICAgSlNDOjpEZWJ1Z2dlcjo6ZGlkQ29udGludWUoZ2xvYmFs
T2JqZWN0KTsKKworICAgIHNldEphdmFTY3JpcHRQYXVzZWQobV9wYWdlLmdyb3VwKCksIGZhbHNl
KTsKK30KKwordm9pZCBQYWdlRGVidWdnZXI6OnJ1bkV2ZW50TG9vcFdoaWxlUGF1c2VkKCkKK3sK
KyAgICBKU0M6OkRlYnVnZ2VyOjpydW5FdmVudExvb3BXaGlsZVBhdXNlZCgpOworCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAvLyBPbiBpT1MsIHJ1bm5pbmcgYW4gRXZlbnRMb29wIGNh
dXNlcyB1cyB0byBydW4gYSBuZXN0ZWQgV2ViUnVuTG9vcC4KKyAgICAvLyBTaW5jZSB0aGUgV2Vi
VGhyZWFkIGlzIGF1dG9yZWxlYXNlZCBhdCB0aGUgZW5kIG9mIHJ1biBsb29wIGl0ZXJhdGlvbnMK
KyAgICAvLyB3ZSBuZWVkIHRvIGdyYWNlZnVsbHkgaGFuZGxlIHJlbGVhc2luZyBhbmQgcmVhY3F1
aXJpbmcgdGhlIGxvY2suCisgICAgaWYgKFdlYlRocmVhZElzRW5hYmxlZCgpKSB7CisgICAgICAg
IEFTU0VSVChXZWJUaHJlYWRJc0xvY2tlZE9yRGlzYWJsZWQoKSk7CisgICAgICAgIEpTQzo6SlNM
b2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKHZtKCkpOworICAgICAgICBXZWJSdW5Mb29w
RW5hYmxlTmVzdGVkKCk7CisKKyAgICAgICAgcnVuRXZlbnRMb29wV2hpbGVQYXVzZWRJbnRlcm5h
bCgpOworCisgICAgICAgIFdlYlJ1bkxvb3BEaXNhYmxlTmVzdGVkKCk7CisgICAgICAgIEFTU0VS
VChXZWJUaHJlYWRJc0xvY2tlZE9yRGlzYWJsZWQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisjZW5kaWYKKworICAgIHJ1bkV2ZW50TG9vcFdoaWxlUGF1c2VkSW50ZXJuYWwoKTsKK30KKwor
dm9pZCBQYWdlRGVidWdnZXI6OnJ1bkV2ZW50TG9vcFdoaWxlUGF1c2VkSW50ZXJuYWwoKQorewor
ICAgIFRpbWVyQmFzZTo6ZmlyZVRpbWVyc0luTmVzdGVkRXZlbnRMb29wKCk7CisKKyAgICBtX3Bh
Z2UuaW5jcmVtZW50TmVzdGVkUnVuTG9vcENvdW50KCk7CisKKyAgICB3aGlsZSAoIWRvbmVQcm9j
ZXNzaW5nRGVidWdnZXJFdmVudHMoKSkgeworICAgICAgICBpZiAoIXBsYXRmb3JtU2hvdWxkQ29u
dGludWVSdW5uaW5nRXZlbnRMb29wV2hpbGVQYXVzZWQoKSkKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgIH0KKworICAgIG1fcGFnZS5kZWNyZW1lbnROZXN0ZWRSdW5Mb29wQ291bnQoKTsKK30KKwor
Ym9vbCBQYWdlRGVidWdnZXI6OmlzQ29udGVudFNjcmlwdChKU0dsb2JhbE9iamVjdCogc3RhdGUp
IGNvbnN0Cit7CisgICAgcmV0dXJuICZjdXJyZW50V29ybGQoKnN0YXRlKSAhPSAmbWFpblRocmVh
ZE5vcm1hbFdvcmxkKCkgfHwgSlNDOjpEZWJ1Z2dlcjo6aXNDb250ZW50U2NyaXB0KHN0YXRlKTsK
K30KKwordm9pZCBQYWdlRGVidWdnZXI6OnJlcG9ydEV4Y2VwdGlvbihKU0dsb2JhbE9iamVjdCog
c3RhdGUsIEpTQzo6RXhjZXB0aW9uKiBleGNlcHRpb24pIGNvbnN0Cit7CisgICAgSlNDOjpEZWJ1
Z2dlcjo6cmVwb3J0RXhjZXB0aW9uKHN0YXRlLCBleGNlcHRpb24pOworCisgICAgV2ViQ29yZTo6
cmVwb3J0RXhjZXB0aW9uKHN0YXRlLCBleGNlcHRpb24pOworfQorCit2b2lkIFBhZ2VEZWJ1Z2dl
cjo6c2V0SmF2YVNjcmlwdFBhdXNlZChjb25zdCBQYWdlR3JvdXAmIHBhZ2VHcm91cCwgYm9vbCBw
YXVzZWQpCit7CisgICAgZm9yIChhdXRvJiBwYWdlIDogcGFnZUdyb3VwLnBhZ2VzKCkpIHsKKyAg
ICAgICAgZm9yIChGcmFtZSogZnJhbWUgPSAmcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFt
ZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpCisgICAgICAgICAgICBzZXRKYXZhU2Ny
aXB0UGF1c2VkKCpmcmFtZSwgcGF1c2VkKTsKKworICAgICAgICBpZiAoYXV0byogZnJvbnRlbmRD
bGllbnQgPSBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuaW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQoKSkgeworICAgICAgICAgICAgaWYgKHBhdXNlZCkKKyAgICAgICAgICAgICAgICBmcm9udGVu
ZENsaWVudC0+cGFnZVBhdXNlZCgpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IGZyb250ZW5kQ2xpZW50LT5wYWdlVW5wYXVzZWQoKTsKKyAgICAgICAgfQorICAgIH0KK30KKwor
dm9pZCBQYWdlRGVidWdnZXI6OnNldEphdmFTY3JpcHRQYXVzZWQoRnJhbWUmIGZyYW1lLCBib29s
IHBhdXNlZCkKK3sKKyAgICBpZiAoIWZyYW1lLnNjcmlwdCgpLmNhbkV4ZWN1dGVTY3JpcHRzKE5v
dEFib3V0VG9FeGVjdXRlU2NyaXB0KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZnJhbWUuc2Ny
aXB0KCkuc2V0UGF1c2VkKHBhdXNlZCk7CisKKyAgICBBU1NFUlQoZnJhbWUuZG9jdW1lbnQoKSk7
CisgICAgYXV0byYgZG9jdW1lbnQgPSAqZnJhbWUuZG9jdW1lbnQoKTsKKyAgICBpZiAocGF1c2Vk
KSB7CisgICAgICAgIGRvY3VtZW50LnN1c3BlbmRTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXJD
YWxsYmFja3MoKTsKKyAgICAgICAgZG9jdW1lbnQuc3VzcGVuZEFjdGl2ZURPTU9iamVjdHMoUmVh
c29uRm9yU3VzcGVuc2lvbjo6SmF2YVNjcmlwdERlYnVnZ2VyUGF1c2VkKTsKKyAgICB9IGVsc2Ug
eworICAgICAgICBkb2N1bWVudC5yZXN1bWVBY3RpdmVET01PYmplY3RzKFJlYXNvbkZvclN1c3Bl
bnNpb246OkphdmFTY3JpcHREZWJ1Z2dlclBhdXNlZCk7CisgICAgICAgIGRvY3VtZW50LnJlc3Vt
ZVNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygpOworICAgIH0KKworICAgIGlm
IChhdXRvKiB2aWV3ID0gZnJhbWUudmlldygpKSB7CisgICAgICAgIGZvciAoYXV0byYgY2hpbGQg
OiB2aWV3LT5jaGlsZHJlbigpKSB7CisgICAgICAgICAgICBpZiAoIWlzPFBsdWdpblZpZXdCYXNl
PihjaGlsZCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBkb3duY2Fz
dDxQbHVnaW5WaWV3QmFzZT4oY2hpbGQuZ2V0KCkpLnNldEphdmFTY3JpcHRQYXVzZWQocGF1c2Vk
KTsKKyAgICAgICAgfQorICAgIH0KK30KKworI2lmICFQTEFURk9STShNQUMpCitib29sIFBhZ2VE
ZWJ1Z2dlcjo6cGxhdGZvcm1TaG91bGRDb250aW51ZVJ1bm5pbmdFdmVudExvb3BXaGlsZVBhdXNl
ZCgpCit7CisgICAgcmV0dXJuIFJ1bkxvb3A6OmN5Y2xlKCkgIT0gUnVuTG9vcDo6Q3ljbGVSZXN1
bHQ6OlN0b3A7Cit9CisjZW5kaWYgLy8gIVBMQVRGT1JNKE1BQykKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dl
ci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjlkNmY3MWNlMzAyZGYwYjBhNDllNGNkNDI1MzJmMzVhNjk5YWIyMDMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyLmgKQEAgLTAsMCArMSw2
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9EZWJ1Z2dlci5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIEZyYW1lOworY2xhc3MgUGFnZTsKK2NsYXNzIFBhZ2VHcm91
cDsKKworY2xhc3MgUGFnZURlYnVnZ2VyIGZpbmFsIDogcHVibGljIEpTQzo6RGVidWdnZXIgewor
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhZ2VEZWJ1Z2dlcik7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgUGFnZURlYnVnZ2VyKFBhZ2UmKTsKKyAgICB+UGFn
ZURlYnVnZ2VyKCkgb3ZlcnJpZGUgPSBkZWZhdWx0OworCisgICAgdm9pZCByZWNvbXBpbGVBbGxK
U0Z1bmN0aW9ucygpIG92ZXJyaWRlOworCitwcml2YXRlOgorICAgIC8vIEpTQzo6RGVidWdnZXIK
KyAgICB2b2lkIGF0dGFjaERlYnVnZ2VyKCkgZmluYWw7CisgICAgdm9pZCBkZXRhY2hEZWJ1Z2dl
cihib29sIGlzQmVpbmdEZXN0cm95ZWQpIGZpbmFsOworICAgIHZvaWQgZGlkUGF1c2UoSlNDOjpK
U0dsb2JhbE9iamVjdCopIGZpbmFsOworICAgIHZvaWQgZGlkQ29udGludWUoSlNDOjpKU0dsb2Jh
bE9iamVjdCopIGZpbmFsOworICAgIHZvaWQgcnVuRXZlbnRMb29wV2hpbGVQYXVzZWQoKSBmaW5h
bDsKKyAgICBib29sIGlzQ29udGVudFNjcmlwdChKU0M6OkpTR2xvYmFsT2JqZWN0KikgY29uc3Qg
ZmluYWw7CisgICAgdm9pZCByZXBvcnRFeGNlcHRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6RXhjZXB0aW9uKikgY29uc3QgZmluYWw7CisKKyAgICB2b2lkIHJ1bkV2ZW50TG9vcFdoaWxl
UGF1c2VkSW50ZXJuYWwoKTsKKworICAgIHZvaWQgc2V0SmF2YVNjcmlwdFBhdXNlZChjb25zdCBQ
YWdlR3JvdXAmLCBib29sIHBhdXNlZCk7CisgICAgdm9pZCBzZXRKYXZhU2NyaXB0UGF1c2VkKEZy
YW1lJiwgYm9vbCBwYXVzZWQpOworCisgICAgYm9vbCBwbGF0Zm9ybVNob3VsZENvbnRpbnVlUnVu
bmluZ0V2ZW50TG9vcFdoaWxlUGF1c2VkKCk7CisKKyAgICBQYWdlJiBtX3BhZ2U7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Q
YWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
NWZlZmJjYmVjNmQ1NjI0NmU3MjhmNjE5MDU3Zjg3NjY5MTY2NzIwLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Q
YWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTk2ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKGMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlBhZ2VTY3JpcHREZWJ1Z1NlcnZlci5oIgotCi0jaW5j
bHVkZSAiQ29tbW9uVk0uaCIKLSNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkZyYW1l
LmgiCi0jaW5jbHVkZSAiRnJhbWVWaWV3LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxl
ci5oIgotI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmgiCi0jaW5jbHVkZSAiSlNE
T01FeGNlcHRpb25IYW5kbGluZy5oIgotI2luY2x1ZGUgIkpTRE9NV2luZG93Q3VzdG9tLmgiCi0j
aW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgotI2luY2x1ZGUgIlBsdWdp
blZpZXdCYXNlLmgiCi0jaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgotI2luY2x1ZGUgIlRp
bWVyLmgiCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNMb2NrLmg+Ci0jaW5jbHVkZSA8d3Rm
L01haW5UaHJlYWQuaD4KLSNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+Ci0KLSNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQotI2luY2x1ZGUgIldlYkNvcmVUaHJlYWRJbnRlcm5hbC5oIgotI2Vu
ZGlmCi0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotdXNpbmcgbmFtZXNwYWNlIEpTQzsKLXVzaW5n
IG5hbWVzcGFjZSBJbnNwZWN0b3I7Ci0KLVBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6UGFnZVNjcmlw
dERlYnVnU2VydmVyKFBhZ2UmIHBhZ2UpCi0gICAgOiBEZWJ1Z2dlcihXZWJDb3JlOjpjb21tb25W
TSgpKQotICAgICwgbV9wYWdlKHBhZ2UpCi17Ci19Ci0KLXZvaWQgUGFnZVNjcmlwdERlYnVnU2Vy
dmVyOjphdHRhY2hEZWJ1Z2dlcigpCi17Ci0gICAgSlNDOjpEZWJ1Z2dlcjo6YXR0YWNoRGVidWdn
ZXIoKTsKLQotICAgIG1fcGFnZS5zZXREZWJ1Z2dlcih0aGlzKTsKLX0KLQotdm9pZCBQYWdlU2Ny
aXB0RGVidWdTZXJ2ZXI6OmRldGFjaERlYnVnZ2VyKGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCkKLXsK
LSAgICBKU0M6OkRlYnVnZ2VyOjpkZXRhY2hEZWJ1Z2dlcihpc0JlaW5nRGVzdHJveWVkKTsKLQot
ICAgIG1fcGFnZS5zZXREZWJ1Z2dlcihudWxscHRyKTsKLSAgICBpZiAoIWlzQmVpbmdEZXN0cm95
ZWQpCi0gICAgICAgIHJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKCk7Ci19Ci0KLXZvaWQgUGFnZVNj
cmlwdERlYnVnU2VydmVyOjpyZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucygpCi17Ci0gICAgSlNMb2Nr
SG9sZGVyIGxvY2sodm0oKSk7Ci0gICAgRGVidWdnZXI6OnJlY29tcGlsZUFsbEpTRnVuY3Rpb25z
KCk7Ci19Ci0KLXZvaWQgUGFnZVNjcmlwdERlYnVnU2VydmVyOjpkaWRQYXVzZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQotewotICAgIEpTQzo6RGVidWdnZXI6OmRpZFBhdXNlKGdsb2Jh
bE9iamVjdCk7Ci0KLSAgICBzZXRKYXZhU2NyaXB0UGF1c2VkKG1fcGFnZS5ncm91cCgpLCB0cnVl
KTsKLX0KLQotdm9pZCBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OmRpZENvbnRpbnVlKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCi17Ci0gICAgSlNDOjpEZWJ1Z2dlcjo6ZGlkQ29udGludWUo
Z2xvYmFsT2JqZWN0KTsKLQotICAgIHNldEphdmFTY3JpcHRQYXVzZWQobV9wYWdlLmdyb3VwKCks
IGZhbHNlKTsKLX0KLQotdm9pZCBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnJ1bkV2ZW50TG9vcFdo
aWxlUGF1c2VkKCkKLXsKLSAgICBKU0M6OkRlYnVnZ2VyOjpydW5FdmVudExvb3BXaGlsZVBhdXNl
ZCgpOwotCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAvLyBPbiBpT1MsIHJ1bm5pbmcg
YW4gRXZlbnRMb29wIGNhdXNlcyB1cyB0byBydW4gYSBuZXN0ZWQgV2ViUnVuTG9vcC4KLSAgICAv
LyBTaW5jZSB0aGUgV2ViVGhyZWFkIGlzIGF1dG9yZWxlYXNlZCBhdCB0aGUgZW5kIG9mIHJ1biBs
b29wIGl0ZXJhdGlvbnMKLSAgICAvLyB3ZSBuZWVkIHRvIGdyYWNlZnVsbHkgaGFuZGxlIHJlbGVh
c2luZyBhbmQgcmVhY3F1aXJpbmcgdGhlIGxvY2suCi0gICAgaWYgKFdlYlRocmVhZElzRW5hYmxl
ZCgpKSB7Ci0gICAgICAgIEFTU0VSVChXZWJUaHJlYWRJc0xvY2tlZE9yRGlzYWJsZWQoKSk7Ci0g
ICAgICAgIEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKHZtKCkpOwotICAg
ICAgICBXZWJSdW5Mb29wRW5hYmxlTmVzdGVkKCk7Ci0KLSAgICAgICAgcnVuRXZlbnRMb29wV2hp
bGVQYXVzZWRJbnRlcm5hbCgpOwotCi0gICAgICAgIFdlYlJ1bkxvb3BEaXNhYmxlTmVzdGVkKCk7
Ci0gICAgICAgIEFTU0VSVChXZWJUaHJlYWRJc0xvY2tlZE9yRGlzYWJsZWQoKSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLQotICAgIHJ1bkV2ZW50TG9vcFdoaWxlUGF1c2VkSW50
ZXJuYWwoKTsKLX0KLQotdm9pZCBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnJ1bkV2ZW50TG9vcFdo
aWxlUGF1c2VkSW50ZXJuYWwoKQotewotICAgIFRpbWVyQmFzZTo6ZmlyZVRpbWVyc0luTmVzdGVk
RXZlbnRMb29wKCk7Ci0KLSAgICBtX3BhZ2UuaW5jcmVtZW50TmVzdGVkUnVuTG9vcENvdW50KCk7
Ci0KLSAgICB3aGlsZSAoIWRvbmVQcm9jZXNzaW5nRGVidWdnZXJFdmVudHMoKSkgewotICAgICAg
ICBpZiAoIXBsYXRmb3JtU2hvdWxkQ29udGludWVSdW5uaW5nRXZlbnRMb29wV2hpbGVQYXVzZWQo
KSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIG1fcGFnZS5kZWNyZW1lbnROZXN0
ZWRSdW5Mb29wQ291bnQoKTsKLX0KLQotYm9vbCBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OmlzQ29u
dGVudFNjcmlwdChKU0dsb2JhbE9iamVjdCogc3RhdGUpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICZj
dXJyZW50V29ybGQoKnN0YXRlKSAhPSAmbWFpblRocmVhZE5vcm1hbFdvcmxkKCkgfHwgSlNDOjpE
ZWJ1Z2dlcjo6aXNDb250ZW50U2NyaXB0KHN0YXRlKTsKLX0KLQotdm9pZCBQYWdlU2NyaXB0RGVi
dWdTZXJ2ZXI6OnJlcG9ydEV4Y2VwdGlvbihKU0dsb2JhbE9iamVjdCogc3RhdGUsIEpTQzo6RXhj
ZXB0aW9uKiBleGNlcHRpb24pIGNvbnN0Ci17Ci0gICAgSlNDOjpEZWJ1Z2dlcjo6cmVwb3J0RXhj
ZXB0aW9uKHN0YXRlLCBleGNlcHRpb24pOwotCi0gICAgV2ViQ29yZTo6cmVwb3J0RXhjZXB0aW9u
KHN0YXRlLCBleGNlcHRpb24pOwotfQotCi12b2lkIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0
SmF2YVNjcmlwdFBhdXNlZChjb25zdCBQYWdlR3JvdXAmIHBhZ2VHcm91cCwgYm9vbCBwYXVzZWQp
Ci17Ci0gICAgZm9yIChhdXRvJiBwYWdlIDogcGFnZUdyb3VwLnBhZ2VzKCkpIHsKLSAgICAgICAg
Zm9yIChGcmFtZSogZnJhbWUgPSAmcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZy
YW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpCi0gICAgICAgICAgICBzZXRKYXZhU2NyaXB0UGF1
c2VkKCpmcmFtZSwgcGF1c2VkKTsKLQotICAgICAgICBpZiAoYXV0byogZnJvbnRlbmRDbGllbnQg
PSBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuaW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoKSkg
ewotICAgICAgICAgICAgaWYgKHBhdXNlZCkKLSAgICAgICAgICAgICAgICBmcm9udGVuZENsaWVu
dC0+cGFnZVBhdXNlZCgpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGZyb250
ZW5kQ2xpZW50LT5wYWdlVW5wYXVzZWQoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBQ
YWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnNldEphdmFTY3JpcHRQYXVzZWQoRnJhbWUmIGZyYW1lLCBi
b29sIHBhdXNlZCkKLXsKLSAgICBpZiAoIWZyYW1lLnNjcmlwdCgpLmNhbkV4ZWN1dGVTY3JpcHRz
KE5vdEFib3V0VG9FeGVjdXRlU2NyaXB0KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZnJhbWUu
c2NyaXB0KCkuc2V0UGF1c2VkKHBhdXNlZCk7Ci0KLSAgICBBU1NFUlQoZnJhbWUuZG9jdW1lbnQo
KSk7Ci0gICAgYXV0byYgZG9jdW1lbnQgPSAqZnJhbWUuZG9jdW1lbnQoKTsKLSAgICBpZiAocGF1
c2VkKSB7Ci0gICAgICAgIGRvY3VtZW50LnN1c3BlbmRTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xs
ZXJDYWxsYmFja3MoKTsKLSAgICAgICAgZG9jdW1lbnQuc3VzcGVuZEFjdGl2ZURPTU9iamVjdHMo
UmVhc29uRm9yU3VzcGVuc2lvbjo6SmF2YVNjcmlwdERlYnVnZ2VyUGF1c2VkKTsKLSAgICB9IGVs
c2UgewotICAgICAgICBkb2N1bWVudC5yZXN1bWVBY3RpdmVET01PYmplY3RzKFJlYXNvbkZvclN1
c3BlbnNpb246OkphdmFTY3JpcHREZWJ1Z2dlclBhdXNlZCk7Ci0gICAgICAgIGRvY3VtZW50LnJl
c3VtZVNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygpOwotICAgIH0KLQotICAg
IGlmIChhdXRvKiB2aWV3ID0gZnJhbWUudmlldygpKSB7Ci0gICAgICAgIGZvciAoYXV0byYgY2hp
bGQgOiB2aWV3LT5jaGlsZHJlbigpKSB7Ci0gICAgICAgICAgICBpZiAoIWlzPFBsdWdpblZpZXdC
YXNlPihjaGlsZCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBkb3du
Y2FzdDxQbHVnaW5WaWV3QmFzZT4oY2hpbGQuZ2V0KCkpLnNldEphdmFTY3JpcHRQYXVzZWQocGF1
c2VkKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotI2lmICFQTEFURk9STShNQUMpCi1ib29sIFBh
Z2VTY3JpcHREZWJ1Z1NlcnZlcjo6cGxhdGZvcm1TaG91bGRDb250aW51ZVJ1bm5pbmdFdmVudExv
b3BXaGlsZVBhdXNlZCgpCi17Ci0gICAgcmV0dXJuIFJ1bkxvb3A6OmN5Y2xlKCkgIT0gUnVuTG9v
cDo6Q3ljbGVSZXN1bHQ6OlN0b3A7Ci19Ci0jZW5kaWYgLy8gIVBMQVRGT1JNKE1BQykKLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VT
Y3JpcHREZWJ1Z1NlcnZlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZjM4MTlk
YjQ4NWQ0MzA3NDZkYzZmYzlkYWE1NWNkYTZhYTcyY2QxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlU2Ny
aXB0RGVidWdTZXJ2ZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29w
eXJpZ2h0IChjKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvRGVidWdnZXIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1jbGFzcyBGcmFtZTsKLWNsYXNzIFBhZ2U7Ci1jbGFzcyBQYWdlR3JvdXA7Ci0KLWNsYXNzIFBh
Z2VTY3JpcHREZWJ1Z1NlcnZlciBmaW5hbCA6IHB1YmxpYyBKU0M6OkRlYnVnZ2VyIHsKLSAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShQYWdlU2NyaXB0RGVidWdTZXJ2ZXIpOwotICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcihQYWdl
Jik7Ci0gICAgflBhZ2VTY3JpcHREZWJ1Z1NlcnZlcigpIG92ZXJyaWRlID0gZGVmYXVsdDsKLQot
ICAgIHZvaWQgcmVjb21waWxlQWxsSlNGdW5jdGlvbnMoKSBvdmVycmlkZTsKLQotcHJpdmF0ZToK
LSAgICAvLyBKU0M6OkRlYnVnZ2VyCi0gICAgdm9pZCBhdHRhY2hEZWJ1Z2dlcigpIGZpbmFsOwot
ICAgIHZvaWQgZGV0YWNoRGVidWdnZXIoYm9vbCBpc0JlaW5nRGVzdHJveWVkKSBmaW5hbDsKLSAg
ICB2b2lkIGRpZFBhdXNlKEpTQzo6SlNHbG9iYWxPYmplY3QqKSBmaW5hbDsKLSAgICB2b2lkIGRp
ZENvbnRpbnVlKEpTQzo6SlNHbG9iYWxPYmplY3QqKSBmaW5hbDsKLSAgICB2b2lkIHJ1bkV2ZW50
TG9vcFdoaWxlUGF1c2VkKCkgZmluYWw7Ci0gICAgYm9vbCBpc0NvbnRlbnRTY3JpcHQoSlNDOjpK
U0dsb2JhbE9iamVjdCopIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgcmVwb3J0RXhjZXB0aW9uKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4Y2VwdGlvbiopIGNvbnN0IGZpbmFsOwotCi0gICAg
dm9pZCBydW5FdmVudExvb3BXaGlsZVBhdXNlZEludGVybmFsKCk7Ci0KLSAgICB2b2lkIHNldEph
dmFTY3JpcHRQYXVzZWQoY29uc3QgUGFnZUdyb3VwJiwgYm9vbCBwYXVzZWQpOwotICAgIHZvaWQg
c2V0SmF2YVNjcmlwdFBhdXNlZChGcmFtZSYsIGJvb2wgcGF1c2VkKTsKLQotICAgIGJvb2wgcGxh
dGZvcm1TaG91bGRDb250aW51ZVJ1bm5pbmdFdmVudExvb3BXaGlsZVBhdXNlZCgpOwotCi0gICAg
UGFnZSYgbV9wYWdlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODBjOWExMDVjNTRh
M2U1MzcwYWNjZDZjMTJmZjA2ZjJiMzQzNWRhMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlci5jcHAKQEAgLTAsMCArMSw5NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoYykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChjKSAyMDEzLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXb3JrZXJEZWJ1Z2dlci5oIgorCisjaW5jbHVk
ZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgorI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVk
ZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJXb3JrZXJSdW5Mb29wLmgiCisjaW5j
bHVkZSAiV29ya2VyVGhyZWFkLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVk0uaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCitXb3Jr
ZXJEZWJ1Z2dlcjo6V29ya2VyRGVidWdnZXIoV29ya2VyR2xvYmFsU2NvcGUmIGNvbnRleHQpCisg
ICAgOiBEZWJ1Z2dlcihjb250ZXh0LnNjcmlwdCgpLT52bSgpKQorICAgICwgbV93b3JrZXJHbG9i
YWxTY29wZShjb250ZXh0KQoreworfQorCit2b2lkIFdvcmtlckRlYnVnZ2VyOjphdHRhY2hEZWJ1
Z2dlcigpCit7CisgICAgSlNDOjpEZWJ1Z2dlcjo6YXR0YWNoRGVidWdnZXIoKTsKKworICAgIG1f
d29ya2VyR2xvYmFsU2NvcGUuc2NyaXB0KCktPmF0dGFjaERlYnVnZ2VyKHRoaXMpOworfQorCit2
b2lkIFdvcmtlckRlYnVnZ2VyOjpkZXRhY2hEZWJ1Z2dlcihib29sIGlzQmVpbmdEZXN0cm95ZWQp
Cit7CisgICAgSlNDOjpEZWJ1Z2dlcjo6ZGV0YWNoRGVidWdnZXIoaXNCZWluZ0Rlc3Ryb3llZCk7
CisKKyAgICBpZiAobV93b3JrZXJHbG9iYWxTY29wZS5zY3JpcHQoKSkKKyAgICAgICAgbV93b3Jr
ZXJHbG9iYWxTY29wZS5zY3JpcHQoKS0+ZGV0YWNoRGVidWdnZXIodGhpcyk7CisgICAgaWYgKCFp
c0JlaW5nRGVzdHJveWVkKQorICAgICAgICByZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucygpOworfQor
Cit2b2lkIFdvcmtlckRlYnVnZ2VyOjpyZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucygpCit7CisgICAg
SlNDOjpKU0xvY2tIb2xkZXIgbG9jayh2bSgpKTsKKyAgICBKU0M6OkRlYnVnZ2VyOjpyZWNvbXBp
bGVBbGxKU0Z1bmN0aW9ucygpOworfQorCit2b2lkIFdvcmtlckRlYnVnZ2VyOjpydW5FdmVudExv
b3BXaGlsZVBhdXNlZCgpCit7CisgICAgSlNDOjpEZWJ1Z2dlcjo6cnVuRXZlbnRMb29wV2hpbGVQ
YXVzZWQoKTsKKworICAgIFRpbWVyQmFzZTo6ZmlyZVRpbWVyc0luTmVzdGVkRXZlbnRMb29wKCk7
CisKKyAgICBNZXNzYWdlUXVldWVXYWl0UmVzdWx0IHJlc3VsdDsKKyAgICBkbyB7CisgICAgICAg
IHJlc3VsdCA9IG1fd29ya2VyR2xvYmFsU2NvcGUudGhyZWFkKCkucnVuTG9vcCgpLnJ1bkluRGVi
dWdnZXJNb2RlKG1fd29ya2VyR2xvYmFsU2NvcGUpOworICAgIH0gd2hpbGUgKHJlc3VsdCAhPSBN
ZXNzYWdlUXVldWVUZXJtaW5hdGVkICYmICFkb25lUHJvY2Vzc2luZ0RlYnVnZ2VyRXZlbnRzKCkp
OworfQorCit2b2lkIFdvcmtlckRlYnVnZ2VyOjpyZXBvcnRFeGNlcHRpb24oSlNDOjpKU0dsb2Jh
bE9iamVjdCogZXhlYywgSlNDOjpFeGNlcHRpb24qIGV4Y2VwdGlvbikgY29uc3QKK3sKKyAgICBK
U0M6OkRlYnVnZ2VyOjpyZXBvcnRFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uKTsKKworICAgIFdl
YkNvcmU6OnJlcG9ydEV4Y2VwdGlvbihleGVjLCBleGNlcHRpb24pOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2Vy
RGVidWdnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjFjNDU2OTk5YWVmNjJiNTQ0NmFmOTdkNjU0NjRmOGM1NmM5ZTFhZDMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyRGVidWdnZXIuaApA
QCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRGVi
dWdnZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBXb3JrZXJHbG9iYWxTY29w
ZTsKKworY2xhc3MgV29ya2VyRGVidWdnZXIgZmluYWwgOiBwdWJsaWMgSlNDOjpEZWJ1Z2dlciB7
CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV29ya2VyRGVidWdnZXIpOworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFdvcmtlckRlYnVnZ2VyKFdvcmtlckdsb2Jh
bFNjb3BlJik7CisgICAgfldvcmtlckRlYnVnZ2VyKCkgb3ZlcnJpZGUgPSBkZWZhdWx0OworCisK
K3ByaXZhdGU6CisgICAgLy8gSlNDOjpEZWJ1Z2dlcgorICAgIHZvaWQgYXR0YWNoRGVidWdnZXIo
KSBmaW5hbDsKKyAgICB2b2lkIGRldGFjaERlYnVnZ2VyKGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCkg
ZmluYWw7CisgICAgdm9pZCByZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucygpIGZpbmFsOworICAgIHZv
aWQgcnVuRXZlbnRMb29wV2hpbGVQYXVzZWQoKSBmaW5hbDsKKyAgICB2b2lkIHJlcG9ydEV4Y2Vw
dGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFeGNlcHRpb24qKSBjb25zdCBmaW5hbDsK
KworICAgIFdvcmtlckdsb2JhbFNjb3BlJiBtX3dvcmtlckdsb2JhbFNjb3BlOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDk0YTQ3NWY3MTUyMDlhNGU1MTQ2
NDA5YTAzMDBlOTdiM2MyNGVlMmYuLjkwZTk4NTQ0YjUzYTUwMmViOThhNWQ4YzIyNWI3MDMzYjM5
YTA2N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0
b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5z
cGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgV29ya2VySW5zcGVjdG9yQ29u
dHJvbGxlcjo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcihXb3JrZXJHbG9iYWxTY29wZSYgd29y
a2VyR2wKICAgICAsIG1fZnJvbnRlbmRSb3V0ZXIoRnJvbnRlbmRSb3V0ZXI6OmNyZWF0ZSgpKQog
ICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKG1fZnJv
bnRlbmRSb3V0ZXIuY29weVJlZigpKSkKICAgICAsIG1fZXhlY3V0aW9uU3RvcHdhdGNoKFN0b3B3
YXRjaDo6Y3JlYXRlKCkpCi0gICAgLCBtX3NjcmlwdERlYnVnU2VydmVyKHdvcmtlckdsb2JhbFNj
b3BlKQorICAgICwgbV9kZWJ1Z2dlcih3b3JrZXJHbG9iYWxTY29wZSkKICAgICAsIG1fd29ya2Vy
R2xvYmFsU2NvcGUod29ya2VyR2xvYmFsU2NvcGUpCiB7CiAgICAgQVNTRVJUKHdvcmtlckdsb2Jh
bFNjb3BlLmlzQ29udGV4dFRocmVhZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4IGMxMTVmNWI4OTVkOWU5NTI4
MjAyYWJkZmViZjQzZGM1ODY3ZDZhNmIuLjdhNTNkODA0YmZiY2UwZjYyZTExNTNjNTEzYjE3OGQ3
NDIzODNlZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNw
ZWN0b3JDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlcklu
c3BlY3RvckNvbnRyb2xsZXIuaApAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAot
I2luY2x1ZGUgIldvcmtlclNjcmlwdERlYnVnU2VydmVyLmgiCisjaW5jbHVkZSAiV29ya2VyRGVi
dWdnZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yRW52aXJvbm1lbnQuaD4KICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgSW5z
cGVjdG9yOjpJbnNwZWN0b3JFdmFsdWF0ZUhhbmRsZXIgZXZhbHVhdGVIYW5kbGVyKCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgdm9pZCBmcm9udGVuZEluaXRpYWxpemVkKCkgb3ZlcnJpZGUgeyB9CiAg
ICAgV1RGOjpTdG9wd2F0Y2gmIGV4ZWN1dGlvblN0b3B3YXRjaCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fZXhlY3V0aW9uU3RvcHdhdGNoOyB9Ci0gICAgV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIm
IHNjcmlwdERlYnVnU2VydmVyKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9zY3JpcHREZWJ1Z1NlcnZl
cjsgfQorICAgIFdvcmtlckRlYnVnZ2VyJiBkZWJ1Z2dlcigpIG92ZXJyaWRlIHsgcmV0dXJuIG1f
ZGVidWdnZXI7IH0KICAgICBKU0M6OlZNJiB2bSgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgpAQCAt
NzksNyArNzksNyBAQCBwcml2YXRlOgogICAgIFJlZjxJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVy
PiBtX2Zyb250ZW5kUm91dGVyOwogICAgIFJlZjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVy
PiBtX2JhY2tlbmREaXNwYXRjaGVyOwogICAgIFJlZjxXVEY6OlN0b3B3YXRjaD4gbV9leGVjdXRp
b25TdG9wd2F0Y2g7Ci0gICAgV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIgbV9zY3JpcHREZWJ1Z1Nl
cnZlcjsKKyAgICBXb3JrZXJEZWJ1Z2dlciBtX2RlYnVnZ2VyOwogICAgIEluc3BlY3Rvcjo6QWdl
bnRSZWdpc3RyeSBtX2FnZW50czsKICAgICBXb3JrZXJHbG9iYWxTY29wZSYgbV93b3JrZXJHbG9i
YWxTY29wZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWw+
IG1fZm9yd2FyZGluZ0NoYW5uZWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1dvcmtlclNjcmlwdERlYnVnU2VydmVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMzYxZGIxNmM0ZDRhNGUxOTM5NDQ5NzgwOWU0YmYxYzNiYzliNGUzOC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICogQ29weXJpZ2h0IChjKSAyMDEzLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0Ogot
ICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0g
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXb3JrZXJTY3JpcHREZWJ1Z1Nl
cnZlci5oIgotCi0jaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgotI2luY2x1ZGUg
IlRpbWVyLmgiCi0jaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKLSNpbmNsdWRlICJXb3Jr
ZXJSdW5Mb29wLmgiCi0jaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCi0jaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvVk0uaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi11c2luZyBuYW1lc3BhY2Ug
SW5zcGVjdG9yOwotCi1Xb3JrZXJTY3JpcHREZWJ1Z1NlcnZlcjo6V29ya2VyU2NyaXB0RGVidWdT
ZXJ2ZXIoV29ya2VyR2xvYmFsU2NvcGUmIGNvbnRleHQpCi0gICAgOiBEZWJ1Z2dlcihjb250ZXh0
LnNjcmlwdCgpLT52bSgpKQotICAgICwgbV93b3JrZXJHbG9iYWxTY29wZShjb250ZXh0KQotewot
fQotCi12b2lkIFdvcmtlclNjcmlwdERlYnVnU2VydmVyOjphdHRhY2hEZWJ1Z2dlcigpCi17Ci0g
ICAgSlNDOjpEZWJ1Z2dlcjo6YXR0YWNoRGVidWdnZXIoKTsKLQotICAgIG1fd29ya2VyR2xvYmFs
U2NvcGUuc2NyaXB0KCktPmF0dGFjaERlYnVnZ2VyKHRoaXMpOwotfQotCi12b2lkIFdvcmtlclNj
cmlwdERlYnVnU2VydmVyOjpkZXRhY2hEZWJ1Z2dlcihib29sIGlzQmVpbmdEZXN0cm95ZWQpCi17
Ci0gICAgSlNDOjpEZWJ1Z2dlcjo6ZGV0YWNoRGVidWdnZXIoaXNCZWluZ0Rlc3Ryb3llZCk7Ci0K
LSAgICBpZiAobV93b3JrZXJHbG9iYWxTY29wZS5zY3JpcHQoKSkKLSAgICAgICAgbV93b3JrZXJH
bG9iYWxTY29wZS5zY3JpcHQoKS0+ZGV0YWNoRGVidWdnZXIodGhpcyk7Ci0gICAgaWYgKCFpc0Jl
aW5nRGVzdHJveWVkKQotICAgICAgICByZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucygpOwotfQotCi12
b2lkIFdvcmtlclNjcmlwdERlYnVnU2VydmVyOjpyZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucygpCi17
Ci0gICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayh2bSgpKTsKLSAgICBKU0M6OkRlYnVnZ2VyOjpy
ZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucygpOwotfQotCi12b2lkIFdvcmtlclNjcmlwdERlYnVnU2Vy
dmVyOjpydW5FdmVudExvb3BXaGlsZVBhdXNlZCgpCi17Ci0gICAgSlNDOjpEZWJ1Z2dlcjo6cnVu
RXZlbnRMb29wV2hpbGVQYXVzZWQoKTsKLQotICAgIFRpbWVyQmFzZTo6ZmlyZVRpbWVyc0luTmVz
dGVkRXZlbnRMb29wKCk7Ci0KLSAgICBNZXNzYWdlUXVldWVXYWl0UmVzdWx0IHJlc3VsdDsKLSAg
ICBkbyB7Ci0gICAgICAgIHJlc3VsdCA9IG1fd29ya2VyR2xvYmFsU2NvcGUudGhyZWFkKCkucnVu
TG9vcCgpLnJ1bkluRGVidWdnZXJNb2RlKG1fd29ya2VyR2xvYmFsU2NvcGUpOwotICAgIH0gd2hp
bGUgKHJlc3VsdCAhPSBNZXNzYWdlUXVldWVUZXJtaW5hdGVkICYmICFkb25lUHJvY2Vzc2luZ0Rl
YnVnZ2VyRXZlbnRzKCkpOwotfQotCi12b2lkIFdvcmtlclNjcmlwdERlYnVnU2VydmVyOjpyZXBv
cnRFeGNlcHRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlYywgSlNDOjpFeGNlcHRpb24qIGV4
Y2VwdGlvbikgY29uc3QKLXsKLSAgICBKU0M6OkRlYnVnZ2VyOjpyZXBvcnRFeGNlcHRpb24oZXhl
YywgZXhjZXB0aW9uKTsKLQotICAgIFdlYkNvcmU6OnJlcG9ydEV4Y2VwdGlvbihleGVjLCBleGNl
cHRpb24pOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9Xb3JrZXJTY3JpcHREZWJ1Z1NlcnZlci5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBjOGJhMzJlNDM3Y2Q4ZmYzY2VhMzJiZjdjODQwNjdjOTlkNThjYjc1Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9Xb3JrZXJTY3JpcHREZWJ1Z1NlcnZlci5oCisrKyAvZGV2L251bGwKQEAg
LTEsNTkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAxMSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChjKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1l
dDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0RlYnVn
Z2VyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7
Ci0KLWNsYXNzIFdvcmtlclNjcmlwdERlYnVnU2VydmVyIGZpbmFsIDogcHVibGljIEpTQzo6RGVi
dWdnZXIgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdvcmtlclNjcmlwdERlYnVnU2VydmVy
KTsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBXb3JrZXJTY3Jp
cHREZWJ1Z1NlcnZlcihXb3JrZXJHbG9iYWxTY29wZSYpOwotICAgIH5Xb3JrZXJTY3JpcHREZWJ1
Z1NlcnZlcigpIG92ZXJyaWRlID0gZGVmYXVsdDsKLQotCi1wcml2YXRlOgotICAgIC8vIEpTQzo6
RGVidWdnZXIKLSAgICB2b2lkIGF0dGFjaERlYnVnZ2VyKCkgZmluYWw7Ci0gICAgdm9pZCBkZXRh
Y2hEZWJ1Z2dlcihib29sIGlzQmVpbmdEZXN0cm95ZWQpIGZpbmFsOwotICAgIHZvaWQgcmVjb21w
aWxlQWxsSlNGdW5jdGlvbnMoKSBmaW5hbDsKLSAgICB2b2lkIHJ1bkV2ZW50TG9vcFdoaWxlUGF1
c2VkKCkgZmluYWw7Ci0gICAgdm9pZCByZXBvcnRFeGNlcHRpb24oSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6RXhjZXB0aW9uKikgY29uc3QgZmluYWw7Ci0KLSAgICBXb3JrZXJHbG9iYWxTY29w
ZSYgbV93b3JrZXJHbG9iYWxTY29wZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRp
bWVsaW5lQWdlbnQuY3BwCmluZGV4IDMwMWVmOTUyNTY0OWJhMDBkYjIyOTMzNDg1MjYxNzNjZDEx
OTI3YWMuLjFkOGY0MTc1M2FkNjVlYjA2NTE0MDk3ZDRjN2Q5ZjExYWRmNzhiMTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1l
bGluZUFnZW50LmNwcApAQCAtNDQsOCArNDQsOCBAQAogI2luY2x1ZGUgIkluc3BlY3RvclBhZ2VB
Z2VudC5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJKU0RP
TVdpbmRvdy5oIgorI2luY2x1ZGUgIlBhZ2VEZWJ1Z2dlci5oIgogI2luY2x1ZGUgIlBhZ2VIZWFw
QWdlbnQuaCIKLSNpbmNsdWRlICJQYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaCIKICNpbmNsdWRlICJS
ZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlICJUaW1lbGlu
ZVJlY29yZEZhY3RvcnkuaCIKQEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVs
aW5lQWdlbnQ6OmludGVybmFsU3RhcnQoY29uc3QgaW50KiBtYXhDYWxsU3RhY2tEZXB0aCkKIAog
ICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRUcmFja2luZ1RpbWVsaW5lQWdlbnQodGhpcyk7
CiAKLSAgICBtX2Vudmlyb25tZW50LnNjcmlwdERlYnVnU2VydmVyKCkuYWRkT2JzZXJ2ZXIoKnRo
aXMpOworICAgIG1fZW52aXJvbm1lbnQuZGVidWdnZXIoKS5hZGRPYnNlcnZlcigqdGhpcyk7CiAK
ICAgICBtX3RyYWNraW5nID0gdHJ1ZTsKIApAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgSW5zcGVj
dG9yVGltZWxpbmVBZ2VudDo6aW50ZXJuYWxTdGFydChjb25zdCBpbnQqIG1heENhbGxTdGFja0Rl
cHRoKQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgbV9mcmFtZVN0YXJ0T2JzZXJ2ZXIgPSBt
YWtlVW5pcXVlPFJ1bkxvb3BPYnNlcnZlcj4oc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oUnVuTG9vcE9i
c2VydmVyOjpXZWxsS25vd25SdW5Mb29wT3JkZXJzOjpJbnNwZWN0b3JGcmFtZUJlZ2luKSwgW3Ro
aXNdKCkgewotICAgICAgICBpZiAoIW1fdHJhY2tpbmcgfHwgbV9lbnZpcm9ubWVudC5zY3JpcHRE
ZWJ1Z1NlcnZlcigpLmlzUGF1c2VkKCkpCisgICAgICAgIGlmICghbV90cmFja2luZyB8fCBtX2Vu
dmlyb25tZW50LmRlYnVnZ2VyKCkuaXNQYXVzZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIAog
ICAgICAgICBpZiAoIW1fcnVuTG9vcE5lc3RpbmdMZXZlbCkKQEAgLTIwNCw3ICsyMDQsNyBAQCB2
b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmludGVybmFsU3RhcnQoY29uc3QgaW50KiBtYXhD
YWxsU3RhY2tEZXB0aCkKICAgICB9KTsKIAogICAgIG1fZnJhbWVTdG9wT2JzZXJ2ZXIgPSBtYWtl
VW5pcXVlPFJ1bkxvb3BPYnNlcnZlcj4oc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oUnVuTG9vcE9ic2Vy
dmVyOjpXZWxsS25vd25SdW5Mb29wT3JkZXJzOjpJbnNwZWN0b3JGcmFtZUVuZCksIFt0aGlzXSgp
IHsKLSAgICAgICAgaWYgKCFtX3RyYWNraW5nIHx8IG1fZW52aXJvbm1lbnQuc2NyaXB0RGVidWdT
ZXJ2ZXIoKS5pc1BhdXNlZCgpKQorICAgICAgICBpZiAoIW1fdHJhY2tpbmcgfHwgbV9lbnZpcm9u
bWVudC5kZWJ1Z2dlcigpLmlzUGF1c2VkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAg
ICAgQVNTRVJUKG1fcnVuTG9vcE5lc3RpbmdMZXZlbCA+IDApOwpAQCAtMjQxLDcgKzI0MSw3IEBA
IHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6aW50ZXJuYWxTdG9wKCkKIAogICAgIG1faW5z
dHJ1bWVudGluZ0FnZW50cy5zZXRUcmFja2luZ1RpbWVsaW5lQWdlbnQobnVsbHB0cik7CiAKLSAg
ICBtX2Vudmlyb25tZW50LnNjcmlwdERlYnVnU2VydmVyKCkucmVtb3ZlT2JzZXJ2ZXIoKnRoaXMs
IHRydWUpOworICAgIG1fZW52aXJvbm1lbnQuZGVidWdnZXIoKS5yZW1vdmVPYnNlcnZlcigqdGhp
cywgdHJ1ZSk7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBtX2ZyYW1lU3RhcnRPYnNlcnZl
ciA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L3BhZ2UvUGFnZURlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9wYWdlL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcAppbmRleCAyMTdjYjU1ZTZjMGVkNzZjOWU2
NzQxOGE4YzMzNGEwNDE4ZmNlMmQ2Li4wYzIwMzk4MjczM2I0ZWU4YmFiZDA1NThmYTMzYjJhMWRj
NGY4ZjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2Uv
UGFnZURlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvcGFnZS9QYWdlRGVidWdnZXJBZ2VudC5jcHAKQEAgLTQwLDcgKzQwLDcgQEAKICNpbmNsdWRl
ICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBh
Z2VDb25zb2xlQ2xpZW50LmgiCi0jaW5jbHVkZSAiUGFnZVNjcmlwdERlYnVnU2VydmVyLmgiCisj
aW5jbHVkZSAiUGFnZURlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVFbXVs
YXRpb25TY29wZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL21hYy9Q
YWdlRGVidWdnZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvbWFjL1BhZ2VEZWJ1
Z2dlck1hYy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNGExY2JhOGU2OTNjNzViNmM4NzA1YzMwNTQyODNlYjI5
ZmJmMGE4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL21hYy9Q
YWdlRGVidWdnZXJNYWMubW0KQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwOC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lt
cG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJQYWdlRGVidWdnZXIuaCIKKworI2lmIFBMQVRGT1JN
KE1BQykKKworI2ltcG9ydCA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitib29sIFBhZ2VEZWJ1Z2dlcjo6cGxhdGZvcm1TaG91bGRDb250aW51ZVJ1bm5p
bmdFdmVudExvb3BXaGlsZVBhdXNlZCgpCit7CisgICAgLy8gQmUgdmVyeSBjYXJlZnVsIGJlZm9y
ZSByZW1vdmluZyB0aGlzIGNvZGUuIEl0IGhhcyBiZWVuIHRyaWVkIG11bHRpcGxlIHRpbWVzLCBh
bHdheXMgZW5kaW5nIHVwCisgICAgLy8gYnJlYWtpbmcgaW5zcGVjdGlvbiBvZiBXZWJLaXRMZWdh
Y3kgKGluIE1pbmlCcm93c2VyLCBpbiAzcmQgcGFydHkgYXBwcywgb3Igc29tZXRpbWVzIGJvdGgp
LgorICAgIC8vICAtIDxodHRwczovL3dlYmtpdC5vcmcvYi8xMTc1OTY+IDxyZGFyOi8vcHJvYmxl
bS8xNDEzMzAwMT4KKyAgICAvLyAgLSA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjEwMTc3PiA8cmRh
cjovL3Byb2JsZW0vNjE0ODU3MjM+CisKKyNpZiBFTkFCTEUoV0VCUFJPQ0VTU19OU1JVTkxPT1Ap
CisgICAgaWYgKCFbTlNBcHAgaXNSdW5uaW5nXSkgeworICAgICAgICBbW05TUnVuTG9vcCBjdXJy
ZW50UnVuTG9vcF0gcnVuVW50aWxEYXRlOltOU0RhdGUgZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5j
ZU5vdzowLjA1XV07CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIEFTU0VSVCho
YXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkNvbW11bmljYXRlV2l0aFdp
bmRvd1NlcnZlcikpOworI2VuZGlmCisKKyAgICBbTlNBcHAgc2V0V2luZG93c05lZWRVcGRhdGU6
WUVTXTsKKworICAgIGlmIChOU0V2ZW50ICpldmVudCA9IFtOU0FwcCBuZXh0RXZlbnRNYXRjaGlu
Z01hc2s6TlNFdmVudE1hc2tBbnkgdW50aWxEYXRlOltOU0RhdGUgZGF0ZVdpdGhUaW1lSW50ZXJ2
YWxTaW5jZU5vdzowLjA1XSBpbk1vZGU6TlNEZWZhdWx0UnVuTG9vcE1vZGUgZGVxdWV1ZTpZRVNd
KQorICAgICAgICBbTlNBcHAgc2VuZEV2ZW50OmV2ZW50XTsKKworICAgIHJldHVybiB0cnVlOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBQTEFURk9STShNQUMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvbWFjL1BhZ2VTY3JpcHREZWJ1Z1Nl
cnZlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9tYWMvUGFnZVNjcmlwdERlYnVn
U2VydmVyTWFjLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMWI2NmU0NGI3NTUy
MTUxZjJmMmNhNjM0NzJmNWRlZDAxNGFjMThhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9tYWMvUGFnZVNjcmlw
dERlYnVnU2VydmVyTWFjLm1tCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJQYWdlU2NyaXB0RGVidWdT
ZXJ2ZXIuaCIKLQotI2lmIFBMQVRGT1JNKE1BQykKLQotI2ltcG9ydCA8d3RmL1Byb2Nlc3NQcml2
aWxlZ2UuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1ib29sIFBhZ2VTY3JpcHREZWJ1Z1Nl
cnZlcjo6cGxhdGZvcm1TaG91bGRDb250aW51ZVJ1bm5pbmdFdmVudExvb3BXaGlsZVBhdXNlZCgp
Ci17Ci0gICAgLy8gQmUgdmVyeSBjYXJlZnVsIGJlZm9yZSByZW1vdmluZyB0aGlzIGNvZGUuIEl0
IGhhcyBiZWVuIHRyaWVkIG11bHRpcGxlIHRpbWVzLCBhbHdheXMgZW5kaW5nIHVwCi0gICAgLy8g
YnJlYWtpbmcgaW5zcGVjdGlvbiBvZiBXZWJLaXRMZWdhY3kgKGluIE1pbmlCcm93c2VyLCBpbiAz
cmQgcGFydHkgYXBwcywgb3Igc29tZXRpbWVzIGJvdGgpLgotICAgIC8vICAtIDxodHRwczovL3dl
YmtpdC5vcmcvYi8xMTc1OTY+IDxyZGFyOi8vcHJvYmxlbS8xNDEzMzAwMT4KLSAgICAvLyAgLSA8
aHR0cHM6Ly93ZWJraXQub3JnL2IvMjEwMTc3PiA8cmRhcjovL3Byb2JsZW0vNjE0ODU3MjM+Ci0K
LSNpZiBFTkFCTEUoV0VCUFJPQ0VTU19OU1JVTkxPT1ApCi0gICAgaWYgKCFbTlNBcHAgaXNSdW5u
aW5nXSkgewotICAgICAgICBbW05TUnVuTG9vcCBjdXJyZW50UnVuTG9vcF0gcnVuVW50aWxEYXRl
OltOU0RhdGUgZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZU5vdzowLjA1XV07Ci0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgIH0KLQotICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nl
c3NQcml2aWxlZ2U6OkNhbkNvbW11bmljYXRlV2l0aFdpbmRvd1NlcnZlcikpOwotI2VuZGlmCi0K
LSAgICBbTlNBcHAgc2V0V2luZG93c05lZWRVcGRhdGU6WUVTXTsKLQotICAgIGlmIChOU0V2ZW50
ICpldmVudCA9IFtOU0FwcCBuZXh0RXZlbnRNYXRjaGluZ01hc2s6TlNFdmVudE1hc2tBbnkgdW50
aWxEYXRlOltOU0RhdGUgZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZU5vdzowLjA1XSBpbk1vZGU6
TlNEZWZhdWx0UnVuTG9vcE1vZGUgZGVxdWV1ZTpZRVNdKQotICAgICAgICBbTlNBcHAgc2VuZEV2
ZW50OmV2ZW50XTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBQTEFURk9STShNQUMpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>