<?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>174150</bug_id>
          
          <creation_ts>2017-07-04 21:41:15 -0700</creation_ts>
          <short_desc>[WTF] Clean up StringStatics.cpp by using LazyNeverDestroyed&lt;&gt; for Atoms</short_desc>
          <delta_ts>2017-07-06 21:42:20 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>jlewis3</cc>
    
    <cc>mark.lam</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1325528</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-07-04 21:41:15 -0700</bug_when>
    <thetext>[WTF] Clean up StringStatics.cpp by using LazyNeverDestroyed&lt;&gt; for Atoms</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1325530</commentid>
    <comment_count>1</comment_count>
      <attachid>314598</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-07-04 21:57:52 -0700</bug_when>
    <thetext>Created attachment 314598
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1325531</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-07-04 22:00:59 -0700</bug_when>
    <thetext>Attachment 314598 did not pass style-queue:


ERROR: Source/WebCore/accessibility/AXObjectCache.cpp:426:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 1 in 145 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1325645</commentid>
    <comment_count>3</comment_count>
      <attachid>314598</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-07-05 10:53:10 -0700</bug_when>
    <thetext>Comment on attachment 314598
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1325860</commentid>
    <comment_count>4</comment_count>
      <attachid>314598</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-07-05 18:34:23 -0700</bug_when>
    <thetext>Comment on attachment 314598
Patch

Thank you!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1325869</commentid>
    <comment_count>5</comment_count>
      <attachid>314598</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-07-05 19:02:57 -0700</bug_when>
    <thetext>Comment on attachment 314598
Patch

Clearing flags on attachment: 314598

Committed r219178: &lt;http://trac.webkit.org/changeset/219178&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1325870</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-07-05 19:02:58 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326048</commentid>
    <comment_count>7</comment_count>
    <who name="Matt Lewis">jlewis3</who>
    <bug_when>2017-07-06 09:15:05 -0700</bug_when>
    <thetext>This revision caused an API failure on all Debug testers. The test failing is:
StringBuilderTest.ToAtomicStringOnEmpty

https://build.webkit.org/builders/Apple%20El%20Capitan%20Debug%20WK2%20%28Tests%29/builds/2054/steps/run-api-tests/logs/stdio
https://build.webkit.org/builders/Apple%20El%20Capitan%20Debug%20WK2%20(Tests)/builds/2060

This is causing the trees to stay on a consistent failure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326050</commentid>
    <comment_count>8</comment_count>
    <who name="Matt Lewis">jlewis3</who>
    <bug_when>2017-07-06 09:22:47 -0700</bug_when>
    <thetext>Reverted r219178 for reason:

This caused a consistent failure with the API test StringBuilderTest.ToAtomicStringOnEmpty on all Debug testers.

Committed r219199: &lt;http://trac.webkit.org/changeset/219199&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326334</commentid>
    <comment_count>9</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-07-06 20:17:22 -0700</bug_when>
    <thetext>(In reply to Matt Lewis from comment #7)
&gt; This revision caused an API failure on all Debug testers. The test failing
&gt; is:
&gt; StringBuilderTest.ToAtomicStringOnEmpty
&gt; 
&gt; https://build.webkit.org/builders/
&gt; Apple%20El%20Capitan%20Debug%20WK2%20%28Tests%29/builds/2054/steps/run-api-
&gt; tests/logs/stdio
&gt; https://build.webkit.org/builders/
&gt; Apple%20El%20Capitan%20Debug%20WK2%20(Tests)/builds/2060
&gt; 
&gt; This is causing the trees to stay on a consistent failure.

Thanks!
This is because of TestWTF&apos;s bug. It does not call AtomicString::init() while it uses AtomicString. I&apos;ll add it and land it again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326376</commentid>
    <comment_count>10</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-07-06 21:42:20 -0700</bug_when>
    <thetext>Committed r219237: &lt;http://trac.webkit.org/changeset/219237&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314598</attachid>
            <date>2017-07-04 21:57:52 -0700</date>
            <delta_ts>2017-07-05 19:02:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174150-20170705135751.patch</filename>
            <type>text/plain</type>
            <size>214659</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5MTI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDJkZTRmOGI0NTZkNmQ2ZWMzMGM2ODNh
YmNkNTU4MjMxMGQ5NGNjZTcuLjc2ZGRkZWZmODQ4Njg3N2IyYzM3N2NjYmM3YjZlYWNiYmFhOWI0
ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsNTkgQEAKIDIwMTctMDctMDQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CiAKKyAgICAgICAgW1dURl0gQ2xlYW4gdXAgU3RyaW5nU3RhdGlj
cy5jcHAgYnkgdXNpbmcgTGF6eU5ldmVyRGVzdHJveWVkPD4gZm9yIEF0b21zCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQxNTAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGNsZWFucyB1
cCBTdHJpbmdTdGF0aWNzLmNwcCBhbmQgcmVtb3ZlIGl0IGZyb20gdGhlIHRyZWUuCisKKyAgICAg
ICAgMS4gTW92ZSBTdHJpbmdJbXBsIG1ldGhvZHMgdG8gYXBwcm9wcmlhdGUgcGxhY2UsICJTdHJp
bmdJbXBsLmNwcCIuCisKKyAgICAgICAgU3RyaW5nSW1wbDo6aGFzaFNsb3dDYXNlKCkgYW5kIFN0
cmluZ0ltcGw6OmNvbmN1cnJlbnRIYXNoKCkgYXJlIGRlZmluZWQgaW4KKyAgICAgICAgU3RyaW5n
U3RhdGljcy5jcHAuIEJ1dCB0aGV5IHNob3VsZCBiZSBkZWZpbmVkIGluIFN0cmluZ0ltcGwuY3Bw
LgorICAgICAgICBUaGlzIHBhdGNoIGp1c3QgbW92ZXMgdGhlbSB0byBTdHJpbmdJbXBsLmNwcC4K
KworICAgICAgICAyLiBVc2UgTGF6eU5ldmVyRGVzdHJveWVkIHRvIGluaXRpYWxpemUgQXRvbWlj
U3RyaW5nIGF0b21zIGxpa2UgZW1wdHlBdG9tLgorCisgICAgICAgIFByZXZpb3VzbHksIHdlIGlu
aXRpYWxpemVkIEF0b21pY1N0cmluZyBhdG9tcyBsaWtlIGVtcHR5QXRvbSBpbiBhIGhhY2t5IHdh
eS4KKyAgICAgICAgV2UgZmlyc3QgZGVmaW5lIHRoZW0gYXMgZXh0ZXJuIGdsb2JhbCB2YXJpYWJs
ZXMuIEhvd2V2ZXIsIEF0b21pY1N0cmluZyBoYXMKKyAgICAgICAgYSBub24tdHJpdmlhbCBjb25z
dHJ1Y3Rvci4gVGh1cywgd2UgY2Fubm90IGRvIHRoaXMgYmVjYXVzZSBpdCByZXF1aXJlcyBnbG9i
YWwKKyAgICAgICAgY29uc3RydWN0b3IgY2FsbHMuIFRoaXMgaXMgd2h5IHdlIGhhdmUgU3RyaW5n
U3RhdGljcy5jcHAuIEluIHRoaXMgZmlsZSwgd2UKKyAgICAgICAgaW5jbHVkZSAiU3RhdGljQ29u
c3RydWN0b3JzLmgiLiBBZnRlciBpbmNsdWRpbmcgdGhpcyBmaWxlLCBhbGwgdGhlIGdsb2JhbAor
ICAgICAgICBjb25zdHJ1Y3RvciBjYWxsIGRpc2FibGVkIGluIFdpbmRvd3MuIEFuZCBpbiBHQ0Mg
ZW52aXJvbm1lbnQsIHdlIGFsbG9jYXRlCisgICAgICAgIHZvaWQqIHN0b3JhZ2UgZm9yIHRoYXQg
dmFyaWFibGUuIEFuZCB3ZSB1c2UgcGxhY2VtZW50IG5ldyBpbiBBdG9taWNTdHJpbmc6OmluaXQo
KQorICAgICAgICB0byBpbml0aWFsaXplIHRoZXNlIHN0b3JhZ2UuCisgICAgICAgIEhvd2V2ZXIs
IHdlIGFscmVhZHkgaGF2ZSBiZXR0ZXIgd2F5IGZvciB0aGF0OiBMYXp5TmV2ZXJEZXN0cm95ZWQu
IEl0IGp1c3QgYWxsb2NhdGVzCisgICAgICAgIHN0b3JhZ2UgbGlrZSB0aGUgYWJvdmUuIEFuZCBp
dCBkb2VzIG5vdCBoYXZlIGFueSBnbG9iYWwgY29uc3RydWN0b3JzLiBUaHVzCisgICAgICAgIHdl
IGNhbiBqdXN0IGRlY2xhcmUgaXQgYXMgYSBnbG9iYWwgdmFyaWFibGUuIEFuZCB3ZSBpbml0aWFs
aXplIHRoZW0gbGF6aWx5IGluCisgICAgICAgIEF0b21pY1N0cmluZzo6aW5pdCgpLiBUaGlzIHdh
eSBlZmZlY3RpdmVseSBhdm9pZHMgIlN0YXRpY0NvbnN0cnVjdG9ycy5oIiBoYWNreSB3YXkuCisg
ICAgICAgIEFuZCBpdCBtYWtlcyAiU3RyaW5nU3RhdGljcy5jcHAiIHVubmVjZXNzYXJ5LgorICAg
ICAgICBUaGVuLCB3ZSBqdXN0IG1vdmUgdGhlc2UgdmFyaWFibGVzIGFuZCBBdG9taWNTdHJpbmc6
OmluaXQoKSB0byBBdG9taWNTdHJpbmcuY3BwLgorCisgICAgICAgIEFuZCB3ZSBhbHNvIGNoYW5n
ZSBlbXB0eUF0b20gdG8gZW1wdHlBdG9tKCkgdG8gZ2V0IHRoZSB2YWx1ZSBmcm9tIExhenlOZXZl
ckRlc3Ryb3llZDw+LgorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIHd0Zi90ZXh0L0F0b21p
Y1N0cmluZy5jcHA6CisgICAgICAgIChXVEY6OkF0b21pY1N0cmluZzo6Y29udmVydEFTQ0lJQ2Fz
ZSk6CisgICAgICAgIChXVEY6OkF0b21pY1N0cmluZzo6ZnJvbVVURjhJbnRlcm5hbCk6CisgICAg
ICAgIChXVEY6OkF0b21pY1N0cmluZzo6aW5pdCk6CisgICAgICAgICogd3RmL3RleHQvQXRvbWlj
U3RyaW5nLmg6CisgICAgICAgIChXVEY6Om51bGxBdG9tKToKKyAgICAgICAgKFdURjo6ZW1wdHlB
dG9tKToKKyAgICAgICAgKFdURjo6c3RhckF0b20pOgorICAgICAgICAoV1RGOjp4bWxBdG9tKToK
KyAgICAgICAgKFdURjo6eG1sbnNBdG9tKToKKyAgICAgICAgKFdURjo6QXRvbWljU3RyaW5nOjpm
cm9tVVRGOCk6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oOgorICAgICAgICAo
V1RGOjpTdHJpbmdCdWlsZGVyOjp0b0F0b21pY1N0cmluZyk6CisgICAgICAgICogd3RmL3RleHQv
U3RyaW5nSW1wbC5jcHA6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6Omhhc2hTbG93Q2FzZSk6
CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmNvbmN1cnJlbnRIYXNoKToKKyAgICAgICAgKiB3
dGYvdGV4dC9TdHJpbmdTdGF0aWNzLmNwcDogUmVtb3ZlZC4KKworMjAxNy0wNy0wNCAgWXVzdWtl
IFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKwogICAgICAgICBbV1RGXSBNYWtlIGRv
dWJsZS1jb252ZXJzaW9uJ3MgY2FjaGUgZGF0YSBjb25zdGFudCBhbmQgZHJvcCBkb3VibGVfY29u
dmVyc2lvbjo6aW5pdGlhbGl6ZSgpCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzQxMjQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDhiNGYyNjAzYjM1OWI0ZGJjMzhh
OTljYjE3MWQ0NmIyMzkyMjc5NzAuLjZiN2E0YzBlMDM4MjAzZGQ1ZjZjMDdlNzc2ZjVmNzRiZDYw
MGE1MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzODMgQEAKKzIwMTctMDctMDQgIFl1c3VrZSBT
dXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW1dURl0gQ2xlYW4gdXAg
U3RyaW5nU3RhdGljcy5jcHAgYnkgdXNpbmcgTGF6eU5ldmVyRGVzdHJveWVkPD4gZm9yIEF0b21z
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQxNTAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUNvbnRyb2xzSG9zdDo6Y2FwdGlvbkRpc3BsYXlNb2RlKToKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJU
Q0RhdGFDaGFubmVsOjpiaW5hcnlUeXBlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FYT2Jq
ZWN0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRnJvbVJlbmRlcmVyKToKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2w6OmNvbnRyb2xUeXBlTmFt
ZSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Omxhbmd1YWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmRlZmF1bHRMaXZlUmVnaW9uU3RhdHVzRm9y
Um9sZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY3Rpb25WZXJi
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmdldEF0dHJpYnV0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpwbGFjZWhvbGRlclZhbHVl
KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc0tleSk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhTGl2ZVJlZ2lvblJlbGV2YW50KToKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWNjZXNzS2V5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjdGlvblZlcmIpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6OmNvbnN0cnVjdEVsZW1lbnRX
aXRoRmFsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudFJlZ2lz
dHJ5Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5
OjpkZWZpbmUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
OgorICAgICAgICAoR2VuZXJhdGVEZWZhdWx0VmFsdWUpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdG9taWNTdHJpbmdCb2R5KToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlv
bmFsQXRvbWljU3RyaW5nSXNOdWxsQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZ0lzRW1wdHlTdHJp
bmdCb2R5KToKKyAgICAgICAgKiBjc3MvQ1NTUGFnZVJ1bGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUGFnZVJ1bGU6OnNlbGVjdG9yVGV4dCk6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2
ZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnZhbHVlTmFtZSk6CisgICAgICAgICogY3Nz
L0NTU1NlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNpbXBsZVNlbGVjdG9yU3BlY2lm
aWNpdHlJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6c3BlY2lmaWNp
dHlGb3JQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpSYXJlRGF0YTo6UmFy
ZURhdGEpOgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvci5oOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTU2VsZWN0b3I6OmFyZ3VtZW50KToKKyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0b3JMaXN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yTmVlZHNOYW1lc3BhY2VSZXNvbHV0aW9uRnVu
Y3Rvcjo6b3BlcmF0b3IoKSk6CisgICAgICAgICogY3NzL1BhZ2VSdWxlQ29sbGVjdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNoZWNrUGFnZVNlbGVjdG9yQ29tcG9uZW50cyk6CisgICAgICAg
ICogY3NzL1J1bGVTZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZU1hdGNoQmFzZWRP
blJ1bGVIYXNoKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bGVTZXQ6OmFkZFJ1bGUpOgorICAgICAg
ICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dGFnTWF0Y2hl
cyk6CisgICAgICAgICogY3NzL1NlbGVjdG9yRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNvbGxlY3REZXNjZW5kYW50U2VsZWN0b3JJZGVudGlmaWVySGFzaGVzKToKKyAgICAgICAgKiBj
c3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxk
ZXJDb252ZXJ0ZXI6OmNvbnZlcnRTdHJpbmdPckF1dG8pOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U3RyaW5nT3JOb25lKToKKyAgICAgICAgKiBjc3Mv
U3R5bGVCdWlsZGVyQ3VzdG9tLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDdXN0
b206OmFwcGx5VmFsdWVXZWJraXRMb2NhbGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWls
ZGVyQ3VzdG9tOjphcHBseVZhbHVlV2Via2l0VGV4dEVtcGhhc2lzU3R5bGUpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQ29udGVudCk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVBbHQpOgorICAgICAgICAq
IGNzcy9TdHlsZVNoZWV0Q29udGVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTaGVl
dENvbnRlbnRzOjpTdHlsZVNoZWV0Q29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVT
aGVldENvbnRlbnRzOjpuYW1lc3BhY2VVUklGcm9tUHJlZml4KToKKyAgICAgICAgKiBjc3MvbWFr
ZXByb3AucGw6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1BhcnNlckltcGw6OnBhcnNlUGFnZVNlbGVjdG9yKToKKyAgICAgICAg
KiBjc3MvcGFyc2VyL0NTU1NlbGVjdG9yUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1NlbGVjdG9yUGFyc2VyOjpjb25zdW1lQ29tcG91bmRTZWxlY3Rvcik6CisgICAgICAgIChXZWJD
b3JlOjpDU1NTZWxlY3RvclBhcnNlcjo6Y29uc3VtZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTU2VsZWN0b3JQYXJzZXI6OmNvbnN1bWVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTU2VsZWN0b3JQYXJzZXI6OmRlZmF1bHROYW1lc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTU2VsZWN0b3JQYXJzZXI6OmRldGVybWluZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NTZWxlY3RvclBhcnNlcjo6cHJlcGVuZFR5cGVTZWxlY3RvcklmTmVlZGVkKToKKyAgICAg
ICAgKiBjc3NqaXQvU2VsZWN0b3JDb21waWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxl
Y3RvckNvbXBpbGVyOjphdHRyaWJ1dGVOYW1lVGVzdGluZ1JlcXVpcmVzTmFtZXNwYWNlUmVnaXN0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxlcjo6ZXF1YWxUYWdOYW1lcyk6
CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNvbXBpbGVyOjpTZWxlY3RvckNvZGVHZW5lcmF0
b3I6OmdlbmVyYXRlRWxlbWVudEF0dHJpYnV0ZU1hdGNoaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdG9yQ29tcGlsZXI6OlNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVFbGVtZW50
SGFzVGFnTmFtZSk6CisgICAgICAgICogZG9tL0F0dHIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QXR0cjo6c2V0UHJlZml4KToKKyAgICAgICAgKFdlYkNvcmU6OkF0dHI6OmF0dGFjaFRvRWxlbWVu
dCk6CisgICAgICAgICogZG9tL0F0dHJpYnV0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6QXR0cmli
dXRlOjpuYW1lTWF0Y2hlc0ZpbHRlcik6CisgICAgICAgICogZG9tL0NvbnN0YW50UHJvcGVydHlN
YXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29uc3RhbnRQcm9wZXJ0eU1hcDo6bmFtZUZvclBy
b3BlcnR5KToKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDb250YWluZXJOb2RlOjpnZXRFbGVtZW50c0J5VGFnTmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpDb250YWluZXJOb2RlOjpnZXRFbGVtZW50c0J5VGFnTmFtZU5TKToKKyAgICAgICAgKiBk
b20vQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3Vz
dG9tRWxlbWVudFJlYWN0aW9uUXVldWU6OmVucXVldWVQb3N0VXBncmFkZVJlYWN0aW9ucyk6Cisg
ICAgICAgICogZG9tL0RhdGFzZXRET01TdHJpbmdNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y29udmVydFByb3BlcnR5TmFtZVRvQXR0cmlidXRlTmFtZSk6CisgICAgICAgICogZG9tL0RvY3Vt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVVwZ3JhZGVDYW5kaWRhdGVFbGVtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjcmVhdGVFbGVtZW50Rm9yQmluZGluZ3Mp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmltcG9ydE5vZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6Omhhc1ZhbGlkTmFtZXNwYWNlRm9yRWxlbWVudHMpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OnByb2Nlc3NCYXNlRWxlbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6ZGlyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpiZ0NvbG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpmZ0NvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjphbGlua0NvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpsaW5r
Q29sb3JGb3JCaW5kaW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dmxpbmtDb2xv
cik6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0Qm9vbGVhbkF0dHJpYnV0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpFbGVtZW50OjpzeW5jaHJvbml6ZUF0dHJpYnV0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50OjpnZXRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dDo6Z2V0QXR0cmlidXRlTlMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0QXR0cmli
dXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnBhcnNlclNldEF0dHJpYnV0ZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0UHJlZml4KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1l
bnQ6Omluc2VydGVkSW50byk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZW1vdmVkRnJv
bSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGVJbnRlcm5hbCk6
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjphZGRBdHRyaWJ1dGVJbnRlcm5hbCk6CisgICAg
ICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGVOUyk6CisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50OjpnZXRBdHRyaWJ1dGVOb2RlTlMpOgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudDo6aGFzQXR0cmlidXRlTlMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y29tcHV0
ZUluaGVyaXRlZExhbmd1YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnVwZGF0ZU5h
bWVGb3JEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp1cGRhdGVJZEZvckRv
Y3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmRpZEFkZEF0dHJpYnV0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpkaWRSZW1vdmVBdHRyaWJ1dGUpOgorICAgICAgICAo
V2ViQ29yZTo6RWxlbWVudDo6Y2xvbmVBdHRyaWJ1dGVzRnJvbUVsZW1lbnQpOgorICAgICAgICAq
IGRvbS9FbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjphdHRyaWJ1dGVXaXRo
b3V0U3luY2hyb25pemF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmlkRm9yU3R5
bGVSZXNvbHV0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmdldElkQXR0cmlidXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmdldE5hbWVBdHRyaWJ1dGUpOgorICAgICAg
ICAqIGRvbS9FdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsZWdhY3lUeXBlKToK
KyAgICAgICAgKiBkb20vTXV0YXRpb25SZWNvcmQuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0
aW9uUmVjb3JkOjphdHRyaWJ1dGVOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uUmVj
b3JkOjphdHRyaWJ1dGVOYW1lc3BhY2UpOgorICAgICAgICAqIGRvbS9OYW1lZE5vZGVNYXAuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TmFtZWROb2RlTWFwOjpyZW1vdmVOYW1lZEl0ZW1OUyk6Cisg
ICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cHJlZml4KToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmxvY2FsTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpO
b2RlOjpuYW1lc3BhY2VVUkkpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Y2hlY2tTZXRQcmVm
aXgpOgorICAgICAgICAoV2ViQ29yZTo6bG9jYXRlRGVmYXVsdE5hbWVzcGFjZSk6CisgICAgICAg
IChXZWJDb3JlOjpOb2RlOjppc0RlZmF1bHROYW1lc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZTo6bG9va3VwTmFtZXNwYWNlVVJJKToKKyAgICAgICAgKFdlYkNvcmU6OmxvY2F0ZU5hbWVz
cGFjZVByZWZpeCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpsb29rdXBQcmVmaXgpOgorICAg
ICAgICAqIGRvbS9Ob2RlUmFyZURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVMaXN0c05v
ZGVEYXRhOjphZGRDYWNoZWRUYWdDb2xsZWN0aW9uTlMpOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZUxpc3RzTm9kZURhdGE6OmFkZENhY2hlZENvbGxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZUxpc3RzTm9kZURhdGE6OmNhY2hlZENvbGxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZUxpc3RzTm9kZURhdGE6OnJlbW92ZUNhY2hlV2l0aEF0b21pY05hbWUpOgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZUxpc3RzTm9kZURhdGE6OnJlbW92ZUNhY2hlZFRhZ0NvbGxlY3Rpb25OUyk6
CisgICAgICAgIChXZWJDb3JlOjpOb2RlTGlzdHNOb2RlRGF0YTo6cmVtb3ZlQ2FjaGVkQ29sbGVj
dGlvbik6CisgICAgICAgICogZG9tL1BzZXVkb0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6cHNldWRvRWxlbWVudFRhZ05hbWUpOgorICAgICAgICAqIGRvbS9RdWFsaWZpZWROYW1lLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlF1YWxpZmllZE5hbWU6OmluaXQpOgorICAgICAgICAoV2Vi
Q29yZTo6bnVsbFFOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVF1YWxpZmllZE5hbWUp
OgorICAgICAgICAqIGRvbS9RdWFsaWZpZWROYW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpRdWFs
aWZpZWROYW1lOjpoYXNQcmVmaXgpOgorICAgICAgICAqIGRvbS9TZWxlY3RvclF1ZXJ5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yRGF0YUxpc3Q6OmV4ZWN1dGVTaW5nbGVUYWdOYW1l
U2VsZWN0b3JEYXRhKToKKyAgICAgICAgKiBkb20vU2xvdEFzc2lnbm1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6c2xvdE5hbWVGcm9tQXR0cmlidXRlVmFsdWUpOgorICAgICAgICAqIGRvbS9T
bG90QXNzaWdubWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U2xvdEFzc2lnbm1lbnQ6OmRlZmF1
bHRTbG90TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290OjpkaWRSZW1vdmVBbGxD
aGlsZHJlbk9mU2hhZG93SG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290OjpkaWRD
aGFuZ2VEZWZhdWx0U2xvdCk6CisgICAgICAgICogZG9tL1RhZ0NvbGxlY3Rpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VGFnQ29sbGVjdGlvbjo6VGFnQ29sbGVjdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVGFnQ29sbGVjdGlvbjo6SFRNTFRhZ0NvbGxlY3Rpb24pOgorICAgICAgICAq
IGRvbS9UYWdDb2xsZWN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpUYWdDb2xsZWN0aW9uTlM6
OmVsZW1lbnRNYXRjaGVzKToKKyAgICAgICAgKiBkb20vbWFrZV9uYW1lcy5wbDoKKyAgICAgICAg
KHByaW50TmFtZXNDcHBGaWxlKToKKyAgICAgICAgKHByaW50RGVmaW5pdGlvbnMpOgorICAgICAg
ICAocHJpbnRGYWN0b3J5Q3BwRmlsZSk6CisgICAgICAgICogZWRpdGluZy9Db21wb3NpdGVFZGl0
Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmVt
b3ZlTm9kZUF0dHJpYnV0ZSk6CisgICAgICAgICogZWRpdGluZy9FZGl0aW5nLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZUhUTUxFbGVtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL01hcmt1
cEFjY3VtdWxhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hcmt1cEFjY3VtdWxhdG9yOjpz
ZXJpYWxpemVOb2Rlc1dpdGhOYW1lc3BhY2VzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hcmt1cEFj
Y3VtdWxhdG9yOjpzaG91bGRBZGROYW1lc3BhY2VFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1hcmt1cEFjY3VtdWxhdG9yOjpzaG91bGRBZGROYW1lc3BhY2VBdHRyaWJ1dGUpOgorICAgICAg
ICAoV2ViQ29yZTo6TWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZE5hbWVzcGFjZSk6CisgICAgICAg
IChXZWJDb3JlOjpNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kT3BlblRhZyk6CisgICAgICAgIChX
ZWJDb3JlOjpNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kQXR0cmlidXRlKToKKyAgICAgICAgKiBl
ZGl0aW5nL2d0ay9FZGl0b3JHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZWxlbWVudFVSTCk6
CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXR0cmli
dXRlQ2hhbmdlOjpBdHRyaWJ1dGVDaGFuZ2UpOgorICAgICAgICAqIGh0bWwvQXV0b2NhcGl0YWxp
emUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3RyaW5nRm9yQXV0b2NhcGl0YWxpemVUeXBlKToK
KyAgICAgICAgKiBodG1sL0F1dG9maWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1dG9maWxs
RGF0YTo6Y3JlYXRlRnJvbUhUTUxGb3JtQ29udHJvbEVsZW1lbnQpOgorICAgICAgICAqIGh0bWwv
RE9NVG9rZW5MaXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpET01Ub2tlbkxpc3Q6Oml0ZW0pOgor
ICAgICAgICAqIGh0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6bmFtZSk6CisgICAgICAgICogaHRtbC9IVE1MQnV0
dG9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQnV0dG9uRWxlbWVudDo6Zm9y
bUNvbnRyb2xUeXBlKToKKyAgICAgICAgKiBodG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MRGV0YWlsc0VsZW1lbnQ6OnRvZ2dsZU9wZW4pOgorICAgICAg
ICAqIGh0bWwvSFRNTERvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVu
dDo6aXNDYXNlU2Vuc2l0aXZlQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpldmVudE5hbWVGb3JFdmVudEhh
bmRsZXJBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6dG9WYWxpZERpclZhbHVlKToKKyAg
ICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEltYWdlRWxlbWVudDo6YmVzdEZpdFNvdXJjZUZyb21QaWN0dXJlRWxlbWVudCk6CisgICAgICAg
ICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1
dEVsZW1lbnQ6Om5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6dXBk
YXRlVHlwZSk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmRvZXNIYXZlQXR0cmlidXRlKToKKyAgICAgICAg
KiBodG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPcHRp
b25FbGVtZW50OjpjcmVhdGVGb3JKU0NvbnN0cnVjdG9yKToKKyAgICAgICAgKiBodG1sL0hUTUxQ
YXJhbUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBhcmFtRWxlbWVudDo6bmFt
ZSk6CisgICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6c2V0TXVsdGlwbGUpOgorICAgICAgICAqIGh0bWwvSFRN
TFRhYmxlQ2VsbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlQ2VsbEVs
ZW1lbnQ6OnNjb3BlKToKKyAgICAgICAgKiBodG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFRyYWNrRWxlbWVudDo6bWVkaWFFbGVtZW50Q3Jvc3NPcmlnaW5B
dHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvTGFiZWxhYmxlRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMYWJlbGFibGVFbGVtZW50OjpsYWJlbHMpOgorICAgICAgICAqIGh0bWwvTGFi
ZWxzTm9kZUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGFiZWxzTm9kZUxpc3Q6On5MYWJl
bHNOb2RlTGlzdCk6CisgICAgICAgICogaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoTWVkaWFDb250cm9sbGVyOjpwbGF5YmFja1N0YXRlKToKKyAgICAgICAgKGV2ZW50TmFtZUZv
clJlYWR5U3RhdGUpOgorICAgICAgICAqIGh0bWwvTWVkaWFEb2N1bWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYURvY3VtZW50UGFyc2VyOjpjcmVhdGVEb2N1bWVudFN0cnVjdHVyZSk6
CisgICAgICAgICogaHRtbC9wYXJzZXIvQXRvbWljSFRNTFRva2VuLmg6CisgICAgICAgIChXZWJD
b3JlOjpBdG9taWNIVE1MVG9rZW46OmluaXRpYWxpemVBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBo
dG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MQ29uc3RydWN0aW9uU2l0ZTo6Y3JlYXRlRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MQ29uc3RydWN0aW9uU2l0ZTo6Y3JlYXRlSFRNTEVsZW1lbnRPckZpbmRDdXN0b21FbGVtZW50
SW50ZXJmYWNlKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpwYXJzZUhUTUxIYXNoTmFtZVJlZmVyZW5jZSk6CisgICAgICAgICog
aHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZUZvcmVpZ25BdHRyaWJ1dGVzTWFwKToKKyAgICAgICAgKiBodG1sL3RyYWNrL0luYmFuZFRleHRU
cmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2s6OkluYmFuZFRleHRU
cmFjayk6CisgICAgICAgICogaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFjazo6aWQpOgorICAgICAgICAqIGh0bWwvdHJh
Y2svVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6Y2FwdGlvbk1l
bnVPZmZJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6Y2FwdGlvbk1lbnVBdXRv
bWF0aWNJdGVtKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1RyYWNrQmFzZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVRyYWNrQmFzZTo6c2V0S2luZEludGVybmFsKToKKyAgICAgICAgKiBo
dG1sL3RyYWNrL1ZUVFJlZ2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWVFRSZWdpb246OnNj
cm9sbCk6CisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Om5vZGVUeXBlVG9UYWdOYW1lKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1dlYlZU
VEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL3RyYWNrL1dlYlZUVFRva2VuLmg6CisgICAgICAg
IChXZWJDb3JlOjpXZWJWVFRUb2tlbjo6U3RhcnRUYWcpOgorICAgICAgICAqIGxvYWRlci9GcmFt
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y2xlYXIpOgorICAg
ICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9JbWFnZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxvYWRlcjo6Y2xlYXJGYWlsZWRMb2FkVVJM
KToKKyAgICAgICAgKiBsb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5oOgorICAgICAgICAqIGxvYWRl
ci9Qb2xpY3lDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBvbGljeUNoZWNrZXI6OmNo
ZWNrTmF2aWdhdGlvblBvbGljeSk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpzaG93TW9kYWxEaWFsb2cpOgorICAgICAgICAqIHBh
Z2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV2ZW50TmFtZUZvclRvdWNo
UG9pbnRTdGF0ZSk6CisgICAgICAgICogcGFnZS9GcmFtZVRyZWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVUcmVlOjpzZXROYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVHJlZTo6
Y2xlYXJOYW1lKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGFnZTo6Z3JvdXBOYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4
dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGxleFRleHRDb250cm9sbGVy
OjpvZmZzZXRGb3JQb3NpdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENh
Y2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6YWx0ZXJuYXRlRmFtaWx5TmFt
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmg6CisgICAg
ICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZURlc2NyaXB0aW9uOjppbml0aWFsTG9jYWxlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250R2VuZXJpY0ZhbWlsaWVzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmdlbmVyaWNGb250RmFtaWx5Rm9yU2NyaXB0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjppbkJhbmRNZXRhZGF0YVRyYWNrRGlzcGF0Y2hUeXBl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9UcmFja1ByaXZhdGVCYXNlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpUcmFja1ByaXZhdGVCYXNlOjppZCk6CisgICAgICAgIChXZWJDb3JlOjpU
cmFja1ByaXZhdGVCYXNlOjpsYWJlbCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja1ByaXZhdGVC
YXNlOjpsYW5ndWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L0FWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwubW06CisgICAgICAgIChXZWJDb3JlOjpBVlRyYWNr
UHJpdmF0ZUFWRk9iakNJbXBsOjppZCk6CisgICAgICAgIChXZWJDb3JlOjpBVlRyYWNrUHJpdmF0
ZUFWRk9iakNJbXBsOjpsYWJlbCk6CisgICAgICAgIChXZWJDb3JlOjpBVlRyYWNrUHJpdmF0ZUFW
Rk9iakNJbXBsOjpsYW5ndWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL0luYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRi5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZD
Ri5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRjo6bGFi
ZWwpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0Y6Omxhbmd1
YWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0Y6OmxhYmVsKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
YmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGOjpsYW5ndWFnZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFW
Rk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2Jq
Qzo6bGFiZWwpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9i
akM6Omxhbmd1YWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2JqQy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDOjpsYWJlbCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2JqQzo6bGFuZ3Vh
Z2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjptZXRh
ZGF0YVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6bWV0YWRhdGFEaWRBcnJpdmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNo
ZTo6cGxhdGZvcm1BbHRlcm5hdGVGYW1pbHlOYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Gb250RGVzY3JpcHRpb25Db2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
b250Q2FzY2FkZURlc2NyaXB0aW9uOjplZmZlY3RpdmVGYW1pbHlBdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Rm9udENhY2hlOjpwbGF0Zm9ybUFsdGVybmF0ZUZhbWlseU5hbWUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRNZXRhZGF0YVRleHRUcmFja1By
aXZhdGVHU3RyZWFtZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZE1ldGFkYXRhVGV4dFRy
YWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udENhY2hlV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6cGxh
dGZvcm1BbHRlcm5hdGVGYW1pbHlOYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6ZmFjaW5nTW9kZSk6CisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vVmlkZW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okhp
dFRlc3RSZXN1bHQ6OmxpbmtTdWdnZXN0ZWRGaWxlbmFtZSk6CisgICAgICAgICogcmVuZGVyaW5n
L0lubGluZVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFp
bnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMaXN0SXRlbTo6bWFya2VyVGV4dCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6cHJldmlvdXNP
ZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6bmV4dE9mZnNldCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVHJlZUFzVGV4dDo6d3JpdGVSZW5kZXJPYmplY3QpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9UZXh0UGFpbnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0UGFpbnRlcjo6cGFpbnRU
ZXh0QW5kRW1waGFzaXNNYXJrc0lmTmVlZGVkKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnRleHRFbXBo
YXNpc01hcmtTdHJpbmcpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5o
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxIeXBoZW5hdGlvblN0cmlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRFbXBoYXNpc0N1
c3RvbU1hcmspOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxDb250ZW50
QWx0VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVHcmlk
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjppbml0aWFsRmxvd1RocmVhZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbFJlZ2lvblRocmVhZCk6CisgICAg
ICAgICogc3R5bGUvU3R5bGVTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6U2Nv
cGU6OmNvbGxlY3RBY3RpdmVTdHlsZVNoZWV0cyk6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6Z2V0UHJlc2VudGF0aW9uQXR0cmli
dXRlKToKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
QXR0cmlidXRlSGFzaFRyYW5zbGF0b3I6Omhhc2gpOgorICAgICAgICAqIHN2Zy9TVkdVc2VFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OnRyYW5zZmVyU2l6ZUF0
dHJpYnV0ZXNUb1RhcmdldENsb25lKToKKyAgICAgICAgKiBzdmcvYW5pbWF0aW9uL1NWR1NNSUxF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NNSUxFbGVtZW50Ojpjb25zdHJ1Y3RB
dHRyaWJ1dGVOYW1lKToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZTo6cmVxdWVzdExpY2Vuc2UpOgorICAgICAg
ICAqIHhtbC9YTUxFcnJvcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlWEhUTUxQYXJz
ZXJFcnJvckhlYWRlcik6CisgICAgICAgICogeG1sL1hQYXRoU3RlcC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpYUGF0aDo6bm9kZU1hdGNoZXNCYXNpY1Rlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
WFBhdGg6OlN0ZXA6Om5vZGVzSW5BeGlzKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3Vt
ZW50UGFyc2VyTGlieG1sMi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNl
cjo6WE1MRG9jdW1lbnRQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6aGFuZGxlTmFtZXNwYWNl
QXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpoYW5kbGVFbGVtZW50QXR0cmlidXRlcyk6
CisKIDIwMTctMDctMDQgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJlbmRlclRoZW1lQ29jb2E6Om1lZGlhQ29udHJvbHNGb3JtYXR0ZWRTdHJpbmdGb3JEdXJh
dGlvbiBpcyBsZWFraW5nIE5TRGF0ZUNvbXBvbmVudHNGb3JtYXR0ZXJzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
aW5kZXggMGI5NzMxMzdjNmMyNjBjMjFkYTg2ZDFmNTJhMmNkNjc0NmQ0Y2YxZC4uZTU1NTgwYzg0
MTY1ZDA1Zjg4N2I0M2YwZTQzY2I0N2Y1ODQxYmQ0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEzIEBACisyMDE3LTA3LTA0ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwu
Y29tPgorCisgICAgICAgIFtXVEZdIENsZWFuIHVwIFN0cmluZ1N0YXRpY3MuY3BwIGJ5IHVzaW5n
IExhenlOZXZlckRlc3Ryb3llZDw+IGZvciBBdG9tcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0MTUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET00vRE9NLm1tOgorICAgICAgICAobG9va3VwRWxl
bWVudENsYXNzKToKKwogMjAxNy0wNy0wMyAgTWF0dCBMZXdpcyAgPGpsZXdpczNAYXBwbGUuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMTkxMDMuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9X
VEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3ZDI0NjUyZjhiZTNiMzViNzdmNTE0
YTNlYjc3MDUyMmYxYTg5N2Q5Li5jZmRhYTJmNDc2ZDQ3ZWI1M2I2OTgzODc1N2Q0OWRhNTc3YjMy
Njg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExNSw3
ICsxMTUsNiBAQAogCQlBOEE0NzQzOTE1MUE4MjVCMDA0MTIzRkYgLyogQ1N0cmluZy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzMyMTE1MUE4
MjVCMDA0MTIzRkYgLyogQ1N0cmluZy5jcHAgKi87IH07CiAJCUE4QTQ3NDNDMTUxQTgyNUIwMDQx
MjNGRiAvKiBTdHJpbmdCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE4QTQ3MzI0MTUxQTgyNUIwMDQxMjNGRiAvKiBTdHJpbmdCdWlsZGVy
LmNwcCAqLzsgfTsKIAkJQThBNDc0NDAxNTFBODI1QjAwNDEyM0ZGIC8qIFN0cmluZ0ltcGwuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDczMjgx
NTFBODI1QjAwNDEyM0ZGIC8qIFN0cmluZ0ltcGwuY3BwICovOyB9OwotCQlBOEE0NzQ0MzE1MUE4
MjVCMDA0MTIzRkYgLyogU3RyaW5nU3RhdGljcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzMyQjE1MUE4MjVCMDA0MTIzRkYgLyogU3RyaW5n
U3RhdGljcy5jcHAgKi87IH07CiAJCUE4QTQ3NDQ1MTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZTdHJp
bmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThB
NDczMkQxNTFBODI1QjAwNDEyM0ZGIC8qIFdURlN0cmluZy5jcHAgKi87IH07CiAJCUE4QTQ3NDQ4
MTUxQTgyNUIwMDQxMjNGRiAvKiBUaHJlYWRIb2xkZXJQdGhyZWFkcy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzMzMDE1MUE4MjVCMDA0MTIz
RkYgLyogVGhyZWFkSG9sZGVyUHRocmVhZHMuY3BwICovOyB9OwogCQlBOEE0NzQ0QTE1MUE4MjVC
MDA0MTIzRkYgLyogVGhyZWFkaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE4QTQ3MzMyMTUxQTgyNUIwMDQxMjNGRiAvKiBUaHJlYWRpbmcuY3Bw
ICovOyB9OwpAQCAtNDg4LDcgKzQ4Nyw2IEBACiAJCUE4QTQ3MzI4MTUxQTgyNUIwMDQxMjNGRiAv
KiBTdHJpbmdJbXBsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0
cmluZ0ltcGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEE0NzMyOTE1MUE4
MjVCMDA0MTIzRkYgLyogU3RyaW5nSW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTdHJpbmdJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MzJB
MTUxQTgyNUIwMDQxMjNGRiAvKiBTdHJpbmdPcGVyYXRvcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU3RyaW5nT3BlcmF0b3JzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUE4QTQ3MzJCMTUxQTgyNUIwMDQxMjNGRiAvKiBTdHJpbmdTdGF0aWNzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmluZ1N0YXRpY3MuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEE0NzMyQzE1MUE4MjVCMDA0MTIzRkYgLyogVGV4
dFBvc2l0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRQb3NpdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEE0NzMyRDE1MUE4MjVCMDA0MTIz
RkYgLyogV1RGU3RyaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdURlN0cmluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MzJFMTUx
QTgyNUIwMDQxMjNGRiAvKiBXVEZTdHJpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV1RGU3RyaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDY3LDcg
KzEwNjUsNiBAQAogCQkJCUE4QTQ3MzI4MTUxQTgyNUIwMDQxMjNGRiAvKiBTdHJpbmdJbXBsLmNw
cCAqLywKIAkJCQlBOEE0NzMyOTE1MUE4MjVCMDA0MTIzRkYgLyogU3RyaW5nSW1wbC5oICovLAog
CQkJCUE4QTQ3MzJBMTUxQTgyNUIwMDQxMjNGRiAvKiBTdHJpbmdPcGVyYXRvcnMuaCAqLywKLQkJ
CQlBOEE0NzMyQjE1MUE4MjVCMDA0MTIzRkYgLyogU3RyaW5nU3RhdGljcy5jcHAgKi8sCiAJCQkJ
OTNGMTk5M0QxOUQ3OTU4RDAwQzIzOTBCIC8qIFN0cmluZ1ZpZXcuY3BwICovLAogCQkJCTFBNkVC
MURGMTg3RDBCRDMwMDMwMTI2RiAvKiBTdHJpbmdWaWV3LmggKi8sCiAJCQkJRjcyQkJEQjEwN0ZB
NDI0ODg2MTc4QjlFIC8qIFN5bWJvbEltcGwuY3BwICovLApAQCAtMTM3NSw3ICsxMzcyLDYgQEAK
IAkJCQlBNUJBMTVGNTE4MjQzNDgwMDBBODJFNjkgLyogU3RyaW5nSW1wbE1hYy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCUE1QkExNUYzMTgyNDMzQTkwMEE4MkU2OSAvKiBTdHJpbmdNYWMubW0gaW4g
U291cmNlcyAqLywKIAkJCQkwRkREQkZBNzE2NjZERkEzMDBDNTVGRUYgLyogU3RyaW5nUHJpbnRT
dHJlYW0uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQThBNDc0NDMxNTFBODI1QjAwNDEyM0ZGIC8q
IFN0cmluZ1N0YXRpY3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNGMTk5M0UxOUQ3OTU4RDAw
QzIzOTBCIC8qIFN0cmluZ1ZpZXcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM5MzRCRDUxOEEx
RjE2OTAwRDBENkExIC8qIFN0cmluZ1ZpZXdDRi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5Mzkz
NEJEMzE4QTFFOEMzMDBEMEQ2QTEgLyogU3RyaW5nVmlld09iakMubW0gaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dURi93
dGYvQ01ha2VMaXN0cy50eHQKaW5kZXggYTM2YjRkMDlkMGNmMjliNTk0NjUyZDRhNTQ4Mzg2NDEw
MWJhMmY2Mi4uOTM2YWZiNTk4MDFkODUyN2I4ZDAwOWJiN2JiNTIwYjhmYzQzM2M4ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dURi93dGYv
Q01ha2VMaXN0cy50eHQKQEAgLTI3Niw3ICsyNzYsNiBAQCBzZXQoV1RGX1NPVVJDRVMKICAgICB0
ZXh0L0NTdHJpbmcuY3BwCiAgICAgdGV4dC9TdHJpbmdCdWlsZGVyLmNwcAogICAgIHRleHQvU3Ry
aW5nSW1wbC5jcHAKLSAgICB0ZXh0L1N0cmluZ1N0YXRpY3MuY3BwCiAgICAgdGV4dC9TdHJpbmdW
aWV3LmNwcAogICAgIHRleHQvU3ltYm9sSW1wbC5jcHAKICAgICB0ZXh0L1N5bWJvbFJlZ2lzdHJ5
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuY3BwIGIv
U291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuY3BwCmluZGV4IGNkOGVmOGZmY2JjNDcw
MmM1ZjA3ZjJjYmNiYWI3NWExMGE4MTE0MDcuLjk4MDA1NjQ4MWE1MjI1NjFiYTRiNjNlODhlMjg5
MzhjMzliNjg2YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5n
LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHAKQEAgLTI0LDEy
ICsyNCwxMCBAQAogI2luY2x1ZGUgIkF0b21pY1N0cmluZy5oIgogCiAjaW5jbHVkZSAiSW50ZWdl
clRvU3RyaW5nQ29udmVyc2lvbi5oIgorI2luY2x1ZGUgIk1haW5UaHJlYWQuaCIKKyNpbmNsdWRl
ICJOZXZlckRlc3Ryb3llZC5oIgogI2luY2x1ZGUgImR0b2EuaCIKIAotI2lmIFVTRShXRUJfVEhS
RUFEKQotI2luY2x1ZGUgIkxvY2suaCIKLSNlbmRpZgotCiBuYW1lc3BhY2UgV1RGIHsKIAogdGVt
cGxhdGU8QXRvbWljU3RyaW5nOjpDYXNlQ29udmVydFR5cGUgdHlwZT4KQEAgLTM3LDcgKzM1LDcg
QEAgQUxXQVlTX0lOTElORSBBdG9taWNTdHJpbmcgQXRvbWljU3RyaW5nOjpjb252ZXJ0QVNDSUlD
YXNlKCkgY29uc3QKIHsKICAgICBTdHJpbmdJbXBsKiBpbXBsID0gdGhpcy0+aW1wbCgpOwogICAg
IGlmIChVTkxJS0VMWSghaW1wbCkpCi0gICAgICAgIHJldHVybiBudWxsQXRvbTsKKyAgICAgICAg
cmV0dXJuIG51bGxBdG9tKCk7CiAKICAgICAvLyBDb252ZXJ0IHNob3J0IHN0cmluZ3Mgd2l0aG91
dCBhbGxvY2F0aW5nIGEgbmV3IFN0cmluZ0ltcGwsIHNpbmNlCiAgICAgLy8gdGhlcmUncyBhIGdv
b2QgY2hhbmNlIHRoZXNlIHN0cmluZ3MgYXJlIGFscmVhZHkgaW4gdGhlIGF0b21pYwpAQCAtMTEy
LDcgKzExMCw3IEBAIEF0b21pY1N0cmluZyBBdG9taWNTdHJpbmc6OmZyb21VVEY4SW50ZXJuYWwo
Y29uc3QgY2hhciogY2hhcmFjdGVyc1N0YXJ0LCBjb25zdCBjCiB7CiAgICAgYXV0byBpbXBsID0g
QXRvbWljU3RyaW5nSW1wbDo6YWRkVVRGOChjaGFyYWN0ZXJzU3RhcnQsIGNoYXJhY3RlcnNFbmQp
OwogICAgIGlmICghaW1wbCkKLSAgICAgICAgcmV0dXJuIG51bGxBdG9tOworICAgICAgICByZXR1
cm4gbnVsbEF0b20oKTsKICAgICByZXR1cm4gaW1wbC5nZXQoKTsKIH0KIApAQCAtMTIzLDQgKzEy
MSwyNSBAQCB2b2lkIEF0b21pY1N0cmluZzo6c2hvdygpIGNvbnN0CiB9CiAjZW5kaWYKIAorV1RG
X0VYUE9SVERBVEEgTGF6eU5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gbnVsbEF0b21EYXRh
OworV1RGX0VYUE9SVERBVEEgTGF6eU5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gZW1wdHlB
dG9tRGF0YTsKK1dURl9FWFBPUlREQVRBIExhenlOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+
IHN0YXJBdG9tRGF0YTsKK1dURl9FWFBPUlREQVRBIExhenlOZXZlckRlc3Ryb3llZDxBdG9taWNT
dHJpbmc+IHhtbEF0b21EYXRhOworV1RGX0VYUE9SVERBVEEgTGF6eU5ldmVyRGVzdHJveWVkPEF0
b21pY1N0cmluZz4geG1sbnNBdG9tRGF0YTsKKwordm9pZCBBdG9taWNTdHJpbmc6OmluaXQoKQor
eworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBpbml0aWFsaXplS2V5OworICAgIHN0ZDo6Y2Fs
bF9vbmNlKGluaXRpYWxpemVLZXksIFtdIHsKKyAgICAgICAgLy8gSW5pdGlhbGl6YXRpb24gaXMg
bm90IHRocmVhZCBzYWZlLCBzbyB0aGlzIGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkIGZyb20gdGhl
IG1haW4gdGhyZWFkIGZpcnN0LgorICAgICAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKKworICAg
ICAgICBudWxsQXRvbURhdGEuY29uc3RydWN0KCk7CisgICAgICAgIGVtcHR5QXRvbURhdGEuY29u
c3RydWN0KCIiKTsKKyAgICAgICAgc3RhckF0b21EYXRhLmNvbnN0cnVjdCgiKiIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgICAgICB4bWxBdG9tRGF0YS5jb25zdHJ1
Y3QoInhtbCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgICAgICB4
bWxuc0F0b21EYXRhLmNvbnN0cnVjdCgieG1sbnMiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKKyAgICB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4
dC9BdG9taWNTdHJpbmcuaAppbmRleCA5MWJiMjBhOGJhYmJjZTM2NWU5ZmYwZDBiNTRlNjc2NGU4
YmZhOTdlLi5hY2ZmYWFlN2QyODg2ZmRiMTkxOTIyZDdiODhhOGVkZmQ5ZDhlMGEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL3RleHQvQXRvbWljU3RyaW5nLmgKQEAgLTIyLDYgKzIyLDcgQEAKICNkZWZpbmUgQXRvbWlj
U3RyaW5nX2gKIAogI2luY2x1ZGUgPHV0aWxpdHk+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nSW1wbC5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0ludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KQEAgLTMwNCwzMSArMzA1LDM1IEBAIGlubGluZSBBdG9taWNTdHJpbmc6
OkF0b21pY1N0cmluZyhOU1N0cmluZyogcykKIAogLy8gRGVmaW5lIGV4dGVybmFsIGdsb2JhbCB2
YXJpYWJsZXMgZm9yIHRoZSBjb21tb25seSB1c2VkIGF0b21pYyBzdHJpbmdzLgogLy8gVGhlc2Ug
YXJlIG9ubHkgdXNhYmxlIGZyb20gdGhlIG1haW4gdGhyZWFkLgotI2lmbmRlZiBBVE9NSUNTVFJJ
TkdfSElERV9HTE9CQUxTCi1leHRlcm4gY29uc3QgV1RGX0VYUE9SVERBVEEgQXRvbWljU3RyaW5n
IG51bGxBdG9tOwotZXh0ZXJuIGNvbnN0IFdURl9FWFBPUlREQVRBIEF0b21pY1N0cmluZyBlbXB0
eUF0b207Ci1leHRlcm4gY29uc3QgV1RGX0VYUE9SVERBVEEgQXRvbWljU3RyaW5nIHN0YXJBdG9t
OwotZXh0ZXJuIGNvbnN0IFdURl9FWFBPUlREQVRBIEF0b21pY1N0cmluZyB4bWxBdG9tOwotZXh0
ZXJuIGNvbnN0IFdURl9FWFBPUlREQVRBIEF0b21pY1N0cmluZyB4bWxuc0F0b207CitleHRlcm4g
V1RGX0VYUE9SVERBVEEgTGF6eU5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gbnVsbEF0b21E
YXRhOworZXh0ZXJuIFdURl9FWFBPUlREQVRBIExhenlOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJp
bmc+IGVtcHR5QXRvbURhdGE7CitleHRlcm4gV1RGX0VYUE9SVERBVEEgTGF6eU5ldmVyRGVzdHJv
eWVkPEF0b21pY1N0cmluZz4gc3RhckF0b21EYXRhOworZXh0ZXJuIFdURl9FWFBPUlREQVRBIExh
enlOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHhtbEF0b21EYXRhOworZXh0ZXJuIFdURl9F
WFBPUlREQVRBIExhenlOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHhtbG5zQXRvbURhdGE7
CisKK2lubGluZSBjb25zdCBBdG9taWNTdHJpbmcmIG51bGxBdG9tKCkgeyByZXR1cm4gbnVsbEF0
b21EYXRhLmdldCgpOyB9CitpbmxpbmUgY29uc3QgQXRvbWljU3RyaW5nJiBlbXB0eUF0b20oKSB7
IHJldHVybiBlbXB0eUF0b21EYXRhLmdldCgpOyB9CitpbmxpbmUgY29uc3QgQXRvbWljU3RyaW5n
JiBzdGFyQXRvbSgpIHsgcmV0dXJuIHN0YXJBdG9tRGF0YS5nZXQoKTsgfQoraW5saW5lIGNvbnN0
IEF0b21pY1N0cmluZyYgeG1sQXRvbSgpIHsgcmV0dXJuIHhtbEF0b21EYXRhLmdldCgpOyB9Citp
bmxpbmUgY29uc3QgQXRvbWljU3RyaW5nJiB4bWxuc0F0b20oKSB7IHJldHVybiB4bWxuc0F0b21E
YXRhLmdldCgpOyB9CiAKIGlubGluZSBBdG9taWNTdHJpbmcgQXRvbWljU3RyaW5nOjpmcm9tVVRG
OChjb25zdCBjaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbGVuZ3RoKQogewogICAgIGlmICghY2hh
cmFjdGVycykKLSAgICAgICAgcmV0dXJuIG51bGxBdG9tOworICAgICAgICByZXR1cm4gbnVsbEF0
b20oKTsKICAgICBpZiAoIWxlbmd0aCkKLSAgICAgICAgcmV0dXJuIGVtcHR5QXRvbTsKKyAgICAg
ICAgcmV0dXJuIGVtcHR5QXRvbSgpOwogICAgIHJldHVybiBmcm9tVVRGOEludGVybmFsKGNoYXJh
Y3RlcnMsIGNoYXJhY3RlcnMgKyBsZW5ndGgpOwogfQogCiBpbmxpbmUgQXRvbWljU3RyaW5nIEF0
b21pY1N0cmluZzo6ZnJvbVVURjgoY29uc3QgY2hhciogY2hhcmFjdGVycykKIHsKICAgICBpZiAo
IWNoYXJhY3RlcnMpCi0gICAgICAgIHJldHVybiBudWxsQXRvbTsKKyAgICAgICAgcmV0dXJuIG51
bGxBdG9tKCk7CiAgICAgaWYgKCEqY2hhcmFjdGVycykKLSAgICAgICAgcmV0dXJuIGVtcHR5QXRv
bTsKKyAgICAgICAgcmV0dXJuIGVtcHR5QXRvbSgpOwogICAgIHJldHVybiBmcm9tVVRGOEludGVy
bmFsKGNoYXJhY3RlcnMsIG51bGxwdHIpOwogfQotI2VuZGlmCiAKIC8vIEF0b21pY1N0cmluZ0hh
c2ggaXMgdGhlIGRlZmF1bHQgaGFzaCBmb3IgQXRvbWljU3RyaW5nCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBzdHJ1Y3QgRGVmYXVsdEhhc2g7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oCmlu
ZGV4IGQwMjczN2EwMmU2Njc1OTg4NDAxYWQ3MDA4MjVjZGZkNjI3YjA1NWYuLjdiZDQ0MWE0MjNi
NjhmOWU4MjE1ZDBlMmYzZjg4MThjYmMwNWU2MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oCkBAIC0yMDUsNyArMjA1LDcgQEAgY2xhc3MgU3RyaW5nQnVpbGRlciB7CiAgICAgQXRv
bWljU3RyaW5nIHRvQXRvbWljU3RyaW5nKCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmICghbV9s
ZW5ndGgpCi0gICAgICAgICAgICByZXR1cm4gZW1wdHlBdG9tOworICAgICAgICAgICAgcmV0dXJu
IGVtcHR5QXRvbSgpOwogCiAgICAgICAgIC8vIElmIHRoZSBidWZmZXIgaXMgc3VmZmljaWVudGx5
IG92ZXItYWxsb2NhdGVkLCBtYWtlIGEgbmV3IEF0b21pY1N0cmluZyBmcm9tIGEgY29weSBzbyBp
dHMgYnVmZmVyIGlzIG5vdCBzbyBsYXJnZS4KICAgICAgICAgaWYgKGNhblNocmluaygpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAppbmRleCA5ZmYwZWQzOWNhOWMwMzhjYTQ3MWJjNjQ4
NDNhMGFjYzllOWVhNGRlLi41Zjg2NWE0ZTQ2YjA3MTM2NzY1NzE4NmM2YmU1NDYwZDJjMmYzYjZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKQEAgLTIxNDAsNiArMjE0MCwyNiBAQCBD
U3RyaW5nIFN0cmluZ0ltcGw6OnV0ZjgoQ29udmVyc2lvbk1vZGUgbW9kZSkgY29uc3QKICAgICBy
ZXR1cm4gdXRmOEZvclJhbmdlKDAsIGxlbmd0aCgpLCBtb2RlKTsKIH0KIAorTkVWRVJfSU5MSU5F
IHVuc2lnbmVkIFN0cmluZ0ltcGw6Omhhc2hTbG93Q2FzZSgpIGNvbnN0Cit7CisgICAgaWYgKGlz
OEJpdCgpKQorICAgICAgICBzZXRIYXNoKFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNr
VG9wOEJpdHMobV9kYXRhOCwgbV9sZW5ndGgpKTsKKyAgICBlbHNlCisgICAgICAgIHNldEhhc2go
U3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyhtX2RhdGExNiwgbV9sZW5n
dGgpKTsKKyAgICByZXR1cm4gZXhpc3RpbmdIYXNoKCk7Cit9CisKK3Vuc2lnbmVkIFN0cmluZ0lt
cGw6OmNvbmN1cnJlbnRIYXNoKCkgY29uc3QKK3sKKyAgICB1bnNpZ25lZCBoYXNoOworICAgIGlm
IChpczhCaXQoKSkKKyAgICAgICAgaGFzaCA9IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRN
YXNrVG9wOEJpdHMobV9kYXRhOCwgbV9sZW5ndGgpOworICAgIGVsc2UKKyAgICAgICAgaGFzaCA9
IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMobV9kYXRhMTYsIG1fbGVu
Z3RoKTsKKyAgICBBU1NFUlQoKChoYXNoIDw8IHNfZmxhZ0NvdW50KSA+PiBzX2ZsYWdDb3VudCkg
PT0gaGFzaCk7CisgICAgcmV0dXJuIGhhc2g7Cit9CisKIGJvb2wgZXF1YWxJZ25vcmluZ051bGxp
dHkoY29uc3QgVUNoYXIqIGEsIHNpemVfdCBhTGVuZ3RoLCBTdHJpbmdJbXBsKiBiKQogewogICAg
IGlmICghYikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nU3RhdGljcy5j
cHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1N0YXRpY3MuY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwYzIxMTljMWQ0ZDk2ZmM0NDE5NWNjMjBmODYxOTRiMTMwOTRjMWEx
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
VEYvd3RmL3RleHQvU3RyaW5nU3RhdGljcy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4OCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE2IEFwcGxlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWZkZWYgU0tJUF9TVEFUSUNfQ09OU1RSVUNUT1JTX09O
X0dDQwotI2RlZmluZSBBVE9NSUNTVFJJTkdfSElERV9HTE9CQUxTIDEKLSNlbmRpZgotCi0jaW5j
bHVkZSAiQXRvbWljU3RyaW5nLmgiCi0jaW5jbHVkZSAiTWFpblRocmVhZC5oIgotI2luY2x1ZGUg
Ik5ldmVyRGVzdHJveWVkLmgiCi0jaW5jbHVkZSAiU3RhdGljQ29uc3RydWN0b3JzLmgiCi0jaW5j
bHVkZSAiU3RyaW5nSW1wbC5oIgotCi0jaWYgVVNFKFdFQl9USFJFQUQpCi0jaW5jbHVkZSA8cHRo
cmVhZC5oPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBXVEYgewotCi1XVEZfRVhQT1JUREFUQSBERUZJ
TkVfR0xPQkFMKEF0b21pY1N0cmluZywgbnVsbEF0b20pCi1XVEZfRVhQT1JUREFUQSBERUZJTkVf
R0xPQkFMKEF0b21pY1N0cmluZywgZW1wdHlBdG9tKQotV1RGX0VYUE9SVERBVEEgREVGSU5FX0dM
T0JBTChBdG9taWNTdHJpbmcsIHN0YXJBdG9tKQotV1RGX0VYUE9SVERBVEEgREVGSU5FX0dMT0JB
TChBdG9taWNTdHJpbmcsIHhtbEF0b20pCi1XVEZfRVhQT1JUREFUQSBERUZJTkVfR0xPQkFMKEF0
b21pY1N0cmluZywgeG1sbnNBdG9tKQotCi1ORVZFUl9JTkxJTkUgdW5zaWduZWQgU3RyaW5nSW1w
bDo6aGFzaFNsb3dDYXNlKCkgY29uc3QKLXsKLSAgICBpZiAoaXM4Qml0KCkpCi0gICAgICAgIHNl
dEhhc2goU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyhtX2RhdGE4LCBt
X2xlbmd0aCkpOwotICAgIGVsc2UKLSAgICAgICAgc2V0SGFzaChTdHJpbmdIYXNoZXI6OmNvbXB1
dGVIYXNoQW5kTWFza1RvcDhCaXRzKG1fZGF0YTE2LCBtX2xlbmd0aCkpOwotICAgIHJldHVybiBl
eGlzdGluZ0hhc2goKTsKLX0KLQotdW5zaWduZWQgU3RyaW5nSW1wbDo6Y29uY3VycmVudEhhc2go
KSBjb25zdAotewotICAgIHVuc2lnbmVkIGhhc2g7Ci0gICAgaWYgKGlzOEJpdCgpKQotICAgICAg
ICBoYXNoID0gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyhtX2RhdGE4
LCBtX2xlbmd0aCk7Ci0gICAgZWxzZQotICAgICAgICBoYXNoID0gU3RyaW5nSGFzaGVyOjpjb21w
dXRlSGFzaEFuZE1hc2tUb3A4Qml0cyhtX2RhdGExNiwgbV9sZW5ndGgpOwotICAgIEFTU0VSVCgo
KGhhc2ggPDwgc19mbGFnQ291bnQpID4+IHNfZmxhZ0NvdW50KSA9PSBoYXNoKTsKLSAgICByZXR1
cm4gaGFzaDsKLX0KLQotdm9pZCBBdG9taWNTdHJpbmc6OmluaXQoKQotewotICAgIHN0YXRpYyBi
b29sIGluaXRpYWxpemVkOwotICAgIGlmICghaW5pdGlhbGl6ZWQpIHsKLSAgICAgICAgLy8gSW5p
dGlhbGl6YXRpb24gaXMgbm90IHRocmVhZCBzYWZlLCBzbyB0aGlzIGZ1bmN0aW9uIG11c3QgYmUg
Y2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFkIGZpcnN0LgotICAgICAgICBBU1NFUlQoaXNVSVRo
cmVhZCgpKTsKLQotICAgICAgICAvLyBVc2UgcGxhY2VtZW50IG5ldyB0byBpbml0aWFsaXplIHRo
ZSBnbG9iYWxzLgotICAgICAgICBuZXcgKE5vdE51bGwsICh2b2lkKikmbnVsbEF0b20pIEF0b21p
Y1N0cmluZzsKLSAgICAgICAgbmV3IChOb3ROdWxsLCAodm9pZCopJmVtcHR5QXRvbSkgQXRvbWlj
U3RyaW5nKCIiKTsKLSAgICAgICAgbmV3IChOb3ROdWxsLCAodm9pZCopJnN0YXJBdG9tKSBBdG9t
aWNTdHJpbmcoIioiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICAg
ICAgbmV3IChOb3ROdWxsLCAodm9pZCopJnhtbEF0b20pIEF0b21pY1N0cmluZygieG1sIiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgICAgIG5ldyAoTm90TnVsbCwg
KHZvaWQqKSZ4bWxuc0F0b20pIEF0b21pY1N0cmluZygieG1sbnMiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKTsKLQotICAgICAgICBpbml0aWFsaXplZCA9IHRydWU7Ci0gICAg
fQotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJv
bHMvTWVkaWFDb250cm9sc0hvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNv
bnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcAppbmRleCA5NTk5MDEzMzdhYmMzNWM5NzJiYzNl
YWQ2NzAxMzhlMzc3ZGZhNTY3Li45ZjIwMTA0ZGZlMWZkMGI4NTU5MTY4YzMwZTE1MmNmYzY3MTQ0
YmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVk
aWFDb250cm9sc0hvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250
cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCBBdG9taWNTdHJp
bmcgTWVkaWFDb250cm9sc0hvc3Q6OmNhcHRpb25EaXNwbGF5TW9kZSgpIGNvbnN0CiB7CiAgICAg
UGFnZSogcGFnZSA9IG1fbWVkaWFFbGVtZW50LT5kb2N1bWVudCgpLnBhZ2UoKTsKICAgICBpZiAo
IXBhZ2UpCi0gICAgICAgIHJldHVybiBlbXB0eUF0b207CisgICAgICAgIHJldHVybiBlbXB0eUF0
b20oKTsKIAogICAgIHN3aXRjaCAocGFnZS0+Z3JvdXAoKS5jYXB0aW9uUHJlZmVyZW5jZXMoKS5j
YXB0aW9uRGlzcGxheU1vZGUoKSkgewogICAgIGNhc2UgQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6
QXV0b21hdGljOgpAQCAtMTQzLDcgKzE0Myw3IEBAIEF0b21pY1N0cmluZyBNZWRpYUNvbnRyb2xz
SG9zdDo6Y2FwdGlvbkRpc3BsYXlNb2RlKCkgY29uc3QKICAgICAgICAgcmV0dXJuIG1hbnVhbEtl
eXdvcmQoKTsKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICAgICAgcmV0dXJuIGVtcHR5QXRvbTsKKyAgICAgICAgcmV0dXJuIGVtcHR5QXRvbSgpOwogICAg
IH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENEYXRhQ2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0RhdGFDaGFubmVsLmNwcAppbmRleCBhMDNiYzJiZjQ5YzZkOGI1ZTBiZDJjZDY4N2U3YmU5YzVm
M2ViN2Y2Li4xN2YyZGQ0ODgxMTQxNmUzMGE3MTliMmU5YmE1NDI5YmU5NzE2MGQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVs
LmNwcApAQCAtOTAsNyArOTAsNyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIFJUQ0RhdGFDaGFubmVs
OjpiaW5hcnlUeXBlKCkgY29uc3QKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICByZXR1cm4gZW1wdHlBdG9tOworICAgIHJldHVybiBlbXB0eUF0b20oKTsKIH0KIAogRXhj
ZXB0aW9uT3I8dm9pZD4gUlRDRGF0YUNoYW5uZWw6OnNldEJpbmFyeVR5cGUoY29uc3QgQXRvbWlj
U3RyaW5nJiBiaW5hcnlUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BWE9iamVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhP
YmplY3RDYWNoZS5jcHAKaW5kZXggNGZiNzYzZjVkMjJlYzQ3NTMyNmNhMWY0NjY4MTI3MjVlNjU5
ZmM2MC4uMWFkNWQ4NDk3ZGE3YWRhYjBjMGUyOWFmOGJkZjZkMDczYmZlMWE1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC00MDAsNyAr
NDAwLDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Z2V0KE5vZGUqIG5v
ZGUpCiB9CiAKIC8vIEZJWE1FOiBUaGlzIHByb2JhYmx5IGJlbG9uZ3Mgb24gTm9kZS4KLS8vIEZJ
WE1FOiBUaGlzIHNob3VsZCB0YWtlIGEgY29uc3QgY2hhciosIGJ1dCBvbmUgY2FsbGVyIHBhc3Nl
cyBudWxsQXRvbS4KKy8vIEZJWE1FOiBUaGlzIHNob3VsZCB0YWtlIGEgY29uc3QgY2hhciosIGJ1
dCBvbmUgY2FsbGVyIHBhc3NlcyBudWxsQXRvbSgpLgogYm9vbCBub2RlSGFzUm9sZShOb2RlKiBu
b2RlLCBjb25zdCBTdHJpbmcmIHJvbGUpCiB7CiAgICAgaWYgKCFub2RlIHx8ICFpczxFbGVtZW50
Pihub2RlKSkKQEAgLTQyMyw3ICs0MjMsNyBAQCBzdGF0aWMgUmVmPEFjY2Vzc2liaWxpdHlPYmpl
Y3Q+IGNyZWF0ZUZyb21SZW5kZXJlcihSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogICAgIC8vIElm
IHRoZSBub2RlIGlzIGFyaWEgcm9sZT0ibGlzdCIgb3IgdGhlIGFyaWEgcm9sZSBpcyBlbXB0eSBh
bmQgaXRzIGEKICAgICAvLyB1bC9vbC9kbCB0eXBlIChpdCBzaG91bGRuJ3QgYmUgYSBsaXN0IGlm
IGFyaWEgc2F5cyBvdGhlcndpc2UpLgogICAgIGlmIChub2RlICYmICgobm9kZUhhc1JvbGUobm9k
ZSwgImxpc3QiKSB8fCBub2RlSGFzUm9sZShub2RlLCAiZGlyZWN0b3J5IikpCi0gICAgICAgICAg
ICAgICAgICAgICAgfHwgKG5vZGVIYXNSb2xlKG5vZGUsIG51bGxBdG9tKSAmJiAobm9kZS0+aGFz
VGFnTmFtZSh1bFRhZykgfHwgbm9kZS0+aGFzVGFnTmFtZShvbFRhZykgfHwgbm9kZS0+aGFzVGFn
TmFtZShkbFRhZykpKSkpCisgICAgICAgICAgICAgICAgICAgICAgfHwgKG5vZGVIYXNSb2xlKG5v
ZGUsIG51bGxBdG9tKCkpICYmIChub2RlLT5oYXNUYWdOYW1lKHVsVGFnKSB8fCBub2RlLT5oYXNU
YWdOYW1lKG9sVGFnKSB8fCBub2RlLT5oYXNUYWdOYW1lKGRsVGFnKSkpKSkKICAgICAgICAgcmV0
dXJuIEFjY2Vzc2liaWxpdHlMaXN0OjpjcmVhdGUocmVuZGVyZXIpOwogCiAgICAgLy8gYXJpYSB0
YWJsZXMKQEAgLTQ0MCw3ICs0NDAsNyBAQCBzdGF0aWMgUmVmPEFjY2Vzc2liaWxpdHlPYmplY3Q+
IGNyZWF0ZUZyb21SZW5kZXJlcihSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogICAgIGlmIChub2Rl
SGFzUm9sZShub2RlLCAidHJlZWl0ZW0iKSkKICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlU
cmVlSXRlbTo6Y3JlYXRlKHJlbmRlcmVyKTsKIAotICAgIGlmIChub2RlICYmIGlzPEhUTUxMYWJl
bEVsZW1lbnQ+KG5vZGUpICYmIG5vZGVIYXNSb2xlKG5vZGUsIG51bGxBdG9tKSkKKyAgICBpZiAo
bm9kZSAmJiBpczxIVE1MTGFiZWxFbGVtZW50Pihub2RlKSAmJiBub2RlSGFzUm9sZShub2RlLCBu
dWxsQXRvbSgpKSkKICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlMYWJlbDo6Y3JlYXRlKHJl
bmRlcmVyKTsKIAogI2lmIEVOQUJMRShWSURFTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuY3BwIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5jcHAKaW5kZXgg
ZjFkNTBmY2MxMzU5MzhiNmRmZjE2ZjMyODcxNTJhMGJjNDgzYjJkMS4uMDgzY2NjNzI4OWFmZTAw
YzIwZTg1MDk1ZTA0YmU4YTlmOGM0ODgwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5jcHAKQEAgLTEz
NSw3ICsxMzUsNyBAQCBjb25zdCBTdHJpbmcmIEFjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2w6OmNv
bnRyb2xUeXBlTmFtZSgpIGNvbnN0CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIHJldHVy
biBudWxsQXRvbTsKKyAgICByZXR1cm4gbnVsbEF0b20oKTsKIH0KIAogdm9pZCBBY2Nlc3NpYmls
aXR5TWVkaWFDb250cm9sOjphY2Nlc3NpYmlsaXR5VGV4dChWZWN0b3I8QWNjZXNzaWJpbGl0eVRl
eHQ+JiB0ZXh0T3JkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAppbmRleCA0YWZmMDIyYzViNzJkZjQ3MzkzYWU2ZjRhYzRl
YzIwNmQyMWEyZmUwLi45NGZhYmFmMjBiZmFmMGRlMmU1YWI1NDJjNjY1N2EzMDRmYjg4NDdlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdC5jcHAKQEAgLTEwNTMsNyArMTA1Myw3IEBAIFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpsYW5ndWFnZSgpIGNvbnN0CiAgICAgICAgIERvY3VtZW50KiBkb2MgPSBkb2N1bWVudCgpOwog
ICAgICAgICBpZiAoZG9jKQogICAgICAgICAgICAgcmV0dXJuIGRvYy0+Y29udGVudExhbmd1YWdl
KCk7Ci0gICAgICAgIHJldHVybiBudWxsQXRvbTsKKyAgICAgICAgcmV0dXJuIG51bGxBdG9tKCk7
CiAgICAgfQogICAgIAogICAgIHJldHVybiBwYXJlbnQtPmxhbmd1YWdlKCk7CkBAIC0xOTMzLDcg
KzE5MzMsNyBAQCBjb25zdCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdDo6ZGVmYXVsdExpdmVS
ZWdpb25TdGF0dXNGb3JSb2xlKEFjY2Vzc2liaWxpdHlSbwogICAgIGNhc2UgQXBwbGljYXRpb25N
YXJxdWVlUm9sZToKICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgib2ZmIik7CiAgICAgZGVm
YXVsdDoKLSAgICAgICAgcmV0dXJuIG51bGxBdG9tOworICAgICAgICByZXR1cm4gbnVsbEF0b20o
KTsKICAgICB9CiB9CiAgICAgCkBAIC0xOTc0LDEwICsxOTc0LDEwIEBAIGNvbnN0IFN0cmluZyYg
QWNjZXNzaWJpbGl0eU9iamVjdDo6YWN0aW9uVmVyYigpIGNvbnN0CiAgICAgY2FzZSBMaXN0SXRl
bVJvbGU6CiAgICAgICAgIHJldHVybiBsaXN0SXRlbUFjdGlvbjsKICAgICBkZWZhdWx0OgotICAg
ICAgICByZXR1cm4gbnVsbEF0b207CisgICAgICAgIHJldHVybiBudWxsQXRvbSgpOwogICAgIH0K
ICNlbHNlCi0gICAgcmV0dXJuIG51bGxBdG9tOworICAgIHJldHVybiBudWxsQXRvbSgpOwogI2Vu
ZGlmCiB9CiAjZW5kaWYKQEAgLTIxMzgsNyArMjEzOCw3IEBAIGNvbnN0IEF0b21pY1N0cmluZyYg
QWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJpCiB7CiAgICAgaWYgKEVsZW1lbnQqIGVsZW1lbnQgPSB0aGlzLT5lbGVtZW50KCkpCiAgICAg
ICAgIHJldHVybiBlbGVtZW50LT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGF0dHJp
YnV0ZSk7Ci0gICAgcmV0dXJuIG51bGxBdG9tOworICAgIHJldHVybiBudWxsQXRvbSgpOwogfQog
ICAgIAogLy8gTGFja2luZyBjb25jcmV0ZSBldmlkZW5jZSBvZiBvcmllbnRhdGlvbiwgaG9yaXpv
bnRhbCBtZWFucyB3aWR0aCA+IGhlaWdodC4gdmVydGljYWwgaXMgaGVpZ2h0ID4gd2lkdGg7CkBA
IC0yNDc3LDcgKzI0NzcsNyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OnBsYWNlaG9sZGVyVmFsdWUoKSBjb25zdAogICAgIGlmICghYXJpYVBsYWNlaG9sZGVyLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGFyaWFQbGFjZWhvbGRlcjsKICAgICAKLSAgICByZXR1
cm4gbnVsbEF0b207CisgICAgcmV0dXJuIG51bGxBdG9tKCk7CiB9CiAgICAgCiBib29sIEFjY2Vz
c2liaWxpdHlPYmplY3Q6OmlzSW5zaWRlQVJJQUxpdmVSZWdpb24oKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmggYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAppbmRleCBk
M2MxYTE3ZWQ4ZDNkYWQ0YzI4ZWNjNzFlZDlmNmJjMDUyM2UwZmYyLi4zMDNhZDIyMjAxMzA0NTMw
OTkzOTIwOGIwMjA0YjVhZGNhMDhmNDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaApAQCAtODE2LDcgKzgxNiw3IEBAIGNsYXNz
IEFjY2Vzc2liaWxpdHlPYmplY3QgOiBwdWJsaWMgUmVmQ291bnRlZDxBY2Nlc3NpYmlsaXR5T2Jq
ZWN0PiB7CiAgICAgdmlydHVhbCBVUkwgdXJsKCkgY29uc3QgeyByZXR1cm4gVVJMKCk7IH0KICAg
ICB2aXJ0dWFsIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gVmlz
aWJsZVNlbGVjdGlvbigpOyB9CiAgICAgdmlydHVhbCBTdHJpbmcgc2VsZWN0ZWRUZXh0KCkgY29u
c3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYg
YWNjZXNzS2V5KCkgY29uc3QgeyByZXR1cm4gbnVsbEF0b207IH0KKyAgICB2aXJ0dWFsIGNvbnN0
IEF0b21pY1N0cmluZyYgYWNjZXNzS2V5KCkgY29uc3QgeyByZXR1cm4gbnVsbEF0b20oKTsgfQog
ICAgIGNvbnN0IFN0cmluZyYgYWN0aW9uVmVyYigpIGNvbnN0OwogICAgIHZpcnR1YWwgV2lkZ2V0
KiB3aWRnZXQoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CiAgICAgdmlydHVhbCBXaWRnZXQq
IHdpZGdldEZvckF0dGFjaG1lbnRWaWV3KCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQpAQCAt
OTczLDcgKzk3Myw3IEBAIGNsYXNzIEFjY2Vzc2liaWxpdHlPYmplY3QgOiBwdWJsaWMgUmVmQ291
bnRlZDxBY2Nlc3NpYmlsaXR5T2JqZWN0PiB7CiAgICAgYm9vbCBzdXBwb3J0c0FSSUFMaXZlUmVn
aW9uKCkgY29uc3Q7CiAgICAgYm9vbCBpc0luc2lkZUFSSUFMaXZlUmVnaW9uKCkgY29uc3Q7CiAg
ICAgdmlydHVhbCBjb25zdCBTdHJpbmcgYXJpYUxpdmVSZWdpb25TdGF0dXMoKSBjb25zdCB7IHJl
dHVybiBTdHJpbmcoKTsgfQotICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBhcmlhTGl2
ZVJlZ2lvblJlbGV2YW50KCkgY29uc3QgeyByZXR1cm4gbnVsbEF0b207IH0KKyAgICB2aXJ0dWFs
IGNvbnN0IEF0b21pY1N0cmluZyYgYXJpYUxpdmVSZWdpb25SZWxldmFudCgpIGNvbnN0IHsgcmV0
dXJuIG51bGxBdG9tKCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgYXJpYUxpdmVSZWdpb25BdG9taWMo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0J1c3koKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgZGVmYXVsdExpdmVS
ZWdpb25TdGF0dXNGb3JSb2xlKEFjY2Vzc2liaWxpdHlSb2xlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3Bw
CmluZGV4IDQ3YjIxMjg2NGIwZjBmODIyMGUzODg2NmUwNTdkOTBmYWUwOThlYmEuLjZlODNjZmEz
MWVkYTY3MTE3MDVlOGVhNjkyMGM3MTJkNTBjNTYzMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApA
QCAtMTUwNSw3ICsxNTA1LDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0OjphY2Nlc3NLZXkoKSBjb25zdAogewogICAgIE5vZGUqIG5vZGUgPSBtX3JlbmRl
cmVyLT5ub2RlKCk7CiAgICAgaWYgKCFpczxFbGVtZW50Pihub2RlKSkKLSAgICAgICAgcmV0dXJu
IG51bGxBdG9tOworICAgICAgICByZXR1cm4gbnVsbEF0b20oKTsKICAgICByZXR1cm4gZG93bmNh
c3Q8RWxlbWVudD4oKm5vZGUpLmdldEF0dHJpYnV0ZShhY2Nlc3NrZXlBdHRyKTsKIH0KIApAQCAt
MzQ2NCwxMCArMzQ2NCwxMCBAQCBjb25zdCBTdHJpbmcmIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OmFjdGlvblZlcmIoKSBjb25zdAogICAgIGNhc2UgV2ViQ29yZUxpbmtSb2xlOgogICAgICAg
ICByZXR1cm4gbGlua0FjdGlvbjsKICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gbnVsbEF0
b207CisgICAgICAgIHJldHVybiBudWxsQXRvbSgpOwogICAgIH0KICNlbHNlCi0gICAgcmV0dXJu
IG51bGxBdG9tOworICAgIHJldHVybiBudWxsQXRvbSgpOwogI2VuZGlmCiB9CiAgICAgCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZh
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJm
YWNlLmNwcAppbmRleCBkNTJhOWYyOTVhOTU2N2FiZWI5NDQzMjZiZTE2YjNkMzI5M2MwZDliLi5j
NjBiMDVhN2Y1MDk5ZGU1YzYzYTc4OTViOGQzMDI0MzNlODM3NWJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5jcHAK
QEAgLTY1LDcgKzY1LDcgQEAgUmVmPEVsZW1lbnQ+IEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZTo6
Y29uc3RydWN0RWxlbWVudFdpdGhGYWxsYmFjayhEb2N1bWVudCYgZG8KICAgICBpZiAoYXV0byBl
bGVtZW50ID0gdHJ5VG9Db25zdHJ1Y3RDdXN0b21FbGVtZW50KGRvY3VtZW50LCBsb2NhbE5hbWUp
KQogICAgICAgICByZXR1cm4gZWxlbWVudC5yZWxlYXNlTm9uTnVsbCgpOwogCi0gICAgYXV0byBl
bGVtZW50ID0gSFRNTFVua25vd25FbGVtZW50OjpjcmVhdGUoUXVhbGlmaWVkTmFtZShudWxsQXRv
bSwgbG9jYWxOYW1lLCBIVE1MTmFtZXM6OnhodG1sTmFtZXNwYWNlVVJJKSwgZG9jdW1lbnQpOwor
ICAgIGF1dG8gZWxlbWVudCA9IEhUTUxVbmtub3duRWxlbWVudDo6Y3JlYXRlKFF1YWxpZmllZE5h
bWUobnVsbEF0b20oKSwgbG9jYWxOYW1lLCBIVE1MTmFtZXM6OnhodG1sTmFtZXNwYWNlVVJJKSwg
ZG9jdW1lbnQpOwogICAgIGVsZW1lbnQtPnNldElzQ3VzdG9tRWxlbWVudFVwZ3JhZGVDYW5kaWRh
dGUoKTsKICAgICBlbGVtZW50LT5zZXRJc0ZhaWxlZEN1c3RvbUVsZW1lbnQoKnRoaXMpOwogCkBA
IC03NSw3ICs3NSw3IEBAIFJlZjxFbGVtZW50PiBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6OmNv
bnN0cnVjdEVsZW1lbnRXaXRoRmFsbGJhY2soRG9jdW1lbnQmIGRvCiBSZWY8RWxlbWVudD4gSlND
dXN0b21FbGVtZW50SW50ZXJmYWNlOjpjb25zdHJ1Y3RFbGVtZW50V2l0aEZhbGxiYWNrKERvY3Vt
ZW50JiBkb2N1bWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkKIHsKICAgICBpZiAoYXV0
byBlbGVtZW50ID0gdHJ5VG9Db25zdHJ1Y3RDdXN0b21FbGVtZW50KGRvY3VtZW50LCBuYW1lLmxv
Y2FsTmFtZSgpKSkgewotICAgICAgICBpZiAobmFtZS5wcmVmaXgoKSAhPSBudWxsQXRvbSkKKyAg
ICAgICAgaWYgKG5hbWUucHJlZml4KCkgIT0gbnVsbEF0b20oKSkKICAgICAgICAgICAgIGVsZW1l
bnQtPnNldFByZWZpeChuYW1lLnByZWZpeCgpKTsKICAgICAgICAgcmV0dXJuIGVsZW1lbnQucmVs
ZWFzZU5vbk51bGwoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0N1c3RvbUVsZW1lbnRSZWdpc3RyeUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRSZWdpc3RyeUN1c3RvbS5jcHAKaW5kZXggMDM4ZjA1
NjA1OTE0ZjYwMzA0NzBmYmY0N2RhYjkzZDVlMjI4Y2NmNy4uMWU4MmExM2IzMzZlM2EwYmQwMDU1
MmNiYTkyNjc0YjczNDU2YjA4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNDdXN0b21FbGVtZW50UmVnaXN0cnlDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5Q3VzdG9tLmNwcApAQCAtMTI2LDcg
KzEyNiw3IEBAIEpTVmFsdWUgSlNDdXN0b21FbGVtZW50UmVnaXN0cnk6OmRlZmluZShFeGVjU3Rh
dGUmIHN0YXRlKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSwg
QVNDSUlMaXRlcmFsKCJDdXN0b20gZWxlbWVudCBjb25zdHJ1Y3RvcidzIHByb3RvdHlwZSBtdXN0
IGJlIGFuIG9iamVjdCIpKTsKICAgICBKU09iamVjdCYgcHJvdG90eXBlT2JqZWN0ID0gKmFzT2Jq
ZWN0KHByb3RvdHlwZVZhbHVlKTsKIAotICAgIFF1YWxpZmllZE5hbWUgbmFtZShudWxsQXRvbSwg
bG9jYWxOYW1lLCBIVE1MTmFtZXM6OnhodG1sTmFtZXNwYWNlVVJJKTsKKyAgICBRdWFsaWZpZWRO
YW1lIG5hbWUobnVsbEF0b20oKSwgbG9jYWxOYW1lLCBIVE1MTmFtZXM6OnhodG1sTmFtZXNwYWNl
VVJJKTsKICAgICBhdXRvIGVsZW1lbnRJbnRlcmZhY2UgPSBKU0N1c3RvbUVsZW1lbnRJbnRlcmZh
Y2U6OmNyZWF0ZShuYW1lLCBjb25zdHJ1Y3RvciwgZ2xvYmFsT2JqZWN0KCkpOwogCiAgICAgYXV0
byogY29ubmVjdGVkQ2FsbGJhY2sgPSBnZXRDdXN0b21FbGVtZW50Q2FsbGJhY2soc3RhdGUsIHBy
b3RvdHlwZU9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJjb25uZWN0ZWRDYWxs
YmFjayIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG0KaW5kZXggYzU1MTlmYTk3MDUyODJkOWI3ODg4ZjI0YzI2NGZmNWNmNTg0NTQ0
ZC4uYmZiZmUzODk1ZTljYjMyYTM3ZjNmMDU0YjQyZjMxMWE0NmQ0Njc2MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTIx
MjUsOSArMjEyNSw5IEBAIHN1YiBHZW5lcmF0ZURlZmF1bHRWYWx1ZQogICAgIGlmICgkY29kZUdl
bmVyYXRvci0+SXNTdHJpbmdUeXBlKCR0eXBlKSkgewogICAgICAgICBteSAkdXNlQXRvbWljU3Ry
aW5nID0gJHR5cGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0F0b21pY1N0cmluZ307CiAgICAgICAg
IGlmICgkZGVmYXVsdFZhbHVlIGVxICJudWxsIikgewotICAgICAgICAgICAgcmV0dXJuICR1c2VB
dG9taWNTdHJpbmcgPyAibnVsbEF0b20iIDogIlN0cmluZygpIjsKKyAgICAgICAgICAgIHJldHVy
biAkdXNlQXRvbWljU3RyaW5nID8gIm51bGxBdG9tKCkiIDogIlN0cmluZygpIjsKICAgICAgICAg
fSBlbHNpZiAoJGRlZmF1bHRWYWx1ZSBlcSAiXCJcIiIpIHsKLSAgICAgICAgICAgIHJldHVybiAk
dXNlQXRvbWljU3RyaW5nID8gImVtcHR5QXRvbSIgOiAiZW1wdHlTdHJpbmcoKSI7CisgICAgICAg
ICAgICByZXR1cm4gJHVzZUF0b21pY1N0cmluZyA/ICJlbXB0eUF0b20oKSIgOiAiZW1wdHlTdHJp
bmcoKSI7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICByZXR1cm4gJHVzZUF0b21pY1N0
cmluZyA/ICJBdG9taWNTdHJpbmcoJHtkZWZhdWx0VmFsdWV9LCBBdG9taWNTdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKSIgOiAiQVNDSUlMaXRlcmFsKCR7ZGVmYXVsdFZhbHVlfSkiOwogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPYmouY3BwCmluZGV4IGRjOWNmZjU1YzUwZTQxOGZjMjIzNGU4MzFkN2ZlNmEwNjk2
NmI2ZmUuLjQxMjYwYzk2MDgzNmZkNDdmZDE3ZmNlMWZjMWUyMDBhY2E2NWFhNDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmou
Y3BwCkBAIC02MDExLDcgKzYwMTEsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdAogICAgIFVO
VVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgYXV0byBzdHIgPSBzdGF0ZS0+
YXJndW1lbnQoMCkuaXNVbmRlZmluZWQoKSA/IG51bGxBdG9tIDogY29udmVydDxJRExBdG9taWNT
dHJpbmdBZGFwdG9yPElETERPTVN0cmluZz4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDApKTsKKyAgICBhdXRvIHN0ciA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgp
ID8gbnVsbEF0b20oKSA6IGNvbnZlcnQ8SURMQXRvbWljU3RyaW5nQWRhcHRvcjxJRExET01TdHJp
bmc+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBpbXBsLm1ldGhv
ZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZyhXVEZNb3ZlKHN0cikpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC02MDkxLDcgKzYwOTEsNyBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoT3B0aW9uYWxBdAogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
Ci0gICAgYXV0byBzdHIgPSBzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWQoKSA/IG51bGxB
dG9tIDogY29udmVydDxJRExBdG9taWNTdHJpbmdBZGFwdG9yPElETERPTVN0cmluZz4+KCpzdGF0
ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKKyAgICBhdXRvIHN0ciA9IHN0YXRlLT5h
cmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gbnVsbEF0b20oKSA6IGNvbnZlcnQ8SURMQXRvbWlj
U3RyaW5nQWRhcHRvcjxJRExET01TdHJpbmc+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1
bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKICAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZ0lzTnVsbChX
VEZNb3ZlKHN0cikpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CkBAIC02MTM5LDcgKzYxMzksNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdAogICAgIFVOVVNF
RF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgYXV0byBzdHIgPSBzdGF0ZS0+YXJn
dW1lbnQoMCkuaXNVbmRlZmluZWQoKSA/IGVtcHR5QXRvbSA6IGNvbnZlcnQ8SURMQXRvbWljU3Ry
aW5nQWRhcHRvcjxJRExET01TdHJpbmc+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVu
dCgwKSk7CisgICAgYXV0byBzdHIgPSBzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWQoKSA/
IGVtcHR5QXRvbSgpIDogY29udmVydDxJRExBdG9taWNTdHJpbmdBZGFwdG9yPElETERPTVN0cmlu
Zz4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGltcGwubWV0aG9k
V2l0aE9wdGlvbmFsQXRvbWljU3RyaW5nSXNFbXB0eVN0cmluZyhXVEZNb3ZlKHN0cikpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUGFnZVJ1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Bh
Z2VSdWxlLmNwcAppbmRleCBlMTAxMmIwNGNmYzU3ZmVmY2RjZjlhYTliM2ZmYTA1MjdmNzE0YzA3
Li40N2NmNDU2NGIxMmU5ZTJmNzg4NzAyODE5OGY0MTk3NDE4NmU0NDhlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFnZVJ1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQYWdlUnVsZS5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgU3RyaW5nIENTU1BhZ2VSdWxlOjpz
ZWxlY3RvclRleHQoKSBjb25zdAogICAgIGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvciA9IG1f
cGFnZVJ1bGUtPnNlbGVjdG9yKCk7CiAgICAgaWYgKHNlbGVjdG9yKSB7CiAgICAgICAgIFN0cmlu
ZyBwYWdlU3BlY2lmaWNhdGlvbiA9IHNlbGVjdG9yLT5zZWxlY3RvclRleHQoKTsKLSAgICAgICAg
aWYgKCFwYWdlU3BlY2lmaWNhdGlvbi5pc0VtcHR5KCkgJiYgcGFnZVNwZWNpZmljYXRpb24gIT0g
c3RhckF0b20pIHsKKyAgICAgICAgaWYgKCFwYWdlU3BlY2lmaWNhdGlvbi5pc0VtcHR5KCkgJiYg
cGFnZVNwZWNpZmljYXRpb24gIT0gc3RhckF0b20oKSkgewogICAgICAgICAgICAgdGV4dC5hcHBl
bmQoJyAnKTsKICAgICAgICAgICAgIHRleHQuYXBwZW5kKHBhZ2VTcGVjaWZpY2F0aW9uKTsKICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKaW5kZXggNjQ4
OGY0MWNhN2U1MmYwMDFmYWY0YWQwMzZmNmZjZGM5MTlmYjY0Mi4uZDZmNmEwYjJmMzBjYjNiNmMw
NGQ2Y2E3MDAyYzZmOTA5MDU2ZDJiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1ByaW1pdGl2ZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZl
VmFsdWUuY3BwCkBAIC0yODIsNyArMjgyLDcgQEAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYg
dmFsdWVOYW1lKENTU1ZhbHVlSUQgdmFsdWVJRCkKICAgICBBU1NFUlRfQVJHKHZhbHVlSUQsIHZh
bHVlSUQgPCBudW1DU1NWYWx1ZUtleXdvcmRzKTsKIAogICAgIGlmICh2YWx1ZUlEIDwgMCkKLSAg
ICAgICAgcmV0dXJuIG51bGxBdG9tOworICAgICAgICByZXR1cm4gbnVsbEF0b20oKTsKIAogICAg
IHN0YXRpYyBBdG9taWNTdHJpbmcqIGtleXdvcmRTdHJpbmdzID0gbmV3IEF0b21pY1N0cmluZ1tu
dW1DU1NWYWx1ZUtleXdvcmRzXTsgLy8gTGVha2VkIGludGVudGlvbmFsbHkuCiAgICAgQXRvbWlj
U3RyaW5nJiBrZXl3b3JkU3RyaW5nID0ga2V5d29yZFN0cmluZ3NbdmFsdWVJRF07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1NlbGVjdG9yLmNwcAppbmRleCA2OTM4YjYxMjA2NWU2ODhlYzBkMDliZjkwZmQ2YThi
YzUzZWQzZTY3Li4yZWIwZDA0Yjg5ZWNiZTM0MGJjMDllMjliNTkwYjE5N2M4MmRlNTc1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCBzdGF0aWMgdW5z
aWduZWQgc2ltcGxlU2VsZWN0b3JTcGVjaWZpY2l0eUludGVybmFsKGNvbnN0IENTU1NlbGVjdG9y
JiBzaW1wbGVTZWxlYwogICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkVuZDoKICAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihTZWxlY3RvclNwZWNpZmljaXR5SW5jcmVtZW50OjpDbGFz
c0IpOwogICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlRhZzoKLSAgICAgICAgcmV0dXJuIChzaW1wbGVT
ZWxlY3Rvci50YWdRTmFtZSgpLmxvY2FsTmFtZSgpICE9IHN0YXJBdG9tKSA/IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihTZWxlY3RvclNwZWNpZmljaXR5SW5jcmVtZW50OjpDbGFzc0MpIDogMDsKKyAg
ICAgICAgcmV0dXJuIChzaW1wbGVTZWxlY3Rvci50YWdRTmFtZSgpLmxvY2FsTmFtZSgpICE9IHN0
YXJBdG9tKCkpID8gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFNlbGVjdG9yU3BlY2lmaWNpdHlJbmNy
ZW1lbnQ6OkNsYXNzQykgOiAwOwogICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnQ6
CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oU2VsZWN0b3JTcGVjaWZpY2l0
eUluY3JlbWVudDo6Q2xhc3NDKTsKICAgICBjYXNlIENTU1NlbGVjdG9yOjpVbmtub3duOgpAQCAt
MjQ2LDcgKzI0Niw3IEBAIHVuc2lnbmVkIENTU1NlbGVjdG9yOjpzcGVjaWZpY2l0eUZvclBhZ2Uo
KSBjb25zdAogICAgIGZvciAoY29uc3QgQ1NTU2VsZWN0b3IqIGNvbXBvbmVudCA9IHRoaXM7IGNv
bXBvbmVudDsgY29tcG9uZW50ID0gY29tcG9uZW50LT50YWdIaXN0b3J5KCkpIHsKICAgICAgICAg
c3dpdGNoIChjb21wb25lbnQtPm1hdGNoKCkpIHsKICAgICAgICAgY2FzZSBUYWc6Ci0gICAgICAg
ICAgICBzICs9IHRhZ1FOYW1lKCkubG9jYWxOYW1lKCkgPT0gc3RhckF0b20gPyAwIDogNDsKKyAg
ICAgICAgICAgIHMgKz0gdGFnUU5hbWUoKS5sb2NhbE5hbWUoKSA9PSBzdGFyQXRvbSgpID8gMCA6
IDQ7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQYWdlUHNldWRvQ2xhc3M6CiAg
ICAgICAgICAgICBzd2l0Y2ggKGNvbXBvbmVudC0+cGFnZVBzZXVkb0NsYXNzVHlwZSgpKSB7CkBA
IC04MjYsNyArODI2LDcgQEAgQ1NTU2VsZWN0b3I6OlJhcmVEYXRhOjpSYXJlRGF0YShBdG9taWNT
dHJpbmcmJiB2YWx1ZSkKICAgICAsIG1fYSgwKQogICAgICwgbV9iKDApCiAgICAgLCBtX2F0dHJp
YnV0ZShhbnlRTmFtZSgpKQotICAgICwgbV9hcmd1bWVudChudWxsQXRvbSkKKyAgICAsIG1fYXJn
dW1lbnQobnVsbEF0b20oKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1NlbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaAppbmRleCA1
NmQ3YjI2N2YzZTA1ZTE0MWYyZmM1OTBmYjAyNGVjNWJiZmUzNmEzLi40YmZjMjQ2NTk0MzM5MDdj
OTZjNDVjMWE4OGI1ZDI3M2VjOGZiMjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTU2VsZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaApAQCAt
MjM1LDcgKzIzNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgY29uc3QgQXRvbWlj
U3RyaW5nJiBzZXJpYWxpemluZ1ZhbHVlKCkgY29uc3Q7CiAgICAgICAgIGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJpYnV0ZSgpIGNvbnN0OwogICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGF0
dHJpYnV0ZUNhbm9uaWNhbExvY2FsTmFtZSgpIGNvbnN0OwotICAgICAgICBjb25zdCBBdG9taWNT
dHJpbmcmIGFyZ3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9oYXNSYXJlRGF0YSA/IG1fZGF0YS5t
X3JhcmVEYXRhLT5tX2FyZ3VtZW50IDogbnVsbEF0b207IH0KKyAgICAgICAgY29uc3QgQXRvbWlj
U3RyaW5nJiBhcmd1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzUmFyZURhdGEgPyBtX2RhdGEu
bV9yYXJlRGF0YS0+bV9hcmd1bWVudCA6IG51bGxBdG9tKCk7IH0KICAgICAgICAgYm9vbCBhdHRy
aWJ1dGVWYWx1ZU1hdGNoaW5nSXNDYXNlSW5zZW5zaXRpdmUoKSBjb25zdDsKICAgICAgICAgY29u
c3QgVmVjdG9yPEF0b21pY1N0cmluZz4qIGxhbmdBcmd1bWVudExpc3QoKSBjb25zdCB7IHJldHVy
biBtX2hhc1JhcmVEYXRhID8gbV9kYXRhLm1fcmFyZURhdGEtPm1fbGFuZ0FyZ3VtZW50TGlzdC5n
ZXQoKSA6IG51bGxwdHI7IH0KICAgICAgICAgY29uc3QgQ1NTU2VsZWN0b3JMaXN0KiBzZWxlY3Rv
ckxpc3QoKSBjb25zdCB7IHJldHVybiBtX2hhc1JhcmVEYXRhID8gbV9kYXRhLm1fcmFyZURhdGEt
Pm1fc2VsZWN0b3JMaXN0LmdldCgpIDogbnVsbHB0cjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2Vs
ZWN0b3JMaXN0LmNwcAppbmRleCBmZDdlMTM0MTA4N2Q4ZTg3NTIzNzM2MjIxNmZkMTBmNTVhMTll
ZWNmLi4xN2FiN2FkN2UyNGZiNDBlZTk5NjM1YmMyNzcwYzc5NWRhMzM4Y2NjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmNwcApAQCAtMTcxLDkgKzE3MSw5IEBAIGNsYXNzIFNl
bGVjdG9yTmVlZHNOYW1lc3BhY2VSZXNvbHV0aW9uRnVuY3RvciB7CiBwdWJsaWM6CiAgICAgYm9v
bCBvcGVyYXRvcigpKGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvcikKICAgICB7Ci0gICAgICAg
IGlmIChzZWxlY3Rvci0+bWF0Y2goKSA9PSBDU1NTZWxlY3Rvcjo6VGFnICYmICFzZWxlY3Rvci0+
dGFnUU5hbWUoKS5wcmVmaXgoKS5pc0VtcHR5KCkgJiYgc2VsZWN0b3ItPnRhZ1FOYW1lKCkucHJl
Zml4KCkgIT0gc3RhckF0b20pCisgICAgICAgIGlmIChzZWxlY3Rvci0+bWF0Y2goKSA9PSBDU1NT
ZWxlY3Rvcjo6VGFnICYmICFzZWxlY3Rvci0+dGFnUU5hbWUoKS5wcmVmaXgoKS5pc0VtcHR5KCkg
JiYgc2VsZWN0b3ItPnRhZ1FOYW1lKCkucHJlZml4KCkgIT0gc3RhckF0b20oKSkKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgICBpZiAoc2VsZWN0b3ItPmlzQXR0cmlidXRlU2VsZWN0
b3IoKSAmJiAhc2VsZWN0b3ItPmF0dHJpYnV0ZSgpLnByZWZpeCgpLmlzRW1wdHkoKSAmJiBzZWxl
Y3Rvci0+YXR0cmlidXRlKCkucHJlZml4KCkgIT0gc3RhckF0b20pCisgICAgICAgIGlmIChzZWxl
Y3Rvci0+aXNBdHRyaWJ1dGVTZWxlY3RvcigpICYmICFzZWxlY3Rvci0+YXR0cmlidXRlKCkucHJl
Zml4KCkuaXNFbXB0eSgpICYmIHNlbGVjdG9yLT5hdHRyaWJ1dGUoKS5wcmVmaXgoKSAhPSBzdGFy
QXRvbSgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUGFnZVJ1bGVDb2xsZWN0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1BhZ2VSdWxlQ29sbGVjdG9yLmNwcAppbmRleCBiODJj
ODg3MTc2NTAxNzIzYmJhYWQ4NDNmNWZlYjNiYWVmMjQ1YzFjLi5kNTMwMzM0Y2NmODFjNTBkNmEx
NDQzNDc2ZGM3M2E4ZmVhNWRjODZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUGFn
ZVJ1bGVDb2xsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9QYWdlUnVsZUNvbGxl
Y3Rvci5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgc3RhdGljIGJvb2wgY2hlY2tQYWdlU2VsZWN0b3JD
b21wb25lbnRzKGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvciwgYm9vbCBpc0xlZnQKICAgICBm
b3IgKGNvbnN0IENTU1NlbGVjdG9yKiBjb21wb25lbnQgPSBzZWxlY3RvcjsgY29tcG9uZW50OyBj
b21wb25lbnQgPSBjb21wb25lbnQtPnRhZ0hpc3RvcnkoKSkgewogICAgICAgICBpZiAoY29tcG9u
ZW50LT5tYXRjaCgpID09IENTU1NlbGVjdG9yOjpUYWcpIHsKICAgICAgICAgICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgbG9jYWxOYW1lID0gY29tcG9uZW50LT50YWdRTmFtZSgpLmxvY2FsTmFtZSgp
OwotICAgICAgICAgICAgaWYgKGxvY2FsTmFtZSAhPSBzdGFyQXRvbSAmJiBsb2NhbE5hbWUgIT0g
cGFnZU5hbWUpCisgICAgICAgICAgICBpZiAobG9jYWxOYW1lICE9IHN0YXJBdG9tKCkgJiYgbG9j
YWxOYW1lICE9IHBhZ2VOYW1lKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgfSBlbHNlIGlmIChjb21wb25lbnQtPm1hdGNoKCkgPT0gQ1NTU2VsZWN0b3I6OlBhZ2VQc2V1
ZG9DbGFzcykgewogICAgICAgICAgICAgQ1NTU2VsZWN0b3I6OlBhZ2VQc2V1ZG9DbGFzc1R5cGUg
cHNldWRvVHlwZSA9IGNvbXBvbmVudC0+cGFnZVBzZXVkb0NsYXNzVHlwZSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1J1
bGVTZXQuY3BwCmluZGV4IDZkOTI3ZDM2NzE3MTcwNWY4ZjZkZDcwYzVlY2Y4NTVhNzQ3OGJmZDQu
LjkxYjYzZjg5YWRkYjZlY2IyMjcxOWFhNTIwMjgyYTVmN2VhOTMzMzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVs
ZVNldC5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgc3RhdGljIGlubGluZSBNYXRjaEJhc2VkT25SdWxl
SGFzaCBjb21wdXRlTWF0Y2hCYXNlZE9uUnVsZUhhc2goY29uc3QgQ1NTU2VsZWN0b3IKICAgICBp
ZiAoc2VsZWN0b3IubWF0Y2goKSA9PSBDU1NTZWxlY3Rvcjo6VGFnKSB7CiAgICAgICAgIGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ1F1YWxpZmllZE5hbWUgPSBzZWxlY3Rvci50YWdRTmFtZSgpOwog
ICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHNlbGVjdG9yTmFtZXNwYWNlID0gdGFnUXVhbGlm
aWVkTmFtZS5uYW1lc3BhY2VVUkkoKTsKLSAgICAgICAgaWYgKHNlbGVjdG9yTmFtZXNwYWNlID09
IHN0YXJBdG9tIHx8IHNlbGVjdG9yTmFtZXNwYWNlID09IHhodG1sTmFtZXNwYWNlVVJJKSB7Cisg
ICAgICAgIGlmIChzZWxlY3Rvck5hbWVzcGFjZSA9PSBzdGFyQXRvbSgpIHx8IHNlbGVjdG9yTmFt
ZXNwYWNlID09IHhodG1sTmFtZXNwYWNlVVJJKSB7CiAgICAgICAgICAgICBpZiAodGFnUXVhbGlm
aWVkTmFtZSA9PSBhbnlRTmFtZSgpKQogICAgICAgICAgICAgICAgIHJldHVybiBNYXRjaEJhc2Vk
T25SdWxlSGFzaDo6VW5pdmVyc2FsOwogICAgICAgICAgICAgcmV0dXJuIE1hdGNoQmFzZWRPblJ1
bGVIYXNoOjpDbGFzc0M7CkBAIC0yNDYsNyArMjQ2LDcgQEAgdm9pZCBSdWxlU2V0OjphZGRSdWxl
KFN0eWxlUnVsZSogcnVsZSwgdW5zaWduZWQgc2VsZWN0b3JJbmRleCwgQWRkUnVsZUZsYWdzIGFk
ZFIKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0
b3I6OlRhZzoKLSAgICAgICAgICAgIGlmIChzZWxlY3Rvci0+dGFnUU5hbWUoKS5sb2NhbE5hbWUo
KSAhPSBzdGFyQXRvbSkKKyAgICAgICAgICAgIGlmIChzZWxlY3Rvci0+dGFnUU5hbWUoKS5sb2Nh
bE5hbWUoKSAhPSBzdGFyQXRvbSgpKQogICAgICAgICAgICAgICAgIHRhZ1NlbGVjdG9yID0gc2Vs
ZWN0b3I7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNl
dWRvRWxlbWVudDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNr
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKaW5kZXggOWJl
MzMxZmE1OWI3MmIwZGU3NDJjYThlZTdmOTE4MWExZDgzY2Y2Yy4uZmYwNGIxNTY1NzQyMTg1OWQ2
YTE5YzU1YWU0NWNiM2EwNjVjMTVkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1Nl
bGVjdG9yQ2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tl
ci5jcHAKQEAgLTY0MywxMCArNjQzLDEwIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCB0YWdNYXRjaGVz
KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IENTU1NlbGVjdG9yJiBzaW1wbGVTCiAKICAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSA9IChlbGVtZW50LmlzSFRNTEVsZW1lbnQo
KSAmJiBlbGVtZW50LmRvY3VtZW50KCkuaXNIVE1MRG9jdW1lbnQoKSkgPyBzaW1wbGVTZWxlY3Rv
ci50YWdMb3dlcmNhc2VMb2NhbE5hbWUoKSA6IHRhZ1FOYW1lLmxvY2FsTmFtZSgpOwogCi0gICAg
aWYgKGxvY2FsTmFtZSAhPSBzdGFyQXRvbSAmJiBsb2NhbE5hbWUgIT0gZWxlbWVudC5sb2NhbE5h
bWUoKSkKKyAgICBpZiAobG9jYWxOYW1lICE9IHN0YXJBdG9tKCkgJiYgbG9jYWxOYW1lICE9IGVs
ZW1lbnQubG9jYWxOYW1lKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWVzcGFjZVVSSSA9IHRhZ1FOYW1lLm5hbWVzcGFjZVVSSSgpOwotICAgIHJl
dHVybiBuYW1lc3BhY2VVUkkgPT0gc3RhckF0b20gfHwgbmFtZXNwYWNlVVJJID09IGVsZW1lbnQu
bmFtZXNwYWNlVVJJKCk7CisgICAgcmV0dXJuIG5hbWVzcGFjZVVSSSA9PSBzdGFyQXRvbSgpIHx8
IG5hbWVzcGFjZVVSSSA9PSBlbGVtZW50Lm5hbWVzcGFjZVVSSSgpOwogfQogCiBib29sIFNlbGVj
dG9yQ2hlY2tlcjo6Y2hlY2tPbmUoQ2hlY2tpbmdDb250ZXh0JiBjaGVja2luZ0NvbnRleHQsIGNv
bnN0IExvY2FsQ29udGV4dCYgY29udGV4dCwgUHNldWRvSWRTZXQmIGR5bmFtaWNQc2V1ZG9JZFNl
dCwgTWF0Y2hUeXBlJiBtYXRjaFR5cGUsIHVuc2lnbmVkJiBzcGVjaWZpY2l0eSkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckZpbHRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU2VsZWN0b3JGaWx0ZXIuY3BwCmluZGV4IDc3MmFkMGU3YzdlN2VkYTIxMTMx
MWE3NmY2ZjhkZDE3ZDgyYjRhMzguLjJiZDMxM2YxMzMyMjdiY2FhMGM0NmY4MzEyZTIzY2ExMWZm
MmU2Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckZpbHRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yRmlsdGVyLmNwcApAQCAtMTA5LDcgKzEw
OSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBjb2xsZWN0RGVzY2VuZGFudFNlbGVjdG9ySWRlbnRp
Zmllckhhc2hlcyhjb25zdCBDU1NTZWxlY3RvcioKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBD
U1NTZWxlY3Rvcjo6VGFnOiB7CiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdGFnTG93ZXJj
YXNlTG9jYWxOYW1lID0gc2VsZWN0b3ItPnRhZ0xvd2VyY2FzZUxvY2FsTmFtZSgpOwotICAgICAg
ICBpZiAodGFnTG93ZXJjYXNlTG9jYWxOYW1lICE9IHN0YXJBdG9tKQorICAgICAgICBpZiAodGFn
TG93ZXJjYXNlTG9jYWxOYW1lICE9IHN0YXJBdG9tKCkpCiAgICAgICAgICAgICAoKmhhc2grKykg
PSB0YWdMb3dlcmNhc2VMb2NhbE5hbWUuaW1wbCgpLT5leGlzdGluZ0hhc2goKSAqIFRhZ05hbWVT
YWx0OwogICAgICAgICBicmVhazsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWls
ZGVyQ29udmVydGVyLmgKaW5kZXggMjMxZjZjMTgyMmE4YjQ2ZjEzNGEwNmExMjcwZTkzYjUxYmI1
YThkMC4uN2MyMDA1ZmU2NjM0ZmQ2ZDdjMzk4Zjc2OWRhOGYzNDgwOTA0MmM1NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaApAQCAtNDU3LDE0ICs0NTcsMTQg
QEAgaW5saW5lIFN0cmluZyBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTdHJpbmcoU3R5
bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHUKIGlubGluZSBTdHJpbmcgU3R5bGVCdWlsZGVyQ29u
dmVydGVyOjpjb252ZXJ0U3RyaW5nT3JBdXRvKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIs
IGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBpZiAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWU+KHZhbHVlKS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVBdXRvKQotICAgICAgICByZXR1cm4g
bnVsbEF0b207CisgICAgICAgIHJldHVybiBudWxsQXRvbSgpOwogICAgIHJldHVybiBjb252ZXJ0
U3RyaW5nKHN0eWxlUmVzb2x2ZXIsIHZhbHVlKTsKIH0KIAogaW5saW5lIFN0cmluZyBTdHlsZUJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTdHJpbmdPck5vbmUoU3R5bGVSZXNvbHZlciYgc3R5bGVS
ZXNvbHZlciwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGlmIChkb3duY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpCi0gICAgICAg
IHJldHVybiBudWxsQXRvbTsKKyAgICAgICAgcmV0dXJuIG51bGxBdG9tKCk7CiAgICAgcmV0dXJu
IGNvbnZlcnRTdHJpbmcoc3R5bGVSZXNvbHZlciwgdmFsdWUpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKaW5kZXggOWUxZDQ0ZTBjZGEyYjFkZGUxNmE4MzI4Njky
YmY1Y2UwYTdkYmE4NS4uNDc0YTg3YmEzODEyZmNlYjI5YjQ1MDBmMzk3ZTAwMGNiNWJkNjI4NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaApAQCAtNzIyLDcgKzcyMiw3
IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVdlYmtpdExvY2Fs
ZShTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sCiAKICAgICBGb250Q2FzY2FkZURlc2NyaXB0aW9u
IGZvbnREZXNjcmlwdGlvbiA9IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+Zm9udERlc2NyaXB0aW9u
KCk7CiAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUF1dG8pCi0g
ICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRMb2NhbGUobnVsbEF0b20pOworICAgICAgICBmb250
RGVzY3JpcHRpb24uc2V0TG9jYWxlKG51bGxBdG9tKCkpOwogICAgIGVsc2UKICAgICAgICAgZm9u
dERlc2NyaXB0aW9uLnNldExvY2FsZShwcmltaXRpdmVWYWx1ZS5zdHJpbmdWYWx1ZSgpKTsKICAg
ICBzdHlsZVJlc29sdmVyLnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pOwpAQCAt
MTA1NSw3ICsxMDU1LDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZh
bHVlV2Via2l0VGV4dEVtcGhhc2lzU3R5bGUoU3R5bGVSZXNvbHZlciYKICAgICAgICAgICAgIGVs
c2UKICAgICAgICAgICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFRleHRFbXBoYXNp
c01hcmsodmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+
c2V0VGV4dEVtcGhhc2lzQ3VzdG9tTWFyayhudWxsQXRvbSk7CisgICAgICAgIHN0eWxlUmVzb2x2
ZXIuc3R5bGUoKS0+c2V0VGV4dEVtcGhhc2lzQ3VzdG9tTWFyayhudWxsQXRvbSgpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTA2Nyw3ICsxMDY3LDcgQEAgaW5saW5lIHZvaWQgU3R5
bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2Via2l0VGV4dEVtcGhhc2lzU3R5bGUoU3R5bGVS
ZXNvbHZlciYKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHN0eWxlUmVzb2x2ZXIuc3R5
bGUoKS0+c2V0VGV4dEVtcGhhc2lzQ3VzdG9tTWFyayhudWxsQXRvbSk7CisgICAgc3R5bGVSZXNv
bHZlci5zdHlsZSgpLT5zZXRUZXh0RW1waGFzaXNDdXN0b21NYXJrKG51bGxBdG9tKCkpOwogCiAg
ICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUZpbGxlZCB8fCBwcmlt
aXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVPcGVuKSB7CiAgICAgICAgIHN0eWxlUmVz
b2x2ZXIuc3R5bGUoKS0+c2V0VGV4dEVtcGhhc2lzRmlsbChwcmltaXRpdmVWYWx1ZSk7CkBAIC0x
Mzg1LDkgKzEzODUsOSBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFs
dWVDb250ZW50KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsCiAgICAgICAgICAgICAgICAg
c3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRIYXNBdHRyQ29udGVudCgpOwogICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgIGNvbnN0X2Nhc3Q8UmVuZGVyU3R5bGUqPihzdHlsZVJlc29s
dmVyLnBhcmVudFN0eWxlKCkpLT5zZXRIYXNBdHRyQ29udGVudCgpOwotICAgICAgICAgICAgUXVh
bGlmaWVkTmFtZSBhdHRyKG51bGxBdG9tLCBjb250ZW50VmFsdWUuc3RyaW5nVmFsdWUoKS5pbXBs
KCksIG51bGxBdG9tKTsKKyAgICAgICAgICAgIFF1YWxpZmllZE5hbWUgYXR0cihudWxsQXRvbSgp
LCBjb250ZW50VmFsdWUuc3RyaW5nVmFsdWUoKS5pbXBsKCksIG51bGxBdG9tKCkpOwogICAgICAg
ICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IHN0eWxlUmVzb2x2ZXIuZWxlbWVudCgp
LT5nZXRBdHRyaWJ1dGUoYXR0cik7Ci0gICAgICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCkt
PnNldENvbnRlbnQodmFsdWUuaXNOdWxsKCkgPyBlbXB0eUF0b20gOiB2YWx1ZS5pbXBsKCksIGRp
ZFNldCk7CisgICAgICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldENvbnRlbnQodmFs
dWUuaXNOdWxsKCkgPyBlbXB0eUF0b20oKSA6IHZhbHVlLmltcGwoKSwgZGlkU2V0KTsKICAgICAg
ICAgICAgIGRpZFNldCA9IHRydWU7CiAgICAgICAgICAgICAvLyBSZWdpc3RlciB0aGUgZmFjdCB0
aGF0IHRoZSBhdHRyaWJ1dGUgdmFsdWUgYWZmZWN0cyB0aGUgc3R5bGUuCiAgICAgICAgICAgICBz
dHlsZVJlc29sdmVyLnJ1bGVTZXRzKCkubXV0YWJsZUZlYXR1cmVzKCkuYXR0cmlidXRlQ2Fub25p
Y2FsTG9jYWxOYW1lc0luUnVsZXMuYWRkKGF0dHIubG9jYWxOYW1lKCkuaW1wbCgpKTsKQEAgLTE3
ODMsMTUgKzE3ODMsMTUgQEAgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVBbHQo
U3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHYKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgY29uc3RfY2FzdDxSZW5kZXJTdHlsZSo+KHN0eWxlUmVzb2x2ZXIucGFyZW50
U3R5bGUoKSktPnNldFVuaXF1ZSgpOwogCi0gICAgICAgIFF1YWxpZmllZE5hbWUgYXR0cihudWxs
QXRvbSwgcHJpbWl0aXZlVmFsdWUuc3RyaW5nVmFsdWUoKSwgbnVsbEF0b20pOworICAgICAgICBR
dWFsaWZpZWROYW1lIGF0dHIobnVsbEF0b20oKSwgcHJpbWl0aXZlVmFsdWUuc3RyaW5nVmFsdWUo
KSwgbnVsbEF0b20oKSk7CiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBzdHls
ZVJlc29sdmVyLmVsZW1lbnQoKS0+Z2V0QXR0cmlidXRlKGF0dHIpOwotICAgICAgICBzdHlsZVJl
c29sdmVyLnN0eWxlKCktPnNldENvbnRlbnRBbHRUZXh0KHZhbHVlLmlzTnVsbCgpID8gZW1wdHlB
dG9tIDogdmFsdWUpOworICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldENvbnRlbnRB
bHRUZXh0KHZhbHVlLmlzTnVsbCgpID8gZW1wdHlBdG9tKCkgOiB2YWx1ZSk7CiAKICAgICAgICAg
Ly8gUmVnaXN0ZXIgdGhlIGZhY3QgdGhhdCB0aGUgYXR0cmlidXRlIHZhbHVlIGFmZmVjdHMgdGhl
IHN0eWxlLgogICAgICAgICBzdHlsZVJlc29sdmVyLnJ1bGVTZXRzKCkubXV0YWJsZUZlYXR1cmVz
KCkuYXR0cmlidXRlQ2Fub25pY2FsTG9jYWxOYW1lc0luUnVsZXMuYWRkKGF0dHIubG9jYWxOYW1l
KCkuaW1wbCgpKTsKICAgICAgICAgc3R5bGVSZXNvbHZlci5ydWxlU2V0cygpLm11dGFibGVGZWF0
dXJlcygpLmF0dHJpYnV0ZUxvY2FsTmFtZXNJblJ1bGVzLmFkZChhdHRyLmxvY2FsTmFtZSgpLmlt
cGwoKSk7CiAgICAgfSBlbHNlCi0gICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0Q29u
dGVudEFsdFRleHQoZW1wdHlBdG9tKTsKKyAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5z
ZXRDb250ZW50QWx0VGV4dChlbXB0eUF0b20oKSk7CiB9CiAKIGlubGluZSB2b2lkIFN0eWxlQnVp
bGRlckN1c3RvbTo6YXBwbHlWYWx1ZVdpbGxDaGFuZ2UoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNv
bHZlciwgQ1NTVmFsdWUmIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlU2hlZXRDb250ZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRl
bnRzLmNwcAppbmRleCBkMjNhYjkwOWY0OWExMGI1NmQ3ZWU0YTVjZTEwMjNlMTE0MTMwMGE5Li40
MTYzZGMwNTY5NjkzN2QxMTRhOWY2MDI3OTUzNDA5YmFkYjJiYjQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmNwcApAQCAtNjgsNyArNjgsNyBAQCB1bnNpZ25lZCBT
dHlsZVNoZWV0Q29udGVudHM6OmVzdGltYXRlZFNpemVJbkJ5dGVzKCkgY29uc3QKIFN0eWxlU2hl
ZXRDb250ZW50czo6U3R5bGVTaGVldENvbnRlbnRzKFN0eWxlUnVsZUltcG9ydCogb3duZXJSdWxl
LCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVVJMLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250
ZXh0KQogICAgIDogbV9vd25lclJ1bGUob3duZXJSdWxlKQogICAgICwgbV9vcmlnaW5hbFVSTChv
cmlnaW5hbFVSTCkKLSAgICAsIG1fZGVmYXVsdE5hbWVzcGFjZShzdGFyQXRvbSkKKyAgICAsIG1f
ZGVmYXVsdE5hbWVzcGFjZShzdGFyQXRvbSgpKQogICAgICwgbV9pc1VzZXJTdHlsZVNoZWV0KG93
bmVyUnVsZSAmJiBvd25lclJ1bGUtPnBhcmVudFN0eWxlU2hlZXQoKSAmJiBvd25lclJ1bGUtPnBh
cmVudFN0eWxlU2hlZXQoKS0+aXNVc2VyU3R5bGVTaGVldCgpKQogICAgICwgbV9wYXJzZXJDb250
ZXh0KGNvbnRleHQpCiB7CkBAIC0zMTEsNyArMzExLDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBT
dHlsZVNoZWV0Q29udGVudHM6Om5hbWVzcGFjZVVSSUZyb21QcmVmaXgoY29uc3QgQXRvbWljU3Ry
aW4KIHsKICAgICBQcmVmaXhOYW1lc3BhY2VVUklNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9u
YW1lc3BhY2VzLmZpbmQocHJlZml4KTsKICAgICBpZiAoaXQgPT0gbV9uYW1lc3BhY2VzLmVuZCgp
KQotICAgICAgICByZXR1cm4gbnVsbEF0b207CisgICAgICAgIHJldHVybiBudWxsQXRvbSgpOwog
ICAgIHJldHVybiBpdC0+dmFsdWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9tYWtlcHJvcC5wbCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlcHJvcC5wbAppbmRleCA5ZGNl
NDBiMjZmNzNiYzdhNTE2YmZjYzg0YWIwZGYyYzRlYjc3MTQ1Li43YjNjNGY5OTQyZDNmMzUwN2Fi
YTIwOGI3YWIzNGIxMDE2Yjc4NjcwIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFr
ZXByb3AucGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9wLnBsCkBAIC0zMzYsMTAg
KzMzNiwxMCBAQCBzdWIgc29ydEJ5RGVzY2VuZGluZ1ByaW9yaXR5QW5kTmFtZQogY29uc3QgQXRv
bWljU3RyaW5nJiBnZXRQcm9wZXJ0eU5hbWVBdG9taWNTdHJpbmcoQ1NTUHJvcGVydHlJRCBpZCkK
IHsKICAgICBpZiAoaWQgPCBmaXJzdENTU1Byb3BlcnR5KQotICAgICAgICByZXR1cm4gbnVsbEF0
b207CisgICAgICAgIHJldHVybiBudWxsQXRvbSgpOwogICAgIGludCBpbmRleCA9IGlkIC0gZmly
c3RDU1NQcm9wZXJ0eTsKICAgICBpZiAoaW5kZXggPj0gbnVtQ1NTUHJvcGVydGllcykKLSAgICAg
ICAgcmV0dXJuIG51bGxBdG9tOworICAgICAgICByZXR1cm4gbnVsbEF0b20oKTsKIAogICAgIHN0
YXRpYyBBdG9taWNTdHJpbmcqIHByb3BlcnR5U3RyaW5ncyA9IG5ldyBBdG9taWNTdHJpbmdbbnVt
Q1NTUHJvcGVydGllc107IC8vIEludGVudGlvbmFsbHkgbmV2ZXIgZGVzdHJveWVkLgogICAgIEF0
b21pY1N0cmluZyYgcHJvcGVydHlTdHJpbmcgPSBwcm9wZXJ0eVN0cmluZ3NbaW5kZXhdOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHAKaW5kZXggNzU4NGNmODEz
YzIxZjA2YmZkNzcwNWQzYWM4Y2ZiN2M3NWU0ZTNjMS4uMTA2MzEwZGZiY2Q1Y2I4OTg2ZTQ1ZTg5
MjUwYzE2YTJjYmY4NzRjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQYXJzZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNl
ckltcGwuY3BwCkBAIC0yODAsNyArMjgwLDcgQEAgQ1NTU2VsZWN0b3JMaXN0IENTU1BhcnNlcklt
cGw6OnBhcnNlUGFnZVNlbGVjdG9yKENTU1BhcnNlclRva2VuUmFuZ2UgcmFuZ2UsIFN0eWwKIAog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gc2VsZWN0b3I7CiAgICAgaWYg
KCF0eXBlU2VsZWN0b3IuaXNOdWxsKCkgJiYgcHNldWRvLmlzTnVsbCgpKQotICAgICAgICBzZWxl
Y3RvciA9IHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4obmV3IENTU1BhcnNlclNl
bGVjdG9yKFF1YWxpZmllZE5hbWUobnVsbEF0b20sIHR5cGVTZWxlY3Rvciwgc3R5bGVTaGVldC0+
ZGVmYXVsdE5hbWVzcGFjZSgpKSkpOworICAgICAgICBzZWxlY3RvciA9IHN0ZDo6dW5pcXVlX3B0
cjxDU1NQYXJzZXJTZWxlY3Rvcj4obmV3IENTU1BhcnNlclNlbGVjdG9yKFF1YWxpZmllZE5hbWUo
bnVsbEF0b20oKSwgdHlwZVNlbGVjdG9yLCBzdHlsZVNoZWV0LT5kZWZhdWx0TmFtZXNwYWNlKCkp
KSk7CiAgICAgZWxzZSB7CiAgICAgICAgIHNlbGVjdG9yID0gc3RkOjp1bmlxdWVfcHRyPENTU1Bh
cnNlclNlbGVjdG9yPihuZXcgQ1NTUGFyc2VyU2VsZWN0b3IpOwogICAgICAgICBpZiAoIXBzZXVk
by5pc051bGwoKSkgewpAQCAtMjg5LDcgKzI4OSw3IEBAIENTU1NlbGVjdG9yTGlzdCBDU1NQYXJz
ZXJJbXBsOjpwYXJzZVBhZ2VTZWxlY3RvcihDU1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlLCBTdHls
CiAgICAgICAgICAgICAgICAgcmV0dXJuIENTU1NlbGVjdG9yTGlzdCgpOwogICAgICAgICB9CiAg
ICAgICAgIGlmICghdHlwZVNlbGVjdG9yLmlzTnVsbCgpKQotICAgICAgICAgICAgc2VsZWN0b3It
PnByZXBlbmRUYWdTZWxlY3RvcihRdWFsaWZpZWROYW1lKG51bGxBdG9tLCB0eXBlU2VsZWN0b3Is
IHN0eWxlU2hlZXQtPmRlZmF1bHROYW1lc3BhY2UoKSkpOworICAgICAgICAgICAgc2VsZWN0b3It
PnByZXBlbmRUYWdTZWxlY3RvcihRdWFsaWZpZWROYW1lKG51bGxBdG9tKCksIHR5cGVTZWxlY3Rv
ciwgc3R5bGVTaGVldC0+ZGVmYXVsdE5hbWVzcGFjZSgpKSk7CiAgICAgfQogCiAgICAgc2VsZWN0
b3ItPnNldEZvclBhZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTU2VsZWN0b3JQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NTZWxl
Y3RvclBhcnNlci5jcHAKaW5kZXggOTA3MzBjYzY3OWJhYWE1NmQ5ZGY1ZTY1N2IxNjgzZDIzZTMw
MzJlNy4uMTRlMWM5MjU0NWNlMzVlYTI2ZTBkNjM5MDcxOTUyN2IxNjc5ODhkMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NTZWxlY3RvclBhcnNlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NTZWxlY3RvclBhcnNlci5jcHAKQEAgLTMwMiw3
ICszMDIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IENTU1NlbGVjdG9y
UGFyc2VyOjpjb25zdW1lQ29tcG91bmRTZWxlY3RvcihDUwogICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG5hbWVzcGFjZVVSSSA9PSBkZWZhdWx0TmFt
ZXNwYWNlKCkpCi0gICAgICAgICAgICBuYW1lc3BhY2VQcmVmaXggPSBudWxsQXRvbTsKKyAgICAg
ICAgICAgIG5hbWVzcGFjZVByZWZpeCA9IG51bGxBdG9tKCk7CiAgICAgICAgIAogICAgICAgICBD
U1NQYXJzZXJTZWxlY3RvciogcmF3U2VsZWN0b3IgPSBuZXcgQ1NTUGFyc2VyU2VsZWN0b3IoUXVh
bGlmaWVkTmFtZShuYW1lc3BhY2VQcmVmaXgsIGVsZW1lbnROYW1lLCBuYW1lc3BhY2VVUkkpKTsK
ICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPiBzZWxlY3RvciA9IHN0
ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4ocmF3U2VsZWN0b3IpOwpAQCAtMzMzLDE5
ICszMzMsMTkgQEAgc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPiBDU1NTZWxlY3Rv
clBhcnNlcjo6Y29uc3VtZVNpbXBsZVNlbGVjdG9yKENTU1AKIAogYm9vbCBDU1NTZWxlY3RvclBh
cnNlcjo6Y29uc3VtZU5hbWUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIEF0b21pY1N0cmlu
ZyYgbmFtZSwgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VQcmVmaXgpCiB7Ci0gICAgbmFtZSA9IG51
bGxBdG9tOwotICAgIG5hbWVzcGFjZVByZWZpeCA9IG51bGxBdG9tOworICAgIG5hbWUgPSBudWxs
QXRvbSgpOworICAgIG5hbWVzcGFjZVByZWZpeCA9IG51bGxBdG9tKCk7CiAKICAgICBjb25zdCBD
U1NQYXJzZXJUb2tlbiYgZmlyc3RUb2tlbiA9IHJhbmdlLnBlZWsoKTsKICAgICBpZiAoZmlyc3RU
b2tlbi50eXBlKCkgPT0gSWRlbnRUb2tlbikgewogICAgICAgICBuYW1lID0gZmlyc3RUb2tlbi52
YWx1ZSgpLnRvQXRvbWljU3RyaW5nKCk7CiAgICAgICAgIHJhbmdlLmNvbnN1bWUoKTsKICAgICB9
IGVsc2UgaWYgKGZpcnN0VG9rZW4udHlwZSgpID09IERlbGltaXRlclRva2VuICYmIGZpcnN0VG9r
ZW4uZGVsaW1pdGVyKCkgPT0gJyonKSB7Ci0gICAgICAgIG5hbWUgPSBzdGFyQXRvbTsKKyAgICAg
ICAgbmFtZSA9IHN0YXJBdG9tKCk7CiAgICAgICAgIHJhbmdlLmNvbnN1bWUoKTsKICAgICB9IGVs
c2UgaWYgKGZpcnN0VG9rZW4udHlwZSgpID09IERlbGltaXRlclRva2VuICYmIGZpcnN0VG9rZW4u
ZGVsaW1pdGVyKCkgPT0gJ3wnKSB7CiAgICAgICAgIC8vIFRoaXMgaXMgYW4gZW1wdHkgbmFtZXNw
YWNlLCB3aGljaCdsbCBnZXQgYXNzaWduZWQgdGhpcyB2YWx1ZSBiZWxvdwotICAgICAgICBuYW1l
ID0gZW1wdHlBdG9tOworICAgICAgICBuYW1lID0gZW1wdHlBdG9tKCk7CiAgICAgfSBlbHNlCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMzU4LDEwICszNTgsMTAgQEAgYm9vbCBDU1NTZWxl
Y3RvclBhcnNlcjo6Y29uc3VtZU5hbWUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIEF0b21p
Y1N0cmluZyYgbmEKICAgICBpZiAobmFtZVRva2VuLnR5cGUoKSA9PSBJZGVudFRva2VuKSB7CiAg
ICAgICAgIG5hbWUgPSBuYW1lVG9rZW4udmFsdWUoKS50b0F0b21pY1N0cmluZygpOwogICAgIH0g
ZWxzZSBpZiAobmFtZVRva2VuLnR5cGUoKSA9PSBEZWxpbWl0ZXJUb2tlbiAmJiBuYW1lVG9rZW4u
ZGVsaW1pdGVyKCkgPT0gJyonKQotICAgICAgICBuYW1lID0gc3RhckF0b207CisgICAgICAgIG5h
bWUgPSBzdGFyQXRvbSgpOwogICAgIGVsc2UgewotICAgICAgICBuYW1lID0gbnVsbEF0b207Ci0g
ICAgICAgIG5hbWVzcGFjZVByZWZpeCA9IG51bGxBdG9tOworICAgICAgICBuYW1lID0gbnVsbEF0
b20oKTsKKyAgICAgICAgbmFtZXNwYWNlUHJlZml4ID0gbnVsbEF0b20oKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIApAQCAtNDIxLDcgKzQyMSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxD
U1NQYXJzZXJTZWxlY3Rvcj4gQ1NTU2VsZWN0b3JQYXJzZXI6OmNvbnN1bWVBdHRyaWJ1dGUoQ1NT
UGFyc2VyCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgUXVhbGlmaWVkTmFtZSBxdWFs
aWZpZWROYW1lID0gbmFtZXNwYWNlUHJlZml4LmlzTnVsbCgpCi0gICAgICAgID8gUXVhbGlmaWVk
TmFtZShudWxsQXRvbSwgYXR0cmlidXRlTmFtZSwgbnVsbEF0b20pCisgICAgICAgID8gUXVhbGlm
aWVkTmFtZShudWxsQXRvbSgpLCBhdHRyaWJ1dGVOYW1lLCBudWxsQXRvbSgpKQogICAgICAgICA6
IFF1YWxpZmllZE5hbWUobmFtZXNwYWNlUHJlZml4LCBhdHRyaWJ1dGVOYW1lLCBuYW1lc3BhY2VV
UkkpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPiBzZWxlY3RvciA9
IHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4obmV3IENTU1BhcnNlclNlbGVjdG9y
KCkpOwpAQCAtODAzLDcgKzgwMyw3IEBAIGJvb2wgQ1NTU2VsZWN0b3JQYXJzZXI6OmNvbnN1bWVB
TlBsdXNCKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBzdGQ6OnBhaXI8aW50CiBjb25zdCBB
dG9taWNTdHJpbmcmIENTU1NlbGVjdG9yUGFyc2VyOjpkZWZhdWx0TmFtZXNwYWNlKCkgY29uc3QK
IHsKICAgICBpZiAoIW1fc3R5bGVTaGVldCkKLSAgICAgICAgcmV0dXJuIHN0YXJBdG9tOworICAg
ICAgICByZXR1cm4gc3RhckF0b20oKTsKICAgICByZXR1cm4gbV9zdHlsZVNoZWV0LT5kZWZhdWx0
TmFtZXNwYWNlKCk7CiB9CiAKQEAgLTgxMiwxMSArODEyLDExIEBAIGNvbnN0IEF0b21pY1N0cmlu
ZyYgQ1NTU2VsZWN0b3JQYXJzZXI6OmRldGVybWluZU5hbWVzcGFjZShjb25zdCBBdG9taWNTdHJp
bmcmIHByCiAgICAgaWYgKHByZWZpeC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGRlZmF1bHRO
YW1lc3BhY2UoKTsKICAgICBpZiAocHJlZml4LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGVt
cHR5QXRvbTsgLy8gTm8gbmFtZXNwYWNlLiBJZiBhbiBlbGVtZW50L2F0dHJpYnV0ZSBoYXMgYSBu
YW1lc3BhY2UsIHdlIHdvbid0IG1hdGNoIGl0LgotICAgIGlmIChwcmVmaXggPT0gc3RhckF0b20p
Ci0gICAgICAgIHJldHVybiBzdGFyQXRvbTsgLy8gV2UnbGwgbWF0Y2ggYW55IG5hbWVzcGFjZS4K
KyAgICAgICAgcmV0dXJuIGVtcHR5QXRvbSgpOyAvLyBObyBuYW1lc3BhY2UuIElmIGFuIGVsZW1l
bnQvYXR0cmlidXRlIGhhcyBhIG5hbWVzcGFjZSwgd2Ugd29uJ3QgbWF0Y2ggaXQuCisgICAgaWYg
KHByZWZpeCA9PSBzdGFyQXRvbSgpKQorICAgICAgICByZXR1cm4gc3RhckF0b20oKTsgLy8gV2Un
bGwgbWF0Y2ggYW55IG5hbWVzcGFjZS4KICAgICBpZiAoIW1fc3R5bGVTaGVldCkKLSAgICAgICAg
cmV0dXJuIG51bGxBdG9tOyAvLyBDYW5ub3QgcmVzb2x2ZSBwcmVmaXggdG8gbmFtZXNwYWNlIHdp
dGhvdXQgYSBzdHlsZXNoZWV0LCBzeW50YXggZXJyb3IuCisgICAgICAgIHJldHVybiBudWxsQXRv
bSgpOyAvLyBDYW5ub3QgcmVzb2x2ZSBwcmVmaXggdG8gbmFtZXNwYWNlIHdpdGhvdXQgYSBzdHls
ZXNoZWV0LCBzeW50YXggZXJyb3IuCiAgICAgcmV0dXJuIG1fc3R5bGVTaGVldC0+bmFtZXNwYWNl
VVJJRnJvbVByZWZpeChwcmVmaXgpOwogfQogCkBAIC04MjQsMTAgKzgyNCwxMCBAQCB2b2lkIENT
U1NlbGVjdG9yUGFyc2VyOjpwcmVwZW5kVHlwZVNlbGVjdG9ySWZOZWVkZWQoY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lc3BhYwogewogICAgIGJvb2wgaXNTaGFkb3dET00gPSBjb21wb3VuZFNlbGVj
dG9yLT5uZWVkc0ltcGxpY2l0U2hhZG93Q29tYmluYXRvckZvck1hdGNoaW5nKCk7CiAgICAgCi0g
ICAgaWYgKGVsZW1lbnROYW1lLmlzTnVsbCgpICYmIGRlZmF1bHROYW1lc3BhY2UoKSA9PSBzdGFy
QXRvbSAmJiAhaXNTaGFkb3dET00pCisgICAgaWYgKGVsZW1lbnROYW1lLmlzTnVsbCgpICYmIGRl
ZmF1bHROYW1lc3BhY2UoKSA9PSBzdGFyQXRvbSgpICYmICFpc1NoYWRvd0RPTSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgQXRvbWljU3RyaW5nIGRldGVybWluZWRFbGVtZW50TmFtZSA9IGVsZW1l
bnROYW1lLmlzTnVsbCgpID8gc3RhckF0b20gOiBlbGVtZW50TmFtZTsKKyAgICBBdG9taWNTdHJp
bmcgZGV0ZXJtaW5lZEVsZW1lbnROYW1lID0gZWxlbWVudE5hbWUuaXNOdWxsKCkgPyBzdGFyQXRv
bSgpIDogZWxlbWVudE5hbWU7CiAgICAgQXRvbWljU3RyaW5nIG5hbWVzcGFjZVVSSSA9IGRldGVy
bWluZU5hbWVzcGFjZShuYW1lc3BhY2VQcmVmaXgpOwogICAgIGlmIChuYW1lc3BhY2VVUkkuaXNO
dWxsKCkpIHsKICAgICAgICAgbV9mYWlsZWRQYXJzaW5nID0gdHJ1ZTsKQEAgLTgzNSw3ICs4MzUs
NyBAQCB2b2lkIENTU1NlbGVjdG9yUGFyc2VyOjpwcmVwZW5kVHlwZVNlbGVjdG9ySWZOZWVkZWQo
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhYwogICAgIH0KICAgICBBdG9taWNTdHJpbmcgZGV0
ZXJtaW5lZFByZWZpeCA9IG5hbWVzcGFjZVByZWZpeDsKICAgICBpZiAobmFtZXNwYWNlVVJJID09
IGRlZmF1bHROYW1lc3BhY2UoKSkKLSAgICAgICAgZGV0ZXJtaW5lZFByZWZpeCA9IG51bGxBdG9t
OworICAgICAgICBkZXRlcm1pbmVkUHJlZml4ID0gbnVsbEF0b20oKTsKICAgICBRdWFsaWZpZWRO
YW1lIHRhZyA9IFF1YWxpZmllZE5hbWUoZGV0ZXJtaW5lZFByZWZpeCwgZGV0ZXJtaW5lZEVsZW1l
bnROYW1lLCBuYW1lc3BhY2VVUkkpOwogCiAgICAgLy8gKjpob3N0IG5ldmVyIG1hdGNoZXMsIHNv
IHdlIGNhbid0IGRpc2NhcmQgdGhlICosCkBAIC04NDgsNyArODQ4LDcgQEAgdm9pZCBDU1NTZWxl
Y3RvclBhcnNlcjo6cHJlcGVuZFR5cGVTZWxlY3RvcklmTmVlZGVkKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZXNwYWMKICAgICAvLyB0aGUgcHNldWRvIGVsZW1lbnQuCiAgICAgYm9vbCBleHBsaWNp
dEZvckhvc3QgPSBjb21wb3VuZFNlbGVjdG9yLT5pc0hvc3RQc2V1ZG9TZWxlY3RvcigpICYmICFl
bGVtZW50TmFtZS5pc051bGwoKTsKICAgICBpZiAodGFnICE9IGFueVFOYW1lKCkgfHwgZXhwbGlj
aXRGb3JIb3N0IHx8IGlzU2hhZG93RE9NKQotICAgICAgICBjb21wb3VuZFNlbGVjdG9yLT5wcmVw
ZW5kVGFnU2VsZWN0b3IodGFnLCBkZXRlcm1pbmVkUHJlZml4ID09IG51bGxBdG9tICYmIGRldGVy
bWluZWRFbGVtZW50TmFtZSA9PSBzdGFyQXRvbSAmJiAhZXhwbGljaXRGb3JIb3N0KTsKKyAgICAg
ICAgY29tcG91bmRTZWxlY3Rvci0+cHJlcGVuZFRhZ1NlbGVjdG9yKHRhZywgZGV0ZXJtaW5lZFBy
ZWZpeCA9PSBudWxsQXRvbSgpICYmIGRldGVybWluZWRFbGVtZW50TmFtZSA9PSBzdGFyQXRvbSgp
ICYmICFleHBsaWNpdEZvckhvc3QpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2Vs
ZWN0b3I+IENTU1NlbGVjdG9yUGFyc2VyOjphZGRTaW1wbGVTZWxlY3RvclRvQ29tcG91bmQoc3Rk
Ojp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPiBjb21wb3VuZFNlbGVjdG9yLCBzdGQ6OnVu
aXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IHNpbXBsZVNlbGVjdG9yKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwCmluZGV4IDZkNTg0NmE2Yjk1MGMxZjVhMGQ4
NWMwZDI2YWFiOTQ1Y2QyMTQyMzcuLjM2ZmVhMjljMDdlMWY2ZWFmM2M5YTJjOGM5YjY2NzZiZjI1
M2NhYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzc2ppdC9TZWxlY3RvckNvbXBpbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3NqaXQvU2VsZWN0b3JDb21waWxlci5jcHAKQEAg
LTEwNDYsNyArMTA0Niw3IEBAIHN0YXRpYyBGdW5jdGlvblR5cGUgY29uc3RydWN0RnJhZ21lbnRz
KGNvbnN0IENTU1NlbGVjdG9yKiByb290U2VsZWN0b3IsIFNlbGVjdG9yCiAKIHN0YXRpYyBpbmxp
bmUgYm9vbCBhdHRyaWJ1dGVOYW1lVGVzdGluZ1JlcXVpcmVzTmFtZXNwYWNlUmVnaXN0ZXIoY29u
c3QgQ1NTU2VsZWN0b3ImIGF0dHJpYnV0ZVNlbGVjdG9yKQogewotICAgIHJldHVybiBhdHRyaWJ1
dGVTZWxlY3Rvci5hdHRyaWJ1dGUoKS5wcmVmaXgoKSAhPSBzdGFyQXRvbSAmJiAhYXR0cmlidXRl
U2VsZWN0b3IuYXR0cmlidXRlKCkubmFtZXNwYWNlVVJJKCkuaXNOdWxsKCk7CisgICAgcmV0dXJu
IGF0dHJpYnV0ZVNlbGVjdG9yLmF0dHJpYnV0ZSgpLnByZWZpeCgpICE9IHN0YXJBdG9tKCkgJiYg
IWF0dHJpYnV0ZVNlbGVjdG9yLmF0dHJpYnV0ZSgpLm5hbWVzcGFjZVVSSSgpLmlzTnVsbCgpOwog
fQogCiBzdGF0aWMgaW5saW5lIGJvb2wgYXR0cmlidXRlVmFsdWVUZXN0aW5nUmVxdWlyZXNFeHRy
YVJlZ2lzdGVyKGNvbnN0IEF0dHJpYnV0ZU1hdGNoaW5nSW5mbyYgYXR0cmlidXRlSW5mbykKQEAg
LTEzODYsNyArMTM4Niw3IEBAIHN0YXRpYyBpbmxpbmUgVGFnTmFtZUVxdWFsaXR5IGVxdWFsVGFn
TmFtZXMoY29uc3QgQ1NTU2VsZWN0b3IqIGxocywgY29uc3QgQ1NTU2VsCiAKICAgICBjb25zdCBB
dG9taWNTdHJpbmcmIGxoc0xvY2FsTmFtZSA9IGxoc1F1YWxpZmllZE5hbWUubG9jYWxOYW1lKCk7
CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiByaHNMb2NhbE5hbWUgPSByaHNRdWFsaWZpZWROYW1l
LmxvY2FsTmFtZSgpOwotICAgIGlmIChsaHNMb2NhbE5hbWUgIT0gc3RhckF0b20gJiYgcmhzTG9j
YWxOYW1lICE9IHN0YXJBdG9tKSB7CisgICAgaWYgKGxoc0xvY2FsTmFtZSAhPSBzdGFyQXRvbSgp
ICYmIHJoc0xvY2FsTmFtZSAhPSBzdGFyQXRvbSgpKSB7CiAgICAgICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgbGhzTG93ZXJjYXNlTG9jYWxOYW1lID0gbGhzLT50YWdMb3dlcmNhc2VMb2NhbE5hbWUo
KTsKICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiByaHNMb3dlcmNhc2VMb2NhbE5hbWUgPSBy
aHMtPnRhZ0xvd2VyY2FzZUxvY2FsTmFtZSgpOwogCkBAIC0xNDAwLDcgKzE0MDAsNyBAQCBzdGF0
aWMgaW5saW5lIFRhZ05hbWVFcXVhbGl0eSBlcXVhbFRhZ05hbWVzKGNvbnN0IENTU1NlbGVjdG9y
KiBsaHMsIGNvbnN0IENTU1NlbAogCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBsaHNOYW1lc3Bh
Y2VVUkkgPSBsaHNRdWFsaWZpZWROYW1lLm5hbWVzcGFjZVVSSSgpOwogICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgcmhzTmFtZXNwYWNlVVJJID0gcmhzUXVhbGlmaWVkTmFtZS5uYW1lc3BhY2VVUkko
KTsKLSAgICBpZiAobGhzTmFtZXNwYWNlVVJJICE9IHN0YXJBdG9tICYmIHJoc05hbWVzcGFjZVVS
SSAhPSBzdGFyQXRvbSkgeworICAgIGlmIChsaHNOYW1lc3BhY2VVUkkgIT0gc3RhckF0b20oKSAm
JiByaHNOYW1lc3BhY2VVUkkgIT0gc3RhckF0b20oKSkgewogICAgICAgICBpZiAobGhzTmFtZXNw
YWNlVVJJICE9IHJoc05hbWVzcGFjZVVSSSkKICAgICAgICAgICAgIHJldHVybiBUYWdOYW1lRXF1
YWxpdHk6OlN0cmljdGx5Tm90RXF1YWw7CiAgICAgICAgIHJldHVybiBUYWdOYW1lRXF1YWxpdHk6
OlN0cmljdGx5RXF1YWw7CkBAIC0yODAwLDcgKzI4MDAsNyBAQCB2b2lkIFNlbGVjdG9yQ29kZUdl
bmVyYXRvcjo6Z2VuZXJhdGVFbGVtZW50QXR0cmlidXRlTWF0Y2hpbmcoQXNzZW1ibGVyOjpKdW1w
TGlzdAogICAgICAgICBMb2NhbFJlZ2lzdGVyIHF1YWxpZmllZE5hbWVJbXBsKG1fcmVnaXN0ZXJB
bGxvY2F0b3IpOwogICAgICAgICBtX2Fzc2VtYmxlci5sb2FkUHRyKEFzc2VtYmxlcjo6QWRkcmVz
cyhjdXJyZW50QXR0cmlidXRlQWRkcmVzcywgQXR0cmlidXRlOjpuYW1lTWVtb3J5T2Zmc2V0KCkp
LCBxdWFsaWZpZWROYW1lSW1wbCk7CiAKLSAgICAgICAgYm9vbCBzaG91bGRDaGVja05hbWVzcGFj
ZSA9IGF0dHJpYnV0ZVNlbGVjdG9yLmF0dHJpYnV0ZSgpLnByZWZpeCgpICE9IHN0YXJBdG9tOwor
ICAgICAgICBib29sIHNob3VsZENoZWNrTmFtZXNwYWNlID0gYXR0cmlidXRlU2VsZWN0b3IuYXR0
cmlidXRlKCkucHJlZml4KCkgIT0gc3RhckF0b20oKTsKICAgICAgICAgaWYgKHNob3VsZENoZWNr
TmFtZXNwYWNlKSB7CiAgICAgICAgICAgICBBc3NlbWJsZXI6Okp1bXAgbmFtZURvZXNOb3RNYXRj
aCA9IG1fYXNzZW1ibGVyLmJyYW5jaFB0cihBc3NlbWJsZXI6Ok5vdEVxdWFsLCBBc3NlbWJsZXI6
OkFkZHJlc3MocXVhbGlmaWVkTmFtZUltcGwsIFF1YWxpZmllZE5hbWU6OlF1YWxpZmllZE5hbWVJ
bXBsOjpsb2NhbE5hbWVNZW1vcnlPZmZzZXQoKSksIGxvY2FsTmFtZVRvTWF0Y2gpOwogCkBAIC0z
MzkxLDcgKzMzOTEsNyBAQCBpbmxpbmUgdm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVy
YXRlRWxlbWVudEhhc1RhZ05hbWUoQXNzZW1ibGVyOjpKdW1wTGlzdAogICAgIG1fYXNzZW1ibGVy
LmxvYWRQdHIoQXNzZW1ibGVyOjpBZGRyZXNzKGVsZW1lbnRBZGRyZXNzUmVnaXN0ZXIsIEVsZW1l
bnQ6OnRhZ1FOYW1lTWVtb3J5T2Zmc2V0KCkgKyBRdWFsaWZpZWROYW1lOjppbXBsTWVtb3J5T2Zm
c2V0KCkpLCBxdWFsaWZpZWROYW1lSW1wbCk7CiAKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHNl
bGVjdG9yTG9jYWxOYW1lID0gbmFtZVRvTWF0Y2gubG9jYWxOYW1lKCk7Ci0gICAgaWYgKHNlbGVj
dG9yTG9jYWxOYW1lICE9IHN0YXJBdG9tKSB7CisgICAgaWYgKHNlbGVjdG9yTG9jYWxOYW1lICE9
IHN0YXJBdG9tKCkpIHsKICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBsb3dlcmNhc2VMb2Nh
bE5hbWUgPSB0YWdNYXRjaGluZ1NlbGVjdG9yLnRhZ0xvd2VyY2FzZUxvY2FsTmFtZSgpOwogCiAg
ICAgICAgIGlmIChzZWxlY3RvckxvY2FsTmFtZSA9PSBsb3dlcmNhc2VMb2NhbE5hbWUpIHsKQEAg
LTM0MjEsNyArMzQyMSw3IEBAIGlubGluZSB2b2lkIFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2Vu
ZXJhdGVFbGVtZW50SGFzVGFnTmFtZShBc3NlbWJsZXI6Okp1bXBMaXN0CiAgICAgfQogCiAgICAg
Y29uc3QgQXRvbWljU3RyaW5nJiBzZWxlY3Rvck5hbWVzcGFjZVVSSSA9IG5hbWVUb01hdGNoLm5h
bWVzcGFjZVVSSSgpOwotICAgIGlmIChzZWxlY3Rvck5hbWVzcGFjZVVSSSAhPSBzdGFyQXRvbSkg
eworICAgIGlmIChzZWxlY3Rvck5hbWVzcGFjZVVSSSAhPSBzdGFyQXRvbSgpKSB7CiAgICAgICAg
IC8vIEdlbmVyYXRlIG5hbWVzcGFjZVVSSSA9PSBlbGVtZW50LT5uYW1lc3BhY2VVUkkoKS4KICAg
ICAgICAgTG9jYWxSZWdpc3RlciBjb25zdGFudFJlZ2lzdGVyKG1fcmVnaXN0ZXJBbGxvY2F0b3Ip
OwogICAgICAgICBtX2Fzc2VtYmxlci5tb3ZlKEFzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihzZWxl
Y3Rvck5hbWVzcGFjZVVSSS5pbXBsKCkpLCBjb25zdGFudFJlZ2lzdGVyKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmNw
cAppbmRleCBkNDU4YzE2MTJkMDQ5YzYyNWUzOTcwNjRiNzhkNTgyYWRmMzU4NzYyLi43MzI5ODQy
MjU1MjY2NGExZDlhOGZhOTA2ZDJiYmFjNDJmZjJlNjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vQXR0ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuY3BwCkBAIC03
NCwxMCArNzQsMTAgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQXR0cjo6c2V0UHJlZml4KGNvbnN0IEF0
b21pY1N0cmluZyYgcHJlZml4KQogICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAg
ICAgIHJldHVybiByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwogCi0gICAgaWYgKChwcmVmaXgg
PT0geG1sbnNBdG9tICYmIG5hbWVzcGFjZVVSSSgpICE9IFhNTE5TTmFtZXM6OnhtbG5zTmFtZXNw
YWNlVVJJKSB8fCBxdWFsaWZpZWROYW1lKCkgPT0geG1sbnNBdG9tKQorICAgIGlmICgocHJlZml4
ID09IHhtbG5zQXRvbSgpICYmIG5hbWVzcGFjZVVSSSgpICE9IFhNTE5TTmFtZXM6OnhtbG5zTmFt
ZXNwYWNlVVJJKSB8fCBxdWFsaWZpZWROYW1lKCkgPT0geG1sbnNBdG9tKCkpCiAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBOQU1FU1BBQ0VfRVJSIH07CiAKLSAgICBjb25zdCBBdG9taWNTdHJp
bmcmIG5ld1ByZWZpeCA9IHByZWZpeC5pc0VtcHR5KCkgPyBudWxsQXRvbSA6IHByZWZpeDsKKyAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ByZWZpeCA9IHByZWZpeC5pc0VtcHR5KCkgPyBudWxs
QXRvbSgpIDogcHJlZml4OwogICAgIGlmIChtX2VsZW1lbnQpCiAgICAgICAgIGVsZW1lbnRBdHRy
aWJ1dGUoKS5zZXRQcmVmaXgobmV3UHJlZml4KTsKICAgICBtX25hbWUuc2V0UHJlZml4KG5ld1By
ZWZpeCk7CkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBBdHRyOjphdHRhY2hUb0VsZW1lbnQoRWxl
bWVudCYgZWxlbWVudCkKIHsKICAgICBBU1NFUlQoIW1fZWxlbWVudCk7CiAgICAgbV9lbGVtZW50
ID0gJmVsZW1lbnQ7Ci0gICAgbV9zdGFuZGFsb25lVmFsdWUgPSBudWxsQXRvbTsKKyAgICBtX3N0
YW5kYWxvbmVWYWx1ZSA9IG51bGxBdG9tKCk7CiAgICAgc2V0VHJlZVNjb3BlUmVjdXJzaXZlbHko
ZWxlbWVudC50cmVlU2NvcGUoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9BdHRyaWJ1dGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyaWJ1dGUuaAppbmRleCA3MmRi
ZWQ2OWU2ODRjZDY5ODQzODYyNmVjMTcyMDM4MTliYmU5ZDNlLi40NTZjMjg2ZjJhMWJjYmIwZWMy
ZDg3OGRjYjE5OGFmZTZjYWJkYzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0
cmlidXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0F0dHJpYnV0ZS5oCkBAIC03OCw3ICs3
OCw3IEBAIGlubGluZSBib29sIEF0dHJpYnV0ZTo6bmFtZU1hdGNoZXNGaWx0ZXIoY29uc3QgUXVh
bGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljCiB7CiAgICAgaWYgKGZpbHRlckxvY2FsTmFt
ZSAhPSBuYW1lLmxvY2FsTmFtZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJu
IGZpbHRlclByZWZpeCA9PSBzdGFyQXRvbSB8fCBmaWx0ZXJOYW1lc3BhY2VVUkkgPT0gbmFtZS5u
YW1lc3BhY2VVUkkoKTsKKyAgICByZXR1cm4gZmlsdGVyUHJlZml4ID09IHN0YXJBdG9tKCkgfHwg
ZmlsdGVyTmFtZXNwYWNlVVJJID09IG5hbWUubmFtZXNwYWNlVVJJKCk7CiB9CiAKIGlubGluZSBi
b29sIEF0dHJpYnV0ZTo6bWF0Y2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCwgY29uc3Qg
QXRvbWljU3RyaW5nJiBsb2NhbE5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJ
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnN0YW50UHJvcGVydHlN
YXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnN0YW50UHJvcGVydHlNYXAuY3BwCmluZGV4
IDk1OTUzNTFlMWM1ODZlNjA2OGEzZjQxNDc5ZTU5N2UyYjY0OTdlZWMuLjQxZmVlNzc0MzA3MTk3
NWYwMWY4MTM4MGY3ZGIzZjQxNWI4ODgxYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Db25zdGFudFByb3BlcnR5TWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29uc3Rh
bnRQcm9wZXJ0eU1hcC5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBD
b25zdGFudFByb3BlcnR5TWFwOjpuYW1lRm9yUHJvcGVydHkoQ29uc3RhbnRQcm9wZXJ0eSBwcm9w
ZXIKICAgICAgICAgcmV0dXJuIHNhZmVBcmVhSW5zZXRMZWZ0TmFtZTsKICAgICB9CiAKLSAgICBy
ZXR1cm4gbnVsbEF0b207CisgICAgcmV0dXJuIG51bGxBdG9tKCk7CiB9CiAKIHZvaWQgQ29uc3Rh
bnRQcm9wZXJ0eU1hcDo6c2V0VmFsdWVGb3JQcm9wZXJ0eShDb25zdGFudFByb3BlcnR5IHByb3Bl
cnR5LCBSZWY8Q1NTVmFyaWFibGVEYXRhPiYmIGRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVy
Tm9kZS5jcHAKaW5kZXggYjZjNTQ4MzI0MDg1NDk0NDM2NzI2MTM1OGM4N2M5ZjhlZmE0NTU4OC4u
ZmQ4MTY4M2IxMzk4NDU2NTY2ODI3NDMwYWU1ODViZjYzNmZmZGY5NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Db250YWluZXJOb2RlLmNwcApAQCAtODk3LDcgKzg5Nyw3IEBAIFJlZjxIVE1MQ29sbGVjdGlv
bj4gQ29udGFpbmVyTm9kZTo6Z2V0RWxlbWVudHNCeVRhZ05hbWUoY29uc3QgQXRvbWljU3RyaW5n
JiBxdWFsCiB7CiAgICAgQVNTRVJUKCFxdWFsaWZpZWROYW1lLmlzTnVsbCgpKTsKIAotICAgIGlm
IChxdWFsaWZpZWROYW1lID09IHN0YXJBdG9tKQorICAgIGlmIChxdWFsaWZpZWROYW1lID09IHN0
YXJBdG9tKCkpCiAgICAgICAgIHJldHVybiBlbnN1cmVSYXJlRGF0YSgpLmVuc3VyZU5vZGVMaXN0
cygpLmFkZENhY2hlZENvbGxlY3Rpb248QWxsRGVzY2VuZGFudHNDb2xsZWN0aW9uPigqdGhpcywg
QWxsRGVzY2VuZGFudHMpOwogCiAgICAgaWYgKGRvY3VtZW50KCkuaXNIVE1MRG9jdW1lbnQoKSkK
QEAgLTkwOCw3ICs5MDgsNyBAQCBSZWY8SFRNTENvbGxlY3Rpb24+IENvbnRhaW5lck5vZGU6Omdl
dEVsZW1lbnRzQnlUYWdOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgcXVhbAogUmVmPEhUTUxDb2xs
ZWN0aW9uPiBDb250YWluZXJOb2RlOjpnZXRFbGVtZW50c0J5VGFnTmFtZU5TKGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSkKIHsK
ICAgICBBU1NFUlQoIWxvY2FsTmFtZS5pc051bGwoKSk7Ci0gICAgcmV0dXJuIGVuc3VyZVJhcmVE
YXRhKCkuZW5zdXJlTm9kZUxpc3RzKCkuYWRkQ2FjaGVkVGFnQ29sbGVjdGlvbk5TKCp0aGlzLCBu
YW1lc3BhY2VVUkkuaXNFbXB0eSgpID8gbnVsbEF0b20gOiBuYW1lc3BhY2VVUkksIGxvY2FsTmFt
ZSk7CisgICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRhKCkuZW5zdXJlTm9kZUxpc3RzKCkuYWRkQ2Fj
aGVkVGFnQ29sbGVjdGlvbk5TKCp0aGlzLCBuYW1lc3BhY2VVUkkuaXNFbXB0eSgpID8gbnVsbEF0
b20oKSA6IG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKTsKIH0KIAogUmVmPE5vZGVMaXN0PiBDb250
YWluZXJOb2RlOjpnZXRFbGVtZW50c0J5TmFtZShjb25zdCBTdHJpbmcmIGVsZW1lbnROYW1lKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5jcHAK
aW5kZXggYTdkYWI5N2FkNTBjNTAzNDE5YTk0MDYyNTJmYjkxNjkzYmZmZGUxYy4uZWI0NjQ2YmEw
ODUwN2Y4ZTZjMzdjN2Q4NzgwNmY4YWQ0MmM1ZTMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0N1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuY3BwCkBAIC0xODcsNyArMTg3LDcgQEAg
dm9pZCBDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZTo6ZW5xdWV1ZVBvc3RVcGdyYWRlUmVhY3Rp
b25zKEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgaWYgKGVsZW1lbnQuaGFzQXR0cmlidXRlcygpKSB7
CiAgICAgICAgIGZvciAoYXV0byYgYXR0cmlidXRlIDogZWxlbWVudC5hdHRyaWJ1dGVzSXRlcmF0
b3IoKSkgewogICAgICAgICAgICAgaWYgKHF1ZXVlLT5tX2ludGVyZmFjZS0+b2JzZXJ2ZXNBdHRy
aWJ1dGUoYXR0cmlidXRlLmxvY2FsTmFtZSgpKSkKLSAgICAgICAgICAgICAgICBxdWV1ZS0+bV9p
dGVtcy5hcHBlbmQoe2F0dHJpYnV0ZS5uYW1lKCksIG51bGxBdG9tLCBhdHRyaWJ1dGUudmFsdWUo
KX0pOworICAgICAgICAgICAgICAgIHF1ZXVlLT5tX2l0ZW1zLmFwcGVuZCh7YXR0cmlidXRlLm5h
bWUoKSwgbnVsbEF0b20oKSwgYXR0cmlidXRlLnZhbHVlKCl9KTsKICAgICAgICAgfQogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFzZXRET01TdHJpbmdNYXAuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFzZXRET01TdHJpbmdNYXAuY3BwCmluZGV4IDhmYzFm
OWM0OThhOWEyZjY4ODUzYTM5ZDlkN2VjNmFjNzliNmUzNzIuLjYxZDIwNDgyODVhM2NlOGYzMjJk
MTVkYjBkZDQ5NWI4ZjFmYjcyNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRh
c2V0RE9NU3RyaW5nTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YXNldERPTVN0
cmluZ01hcC5jcHAKQEAgLTEzMyw3ICsxMzMsNyBAQCBzdGF0aWMgaW5saW5lIEF0b21pY1N0cmlu
ZyBjb252ZXJ0UHJvcGVydHlOYW1lVG9BdHRyaWJ1dGVOYW1lKGNvbnN0IFN0cmluZ0ltcGwmCiBz
dGF0aWMgQXRvbWljU3RyaW5nIGNvbnZlcnRQcm9wZXJ0eU5hbWVUb0F0dHJpYnV0ZU5hbWUoY29u
c3QgU3RyaW5nJiBuYW1lKQogewogICAgIGlmIChuYW1lLmlzTnVsbCgpKQotICAgICAgICByZXR1
cm4gbnVsbEF0b207CisgICAgICAgIHJldHVybiBudWxsQXRvbSgpOwogCiAgICAgU3RyaW5nSW1w
bCogbmFtZUltcGwgPSBuYW1lLmltcGwoKTsKICAgICBpZiAobmFtZUltcGwtPmlzOEJpdCgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZWVmYmUzNWQwZmVkMDk1YzFlYWFlNWZjMzBhYjU1
MjJkNDQ5MDM1YS4uYWFiOGMzNDhjNjc2ZjMzOTk4ZGE1MDk0Njg0NGFlNzBiMTRjOGY1NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC04NTQsNyArODU0LDcgQEAgc3RhdGljIEFMV0FZU19J
TkxJTkUgUmVmPEhUTUxFbGVtZW50PiBjcmVhdGVVcGdyYWRlQ2FuZGlkYXRlRWxlbWVudChEb2N1
bWVudCYgZG8KIAogc3RhdGljIEFMV0FZU19JTkxJTkUgUmVmPEhUTUxFbGVtZW50PiBjcmVhdGVV
cGdyYWRlQ2FuZGlkYXRlRWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IEF0b21pY1N0
cmluZyYgbG9jYWxOYW1lKQogewotICAgIHJldHVybiBjcmVhdGVVcGdyYWRlQ2FuZGlkYXRlRWxl
bWVudChkb2N1bWVudCwgUXVhbGlmaWVkTmFtZSB7IG51bGxBdG9tLCBsb2NhbE5hbWUsIHhodG1s
TmFtZXNwYWNlVVJJIH0pOworICAgIHJldHVybiBjcmVhdGVVcGdyYWRlQ2FuZGlkYXRlRWxlbWVu
dChkb2N1bWVudCwgUXVhbGlmaWVkTmFtZSB7IG51bGxBdG9tKCksIGxvY2FsTmFtZSwgeGh0bWxO
YW1lc3BhY2VVUkkgfSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1ZhbGlkSFRNTEVsZW1l
bnROYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lKQpAQCAtODk5LDcgKzg5OSw3IEBA
IEV4Y2VwdGlvbk9yPFJlZjxFbGVtZW50Pj4gRG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnRGb3JCaW5k
aW5ncyhjb25zdCBBdG9taWNTdHJpbmcmCiAgICAgaWYgKCFpc1ZhbGlkTmFtZShuYW1lKSkKICAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElOVkFMSURfQ0hBUkFDVEVSX0VSUiB9OwogCi0gICAg
cmV0dXJuIGNyZWF0ZUVsZW1lbnQoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgbmFtZSwgbnVsbEF0
b20pLCBmYWxzZSk7CisgICAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQoUXVhbGlmaWVkTmFtZShudWxs
QXRvbSgpLCBuYW1lLCBudWxsQXRvbSgpKSwgZmFsc2UpOwogfQogCiBSZWY8RG9jdW1lbnRGcmFn
bWVudD4gRG9jdW1lbnQ6OmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKQpAQCAtOTYyLDcgKzk2Miw3
IEBAIEV4Y2VwdGlvbk9yPFJlZjxOb2RlPj4gRG9jdW1lbnQ6OmltcG9ydE5vZGUoTm9kZSYgbm9k
ZVRvSW1wb3J0LCBib29sIGRlZXApCiAKICAgICBjYXNlIEFUVFJJQlVURV9OT0RFOgogICAgICAg
ICAvLyBGSVhNRTogVGhpcyB3aWxsICJBdHRyOjpub3JtYWxpemUiIGNoaWxkIG5vZGVzIG9mIEF0
dHIuCi0gICAgICAgIHJldHVybiBSZWY8Tm9kZT4geyBBdHRyOjpjcmVhdGUoKnRoaXMsIFF1YWxp
ZmllZE5hbWUobnVsbEF0b20sIGRvd25jYXN0PEF0dHI+KG5vZGVUb0ltcG9ydCkubmFtZSgpLCBu
dWxsQXRvbSksIGRvd25jYXN0PEF0dHI+KG5vZGVUb0ltcG9ydCkudmFsdWUoKSkgfTsKKyAgICAg
ICAgcmV0dXJuIFJlZjxOb2RlPiB7IEF0dHI6OmNyZWF0ZSgqdGhpcywgUXVhbGlmaWVkTmFtZShu
dWxsQXRvbSgpLCBkb3duY2FzdDxBdHRyPihub2RlVG9JbXBvcnQpLm5hbWUoKSwgbnVsbEF0b20o
KSksIGRvd25jYXN0PEF0dHI+KG5vZGVUb0ltcG9ydCkudmFsdWUoKSkgfTsKIAogICAgIGNhc2Ug
RE9DVU1FTlRfTk9ERTogLy8gQ2FuJ3QgaW1wb3J0IGEgZG9jdW1lbnQgaW50byBhbm90aGVyIGRv
Y3VtZW50LgogICAgIGNhc2UgRE9DVU1FTlRfVFlQRV9OT0RFOiAvLyBGSVhNRTogU3VwcG9ydCBj
bG9uaW5nIGEgRG9jdW1lbnRUeXBlIG5vZGUgcGVyIERPTTQuCkBAIC0xMDE3LDEzICsxMDE3LDEz
IEBAIGJvb2wgRG9jdW1lbnQ6Omhhc1ZhbGlkTmFtZXNwYWNlRm9yRWxlbWVudHMoY29uc3QgUXVh
bGlmaWVkTmFtZSYgcU5hbWUpCiAgICAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIvRE9NLUxldmVs
LTItQ29yZS9jb3JlLmh0bWwjSUQtRG9jQ3JFbE5TCiAgICAgaWYgKCFxTmFtZS5wcmVmaXgoKS5p
c0VtcHR5KCkgJiYgcU5hbWUubmFtZXNwYWNlVVJJKCkuaXNOdWxsKCkpIC8vIGNyZWF0ZUVsZW1l
bnROUyhudWxsLCAiaHRtbDpkaXYiKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKHFO
YW1lLnByZWZpeCgpID09IHhtbEF0b20gJiYgcU5hbWUubmFtZXNwYWNlVVJJKCkgIT0gWE1MTmFt
ZXM6OnhtbE5hbWVzcGFjZVVSSSkgLy8gY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LmV4YW1w
bGUuY29tIiwgInhtbDpsYW5nIikKKyAgICBpZiAocU5hbWUucHJlZml4KCkgPT0geG1sQXRvbSgp
ICYmIHFOYW1lLm5hbWVzcGFjZVVSSSgpICE9IFhNTE5hbWVzOjp4bWxOYW1lc3BhY2VVUkkpIC8v
IGNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy5leGFtcGxlLmNvbSIsICJ4bWw6bGFuZyIpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIFJlcXVpcmVkIGJ5IERPTSBMZXZlbCAzIENv
cmUgYW5kIHVuc3BlY2lmaWVkIGJ5IERPTSBMZXZlbCAyIENvcmU6CiAgICAgLy8gaHR0cDovL3d3
dy53My5vcmcvVFIvMjAwNC9SRUMtRE9NLUxldmVsLTMtQ29yZS0yMDA0MDQwNy9jb3JlLmh0bWwj
SUQtRG9jQ3JFbE5TCiAgICAgLy8gY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3htbG5zLyIsICJmb286YmFyIiksIGNyZWF0ZUVsZW1lbnROUyhudWxsLCAieG1sbnM6YmFy
IiksIGNyZWF0ZUVsZW1lbnROUyhudWxsLCAieG1sbnMiKQotICAgIGlmIChxTmFtZS5wcmVmaXgo
KSA9PSB4bWxuc0F0b20gfHwgKHFOYW1lLnByZWZpeCgpLmlzRW1wdHkoKSAmJiBxTmFtZS5sb2Nh
bE5hbWUoKSA9PSB4bWxuc0F0b20pKQorICAgIGlmIChxTmFtZS5wcmVmaXgoKSA9PSB4bWxuc0F0
b20oKSB8fCAocU5hbWUucHJlZml4KCkuaXNFbXB0eSgpICYmIHFOYW1lLmxvY2FsTmFtZSgpID09
IHhtbG5zQXRvbSgpKSkKICAgICAgICAgcmV0dXJuIHFOYW1lLm5hbWVzcGFjZVVSSSgpID09IFhN
TE5TTmFtZXM6OnhtbG5zTmFtZXNwYWNlVVJJOwogICAgIHJldHVybiBxTmFtZS5uYW1lc3BhY2VV
UkkoKSAhPSBYTUxOU05hbWVzOjp4bWxuc05hbWVzcGFjZVVSSTsKIH0KQEAgLTMwNTIsNyArMzA1
Miw3IEBAIHZvaWQgRG9jdW1lbnQ6OnByb2Nlc3NCYXNlRWxlbWVudCgpCiAgICAgICAgIHVwZGF0
ZUJhc2VVUkwoKTsKICAgICB9CiAKLSAgICBtX2Jhc2VUYXJnZXQgPSB0YXJnZXQgPyAqdGFyZ2V0
IDogbnVsbEF0b207CisgICAgbV9iYXNlVGFyZ2V0ID0gdGFyZ2V0ID8gKnRhcmdldCA6IG51bGxB
dG9tKCk7CiB9CiAKIFN0cmluZyBEb2N1bWVudDo6dXNlckFnZW50KGNvbnN0IFVSTCYgdXJsKSBj
b25zdApAQCAtNzA4NSw3ICs3MDg1LDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBEb2N1bWVudDo6
ZGlyKCkgY29uc3QKIHsKICAgICBhdXRvKiBkb2N1bWVudEVsZW1lbnQgPSB0aGlzLT5kb2N1bWVu
dEVsZW1lbnQoKTsKICAgICBpZiAoIWlzPEhUTUxIdG1sRWxlbWVudD4oZG9jdW1lbnRFbGVtZW50
KSkKLSAgICAgICAgcmV0dXJuIG51bGxBdG9tOworICAgICAgICByZXR1cm4gbnVsbEF0b20oKTsK
ICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTEh0bWxFbGVtZW50PigqZG9jdW1lbnRFbGVtZW50KS5k
aXIoKTsKIH0KIApAQCAtNzE2NCw3ICs3MTY0LDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBEb2N1
bWVudDo6YmdDb2xvcigpIGNvbnN0CiB7CiAgICAgYXV0byogYm9keUVsZW1lbnQgPSBib2R5KCk7
CiAgICAgaWYgKCFib2R5RWxlbWVudCkKLSAgICAgICAgcmV0dXJuIGVtcHR5QXRvbTsKKyAgICAg
ICAgcmV0dXJuIGVtcHR5QXRvbSgpOwogICAgIHJldHVybiBib2R5RWxlbWVudC0+YXR0cmlidXRl
V2l0aG91dFN5bmNocm9uaXphdGlvbihiZ2NvbG9yQXR0cik7CiB9CiAKQEAgLTcxNzgsNyArNzE3
OCw3IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgRG9jdW1lbnQ6OmZnQ29sb3IoKSBjb25zdAogewog
ICAgIGF1dG8qIGJvZHlFbGVtZW50ID0gYm9keSgpOwogICAgIGlmICghYm9keUVsZW1lbnQpCi0g
ICAgICAgIHJldHVybiBlbXB0eUF0b207CisgICAgICAgIHJldHVybiBlbXB0eUF0b20oKTsKICAg
ICByZXR1cm4gYm9keUVsZW1lbnQtPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24odGV4
dEF0dHIpOwogfQogCkBAIC03MTkyLDcgKzcxOTIsNyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIERv
Y3VtZW50OjphbGlua0NvbG9yKCkgY29uc3QKIHsKICAgICBhdXRvKiBib2R5RWxlbWVudCA9IGJv
ZHkoKTsKICAgICBpZiAoIWJvZHlFbGVtZW50KQotICAgICAgICByZXR1cm4gZW1wdHlBdG9tOwor
ICAgICAgICByZXR1cm4gZW1wdHlBdG9tKCk7CiAgICAgcmV0dXJuIGJvZHlFbGVtZW50LT5hdHRy
aWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGFsaW5rQXR0cik7CiB9CiAKQEAgLTcyMDYsNyAr
NzIwNiw3IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgRG9jdW1lbnQ6OmxpbmtDb2xvckZvckJpbmRp
bmdzKCkgY29uc3QKIHsKICAgICBhdXRvKiBib2R5RWxlbWVudCA9IGJvZHkoKTsKICAgICBpZiAo
IWJvZHlFbGVtZW50KQotICAgICAgICByZXR1cm4gZW1wdHlBdG9tOworICAgICAgICByZXR1cm4g
ZW1wdHlBdG9tKCk7CiAgICAgcmV0dXJuIGJvZHlFbGVtZW50LT5hdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKGxpbmtBdHRyKTsKIH0KIApAQCAtNzIyMCw3ICs3MjIwLDcgQEAgY29uc3Qg
QXRvbWljU3RyaW5nJiBEb2N1bWVudDo6dmxpbmtDb2xvcigpIGNvbnN0CiB7CiAgICAgYXV0byog
Ym9keUVsZW1lbnQgPSBib2R5KCk7CiAgICAgaWYgKCFib2R5RWxlbWVudCkKLSAgICAgICAgcmV0
dXJuIGVtcHR5QXRvbTsKKyAgICAgICAgcmV0dXJuIGVtcHR5QXRvbSgpOwogICAgIHJldHVybiBi
b2R5RWxlbWVudC0+YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih2bGlua0F0dHIpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDVhMWE3ZGRlZmRhMGE4YzcwZGZkOGU3NGI4OTI0
MjkzNTk5ZDQ3YTQuLjlmM2U1ZDhkYWFjMzFmMmFkOTg1ZjE2OTcxZjY3ZjhmMGQ2MzJkODkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0xMjQ2LDcgKzEyNDYsNyBAQCBjbGFzcyBEb2N1bWVudAog
ICAgIGJvb2wgaW5SZW5kZXJUcmVlVXBkYXRlKCkgY29uc3QgeyByZXR1cm4gbV9pblJlbmRlclRy
ZWVVcGRhdGU7IH0KIAogICAgIC8vIFJldHVybiBhIExvY2FsZSBmb3IgdGhlIGRlZmF1bHQgbG9j
YWxlIGlmIHRoZSBhcmd1bWVudCBpcyBudWxsIG9yIGVtcHR5LgotICAgIExvY2FsZSYgZ2V0Q2Fj
aGVkTG9jYWxlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlID0gbnVsbEF0b20pOworICAgIExv
Y2FsZSYgZ2V0Q2FjaGVkTG9jYWxlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlID0gbnVsbEF0
b20oKSk7CiAKICAgICBjb25zdCBEb2N1bWVudCogdGVtcGxhdGVEb2N1bWVudCgpIGNvbnN0Owog
ICAgIERvY3VtZW50JiBlbnN1cmVUZW1wbGF0ZURvY3VtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAKaW5kZXggNDI5MGNjNTY4NzIwZjhiNDkzZWU3Y2M2NzhkZDY5N2RiNzA5ZjAyOS4uYjVmMjA3
YjE1NzlhNWE5YmE4ZGUzNGE2Y2Q1YzZjYzViMmYwNjcwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cApAQCAtNDAyLDcgKzQwMiw3IEBAIGJvb2wgRWxlbWVudDo6cmVtb3ZlQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIG5hbWUpCiB2b2lkIEVsZW1lbnQ6OnNldEJvb2xlYW5BdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgYm9vbCB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUp
Ci0gICAgICAgIHNldEF0dHJpYnV0ZShuYW1lLCBlbXB0eUF0b20pOworICAgICAgICBzZXRBdHRy
aWJ1dGUobmFtZSwgZW1wdHlBdG9tKCkpOwogICAgIGVsc2UKICAgICAgICAgcmVtb3ZlQXR0cmli
dXRlKG5hbWUpOwogfQpAQCAtNDc5LDE4ICs0NzksMTggQEAgQUxXQVlTX0lOTElORSB2b2lkIEVs
ZW1lbnQ6OnN5bmNocm9uaXplQXR0cmlidXRlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1l
KQogICAgIGlmIChlbGVtZW50RGF0YSgpLT5hbmltYXRlZFNWR0F0dHJpYnV0ZXNBcmVEaXJ0eSgp
KSB7CiAgICAgICAgIC8vIFdlJ3JlIG5vdCBwYXNzaW5nIGEgbmFtZXNwYWNlIGFyZ3VtZW50IG9u
IHB1cnBvc2UuIFNWR05hbWVzOjoqQXR0ciBhcmUgZGVmaW5lZCB3L28gbmFtZXNwYWNlcyBhcyB3
ZWxsLgogICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpc1NWR0VsZW1l
bnQoKSk7Ci0gICAgICAgIGRvd25jYXN0PFNWR0VsZW1lbnQ+KCp0aGlzKS5zeW5jaHJvbml6ZUFu
aW1hdGVkU1ZHQXR0cmlidXRlKFF1YWxpZmllZE5hbWUobnVsbEF0b20sIGxvY2FsTmFtZSwgbnVs
bEF0b20pKTsKKyAgICAgICAgZG93bmNhc3Q8U1ZHRWxlbWVudD4oKnRoaXMpLnN5bmNocm9uaXpl
QW5pbWF0ZWRTVkdBdHRyaWJ1dGUoUXVhbGlmaWVkTmFtZShudWxsQXRvbSgpLCBsb2NhbE5hbWUs
IG51bGxBdG9tKCkpKTsKICAgICB9CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgRWxlbWVudDo6
Z2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0CiB7CiAgICAgaWYg
KCFlbGVtZW50RGF0YSgpKQotICAgICAgICByZXR1cm4gbnVsbEF0b207CisgICAgICAgIHJldHVy
biBudWxsQXRvbSgpOwogICAgIHN5bmNocm9uaXplQXR0cmlidXRlKG5hbWUpOwogICAgIGlmIChj
b25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGZpbmRBdHRyaWJ1dGVCeU5hbWUobmFtZSkpCiAg
ICAgICAgIHJldHVybiBhdHRyaWJ1dGUtPnZhbHVlKCk7Ci0gICAgcmV0dXJuIG51bGxBdG9tOwor
ICAgIHJldHVybiBudWxsQXRvbSgpOwogfQogCiBWZWN0b3I8U3RyaW5nPiBFbGVtZW50OjpnZXRB
dHRyaWJ1dGVOYW1lcygpIGNvbnN0CkBAIC0xMjEzLDE2ICsxMjEzLDE2IEBAIEludFJlY3QgRWxl
bWVudDo6c2NyZWVuUmVjdCgpIGNvbnN0CiBjb25zdCBBdG9taWNTdHJpbmcmIEVsZW1lbnQ6Omdl
dEF0dHJpYnV0ZShjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSkgY29uc3QKIHsKICAgICBp
ZiAoIWVsZW1lbnREYXRhKCkpCi0gICAgICAgIHJldHVybiBudWxsQXRvbTsKKyAgICAgICAgcmV0
dXJuIG51bGxBdG9tKCk7CiAgICAgc3luY2hyb25pemVBdHRyaWJ1dGUobG9jYWxOYW1lKTsKICAg
ICBpZiAoY29uc3QgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBlbGVtZW50RGF0YSgpLT5maW5kQXR0
cmlidXRlQnlOYW1lKGxvY2FsTmFtZSwgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSgqdGhpcykp
KQogICAgICAgICByZXR1cm4gYXR0cmlidXRlLT52YWx1ZSgpOwotICAgIHJldHVybiBudWxsQXRv
bTsKKyAgICByZXR1cm4gbnVsbEF0b20oKTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBFbGVt
ZW50OjpnZXRBdHRyaWJ1dGVOUyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29u
c3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGdldEF0dHJp
YnV0ZShRdWFsaWZpZWROYW1lKG51bGxBdG9tLCBsb2NhbE5hbWUsIG5hbWVzcGFjZVVSSSkpOwor
ICAgIHJldHVybiBnZXRBdHRyaWJ1dGUoUXVhbGlmaWVkTmFtZShudWxsQXRvbSgpLCBsb2NhbE5h
bWUsIG5hbWVzcGFjZVVSSSkpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBFbGVtZW50OjpzZXRB
dHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgdmFsdWUpCkBAIC0xMjMzLDcgKzEyMzMsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBFbGVtZW50
OjpzZXRBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUsIGNvbnN0IEF0bwog
ICAgIHN5bmNocm9uaXplQXR0cmlidXRlKGxvY2FsTmFtZSk7CiAgICAgYXV0byBjYXNlQWRqdXN0
ZWRMb2NhbE5hbWUgPSBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKCp0aGlzKSA/IGxvY2FsTmFt
ZS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpIDogbG9jYWxOYW1lOwogICAgIHVuc2lnbmVkIGlu
ZGV4ID0gZWxlbWVudERhdGEoKSA/IGVsZW1lbnREYXRhKCktPmZpbmRBdHRyaWJ1dGVJbmRleEJ5
TmFtZShjYXNlQWRqdXN0ZWRMb2NhbE5hbWUsIGZhbHNlKSA6IEVsZW1lbnREYXRhOjphdHRyaWJ1
dGVOb3RGb3VuZDsKLSAgICBhdXRvIG5hbWUgPSBpbmRleCAhPSBFbGVtZW50RGF0YTo6YXR0cmli
dXRlTm90Rm91bmQgPyBhdHRyaWJ1dGVBdChpbmRleCkubmFtZSgpIDogUXVhbGlmaWVkTmFtZSB7
IG51bGxBdG9tLCBjYXNlQWRqdXN0ZWRMb2NhbE5hbWUsIG51bGxBdG9tIH07CisgICAgYXV0byBu
YW1lID0gaW5kZXggIT0gRWxlbWVudERhdGE6OmF0dHJpYnV0ZU5vdEZvdW5kID8gYXR0cmlidXRl
QXQoaW5kZXgpLm5hbWUoKSA6IFF1YWxpZmllZE5hbWUgeyBudWxsQXRvbSgpLCBjYXNlQWRqdXN0
ZWRMb2NhbE5hbWUsIG51bGxBdG9tKCkgfTsKICAgICBzZXRBdHRyaWJ1dGVJbnRlcm5hbChpbmRl
eCwgbmFtZSwgdmFsdWUsIE5vdEluU3luY2hyb25pemF0aW9uT2ZMYXp5QXR0cmlidXRlKTsKIAog
ICAgIHJldHVybiB7IH07CkBAIC0xNTI4LDcgKzE1MjgsNyBAQCB2b2lkIEVsZW1lbnQ6OnBhcnNl
clNldEF0dHJpYnV0ZXMoY29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZVZlY3RvcikK
IAogICAgIC8vIFVzZSBhdHRyaWJ1dGVWZWN0b3IgaW5zdGVhZCBvZiBtX2VsZW1lbnREYXRhIGJl
Y2F1c2UgYXR0cmlidXRlQ2hhbmdlZCBtaWdodCBtb2RpZnkgbV9lbGVtZW50RGF0YS4KICAgICBm
b3IgKGNvbnN0IGF1dG8mIGF0dHJpYnV0ZSA6IGF0dHJpYnV0ZVZlY3RvcikKLSAgICAgICAgYXR0
cmlidXRlQ2hhbmdlZChhdHRyaWJ1dGUubmFtZSgpLCBudWxsQXRvbSwgYXR0cmlidXRlLnZhbHVl
KCksIE1vZGlmaWVkRGlyZWN0bHkpOworICAgICAgICBhdHRyaWJ1dGVDaGFuZ2VkKGF0dHJpYnV0
ZS5uYW1lKCksIG51bGxBdG9tKCksIGF0dHJpYnV0ZS52YWx1ZSgpLCBNb2RpZmllZERpcmVjdGx5
KTsKIH0KIAogdm9pZCBFbGVtZW50OjpwYXJzZXJEaWRTZXRBdHRyaWJ1dGVzKCkKQEAgLTE1NDMs
OSArMTU0Myw5IEBAIHZvaWQgRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQm
IG9sZERvY3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1lbnQpCiAgICAgaWYgKG9sZERvY3VtZW50
LmluUXVpcmtzTW9kZSgpICE9IGRvY3VtZW50KCkuaW5RdWlya3NNb2RlKCkpIHsKICAgICAgICAg
Ly8gRWxlbWVudERhdGE6Om1fY2xhc3NOYW1lcyBvciBFbGVtZW50RGF0YTo6bV9pZEZvclN0eWxl
UmVzb2x1dGlvbiBuZWVkIHRvIGJlIHVwZGF0ZWQgd2l0aCB0aGUgcmlnaHQgY2FzZS4KICAgICAg
ICAgaWYgKGhhc0lEKCkpCi0gICAgICAgICAgICBhdHRyaWJ1dGVDaGFuZ2VkKGlkQXR0ciwgbnVs
bEF0b20sIGdldElkQXR0cmlidXRlKCkpOworICAgICAgICAgICAgYXR0cmlidXRlQ2hhbmdlZChp
ZEF0dHIsIG51bGxBdG9tKCksIGdldElkQXR0cmlidXRlKCkpOwogICAgICAgICBpZiAoaGFzQ2xh
c3MoKSkKLSAgICAgICAgICAgIGF0dHJpYnV0ZUNoYW5nZWQoY2xhc3NBdHRyLCBudWxsQXRvbSwg
Z2V0QXR0cmlidXRlKGNsYXNzQXR0cikpOworICAgICAgICAgICAgYXR0cmlidXRlQ2hhbmdlZChj
bGFzc0F0dHIsIG51bGxBdG9tKCksIGdldEF0dHJpYnV0ZShjbGFzc0F0dHIpKTsKICAgICB9CiAK
ICAgICBpZiAoVU5MSUtFTFkoaXNEZWZpbmVkQ3VzdG9tRWxlbWVudCgpKSkKQEAgLTE1ODcsNyAr
MTU4Nyw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEVsZW1lbnQ6OnNldFByZWZpeChjb25zdCBBdG9t
aWNTdHJpbmcmIHByZWZpeCkKICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAg
ICByZXR1cm4gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKIAotICAgIG1fdGFnTmFtZS5zZXRQ
cmVmaXgocHJlZml4LmlzRW1wdHkoKSA/IG51bGxBdG9tIDogcHJlZml4KTsKKyAgICBtX3RhZ05h
bWUuc2V0UHJlZml4KHByZWZpeC5pc0VtcHR5KCkgPyBudWxsQXRvbSgpIDogcHJlZml4KTsKICAg
ICByZXR1cm4geyB9OwogfQogCkBAIC0xNjM5LDIyICsxNjM5LDIyIEBAIE5vZGU6Okluc2VydGlv
bk5vdGlmaWNhdGlvblJlcXVlc3QgRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUm
IGluc2VydGlvCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBpZFZhbHVlID0gZ2V0SWRBdHRyaWJ1
dGUoKTsKICAgICBpZiAoIWlkVmFsdWUuaXNOdWxsKCkpIHsKICAgICAgICAgaWYgKG5ld1Njb3Bl
KQotICAgICAgICAgICAgdXBkYXRlSWRGb3JUcmVlU2NvcGUoKm5ld1Njb3BlLCBudWxsQXRvbSwg
aWRWYWx1ZSk7CisgICAgICAgICAgICB1cGRhdGVJZEZvclRyZWVTY29wZSgqbmV3U2NvcGUsIG51
bGxBdG9tKCksIGlkVmFsdWUpOwogICAgICAgICBpZiAobmV3RG9jdW1lbnQpCi0gICAgICAgICAg
ICB1cGRhdGVJZEZvckRvY3VtZW50KCpuZXdEb2N1bWVudCwgbnVsbEF0b20sIGlkVmFsdWUsIEFs
d2F5c1VwZGF0ZUhUTUxEb2N1bWVudE5hbWVkSXRlbU1hcHMpOworICAgICAgICAgICAgdXBkYXRl
SWRGb3JEb2N1bWVudCgqbmV3RG9jdW1lbnQsIG51bGxBdG9tKCksIGlkVmFsdWUsIEFsd2F5c1Vw
ZGF0ZUhUTUxEb2N1bWVudE5hbWVkSXRlbU1hcHMpOwogICAgIH0KIAogICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZVZhbHVlID0gZ2V0TmFtZUF0dHJpYnV0ZSgpOwogICAgIGlmICghbmFtZVZh
bHVlLmlzTnVsbCgpKSB7CiAgICAgICAgIGlmIChuZXdTY29wZSkKLSAgICAgICAgICAgIHVwZGF0
ZU5hbWVGb3JUcmVlU2NvcGUoKm5ld1Njb3BlLCBudWxsQXRvbSwgbmFtZVZhbHVlKTsKKyAgICAg
ICAgICAgIHVwZGF0ZU5hbWVGb3JUcmVlU2NvcGUoKm5ld1Njb3BlLCBudWxsQXRvbSgpLCBuYW1l
VmFsdWUpOwogICAgICAgICBpZiAobmV3RG9jdW1lbnQpCi0gICAgICAgICAgICB1cGRhdGVOYW1l
Rm9yRG9jdW1lbnQoKm5ld0RvY3VtZW50LCBudWxsQXRvbSwgbmFtZVZhbHVlKTsKKyAgICAgICAg
ICAgIHVwZGF0ZU5hbWVGb3JEb2N1bWVudCgqbmV3RG9jdW1lbnQsIG51bGxBdG9tKCksIG5hbWVW
YWx1ZSk7CiAgICAgfQogCiAgICAgaWYgKG5ld1Njb3BlICYmIGhhc1RhZ05hbWUobGFiZWxUYWcp
KSB7CiAgICAgICAgIGlmIChuZXdTY29wZS0+c2hvdWxkQ2FjaGVMYWJlbHNCeUZvckF0dHJpYnV0
ZSgpKQotICAgICAgICAgICAgdXBkYXRlTGFiZWwoKm5ld1Njb3BlLCBudWxsQXRvbSwgYXR0cmli
dXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihmb3JBdHRyKSk7CisgICAgICAgICAgICB1cGRhdGVM
YWJlbCgqbmV3U2NvcGUsIG51bGxBdG9tKCksIGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRp
b24oZm9yQXR0cikpOwogICAgIH0KIAogICAgIGlmIChiZWNvbWVDb25uZWN0ZWQpIHsKQEAgLTE2
OTMsMjIgKzE2OTMsMjIgQEAgdm9pZCBFbGVtZW50OjpyZW1vdmVkRnJvbShDb250YWluZXJOb2Rl
JiBpbnNlcnRpb25Qb2ludCkKICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBpZFZhbHVlID0g
Z2V0SWRBdHRyaWJ1dGUoKTsKICAgICAgICAgaWYgKCFpZFZhbHVlLmlzTnVsbCgpKSB7CiAgICAg
ICAgICAgICBpZiAob2xkU2NvcGUpCi0gICAgICAgICAgICAgICAgdXBkYXRlSWRGb3JUcmVlU2Nv
cGUoKm9sZFNjb3BlLCBpZFZhbHVlLCBudWxsQXRvbSk7CisgICAgICAgICAgICAgICAgdXBkYXRl
SWRGb3JUcmVlU2NvcGUoKm9sZFNjb3BlLCBpZFZhbHVlLCBudWxsQXRvbSgpKTsKICAgICAgICAg
ICAgIGlmIChvbGREb2N1bWVudCkKLSAgICAgICAgICAgICAgICB1cGRhdGVJZEZvckRvY3VtZW50
KCpvbGREb2N1bWVudCwgaWRWYWx1ZSwgbnVsbEF0b20sIEFsd2F5c1VwZGF0ZUhUTUxEb2N1bWVu
dE5hbWVkSXRlbU1hcHMpOworICAgICAgICAgICAgICAgIHVwZGF0ZUlkRm9yRG9jdW1lbnQoKm9s
ZERvY3VtZW50LCBpZFZhbHVlLCBudWxsQXRvbSgpLCBBbHdheXNVcGRhdGVIVE1MRG9jdW1lbnRO
YW1lZEl0ZW1NYXBzKTsKICAgICAgICAgfQogCiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYg
bmFtZVZhbHVlID0gZ2V0TmFtZUF0dHJpYnV0ZSgpOwogICAgICAgICBpZiAoIW5hbWVWYWx1ZS5p
c051bGwoKSkgewogICAgICAgICAgICAgaWYgKG9sZFNjb3BlKQotICAgICAgICAgICAgICAgIHVw
ZGF0ZU5hbWVGb3JUcmVlU2NvcGUoKm9sZFNjb3BlLCBuYW1lVmFsdWUsIG51bGxBdG9tKTsKKyAg
ICAgICAgICAgICAgICB1cGRhdGVOYW1lRm9yVHJlZVNjb3BlKCpvbGRTY29wZSwgbmFtZVZhbHVl
LCBudWxsQXRvbSgpKTsKICAgICAgICAgICAgIGlmIChvbGREb2N1bWVudCkKLSAgICAgICAgICAg
ICAgICB1cGRhdGVOYW1lRm9yRG9jdW1lbnQoKm9sZERvY3VtZW50LCBuYW1lVmFsdWUsIG51bGxB
dG9tKTsKKyAgICAgICAgICAgICAgICB1cGRhdGVOYW1lRm9yRG9jdW1lbnQoKm9sZERvY3VtZW50
LCBuYW1lVmFsdWUsIG51bGxBdG9tKCkpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKG9sZFNj
b3BlICYmIGhhc1RhZ05hbWUobGFiZWxUYWcpKSB7CiAgICAgICAgICAgICBpZiAob2xkU2NvcGUt
PnNob3VsZENhY2hlTGFiZWxzQnlGb3JBdHRyaWJ1dGUoKSkKLSAgICAgICAgICAgICAgICB1cGRh
dGVMYWJlbCgqb2xkU2NvcGUsIGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oZm9yQXR0
ciksIG51bGxBdG9tKTsKKyAgICAgICAgICAgICAgICB1cGRhdGVMYWJlbCgqb2xkU2NvcGUsIGF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oZm9yQXR0ciksIG51bGxBdG9tKCkpOwogICAg
ICAgICB9CiAKICAgICAgICAgaWYgKGJlY29tZURpc2Nvbm5lY3RlZCAmJiBVTkxJS0VMWShpc0Rl
ZmluZWRDdXN0b21FbGVtZW50KCkpKQpAQCAtMjI4MywxMCArMjI4MywxMCBAQCB2b2lkIEVsZW1l
bnQ6OnJlbW92ZUF0dHJpYnV0ZUludGVybmFsKHVuc2lnbmVkIGluZGV4LCBTeW5jaHJvbml6YXRp
b25PZkxhenlBdHRyaQogICAgIH0KIAogICAgIGlmICghdmFsdWVCZWluZ1JlbW92ZWQuaXNOdWxs
KCkpCi0gICAgICAgIHdpbGxNb2RpZnlBdHRyaWJ1dGUobmFtZSwgdmFsdWVCZWluZ1JlbW92ZWQs
IG51bGxBdG9tKTsKKyAgICAgICAgd2lsbE1vZGlmeUF0dHJpYnV0ZShuYW1lLCB2YWx1ZUJlaW5n
UmVtb3ZlZCwgbnVsbEF0b20oKSk7CiAKICAgICB7Ci0gICAgICAgIFN0eWxlOjpBdHRyaWJ1dGVD
aGFuZ2VJbnZhbGlkYXRpb24gc3R5bGVJbnZhbGlkYXRpb24oKnRoaXMsIG5hbWUsIHZhbHVlQmVp
bmdSZW1vdmVkLCBudWxsQXRvbSk7CisgICAgICAgIFN0eWxlOjpBdHRyaWJ1dGVDaGFuZ2VJbnZh
bGlkYXRpb24gc3R5bGVJbnZhbGlkYXRpb24oKnRoaXMsIG5hbWUsIHZhbHVlQmVpbmdSZW1vdmVk
LCBudWxsQXRvbSgpKTsKICAgICAgICAgZWxlbWVudERhdGEucmVtb3ZlQXR0cmlidXRlKGluZGV4
KTsKICAgICB9CiAKQEAgLTIzMDAsOSArMjMwMCw5IEBAIHZvaWQgRWxlbWVudDo6YWRkQXR0cmli
dXRlSW50ZXJuYWwoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5n
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICB3aWxsTW9kaWZ5QXR0cmlidXRlKG5hbWUs
IG51bGxBdG9tLCB2YWx1ZSk7CisgICAgd2lsbE1vZGlmeUF0dHJpYnV0ZShuYW1lLCBudWxsQXRv
bSgpLCB2YWx1ZSk7CiAgICAgewotICAgICAgICBTdHlsZTo6QXR0cmlidXRlQ2hhbmdlSW52YWxp
ZGF0aW9uIHN0eWxlSW52YWxpZGF0aW9uKCp0aGlzLCBuYW1lLCBudWxsQXRvbSwgdmFsdWUpOwor
ICAgICAgICBTdHlsZTo6QXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uIHN0eWxlSW52YWxpZGF0
aW9uKCp0aGlzLCBuYW1lLCBudWxsQXRvbSgpLCB2YWx1ZSk7CiAgICAgICAgIGVuc3VyZVVuaXF1
ZUVsZW1lbnREYXRhKCkuYWRkQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKICAgICB9CiAgICAgZGlk
QWRkQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKQEAgLTIzMjcsNyArMjMyNyw3IEBAIGJvb2wgRWxl
bWVudDo6cmVtb3ZlQXR0cmlidXRlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKIAogYm9vbCBF
bGVtZW50OjpyZW1vdmVBdHRyaWJ1dGVOUyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVS
SSwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUpCiB7Ci0gICAgcmV0dXJuIHJlbW92ZUF0
dHJpYnV0ZShRdWFsaWZpZWROYW1lKG51bGxBdG9tLCBsb2NhbE5hbWUsIG5hbWVzcGFjZVVSSSkp
OworICAgIHJldHVybiByZW1vdmVBdHRyaWJ1dGUoUXVhbGlmaWVkTmFtZShudWxsQXRvbSgpLCBs
b2NhbE5hbWUsIG5hbWVzcGFjZVVSSSkpOwogfQogCiBSZWZQdHI8QXR0cj4gRWxlbWVudDo6Z2V0
QXR0cmlidXRlTm9kZShjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSkKQEAgLTIzNDUsNyAr
MjM0NSw3IEBAIFJlZlB0cjxBdHRyPiBFbGVtZW50OjpnZXRBdHRyaWJ1dGVOb2RlTlMoY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0CiB7CiAgICAgaWYgKCFlbGVtZW50RGF0
YSgpKQogICAgICAgICByZXR1cm4gMDsKLSAgICBRdWFsaWZpZWROYW1lIHFOYW1lKG51bGxBdG9t
LCBsb2NhbE5hbWUsIG5hbWVzcGFjZVVSSSk7CisgICAgUXVhbGlmaWVkTmFtZSBxTmFtZShudWxs
QXRvbSgpLCBsb2NhbE5hbWUsIG5hbWVzcGFjZVVSSSk7CiAgICAgc3luY2hyb25pemVBdHRyaWJ1
dGUocU5hbWUpOwogICAgIGNvbnN0IEF0dHJpYnV0ZSogYXR0cmlidXRlID0gZWxlbWVudERhdGEo
KS0+ZmluZEF0dHJpYnV0ZUJ5TmFtZShxTmFtZSk7CiAgICAgaWYgKCFhdHRyaWJ1dGUpCkBAIC0y
MzY1LDcgKzIzNjUsNyBAQCBib29sIEVsZW1lbnQ6Omhhc0F0dHJpYnV0ZU5TKGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBBdG9taWNTdHJpbgogewogICAgIGlmICghZWxl
bWVudERhdGEoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIFF1YWxpZmllZE5hbWUgcU5h
bWUobnVsbEF0b20sIGxvY2FsTmFtZSwgbmFtZXNwYWNlVVJJKTsKKyAgICBRdWFsaWZpZWROYW1l
IHFOYW1lKG51bGxBdG9tKCksIGxvY2FsTmFtZSwgbmFtZXNwYWNlVVJJKTsKICAgICBzeW5jaHJv
bml6ZUF0dHJpYnV0ZShxTmFtZSk7CiAgICAgcmV0dXJuIGVsZW1lbnREYXRhKCktPmZpbmRBdHRy
aWJ1dGVCeU5hbWUocU5hbWUpOwogfQpAQCAtMjg2OCw3ICsyODY4LDcgQEAgQXRvbWljU3RyaW5n
IEVsZW1lbnQ6OmNvbXB1dGVJbmhlcml0ZWRMYW5ndWFnZSgpIGNvbnN0CiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICByZXR1cm4gbnVsbEF0b207CisgICAgcmV0dXJuIG51bGxBdG9tKCk7CiB9CiAK
IExvY2FsZSYgRWxlbWVudDo6bG9jYWxlKCkgY29uc3QKQEAgLTMyNjIsNyArMzI2Miw3IEBAIHZv
aWQgRWxlbWVudDo6dXBkYXRlTmFtZUZvckRvY3VtZW50KEhUTUxEb2N1bWVudCYgZG9jdW1lbnQs
IGNvbnN0IEF0b21pY1N0cmluZyYKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKFdpbmRvd05h
bWVDb2xsZWN0aW9uOjplbGVtZW50TWF0Y2hlc0lmTmFtZUF0dHJpYnV0ZU1hdGNoKCp0aGlzKSkg
ewotICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGlkID0gV2luZG93TmFtZUNvbGxlY3Rpb246
OmVsZW1lbnRNYXRjaGVzSWZJZEF0dHJpYnV0ZU1hdGNoKCp0aGlzKSA/IGdldElkQXR0cmlidXRl
KCkgOiBudWxsQXRvbTsKKyAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBpZCA9IFdpbmRvd05h
bWVDb2xsZWN0aW9uOjplbGVtZW50TWF0Y2hlc0lmSWRBdHRyaWJ1dGVNYXRjaCgqdGhpcykgPyBn
ZXRJZEF0dHJpYnV0ZSgpIDogbnVsbEF0b20oKTsKICAgICAgICAgaWYgKCFvbGROYW1lLmlzRW1w
dHkoKSAmJiBvbGROYW1lICE9IGlkKQogICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlV2luZG93
TmFtZWRJdGVtKCpvbGROYW1lLmltcGwoKSwgKnRoaXMpOwogICAgICAgICBpZiAoIW5ld05hbWUu
aXNFbXB0eSgpICYmIG5ld05hbWUgIT0gaWQpCkBAIC0zMjcwLDcgKzMyNzAsNyBAQCB2b2lkIEVs
ZW1lbnQ6OnVwZGF0ZU5hbWVGb3JEb2N1bWVudChIVE1MRG9jdW1lbnQmIGRvY3VtZW50LCBjb25z
dCBBdG9taWNTdHJpbmcmCiAgICAgfQogCiAgICAgaWYgKERvY3VtZW50TmFtZUNvbGxlY3Rpb246
OmVsZW1lbnRNYXRjaGVzSWZOYW1lQXR0cmlidXRlTWF0Y2goKnRoaXMpKSB7Ci0gICAgICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgaWQgPSBEb2N1bWVudE5hbWVDb2xsZWN0aW9uOjplbGVtZW50TWF0
Y2hlc0lmSWRBdHRyaWJ1dGVNYXRjaCgqdGhpcykgPyBnZXRJZEF0dHJpYnV0ZSgpIDogbnVsbEF0
b207CisgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgaWQgPSBEb2N1bWVudE5hbWVDb2xsZWN0
aW9uOjplbGVtZW50TWF0Y2hlc0lmSWRBdHRyaWJ1dGVNYXRjaCgqdGhpcykgPyBnZXRJZEF0dHJp
YnV0ZSgpIDogbnVsbEF0b20oKTsKICAgICAgICAgaWYgKCFvbGROYW1lLmlzRW1wdHkoKSAmJiBv
bGROYW1lICE9IGlkKQogICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRG9jdW1lbnROYW1lZEl0
ZW0oKm9sZE5hbWUuaW1wbCgpLCAqdGhpcyk7CiAgICAgICAgIGlmICghbmV3TmFtZS5pc0VtcHR5
KCkgJiYgbmV3TmFtZSAhPSBpZCkKQEAgLTMzMTUsNyArMzMxNSw3IEBAIHZvaWQgRWxlbWVudDo6
dXBkYXRlSWRGb3JEb2N1bWVudChIVE1MRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBBdG9taWNT
dHJpbmcmIG9sCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChXaW5kb3dOYW1lQ29sbGVjdGlv
bjo6ZWxlbWVudE1hdGNoZXNJZklkQXR0cmlidXRlTWF0Y2goKnRoaXMpKSB7Ci0gICAgICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSA9IGNvbmRpdGlvbiA9PSBVcGRhdGVIVE1MRG9jdW1lbnRO
YW1lZEl0ZW1NYXBzT25seUlmRGlmZmVyc0Zyb21OYW1lQXR0cmlidXRlICYmIFdpbmRvd05hbWVD
b2xsZWN0aW9uOjplbGVtZW50TWF0Y2hlc0lmTmFtZUF0dHJpYnV0ZU1hdGNoKCp0aGlzKSA/IGdl
dE5hbWVBdHRyaWJ1dGUoKSA6IG51bGxBdG9tOworICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUgPSBjb25kaXRpb24gPT0gVXBkYXRlSFRNTERvY3VtZW50TmFtZWRJdGVtTWFwc09ubHlJ
ZkRpZmZlcnNGcm9tTmFtZUF0dHJpYnV0ZSAmJiBXaW5kb3dOYW1lQ29sbGVjdGlvbjo6ZWxlbWVu
dE1hdGNoZXNJZk5hbWVBdHRyaWJ1dGVNYXRjaCgqdGhpcykgPyBnZXROYW1lQXR0cmlidXRlKCkg
OiBudWxsQXRvbSgpOwogICAgICAgICBpZiAoIW9sZElkLmlzRW1wdHkoKSAmJiBvbGRJZCAhPSBu
YW1lKQogICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlV2luZG93TmFtZWRJdGVtKCpvbGRJZC5p
bXBsKCksICp0aGlzKTsKICAgICAgICAgaWYgKCFuZXdJZC5pc0VtcHR5KCkgJiYgbmV3SWQgIT0g
bmFtZSkKQEAgLTMzMjMsNyArMzMyMyw3IEBAIHZvaWQgRWxlbWVudDo6dXBkYXRlSWRGb3JEb2N1
bWVudChIVE1MRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIG9sCiAgICAg
fQogCiAgICAgaWYgKERvY3VtZW50TmFtZUNvbGxlY3Rpb246OmVsZW1lbnRNYXRjaGVzSWZJZEF0
dHJpYnV0ZU1hdGNoKCp0aGlzKSkgewotICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUg
PSBjb25kaXRpb24gPT0gVXBkYXRlSFRNTERvY3VtZW50TmFtZWRJdGVtTWFwc09ubHlJZkRpZmZl
cnNGcm9tTmFtZUF0dHJpYnV0ZSAmJiBEb2N1bWVudE5hbWVDb2xsZWN0aW9uOjplbGVtZW50TWF0
Y2hlc0lmTmFtZUF0dHJpYnV0ZU1hdGNoKCp0aGlzKSA/IGdldE5hbWVBdHRyaWJ1dGUoKSA6IG51
bGxBdG9tOworICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUgPSBjb25kaXRpb24gPT0g
VXBkYXRlSFRNTERvY3VtZW50TmFtZWRJdGVtTWFwc09ubHlJZkRpZmZlcnNGcm9tTmFtZUF0dHJp
YnV0ZSAmJiBEb2N1bWVudE5hbWVDb2xsZWN0aW9uOjplbGVtZW50TWF0Y2hlc0lmTmFtZUF0dHJp
YnV0ZU1hdGNoKCp0aGlzKSA/IGdldE5hbWVBdHRyaWJ1dGUoKSA6IG51bGxBdG9tKCk7CiAgICAg
ICAgIGlmICghb2xkSWQuaXNFbXB0eSgpICYmIG9sZElkICE9IG5hbWUpCiAgICAgICAgICAgICBk
b2N1bWVudC5yZW1vdmVEb2N1bWVudE5hbWVkSXRlbSgqb2xkSWQuaW1wbCgpLCAqdGhpcyk7CiAg
ICAgICAgIGlmICghbmV3SWQuaXNFbXB0eSgpICYmIG5ld0lkICE9IG5hbWUpCkBAIC0zMzY2LDcg
KzMzNjYsNyBAQCB2b2lkIEVsZW1lbnQ6OndpbGxNb2RpZnlBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJgogCiB2b2lkIEVsZW1lbnQ6OmRpZEFk
ZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcm
IHZhbHVlKQogewotICAgIGF0dHJpYnV0ZUNoYW5nZWQobmFtZSwgbnVsbEF0b20sIHZhbHVlKTsK
KyAgICBhdHRyaWJ1dGVDaGFuZ2VkKG5hbWUsIG51bGxBdG9tKCksIHZhbHVlKTsKICAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE1vZGlmeURPTUF0dHIoZG9jdW1lbnQoKSwgKnRoaXMs
IG5hbWUubG9jYWxOYW1lKCksIHZhbHVlKTsKICAgICBkaXNwYXRjaFN1YnRyZWVNb2RpZmllZEV2
ZW50KCk7CiB9CkBAIC0zMzgwLDcgKzMzODAsNyBAQCB2b2lkIEVsZW1lbnQ6OmRpZE1vZGlmeUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmCiAK
IHZvaWQgRWxlbWVudDo6ZGlkUmVtb3ZlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5h
bWUsIGNvbnN0IEF0b21pY1N0cmluZyYgb2xkVmFsdWUpCiB7Ci0gICAgYXR0cmlidXRlQ2hhbmdl
ZChuYW1lLCBvbGRWYWx1ZSwgbnVsbEF0b20pOworICAgIGF0dHJpYnV0ZUNoYW5nZWQobmFtZSwg
b2xkVmFsdWUsIG51bGxBdG9tKCkpOwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
UmVtb3ZlRE9NQXR0cihkb2N1bWVudCgpLCAqdGhpcywgbmFtZS5sb2NhbE5hbWUoKSk7CiAgICAg
ZGlzcGF0Y2hTdWJ0cmVlTW9kaWZpZWRFdmVudCgpOwogfQpAQCAtMzU3NCw3ICszNTc0LDcgQEAg
dm9pZCBFbGVtZW50OjpjbG9uZUF0dHJpYnV0ZXNGcm9tRWxlbWVudChjb25zdCBFbGVtZW50JiBv
dGhlcikKICAgICAgICAgbV9lbGVtZW50RGF0YSA9IG90aGVyLm1fZWxlbWVudERhdGEtPm1ha2VV
bmlxdWVDb3B5KCk7CiAKICAgICBmb3IgKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlIDogYXR0
cmlidXRlc0l0ZXJhdG9yKCkpCi0gICAgICAgIGF0dHJpYnV0ZUNoYW5nZWQoYXR0cmlidXRlLm5h
bWUoKSwgbnVsbEF0b20sIGF0dHJpYnV0ZS52YWx1ZSgpLCBNb2RpZmllZEJ5Q2xvbmluZyk7Cisg
ICAgICAgIGF0dHJpYnV0ZUNoYW5nZWQoYXR0cmlidXRlLm5hbWUoKSwgbnVsbEF0b20oKSwgYXR0
cmlidXRlLnZhbHVlKCksIE1vZGlmaWVkQnlDbG9uaW5nKTsKIH0KIAogdm9pZCBFbGVtZW50Ojpj
bG9uZURhdGFGcm9tRWxlbWVudChjb25zdCBFbGVtZW50JiBvdGhlcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5o
CmluZGV4IDAxMmJiZDg2ZDUzMGU3ZTE2YTJhNGU4MTAwNWEwNWI1OWNiNTk2ODMuLjNmZjU1NzBh
YTQ5NDc2NDFlODJhMzI3NGNhMzc0OTkzMjUwZDFjZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAt
NzIyLDcgKzcyMiw3IEBAIGlubGluZSBjb25zdCBBdG9taWNTdHJpbmcmIEVsZW1lbnQ6OmF0dHJp
YnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oY29uc3QgUXVhbGlmCiAgICAgICAgIGlmIChjb25z
dCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGZpbmRBdHRyaWJ1dGVCeU5hbWUobmFtZSkpCiAgICAg
ICAgICAgICByZXR1cm4gYXR0cmlidXRlLT52YWx1ZSgpOwogICAgIH0KLSAgICByZXR1cm4gbnVs
bEF0b207CisgICAgcmV0dXJuIG51bGxBdG9tKCk7CiB9CiAKIGlubGluZSBib29sIEVsZW1lbnQ6
Omhhc0F0dHJpYnV0ZXNXaXRob3V0VXBkYXRlKCkgY29uc3QKQEAgLTczMiwyMSArNzMyLDIxIEBA
IGlubGluZSBib29sIEVsZW1lbnQ6Omhhc0F0dHJpYnV0ZXNXaXRob3V0VXBkYXRlKCkgY29uc3QK
IAogaW5saW5lIGNvbnN0IEF0b21pY1N0cmluZyYgRWxlbWVudDo6aWRGb3JTdHlsZVJlc29sdXRp
b24oKSBjb25zdAogewotICAgIHJldHVybiBoYXNJRCgpID8gZWxlbWVudERhdGEoKS0+aWRGb3JT
dHlsZVJlc29sdXRpb24oKSA6IG51bGxBdG9tOworICAgIHJldHVybiBoYXNJRCgpID8gZWxlbWVu
dERhdGEoKS0+aWRGb3JTdHlsZVJlc29sdXRpb24oKSA6IG51bGxBdG9tKCk7CiB9CiAKIGlubGlu
ZSBjb25zdCBBdG9taWNTdHJpbmcmIEVsZW1lbnQ6OmdldElkQXR0cmlidXRlKCkgY29uc3QKIHsK
ICAgICBpZiAoaGFzSUQoKSkKICAgICAgICAgcmV0dXJuIGVsZW1lbnREYXRhKCktPmZpbmRBdHRy
aWJ1dGVCeU5hbWUoSFRNTE5hbWVzOjppZEF0dHIpLT52YWx1ZSgpOwotICAgIHJldHVybiBudWxs
QXRvbTsKKyAgICByZXR1cm4gbnVsbEF0b20oKTsKIH0KIAogaW5saW5lIGNvbnN0IEF0b21pY1N0
cmluZyYgRWxlbWVudDo6Z2V0TmFtZUF0dHJpYnV0ZSgpIGNvbnN0CiB7CiAgICAgaWYgKGhhc05h
bWUoKSkKICAgICAgICAgcmV0dXJuIGVsZW1lbnREYXRhKCktPmZpbmRBdHRyaWJ1dGVCeU5hbWUo
SFRNTE5hbWVzOjpuYW1lQXR0ciktPnZhbHVlKCk7Ci0gICAgcmV0dXJuIG51bGxBdG9tOworICAg
IHJldHVybiBudWxsQXRvbSgpOwogfQogCiBpbmxpbmUgdm9pZCBFbGVtZW50OjpzZXRJZEF0dHJp
YnV0ZShjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50VGFyZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5j
cHAKaW5kZXggZjE4NzIyOTA0NzEwYjM5NWQzYzhlZWVmZGZmNGVjZWY1ZDlkZDRmYy4uN2Y3ZGMw
MzFiYTQ1ODM1ZGZlY2M2MWRlMTQwMmJjNjlmZDY0N2Q1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRU
YXJnZXQuY3BwCkBAIC0xOTEsNyArMTkxLDcgQEAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYg
bGVnYWN5VHlwZShjb25zdCBFdmVudCYgZXZlbnQpCiAgICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBl
dmVudE5hbWVzKCkud2hlZWxFdmVudCkKICAgICAgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5tb3Vz
ZXdoZWVsRXZlbnQ7CiAKLSAgICByZXR1cm4gbnVsbEF0b207CisgICAgcmV0dXJuIG51bGxBdG9t
KCk7CiB9CiAKIGJvb2wgRXZlbnRUYXJnZXQ6OmZpcmVFdmVudExpc3RlbmVycyhFdmVudCYgZXZl
bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25SZWNvcmQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblJlY29yZC5oCmluZGV4IDYwYmJmYWIxYTg1OGQ2Njkx
MDFlMjllMmQxNzljMjE1YzcxYzAxM2EuLmFkODQ4ZTc1NDdjM2JlOTE4ZTljZTI4ZTg4MmQxMjJm
MDVhZWNiNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblJlY29yZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblJlY29yZC5oCkBAIC02MSw4ICs2MSw4
IEBAIGNsYXNzIE11dGF0aW9uUmVjb3JkIDogcHVibGljIFJlZkNvdW50ZWQ8TXV0YXRpb25SZWNv
cmQ+IHsKICAgICB2aXJ0dWFsIE5vZGUqIHByZXZpb3VzU2libGluZygpIHsgcmV0dXJuIDA7IH0K
ICAgICB2aXJ0dWFsIE5vZGUqIG5leHRTaWJsaW5nKCkgeyByZXR1cm4gMDsgfQogCi0gICAgdmly
dHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZU5hbWUoKSB7IHJldHVybiBudWxsQXRv
bTsgfQotICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVOYW1lc3BhY2Uo
KSB7IHJldHVybiBudWxsQXRvbTsgfQorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBh
dHRyaWJ1dGVOYW1lKCkgeyByZXR1cm4gbnVsbEF0b20oKTsgfQorICAgIHZpcnR1YWwgY29uc3Qg
QXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVOYW1lc3BhY2UoKSB7IHJldHVybiBudWxsQXRvbSgpOyB9
CiAKICAgICB2aXJ0dWFsIFN0cmluZyBvbGRWYWx1ZSgpIHsgcmV0dXJuIFN0cmluZygpOyB9CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05hbWVkTm9kZU1hcC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTmFtZWROb2RlTWFwLmNwcAppbmRleCBiY2ZhMjI3YTcyMTFjOWYwN2Q0
ODdjM2I2MWMwYWI2YTk1OTlkMjhkLi4yMmNlZmVhNzYxY2ZmYmMzOTU3MDUxOThkOTYzZGI2MmUy
YzUwMGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZWROb2RlTWFwLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZWROb2RlTWFwLmNwcApAQCAtODMsNyArODMsNyBA
QCBFeGNlcHRpb25PcjxSZWY8QXR0cj4+IE5hbWVkTm9kZU1hcDo6cmVtb3ZlTmFtZWRJdGVtTlMo
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lcwogewogICAgIGlmICghbV9lbGVtZW50Lmhhc0F0dHJp
YnV0ZXMoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5PVF9GT1VORF9FUlIgfTsKLSAg
ICBhdXRvIGluZGV4ID0gbV9lbGVtZW50LmZpbmRBdHRyaWJ1dGVJbmRleEJ5TmFtZShRdWFsaWZp
ZWROYW1lIHsgbnVsbEF0b20sIGxvY2FsTmFtZSwgbmFtZXNwYWNlVVJJIH0pOworICAgIGF1dG8g
aW5kZXggPSBtX2VsZW1lbnQuZmluZEF0dHJpYnV0ZUluZGV4QnlOYW1lKFF1YWxpZmllZE5hbWUg
eyBudWxsQXRvbSgpLCBsb2NhbE5hbWUsIG5hbWVzcGFjZVVSSSB9KTsKICAgICBpZiAoaW5kZXgg
PT0gRWxlbWVudERhdGE6OmF0dHJpYnV0ZU5vdEZvdW5kKQogICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgTk9UX0ZPVU5EX0VSUiB9OwogICAgIHJldHVybiBtX2VsZW1lbnQuZGV0YWNoQXR0cmli
dXRlKGluZGV4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCAyZDY5YjI5YWVjNDViNmJhOGU0NTM5NTVj
ZDE2NDIzMmQ0ZWYxZGNhLi45Nzg5N2RlMmNiZDIxMTlkOWYyNzczMjZhZGFjYmI5OWQxY2U3OTI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwCkBAIC02MjksNyArNjI5LDcgQEAgRXhjZXB0aW9uT3I8UmVmPE5v
ZGU+PiBOb2RlOjpjbG9uZU5vZGVGb3JCaW5kaW5ncyhib29sIGRlZXApCiBjb25zdCBBdG9taWNT
dHJpbmcmIE5vZGU6OnByZWZpeCgpIGNvbnN0CiB7CiAgICAgLy8gRm9yIG5vZGVzIG90aGVyIHRo
YW4gZWxlbWVudHMgYW5kIGF0dHJpYnV0ZXMsIHRoZSBwcmVmaXggaXMgYWx3YXlzIG51bGwKLSAg
ICByZXR1cm4gbnVsbEF0b207CisgICAgcmV0dXJuIG51bGxBdG9tKCk7CiB9CiAKIEV4Y2VwdGlv
bk9yPHZvaWQ+IE5vZGU6OnNldFByZWZpeChjb25zdCBBdG9taWNTdHJpbmcmKQpAQCAtNjQyLDEy
ICs2NDIsMTIgQEAgRXhjZXB0aW9uT3I8dm9pZD4gTm9kZTo6c2V0UHJlZml4KGNvbnN0IEF0b21p
Y1N0cmluZyYpCiAKIGNvbnN0IEF0b21pY1N0cmluZyYgTm9kZTo6bG9jYWxOYW1lKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gbnVsbEF0b207CisgICAgcmV0dXJuIG51bGxBdG9tKCk7CiB9CiAKIGNv
bnN0IEF0b21pY1N0cmluZyYgTm9kZTo6bmFtZXNwYWNlVVJJKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gbnVsbEF0b207CisgICAgcmV0dXJuIG51bGxBdG9tKCk7CiB9CiAKIGJvb2wgTm9kZTo6aXND
b250ZW50RWRpdGFibGUoKQpAQCAtOTMxLDcgKzkzMSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IE5v
ZGU6OmNoZWNrU2V0UHJlZml4KGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4KQogICAgIGF1dG8m
IG5hbWVzcGFjZVVSSSA9IHRoaXMtPm5hbWVzcGFjZVVSSSgpOwogICAgIGlmIChuYW1lc3BhY2VV
UkkuaXNFbXB0eSgpICYmICFwcmVmaXguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgTkFNRVNQQUNFX0VSUiB9OwotICAgIGlmIChwcmVmaXggPT0geG1sQXRvbSAmJiBuYW1l
c3BhY2VVUkkgIT0gWE1MTmFtZXM6OnhtbE5hbWVzcGFjZVVSSSkKKyAgICBpZiAocHJlZml4ID09
IHhtbEF0b20oKSAmJiBuYW1lc3BhY2VVUkkgIT0gWE1MTmFtZXM6OnhtbE5hbWVzcGFjZVVSSSkK
ICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5BTUVTUEFDRV9FUlIgfTsKIAogICAgIC8vIEF0
dHJpYnV0ZS1zcGVjaWZpYyBjaGVja3MgYXJlIGluIEF0dHI6OnNldFByZWZpeCgpLgpAQCAtMTM5
Miw0NCArMTM5Miw0NCBAQCBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhdGVEZWZhdWx0
TmFtZXNwYWNlKGNvbnN0IE5vZGUmIG5vZGUsIGNvbnN0IEF0b21pYwogICAgICAgICAgICAgICAg
IGlmIChhdHRyaWJ1dGUubmFtZXNwYWNlVVJJKCkgIT0gWE1MTlNOYW1lczo6eG1sbnNOYW1lc3Bh
Y2VVUkkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICAgICAg
aWYgKChwcmVmaXguaXNOdWxsKCkgJiYgYXR0cmlidXRlLnByZWZpeCgpLmlzTnVsbCgpICYmIGF0
dHJpYnV0ZS5sb2NhbE5hbWUoKSA9PSB4bWxuc0F0b20pIHx8IChhdHRyaWJ1dGUucHJlZml4KCkg
PT0geG1sbnNBdG9tICYmIGF0dHJpYnV0ZS5sb2NhbE5hbWUoKSA9PSBwcmVmaXgpKSB7CisgICAg
ICAgICAgICAgICAgaWYgKChwcmVmaXguaXNOdWxsKCkgJiYgYXR0cmlidXRlLnByZWZpeCgpLmlz
TnVsbCgpICYmIGF0dHJpYnV0ZS5sb2NhbE5hbWUoKSA9PSB4bWxuc0F0b20oKSkgfHwgKGF0dHJp
YnV0ZS5wcmVmaXgoKSA9PSB4bWxuc0F0b20oKSAmJiBhdHRyaWJ1dGUubG9jYWxOYW1lKCkgPT0g
cHJlZml4KSkgewogICAgICAgICAgICAgICAgICAgICBhdXRvJiByZXN1bHQgPSBhdHRyaWJ1dGUu
dmFsdWUoKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5pc0VtcHR5KCkgPyBu
dWxsQXRvbSA6IHJlc3VsdDsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5pc0Vt
cHR5KCkgPyBudWxsQXRvbSgpIDogcmVzdWx0OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgICAgICBhdXRvKiBwYXJlbnQgPSBub2RlLnBhcmVudEVsZW1l
bnQoKTsKLSAgICAgICAgcmV0dXJuIHBhcmVudCA/IGxvY2F0ZURlZmF1bHROYW1lc3BhY2UoKnBh
cmVudCwgcHJlZml4KSA6IG51bGxBdG9tOworICAgICAgICByZXR1cm4gcGFyZW50ID8gbG9jYXRl
RGVmYXVsdE5hbWVzcGFjZSgqcGFyZW50LCBwcmVmaXgpIDogbnVsbEF0b20oKTsKICAgICB9CiAg
ICAgY2FzZSBOb2RlOjpET0NVTUVOVF9OT0RFOgogICAgICAgICBpZiAoYXV0byogZG9jdW1lbnRF
bGVtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KG5vZGUpLmRvY3VtZW50RWxlbWVudCgpKQogICAg
ICAgICAgICAgcmV0dXJuIGxvY2F0ZURlZmF1bHROYW1lc3BhY2UoKmRvY3VtZW50RWxlbWVudCwg
cHJlZml4KTsKLSAgICAgICAgcmV0dXJuIG51bGxBdG9tOworICAgICAgICByZXR1cm4gbnVsbEF0
b20oKTsKICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX1RZUEVfTk9ERToKICAgICBjYXNlIE5vZGU6
OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU6Ci0gICAgICAgIHJldHVybiBudWxsQXRvbTsKKyAgICAg
ICAgcmV0dXJuIG51bGxBdG9tKCk7CiAgICAgY2FzZSBOb2RlOjpBVFRSSUJVVEVfTk9ERToKICAg
ICAgICAgaWYgKGF1dG8qIG93bmVyRWxlbWVudCA9IGRvd25jYXN0PEF0dHI+KG5vZGUpLm93bmVy
RWxlbWVudCgpKQogICAgICAgICAgICAgcmV0dXJuIGxvY2F0ZURlZmF1bHROYW1lc3BhY2UoKm93
bmVyRWxlbWVudCwgcHJlZml4KTsKLSAgICAgICAgcmV0dXJuIG51bGxBdG9tOworICAgICAgICBy
ZXR1cm4gbnVsbEF0b20oKTsKICAgICBkZWZhdWx0OgogICAgICAgICBpZiAoYXV0byogcGFyZW50
ID0gbm9kZS5wYXJlbnRFbGVtZW50KCkpCiAgICAgICAgICAgICByZXR1cm4gbG9jYXRlRGVmYXVs
dE5hbWVzcGFjZSgqcGFyZW50LCBwcmVmaXgpOwotICAgICAgICByZXR1cm4gbnVsbEF0b207Cisg
ICAgICAgIHJldHVybiBudWxsQXRvbSgpOwogICAgIH0KIH0KIAogLy8gaHR0cHM6Ly9kb20uc3Bl
Yy53aGF0d2cub3JnLyNkb20tbm9kZS1pc2RlZmF1bHRuYW1lc3BhY2UKIGJvb2wgTm9kZTo6aXNE
ZWZhdWx0TmFtZXNwYWNlKGNvbnN0IEF0b21pY1N0cmluZyYgcG90ZW50aWFsbHlFbXB0eU5hbWVz
cGFjZSkgY29uc3QKIHsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSA9IHBv
dGVudGlhbGx5RW1wdHlOYW1lc3BhY2UuaXNFbXB0eSgpID8gbnVsbEF0b20gOiBwb3RlbnRpYWxs
eUVtcHR5TmFtZXNwYWNlOwotICAgIHJldHVybiBsb2NhdGVEZWZhdWx0TmFtZXNwYWNlKCp0aGlz
LCBudWxsQXRvbSkgPT0gbmFtZXNwYWNlVVJJOworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZXNwYWNlVVJJID0gcG90ZW50aWFsbHlFbXB0eU5hbWVzcGFjZS5pc0VtcHR5KCkgPyBudWxsQXRv
bSgpIDogcG90ZW50aWFsbHlFbXB0eU5hbWVzcGFjZTsKKyAgICByZXR1cm4gbG9jYXRlRGVmYXVs
dE5hbWVzcGFjZSgqdGhpcywgbnVsbEF0b20oKSkgPT0gbmFtZXNwYWNlVVJJOwogfQogCiAvLyBo
dHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcvI2RvbS1ub2RlLWxvb2t1cG5hbWVzcGFjZXVyaQog
Y29uc3QgQXRvbWljU3RyaW5nJiBOb2RlOjpsb29rdXBOYW1lc3BhY2VVUkkoY29uc3QgQXRvbWlj
U3RyaW5nJiBwb3RlbnRpYWxseUVtcHR5UHJlZml4KSBjb25zdAogewotICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgcHJlZml4ID0gcG90ZW50aWFsbHlFbXB0eVByZWZpeC5pc0VtcHR5KCkgPyBudWxs
QXRvbSA6IHBvdGVudGlhbGx5RW1wdHlQcmVmaXg7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBw
cmVmaXggPSBwb3RlbnRpYWxseUVtcHR5UHJlZml4LmlzRW1wdHkoKSA/IG51bGxBdG9tKCkgOiBw
b3RlbnRpYWxseUVtcHR5UHJlZml4OwogICAgIHJldHVybiBsb2NhdGVEZWZhdWx0TmFtZXNwYWNl
KCp0aGlzLCBwcmVmaXgpOwogfQogCkBAIC0xNDQxLDE5ICsxNDQxLDE5IEBAIHN0YXRpYyBjb25z
dCBBdG9taWNTdHJpbmcmIGxvY2F0ZU5hbWVzcGFjZVByZWZpeChjb25zdCBFbGVtZW50JiBlbGVt
ZW50LCBjb25zdCBBCiAKICAgICBpZiAoZWxlbWVudC5oYXNBdHRyaWJ1dGVzKCkpIHsKICAgICAg
ICAgZm9yIChhdXRvJiBhdHRyaWJ1dGUgOiBlbGVtZW50LmF0dHJpYnV0ZXNJdGVyYXRvcigpKSB7
Ci0gICAgICAgICAgICBpZiAoYXR0cmlidXRlLnByZWZpeCgpID09IHhtbG5zQXRvbSAmJiBhdHRy
aWJ1dGUudmFsdWUoKSA9PSBuYW1lc3BhY2VVUkkpCisgICAgICAgICAgICBpZiAoYXR0cmlidXRl
LnByZWZpeCgpID09IHhtbG5zQXRvbSgpICYmIGF0dHJpYnV0ZS52YWx1ZSgpID09IG5hbWVzcGFj
ZVVSSSkKICAgICAgICAgICAgICAgICByZXR1cm4gYXR0cmlidXRlLmxvY2FsTmFtZSgpOwogICAg
ICAgICB9CiAgICAgfQogICAgIGF1dG8qIHBhcmVudCA9IGVsZW1lbnQucGFyZW50RWxlbWVudCgp
OwotICAgIHJldHVybiBwYXJlbnQgPyBsb2NhdGVOYW1lc3BhY2VQcmVmaXgoKnBhcmVudCwgbmFt
ZXNwYWNlVVJJKSA6IG51bGxBdG9tOworICAgIHJldHVybiBwYXJlbnQgPyBsb2NhdGVOYW1lc3Bh
Y2VQcmVmaXgoKnBhcmVudCwgbmFtZXNwYWNlVVJJKSA6IG51bGxBdG9tKCk7CiB9CiAKIC8vIGh0
dHBzOi8vZG9tLnNwZWMud2hhdHdnLm9yZy8jZG9tLW5vZGUtbG9va3VwcHJlZml4CiBjb25zdCBB
dG9taWNTdHJpbmcmIE5vZGU6Omxvb2t1cFByZWZpeChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVz
cGFjZVVSSSkgY29uc3QKIHsKICAgICBpZiAobmFtZXNwYWNlVVJJLmlzRW1wdHkoKSkKLSAgICAg
ICAgcmV0dXJuIG51bGxBdG9tOworICAgICAgICByZXR1cm4gbnVsbEF0b20oKTsKICAgICAKICAg
ICBzd2l0Y2ggKG5vZGVUeXBlKCkpIHsKICAgICBjYXNlIEVMRU1FTlRfTk9ERToKQEAgLTE0NjEs
MTggKzE0NjEsMTggQEAgY29uc3QgQXRvbWljU3RyaW5nJiBOb2RlOjpsb29rdXBQcmVmaXgoY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkkpIGNvbnN0CiAgICAgY2FzZSBET0NVTUVOVF9O
T0RFOgogICAgICAgICBpZiAoYXV0byogZG9jdW1lbnRFbGVtZW50ID0gZG93bmNhc3Q8RG9jdW1l
bnQ+KCp0aGlzKS5kb2N1bWVudEVsZW1lbnQoKSkKICAgICAgICAgICAgIHJldHVybiBsb2NhdGVO
YW1lc3BhY2VQcmVmaXgoKmRvY3VtZW50RWxlbWVudCwgbmFtZXNwYWNlVVJJKTsKLSAgICAgICAg
cmV0dXJuIG51bGxBdG9tOworICAgICAgICByZXR1cm4gbnVsbEF0b20oKTsKICAgICBjYXNlIERP
Q1VNRU5UX0ZSQUdNRU5UX05PREU6CiAgICAgY2FzZSBET0NVTUVOVF9UWVBFX05PREU6Ci0gICAg
ICAgIHJldHVybiBudWxsQXRvbTsKKyAgICAgICAgcmV0dXJuIG51bGxBdG9tKCk7CiAgICAgY2Fz
ZSBBVFRSSUJVVEVfTk9ERToKICAgICAgICAgaWYgKGF1dG8qIG93bmVyRWxlbWVudCA9IGRvd25j
YXN0PEF0dHI+KCp0aGlzKS5vd25lckVsZW1lbnQoKSkKICAgICAgICAgICAgIHJldHVybiBsb2Nh
dGVOYW1lc3BhY2VQcmVmaXgoKm93bmVyRWxlbWVudCwgbmFtZXNwYWNlVVJJKTsKLSAgICAgICAg
cmV0dXJuIG51bGxBdG9tOworICAgICAgICByZXR1cm4gbnVsbEF0b20oKTsKICAgICBkZWZhdWx0
OgogICAgICAgICBpZiAoYXV0byogcGFyZW50ID0gcGFyZW50RWxlbWVudCgpKQogICAgICAgICAg
ICAgcmV0dXJuIGxvY2F0ZU5hbWVzcGFjZVByZWZpeCgqcGFyZW50LCBuYW1lc3BhY2VVUkkpOwot
ICAgICAgICByZXR1cm4gbnVsbEF0b207CisgICAgICAgIHJldHVybiBudWxsQXRvbSgpOwogICAg
IH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCmluZGV4IDY4MDNmYjBhZWI1NTI0NTVl
ZWNlMzRlOGRmOGRiMWVjYjQ5NzFmMWIuLjNiZTg3NmM4ZDhkMGYzZTMxNjIzMzZlYzkwZTVmMzY1
OTk1ZDdjNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKQEAgLTEyMiw3ICsxMjIsNyBA
QCBjbGFzcyBOb2RlTGlzdHNOb2RlRGF0YSB7CiAKICAgICBBTFdBWVNfSU5MSU5FIFJlZjxUYWdD
b2xsZWN0aW9uTlM+IGFkZENhY2hlZFRhZ0NvbGxlY3Rpb25OUyhDb250YWluZXJOb2RlJiBub2Rl
LCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgQXRvbWljU3RyaW5nJiBs
b2NhbE5hbWUpCiAgICAgewotICAgICAgICBRdWFsaWZpZWROYW1lIG5hbWUobnVsbEF0b20sIGxv
Y2FsTmFtZSwgbmFtZXNwYWNlVVJJKTsKKyAgICAgICAgUXVhbGlmaWVkTmFtZSBuYW1lKG51bGxB
dG9tKCksIGxvY2FsTmFtZSwgbmFtZXNwYWNlVVJJKTsKICAgICAgICAgVGFnQ29sbGVjdGlvbk5T
Q2FjaGU6OkFkZFJlc3VsdCByZXN1bHQgPSBtX3RhZ0NvbGxlY3Rpb25OU0NhY2hlLmZhc3RBZGQo
bmFtZSwgbnVsbHB0cik7CiAgICAgICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAg
ICAgICByZXR1cm4gKnJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CkBAIC0xNDcsNyArMTQ3LDcgQEAg
Y2xhc3MgTm9kZUxpc3RzTm9kZURhdGEgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIENvbnRhaW5lclR5cGU+CiAgICAgQUxXQVlTX0lOTElORSBSZWY8VD4gYWRkQ2FjaGVkQ29s
bGVjdGlvbihDb250YWluZXJUeXBlJiBjb250YWluZXIsIENvbGxlY3Rpb25UeXBlIGNvbGxlY3Rp
b25UeXBlKQogICAgIHsKLSAgICAgICAgQ29sbGVjdGlvbkNhY2hlTWFwOjpBZGRSZXN1bHQgcmVz
dWx0ID0gbV9jYWNoZWRDb2xsZWN0aW9ucy5mYXN0QWRkKG5hbWVkQ29sbGVjdGlvbktleShjb2xs
ZWN0aW9uVHlwZSwgc3RhckF0b20pLCBudWxscHRyKTsKKyAgICAgICAgQ29sbGVjdGlvbkNhY2hl
TWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9jYWNoZWRDb2xsZWN0aW9ucy5mYXN0QWRkKG5hbWVk
Q29sbGVjdGlvbktleShjb2xsZWN0aW9uVHlwZSwgc3RhckF0b20oKSksIG51bGxwdHIpOwogICAg
ICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PFQmPigqcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSk7CiAKQEAgLTE1OSwxMSArMTU5LDExIEBA
IGNsYXNzIE5vZGVMaXN0c05vZGVEYXRhIHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAg
IFQqIGNhY2hlZENvbGxlY3Rpb24oQ29sbGVjdGlvblR5cGUgY29sbGVjdGlvblR5cGUpCiAgICAg
ewotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VCo+KG1fY2FjaGVkQ29sbGVjdGlvbnMuZ2V0
KG5hbWVkQ29sbGVjdGlvbktleShjb2xsZWN0aW9uVHlwZSwgc3RhckF0b20pKSk7CisgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxUKj4obV9jYWNoZWRDb2xsZWN0aW9ucy5nZXQobmFtZWRDb2xs
ZWN0aW9uS2V5KGNvbGxlY3Rpb25UeXBlLCBzdGFyQXRvbSgpKSkpOwogICAgIH0KIAogICAgIHRl
bXBsYXRlIDxjbGFzcyBOb2RlTGlzdFR5cGU+Ci0gICAgdm9pZCByZW1vdmVDYWNoZVdpdGhBdG9t
aWNOYW1lKE5vZGVMaXN0VHlwZSogbGlzdCwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lID0gc3Rh
ckF0b20pCisgICAgdm9pZCByZW1vdmVDYWNoZVdpdGhBdG9taWNOYW1lKE5vZGVMaXN0VHlwZSog
bGlzdCwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lID0gc3RhckF0b20oKSkKICAgICB7CiAgICAg
ICAgIEFTU0VSVChsaXN0ID09IG1fYXRvbWljTmFtZUNhY2hlcy5nZXQobmFtZWROb2RlTGlzdEtl
eTxOb2RlTGlzdFR5cGU+KG5hbWUpKSk7CiAgICAgICAgIGlmIChkZWxldGVUaGlzQW5kVXBkYXRl
Tm9kZVJhcmVEYXRhSWZBYm91dFRvUmVtb3ZlTGFzdExpc3QobGlzdC0+b3duZXJOb2RlKCkpKQpA
QCAtMTczLDE0ICsxNzMsMTQgQEAgY2xhc3MgTm9kZUxpc3RzTm9kZURhdGEgewogCiAgICAgdm9p
ZCByZW1vdmVDYWNoZWRUYWdDb2xsZWN0aW9uTlMoSFRNTENvbGxlY3Rpb24mIGNvbGxlY3Rpb24s
IGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBBdG9taWNTdHJpbmcmIGxv
Y2FsTmFtZSkKICAgICB7Ci0gICAgICAgIFF1YWxpZmllZE5hbWUgbmFtZShudWxsQXRvbSwgbG9j
YWxOYW1lLCBuYW1lc3BhY2VVUkkpOworICAgICAgICBRdWFsaWZpZWROYW1lIG5hbWUobnVsbEF0
b20oKSwgbG9jYWxOYW1lLCBuYW1lc3BhY2VVUkkpOwogICAgICAgICBBU1NFUlQoJmNvbGxlY3Rp
b24gPT0gbV90YWdDb2xsZWN0aW9uTlNDYWNoZS5nZXQobmFtZSkpOwogICAgICAgICBpZiAoZGVs
ZXRlVGhpc0FuZFVwZGF0ZU5vZGVSYXJlRGF0YUlmQWJvdXRUb1JlbW92ZUxhc3RMaXN0KGNvbGxl
Y3Rpb24ub3duZXJOb2RlKCkpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBtX3RhZ0Nv
bGxlY3Rpb25OU0NhY2hlLnJlbW92ZShuYW1lKTsKICAgICB9CiAKLSAgICB2b2lkIHJlbW92ZUNh
Y2hlZENvbGxlY3Rpb24oSFRNTENvbGxlY3Rpb24qIGNvbGxlY3Rpb24sIGNvbnN0IEF0b21pY1N0
cmluZyYgbmFtZSA9IHN0YXJBdG9tKQorICAgIHZvaWQgcmVtb3ZlQ2FjaGVkQ29sbGVjdGlvbihI
VE1MQ29sbGVjdGlvbiogY29sbGVjdGlvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lID0gc3Rh
ckF0b20oKSkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb2xsZWN0aW9uID09IG1fY2FjaGVkQ29s
bGVjdGlvbnMuZ2V0KG5hbWVkQ29sbGVjdGlvbktleShjb2xsZWN0aW9uLT50eXBlKCksIG5hbWUp
KSk7CiAgICAgICAgIGlmIChkZWxldGVUaGlzQW5kVXBkYXRlTm9kZVJhcmVEYXRhSWZBYm91dFRv
UmVtb3ZlTGFzdExpc3QoY29sbGVjdGlvbi0+b3duZXJOb2RlKCkpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bz
ZXVkb0VsZW1lbnQuY3BwCmluZGV4IGI4NmFkZGY2ODU0MTEyMGIwY2E4ZjlmZWQwZTc1YTk3MjJj
YTZhNWYuLmNiYWRiZWUwNDVmZmNlYzZkYTJmODgyYTA5ODZjYTAxMDAwNjE4ZDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vUHNldWRvRWxlbWVudC5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjb25zdCBRdWFsaWZpZWROYW1lJiBwc2V1ZG9FbGVtZW50VGFnTmFtZSgpCiB7
Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IG5hbWUobnVsbEF0b20s
ICI8cHNldWRvPiIsIG51bGxBdG9tKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlm
aWVkTmFtZT4gbmFtZShudWxsQXRvbSgpLCAiPHBzZXVkbz4iLCBudWxsQXRvbSgpKTsKICAgICBy
ZXR1cm4gbmFtZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmll
ZE5hbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuY3BwCmluZGV4IDRj
ZjU2NzE0MGViYjYzMjNiMTcwMzQ3MTkyM2Y1Y2E3MGEzM2M5Y2MuLjk0Njc2MzQxNGMyYzJjMzMx
YzVlYWFmNjc1MTFmOThiODIyZTY3ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9R
dWFsaWZpZWROYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5j
cHAKQEAgLTQ1LDcgKzQ1LDcgQEAgUXVhbGlmaWVkTmFtZTo6UXVhbGlmaWVkTmFtZUltcGw6On5R
dWFsaWZpZWROYW1lSW1wbCgpCiB9CiAKIC8vIEdsb2JhbCBpbml0IHJvdXRpbmVzCi1ERUZJTkVf
R0xPQkFMKFF1YWxpZmllZE5hbWUsIGFueU5hbWUsIG51bGxBdG9tLCBzdGFyQXRvbSwgc3RhckF0
b20pCitERUZJTkVfR0xPQkFMKFF1YWxpZmllZE5hbWUsIGFueU5hbWUsIG51bGxBdG9tKCksIHN0
YXJBdG9tKCksIHN0YXJBdG9tKCkpCiAKIHZvaWQgUXVhbGlmaWVkTmFtZTo6aW5pdCgpCiB7CkBA
IC01NSwxMyArNTUsMTMgQEAgdm9pZCBRdWFsaWZpZWROYW1lOjppbml0KCkKIAogICAgIC8vIFVz
ZSBwbGFjZW1lbnQgbmV3IHRvIGluaXRpYWxpemUgdGhlIGdsb2JhbHMuCiAgICAgQXRvbWljU3Ry
aW5nOjppbml0KCk7Ci0gICAgbmV3IChOb3ROdWxsLCAodm9pZCopJmFueU5hbWUpIFF1YWxpZmll
ZE5hbWUobnVsbEF0b20sIHN0YXJBdG9tLCBzdGFyQXRvbSk7CisgICAgbmV3IChOb3ROdWxsLCAo
dm9pZCopJmFueU5hbWUpIFF1YWxpZmllZE5hbWUobnVsbEF0b20oKSwgc3RhckF0b20oKSwgc3Rh
ckF0b20oKSk7CiAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOwogfQogCiBjb25zdCBRdWFsaWZpZWRO
YW1lJiBudWxsUU5hbWUoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWRO
YW1lPiBudWxsTmFtZShudWxsQXRvbSwgbnVsbEF0b20sIG51bGxBdG9tKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gbnVsbE5hbWUobnVsbEF0b20oKSwgbnVsbEF0
b20oKSwgbnVsbEF0b20oKSk7CiAgICAgcmV0dXJuIG51bGxOYW1lOwogfQogCkBAIC04MCwxMiAr
ODAsMTIgQEAgdW5zaWduZWQgUXVhbGlmaWVkTmFtZTo6UXVhbGlmaWVkTmFtZUltcGw6OmNvbXB1
dGVIYXNoKCkgY29uc3QKIAogdm9pZCBjcmVhdGVRdWFsaWZpZWROYW1lKHZvaWQqIHRhcmdldEFk
ZHJlc3MsIFN0cmluZ0ltcGwqIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZU5hbWVzcGFj
ZSkKIHsKLSAgICBuZXcgKE5vdE51bGwsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHRhcmdldEFk
ZHJlc3MpKSBRdWFsaWZpZWROYW1lKG51bGxBdG9tLCBBdG9taWNTdHJpbmcobmFtZSksIG5hbWVO
YW1lc3BhY2UpOworICAgIG5ldyAoTm90TnVsbCwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odGFy
Z2V0QWRkcmVzcykpIFF1YWxpZmllZE5hbWUobnVsbEF0b20oKSwgQXRvbWljU3RyaW5nKG5hbWUp
LCBuYW1lTmFtZXNwYWNlKTsKIH0KIAogdm9pZCBjcmVhdGVRdWFsaWZpZWROYW1lKHZvaWQqIHRh
cmdldEFkZHJlc3MsIFN0cmluZ0ltcGwqIG5hbWUpCiB7Ci0gICAgbmV3IChOb3ROdWxsLCByZWlu
dGVycHJldF9jYXN0PHZvaWQqPih0YXJnZXRBZGRyZXNzKSkgUXVhbGlmaWVkTmFtZShudWxsQXRv
bSwgQXRvbWljU3RyaW5nKG5hbWUpLCBudWxsQXRvbSk7CisgICAgbmV3IChOb3ROdWxsLCByZWlu
dGVycHJldF9jYXN0PHZvaWQqPih0YXJnZXRBZGRyZXNzKSkgUXVhbGlmaWVkTmFtZShudWxsQXRv
bSgpLCBBdG9taWNTdHJpbmcobmFtZSksIG51bGxBdG9tKCkpOwogfQogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L1F1YWxpZmllZE5hbWUuaAppbmRleCBjZTAzZTlhZDYxZDg4NTJhYWFmNjdiN2RkZDZkZWJjZjc0
NDM5Y2MwLi4wOGZhMmI2OTRjZjM0YzljYzg1Mjk4NDYzYTMzNDk2Zjc3YjVlN2VlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9RdWFsaWZpZWROYW1lLmgKQEAgLTgxLDcgKzgxLDcgQEAgY2xhc3MgUXVhbGlmaWVk
TmFtZSB7CiAKICAgICBib29sIG1hdGNoZXMoY29uc3QgUXVhbGlmaWVkTmFtZSYgb3RoZXIpIGNv
bnN0IHsgcmV0dXJuIG1faW1wbCA9PSBvdGhlci5tX2ltcGwgfHwgKGxvY2FsTmFtZSgpID09IG90
aGVyLmxvY2FsTmFtZSgpICYmIG5hbWVzcGFjZVVSSSgpID09IG90aGVyLm5hbWVzcGFjZVVSSSgp
KTsgfQogCi0gICAgYm9vbCBoYXNQcmVmaXgoKSBjb25zdCB7IHJldHVybiBtX2ltcGwtPm1fcHJl
Zml4ICE9IG51bGxBdG9tOyB9CisgICAgYm9vbCBoYXNQcmVmaXgoKSBjb25zdCB7IHJldHVybiBt
X2ltcGwtPm1fcHJlZml4ICE9IG51bGxBdG9tKCk7IH0KICAgICB2b2lkIHNldFByZWZpeChjb25z
dCBBdG9taWNTdHJpbmcmIHByZWZpeCkgeyAqdGhpcyA9IFF1YWxpZmllZE5hbWUocHJlZml4LCBs
b2NhbE5hbWUoKSwgbmFtZXNwYWNlVVJJKCkpOyB9CiAKICAgICBjb25zdCBBdG9taWNTdHJpbmcm
IHByZWZpeCgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbC0+bV9wcmVmaXg7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TZWxlY3RvclF1ZXJ5LmNwcAppbmRleCBmNDliYzMwYzU4ODM0ZDdlODkyM2NmODA2ODMwZmE3
ZWM4N2ZiYzM1Li4xMjEzYTVkYjdlMTg2NDM4NzEyYmZlMmYzZDkxOWQ3Y2IwNDBlNWY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuY3BwCkBAIC0zMzYsOCArMzM2LDggQEAgQUxXQVlT
X0lOTElORSB2b2lkIFNlbGVjdG9yRGF0YUxpc3Q6OmV4ZWN1dGVTaW5nbGVUYWdOYW1lU2VsZWN0
b3JEYXRhKGNvbnN0IENvbnQKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHNlbGVjdG9yTG93ZXJj
YXNlTG9jYWxOYW1lID0gc2VsZWN0b3JEYXRhLnNlbGVjdG9yLT50YWdMb3dlcmNhc2VMb2NhbE5h
bWUoKTsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHNlbGVjdG9yTmFtZXNwYWNlVVJJID0gdGFn
UXVhbGlmaWVkTmFtZS5uYW1lc3BhY2VVUkkoKTsKIAotICAgIGlmIChzZWxlY3Rvck5hbWVzcGFj
ZVVSSSA9PSBzdGFyQXRvbSkgewotICAgICAgICBpZiAoc2VsZWN0b3JMb2NhbE5hbWUgIT0gc3Rh
ckF0b20pIHsKKyAgICBpZiAoc2VsZWN0b3JOYW1lc3BhY2VVUkkgPT0gc3RhckF0b20oKSkgewor
ICAgICAgICBpZiAoc2VsZWN0b3JMb2NhbE5hbWUgIT0gc3RhckF0b20oKSkgewogICAgICAgICAg
ICAgLy8gQ29tbW9uIGNhc2U6IG5hbWUgZGVmaW5lZCwgc2VsZWN0b3JOYW1lc3BhY2VVUkkgaXMg
YSB3aWxkY2FyZC4KICAgICAgICAgICAgIGVsZW1lbnRzRm9yTG9jYWxOYW1lPFNlbGVjdG9yUXVl
cnlUcmFpdD4ocm9vdE5vZGUsIHNlbGVjdG9yTG9jYWxOYW1lLCBzZWxlY3Rvckxvd2VyY2FzZUxv
Y2FsTmFtZSwgb3V0cHV0KTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTM0NSw3ICszNDUsNyBAQCBB
TFdBWVNfSU5MSU5FIHZvaWQgU2VsZWN0b3JEYXRhTGlzdDo6ZXhlY3V0ZVNpbmdsZVRhZ05hbWVT
ZWxlY3RvckRhdGEoY29uc3QgQ29udAogICAgICAgICAgICAgYW55RWxlbWVudDxTZWxlY3RvclF1
ZXJ5VHJhaXQ+KHJvb3ROb2RlLCBvdXRwdXQpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAg
ICAgICAgLy8gRmFsbGJhY2s6IE5hbWVzcGFjZVVSSSBpcyBzZXQsIHNlbGVjdG9yTG9jYWxOYW1l
IG1heSBiZSBzdGFyQXRvbS4KKyAgICAgICAgLy8gRmFsbGJhY2s6IE5hbWVzcGFjZVVSSSBpcyBz
ZXQsIHNlbGVjdG9yTG9jYWxOYW1lIG1heSBiZSBzdGFyQXRvbSgpLgogICAgICAgICBmb3IgKGF1
dG8mIGVsZW1lbnQgOiBlbGVtZW50RGVzY2VuZGFudHMoY29uc3RfY2FzdDxDb250YWluZXJOb2Rl
Jj4ocm9vdE5vZGUpKSkgewogICAgICAgICAgICAgaWYgKGVsZW1lbnQubmFtZXNwYWNlVVJJKCkg
PT0gc2VsZWN0b3JOYW1lc3BhY2VVUkkgJiYgbG9jYWxOYW1lTWF0Y2hlcyhlbGVtZW50LCBzZWxl
Y3RvckxvY2FsTmFtZSwgc2VsZWN0b3JMb3dlcmNhc2VMb2NhbE5hbWUpKSB7CiAgICAgICAgICAg
ICAgICAgU2VsZWN0b3JRdWVyeVRyYWl0OjphcHBlbmRPdXRwdXRGb3JFbGVtZW50KG91dHB1dCwg
JmVsZW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdubWVudC5jcHAKaW5kZXggOTU2NDA3
YTA2OThjYzBiMmY1NmUxZTI2YmJmODcxYmU3OGUzNGIxOS4uMjdhNjk1NTRkMzQ4MzZkYTU1N2I0
OGVkMzVmYjllNzI4Yjg0NzY3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RB
c3NpZ25tZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2xvdEFzc2lnbm1lbnQuY3Bw
CkBAIC0zNyw3ICszNyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIHN0YXRpYyBj
b25zdCBBdG9taWNTdHJpbmcmIHNsb3ROYW1lRnJvbUF0dHJpYnV0ZVZhbHVlKGNvbnN0IEF0b21p
Y1N0cmluZyYgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIHZhbHVlID09IG51bGxBdG9tID8gU2xvdEFz
c2lnbm1lbnQ6OmRlZmF1bHRTbG90TmFtZSgpIDogdmFsdWU7CisgICAgcmV0dXJuIHZhbHVlID09
IG51bGxBdG9tKCkgPyBTbG90QXNzaWdubWVudDo6ZGVmYXVsdFNsb3ROYW1lKCkgOiB2YWx1ZTsK
IH0KIAogc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgc2xvdE5hbWVGcm9tU2xvdEF0dHJpYnV0
ZShjb25zdCBOb2RlJiBjaGlsZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TbG90
QXNzaWdubWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmgKaW5kZXgg
ZTVjZTlhNzdhZGViNDQ5NzgxNjNhNGI3NjdlYjhlNmU1MTllZjFiNS4uNmQ1OWY0ZWZiMGU1MWRm
NTc4YmFjZjcyNGM3OTI3NmE1MjE0MTgyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L1Nsb3RBc3NpZ25tZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50
LmgKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgU2xvdEFzc2lnbm1lbnQgewogICAgIFNsb3RBc3Np
Z25tZW50KCk7CiAgICAgdmlydHVhbCB+U2xvdEFzc2lnbm1lbnQoKTsKIAotICAgIHN0YXRpYyBj
b25zdCBBdG9taWNTdHJpbmcmIGRlZmF1bHRTbG90TmFtZSgpIHsgcmV0dXJuIGVtcHR5QXRvbTsg
fQorICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGRlZmF1bHRTbG90TmFtZSgpIHsgcmV0
dXJuIGVtcHR5QXRvbSgpOyB9CiAKICAgICBIVE1MU2xvdEVsZW1lbnQqIGZpbmRBc3NpZ25lZFNs
b3QoY29uc3QgTm9kZSYsIFNoYWRvd1Jvb3QmKTsKIApAQCAtOTksMTMgKzk5LDEzIEBAIGNsYXNz
IFNsb3RBc3NpZ25tZW50IHsKIGlubGluZSB2b2lkIFNoYWRvd1Jvb3Q6OmRpZFJlbW92ZUFsbENo
aWxkcmVuT2ZTaGFkb3dIb3N0KCkKIHsKICAgICBpZiAobV9zbG90QXNzaWdubWVudCkgLy8gRklY
TUU6IFRoaXMgaXMgaW5jb3JyZWN0IHdoZW4gdGhlcmUgd2VyZSBubyBlbGVtZW50cyBvciB0ZXh0
IG5vZGVzIHJlbW92ZWQuCi0gICAgICAgIG1fc2xvdEFzc2lnbm1lbnQtPmRpZENoYW5nZVNsb3Qo
bnVsbEF0b20sICp0aGlzKTsKKyAgICAgICAgbV9zbG90QXNzaWdubWVudC0+ZGlkQ2hhbmdlU2xv
dChudWxsQXRvbSgpLCAqdGhpcyk7CiB9CiAKIGlubGluZSB2b2lkIFNoYWRvd1Jvb3Q6OmRpZENo
YW5nZURlZmF1bHRTbG90KCkKIHsKICAgICBpZiAobV9zbG90QXNzaWdubWVudCkKLSAgICAgICAg
bV9zbG90QXNzaWdubWVudC0+ZGlkQ2hhbmdlU2xvdChudWxsQXRvbSwgKnRoaXMpOworICAgICAg
ICBtX3Nsb3RBc3NpZ25tZW50LT5kaWRDaGFuZ2VTbG90KG51bGxBdG9tKCksICp0aGlzKTsKIH0K
IAogaW5saW5lIHZvaWQgU2hhZG93Um9vdDo6aG9zdENoaWxkRWxlbWVudERpZENoYW5nZShjb25z
dCBFbGVtZW50JiBjaGlsZEVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
VGFnQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGFnQ29sbGVjdGlvbi5jcHAK
aW5kZXggN2Y5ZjQwMzI2ZGE3NTM0MWVkYjM2YjE2Njg5OGZjYWNhMzRhZTY1Ny4uYjA1YjlkMTVj
NzY5Y2NlYmViNWE4YjA0NzNhNzdmZmVlMjczMTRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1RhZ0NvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UYWdDb2xs
ZWN0aW9uLmNwcApAQCAtNDUsNyArNDUsNyBAQCBUYWdDb2xsZWN0aW9uOjpUYWdDb2xsZWN0aW9u
KENvbnRhaW5lck5vZGUmIHJvb3ROb2RlLCBjb25zdCBBdG9taWNTdHJpbmcmIHF1YWxpZgogICAg
IDogQ2FjaGVkSFRNTENvbGxlY3Rpb248VGFnQ29sbGVjdGlvbiwgQ29sbGVjdGlvblR5cGVUcmFp
dHM8QnlUYWc+Ojp0cmF2ZXJzYWxUeXBlPihyb290Tm9kZSwgQnlUYWcpCiAgICAgLCBtX3F1YWxp
ZmllZE5hbWUocXVhbGlmaWVkTmFtZSkKIHsKLSAgICBBU1NFUlQocXVhbGlmaWVkTmFtZSAhPSBz
dGFyQXRvbSk7CisgICAgQVNTRVJUKHF1YWxpZmllZE5hbWUgIT0gc3RhckF0b20oKSk7CiB9CiAK
IFRhZ0NvbGxlY3Rpb246On5UYWdDb2xsZWN0aW9uKCkKQEAgLTU4LDcgKzU4LDcgQEAgSFRNTFRh
Z0NvbGxlY3Rpb246OkhUTUxUYWdDb2xsZWN0aW9uKENvbnRhaW5lck5vZGUmIHJvb3ROb2RlLCBj
b25zdCBBdG9taWNTdHJpbmcKICAgICAsIG1fcXVhbGlmaWVkTmFtZShxdWFsaWZpZWROYW1lKQog
ICAgICwgbV9sb3dlcmVkUXVhbGlmaWVkTmFtZShxdWFsaWZpZWROYW1lLmNvbnZlcnRUb0FTQ0lJ
TG93ZXJjYXNlKCkpCiB7Ci0gICAgQVNTRVJUKHF1YWxpZmllZE5hbWUgIT0gc3RhckF0b20pOwor
ICAgIEFTU0VSVChxdWFsaWZpZWROYW1lICE9IHN0YXJBdG9tKCkpOwogfQogCiBIVE1MVGFnQ29s
bGVjdGlvbjo6fkhUTUxUYWdDb2xsZWN0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9UYWdDb2xsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGFnQ29sbGVjdGlvbi5o
CmluZGV4IDJjMDI3NDdjNmM1YTI4ZmI3ZGM2ZGFmMThmN2JiZmE3ZTRhNTQwMjkuLjc3N2U4YWQz
OTdmY2VlNGI0NWU0NzUzMmQ1MDY4ODllODMxNzY1OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9UYWdDb2xsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RhZ0NvbGxl
Y3Rpb24uaApAQCAtODgsOSArODgsOSBAQCBpbmxpbmUgYm9vbCBUYWdDb2xsZWN0aW9uOjplbGVt
ZW50TWF0Y2hlcyhFbGVtZW50JiBlbGVtZW50KSBjb25zdAogCiBpbmxpbmUgYm9vbCBUYWdDb2xs
ZWN0aW9uTlM6OmVsZW1lbnRNYXRjaGVzKEVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0CiB7Ci0gICAg
aWYgKG1fbG9jYWxOYW1lICE9IHN0YXJBdG9tICYmIG1fbG9jYWxOYW1lICE9IGVsZW1lbnQubG9j
YWxOYW1lKCkpCisgICAgaWYgKG1fbG9jYWxOYW1lICE9IHN0YXJBdG9tKCkgJiYgbV9sb2NhbE5h
bWUgIT0gZWxlbWVudC5sb2NhbE5hbWUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJl
dHVybiBtX25hbWVzcGFjZVVSSSA9PSBzdGFyQXRvbSB8fCBtX25hbWVzcGFjZVVSSSA9PSBlbGVt
ZW50Lm5hbWVzcGFjZVVSSSgpOworICAgIHJldHVybiBtX25hbWVzcGFjZVVSSSA9PSBzdGFyQXRv
bSgpIHx8IG1fbmFtZXNwYWNlVVJJID09IGVsZW1lbnQubmFtZXNwYWNlVVJJKCk7CiB9CiAKIGlu
bGluZSBib29sIEhUTUxUYWdDb2xsZWN0aW9uOjplbGVtZW50TWF0Y2hlcyhFbGVtZW50JiBlbGVt
ZW50KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbAppbmRleCA3MDczYTE4ZjgyZDU3OGE3
ZmU1NTE4YjRkMTUzMWJkZmUwNzAwY2MyLi44MmJjYzVlZDMzMjFkNTBjZjA1YWM0ZTU0Njc0MDE0
NGQ0NjVjMGFjIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbApAQCAtODA2LDExICs4MDYsMTEg
QEAgc3ViIHByaW50TmFtZXNDcHBGaWxlCiAgICAgcHJpbnQgRiBTdGF0aWNTdHJpbmc6OkdlbmVy
YXRlU3RyaW5nQXNzZXJ0cyhcJWFsbFN0cmluZ3MpOwogCiAgICAgaWYgKGtleXMgJWFsbFRhZ3Mp
IHsKLSAgICAgICAgbXkgJHRhZ3NOYW1lc3BhY2UgPSAkcGFyYW1ldGVyc3t0YWdzTnVsbE5hbWVz
cGFjZX0gPyAibnVsbEF0b20iIDogIiR7bG93ZXJjYXNlTmFtZXNwYWNlUHJlZml4fU5TIjsKKyAg
ICAgICAgbXkgJHRhZ3NOYW1lc3BhY2UgPSAkcGFyYW1ldGVyc3t0YWdzTnVsbE5hbWVzcGFjZX0g
PyAibnVsbEF0b20oKSIgOiAiJHtsb3dlcmNhc2VOYW1lc3BhY2VQcmVmaXh9TlMiOwogICAgICAg
ICBwcmludERlZmluaXRpb25zKCRGLCBcJWFsbFRhZ3MsICJ0YWdzIiwgJHRhZ3NOYW1lc3BhY2Up
OwogICAgIH0KICAgICBpZiAoa2V5cyAlYWxsQXR0cnMpIHsKLSAgICAgICAgbXkgJGF0dHJzTmFt
ZXNwYWNlID0gJHBhcmFtZXRlcnN7YXR0cnNOdWxsTmFtZXNwYWNlfSA/ICJudWxsQXRvbSIgOiAi
JHtsb3dlcmNhc2VOYW1lc3BhY2VQcmVmaXh9TlMiOworICAgICAgICBteSAkYXR0cnNOYW1lc3Bh
Y2UgPSAkcGFyYW1ldGVyc3thdHRyc051bGxOYW1lc3BhY2V9ID8gIm51bGxBdG9tKCkiIDogIiR7
bG93ZXJjYXNlTmFtZXNwYWNlUHJlZml4fU5TIjsKICAgICAgICAgcHJpbnREZWZpbml0aW9ucygk
RiwgXCVhbGxBdHRycywgImF0dHJpYnV0ZXMiLCAkYXR0cnNOYW1lc3BhY2UpOwogICAgIH0KIApA
QCAtOTIxLDcgKzkyMSw3IEBAIEVORAogICAgIGZvciAoYXV0byYgZW50cnkgOiAke3R5cGV9VGFi
bGUpCiBFTkQKIDsKLSAgICBpZiAoJG5hbWVzcGFjZVVSSSBlcSAibnVsbEF0b20iKSB7CisgICAg
aWYgKCRuYW1lc3BhY2VVUkkgZXEgIm51bGxBdG9tKCkiKSB7CiAgICAgICAgIHByaW50IEYgIiAg
ICAgICAgY3JlYXRlUXVhbGlmaWVkTmFtZShlbnRyeS50YXJnZXRBZGRyZXNzLCAmZW50cnkubmFt
ZSk7XG4iOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHByaW50IEYgIiAgICAgICAgY3JlYXRlUXVh
bGlmaWVkTmFtZShlbnRyeS50YXJnZXRBZGRyZXNzLCAmZW50cnkubmFtZSwgJG5hbWVzcGFjZVVS
SSk7XG4iOwpAQCAtMTA2Myw3ICsxMDYzLDcgQEAgRU5ECiAgICAgICAgIGNvbnN0IGF1dG8mIG5h
bWUgPSAqZW50cnkucXVhbGlmaWVkTmFtZTsKICAgICAgICAgcmV0dXJuIGVudHJ5LmZ1bmN0aW9u
KCRhcmd1bWVudExpc3QpOwogICAgIH0KLSAgICByZXR1cm4gJHBhcmFtZXRlcnN7ZmFsbGJhY2tJ
bnRlcmZhY2VOYW1lfTo6Y3JlYXRlKFF1YWxpZmllZE5hbWUobnVsbEF0b20sIGxvY2FsTmFtZSwg
JHtsb3dlcmNhc2VOYW1lc3BhY2VQcmVmaXh9TmFtZXNwYWNlVVJJKSwgZG9jdW1lbnQpOworICAg
IHJldHVybiAkcGFyYW1ldGVyc3tmYWxsYmFja0ludGVyZmFjZU5hbWV9OjpjcmVhdGUoUXVhbGlm
aWVkTmFtZShudWxsQXRvbSgpLCBsb2NhbE5hbWUsICR7bG93ZXJjYXNlTmFtZXNwYWNlUHJlZml4
fU5hbWVzcGFjZVVSSSksIGRvY3VtZW50KTsKIH0KIAogUmVmPCRwYXJhbWV0ZXJze25hbWVzcGFj
ZX1FbGVtZW50PiAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudEZhY3Rvcnk6OmNyZWF0ZUVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50JGZvcm1F
bGVtZW50QXJndW1lbnRGb3JEZWZpbml0aW9uLCBib29sIGNyZWF0ZWRCeVBhcnNlcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKaW5kZXggNDUw
YmI0ZjFmYzRmYTY3ZjFlNWU4MmEwNDU0ZGFiNDkwZTA5MGNhMy4uODdkZjUxNjcxOTk0OWYyOGU2
NDQ2MDgxYTdjMjAxNDQ4NWU3ODEzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9D
b21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKQEAgLTgzNyw3ICs4MzcsNyBAQCB2b2lkIENvbXBvc2l0
ZUVkaXRDb21tYW5kOjpkZWxldGVTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiAmc2Vs
ZWN0aW9uLCBibwogCiB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpyZW1vdmVOb2RlQXR0cmli
dXRlKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZSkKIHsK
LSAgICBzZXROb2RlQXR0cmlidXRlKGVsZW1lbnQsIGF0dHJpYnV0ZSwgbnVsbEF0b20pOworICAg
IHNldE5vZGVBdHRyaWJ1dGUoZWxlbWVudCwgYXR0cmlidXRlLCBudWxsQXRvbSgpKTsKIH0KIAog
dm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6c2V0Tm9kZUF0dHJpYnV0ZShFbGVtZW50JiBlbGVt
ZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGUsIGNvbnN0IEF0b21pY1N0cmluZyYg
dmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcAppbmRleCBiZGUxNTEwYWE3YTE5MWI4
ZTY2YzFmYzg2ZGI0YmYyZjQ1MzhmY2QwLi41NzQwOTdhNmVjZDA4Mzg1MzFkODNiZDBmMWI0Zjg2
ODRhYmRiZDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAKQEAgLTg5MCw3ICs4OTAs
NyBAQCBSZWY8SFRNTEVsZW1lbnQ+IGNyZWF0ZUhUTUxFbGVtZW50KERvY3VtZW50JiBkb2N1bWVu
dCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZQogCiBSZWY8SFRNTEVsZW1lbnQ+IGNyZWF0ZUhU
TUxFbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiB0YWdOYW1l
KQogewotICAgIHJldHVybiBjcmVhdGVIVE1MRWxlbWVudChkb2N1bWVudCwgUXVhbGlmaWVkTmFt
ZShudWxsQXRvbSwgdGFnTmFtZSwgeGh0bWxOYW1lc3BhY2VVUkkpKTsKKyAgICByZXR1cm4gY3Jl
YXRlSFRNTEVsZW1lbnQoZG9jdW1lbnQsIFF1YWxpZmllZE5hbWUobnVsbEF0b20oKSwgdGFnTmFt
ZSwgeGh0bWxOYW1lc3BhY2VVUkkpKTsKIH0KIAogYm9vbCBpc1RhYlNwYW5Ob2RlKGNvbnN0IE5v
ZGUqIG5vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3Vt
dWxhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3Bw
CmluZGV4IGFlMTZhYWVhYzRlZjU4ZDcyMTNiZTczODAyMzI4ZDY2Mzk3YjJhMTIuLjk3OWNlNTNj
YzNhYjIwNDQyMjA5NjRjZGEzNTlkNWZiNjU3ZGM1N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCkBAIC0xNDksOCArMTQ5LDggQEAgdm9pZCBNYXJr
dXBBY2N1bXVsYXRvcjo6c2VyaWFsaXplTm9kZXNXaXRoTmFtZXNwYWNlcyhOb2RlJiB0YXJnZXRO
b2RlLCBFQ2hpbGRyZW4KICAgICAgICAgbmFtZXNwYWNlSGFzaCA9ICpuYW1lc3BhY2VzOwogICAg
IGVsc2UgaWYgKGluWE1MRnJhZ21lbnRTZXJpYWxpemF0aW9uKCkpIHsKICAgICAgICAgLy8gTWFr
ZSBzdXJlIHhtbCBwcmVmaXggYW5kIG5hbWVzcGFjZSBhcmUgYWx3YXlzIGtub3duIHRvIHVwaG9s
ZCB0aGUgY29uc3RyYWludHMgbGlzdGVkIGF0IGh0dHA6Ly93d3cudzMub3JnL1RSL3htbC1uYW1l
czExLyN4bWxSZXNlcnZlZC4KLSAgICAgICAgbmFtZXNwYWNlSGFzaC5zZXQoeG1sQXRvbS5pbXBs
KCksIFhNTE5hbWVzOjp4bWxOYW1lc3BhY2VVUkkuaW1wbCgpKTsKLSAgICAgICAgbmFtZXNwYWNl
SGFzaC5zZXQoWE1MTmFtZXM6OnhtbE5hbWVzcGFjZVVSSS5pbXBsKCksIHhtbEF0b20uaW1wbCgp
KTsKKyAgICAgICAgbmFtZXNwYWNlSGFzaC5zZXQoeG1sQXRvbSgpLmltcGwoKSwgWE1MTmFtZXM6
OnhtbE5hbWVzcGFjZVVSSS5pbXBsKCkpOworICAgICAgICBuYW1lc3BhY2VIYXNoLnNldChYTUxO
YW1lczo6eG1sTmFtZXNwYWNlVVJJLmltcGwoKSwgeG1sQXRvbSgpLmltcGwoKSk7CiAgICAgfQog
CiAgICAgaWYgKCFjaGlsZHJlbk9ubHkpCkBAIC0yNTUsNyArMjU1LDcgQEAgYm9vbCBNYXJrdXBB
Y2N1bXVsYXRvcjo6c2hvdWxkQWRkTmFtZXNwYWNlRWxlbWVudChjb25zdCBFbGVtZW50JiBlbGVt
ZW50KQogICAgIC8vIERvbid0IGFkZCBuYW1lc3BhY2UgYXR0cmlidXRlIGlmIGl0IGlzIGFscmVh
ZHkgZGVmaW5lZCBmb3IgdGhpcyBlbGVtLgogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4
ID0gZWxlbWVudC5wcmVmaXgoKTsKICAgICBpZiAocHJlZml4LmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuICFlbGVtZW50Lmhhc0F0dHJpYnV0ZSh4bWxuc0F0b20pOworICAgICAgICByZXR1cm4g
IWVsZW1lbnQuaGFzQXR0cmlidXRlKHhtbG5zQXRvbSgpKTsKIAogICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxTdHJpbmc+IHhtbG5zV2l0aENvbG9uKE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJ4
bWxuczoiKSk7CiAgICAgcmV0dXJuICFlbGVtZW50Lmhhc0F0dHJpYnV0ZSh4bWxuc1dpdGhDb2xv
bi5nZXQoKSArIHByZWZpeCk7CkBAIC0yNjcsMTIgKzI2NywxMiBAQCBib29sIE1hcmt1cEFjY3Vt
dWxhdG9yOjpzaG91bGRBZGROYW1lc3BhY2VBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHRy
aWJ1dGUsCiAKICAgICAvLyBEb24ndCBhZGQgbmFtZXNwYWNlIGF0dHJpYnV0ZXMgdHdpY2UKICAg
ICAvLyBIVE1MIFBhcnNlciB3aWxsIGNyZWF0ZSB4bWxucyBhdHRyaWJ1dGVzIHdpdGhvdXQgbmFt
ZXNwYWNlIGZvciBIVE1MIGVsZW1lbnRzLCBhbGxvdyB0aG9zZSBhcyB3ZWxsLgotICAgIGlmIChh
dHRyaWJ1dGUubmFtZSgpLmxvY2FsTmFtZSgpID09IHhtbG5zQXRvbSAmJiAoYXR0cmlidXRlLm5h
bWVzcGFjZVVSSSgpLmlzRW1wdHkoKSB8fCBhdHRyaWJ1dGUubmFtZXNwYWNlVVJJKCkgPT0gWE1M
TlNOYW1lczo6eG1sbnNOYW1lc3BhY2VVUkkpKSB7Ci0gICAgICAgIG5hbWVzcGFjZXMuc2V0KGVt
cHR5QXRvbS5pbXBsKCksIGF0dHJpYnV0ZS52YWx1ZSgpLmltcGwoKSk7CisgICAgaWYgKGF0dHJp
YnV0ZS5uYW1lKCkubG9jYWxOYW1lKCkgPT0geG1sbnNBdG9tKCkgJiYgKGF0dHJpYnV0ZS5uYW1l
c3BhY2VVUkkoKS5pc0VtcHR5KCkgfHwgYXR0cmlidXRlLm5hbWVzcGFjZVVSSSgpID09IFhNTE5T
TmFtZXM6OnhtbG5zTmFtZXNwYWNlVVJJKSkgeworICAgICAgICBuYW1lc3BhY2VzLnNldChlbXB0
eUF0b20oKS5pbXBsKCksIGF0dHJpYnV0ZS52YWx1ZSgpLmltcGwoKSk7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKLSAgICBRdWFsaWZpZWROYW1lIHhtbG5zUHJlZml4QXR0cih4bWxu
c0F0b20sIGF0dHJpYnV0ZS5sb2NhbE5hbWUoKSwgWE1MTlNOYW1lczo6eG1sbnNOYW1lc3BhY2VV
UkkpOworICAgIFF1YWxpZmllZE5hbWUgeG1sbnNQcmVmaXhBdHRyKHhtbG5zQXRvbSgpLCBhdHRy
aWJ1dGUubG9jYWxOYW1lKCksIFhNTE5TTmFtZXM6OnhtbG5zTmFtZXNwYWNlVVJJKTsKICAgICBp
ZiAoYXR0cmlidXRlLm5hbWUoKSA9PSB4bWxuc1ByZWZpeEF0dHIpIHsKICAgICAgICAgbmFtZXNw
YWNlcy5zZXQoYXR0cmlidXRlLmxvY2FsTmFtZSgpLmltcGwoKSwgYXR0cmlidXRlLnZhbHVlKCku
aW1wbCgpKTsKICAgICAgICAgbmFtZXNwYWNlcy5zZXQoYXR0cmlidXRlLnZhbHVlKCkuaW1wbCgp
LCBhdHRyaWJ1dGUubG9jYWxOYW1lKCkuaW1wbCgpKTsKQEAgLTI4NywxNiArMjg3LDE2IEBAIHZv
aWQgTWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZE5hbWVzcGFjZShTdHJpbmdCdWlsZGVyJiByZXN1
bHQsIGNvbnN0IEF0b21pY1N0cmluCiAgICAgbmFtZXNwYWNlcy5jaGVja0NvbnNpc3RlbmN5KCk7
CiAgICAgaWYgKG5hbWVzcGFjZVVSSS5pc0VtcHR5KCkpIHsKICAgICAgICAgLy8gaHR0cDovL3d3
dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvdGhlLXho
dG1sLXN5bnRheC5odG1sI3htbC1mcmFnbWVudC1zZXJpYWxpemF0aW9uLWFsZ29yaXRobQotICAg
ICAgICBpZiAoYWxsb3dFbXB0eURlZmF1bHROUyAmJiBuYW1lc3BhY2VzLmdldChlbXB0eUF0b20u
aW1wbCgpKSkgeworICAgICAgICBpZiAoYWxsb3dFbXB0eURlZmF1bHROUyAmJiBuYW1lc3BhY2Vz
LmdldChlbXB0eUF0b20oKS5pbXBsKCkpKSB7CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcg
Jyk7Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKHhtbG5zQXRvbS5zdHJpbmcoKSk7CisgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKHhtbG5zQXRvbSgpLnN0cmluZygpKTsKICAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmRMaXRlcmFsKCI9XCJcIiIpOwogICAgICAgICB9CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICAvLyBVc2UgZW1wdHlBdG9tcydzIGltcGwoKSBmb3IgYm90aCBudWxs
IGFuZCBlbXB0eSBzdHJpbmdzIHNpbmNlIHRoZSBIYXNoTWFwIGNhbid0IGhhbmRsZSAwIGFzIGEg
a2V5Ci0gICAgQXRvbWljU3RyaW5nSW1wbCogcHJlID0gcHJlZml4LmlzRW1wdHkoKSA/IGVtcHR5
QXRvbS5pbXBsKCkgOiBwcmVmaXguaW1wbCgpOworICAgIC8vIFVzZSBlbXB0eUF0b20oKXMncyBp
bXBsKCkgZm9yIGJvdGggbnVsbCBhbmQgZW1wdHkgc3RyaW5ncyBzaW5jZSB0aGUgSGFzaE1hcCBj
YW4ndCBoYW5kbGUgMCBhcyBhIGtleQorICAgIEF0b21pY1N0cmluZ0ltcGwqIHByZSA9IHByZWZp
eC5pc0VtcHR5KCkgPyBlbXB0eUF0b20oKS5pbXBsKCkgOiBwcmVmaXguaW1wbCgpOwogICAgIEF0
b21pY1N0cmluZ0ltcGwqIGZvdW5kTlMgPSBuYW1lc3BhY2VzLmdldChwcmUpOwogICAgIGlmIChm
b3VuZE5TICE9IG5hbWVzcGFjZVVSSS5pbXBsKCkpIHsKICAgICAgICAgbmFtZXNwYWNlcy5zZXQo
cHJlLCBuYW1lc3BhY2VVUkkuaW1wbCgpKTsKQEAgLTMwNyw3ICszMDcsNyBAQCB2b2lkIE1hcmt1
cEFjY3VtdWxhdG9yOjphcHBlbmROYW1lc3BhY2UoU3RyaW5nQnVpbGRlciYgcmVzdWx0LCBjb25z
dCBBdG9taWNTdHJpbgogICAgICAgICBpZiAobmFtZXNwYWNlVVJJLmltcGwoKSA9PSBYTUxOYW1l
czo6eG1sTmFtZXNwYWNlVVJJLmltcGwoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
cmVzdWx0LmFwcGVuZCgnICcpOwotICAgICAgICByZXN1bHQuYXBwZW5kKHhtbG5zQXRvbS5zdHJp
bmcoKSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoeG1sbnNBdG9tKCkuc3RyaW5nKCkpOwogICAg
ICAgICBpZiAoIXByZWZpeC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
JzonKTsKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocHJlZml4KTsKQEAgLTQ0Myw3ICs0NDMs
NyBAQCB2b2lkIE1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRPcGVuVGFnKFN0cmluZ0J1aWxkZXIm
IHJlc3VsdCwgY29uc3QgRWxlbWVudCYgZWxlbQogICAgICAgICAvLyBhIGRlZmF1bHQgbmFtZXNw
YWNlIGRlY2xhcmF0aW9uIHRvIG1ha2UgdGhpcyBuYW1lc3BhY2Ugd2VsbC1mb3JtZWQuIEhvd2V2
ZXIsIGh0dHA6Ly93d3cudzMub3JnL1RSL3htbC1uYW1lczExLyN4bWxSZXNlcnZlZCBzdGF0ZXMK
ICAgICAgICAgLy8gIlRoZSBwcmVmaXggeG1sIE1VU1QgTk9UIGJlIGRlY2xhcmVkIGFzIHRoZSBk
ZWZhdWx0IG5hbWVzcGFjZS4iLCBzbyB1c2UgdGhlIHhtbCBwcmVmaXggZXhwbGljaXRseS4KICAg
ICAgICAgaWYgKGVsZW1lbnQubmFtZXNwYWNlVVJJKCkgPT0gWE1MTmFtZXM6OnhtbE5hbWVzcGFj
ZVVSSSkgewotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh4bWxBdG9tKTsKKyAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoeG1sQXRvbSgpKTsKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJzon
KTsKICAgICAgICAgfQogICAgIH0KQEAgLTUwMCw3ICs1MDAsNyBAQCB2b2lkIE1hcmt1cEFjY3Vt
dWxhdG9yOjphcHBlbmRBdHRyaWJ1dGUoU3RyaW5nQnVpbGRlciYgcmVzdWx0LCBjb25zdCBFbGVt
ZW50JiBlbAogICAgICAgICBpZiAoIWF0dHJpYnV0ZS5uYW1lc3BhY2VVUkkoKS5pc0VtcHR5KCkp
IHsKICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGUubmFtZXNwYWNlVVJJKCkgPT0gWE1MTmFtZXM6
OnhtbE5hbWVzcGFjZVVSSSkgewogICAgICAgICAgICAgICAgIC8vIEFsd2F5cyB1c2UgeG1sIGFz
IHByZWZpeCBpZiB0aGUgbmFtZXNwYWNlIGlzIHRoZSBYTUwgbmFtZXNwYWNlLgotICAgICAgICAg
ICAgICAgIHByZWZpeGVkTmFtZS5zZXRQcmVmaXgoeG1sQXRvbSk7CisgICAgICAgICAgICAgICAg
cHJlZml4ZWROYW1lLnNldFByZWZpeCh4bWxBdG9tKCkpOwogICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgICBBdG9taWNTdHJpbmdJbXBsKiBmb3VuZE5TID0gbmFtZXNwYWNlcyAm
JiBhdHRyaWJ1dGUucHJlZml4KCkuaW1wbCgpID8gbmFtZXNwYWNlcy0+Z2V0KGF0dHJpYnV0ZS5w
cmVmaXgoKS5pbXBsKCkpIDogMDsKICAgICAgICAgICAgICAgICBib29sIHByZWZpeElzQWxyZWFk
eU1hcHBlZFRvT3RoZXJOUyA9IGZvdW5kTlMgJiYgZm91bmROUyAhPSBhdHRyaWJ1dGUubmFtZXNw
YWNlVVJJKCkuaW1wbCgpOwpAQCAtNTA5LDcgKzUwOSw3IEBAIHZvaWQgTWFya3VwQWNjdW11bGF0
b3I6OmFwcGVuZEF0dHJpYnV0ZShTdHJpbmdCdWlsZGVyJiByZXN1bHQsIGNvbnN0IEVsZW1lbnQm
IGVsCiAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXhlZE5hbWUuc2V0UHJlZml4KEF0b21p
Y1N0cmluZyhwcmVmaXgpKTsKICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIHNob3VsZEJlRGVjbGFyZWRVc2luZ0FwcGVuZE5hbWVzcGFjZSA9
ICFhdHRyaWJ1dGUucHJlZml4KCkuaXNFbXB0eSgpICYmICFmb3VuZE5TOwotICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCFzaG91bGRCZURlY2xhcmVkVXNpbmdBcHBlbmROYW1lc3BhY2UgJiYg
YXR0cmlidXRlLmxvY2FsTmFtZSgpICE9IHhtbG5zQXRvbSAmJiBuYW1lc3BhY2VzKQorICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCFzaG91bGRCZURlY2xhcmVkVXNpbmdBcHBlbmROYW1lc3Bh
Y2UgJiYgYXR0cmlidXRlLmxvY2FsTmFtZSgpICE9IHhtbG5zQXRvbSgpICYmIG5hbWVzcGFjZXMp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVVbmlxdWVQcmVmaXgocHJlZml4
ZWROYW1lLCAqbmFtZXNwYWNlcyk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9FZGl0b3JHdGsu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvRWRpdG9yR3RrLmNwcAppbmRleCBiOTg3
ZmEyMzQ3MGYwOGRiYTM3ZWYxZmJlOWYwNGFjYWIyNzI5NDdmLi43YTE1Mzg0NTliMDAwYTIyYWI3
ZjZmZmM5OTczMjhhYTg1OTk1MGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2d0ay9FZGl0b3JHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL0VkaXRv
ckd0ay5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBl
bGVtZW50VVJMKEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgICAgIHJldHVybiBlbGVtZW50LmF0dHJp
YnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oWExpbmtOYW1lczo6aHJlZkF0dHIpOwogICAgIGlm
IChpczxIVE1MRW1iZWRFbGVtZW50PihlbGVtZW50KSB8fCBpczxIVE1MT2JqZWN0RWxlbWVudD4o
ZWxlbWVudCkpCiAgICAgICAgIHJldHVybiBlbGVtZW50LmltYWdlU291cmNlVVJMKCk7Ci0gICAg
cmV0dXJuIG51bGxBdG9tOworICAgIHJldHVybiBudWxsQXRvbSgpOwogfQogCiBzdGF0aWMgYm9v
bCBnZXRJbWFnZUZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgUmVmUHRyPEltYWdlPiYgaW1h
Z2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5kZXggYTRmODUxMzVkYjQxOGU3YWFmYjIz
YmExZTEwZjY3Zjg0ZDI0ZGMyNS4uZDcwZmIxNTFiY2Q2Mjc2YWNjNWRjYTVhNzMyNzQ0YTgyYjE0
ZDU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApAQCAtNzUsNyArNzUsNyBAQCBzdGF0
aWMgYm9vbCBwcm9wZXJ0eU1pc3NpbmdPckVxdWFsVG9Ob25lKFN0eWxlUHJvcGVydGllcyosIENT
U1Byb3BlcnR5SUQpOwogY2xhc3MgQXR0cmlidXRlQ2hhbmdlIHsKIHB1YmxpYzoKICAgICBBdHRy
aWJ1dGVDaGFuZ2UoKQotICAgICAgICA6IG1fbmFtZShudWxsQXRvbSwgbnVsbEF0b20sIG51bGxB
dG9tKQorICAgICAgICA6IG1fbmFtZShudWxsQXRvbSgpLCBudWxsQXRvbSgpLCBudWxsQXRvbSgp
KQogICAgIHsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQXV0b2Nh
cGl0YWxpemUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9BdXRvY2FwaXRhbGl6ZS5jcHAKaW5k
ZXggMTQwMmQ0NTM2Zjg3ZjU5MWY3ZGM1YTYyN2UzNzY0MWFiNzI0ZDgwOC4uMmY4N2EzNTIyMDhj
NDhjZmFkZWFjM2IxYWI3NzU0ZWQ5MGQzYjgzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9BdXRvY2FwaXRhbGl6ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9BdXRvY2Fw
aXRhbGl6ZS5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBzdHJpbmdG
b3JBdXRvY2FwaXRhbGl6ZVR5cGUoQXV0b2NhcGl0YWxpemVUeXBlIHR5cGUpCiB7CiAgICAgc3dp
dGNoICh0eXBlKSB7CiAgICAgY2FzZSBBdXRvY2FwaXRhbGl6ZVR5cGVEZWZhdWx0OgotICAgICAg
ICByZXR1cm4gbnVsbEF0b207CisgICAgICAgIHJldHVybiBudWxsQXRvbSgpOwogICAgIGNhc2Ug
QXV0b2NhcGl0YWxpemVUeXBlTm9uZTogewogICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgQXRvbWljU3RyaW5nPiB2YWx1ZU5vbmUoIm5vbmUiLCBBdG9taWNTdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKTsKICAgICAgICAgcmV0dXJuIHZhbHVlTm9uZTsKQEAgLTczLDcgKzcz
LDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBzdHJpbmdGb3JBdXRvY2FwaXRhbGl6ZVR5cGUoQXV0
b2NhcGl0YWxpemVUeXBlIHR5cGUpCiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgcmV0dXJuIG51bGxBdG9tOworICAgIHJldHVybiBudWxsQXRvbSgpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0F1dG9m
aWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQXV0b2ZpbGwuY3BwCmluZGV4IDZhOTIxMmY5
Y2JjZjk1YmUwMzJhNTg0NzQ3NmFmYzNmMjI4ZDRjODMuLjE2MTE4YTgzMDcwZTEzMTI1YjljZDE2
OTNhODk5YjFmNjZjZGZjNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQXV0b2Zp
bGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQXV0b2ZpbGwuY3BwCkBAIC0xNzUsNyAr
MTc1LDcgQEAgQXV0b2ZpbGxEYXRhIEF1dG9maWxsRGF0YTo6Y3JlYXRlRnJvbUhUTUxGb3JtQ29u
dHJvbEVsZW1lbnQoY29uc3QgSFRNTEZvcm1Db250cm8KICAgICBjb25zdCBBdG9taWNTdHJpbmcm
IGF0dHJpYnV0ZVZhbHVlID0gZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9u
KEhUTUxOYW1lczo6YXV0b2NvbXBsZXRlQXR0cik7CiAKICAgICAvLyAxLiBJZiB0aGUgZWxlbWVu
dCBoYXMgbm8gYXV0b2NvbXBsZXRlIGF0dHJpYnV0ZSwgdGhlbiBqdW1wIHRvIHRoZSBzdGVwIGxh
YmVsZWQgZGVmYXVsdC4KLSAgICBpZiAoYXR0cmlidXRlVmFsdWUgPT0gbnVsbEF0b20pCisgICAg
aWYgKGF0dHJpYnV0ZVZhbHVlID09IG51bGxBdG9tKCkpCiAgICAgICAgIHJldHVybiBkZWZhdWx0
TGFiZWwoKTsKIAogICAgIC8vIDIuIExldCB0b2tlbnMgYmUgdGhlIHJlc3VsdCBvZiBzcGxpdHRp
bmcgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlIG9uIHNwYWNlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2Vu
TGlzdC5oCmluZGV4IDUzYWM1ZTJmNGNiZTJiYzNlOTU2NDU5YTY3ZWY2NTVkYTZiNWZkY2UuLjIx
ZmI0NmY0NjEyY2EzYzkzY2JlNTllZDI4NDNhMjRiZDI0YTU3ODYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9E
T01Ub2tlbkxpc3QuaApAQCAtODQsNyArODQsNyBAQCBpbmxpbmUgdW5zaWduZWQgRE9NVG9rZW5M
aXN0OjpsZW5ndGgoKSBjb25zdAogaW5saW5lIGNvbnN0IEF0b21pY1N0cmluZyYgRE9NVG9rZW5M
aXN0OjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAogewogICAgIGF1dG8mIHRva2VucyA9IHRo
aXMtPnRva2VucygpOwotICAgIHJldHVybiBpbmRleCA8IHRva2Vucy5zaXplKCkgPyB0b2tlbnNb
aW5kZXhdIDogbnVsbEF0b207CisgICAgcmV0dXJuIGluZGV4IDwgdG9rZW5zLnNpemUoKSA/IHRv
a2Vuc1tpbmRleF0gOiBudWxsQXRvbSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAKaW5kZXggODQw
NjhhODgzY2RhOTUzOWFjNGRjZGVkNWI5MmUwYzE1YjkzYzEwMS4uMGI0MTc3YzczY2I1Yzg4YmI0
ZWU3MGZlM2NlYTdjOTYxNDQzNTNjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9G
b3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFz
c29jaWF0ZWRFbGVtZW50LmNwcApAQCAtMjgyLDcgKzI4Miw3IEBAIHZvaWQgRm9ybUFzc29jaWF0
ZWRFbGVtZW50Ojpmb3JtQXR0cmlidXRlVGFyZ2V0Q2hhbmdlZCgpCiBjb25zdCBBdG9taWNTdHJp
bmcmIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6bmFtZSgpIGNvbnN0CiB7CiAgICAgY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lID0gYXNIVE1MRWxlbWVudCgpLmdldE5hbWVBdHRyaWJ1dGUoKTsKLSAg
ICByZXR1cm4gbmFtZS5pc051bGwoKSA/IGVtcHR5QXRvbSA6IG5hbWU7CisgICAgcmV0dXJuIG5h
bWUuaXNOdWxsKCkgPyBlbXB0eUF0b20oKSA6IG5hbWU7CiB9CiAKIGJvb2wgRm9ybUFzc29jaWF0
ZWRFbGVtZW50Ojppc0Zvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZSgpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3BwCmluZGV4IGM3OTEzZTExMzgyNDY4ZjMy
NDUyNWI4NmM0NmI2NmQyZGZiNTU1ZWQuLjZiYzc4MjllNWM5ZTRiMmI2MjNhNzg3ZjcwNWQ5NTQ4
YjY4ODY3YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3BwCkBA
IC03OSw3ICs3OSw3IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTEJ1dHRvbkVsZW1lbnQ6OmZv
cm1Db250cm9sVHlwZSgpIGNvbnN0CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgcmV0dXJuIGVtcHR5QXRvbTsKKyAgICByZXR1cm4gZW1wdHlBdG9tKCk7CiB9CiAKIGJv
b2wgSFRNTEJ1dHRvbkVsZW1lbnQ6OmlzUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIG5hbWUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxEZXRhaWxzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxl
bWVudC5jcHAKaW5kZXggNzc3NWNlM2VkNmEyOTljZjRlZDI3MTA4NzIzMjkxNzQ4YTQzMjRlNi4u
YzNmNDk4NDUwZmZhN2Y4ZTE3MDZiZmMwODhlNTBiM2ZmOWU5ODZhNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcApAQCAtMTY1LDcgKzE2NSw3IEBAIHZvaWQg
SFRNTERldGFpbHNFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBu
YW1lLCBjb25zdCBBdG9taWNTCiAKIHZvaWQgSFRNTERldGFpbHNFbGVtZW50Ojp0b2dnbGVPcGVu
KCkKIHsKLSAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKG9wZW5BdHRyLCBt
X2lzT3BlbiA/IG51bGxBdG9tIDogZW1wdHlBdG9tKTsKKyAgICBzZXRBdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKG9wZW5BdHRyLCBtX2lzT3BlbiA/IG51bGxBdG9tKCkgOiBlbXB0eUF0
b20oKSk7CiAKICAgICAvLyBXZSBuZWVkIHRvIHBvc3QgdG8gdGhlIGRvY3VtZW50IGJlY2F1c2Ug
dG9nZ2xpbmcgdGhpcyBlbGVtZW50IHdpbGwgZGVsZXRlIGl0LgogICAgIGlmIChBWE9iamVjdENh
Y2hlKiBjYWNoZSA9IGRvY3VtZW50KCkuZXhpc3RpbmdBWE9iamVjdENhY2hlKCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxEb2N1bWVudC5jcHAKaW5kZXggZjBkZWUzZGQ0NGIzNmJhMzNhYzk4ZjdmYTZh
ZDVlYWRlYjEwMmUyZS4uZTMwNWM0ODIyMzZiNTRmZjUwODY3OGNiZDExODE5MWMxZDZkMjA3NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcApAQCAtMjM2LDcgKzIzNiw3IEBAIHZv
aWQgSFRNTERvY3VtZW50OjpyZW1vdmVXaW5kb3dOYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5n
SW1wbCYgbmFtZSwgRWxlbWVudCYKIGJvb2wgSFRNTERvY3VtZW50Ojppc0Nhc2VTZW5zaXRpdmVB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKIHsKICAgICBzdGF0
aWMgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4qIGh0bWxDYXNlSW5zZW5zaXRpdmVBdHRyaWJ1
dGVzU2V0ID0gY3JlYXRlSHRtbENhc2VJbnNlbnNpdGl2ZUF0dHJpYnV0ZXNTZXQoKTsKLSAgICBi
b29sIGlzUG9zc2libGVIVE1MQXR0ciA9ICFhdHRyaWJ1dGVOYW1lLmhhc1ByZWZpeCgpICYmIChh
dHRyaWJ1dGVOYW1lLm5hbWVzcGFjZVVSSSgpID09IG51bGxBdG9tKTsKKyAgICBib29sIGlzUG9z
c2libGVIVE1MQXR0ciA9ICFhdHRyaWJ1dGVOYW1lLmhhc1ByZWZpeCgpICYmIChhdHRyaWJ1dGVO
YW1lLm5hbWVzcGFjZVVSSSgpID09IG51bGxBdG9tKCkpOwogICAgIHJldHVybiAhaXNQb3NzaWJs
ZUhUTUxBdHRyIHx8ICFodG1sQ2FzZUluc2Vuc2l0aXZlQXR0cmlidXRlc1NldC0+Y29udGFpbnMo
YXR0cmlidXRlTmFtZS5sb2NhbE5hbWUoKS5pbXBsKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEVsZW1lbnQuY3BwCmluZGV4IGQzNWE2OWRiNGE5YmViNTUxMzIxMGNmODRkNDg5OWFjYTE4MWU0
ZDAuLjBlOWUwYjBhY2YxNTg3ZDZkNTJjNzExMjMwNjZhZmNmODYyOTU1MGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEVsZW1lbnQuY3BwCkBAIC0zNjksMTUgKzM2OSwxNSBAQCBjb25zdCBBdG9taWNT
dHJpbmcmIEhUTUxFbGVtZW50OjpldmVudE5hbWVGb3JFdmVudEhhbmRsZXJBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaQogCiAgICAgLy8gRXZlbnQgaGFuZGxlciBhdHRyaWJ1dGVzIGhhdmUgbm8gbmFt
ZXNwYWNlLgogICAgIGlmICghYXR0cmlidXRlTmFtZS5uYW1lc3BhY2VVUkkoKS5pc051bGwoKSkK
LSAgICAgICAgcmV0dXJuIG51bGxBdG9tOworICAgICAgICByZXR1cm4gbnVsbEF0b20oKTsKIAog
ICAgIC8vIEZhc3QgZWFybHkgcmV0dXJuIGZvciBuYW1lcyB0aGF0IGRvbid0IHN0YXJ0IHdpdGgg
Im9uIi4KICAgICBBdG9taWNTdHJpbmdJbXBsJiBsb2NhbE5hbWUgPSAqYXR0cmlidXRlTmFtZS5s
b2NhbE5hbWUoKS5pbXBsKCk7CiAgICAgaWYgKGxvY2FsTmFtZS5sZW5ndGgoKSA8IDMgfHwgbG9j
YWxOYW1lWzBdICE9ICdvJyB8fCBsb2NhbE5hbWVbMV0gIT0gJ24nKQotICAgICAgICByZXR1cm4g
bnVsbEF0b207CisgICAgICAgIHJldHVybiBudWxsQXRvbSgpOwogCiAgICAgYXV0byBpdCA9IG1h
cC5maW5kKCZsb2NhbE5hbWUpOwotICAgIHJldHVybiBpdCA9PSBtYXAuZW5kKCkgPyBudWxsQXRv
bSA6IGl0LT52YWx1ZTsKKyAgICByZXR1cm4gaXQgPT0gbWFwLmVuZCgpID8gbnVsbEF0b20oKSA6
IGl0LT52YWx1ZTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MRWxlbWVudDo6ZXZlbnRO
YW1lRm9yRXZlbnRIYW5kbGVyQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0
ZU5hbWUpCkBAIC00ODksNyArNDg5LDcgQEAgc3RhdGljIGlubGluZSBjb25zdCBBdG9taWNTdHJp
bmcmIHRvVmFsaWREaXJWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogICAgICAgICBy
ZXR1cm4gcnRsVmFsdWU7CiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZh
bHVlLCAiYXV0byIpKQogICAgICAgICByZXR1cm4gYXV0b1ZhbHVlOwotICAgIHJldHVybiBudWxs
QXRvbTsKKyAgICByZXR1cm4gbnVsbEF0b20oKTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBI
VE1MRWxlbWVudDo6ZGlyKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1l
bnQuY3BwCmluZGV4IDBjZDZlMmFiYjQxZmEyZjEwNDkyMzljNTQwMDlkNjE3NGY0OTljODIuLjgy
MTQ3YTI2MDQzY2U3YTY0ZDhhNjc0NjQzYTBlODY3NjM5YWM5NzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcApAQCAtMTc2LDcgKzE3Niw3IEBAIEltYWdlQ2FuZGlk
YXRlIEhUTUxJbWFnZUVsZW1lbnQ6OmJlc3RGaXRTb3VyY2VGcm9tUGljdHVyZUVsZW1lbnQoKQog
ICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgYXV0byBzb3VyY2VTaXplID0gU2l6ZXNB
dHRyaWJ1dGVQYXJzZXIoc291cmNlLmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oc2l6
ZXNBdHRyKS5zdHJpbmcoKSwgZG9jdW1lbnQoKSkubGVuZ3RoKCk7Ci0gICAgICAgIGF1dG8gY2Fu
ZGlkYXRlID0gYmVzdEZpdFNvdXJjZUZvckltYWdlQXR0cmlidXRlcyhkb2N1bWVudCgpLmRldmlj
ZVNjYWxlRmFjdG9yKCksIG51bGxBdG9tLCBzcmNzZXQsIHNvdXJjZVNpemUpOworICAgICAgICBh
dXRvIGNhbmRpZGF0ZSA9IGJlc3RGaXRTb3VyY2VGb3JJbWFnZUF0dHJpYnV0ZXMoZG9jdW1lbnQo
KS5kZXZpY2VTY2FsZUZhY3RvcigpLCBudWxsQXRvbSgpLCBzcmNzZXQsIHNvdXJjZVNpemUpOwog
ICAgICAgICBpZiAoIWNhbmRpZGF0ZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gY2Fu
ZGlkYXRlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmlu
ZGV4IDhjYWU4MmJiYjVhNjgzMjg3Y2Y1Y2VkMzRmNjY4NjkyYWM0OGExMWEuLjNlZmE1ZTc5YmQx
OWY4YzNmMTM5MmNlODY0Y2MyNjhiM2I4ZDBjZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmNwcApAQCAtMTY2LDcgKzE2Niw3IEBAIEhUTUxJbnB1dEVsZW1lbnQ6On5I
VE1MSW5wdXRFbGVtZW50KCkKIAogY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MSW5wdXRFbGVtZW50
OjpuYW1lKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9uYW1lLmlzTnVsbCgpID8gZW1wdHlBdG9t
IDogbV9uYW1lOworICAgIHJldHVybiBtX25hbWUuaXNOdWxsKCkgPyBlbXB0eUF0b20oKSA6IG1f
bmFtZTsKIH0KIAogVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+IEhUTUxJbnB1dEVsZW1lbnQ6
OmZpbGVzRnJvbUZpbGVJbnB1dEZvcm1Db250cm9sU3RhdGUoY29uc3QgRm9ybUNvbnRyb2xTdGF0
ZSYgc3RhdGUpCkBAIC01MjYsMTEgKzUyNiwxMSBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnVw
ZGF0ZVR5cGUoKQogICAgICAgICBBU1NFUlQoZWxlbWVudERhdGEoKSk7CiAgICAgICAgIC8vIEZJ
WE1FOiBXZSBkb24ndCBoYXZlIHRoZSBvbGQgYXR0cmlidXRlIHZhbHVlcyBzbyB3ZSBwcmV0ZW5k
IHRoYXQgd2UgZGlkbid0IGhhdmUgdGhlIG9sZCB2YWx1ZXMuCiAgICAgICAgIGlmIChjb25zdCBB
dHRyaWJ1dGUqIGhlaWdodCA9IGZpbmRBdHRyaWJ1dGVCeU5hbWUoaGVpZ2h0QXR0cikpCi0gICAg
ICAgICAgICBhdHRyaWJ1dGVDaGFuZ2VkKGhlaWdodEF0dHIsIG51bGxBdG9tLCBoZWlnaHQtPnZh
bHVlKCkpOworICAgICAgICAgICAgYXR0cmlidXRlQ2hhbmdlZChoZWlnaHRBdHRyLCBudWxsQXRv
bSgpLCBoZWlnaHQtPnZhbHVlKCkpOwogICAgICAgICBpZiAoY29uc3QgQXR0cmlidXRlKiB3aWR0
aCA9IGZpbmRBdHRyaWJ1dGVCeU5hbWUod2lkdGhBdHRyKSkKLSAgICAgICAgICAgIGF0dHJpYnV0
ZUNoYW5nZWQod2lkdGhBdHRyLCBudWxsQXRvbSwgd2lkdGgtPnZhbHVlKCkpOworICAgICAgICAg
ICAgYXR0cmlidXRlQ2hhbmdlZCh3aWR0aEF0dHIsIG51bGxBdG9tKCksIHdpZHRoLT52YWx1ZSgp
KTsKICAgICAgICAgaWYgKGNvbnN0IEF0dHJpYnV0ZSogYWxpZ24gPSBmaW5kQXR0cmlidXRlQnlO
YW1lKGFsaWduQXR0cikpCi0gICAgICAgICAgICBhdHRyaWJ1dGVDaGFuZ2VkKGFsaWduQXR0ciwg
bnVsbEF0b20sIGFsaWduLT52YWx1ZSgpKTsKKyAgICAgICAgICAgIGF0dHJpYnV0ZUNoYW5nZWQo
YWxpZ25BdHRyLCBudWxsQXRvbSgpLCBhbGlnbi0+dmFsdWUoKSk7CiAgICAgfQogCiAgICAgaWYg
KGZvcm0oKSAmJiB3YXNTdWNjZXNzZnVsU3VibWl0QnV0dG9uQ2FuZGlkYXRlICE9IG1faW5wdXRU
eXBlLT5jYW5CZVN1Y2Nlc3NmdWxTdWJtaXRCdXR0b24oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IGQxY2I1MDRlYjYyMTJmYjg4Zjg4OWVmNjUzMGNiZDJk
NmE1Njg0NGQuLjI4MDRlYzhjOWY4MTViMDg3Y2ZjZDU2MTkzMWNhNTc5NDU0ODVmZjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNzMxMiw3ICs3MzEyLDcg
QEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjplZmZlY3RpdmVNdXRlZCgpIGNvbnN0CiAKIGJvb2wg
SFRNTE1lZGlhRWxlbWVudDo6ZG9lc0hhdmVBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJiBh
dHRyaWJ1dGUsIEF0b21pY1N0cmluZyogdmFsdWUpIGNvbnN0CiB7Ci0gICAgUXVhbGlmaWVkTmFt
ZSBhdHRyaWJ1dGVOYW1lKG51bGxBdG9tLCBhdHRyaWJ1dGUsIG51bGxBdG9tKTsKKyAgICBRdWFs
aWZpZWROYW1lIGF0dHJpYnV0ZU5hbWUobnVsbEF0b20oKSwgYXR0cmlidXRlLCBudWxsQXRvbSgp
KTsKIAogICAgIGF1dG8mIGVsZW1lbnRWYWx1ZSA9IGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6
YXRpb24oYXR0cmlidXRlTmFtZSk7CiAgICAgaWYgKGVsZW1lbnRWYWx1ZS5pc051bGwoKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKaW5kZXggODYwMjc2ZTZmZGJj
OGQ4MjI4M2U0YTFjNjQxZmEyNTE2NDQ4N2JhZi4uMDUxMmZmMjgwMzJjMWU5YmE4Njg3NThiZTFm
MzAzNmYxMTlmMTIyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9u
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5j
cHAKQEAgLTc4LDcgKzc4LDcgQEAgRXhjZXB0aW9uT3I8UmVmPEhUTUxPcHRpb25FbGVtZW50Pj4g
SFRNTE9wdGlvbkVsZW1lbnQ6OmNyZWF0ZUZvckpTQ29uc3RydWN0b3IoRG8KICAgICBpZiAoIXZh
bHVlLmlzTnVsbCgpKQogICAgICAgICBlbGVtZW50LT5zZXRWYWx1ZSh2YWx1ZSk7CiAgICAgaWYg
KGRlZmF1bHRTZWxlY3RlZCkKLSAgICAgICAgZWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbihzZWxlY3RlZEF0dHIsIGVtcHR5QXRvbSk7CisgICAgICAgIGVsZW1lbnQt
PnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oc2VsZWN0ZWRBdHRyLCBlbXB0eUF0
b20oKSk7CiAgICAgZWxlbWVudC0+c2V0U2VsZWN0ZWQoc2VsZWN0ZWQpOwogCiAgICAgcmV0dXJu
IFdURk1vdmUoZWxlbWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQ
YXJhbUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFyYW1FbGVtZW50LmNw
cAppbmRleCAwOGZiZjFkODZmODBlYzFiMjMzM2MyZTM0M2ZjOGQ2NTZkOTU3NjIyLi5lZDlhMTgw
NzViZGM3ODI3MDI1NDBkZGE0MTRiMDkyZTRiY2M4YWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxQYXJhbUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFBhcmFtRWxlbWVudC5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgU3RyaW5nIEhUTUxQYXJhbUVs
ZW1lbnQ6Om5hbWUoKSBjb25zdAogewogICAgIGlmIChoYXNOYW1lKCkpCiAgICAgICAgIHJldHVy
biBnZXROYW1lQXR0cmlidXRlKCk7Ci0gICAgcmV0dXJuIGRvY3VtZW50KCkuaXNIVE1MRG9jdW1l
bnQoKSA/IGVtcHR5QXRvbSA6IGdldElkQXR0cmlidXRlKCk7CisgICAgcmV0dXJuIGRvY3VtZW50
KCkuaXNIVE1MRG9jdW1lbnQoKSA/IGVtcHR5QXRvbSgpIDogZ2V0SWRBdHRyaWJ1dGUoKTsKIH0K
IAogU3RyaW5nIEhUTUxQYXJhbUVsZW1lbnQ6OnZhbHVlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKaW5kZXggZjRjNjE0MzczNmI3MjgzMTM1YTVmYjAx
OGI5NThjNzdiZjdiNmNlMy4uZWFkZTcyZmNlZGFlYTlkODg1YmQ2MGM2YWFlMjgzODJhNzVhMTRj
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKQEAgLTM5Miw3
ICszOTIsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpzZXRNdWx0aXBsZShib29sIG11bHRp
cGxlKQogewogICAgIGJvb2wgb2xkTXVsdGlwbGUgPSB0aGlzLT5tdWx0aXBsZSgpOwogICAgIGlu
dCBvbGRTZWxlY3RlZEluZGV4ID0gc2VsZWN0ZWRJbmRleCgpOwotICAgIHNldEF0dHJpYnV0ZVdp
dGhvdXRTeW5jaHJvbml6YXRpb24obXVsdGlwbGVBdHRyLCBtdWx0aXBsZSA/IGVtcHR5QXRvbSA6
IG51bGxBdG9tKTsKKyAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKG11bHRp
cGxlQXR0ciwgbXVsdGlwbGUgPyBlbXB0eUF0b20oKSA6IG51bGxBdG9tKCkpOwogCiAgICAgLy8g
UmVzdG9yZSBzZWxlY3RlZEluZGV4IGFmdGVyIGNoYW5naW5nIHRoZSBtdWx0aXBsZSBmbGFnIHRv
IHByZXNlcnZlCiAgICAgLy8gc2VsZWN0aW9uIGFzIHNpbmdsZS1saW5lIGFuZCBtdWx0aS1saW5l
IGhhcyBkaWZmZXJlbnQgZGVmYXVsdHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUYWJsZUNlbGxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxl
Q2VsbEVsZW1lbnQuY3BwCmluZGV4IDQ2YmVhYWUxOTA1MjE1MTFiN2JkZWZhYjY5ODM1NWRiNTJl
ZTVhYTkuLmZkNmY2NmRiNzg2OWM5MmI1MjBlZmY5YzlhODY2ZWVkMDNkMGZhMDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuY3BwCkBAIC0xODEsNyArMTgx
LDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MVGFibGVDZWxsRWxlbWVudDo6c2NvcGUoKSBj
b25zdAogICAgICAgICByZXR1cm4gcm93Z3JvdXA7CiAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJ
SUNhc2UodmFsdWUsIGNvbGdyb3VwKSkKICAgICAgICAgcmV0dXJuIGNvbGdyb3VwOwotICAgIHJl
dHVybiBlbXB0eUF0b207CisgICAgcmV0dXJuIGVtcHR5QXRvbSgpOwogfQogCiB2b2lkIEhUTUxU
YWJsZUNlbGxFbGVtZW50OjpzZXRTY29wZShjb25zdCBBdG9taWNTdHJpbmcmIHNjb3BlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAKaW5kZXggYjY3YzU0ZGM0NGNhMzdk
MWExYWQ2YjU5MzRmNWUyNDM5ODM0NmFkMy4uYzBhN2Y1OTBhMDdkYTU5MmNiMjgyYzc2YzlmOTA1
ODA0OTQ4OThjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCkBA
IC0yNzksNyArMjc5LDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MVHJhY2tFbGVtZW50Ojpt
ZWRpYUVsZW1lbnRDcm9zc09yaWdpbkF0dHJpYnV0ZSgpIGNvbnN0CiB7CiAgICAgaWYgKEhUTUxN
ZWRpYUVsZW1lbnQqIHBhcmVudCA9IG1lZGlhRWxlbWVudCgpKQogICAgICAgICByZXR1cm4gcGFy
ZW50LT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6Y3Jvc3Nvcmln
aW5BdHRyKTsKLSAgICByZXR1cm4gbnVsbEF0b207CisgICAgcmV0dXJuIG51bGxBdG9tKCk7CiB9
CiAKIHZvaWQgSFRNTFRyYWNrRWxlbWVudDo6dGV4dFRyYWNrS2luZENoYW5nZWQoVGV4dFRyYWNr
JiB0cmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGFiZWxhYmxlRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0xhYmVsYWJsZUVsZW1lbnQuY3BwCmluZGV4IDdm
M2Y3MGU2YTkwMDVjN2E2ZTA3M2IyZTc4ZDA0OTFhY2MxZDdhMTguLjI3ZjZjYWZmNWY3MDM2MDRi
MTczZDM0NmQ3ZWZmYTI5MTlhMDcyOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
TGFiZWxhYmxlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9MYWJlbGFibGVF
bGVtZW50LmNwcApAQCAtNDUsNyArNDUsNyBAQCBSZWZQdHI8Tm9kZUxpc3Q+IExhYmVsYWJsZUVs
ZW1lbnQ6OmxhYmVscygpCiAgICAgaWYgKCFzdXBwb3J0TGFiZWxzKCkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRhKCkuZW5zdXJlTm9kZUxpc3Rz
KCkuYWRkQ2FjaGVXaXRoQXRvbWljTmFtZTxMYWJlbHNOb2RlTGlzdD4oKnRoaXMsIHN0YXJBdG9t
KTsKKyAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS5lbnN1cmVOb2RlTGlzdHMoKS5hZGRDYWNo
ZVdpdGhBdG9taWNOYW1lPExhYmVsc05vZGVMaXN0PigqdGhpcywgc3RhckF0b20oKSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYmNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
TGFiZWxzTm9kZUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9MYWJlbHNOb2RlTGlzdC5j
cHAKaW5kZXggMjczODUxNWRhYjgzOWFiNjBmNzYzZWU4NmNjMjFiNTc2ZjZmN2M3ZS4uYzdhM2Y5
ODNiNTYzMDliYTQyMDk4MjBjZjlmNjkwZjk5NjcyYWIwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9MYWJlbHNOb2RlTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9M
YWJlbHNOb2RlTGlzdC5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgTGFiZWxzTm9kZUxpc3Q6OkxhYmVs
c05vZGVMaXN0KExhYmVsYWJsZUVsZW1lbnQmIGZvck5vZGUpCiAKIExhYmVsc05vZGVMaXN0Ojp+
TGFiZWxzTm9kZUxpc3QoKQogewotICAgIG93bmVyTm9kZSgpLm5vZGVMaXN0cygpLT5yZW1vdmVD
YWNoZVdpdGhBdG9taWNOYW1lKHRoaXMsIHN0YXJBdG9tKTsKKyAgICBvd25lck5vZGUoKS5ub2Rl
TGlzdHMoKS0+cmVtb3ZlQ2FjaGVXaXRoQXRvbWljTmFtZSh0aGlzLCBzdGFyQXRvbSgpKTsKIH0g
CiAgICAgCiBib29sIExhYmVsc05vZGVMaXN0OjplbGVtZW50TWF0Y2hlcyhFbGVtZW50JiB0ZXN0
Tm9kZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmNwcAppbmRleCBl
OTc3YWVjYzgzMzVhODYxNDc5ZGUxZjI2Njc3NmY3ZTQ4OWU2NGMzLi4zZGIwM2Q3ZjUwN2FiM2Nh
ZDY1MGEyM2YzZmE5MzUzNWY3N2I5Y2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L01lZGlhQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRy
b2xsZXIuY3BwCkBAIC0zMTcsNyArMzE3LDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNv
bnRyb2xsZXI6OnBsYXliYWNrU3RhdGUoKSBjb25zdAogICAgICAgICByZXR1cm4gcGxheWJhY2tT
dGF0ZUVuZGVkKCk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgICAgIHJldHVybiBudWxsQXRvbTsKKyAgICAgICAgcmV0dXJuIG51bGxBdG9tKCk7CiAg
ICAgfQogfQogCkBAIC0zNDIsNyArMzQyLDcgQEAgc3RhdGljIEF0b21pY1N0cmluZyBldmVudE5h
bWVGb3JSZWFkeVN0YXRlKE1lZGlhQ29udHJvbGxlckludGVyZmFjZTo6UmVhZHlTdGF0ZQogICAg
ICAgICByZXR1cm4gZXZlbnROYW1lcygpLmNhbnBsYXl0aHJvdWdoRXZlbnQ7CiAgICAgZGVmYXVs
dDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBudWxsQXRv
bTsKKyAgICAgICAgcmV0dXJuIG51bGxBdG9tKCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9NZWRpYURvY3VtZW50LmNwcAppbmRleCA5YjNiOWJmZWVkNGU0ZjkzMzNkMTJhMDUwM2YyMDkx
OThhMjU2MjAxLi4zN2RmYmQ5ZDg2OGQzMjE2YTI4YzI3YjhiMWQ2M2U5ODBmNmU1MjI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAKQEAgLTEwNiw5ICsxMDYsOSBAQCB2b2lk
IE1lZGlhRG9jdW1lbnRQYXJzZXI6OmNyZWF0ZURvY3VtZW50U3RydWN0dXJlKCkKIAogICAgIGF1
dG8gdmlkZW9FbGVtZW50ID0gSFRNTFZpZGVvRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKICAg
ICBtX21lZGlhRWxlbWVudCA9IHZpZGVvRWxlbWVudC5wdHIoKTsKLSAgICB2aWRlb0VsZW1lbnQt
PnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oY29udHJvbHNBdHRyLCBlbXB0eUF0
b20pOwotICAgIHZpZGVvRWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlv
bihhdXRvcGxheUF0dHIsIGVtcHR5QXRvbSk7Ci0gICAgdmlkZW9FbGVtZW50LT5zZXRBdHRyaWJ1
dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHBsYXlzaW5saW5lQXR0ciwgZW1wdHlBdG9tKTsKKyAg
ICB2aWRlb0VsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oY29udHJv
bHNBdHRyLCBlbXB0eUF0b20oKSk7CisgICAgdmlkZW9FbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRo
b3V0U3luY2hyb25pemF0aW9uKGF1dG9wbGF5QXR0ciwgZW1wdHlBdG9tKCkpOworICAgIHZpZGVv
RWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihwbGF5c2lubGluZUF0
dHIsIGVtcHR5QXRvbSgpKTsKICAgICB2aWRlb0VsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24oc3JjQXR0ciwgZG9jdW1lbnQudXJsKCkuc3RyaW5nKCkpOwogICAgIGlm
IChhdXRvKiBsb2FkZXIgPSBkb2N1bWVudC5sb2FkZXIoKSkKICAgICAgICAgdmlkZW9FbGVtZW50
LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHR5cGVBdHRyLCBsb2FkZXItPnJl
c3BvbnNlTUlNRVR5cGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9BdG9taWNIVE1MVG9rZW4uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0F0b21pY0hU
TUxUb2tlbi5oCmluZGV4IGQwOWFmYmMxYjg2YTQzN2E4MGZkM2Y5NjIxZTZmNWY1YjQ5MWJiYmEu
LmQxZjMwOWZmMTI1Y2Q0OGIxZWU5NDBkZmE3MzI3NTRhNWI2YWFmODggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0F0b21pY0hUTUxUb2tlbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0F0b21pY0hUTUxUb2tlbi5oCkBAIC0yMDYsNyArMjA2LDcgQEAg
aW5saW5lIHZvaWQgQXRvbWljSFRNTFRva2VuOjppbml0aWFsaXplQXR0cmlidXRlcyhjb25zdCBI
VE1MVG9rZW46OkF0dHJpYnV0ZUxpc3QKIAogICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBOXjIg
Zm9yIHRoZSBudW1iZXIgb2YgYXR0cmlidXRlcy4KICAgICAgICAgaWYgKCFoYXNBdHRyaWJ1dGUo
bV9hdHRyaWJ1dGVzLCBsb2NhbE5hbWUpKQotICAgICAgICAgICAgbV9hdHRyaWJ1dGVzLnVuY2hl
Y2tlZEFwcGVuZChBdHRyaWJ1dGUoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgbG9jYWxOYW1lLCBu
dWxsQXRvbSksIEF0b21pY1N0cmluZyhhdHRyaWJ1dGUudmFsdWUpKSk7CisgICAgICAgICAgICBt
X2F0dHJpYnV0ZXMudW5jaGVja2VkQXBwZW5kKEF0dHJpYnV0ZShRdWFsaWZpZWROYW1lKG51bGxB
dG9tKCksIGxvY2FsTmFtZSwgbnVsbEF0b20oKSksIEF0b21pY1N0cmluZyhhdHRyaWJ1dGUudmFs
dWUpKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKaW5kZXggYjE1OTkwYTlkZTVlNzk3NWJiMGQ3NTEyOWM1
ODFjZDk5ODY1NjQ3ZC4uMDkyNDU1MTU4YzVhODEzYzM2Y2U1Y2ExNDk5NDA1YWRkMTRiMDJhYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNp
dGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25T
aXRlLmNwcApAQCAtNjQxLDcgKzY0MSw3IEBAIHZvaWQgSFRNTENvbnN0cnVjdGlvblNpdGU6OnRh
a2VBbGxDaGlsZHJlbkFuZFJlcGFyZW50KEhUTUxTdGFja0l0ZW0mIG5ld1BhcmVudCwKIAogUmVm
PEVsZW1lbnQ+IEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpjcmVhdGVFbGVtZW50KEF0b21pY0hUTUxU
b2tlbiYgdG9rZW4sIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJKQogewotICAgIFF1
YWxpZmllZE5hbWUgdGFnTmFtZShudWxsQXRvbSwgdG9rZW4ubmFtZSgpLCBuYW1lc3BhY2VVUkkp
OworICAgIFF1YWxpZmllZE5hbWUgdGFnTmFtZShudWxsQXRvbSgpLCB0b2tlbi5uYW1lKCksIG5h
bWVzcGFjZVVSSSk7CiAgICAgYXV0byBlbGVtZW50ID0gb3duZXJEb2N1bWVudEZvckN1cnJlbnRO
b2RlKCkuY3JlYXRlRWxlbWVudCh0YWdOYW1lLCB0cnVlKTsKICAgICBzZXRBdHRyaWJ1dGVzKGVs
ZW1lbnQsIHRva2VuLCBtX3BhcnNlckNvbnRlbnRQb2xpY3kpOwogICAgIHJldHVybiBlbGVtZW50
OwpAQCAtNjc2LDcgKzY3Niw3IEBAIFJlZlB0cjxFbGVtZW50PiBIVE1MQ29uc3RydWN0aW9uU2l0
ZTo6Y3JlYXRlSFRNTEVsZW1lbnRPckZpbmRDdXN0b21FbGVtZW50SW50ZXJmCiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KIAotICAgICAgICBRdWFsaWZpZWROYW1lIHF1YWxpZmllZE5hbWUobnVs
bEF0b20sIGxvY2FsTmFtZSwgeGh0bWxOYW1lc3BhY2VVUkkpOworICAgICAgICBRdWFsaWZpZWRO
YW1lIHF1YWxpZmllZE5hbWUobnVsbEF0b20oKSwgbG9jYWxOYW1lLCB4aHRtbE5hbWVzcGFjZVVS
SSk7CiAgICAgICAgIGlmIChEb2N1bWVudDo6dmFsaWRhdGVDdXN0b21FbGVtZW50TmFtZShsb2Nh
bE5hbWUpID09IEN1c3RvbUVsZW1lbnROYW1lVmFsaWRhdGlvblN0YXR1czo6VmFsaWQpIHsKICAg
ICAgICAgICAgIGVsZW1lbnQgPSBIVE1MRWxlbWVudDo6Y3JlYXRlKHF1YWxpZmllZE5hbWUsIG93
bmVyRG9jdW1lbnQpOwogICAgICAgICAgICAgZWxlbWVudC0+c2V0SXNDdXN0b21FbGVtZW50VXBn
cmFkZUNhbmRpZGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTFBhcnNlcklkaW9tcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFy
c2VySWRpb21zLmNwcAppbmRleCA4YjNhZDA4MGZkNzZhNGEyYTI1NTE5M2IzZDdiM2Q4YjFkMGI1
YWE2Li40N2MxOTY2MTEzNDk5M2RmMGVhNzE5ZjA4OGE4YjczOTFmNjU4MDRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcApAQCAtNDcsNyAr
NDcsNyBAQCBzdGF0aWMgU3RyaW5nIHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhT
dHJpbmcgc3RyaW5nLCBDaGFyVHlwZSBjaGFyYWN0ZQogICAgIH0KIAogICAgIGlmIChudW1MZWFk
aW5nU3BhY2VzID09IGxlbmd0aCkKLSAgICAgICAgcmV0dXJuIHN0cmluZy5pc051bGwoKSA/IHN0
cmluZyA6IGVtcHR5QXRvbS5zdHJpbmcoKTsKKyAgICAgICAgcmV0dXJuIHN0cmluZy5pc051bGwo
KSA/IHN0cmluZyA6IGVtcHR5QXRvbSgpLnN0cmluZygpOwogCiAgICAgZm9yICg7IG51bVRyYWls
aW5nU3BhY2VzIDwgbGVuZ3RoOyArK251bVRyYWlsaW5nU3BhY2VzKSB7CiAgICAgICAgIGlmIChp
c05vdEhUTUxTcGFjZShjaGFyYWN0ZXJzW2xlbmd0aCAtIG51bVRyYWlsaW5nU3BhY2VzIC0gMV0p
KQpAQCAtNjcsNyArNjcsNyBAQCBTdHJpbmcgc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3Bh
Y2VzKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmluZy5s
ZW5ndGgoKTsKIAogICAgIGlmICghbGVuZ3RoKQotICAgICAgICByZXR1cm4gc3RyaW5nLmlzTnVs
bCgpID8gc3RyaW5nIDogZW1wdHlBdG9tLnN0cmluZygpOworICAgICAgICByZXR1cm4gc3RyaW5n
LmlzTnVsbCgpID8gc3RyaW5nIDogZW1wdHlBdG9tKCkuc3RyaW5nKCk7CiAKICAgICBpZiAoc3Ry
aW5nLmlzOEJpdCgpKQogICAgICAgICByZXR1cm4gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1M
U3BhY2VzKHN0cmluZywgc3RyaW5nLmNoYXJhY3RlcnM4KCksIGxlbmd0aCk7CkBAIC00NjIsNyAr
NDYyLDcgQEAgQXRvbWljU3RyaW5nIHBhcnNlSFRNTEhhc2hOYW1lUmVmZXJlbmNlKFN0cmluZ1Zp
ZXcgdXNlbWFwKQogewogICAgIHNpemVfdCBudW1iZXJTaWduSW5kZXggPSB1c2VtYXAuZmluZCgn
IycpOwogICAgIGlmIChudW1iZXJTaWduSW5kZXggPT0gbm90Rm91bmQpCi0gICAgICAgIHJldHVy
biBudWxsQXRvbTsKKyAgICAgICAgcmV0dXJuIG51bGxBdG9tKCk7CiAgICAgcmV0dXJuIHVzZW1h
cC5zdWJzdHJpbmcobnVtYmVyU2lnbkluZGV4ICsgMSkudG9BdG9taWNTdHJpbmcoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKaW5kZXgg
NGIyMmY0ZjhmMGEyZjk3M2MzZTJjNGRlY2YzYjk2YTRkNGRiMGFmYS4uZjRmODA2ZjBmYWI5Mzlm
MDFmMWNiMTJkNzgwYmY1NDcwZmU3YjgxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCkBAIC01NDEsMTAgKzU0MSwxMCBAQCBzdGF0aWMgSGFz
aE1hcDxBdG9taWNTdHJpbmcsIFF1YWxpZmllZE5hbWU+IGNyZWF0ZUZvcmVpZ25BdHRyaWJ1dGVz
TWFwKCkKIAogICAgIEF0b21pY1N0cmluZyB4bGlua05hbWUoInhsaW5rIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgYWRkTmFtZXNXaXRoUHJlZml4KG1hcCwgeGxp
bmtOYW1lLCBYTGlua05hbWVzOjpnZXRYTGlua0F0dHJzKCksIFhMaW5rTmFtZXM6OlhMaW5rQXR0
cnNDb3VudCk7Ci0gICAgYWRkTmFtZXNXaXRoUHJlZml4KG1hcCwgeG1sQXRvbSwgWE1MTmFtZXM6
OmdldFhNTEF0dHJzKCksIFhNTE5hbWVzOjpYTUxBdHRyc0NvdW50KTsKKyAgICBhZGROYW1lc1dp
dGhQcmVmaXgobWFwLCB4bWxBdG9tKCksIFhNTE5hbWVzOjpnZXRYTUxBdHRycygpLCBYTUxOYW1l
czo6WE1MQXR0cnNDb3VudCk7CiAKLSAgICBtYXAuYWRkKFdURjo6eG1sbnNBdG9tLCBYTUxOU05h
bWVzOjp4bWxuc0F0dHIpOwotICAgIG1hcC5hZGQoInhtbG5zOnhsaW5rIiwgUXVhbGlmaWVkTmFt
ZSh4bWxuc0F0b20sIHhsaW5rTmFtZSwgWE1MTlNOYW1lczo6eG1sbnNOYW1lc3BhY2VVUkkpKTsK
KyAgICBtYXAuYWRkKFdURjo6eG1sbnNBdG9tKCksIFhNTE5TTmFtZXM6OnhtbG5zQXR0cik7Cisg
ICAgbWFwLmFkZCgieG1sbnM6eGxpbmsiLCBRdWFsaWZpZWROYW1lKHhtbG5zQXRvbSgpLCB4bGlu
a05hbWUsIFhNTE5TTmFtZXM6OnhtbG5zTmFtZXNwYWNlVVJJKSk7CiAKICAgICByZXR1cm4gbWFw
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJh
Y2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suY3BwCmlu
ZGV4IGJkNjVlNTQ4YTg3NjIyOTBhNTEwZDNkN2Y5MmMxYWFiMTY5NDkyZjMuLjQzMjQxYTIxY2Vm
ZTkzMjc5MDUzNmUwNGJmZjQ2ODJkODY3ZjYyZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0luYmFuZFRleHRUcmFjay5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgUmVmPEluYmFuZFRl
eHRUcmFjaz4gSW5iYW5kVGV4dFRyYWNrOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgVGUKIH0KIAogSW5iYW5kVGV4dFRyYWNrOjpJbmJhbmRUZXh0VHJhY2soU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgVGV4dFRyYWNrQ2xpZW50JiBjbGllbnQsIEluYmFu
ZFRleHRUcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkKLSAgICA6IFRleHRUcmFjaygmY29udGV4
dCwgJmNsaWVudCwgZW1wdHlBdG9tLCB0cmFja1ByaXZhdGUuaWQoKSwgdHJhY2tQcml2YXRlLmxh
YmVsKCksIHRyYWNrUHJpdmF0ZS5sYW5ndWFnZSgpLCBJbkJhbmQpCisgICAgOiBUZXh0VHJhY2so
JmNvbnRleHQsICZjbGllbnQsIGVtcHR5QXRvbSgpLCB0cmFja1ByaXZhdGUuaWQoKSwgdHJhY2tQ
cml2YXRlLmxhYmVsKCksIHRyYWNrUHJpdmF0ZS5sYW5ndWFnZSgpLCBJbkJhbmQpCiAgICAgLCBt
X3ByaXZhdGUodHJhY2tQcml2YXRlKQogewogICAgIG1fcHJpdmF0ZS0+c2V0Q2xpZW50KHRoaXMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFj
ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcApp
bmRleCA0Mzk5NWEwYzc0NjM4MjE3NGEwMDhjYWIwMmNiODRiZmNmNDM1NTFhLi5jYjk4ODg1ZjQ5
MzQ3ZTRiNjUzMmUzZWVlNjFlMWIwMDQyYzIxN2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcApAQCAtMTI3LDcgKzEyNyw3IEBAIHZvaWQg
TG9hZGFibGVUZXh0VHJhY2s6Om5ld1JlZ2lvbnNBdmFpbGFibGUoVGV4dFRyYWNrTG9hZGVyKiBs
b2FkZXIpCiBBdG9taWNTdHJpbmcgTG9hZGFibGVUZXh0VHJhY2s6OmlkKCkgY29uc3QKIHsKICAg
ICBpZiAoIW1fdHJhY2tFbGVtZW50KQotICAgICAgICByZXR1cm4gZW1wdHlBdG9tOworICAgICAg
ICByZXR1cm4gZW1wdHlBdG9tKCk7CiAgICAgcmV0dXJuIG1fdHJhY2tFbGVtZW50LT5hdHRyaWJ1
dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGlkQXR0cik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVGV4dFRyYWNrLmNwcAppbmRleCA3NjI4ZDY2NTgyNzgxNDExZmM3NzllNWYxYmM4MDQ4
MzUwNDAyMjdlLi5lNjY0ZTM4YzI2ZDRjY2EwMGJiZWE4Y2NjYTRjYWNiNzdkOTZiYjVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwCkBAIC04NCwxMyArODQsMTMgQEAg
c3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgZm9yY2VkS2V5d29yZCgpCiAKIFRleHRUcmFjayog
VGV4dFRyYWNrOjpjYXB0aW9uTWVudU9mZkl0ZW0oKQogewotICAgIHN0YXRpYyBUZXh0VHJhY2sm
IG9mZiA9IFRleHRUcmFjazo6Y3JlYXRlKG51bGxwdHIsIG51bGxwdHIsICJvZmYgbWVudSBpdGVt
IiwgZW1wdHlBdG9tLCBlbXB0eUF0b20sIGVtcHR5QXRvbSkubGVha1JlZigpOworICAgIHN0YXRp
YyBUZXh0VHJhY2smIG9mZiA9IFRleHRUcmFjazo6Y3JlYXRlKG51bGxwdHIsIG51bGxwdHIsICJv
ZmYgbWVudSBpdGVtIiwgZW1wdHlBdG9tKCksIGVtcHR5QXRvbSgpLCBlbXB0eUF0b20oKSkubGVh
a1JlZigpOwogICAgIHJldHVybiAmb2ZmOwogfQogCiBUZXh0VHJhY2sqIFRleHRUcmFjazo6Y2Fw
dGlvbk1lbnVBdXRvbWF0aWNJdGVtKCkKIHsKLSAgICBzdGF0aWMgVGV4dFRyYWNrJiBhdXRvbWF0
aWMgPSBUZXh0VHJhY2s6OmNyZWF0ZShudWxscHRyLCBudWxscHRyLCAiYXV0b21hdGljIG1lbnUg
aXRlbSIsIGVtcHR5QXRvbSwgZW1wdHlBdG9tLCBlbXB0eUF0b20pLmxlYWtSZWYoKTsKKyAgICBz
dGF0aWMgVGV4dFRyYWNrJiBhdXRvbWF0aWMgPSBUZXh0VHJhY2s6OmNyZWF0ZShudWxscHRyLCBu
dWxscHRyLCAiYXV0b21hdGljIG1lbnUgaXRlbSIsIGVtcHR5QXRvbSgpLCBlbXB0eUF0b20oKSwg
ZW1wdHlBdG9tKCkpLmxlYWtSZWYoKTsKICAgICByZXR1cm4gJmF1dG9tYXRpYzsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuY3BwCmluZGV4IGJjOTUxMTFlMWVmNmM3ZGZk
MGZmMjMzNWMxM2VhZGJkMmEyMzRlYjEuLjdlYTRlMDU2YjNjYmY0MmU0YjJjNzFkNTBiMzQ4YjY4
MjdhODA4ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tCYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrQmFzZS5jcHAKQEAgLTE0
OSw3ICsxNDksNyBAQCB2b2lkIE1lZGlhVHJhY2tCYXNlOjpzZXRLaW5kSW50ZXJuYWwoY29uc3Qg
QXRvbWljU3RyaW5nJiBraW5kKQogICAgIGlmIChpc1ZhbGlkS2luZChraW5kKSkKICAgICAgICAg
bV9raW5kID0ga2luZDsKICAgICBlbHNlCi0gICAgICAgIG1fa2luZCA9IGVtcHR5QXRvbTsKKyAg
ICAgICAgbV9raW5kID0gZW1wdHlBdG9tKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUUmVnaW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUUmVnaW9uLmNwcAppbmRleCA1MjE0YTc5NWU2MTgw
NzBlNWJjNTUyZjNiNThkMmY5ZTlkZWNjN2JhLi5lMzc5ODYwMjkzN2ZhYmFlODk2ZTIyN2RlMTk5
ZTQyYTVmNjc4M2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVFJl
Z2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRSZWdpb24uY3BwCkBA
IC0xMzUsNyArMTM1LDcgQEAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgdXBLZXl3b3JkKCkK
IAogY29uc3QgQXRvbWljU3RyaW5nJiBWVFRSZWdpb246OnNjcm9sbCgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1fc2Nyb2xsID8gdXBLZXl3b3JkKCkgOiBlbXB0eUF0b207CisgICAgcmV0dXJuIG1f
c2Nyb2xsID8gdXBLZXl3b3JkKCkgOiBlbXB0eUF0b20oKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9p
ZD4gVlRUUmVnaW9uOjpzZXRTY3JvbGwoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuY3BwCmluZGV4IGY0MzQwMzI2OWYw
MGFkZGJlOTAyMjc2ODMzZTJhNDg4YjgxNzBkNzguLjE1MjhjOWUyNTVkYzE2MzA5NDE0N2UxZGRi
MzgxZDgyYjBjNWE0NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2Vi
VlRURWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVt
ZW50LmNwcApAQCAtMzcsMTQgKzM3LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGlj
IGNvbnN0IFF1YWxpZmllZE5hbWUmIG5vZGVUeXBlVG9UYWdOYW1lKFdlYlZUVE5vZGVUeXBlIG5v
ZGVUeXBlKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiBjVGFn
KG51bGxBdG9tLCAiYyIsIG51bGxBdG9tKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVh
bGlmaWVkTmFtZT4gdlRhZyhudWxsQXRvbSwgInYiLCBudWxsQXRvbSk7Ci0gICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IGxhbmdUYWcobnVsbEF0b20sICJsYW5nIiwgbnVs
bEF0b20pOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiBiVGFnKG51
bGxBdG9tLCAiYiIsIG51bGxBdG9tKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlm
aWVkTmFtZT4gdVRhZyhudWxsQXRvbSwgInUiLCBudWxsQXRvbSk7Ci0gICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IGlUYWcobnVsbEF0b20sICJpIiwgbnVsbEF0b20pOwot
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiBydWJ5VGFnKG51bGxBdG9t
LCAicnVieSIsIG51bGxBdG9tKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVk
TmFtZT4gcnRUYWcobnVsbEF0b20sICJydCIsIG51bGxBdG9tKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gY1RhZyhudWxsQXRvbSgpLCAiYyIsIG51bGxBdG9tKCkp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiB2VGFnKG51bGxBdG9t
KCksICJ2IiwgbnVsbEF0b20oKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmll
ZE5hbWU+IGxhbmdUYWcobnVsbEF0b20oKSwgImxhbmciLCBudWxsQXRvbSgpKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gYlRhZyhudWxsQXRvbSgpLCAiYiIsIG51
bGxBdG9tKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiB1VGFn
KG51bGxBdG9tKCksICJ1IiwgbnVsbEF0b20oKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFF1YWxpZmllZE5hbWU+IGlUYWcobnVsbEF0b20oKSwgImkiLCBudWxsQXRvbSgpKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gcnVieVRhZyhudWxsQXRvbSgpLCAi
cnVieSIsIG51bGxBdG9tKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWRO
YW1lPiBydFRhZyhudWxsQXRvbSgpLCAicnQiLCBudWxsQXRvbSgpKTsKICAgICBzd2l0Y2ggKG5v
ZGVUeXBlKSB7CiAgICAgY2FzZSBXZWJWVFROb2RlVHlwZUNsYXNzOgogICAgICAgICByZXR1cm4g
Y1RhZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmgKaW5kZXggYTA4
ZjQyNDEwNmFiNzQ5Njc5ZDE5OGIxOTU2ZGY0MGNlYTAyODgzOS4uYmMxOWU2NzI5ODBmNDg5MzM3
Yzk2M2JlZTkzYmQ1M2E0ZmQyZjUxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9XZWJWVFRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJW
VFRFbGVtZW50LmgKQEAgLTYyLDEzICs2MiwxMyBAQCBjbGFzcyBXZWJWVFRFbGVtZW50IGZpbmFs
IDogcHVibGljIEVsZW1lbnQgewogCiAgICAgc3RhdGljIGNvbnN0IFF1YWxpZmllZE5hbWUmIHZv
aWNlQXR0cmlidXRlTmFtZSgpCiAgICAgewotICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
UXVhbGlmaWVkTmFtZT4gdm9pY2VBdHRyKG51bGxBdG9tLCAidm9pY2UiLCBudWxsQXRvbSk7Cisg
ICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiB2b2ljZUF0dHIobnVs
bEF0b20oKSwgInZvaWNlIiwgbnVsbEF0b20oKSk7CiAgICAgICAgIHJldHVybiB2b2ljZUF0dHI7
CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBjb25zdCBRdWFsaWZpZWROYW1lJiBsYW5nQXR0cmli
dXRlTmFtZSgpCiAgICAgewotICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVk
TmFtZT4gdm9pY2VBdHRyKG51bGxBdG9tLCAibGFuZyIsIG51bGxBdG9tKTsKKyAgICAgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IHZvaWNlQXR0cihudWxsQXRvbSgpLCAi
bGFuZyIsIG51bGxBdG9tKCkpOwogICAgICAgICByZXR1cm4gdm9pY2VBdHRyOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRUb2tlbi5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRUb2tlbi5oCmluZGV4IDMxN2UxMDA2ZDVjNjJm
ZmQ2ODliMjkwNmM5Y2Q5MTdkMGI5MWY3Y2MuLjk2MDA5NDVlYTYxYjdkZjljMDdmNmNjYjEzZmEx
NmNlNThmYzU0OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRU
VG9rZW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFRva2VuLmgKQEAg
LTU4LDcgKzU4LDcgQEAgY2xhc3MgV2ViVlRUVG9rZW4gewogICAgICAgICByZXR1cm4gV2ViVlRU
VG9rZW4oVHlwZTo6Q2hhcmFjdGVyLCBjaGFyYWN0ZXJEYXRhKTsKICAgICB9CiAKLSAgICBzdGF0
aWMgV2ViVlRUVG9rZW4gU3RhcnRUYWcoY29uc3QgU3RyaW5nJiB0YWdOYW1lLCBjb25zdCBBdG9t
aWNTdHJpbmcmIGNsYXNzZXMgPSBlbXB0eUF0b20sIGNvbnN0IEF0b21pY1N0cmluZyYgYW5ub3Rh
dGlvbiA9IGVtcHR5QXRvbSkKKyAgICBzdGF0aWMgV2ViVlRUVG9rZW4gU3RhcnRUYWcoY29uc3Qg
U3RyaW5nJiB0YWdOYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIGNsYXNzZXMgPSBlbXB0eUF0b20o
KSwgY29uc3QgQXRvbWljU3RyaW5nJiBhbm5vdGF0aW9uID0gZW1wdHlBdG9tKCkpCiAgICAgewog
ICAgICAgICBXZWJWVFRUb2tlbiB0b2tlbihUeXBlOjpTdGFydFRhZywgdGFnTmFtZSk7CiAgICAg
ICAgIHRva2VuLm1fY2xhc3NlcyA9IGNsYXNzZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcAppbmRleCAzZDRmMzAzZmQxOGY4MmI3MDVjMjA1NDIwOTIxOGExOGYyMmQ1ZmY3Li41
NDJmODcxOTllZmZlNGZjMzMzMWM1MjM1YzFjZTNjMTUyMGQzNTZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTYyMyw3ICs2MjMsNyBAQCB2b2lkIEZyYW1lTG9hZGVy
OjpjbGVhcihEb2N1bWVudCogbmV3RG9jdW1lbnQsIGJvb2wgY2xlYXJXaW5kb3dQcm9wZXJ0aWVz
LCBib29sCiAgICAgICAgIG1fZnJhbWUuc2NyaXB0KCkuY2xlYXJXaW5kb3dQcm94aWVzTm90TWF0
Y2hpbmdET01XaW5kb3cobmV3RG9jdW1lbnQtPmRvbVdpbmRvdygpLCBtX2ZyYW1lLmRvY3VtZW50
KCktPnBhZ2VDYWNoZVN0YXRlKCkgPT0gRG9jdW1lbnQ6OkFib3V0VG9FbnRlclBhZ2VDYWNoZSk7
CiAKICAgICAgICAgaWYgKHNob3VsZENsZWFyV2luZG93TmFtZShtX2ZyYW1lLCAqbmV3RG9jdW1l
bnQpKQotICAgICAgICAgICAgbV9mcmFtZS50cmVlKCkuc2V0TmFtZShudWxsQXRvbSk7CisgICAg
ICAgICAgICBtX2ZyYW1lLnRyZWUoKS5zZXROYW1lKG51bGxBdG9tKCkpOwogICAgIH0KIAogICAg
IG1fZnJhbWUuc2VsZWN0aW9uKCkucHJlcGFyZUZvckRlc3RydWN0aW9uKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5oCmluZGV4IDZjYWNkZGFkOTliYjIzYzMwNjI5Yjc2YzkyN2FhYmQy
NzkyOTBmMDQuLjI3M2Q0ZDA0YWNhZWZmMzVkNTZmYzE4OWY0NmI3MDE2ODhiZDE4OGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCkBAIC0xMTgsNyArMTE4LDcgQEAgY2xhc3MgRnJh
bWVMb2FkZXIgewogICAgIHVuc2lnbmVkIGxvbmcgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShj
b25zdCBSZXNvdXJjZVJlcXVlc3QmLCBTdG9yZWRDcmVkZW50aWFscywgQ2xpZW50Q3JlZGVudGlh
bFBvbGljeSwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiYgZGF0YSk7CiAKICAgICB2b2lkIGNoYW5nZUxvY2F0aW9uKEZyYW1lTG9hZFJlcXVl
c3QmJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cmxTZWxlY3RlZChjb25zdCBVUkwmLCBj
b25zdCBTdHJpbmcmIHRhcmdldCwgRXZlbnQqLCBMb2NrSGlzdG9yeSwgTG9ja0JhY2tGb3J3YXJk
TGlzdCwgU2hvdWxkU2VuZFJlZmVycmVyLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBz
dGQ6Om9wdGlvbmFsPE5ld0ZyYW1lT3BlbmVyUG9saWN5PiA9IHN0ZDo6bnVsbG9wdCwgY29uc3Qg
QXRvbWljU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSA9IG51bGxBdG9tKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHVybFNlbGVjdGVkKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGFyZ2V0
LCBFdmVudCosIExvY2tIaXN0b3J5LCBMb2NrQmFja0ZvcndhcmRMaXN0LCBTaG91bGRTZW5kUmVm
ZXJyZXIsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIHN0ZDo6b3B0aW9uYWw8TmV3RnJh
bWVPcGVuZXJQb2xpY3k+ID0gc3RkOjpudWxsb3B0LCBjb25zdCBBdG9taWNTdHJpbmcmIGRvd25s
b2FkQXR0cmlidXRlID0gbnVsbEF0b20oKSk7CiAgICAgdm9pZCBzdWJtaXRGb3JtKFJlZjxGb3Jt
U3VibWlzc2lvbj4mJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbG9hZChPcHRpb25T
ZXQ8UmVsb2FkT3B0aW9uPiA9IHsgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvSW1hZ2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNw
cAppbmRleCAyN2MwYjczMWQyYTU3MmYwY2VmNDFkYjQ2ZDhkYWI5NTFkOWRkMTVmLi4wN2QwODNi
YWIxMDI0YmQ5N2YyYjY2Y2RjNzZiNDdkYjM0YWQ1ZjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9J
bWFnZUxvYWRlci5jcHAKQEAgLTQ3MSw3ICs0NzEsNyBAQCB2b2lkIEltYWdlTG9hZGVyOjplbGVt
ZW50RGlkTW92ZVRvTmV3RG9jdW1lbnQoKQogCiBpbmxpbmUgdm9pZCBJbWFnZUxvYWRlcjo6Y2xl
YXJGYWlsZWRMb2FkVVJMKCkKIHsKLSAgICBtX2ZhaWxlZExvYWRVUkwgPSBudWxsQXRvbTsKKyAg
ICBtX2ZhaWxlZExvYWRVUkwgPSBudWxsQXRvbSgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL05hdmlnYXRpb25BY3Rpb24uaAppbmRleCA5OWRiNDRiM2NmODk2MTVmOTU0ZDAxMTU1MTU0
NjFlMjEyYTRmOTk2Li42MTYyZjcwNTk2ZGY2YjMyNzA1ZTcxMGU1MzE2YzdmNDQzNzRmMzE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmgKQEAgLTQxLDggKzQxLDgg
QEAgY2xhc3MgRXZlbnQ7CiBjbGFzcyBOYXZpZ2F0aW9uQWN0aW9uIHsKIHB1YmxpYzoKICAgICBO
YXZpZ2F0aW9uQWN0aW9uKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgTmF2aWdhdGlvbkFjdGlvbihE
b2N1bWVudCYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIE5hdmlnYXRpb25UeXBlID0gTmF2aWdh
dGlvblR5cGU6Ok90aGVyLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gU2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3csIEV2ZW50KiA9IG51bGxwdHIsIGNv
bnN0IEF0b21pY1N0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUgPSBudWxsQXRvbSk7Ci0gICAgTmF2
aWdhdGlvbkFjdGlvbihEb2N1bWVudCYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIEZyYW1lTG9h
ZFR5cGUsIGJvb2wgaXNGb3JtU3VibWlzc2lvbiwgRXZlbnQqID0gbnVsbHB0ciwgU2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeSA9IFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3Vs
ZE5vdEFsbG93LCBjb25zdCBBdG9taWNTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlID0gbnVsbEF0
b20pOworICAgIFdFQkNPUkVfRVhQT1JUIE5hdmlnYXRpb25BY3Rpb24oRG9jdW1lbnQmLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmLCBOYXZpZ2F0aW9uVHlwZSA9IE5hdmlnYXRpb25UeXBlOjpPdGhl
ciwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3k6OlNob3VsZE5vdEFsbG93LCBFdmVudCogPSBudWxscHRyLCBjb25zdCBBdG9taWNTdHJp
bmcmIGRvd25sb2FkQXR0cmlidXRlID0gbnVsbEF0b20oKSk7CisgICAgTmF2aWdhdGlvbkFjdGlv
bihEb2N1bWVudCYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIEZyYW1lTG9hZFR5cGUsIGJvb2wg
aXNGb3JtU3VibWlzc2lvbiwgRXZlbnQqID0gbnVsbHB0ciwgU2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeSA9IFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93LCBj
b25zdCBBdG9taWNTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlID0gbnVsbEF0b20oKSk7CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCB+TmF2aWdhdGlvbkFjdGlvbigpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUG9saWN5Q2hlY2tlci5jcHAKaW5kZXggZGJlZGE4N2U0YjhlOTEwNWRiOGYwNzI4ZGI5YWZl
ODExOTc3NjRlMS4uY2YyZWEzMjhhMzdkZDgzMzc1MmUwZjliOWEzOTViMDA1MGYxYTdmNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcApAQCAtMTQ2LDcgKzE0Niw3IEBA
IHZvaWQgUG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBkCiAjZW5kaWYKIAogICAgIG1fZGVsZWdhdGVJc0RlY2lk
aW5nTmF2aWdhdGlvblBvbGljeSA9IHRydWU7Ci0gICAgbV9zdWdnZXN0ZWRGaWxlbmFtZSA9IGFj
dGlvbi5kb3dubG9hZEF0dHJpYnV0ZSgpLmlzRW1wdHkoKSA/IG51bGxBdG9tIDogYWN0aW9uLmRv
d25sb2FkQXR0cmlidXRlKCk7CisgICAgbV9zdWdnZXN0ZWRGaWxlbmFtZSA9IGFjdGlvbi5kb3du
bG9hZEF0dHJpYnV0ZSgpLmlzRW1wdHkoKSA/IG51bGxBdG9tKCkgOiBhY3Rpb24uZG93bmxvYWRB
dHRyaWJ1dGUoKTsKICAgICBtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmRpc3BhdGNoRGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihhY3Rpb24sIHJlcXVlc3QsIGZvcm1TdGF0ZSwgW3Ro
aXNdKFBvbGljeUFjdGlvbiBhY3Rpb24pIHsKICAgICAgICAgY29udGludWVBZnRlck5hdmlnYXRp
b25Qb2xpY3koYWN0aW9uKTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRl
eCBmYzcwOGY3YzE3M2RmOTQyYzJkZDkxM2Y3ZWUwNjBjN2U3MzdhMDJkLi4yYTcxNmQ5ODAzMGUz
NzAwN2MxODU2MDVmM2VmMTU3YzRmMjNlZWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3Bw
CkBAIC0yMzI1LDcgKzIzMjUsNyBAQCB2b2lkIERPTVdpbmRvdzo6c2hvd01vZGFsRGlhbG9nKGNv
bnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRpYWxvZ0ZlYQogICAgIGlmICgh
Y2FuU2hvd01vZGFsRGlhbG9nKCptX2ZyYW1lKSB8fCAhZmlyc3RXaW5kb3cuYWxsb3dQb3BVcCgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8RnJhbWU+IGRpYWxvZ0ZyYW1lID0gY3Jl
YXRlV2luZG93KHVybFN0cmluZywgZW1wdHlBdG9tLCBwYXJzZURpYWxvZ0ZlYXR1cmVzKGRpYWxv
Z0ZlYXR1cmVzU3RyaW5nLCBzY3JlZW5BdmFpbGFibGVSZWN0KG1fZnJhbWUtPnZpZXcoKSkpLCBh
Y3RpdmVXaW5kb3csICpmaXJzdEZyYW1lLCAqbV9mcmFtZSwgcHJlcGFyZURpYWxvZ0Z1bmN0aW9u
KTsKKyAgICBSZWZQdHI8RnJhbWU+IGRpYWxvZ0ZyYW1lID0gY3JlYXRlV2luZG93KHVybFN0cmlu
ZywgZW1wdHlBdG9tKCksIHBhcnNlRGlhbG9nRmVhdHVyZXMoZGlhbG9nRmVhdHVyZXNTdHJpbmcs
IHNjcmVlbkF2YWlsYWJsZVJlY3QobV9mcmFtZS0+dmlldygpKSksIGFjdGl2ZVdpbmRvdywgKmZp
cnN0RnJhbWUsICptX2ZyYW1lLCBwcmVwYXJlRGlhbG9nRnVuY3Rpb24pOwogICAgIGlmICghZGlh
bG9nRnJhbWUpCiAgICAgICAgIHJldHVybjsKICAgICBkaWFsb2dGcmFtZS0+cGFnZSgpLT5jaHJv
bWUoKS5ydW5Nb2RhbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDhj
MjY4MjkzOGYzMDEzZDUyM2NiNmU3NDM3YWRlNDVjZWY2MjMwZTkuLmU5Nzg0Mjk4MGQ1MTkzY2Rk
ZmNjNjNiZDA2Nzg5OTc0YzlhNTY3ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5j
cHAKQEAgLTM5NDQsNyArMzk0NCw3IEBAIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
TmFtZUZvclRvdWNoUG9pbnRTdGF0ZShQbGF0Zm9ybVRvdWNoUG9pbnQ6OlN0YXRlCiAgICAgICAg
IC8vIFRvdWNoU3RhdGlvbmFyeSBzdGF0ZSBpcyBub3QgY29udmVydGVkIHRvIHRvdWNoIGV2ZW50
cywgc28gZmFsbCB0aHJvdWdoIHRvIGFzc2VydC4KICAgICBkZWZhdWx0OgogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIGVtcHR5QXRvbTsKKyAgICAgICAgcmV0
dXJuIGVtcHR5QXRvbSgpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVRyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuY3BwCmlu
ZGV4IDFlMzRhODA5MzU1YWI1NWU2NmQ5M2IxMTExOTAzYzdhNTQxZmEzMzUuLjMwZDFkY2RlMDUw
MjM2MzIxNGRmNzBkZGNjNThhY2Y0ZjlhYmJhMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5j
cHAKQEAgLTQ4LDE0ICs0OCwxNCBAQCB2b2lkIEZyYW1lVHJlZTo6c2V0TmFtZShjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWUpCiAgICAgICAgIG1fdW5pcXVlTmFtZSA9IG5hbWU7CiAgICAgICAgIHJl
dHVybjsKICAgICB9Ci0gICAgbV91bmlxdWVOYW1lID0gbnVsbEF0b207IC8vIFJlbW92ZSBvdXIg
b2xkIGZyYW1lIG5hbWUgc28gaXQncyBub3QgY29uc2lkZXJlZCBpbiB1bmlxdWVDaGlsZE5hbWUu
CisgICAgbV91bmlxdWVOYW1lID0gbnVsbEF0b20oKTsgLy8gUmVtb3ZlIG91ciBvbGQgZnJhbWUg
bmFtZSBzbyBpdCdzIG5vdCBjb25zaWRlcmVkIGluIHVuaXF1ZUNoaWxkTmFtZS4KICAgICBtX3Vu
aXF1ZU5hbWUgPSBwYXJlbnQoKS0+dHJlZSgpLnVuaXF1ZUNoaWxkTmFtZShuYW1lKTsKIH0KIAog
dm9pZCBGcmFtZVRyZWU6OmNsZWFyTmFtZSgpCiB7Ci0gICAgbV9uYW1lID0gbnVsbEF0b207Ci0g
ICAgbV91bmlxdWVOYW1lID0gbnVsbEF0b207CisgICAgbV9uYW1lID0gbnVsbEF0b20oKTsKKyAg
ICBtX3VuaXF1ZU5hbWUgPSBudWxsQXRvbSgpOwogfQogCiBGcmFtZSogRnJhbWVUcmVlOjpwYXJl
bnQoKSBjb25zdCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDIwN2Q4NjAzOWU4OTZlNmRiY2EwODZj
YTliYjNkMGU4MDMxMjZkODIuLmRlNzNjMGMxYzBkYWZhODNjYzRmODkzNDRiNDM0NTZmYzQ2M2Yw
NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtNTU2LDcgKzU1Niw3IEBAIHZvaWQgUGFnZTo6c2V0
R3JvdXBOYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkKIAogY29uc3QgU3RyaW5nJiBQYWdlOjpncm91
cE5hbWUoKSBjb25zdAogewotICAgIHJldHVybiBtX2dyb3VwID8gbV9ncm91cC0+bmFtZSgpIDog
bnVsbEF0b20uc3RyaW5nKCk7CisgICAgcmV0dXJuIG1fZ3JvdXAgPyBtX2dyb3VwLT5uYW1lKCkg
OiBudWxsQXRvbSgpLnN0cmluZygpOwogfQogCiB2b2lkIFBhZ2U6OmluaXRHcm91cCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRD
b250cm9sbGVyLmNwcAppbmRleCBiOGMyNDBkNDNmZjQzOGMwYTk3Y2Y3ZGM0MDcxMjRiYTE1OGIz
YmE5Li45MDdiZGM1ZDA5YWFhYzM3NDZlMThiNTUyMTc2NjlhOWQ0MDlkM2Q1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29u
dHJvbGxlci5jcHAKQEAgLTIxNyw3ICsyMTcsNyBAQCB1bnNpZ25lZCBDb21wbGV4VGV4dENvbnRy
b2xsZXI6Om9mZnNldEZvclBvc2l0aW9uKGZsb2F0IGgsIGJvb2wgaW5jbHVkZVBhcnRpYWxHbAog
ICAgICAgICAgICAgICAgIC8vIGNvdWxkIHVzZSB0aGUgZ2x5cGgncyAibGlnYXR1cmUgY2FyZXRz
Ii4gVGhpcyBpcyBhdmFpbGFibGUgaW4gQ29yZVRleHQgdmlhIENURm9udEdldExpZ2F0dXJlQ2Fy
ZXRQb3NpdGlvbnMoKS4KICAgICAgICAgICAgICAgICB1bnNpZ25lZCBoaXRJbmRleCA9IGhpdEds
eXBoU3RhcnQgKyAoaGl0R2x5cGhFbmQgLSBoaXRHbHlwaFN0YXJ0KSAqIChtX3J1bi5sdHIoKSA/
IHggLyBhZGp1c3RlZEFkdmFuY2UgOiAxIC0geCAvIGFkanVzdGVkQWR2YW5jZSk7CiAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgc3RyaW5nTGVuZ3RoID0gY29tcGxleFRleHRSdW4uc3RyaW5nTGVu
Z3RoKCk7Ci0gICAgICAgICAgICAgICAgQ2FjaGVkVGV4dEJyZWFrSXRlcmF0b3IgY3Vyc29yUG9z
aXRpb25JdGVyYXRvcihTdHJpbmdWaWV3KGNvbXBsZXhUZXh0UnVuLmNoYXJhY3RlcnMoKSwgc3Ry
aW5nTGVuZ3RoKSwgVGV4dEJyZWFrSXRlcmF0b3I6Ok1vZGU6OkNhcmV0LCBudWxsQXRvbSk7Cisg
ICAgICAgICAgICAgICAgQ2FjaGVkVGV4dEJyZWFrSXRlcmF0b3IgY3Vyc29yUG9zaXRpb25JdGVy
YXRvcihTdHJpbmdWaWV3KGNvbXBsZXhUZXh0UnVuLmNoYXJhY3RlcnMoKSwgc3RyaW5nTGVuZ3Ro
KSwgVGV4dEJyZWFrSXRlcmF0b3I6Ok1vZGU6OkNhcmV0LCBudWxsQXRvbSgpKTsKICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBjbHVzdGVyU3RhcnQ7CiAgICAgICAgICAgICAgICAgaWYgKGN1cnNv
clBvc2l0aW9uSXRlcmF0b3IuaXNCb3VuZGFyeShoaXRJbmRleCkpCiAgICAgICAgICAgICAgICAg
ICAgIGNsdXN0ZXJTdGFydCA9IGhpdEluZGV4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKaW5kZXggNTEwZmVjZmIwYjg4M2YxNTc1ZmYyYTUwYjNi
YzU3MzY5ZTJjMTJmMS4uYjdhODE2YWIxY2U1NTY3ZTJkZDdiNTY2MGI3MGI2YzU4YzYyZjU1NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCkBA
IC0yMjUsNyArMjI1LDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBGb250Q2FjaGU6OmFsdGVybmF0
ZUZhbWlseU5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHlOYW0KICAgICAgICAgYnJlYWs7
CiAgICAgfQogCi0gICAgcmV0dXJuIG51bGxBdG9tOworICAgIHJldHVybiBudWxsQXRvbSgpOwog
fQogCiBGb250UGxhdGZvcm1EYXRhKiBGb250Q2FjaGU6OmdldENhY2hlZEZvbnRQbGF0Zm9ybURh
dGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24sIGNvbnN0IEF0b21pY1N0
cmluZyYgcGFzc2VkRmFtaWx5TmFtZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmgKaW5kZXggNWY1NTkwZjk4MTMwYmZjN2JhNzNkMzZh
ZWNmN2IxMjFmOTQwOTkzNi4uNzg2ZmFhNjc5YzlkYzNmNTlmNzYyZjU2OTY4ZWUyODVmZTRiOTc2
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERlc2Ny
aXB0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERlc2Ny
aXB0aW9uLmgKQEAgLTMwMyw3ICszMDMsNyBAQCBjbGFzcyBGb250Q2FzY2FkZURlc2NyaXB0aW9u
IDogcHVibGljIEZvbnREZXNjcmlwdGlvbiB7CiAgICAgc3RhdGljIEZvbnRWYXJpYW50Q2FwcyBp
bml0aWFsVmFyaWFudENhcHMoKSB7IHJldHVybiBGb250VmFyaWFudENhcHM6Ok5vcm1hbDsgfQog
ICAgIHN0YXRpYyBGb250VmFyaWFudEFsdGVybmF0ZXMgaW5pdGlhbFZhcmlhbnRBbHRlcm5hdGVz
KCkgeyByZXR1cm4gRm9udFZhcmlhbnRBbHRlcm5hdGVzOjpOb3JtYWw7IH0KICAgICBzdGF0aWMg
Rm9udE9wdGljYWxTaXppbmcgaW5pdGlhbE9wdGljYWxTaXppbmcoKSB7IHJldHVybiBGb250T3B0
aWNhbFNpemluZzo6RW5hYmxlZDsgfQotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGlu
aXRpYWxMb2NhbGUoKSB7IHJldHVybiBudWxsQXRvbTsgfQorICAgIHN0YXRpYyBjb25zdCBBdG9t
aWNTdHJpbmcmIGluaXRpYWxMb2NhbGUoKSB7IHJldHVybiBudWxsQXRvbSgpOyB9CiAKIHByaXZh
dGU6CiAgICAgUmVmQ291bnRlZEFycmF5PEF0b21pY1N0cmluZz4gbV9mYW1pbGllcyB7IDEgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRHZW5lcmlj
RmFtaWxpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEdlbmVy
aWNGYW1pbGllcy5jcHAKaW5kZXggNjU1ZWVlM2E0YTRmM2Y3YWZmZTAxZjM2MzkzMDcyNDFiNDk4
ZjU4Ny4uODFkMTIwMDlhM2Y1MTljMDdlOTFjY2YwYmJiZTZmMDgwZTg2MDYzZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEdlbmVyaWNGYW1pbGllcy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEdlbmVyaWNGYW1p
bGllcy5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgZ2Vu
ZXJpY0ZvbnRGYW1pbHlGb3JTY3JpcHQoY29uc3QgU2NyaXB0Rm9udEZhbWlseU1hcCYKICAgICB9
CiAgICAgaWYgKHNjcmlwdCAhPSBVU0NSSVBUX0NPTU1PTikKICAgICAgICAgcmV0dXJuIGdlbmVy
aWNGb250RmFtaWx5Rm9yU2NyaXB0KGZvbnRNYXAsIFVTQ1JJUFRfQ09NTU9OKTsKLSAgICByZXR1
cm4gZW1wdHlBdG9tOworICAgIHJldHVybiBlbXB0eUF0b20oKTsKIH0KIAogRm9udEdlbmVyaWNG
YW1pbGllczo6Rm9udEdlbmVyaWNGYW1pbGllcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlLmgKaW5kZXggMzYz
YmVjMjcyNTlmMThhNjBmZjFiMjcyYzMwYzRjMjdjZGI0ZjA4OC4uODgyZGIzNTZjM2RhYmFlODE1
OWQ2OTYwZDQ3NThlNGNmZThlNjUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGUuaApAQCAtNjksMTAgKzY5
LDEwIEBAIGNsYXNzIEluYmFuZFRleHRUcmFja1ByaXZhdGUgOiBwdWJsaWMgVHJhY2tQcml2YXRl
QmFzZSB7CiAgICAgdmlydHVhbCBib29sIGlzTWFpblByb2dyYW1Db250ZW50KCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0Vhc3lUb1JlYWQoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0RlZmF1bHQoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQotICAgIEF0b21pY1N0cmluZyBsYWJlbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGVtcHR5QXRvbTsgfQotICAgIEF0b21pY1N0cmluZyBsYW5ndWFnZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGVtcHR5QXRvbTsgfQotICAgIEF0b21pY1N0cmluZyBpZCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGVtcHR5QXRvbTsgfQotICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGlu
QmFuZE1ldGFkYXRhVHJhY2tEaXNwYXRjaFR5cGUoKSBjb25zdCB7IHJldHVybiBlbXB0eUF0b207
IH0KKyAgICBBdG9taWNTdHJpbmcgbGFiZWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBlbXB0
eUF0b20oKTsgfQorICAgIEF0b21pY1N0cmluZyBsYW5ndWFnZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGVtcHR5QXRvbSgpOyB9CisgICAgQXRvbWljU3RyaW5nIGlkKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZW1wdHlBdG9tKCk7IH0KKyAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyBpbkJh
bmRNZXRhZGF0YVRyYWNrRGlzcGF0Y2hUeXBlKCkgY29uc3QgeyByZXR1cm4gZW1wdHlBdG9tKCk7
IH0KIAogICAgIHZpcnR1YWwgaW50IHRleHRUcmFja0luZGV4KCkgY29uc3QgeyByZXR1cm4gMDsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UcmFja1By
aXZhdGVCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UcmFja1ByaXZh
dGVCYXNlLmgKaW5kZXggYTg2NWNlYmJiMWYxZTI3NDMxNjZmOWFhYTdkNmMxYzg2YThjODkzMC4u
MTkyMWE4NTY3YTM2Nzc2NTUyYWI2ZGU1NzgwYTVlMThjZTgzMzM0MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVHJhY2tQcml2YXRlQmFzZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RyYWNrUHJpdmF0ZUJhc2UuaApAQCAtNTIs
OSArNTIsOSBAQCBjbGFzcyBUcmFja1ByaXZhdGVCYXNlIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPFRyYWNrUHJpdmF0ZUJhc2U+IHsKIAogICAgIHZpcnR1YWwgVHJhY2tQcml2YXRlQmFz
ZUNsaWVudCogY2xpZW50KCkgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCBBdG9taWNTdHJpbmcg
aWQoKSBjb25zdCB7IHJldHVybiBlbXB0eUF0b207IH0KLSAgICB2aXJ0dWFsIEF0b21pY1N0cmlu
ZyBsYWJlbCgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5QXRvbTsgfQotICAgIHZpcnR1YWwgQXRvbWlj
U3RyaW5nIGxhbmd1YWdlKCkgY29uc3QgeyByZXR1cm4gZW1wdHlBdG9tOyB9CisgICAgdmlydHVh
bCBBdG9taWNTdHJpbmcgaWQoKSBjb25zdCB7IHJldHVybiBlbXB0eUF0b20oKTsgfQorICAgIHZp
cnR1YWwgQXRvbWljU3RyaW5nIGxhYmVsKCkgY29uc3QgeyByZXR1cm4gZW1wdHlBdG9tKCk7IH0K
KyAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyBsYW5ndWFnZSgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5
QXRvbSgpOyB9CiAKICAgICB2aXJ0dWFsIGludCB0cmFja0luZGV4KCkgY29uc3QgeyByZXR1cm4g
MDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsLm1t
CmluZGV4IGYwYWNiODc2YjM4YjUwMWVkOTQxYjhhMzAwMzk2YWRhN2M1YzVkNjguLmM3YWZkMzc5
NDU0ZDcyYjcwOTc0ZjJkY2IyNTlkMmRkNTY1YWU5ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BVlRyYWNrUHJpdmF0ZUFWRk9iakNJ
bXBsLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9BVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsLm1tCkBAIC0xODQsNyArMTg0LDcgQEAgQXRvbWlj
U3RyaW5nIEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw6OmlkKCkgY29uc3QKICAgICBpZiAobV9t
ZWRpYVNlbGVjdGlvbk9wdGlvbikKICAgICAgICAgcmV0dXJuIFtbbV9tZWRpYVNlbGVjdGlvbk9w
dGlvbi0+YXZNZWRpYVNlbGVjdGlvbk9wdGlvbigpIG9wdGlvbklEXSBzdHJpbmdWYWx1ZV07CiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGVtcHR5QXRvbTsKKyAgICByZXR1
cm4gZW1wdHlBdG9tKCk7CiB9CiAKIEF0b21pY1N0cmluZyBBVlRyYWNrUHJpdmF0ZUFWRk9iakNJ
bXBsOjpsYWJlbCgpIGNvbnN0CkBAIC0xOTksNyArMTk5LDcgQEAgQXRvbWljU3RyaW5nIEFWVHJh
Y2tQcml2YXRlQVZGT2JqQ0ltcGw6OmxhYmVsKCkgY29uc3QKIAogICAgIE5TQXJyYXkgKnRpdGxl
cyA9IFtBVk1ldGFkYXRhSXRlbSBtZXRhZGF0YUl0ZW1zRnJvbUFycmF5OmNvbW1vbk1ldGFkYXRh
IHdpdGhLZXk6QVZNZXRhZGF0YUNvbW1vbktleVRpdGxlIGtleVNwYWNlOkFWTWV0YWRhdGFLZXlT
cGFjZUNvbW1vbl07CiAgICAgaWYgKCFbdGl0bGVzIGNvdW50XSkKLSAgICAgICAgcmV0dXJuIGVt
cHR5QXRvbTsKKyAgICAgICAgcmV0dXJuIGVtcHR5QXRvbSgpOwogCiAgICAgLy8gSWYgcG9zc2li
bGUsIHJldHVybiBhIHRpdGxlIGluIG9uZSBvZiB0aGUgdXNlcidzIHByZWZlcnJlZCBsYW5ndWFn
ZXMuCiAgICAgTlNBcnJheSAqdGl0bGVzRm9yUHJlZmVycmVkTGFuZ3VhZ2VzID0gW0FWTWV0YWRh
dGFJdGVtIG1ldGFkYXRhSXRlbXNGcm9tQXJyYXk6dGl0bGVzIGZpbHRlcmVkQW5kU29ydGVkQWNj
b3JkaW5nVG9QcmVmZXJyZWRMYW5ndWFnZXM6W05TTG9jYWxlIHByZWZlcnJlZExhbmd1YWdlc11d
OwpAQCAtMjE2LDcgKzIxNiw3IEBAIEF0b21pY1N0cmluZyBBVlRyYWNrUHJpdmF0ZUFWRk9iakNJ
bXBsOjpsYW5ndWFnZSgpIGNvbnN0CiAgICAgICAgIHJldHVybiBsYW5ndWFnZUZvckFWTWVkaWFT
ZWxlY3Rpb25PcHRpb24obV9tZWRpYVNlbGVjdGlvbk9wdGlvbi0+YXZNZWRpYVNlbGVjdGlvbk9w
dGlvbigpKTsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBlbXB0eUF0
b207CisgICAgcmV0dXJuIGVtcHR5QXRvbSgpOwogfQogCiBTdHJpbmcgQVZUcmFja1ByaXZhdGVB
VkZPYmpDSW1wbDo6bGFuZ3VhZ2VGb3JBVkFzc2V0VHJhY2soQVZBc3NldFRyYWNrKiB0cmFjaykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZh
dGVBVkYuaAppbmRleCA1MmZkOWE2YTE3Yjg0NGMxYWNkYWJhNWJkYTJjMTUyNjYzOTQ4NGJkLi43
Mzc4OTc0ZmEwNTZkNmM4NmIxYzkwMjdiZTY2NjA4ZmJkYjA0MGQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kTWV0YWRhdGFU
ZXh0VHJhY2tQcml2YXRlQVZGLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0luYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRi5oCkBAIC00
MSw3ICs0MSw3IEBAIHN0cnVjdCBJbmNvbXBsZXRlTWV0YURhdGFDdWUgewogCiBjbGFzcyBJbmJh
bmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYgOiBwdWJsaWMgSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxJbmJhbmRNZXRhZGF0YVRleHRUcmFja1By
aXZhdGVBVkY+IGNyZWF0ZShLaW5kLCBDdWVGb3JtYXQsIGNvbnN0IEF0b21pY1N0cmluZyYgaWQg
PSBlbXB0eUF0b20pOworICAgIHN0YXRpYyBSZWY8SW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2
YXRlQVZGPiBjcmVhdGUoS2luZCwgQ3VlRm9ybWF0LCBjb25zdCBBdG9taWNTdHJpbmcmIGlkID0g
ZW1wdHlBdG9tKCkpOwogCiAgICAgfkluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRigp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0luYmFuZFRleHRUcmFja1ByaXZhdGVB
VkNGLmNwcAppbmRleCA0OGJlZThhMThjNTkyODRiYWYzZmQ2NDdhOWEwNjdlMjI3OGE2MGI3Li41
NjdhY2UzYmNhYWQ0NzBkMmJjOWM3Mjc2ZDUxMTgxZDE4NjBmMjM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUFWQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRi5jcHAKQEAgLTE0MCwx
OCArMTQwLDE4IEBAIGJvb2wgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0Y6OmlzRWFzeVRvUmVh
ZCgpIGNvbnN0CiBBdG9taWNTdHJpbmcgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0Y6OmxhYmVs
KCkgY29uc3QKIHsKICAgICBpZiAoIW1fbWVkaWFTZWxlY3Rpb25PcHRpb24pCi0gICAgICAgIHJl
dHVybiBlbXB0eUF0b207CisgICAgICAgIHJldHVybiBlbXB0eUF0b20oKTsKIAogICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gdGl0bGU7CiAKICAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gY29t
bW9uTWV0YURhdGEgPSBhZG9wdENGKEFWQ0ZNZWRpYVNlbGVjdGlvbk9wdGlvbkNvcHlDb21tb25N
ZXRhZGF0YShtZWRpYVNlbGVjdGlvbk9wdGlvbigpKSk7CiAgICAgUmV0YWluUHRyPENGQXJyYXlS
ZWY+IHRpdGxlcyA9IGFkb3B0Q0YoQVZDRk1ldGFkYXRhSXRlbUNvcHlJdGVtc1dpdGhLZXlBbmRL
ZXlTcGFjZShjb21tb25NZXRhRGF0YS5nZXQoKSwgQVZDRk1ldGFkYXRhQ29tbW9uS2V5VGl0bGUs
IEFWQ0ZNZXRhZGF0YUtleVNwYWNlQ29tbW9uKSk7CiAgICAgaWYgKCF0aXRsZXMpCi0gICAgICAg
IHJldHVybiBlbXB0eUF0b207CisgICAgICAgIHJldHVybiBlbXB0eUF0b20oKTsKIAogICAgIENG
SW5kZXggdGl0bGVzQ291bnQgPSBDRkFycmF5R2V0Q291bnQodGl0bGVzLmdldCgpKTsKICAgICBp
ZiAoIXRpdGxlc0NvdW50KQotICAgICAgICByZXR1cm4gZW1wdHlBdG9tOworICAgICAgICByZXR1
cm4gZW1wdHlBdG9tKCk7CiAKICAgICAvLyBJZiBwb3NzaWJsZSwgcmV0dXJuIGEgdGl0bGUgaW4g
b25lIG9mIHRoZSB1c2VyJ3MgcHJlZmVycmVkIGxhbmd1YWdlcy4KICAgICBSZXRhaW5QdHI8Q0ZB
cnJheVJlZj4gcHJlZmVycmVkTGFuZ3VhZ2VzID0gYWRvcHRDRihDRkxvY2FsZUNvcHlQcmVmZXJy
ZWRMYW5ndWFnZXMoKSk7CkBAIC0xNjcsMTcgKzE2NywxNyBAQCBBdG9taWNTdHJpbmcgSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUFWQ0Y6OmxhYmVsKCkgY29uc3QKICAgICAgICAgdGl0bGUgPSBhZG9w
dENGKEFWQ0ZNZXRhZGF0YUl0ZW1Db3B5U3RyaW5nVmFsdWUodGl0bGVNZXRhZGF0YSkpOwogICAg
IH0KIAotICAgIHJldHVybiB0aXRsZSA/IEF0b21pY1N0cmluZyh0aXRsZS5nZXQoKSkgOiBlbXB0
eUF0b207CisgICAgcmV0dXJuIHRpdGxlID8gQXRvbWljU3RyaW5nKHRpdGxlLmdldCgpKSA6IGVt
cHR5QXRvbSgpOwogfQogCiBBdG9taWNTdHJpbmcgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0Y6
Omxhbmd1YWdlKCkgY29uc3QKIHsKICAgICBpZiAoIW1fbWVkaWFTZWxlY3Rpb25PcHRpb24pCi0g
ICAgICAgIHJldHVybiBlbXB0eUF0b207CisgICAgICAgIHJldHVybiBlbXB0eUF0b20oKTsKIAog
ICAgIFJldGFpblB0cjxDRkxvY2FsZVJlZj4gbG9jYWxlID0gYWRvcHRDRihBVkNGTWVkaWFTZWxl
Y3Rpb25PcHRpb25Db3B5TG9jYWxlKG1lZGlhU2VsZWN0aW9uT3B0aW9uKCkpKTsKICAgICBpZiAo
IWxvY2FsZSkKLSAgICAgICAgcmV0dXJuIGVtcHR5QXRvbTsKKyAgICAgICAgcmV0dXJuIGVtcHR5
QXRvbSgpOwogCiAgICAgcmV0dXJuIENGTG9jYWxlR2V0SWRlbnRpZmllcihsb2NhbGUuZ2V0KCkp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL2NmL0luYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQ
cml2YXRlTGVnYWN5QVZDRi5jcHAKaW5kZXggOTNiOWU1M2U1M2IzNDJmODZkMDc3ZDA0ODA4Y2Iw
MDc4YWUwNGFkOC4uNGIwMzJiOWM5ZmU3NjgzOGVkMjI0YzM1YTZlYTRlMTU1Y2NmNDNmMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2Nm
L0luYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUxlZ2FjeUFWQ0YuY3BwCkBAIC04Niw3ICs4Niw3IEBAIGJvb2wgSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUxlZ2FjeUFWQ0Y6OmlzRWFzeVRvUmVhZCgpIGNvbnN0CiBBdG9taWNTdHJpbmcgSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0Y6OmxhYmVsKCkgY29uc3QKIHsKICAgICBpZiAoIW1f
cGxheWVySXRlbVRyYWNrKQotICAgICAgICByZXR1cm4gZW1wdHlBdG9tOworICAgICAgICByZXR1
cm4gZW1wdHlBdG9tKCk7CiAKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHRpdGxlOwogCkBA
IC0xMDksMTMgKzEwOSwxMyBAQCBBdG9taWNTdHJpbmcgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxl
Z2FjeUFWQ0Y6OmxhYmVsKCkgY29uc3QKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiB0
aXRsZSA/IEF0b21pY1N0cmluZyh0aXRsZS5nZXQoKSkgOiBlbXB0eUF0b207CisgICAgcmV0dXJu
IHRpdGxlID8gQXRvbWljU3RyaW5nKHRpdGxlLmdldCgpKSA6IGVtcHR5QXRvbSgpOwogfQogCiBB
dG9taWNTdHJpbmcgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0Y6Omxhbmd1YWdlKCkg
Y29uc3QKIHsKICAgICBpZiAoIW1fcGxheWVySXRlbVRyYWNrKQotICAgICAgICByZXR1cm4gZW1w
dHlBdG9tOworICAgICAgICByZXR1cm4gZW1wdHlBdG9tKCk7CiAKICAgICBSZXRhaW5QdHI8QVZD
RkFzc2V0VHJhY2tSZWY+IGFzc2V0VHJhY2sgPSBhZG9wdENGKEFWQ0ZQbGF5ZXJJdGVtVHJhY2tD
b3B5QXNzZXRUcmFjayhtX3BsYXllckl0ZW1UcmFjay5nZXQoKSkpOwogICAgIFJldGFpblB0cjxD
RlN0cmluZ1JlZj4gbGFuZ3VhZ2VDb2RlID0gYWRvcHRDRihBVkNGQXNzZXRUcmFja0NvcHlMYW5n
dWFnZUNvZGUoYXNzZXRUcmFjay5nZXQoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbQppbmRleCA2ZGViNDkyY2Fi
MDNmYWRkNjljMTI1ZTE0Y2QwMDIwNzNlYjU4M2I1Li41MmMwYmU0NTQ2MTZiNWRkYjBlOGNjZTFl
ZjIyOTJlMTNmZTVhYmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9J
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbQpAQCAtMTY2LDcgKzE2Niw3IEBAIGJvb2wg
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakM6OmlzRWFzeVRvUmVhZCgpIGNvbnN0CiBBdG9t
aWNTdHJpbmcgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakM6OmxhYmVsKCkgY29uc3QKIHsK
ICAgICBpZiAoIW1fbWVkaWFTZWxlY3Rpb25PcHRpb24pCi0gICAgICAgIHJldHVybiBlbXB0eUF0
b207CisgICAgICAgIHJldHVybiBlbXB0eUF0b20oKTsKIAogICAgIE5TU3RyaW5nICp0aXRsZSA9
IDA7CiAKQEAgLTE4MSwxMyArMTgxLDEzIEBAIEF0b21pY1N0cmluZyBJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlQVZGT2JqQzo6bGFiZWwoKSBjb25zdAogICAgICAgICAgICAgdGl0bGUgPSBbW3RpdGxl
cyBvYmplY3RBdEluZGV4OjBdIHN0cmluZ1ZhbHVlXTsKICAgICB9CiAKLSAgICByZXR1cm4gdGl0
bGUgPyBBdG9taWNTdHJpbmcodGl0bGUpIDogZW1wdHlBdG9tOworICAgIHJldHVybiB0aXRsZSA/
IEF0b21pY1N0cmluZyh0aXRsZSkgOiBlbXB0eUF0b20oKTsKIH0KIAogQXRvbWljU3RyaW5nIElu
YmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDOjpsYW5ndWFnZSgpIGNvbnN0CiB7CiAgICAgaWYg
KCFtX21lZGlhU2VsZWN0aW9uT3B0aW9uKQotICAgICAgICByZXR1cm4gZW1wdHlBdG9tOworICAg
ICAgICByZXR1cm4gZW1wdHlBdG9tKCk7CiAKICAgICByZXR1cm4gW1ttX21lZGlhU2VsZWN0aW9u
T3B0aW9uLmdldCgpIGxvY2FsZV0gbG9jYWxlSWRlbnRpZmllcl07CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRU
ZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lB
VkZPYmpDLm1tCmluZGV4IDg4MDRkYWY0YjNhNDVmYzYwNzM2OWUxOTYyN2YwODM5MmM4Yjc1MDMu
LjY1MzkyZjgwZjEzOTY0M2UwZmU4YjJhODU5ZjkyNTVhMzRhMDYwZjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRl
eHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRleHRUcmFja1ByaXZhdGVMZWdh
Y3lBVkZPYmpDLm1tCkBAIC05Nyw3ICs5Nyw3IEBAIGJvb2wgSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUxlZ2FjeUFWRk9iakM6OmlzRWFzeVRvUmVhZCgpIGNvbnN0CiBBdG9taWNTdHJpbmcgSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakM6OmxhYmVsKCkgY29uc3QKIHsKICAgICBpZiAo
IW1fcGxheWVySXRlbVRyYWNrKQotICAgICAgICByZXR1cm4gZW1wdHlBdG9tOworICAgICAgICBy
ZXR1cm4gZW1wdHlBdG9tKCk7CiAKICAgICBOU1N0cmluZyAqdGl0bGUgPSAwOwogCkBAIC0xMTIs
MTMgKzExMiwxMyBAQCBBdG9taWNTdHJpbmcgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFW
Rk9iakM6OmxhYmVsKCkgY29uc3QKICAgICAgICAgICAgIHRpdGxlID0gW1t0aXRsZXMgb2JqZWN0
QXRJbmRleDowXSBzdHJpbmdWYWx1ZV07CiAgICAgfQogCi0gICAgcmV0dXJuIHRpdGxlID8gQXRv
bWljU3RyaW5nKHRpdGxlKSA6IGVtcHR5QXRvbTsKKyAgICByZXR1cm4gdGl0bGUgPyBBdG9taWNT
dHJpbmcodGl0bGUpIDogZW1wdHlBdG9tKCk7CiB9CiAKIEF0b21pY1N0cmluZyBJbmJhbmRUZXh0
VHJhY2tQcml2YXRlTGVnYWN5QVZGT2JqQzo6bGFuZ3VhZ2UoKSBjb25zdAogewogICAgIGlmICgh
bV9wbGF5ZXJJdGVtVHJhY2spCi0gICAgICAgIHJldHVybiBlbXB0eUF0b207CisgICAgICAgIHJl
dHVybiBlbXB0eUF0b20oKTsKIAogICAgIE5TU3RyaW5nICpsYW5ndWFnZUNvZGUgPSBbW21fcGxh
eWVySXRlbVRyYWNrIGFzc2V0VHJhY2tdIGxhbmd1YWdlQ29kZV07CiAgICAgUmV0YWluUHRyPE5T
TG9jYWxlPiBsb2NhbGUgPSBhZG9wdE5TKFtbTlNMb2NhbGUgYWxsb2NdIGluaXRXaXRoTG9jYWxl
SWRlbnRpZmllcjpsYW5ndWFnZUNvZGVdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IDZm
ZGY2MWRmNDk0MDg2ZWY1MGU1ODU1NGU3ZDlkZGUzYjAxMzIwZjMuLjY0M2MwNTU2YTQ3MDFmNTQy
N2UwYmMyNGE0N2JjNmU2NTlkMmM5NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMzEx
Myw3ICszMTEzLDcgQEAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgbWV0YWRhdGFUeXBlKE5T
U3RyaW5nICphdk1ldGFkYXRhS2V5U3BhY2UpCiAgICAgaWYgKFthdk1ldGFkYXRhS2V5U3BhY2Ug
aXNFcXVhbFRvU3RyaW5nOkFWTWV0YWRhdGFLZXlTcGFjZUlEM10pCiAgICAgICAgIHJldHVybiBp
ZDNNZXRhZGF0YTsKIAotICAgIHJldHVybiBlbXB0eUF0b207CisgICAgcmV0dXJuIGVtcHR5QXRv
bSgpOwogfQogCiAjZW5kaWYKQEAgLTMxNTEsNyArMzE1MSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6bWV0YWRhdGFEaWRBcnJpdmUoUmV0YWluUHRyPE5TQXJy
YXk+IG1lCiAgICAgICAgIGlmIChDTVRJTUVfSVNfVkFMSUQoaXRlbS5kdXJhdGlvbikpCiAgICAg
ICAgICAgICBlbmQgPSBzdGFydCArIHRvTWVkaWFUaW1lKGl0ZW0uZHVyYXRpb24pOwogCi0gICAg
ICAgIEF0b21pY1N0cmluZyB0eXBlID0gbnVsbEF0b207CisgICAgICAgIEF0b21pY1N0cmluZyB0
eXBlID0gbnVsbEF0b20oKTsKICAgICAgICAgaWYgKGl0ZW0ua2V5U3BhY2UpCiAgICAgICAgICAg
ICB0eXBlID0gbWV0YWRhdGFUeXBlKGl0ZW0ua2V5U3BhY2UpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4
dC5jcHAKaW5kZXggMzZlM2QyYjA1MjNhNmI2ZjFhNWVkNzZhNTM1NTYzMzFjMDc0ZGViOC4uODEw
NzZjMzk5MWI5NzhkNjVmNzFlNzFhN2I3NTY2MTFmM2YwYTIxNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVU
ZXh0LmNwcApAQCAtMTQwMCw3ICsxNDAwLDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBGb250Q2Fj
aGU6OnBsYXRmb3JtQWx0ZXJuYXRlRmFtaWx5TmFtZShjb25zdCBBdG9taWNTdHJpbmcmIGYKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgcmV0dXJuIG51bGxBdG9tOworICAgIHJldHVybiBu
dWxsQXRvbSgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Gb250RGVzY3JpcHRpb25Db2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RGVzY3JpcHRpb25Db2NvYS5jcHAKaW5kZXggOTY5
ZGIzZTAyZDc0ZmU5ZjczZTRkMGU4ZWE2MTVmZTZjMGZhOTU5Yy4uMzFjMTVjNDRkMzBmYTc0MTcz
NjZhOTMxMzYwODdhMGJkODExOGZiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvRm9udERlc2NyaXB0aW9uQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnREZXNjcmlwdGlvbkNvY29hLmNwcApA
QCAtMzQ0LDcgKzM0NCw3IEBAIEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uIEZvbnRDYXNjYWRlRGVz
Y3JpcHRpb246OmVmZmVjdGl2ZUZhbWlseUF0KHVuc2lnbmVkIGluZGV4CiAgICAgICAgICAgICAt
LWluZGV4OwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gbnVs
bEF0b207CisgICAgcmV0dXJuIG51bGxBdG9tKCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZy
ZWVUeXBlLmNwcAppbmRleCA3NTZiMzk5MGVkOGNjZTAxNTIxNDgwZDc1NGY5MjJiOGJhMGJiNzA4
Li42ZjU3YWU0YTE5YjYzYzE1ODU1Y2Q4OWE3MzM4OGI2YTdmOTRjZTg5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlw
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9u
dENhY2hlRnJlZVR5cGUuY3BwCkBAIC0zODcsNyArMzg3LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZv
bnRQbGF0Zm9ybURhdGE+IEZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YShjb25zdCBG
b250RGUKIAogY29uc3QgQXRvbWljU3RyaW5nJiBGb250Q2FjaGU6OnBsYXRmb3JtQWx0ZXJuYXRl
RmFtaWx5TmFtZShjb25zdCBBdG9taWNTdHJpbmcmKQogewotICAgIHJldHVybiBudWxsQXRvbTsK
KyAgICByZXR1cm4gbnVsbEF0b20oKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJp
dmF0ZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0luYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IDk0MjM5
MmFjYjc3Mjk4ZjIzNjU0ZWM5NDgzYjljNzVjNDE1Y2IyOTAuLjUyNjBiZWUyMTgyOTAxNDJhZTgz
ZWNjODhlZDIwZmE5OTEyNDBmNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFt
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5i
YW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmgKQEAgLTMzLDcgKzMzLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZh
dGVHU3RyZWFtZXIgOiBwdWJsaWMgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZjxJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI+IGNy
ZWF0ZShLaW5kIGtpbmQsIEN1ZUZvcm1hdCBjdWVGb3JtYXQsIGNvbnN0IEF0b21pY1N0cmluZyYg
aWQgPSBlbXB0eUF0b20pCisgICAgc3RhdGljIFJlZjxJbmJhbmRNZXRhZGF0YVRleHRUcmFja1By
aXZhdGVHU3RyZWFtZXI+IGNyZWF0ZShLaW5kIGtpbmQsIEN1ZUZvcm1hdCBjdWVGb3JtYXQsIGNv
bnN0IEF0b21pY1N0cmluZyYgaWQgPSBlbXB0eUF0b20oKSkKICAgICB7CiAgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcihr
aW5kLCBjdWVGb3JtYXQsIGlkKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcAppbmRleCA4Zjc4YjlkMDdlM2Vj
ZTdmNzZjM2RhNzc5OGEzMWY4NDFiMmQ4NjI1Li43ODFiNmY4MDM4ZGNkZmUyN2MzNjEzODM3NDZh
YWFmY2YwNzJlYTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udENhY2hlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udENhY2hlV2luLmNwcApAQCAtNjc3LDcgKzY3Nyw3IEBAIGNvbnN0IEF0b21p
Y1N0cmluZyYgRm9udENhY2hlOjpwbGF0Zm9ybUFsdGVybmF0ZUZhbWlseU5hbWUoY29uc3QgQXRv
bWljU3RyaW5nJiBmCiAgICAgICAgICAgICByZXR1cm4gbWljcm9zb2Z0U2Fuc1NlcmlmOwogICAg
ICAgICBicmVhazsKICAgICB9Ci0gICAgcmV0dXJuIG51bGxBdG9tOworICAgIHJldHVybiBudWxs
QXRvbSgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmgKaW5kZXgg
ZjNlMWMzZGMwNWZiODRkYzJlMmQ0MmE1MWI2YzBhY2MyZjczOTZlZS4uYmU0NzY5NWFjM2IyZTJh
NTljM2RmNzU2Y2Y0YjFiODJiZGFjYTYyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFT
dHJlYW0uaApAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3Ry
ZWFtIDogcHVibGljIEF1ZGlvVHJhY2tQcml2YXRlIHsKICAgICBLaW5kIGtpbmQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBLaW5kOjpNYWluOyB9CiAgICAgQXRvbWljU3RyaW5nIGlkKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pZDsgfQogICAgIEF0b21pY1N0cmluZyBsYWJlbCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbGFiZWw7IH0KLSAgICBBdG9taWNTdHJpbmcgbGFuZ3Vh
Z2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBlbXB0eUF0b207IH0KKyAgICBBdG9taWNTdHJp
bmcgbGFuZ3VhZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBlbXB0eUF0b20oKTsgfQogICAg
IGludCB0cmFja0luZGV4KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pbmRleDsgfQogCiAg
ICAgdm9pZCBzZXRUcmFja0luZGV4KGludCBpbmRleCkgeyBtX2luZGV4ID0gaW5kZXg7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuY3BwCmluZGV4IDc4NzI5MDFlZmM3NjI2MzE1
NmJkZjE5OTJlNjc5MmY0NGZhOTZmNDUuLjBlMzg2ODRiMjIyOGIyODY1OGQzZGFlOGRkY2Y5OTA3
ODJlZTA1YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmNwcApAQCAtNzIs
MTEgKzcyLDExIEBAIGNvbnN0IEF0b21pY1N0cmluZyYgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRp
bmdzOjpmYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VTCiAgICAgY2FzZSBSZWFsdGltZU1l
ZGlhU291cmNlU2V0dGluZ3M6OlJpZ2h0OgogICAgICAgICByZXR1cm4gcmlnaHRGYWNpbmcoKTsK
ICAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VW5rbm93bjoKLSAgICAgICAg
cmV0dXJuIGVtcHR5QXRvbTsKKyAgICAgICAgcmV0dXJuIGVtcHR5QXRvbSgpOwogICAgIH0KICAg
ICAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gZW1wdHlBdG9tOworICAg
IHJldHVybiBlbXB0eUF0b20oKTsKIH0KIAogUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpW
aWRlb0ZhY2luZ01vZGUgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjp2aWRlb0ZhY2luZ01v
ZGVFbnVtKGNvbnN0IFN0cmluZyYgbW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTdHJl
YW0uaAppbmRleCAxOWE2YjY2YWM3ODI2MzQ0MjE3ZjIwMDQxMjZlMzlkN2VmMjg2MDNkLi40Yjg2
YzFiYWM5MDcwMDczNzUxZTM3M2E5Y2YxZTMzZWNhNmZjMzY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFt
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vVmlkZW9UcmFja1By
aXZhdGVNZWRpYVN0cmVhbS5oCkBAIC01OSw3ICs1OSw3IEBAIGNsYXNzIFZpZGVvVHJhY2tQcml2
YXRlTWVkaWFTdHJlYW0gZmluYWwgOiBwdWJsaWMgVmlkZW9UcmFja1ByaXZhdGUgewogICAgIEtp
bmQga2luZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEtpbmQ6Ok1haW47IH0KICAgICBBdG9taWNT
dHJpbmcgaWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lkOyB9CiAgICAgQXRvbWljU3RyaW5n
IGxhYmVsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sYWJlbDsgfQotICAgIEF0b21pY1N0cmlu
ZyBsYW5ndWFnZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGVtcHR5QXRvbTsgfQorICAgIEF0b21p
Y1N0cmluZyBsYW5ndWFnZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGVtcHR5QXRvbSgpOyB9CiAg
ICAgaW50IHRyYWNrSW5kZXgoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2luZGV4OyB9CiAKICAg
ICBSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+IG1fc3RyZWFtVHJhY2s7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKaW5kZXggYmE0OTQwNzA3N2NmM2Y3M2Rh
MDBlODM1NjY0NWU4NDg3ZTIzYjVlYi4uN2Y3YzEzOTE0YTg3MWQzMGRhOTExNmQzMzYyODYyMDc0
NzVhZjUzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1
bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcApA
QCAtNzg4LDcgKzc4OCw3IEBAIFN0cmluZyBIaXRUZXN0UmVzdWx0OjpsaW5rU3VnZ2VzdGVkRmls
ZW5hbWUoKSBjb25zdAogewogICAgIGF1dG8qIHVybEVsZW1lbnQgPSBVUkxFbGVtZW50KCk7CiAg
ICAgaWYgKCFpczxIVE1MQW5jaG9yRWxlbWVudD4odXJsRWxlbWVudCkpCi0gICAgICAgIHJldHVy
biBudWxsQXRvbTsKKyAgICAgICAgcmV0dXJuIG51bGxBdG9tKCk7CiAgICAgcmV0dXJuIFJlc291
cmNlUmVzcG9uc2U6OnNhbml0aXplU3VnZ2VzdGVkRmlsZW5hbWUodXJsRWxlbWVudC0+YXR0cmli
dXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OmRvd25sb2FkQXR0cikpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKaW5kZXggYTM3NzAy
YWE5MGMyZTk5Nzc2YmRiMmRkNmI0ZjcwNmY3NTU1YTJhYy4uNGViMDBkM2VhMzY1NGE0ZDVlNThm
OGIyNzkyMzAyMjUwNDYxNWRmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0lubGluZVRleHRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVU
ZXh0Qm94LmNwcApAQCAtNTI3LDcgKzUyNyw3IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnQo
UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwKICAg
ICBmbG9hdCBlbXBoYXNpc01hcmtPZmZzZXQgPSAwOwogICAgIGJvb2wgZW1waGFzaXNNYXJrQWJv
dmU7CiAgICAgYm9vbCBoYXNUZXh0RW1waGFzaXMgPSBlbXBoYXNpc01hcmtFeGlzdHNBbmRJc0Fi
b3ZlKGxpbmVTdHlsZSwgZW1waGFzaXNNYXJrQWJvdmUpOwotICAgIGNvbnN0IEF0b21pY1N0cmlu
ZyYgZW1waGFzaXNNYXJrID0gaGFzVGV4dEVtcGhhc2lzID8gbGluZVN0eWxlLnRleHRFbXBoYXNp
c01hcmtTdHJpbmcoKSA6IG51bGxBdG9tOworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZW1waGFz
aXNNYXJrID0gaGFzVGV4dEVtcGhhc2lzID8gbGluZVN0eWxlLnRleHRFbXBoYXNpc01hcmtTdHJp
bmcoKSA6IG51bGxBdG9tKCk7CiAgICAgaWYgKCFlbXBoYXNpc01hcmsuaXNFbXB0eSgpKQogICAg
ICAgICBlbXBoYXNpc01hcmtPZmZzZXQgPSBlbXBoYXNpc01hcmtBYm92ZSA/IC1mb250LmZvbnRN
ZXRyaWNzKCkuYXNjZW50KCkgLSBmb250LmVtcGhhc2lzTWFya0Rlc2NlbnQoZW1waGFzaXNNYXJr
KSA6IGZvbnQuZm9udE1ldHJpY3MoKS5kZXNjZW50KCkgKyBmb250LmVtcGhhc2lzTWFya0FzY2Vu
dChlbXBoYXNpc01hcmspOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGlzdEl0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJ
dGVtLmNwcAppbmRleCAwZTA2ZjY1ZDFkYjZlZGIwNTM3NTdiNDc2YTAyYTg3ZTIyYjM1MjI3Li5i
NjUwNzc5ZDFiYWE3NmY3NGU5MmUxMmM3NWFiNWEwNjc4NjE2MWI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5jcHAKQEAgLTQ1OCw3ICs0NTgsNyBAQCBjb25z
dCBTdHJpbmcmIFJlbmRlckxpc3RJdGVtOjptYXJrZXJUZXh0KCkgY29uc3QKIHsKICAgICBpZiAo
bV9tYXJrZXIpCiAgICAgICAgIHJldHVybiBtX21hcmtlci0+dGV4dCgpOwotICAgIHJldHVybiBu
dWxsQXRvbS5zdHJpbmcoKTsKKyAgICByZXR1cm4gbnVsbEF0b20oKS5zdHJpbmcoKTsKIH0KIAog
U3RyaW5nIFJlbmRlckxpc3RJdGVtOjptYXJrZXJUZXh0V2l0aFN1ZmZpeCgpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKaW5kZXggMDczMTE1YjMwYzI4OGY5YWUz
YjBkNjBkZDJjODNkYWEwNGYwMGQ2ZS4uOTJhZjBkN2NmYWI4MzhiY2EyODZjNjdhZjIxMmFmMDRl
Y2JlYzk5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcApAQCAtMTUz
NCw3ICsxNTM0LDcgQEAgaW50IFJlbmRlclRleHQ6OnByZXZpb3VzT2Zmc2V0KGludCBjdXJyZW50
KSBjb25zdAogICAgICAgICByZXR1cm4gY3VycmVudCAtIDE7CiAKICAgICBTdHJpbmdJbXBsKiB0
ZXh0SW1wbCA9IG1fdGV4dC5pbXBsKCk7Ci0gICAgQ2FjaGVkVGV4dEJyZWFrSXRlcmF0b3IgaXRl
cmF0b3IoU3RyaW5nVmlldyh0ZXh0SW1wbC0+Y2hhcmFjdGVyczE2KCksIHRleHRJbXBsLT5sZW5n
dGgoKSksIFRleHRCcmVha0l0ZXJhdG9yOjpNb2RlOjpDYXJldCwgbnVsbEF0b20pOworICAgIENh
Y2hlZFRleHRCcmVha0l0ZXJhdG9yIGl0ZXJhdG9yKFN0cmluZ1ZpZXcodGV4dEltcGwtPmNoYXJh
Y3RlcnMxNigpLCB0ZXh0SW1wbC0+bGVuZ3RoKCkpLCBUZXh0QnJlYWtJdGVyYXRvcjo6TW9kZTo6
Q2FyZXQsIG51bGxBdG9tKCkpOwogICAgIGF1dG8gcmVzdWx0ID0gaXRlcmF0b3IucHJlY2VkaW5n
KGN1cnJlbnQpLnZhbHVlX29yKGN1cnJlbnQgLSAxKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpA
QCAtMTcwNyw3ICsxNzA3LDcgQEAgaW50IFJlbmRlclRleHQ6Om5leHRPZmZzZXQoaW50IGN1cnJl
bnQpIGNvbnN0CiAgICAgICAgIHJldHVybiBjdXJyZW50ICsgMTsKIAogICAgIFN0cmluZ0ltcGwq
IHRleHRJbXBsID0gbV90ZXh0LmltcGwoKTsKLSAgICBDYWNoZWRUZXh0QnJlYWtJdGVyYXRvciBp
dGVyYXRvcihTdHJpbmdWaWV3KHRleHRJbXBsLT5jaGFyYWN0ZXJzMTYoKSwgdGV4dEltcGwtPmxl
bmd0aCgpKSwgVGV4dEJyZWFrSXRlcmF0b3I6Ok1vZGU6OkNhcmV0LCBudWxsQXRvbSk7CisgICAg
Q2FjaGVkVGV4dEJyZWFrSXRlcmF0b3IgaXRlcmF0b3IoU3RyaW5nVmlldyh0ZXh0SW1wbC0+Y2hh
cmFjdGVyczE2KCksIHRleHRJbXBsLT5sZW5ndGgoKSksIFRleHRCcmVha0l0ZXJhdG9yOjpNb2Rl
OjpDYXJldCwgbnVsbEF0b20oKSk7CiAgICAgYXV0byByZXN1bHQgPSBpdGVyYXRvci5mb2xsb3dp
bmcoY3VycmVudCkudmFsdWVfb3IoY3VycmVudCArIDEpOwogICAgIHJldHVybiByZXN1bHQ7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKaW5kZXgg
Y2MzZmEyM2Q1ZTBiMWRkMTllOWZkN2MwMDk2OGIwMTE4Mjk3MWY5YS4uN2QzNDhkYWM0ZjVmMWEw
YWFiNWZjY2ZhNzZiOTkzYTk1ZDJiNTJiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUcmVlQXNUZXh0LmNwcApAQCAtMTkwLDcgKzE5MCw3IEBAIHZvaWQgUmVuZGVyVHJl
ZUFzVGV4dDo6d3JpdGVSZW5kZXJPYmplY3QoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJlbmRlck9i
amVjdCYgbywKICAgICAgICAgU3RyaW5nIHRhZ05hbWUgPSBnZXRUYWdOYW1lKG8ubm9kZSgpKTsK
ICAgICAgICAgLy8gRklYTUU6IFRlbXBvcmFyeSBoYWNrIHRvIG1ha2UgdGVzdHMgcGFzcyBieSBz
aW11bGF0aW5nIHRoZSBvbGQgZ2VuZXJhdGVkIGNvbnRlbnQgb3V0cHV0LgogICAgICAgICBpZiAo
by5pc1BzZXVkb0VsZW1lbnQoKSB8fCAoby5wYXJlbnQoKSAmJiBvLnBhcmVudCgpLT5pc1BzZXVk
b0VsZW1lbnQoKSkpCi0gICAgICAgICAgICB0YWdOYW1lID0gZW1wdHlBdG9tOworICAgICAgICAg
ICAgdGFnTmFtZSA9IGVtcHR5QXRvbSgpOwogICAgICAgICBpZiAoIXRhZ05hbWUuaXNFbXB0eSgp
KSB7CiAgICAgICAgICAgICB0cyA8PCAiIHsiIDw8IHRhZ05hbWUgPDwgIn0iOwogICAgICAgICAg
ICAgLy8gZmxhZyBlbXB0eSBvciB1bnN0eWxlZCBBcHBsZVN0eWxlU3BhbiBiZWNhdXNlIHdlIG5l
dmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludGVyLmNwcAppbmRleCA2ZTc5YTA4
MTFjOThjOGZkMjQ5ODNjMDc1Yzg5NGQ3NzcxZjYzZTljLi4yMTkxNzdmNmY2YzI1MDg0Y2UyNmJk
MTYxMTE3N2E1YjYzZTQ3NjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
VGV4dFBhaW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRl
ci5jcHAKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIFRleHRQYWludGVyOjpwYWludFRleHRBbmRF
bXBoYXNpc01hcmtzSWZOZWVkZWQoY29uc3QgVGV4dFJ1biYgdGV4dFJ1biwgY29ucwogewogICAg
IGlmIChwYWludFN0eWxlLnBhaW50T3JkZXIgPT0gUGFpbnRPcmRlcjo6Tm9ybWFsKSB7CiAgICAg
ICAgIC8vIEZJWE1FOiBUcnVuY2F0ZSByaWdodC10by1sZWZ0IHRleHQgY29ycmVjdGx5LgotICAg
ICAgICBwYWludFRleHRXaXRoU2hhZG93cyhzaGFkb3csICptX2ZvbnQsIHRleHRSdW4sIGJveFJl
Y3QsIHRleHRPcmlnaW4sIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQsIG51bGxBdG9tLCAwLCBwYWlu
dFN0eWxlLnN0cm9rZVdpZHRoID4gMCk7CisgICAgICAgIHBhaW50VGV4dFdpdGhTaGFkb3dzKHNo
YWRvdywgKm1fZm9udCwgdGV4dFJ1biwgYm94UmVjdCwgdGV4dE9yaWdpbiwgc3RhcnRPZmZzZXQs
IGVuZE9mZnNldCwgbnVsbEF0b20oKSwgMCwgcGFpbnRTdHlsZS5zdHJva2VXaWR0aCA+IDApOwog
ICAgIH0gZWxzZSB7CiAgICAgICAgIGJvb2wgcGFpbnRTaGFkb3cgPSB0cnVlOwogICAgICAgICBh
dXRvIHRleHREcmF3aW5nTW9kZSA9IG1fY29udGV4dC50ZXh0RHJhd2luZ01vZGUoKTsKQEAgLTEz
NCwxMyArMTM0LDEzIEBAIHZvaWQgVGV4dFBhaW50ZXI6OnBhaW50VGV4dEFuZEVtcGhhc2lzTWFy
a3NJZk5lZWRlZChjb25zdCBUZXh0UnVuJiB0ZXh0UnVuLCBjb25zCiAgICAgICAgICAgICBzd2l0
Y2ggKG9yZGVyKSB7CiAgICAgICAgICAgICBjYXNlIFBhaW50VHlwZTo6RmlsbDoKICAgICAgICAg
ICAgICAgICBtX2NvbnRleHQuc2V0VGV4dERyYXdpbmdNb2RlKHRleHREcmF3aW5nTW9kZSAmIH5U
ZXh0TW9kZVN0cm9rZSk7Ci0gICAgICAgICAgICAgICAgcGFpbnRUZXh0V2l0aFNoYWRvd3MocGFp
bnRTaGFkb3cgPyBzaGFkb3cgOiBudWxscHRyLCAqbV9mb250LCB0ZXh0UnVuLCBib3hSZWN0LCB0
ZXh0T3JpZ2luLCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0LCBudWxsQXRvbSwgMCwgZmFsc2UpOwor
ICAgICAgICAgICAgICAgIHBhaW50VGV4dFdpdGhTaGFkb3dzKHBhaW50U2hhZG93ID8gc2hhZG93
IDogbnVsbHB0ciwgKm1fZm9udCwgdGV4dFJ1biwgYm94UmVjdCwgdGV4dE9yaWdpbiwgc3RhcnRP
ZmZzZXQsIGVuZE9mZnNldCwgbnVsbEF0b20oKSwgMCwgZmFsc2UpOwogICAgICAgICAgICAgICAg
IHBhaW50U2hhZG93ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgbV9jb250ZXh0LnNldFRleHRE
cmF3aW5nTW9kZSh0ZXh0RHJhd2luZ01vZGUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgY2FzZSBQYWludFR5cGU6OlN0cm9rZToKICAgICAgICAgICAgICAgICBtX2NvbnRl
eHQuc2V0VGV4dERyYXdpbmdNb2RlKHRleHREcmF3aW5nTW9kZSAmIH5UZXh0TW9kZUZpbGwpOwot
ICAgICAgICAgICAgICAgIHBhaW50VGV4dFdpdGhTaGFkb3dzKHBhaW50U2hhZG93ID8gc2hhZG93
IDogbnVsbHB0ciwgKm1fZm9udCwgdGV4dFJ1biwgYm94UmVjdCwgdGV4dE9yaWdpbiwgc3RhcnRP
ZmZzZXQsIGVuZE9mZnNldCwgbnVsbEF0b20sIDAsIHBhaW50U3R5bGUuc3Ryb2tlV2lkdGggPiAw
KTsKKyAgICAgICAgICAgICAgICBwYWludFRleHRXaXRoU2hhZG93cyhwYWludFNoYWRvdyA/IHNo
YWRvdyA6IG51bGxwdHIsICptX2ZvbnQsIHRleHRSdW4sIGJveFJlY3QsIHRleHRPcmlnaW4sIHN0
YXJ0T2Zmc2V0LCBlbmRPZmZzZXQsIG51bGxBdG9tKCksIDAsIHBhaW50U3R5bGUuc3Ryb2tlV2lk
dGggPiAwKTsKICAgICAgICAgICAgICAgICBwYWludFNoYWRvdyA9IGZhbHNlOwogICAgICAgICAg
ICAgICAgIG1fY29udGV4dC5zZXRUZXh0RHJhd2luZ01vZGUodGV4dERyYXdpbmdNb2RlKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuY3BwCmluZGV4IDBiZTJkNzMxYTFkMWUyNmMzOWVjZWI3Y2VlN2YwZTgxYTY0
OWE4N2EuLmNlNTFkM2YyN2E3YmNkMGZhZjBkNjM2NjRjNDNmZWM0MmNlNWU2MDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcApAQCAtMTMzMCw3
ICsxMzMwLDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBSZW5kZXJTdHlsZTo6dGV4dEVtcGhhc2lz
TWFya1N0cmluZygpIGNvbnN0CiB7CiAgICAgc3dpdGNoICh0ZXh0RW1waGFzaXNNYXJrKCkpIHsK
ICAgICBjYXNlIFRleHRFbXBoYXNpc01hcmtOb25lOgotICAgICAgICByZXR1cm4gbnVsbEF0b207
CisgICAgICAgIHJldHVybiBudWxsQXRvbSgpOwogICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFya0N1
c3RvbToKICAgICAgICAgcmV0dXJuIHRleHRFbXBoYXNpc0N1c3RvbU1hcmsoKTsKICAgICBjYXNl
IFRleHRFbXBoYXNpc01hcmtEb3Q6IHsKQEAgLTEzNjAsMTEgKzEzNjAsMTEgQEAgY29uc3QgQXRv
bWljU3RyaW5nJiBSZW5kZXJTdHlsZTo6dGV4dEVtcGhhc2lzTWFya1N0cmluZygpIGNvbnN0CiAg
ICAgfQogICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFya0F1dG86CiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gbnVsbEF0b207CisgICAgICAgIHJldHVybiBudWxs
QXRvbSgpOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBu
dWxsQXRvbTsKKyAgICByZXR1cm4gbnVsbEF0b20oKTsKIH0KIAogI2lmIEVOQUJMRShEQVNIQk9B
UkRfU1VQUE9SVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmgKaW5kZXggZmMxNGNlNTc4N2EzNTk2NjU1MzA1OTZkYjFlY2EyMmFjNmUwMWFkMi4uNGIyMTVh
OWM0YTcwMzFkZGQ1YjQ3ZDA2OWJmN2JlOGFmZjEzZGUxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTE1MjIsNyArMTUyMiw3IEBAIGNsYXNz
IFJlbmRlclN0eWxlIHsKICAgICBzdGF0aWMgc2hvcnQgaW5pdGlhbEh5cGhlbmF0aW9uTGltaXRC
ZWZvcmUoKSB7IHJldHVybiAtMTsgfQogICAgIHN0YXRpYyBzaG9ydCBpbml0aWFsSHlwaGVuYXRp
b25MaW1pdEFmdGVyKCkgeyByZXR1cm4gLTE7IH0KICAgICBzdGF0aWMgc2hvcnQgaW5pdGlhbEh5
cGhlbmF0aW9uTGltaXRMaW5lcygpIHsgcmV0dXJuIC0xOyB9Ci0gICAgc3RhdGljIGNvbnN0IEF0
b21pY1N0cmluZyYgaW5pdGlhbEh5cGhlbmF0aW9uU3RyaW5nKCkgeyByZXR1cm4gbnVsbEF0b207
IH0KKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBpbml0aWFsSHlwaGVuYXRpb25TdHJp
bmcoKSB7IHJldHVybiBudWxsQXRvbSgpOyB9CiAgICAgc3RhdGljIEVCb3JkZXJGaXQgaW5pdGlh
bEJvcmRlckZpdCgpIHsgcmV0dXJuIEJvcmRlckZpdEJvcmRlcjsgfQogICAgIHN0YXRpYyBFUmVz
aXplIGluaXRpYWxSZXNpemUoKSB7IHJldHVybiBSRVNJWkVfTk9ORTsgfQogICAgIHN0YXRpYyBD
b250cm9sUGFydCBpbml0aWFsQXBwZWFyYW5jZSgpIHsgcmV0dXJuIE5vQ29udHJvbFBhcnQ7IH0K
QEAgLTE1NDksNyArMTU0OSw3IEBAIGNsYXNzIFJlbmRlclN0eWxlIHsKICAgICBzdGF0aWMgQ29s
b3IgaW5pdGlhbFRleHRFbXBoYXNpc0NvbG9yKCkgeyByZXR1cm4gVGV4dEVtcGhhc2lzRmlsbEZp
bGxlZDsgfQogICAgIHN0YXRpYyBUZXh0RW1waGFzaXNGaWxsIGluaXRpYWxUZXh0RW1waGFzaXNG
aWxsKCkgeyByZXR1cm4gVGV4dEVtcGhhc2lzRmlsbEZpbGxlZDsgfQogICAgIHN0YXRpYyBUZXh0
RW1waGFzaXNNYXJrIGluaXRpYWxUZXh0RW1waGFzaXNNYXJrKCkgeyByZXR1cm4gVGV4dEVtcGhh
c2lzTWFya05vbmU7IH0KLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBpbml0aWFsVGV4
dEVtcGhhc2lzQ3VzdG9tTWFyaygpIHsgcmV0dXJuIG51bGxBdG9tOyB9CisgICAgc3RhdGljIGNv
bnN0IEF0b21pY1N0cmluZyYgaW5pdGlhbFRleHRFbXBoYXNpc0N1c3RvbU1hcmsoKSB7IHJldHVy
biBudWxsQXRvbSgpOyB9CiAgICAgc3RhdGljIFRleHRFbXBoYXNpc1Bvc2l0aW9uIGluaXRpYWxU
ZXh0RW1waGFzaXNQb3NpdGlvbigpIHsgcmV0dXJuIFRleHRFbXBoYXNpc1Bvc2l0aW9uT3ZlciB8
IFRleHRFbXBoYXNpc1Bvc2l0aW9uUmlnaHQ7IH0KICAgICBzdGF0aWMgUnVieVBvc2l0aW9uIGlu
aXRpYWxSdWJ5UG9zaXRpb24oKSB7IHJldHVybiBSdWJ5UG9zaXRpb25CZWZvcmU7IH0KICAgICBz
dGF0aWMgTGluZUJveENvbnRhaW4gaW5pdGlhbExpbmVCb3hDb250YWluKCkgeyByZXR1cm4gTGlu
ZUJveENvbnRhaW5CbG9jayB8IExpbmVCb3hDb250YWluSW5saW5lIHwgTGluZUJveENvbnRhaW5S
ZXBsYWNlZDsgfQpAQCAtMTU2Miw3ICsxNTYyLDcgQEAgY2xhc3MgUmVuZGVyU3R5bGUgewogICAg
IHN0YXRpYyBTdHlsZUltYWdlKiBpbml0aWFsTWFza0JveEltYWdlU291cmNlKCkgeyByZXR1cm4g
bnVsbHB0cjsgfQogICAgIHN0YXRpYyBQcmludENvbG9yQWRqdXN0IGluaXRpYWxQcmludENvbG9y
QWRqdXN0KCkgeyByZXR1cm4gUHJpbnRDb2xvckFkanVzdEVjb25vbXk7IH0KICAgICBzdGF0aWMg
UXVvdGVzRGF0YSogaW5pdGlhbFF1b3RlcygpIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICBzdGF0
aWMgY29uc3QgQXRvbWljU3RyaW5nJiBpbml0aWFsQ29udGVudEFsdFRleHQoKSB7IHJldHVybiBl
bXB0eUF0b207IH0KKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBpbml0aWFsQ29udGVu
dEFsdFRleHQoKSB7IHJldHVybiBlbXB0eUF0b20oKTsgfQogCiAjaWYgRU5BQkxFKENTUzNfVEVY
VCkKICAgICBzdGF0aWMgVGV4dEluZGVudExpbmUgaW5pdGlhbFRleHRJbmRlbnRMaW5lKCkgeyBy
ZXR1cm4gVGV4dEluZGVudEZpcnN0TGluZTsgfQpAQCAtMTYzNywxMiArMTYzNywxMiBAQCBjbGFz
cyBSZW5kZXJTdHlsZSB7CiAKICAgICBzdGF0aWMgdW5zaWduZWQgaW5pdGlhbFRhYlNpemUoKSB7
IHJldHVybiA4OyB9CiAKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBpbml0aWFsTGlu
ZUdyaWQoKSB7IHJldHVybiBudWxsQXRvbTsgfQorICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJp
bmcmIGluaXRpYWxMaW5lR3JpZCgpIHsgcmV0dXJuIG51bGxBdG9tKCk7IH0KICAgICBzdGF0aWMg
TGluZVNuYXAgaW5pdGlhbExpbmVTbmFwKCkgeyByZXR1cm4gTGluZVNuYXBOb25lOyB9CiAgICAg
c3RhdGljIExpbmVBbGlnbiBpbml0aWFsTGluZUFsaWduKCkgeyByZXR1cm4gTGluZUFsaWduTm9u
ZTsgfQogCi0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgaW5pdGlhbEZsb3dUaHJlYWQo
KSB7IHJldHVybiBudWxsQXRvbTsgfQotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGlu
aXRpYWxSZWdpb25UaHJlYWQoKSB7IHJldHVybiBudWxsQXRvbTsgfQorICAgIHN0YXRpYyBjb25z
dCBBdG9taWNTdHJpbmcmIGluaXRpYWxGbG93VGhyZWFkKCkgeyByZXR1cm4gbnVsbEF0b20oKTsg
fQorICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGluaXRpYWxSZWdpb25UaHJlYWQoKSB7
IHJldHVybiBudWxsQXRvbSgpOyB9CiAgICAgc3RhdGljIFJlZ2lvbkZyYWdtZW50IGluaXRpYWxS
ZWdpb25GcmFnbWVudCgpIHsgcmV0dXJuIEF1dG9SZWdpb25GcmFnbWVudDsgfQogCiAgICAgc3Rh
dGljIEludFNpemUgaW5pdGlhbEluaXRpYWxMZXR0ZXIoKSB7IHJldHVybiBJbnRTaXplKCk7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5jcHAKaW5kZXggNjMwMmM1NTY1NjkyYzM0ZDYyZWVh
NmFlYjg4MjA4MmIyYjNmY2E0OS4uODMwN2JkMTE4YTkwMDNhZGIyMGI2YjM1NGZjMjI1NDgxNTQy
MGYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5jcHAKQEAgLTMyNSw3ICszMjUsNyBA
QCB2b2lkIFNjb3BlOjpjb2xsZWN0QWN0aXZlU3R5bGVTaGVldHMoVmVjdG9yPFJlZlB0cjxTdHls
ZVNoZWV0Pj4mIHNoZWV0cykKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmICghbGlua0VsZW1lbnQuc2hlZXQoKSkKLSAg
ICAgICAgICAgICAgICAgICAgdGl0bGUgPSBudWxsQXRvbTsKKyAgICAgICAgICAgICAgICAgICAg
dGl0bGUgPSBudWxsQXRvbSgpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gR2V0IHRo
ZSBjdXJyZW50IHByZWZlcnJlZCBzdHlsZXNldC4gVGhpcyBpcyB0aGUKICAgICAgICAgICAgIC8v
IHNldCBvZiBzaGVldHMgdGhhdCB3aWxsIGJlIGVuYWJsZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVu
dC5jcHAKaW5kZXggYjlmOGI2YjllMzE0ZTljNDA5ZGU0MGIwYjVkYTdiZDEwMmI3MDAwYi4uNWQ4
NzE2M2U2MmE5ZTIwZjVhZWIzNGU1MGM0NjRlZWFjODkzOWUwOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdF
bGVtZW50LmNwcApAQCAtMTAzMiw3ICsxMDMyLDcgQEAgUmVmUHRyPERlcHJlY2F0ZWRDU1NPTVZh
bHVlPiBTVkdFbGVtZW50OjpnZXRQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgU3RyaW5nJgog
ICAgIGlmICghaGFzQXR0cmlidXRlc1dpdGhvdXRVcGRhdGUoKSkKICAgICAgICAgcmV0dXJuIDA7
CiAKLSAgICBRdWFsaWZpZWROYW1lIGF0dHJpYnV0ZU5hbWUobnVsbEF0b20sIG5hbWUsIG51bGxB
dG9tKTsKKyAgICBRdWFsaWZpZWROYW1lIGF0dHJpYnV0ZU5hbWUobnVsbEF0b20oKSwgbmFtZSwg
bnVsbEF0b20oKSk7CiAgICAgY29uc3QgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBmaW5kQXR0cmli
dXRlQnlOYW1lKGF0dHJpYnV0ZU5hbWUpOwogICAgIGlmICghYXR0cmlidXRlKQogICAgICAgICBy
ZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCmluZGV4IDI4M2U2Yzg5NjU0OTA0Yjg4OTgy
YmY1ZWI5Y2Q4NWFiZDQ5ZTEwNjQuLjA5MDNlNDY4YjUzMDBiMTNkNzg2Yjk3MmRlOTBjNWIwMzFm
ZWI3YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaApAQCAtMjE4LDcgKzIxOCw3IEBAIHN0cnVj
dCBTVkdBdHRyaWJ1dGVIYXNoVHJhbnNsYXRvciB7CiAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2go
Y29uc3QgUXVhbGlmaWVkTmFtZSYga2V5KQogICAgIHsKICAgICAgICAgaWYgKGtleS5oYXNQcmVm
aXgoKSkgewotICAgICAgICAgICAgUXVhbGlmaWVkTmFtZUNvbXBvbmVudHMgY29tcG9uZW50cyA9
IHsgbnVsbEF0b20uaW1wbCgpLCBrZXkubG9jYWxOYW1lKCkuaW1wbCgpLCBrZXkubmFtZXNwYWNl
VVJJKCkuaW1wbCgpIH07CisgICAgICAgICAgICBRdWFsaWZpZWROYW1lQ29tcG9uZW50cyBjb21w
b25lbnRzID0geyBudWxsQXRvbSgpLmltcGwoKSwga2V5LmxvY2FsTmFtZSgpLmltcGwoKSwga2V5
Lm5hbWVzcGFjZVVSSSgpLmltcGwoKSB9OwogICAgICAgICAgICAgcmV0dXJuIGhhc2hDb21wb25l
bnRzKGNvbXBvbmVudHMpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBEZWZhdWx0SGFzaDxR
dWFsaWZpZWROYW1lPjo6SGFzaDo6aGFzaChrZXkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1l
bnQuY3BwCmluZGV4IGM1MWZjYTkwYmQyOWU3OTc1YzE5Y2JhMDQ4Y2ZkOGM4OWE1ZTViYzIuLjMz
YzI4ZjI1NjM4NDE3YzVhZjhkMzUyMTVjMmMyYzZhMmI2N2IyZTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVXNlRWxlbWVudC5jcHAKQEAgLTE0Miw4ICsxNDIsOCBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6
OnRyYW5zZmVyU2l6ZUF0dHJpYnV0ZXNUb1RhcmdldENsb25lKFNWR0VsZW1lbnQmIHNoYWRvd0Vs
ZW1lbgogICAgICAgICAvLyBTcGVjICg8dXNlPiBvbiA8c3ZnPik6IElmIGF0dHJpYnV0ZXMgd2lk
dGggYW5kL29yIGhlaWdodCBhcmUgcHJvdmlkZWQgb24gdGhlICd1c2UnIGVsZW1lbnQsIHRoZW4g
dGhlc2UKICAgICAgICAgLy8gdmFsdWVzIHdpbGwgb3ZlcnJpZGUgdGhlIGNvcnJlc3BvbmRpbmcg
YXR0cmlidXRlcyBvbiB0aGUgJ3N2ZycgaW4gdGhlIGdlbmVyYXRlZCB0cmVlLgogICAgICAgICBT
VkdFbGVtZW50KiBjb3JyZXNwb25kaW5nRWxlbWVudCA9IHNoYWRvd0VsZW1lbnQuY29ycmVzcG9u
ZGluZ0VsZW1lbnQoKTsKLSAgICAgICAgc2hhZG93RWxlbWVudC5zZXRBdHRyaWJ1dGUoU1ZHTmFt
ZXM6OndpZHRoQXR0ciwgKHdpZHRoSXNWYWxpZCgpICYmIHdpZHRoKCkudmFsdWVJblNwZWNpZmll
ZFVuaXRzKCkpID8gQXRvbWljU3RyaW5nKHdpZHRoKCkudmFsdWVBc1N0cmluZygpKSA6IChjb3Jy
ZXNwb25kaW5nRWxlbWVudCA/IGNvcnJlc3BvbmRpbmdFbGVtZW50LT5nZXRBdHRyaWJ1dGUoU1ZH
TmFtZXM6OndpZHRoQXR0cikgOiBudWxsQXRvbSkpOwotICAgICAgICBzaGFkb3dFbGVtZW50LnNl
dEF0dHJpYnV0ZShTVkdOYW1lczo6aGVpZ2h0QXR0ciwgKGhlaWdodElzVmFsaWQoKSAmJiBoZWln
aHQoKS52YWx1ZUluU3BlY2lmaWVkVW5pdHMoKSkgPyBBdG9taWNTdHJpbmcoaGVpZ2h0KCkudmFs
dWVBc1N0cmluZygpKSA6IChjb3JyZXNwb25kaW5nRWxlbWVudCA/IGNvcnJlc3BvbmRpbmdFbGVt
ZW50LT5nZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6OmhlaWdodEF0dHIpIDogbnVsbEF0b20pKTsKKyAg
ICAgICAgc2hhZG93RWxlbWVudC5zZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6OndpZHRoQXR0ciwgKHdp
ZHRoSXNWYWxpZCgpICYmIHdpZHRoKCkudmFsdWVJblNwZWNpZmllZFVuaXRzKCkpID8gQXRvbWlj
U3RyaW5nKHdpZHRoKCkudmFsdWVBc1N0cmluZygpKSA6IChjb3JyZXNwb25kaW5nRWxlbWVudCA/
IGNvcnJlc3BvbmRpbmdFbGVtZW50LT5nZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6OndpZHRoQXR0cikg
OiBudWxsQXRvbSgpKSk7CisgICAgICAgIHNoYWRvd0VsZW1lbnQuc2V0QXR0cmlidXRlKFNWR05h
bWVzOjpoZWlnaHRBdHRyLCAoaGVpZ2h0SXNWYWxpZCgpICYmIGhlaWdodCgpLnZhbHVlSW5TcGVj
aWZpZWRVbml0cygpKSA/IEF0b21pY1N0cmluZyhoZWlnaHQoKS52YWx1ZUFzU3RyaW5nKCkpIDog
KGNvcnJlc3BvbmRpbmdFbGVtZW50ID8gY29ycmVzcG9uZGluZ0VsZW1lbnQtPmdldEF0dHJpYnV0
ZShTVkdOYW1lczo6aGVpZ2h0QXR0cikgOiBudWxsQXRvbSgpKSk7CiAgICAgfQogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwCmluZGV4IGEw
NGJlM2Y5ODRhNjIxNTA4ZDhiYjk1OGIyNjc1YWYzNjU3YzdlY2UuLjQ0Yzg5MTA0YTM4NDQzZGEw
NDMwNzJjZjA1MTRlZGU5NTdiZWFkZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9h
bmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmlt
YXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwCkBAIC0yMTYsMTMgKzIxNiwxMyBAQCBpbmxpbmUgUXVh
bGlmaWVkTmFtZSBTVkdTTUlMRWxlbWVudDo6Y29uc3RydWN0QXR0cmlidXRlTmFtZSgpIGNvbnN0
CiAgICAgc3RkOjp0aWUocHJlZml4LCBsb2NhbE5hbWUpID0gcGFyc2VSZXN1bHQucmVsZWFzZVJl
dHVyblZhbHVlKCk7CiAKICAgICBpZiAocHJlZml4LmlzTnVsbCgpKQotICAgICAgICByZXR1cm4g
eyBudWxsQXRvbSwgbG9jYWxOYW1lLCBudWxsQXRvbSB9OworICAgICAgICByZXR1cm4geyBudWxs
QXRvbSgpLCBsb2NhbE5hbWUsIG51bGxBdG9tKCkgfTsKIAogICAgIGF1dG8gbmFtZXNwYWNlVVJJ
ID0gbG9va3VwTmFtZXNwYWNlVVJJKHByZWZpeCk7CiAgICAgaWYgKG5hbWVzcGFjZVVSSS5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiBhbnlRTmFtZSgpOwogCi0gICAgcmV0dXJuIHsgbnVsbEF0
b20sIGxvY2FsTmFtZSwgbmFtZXNwYWNlVVJJIH07CisgICAgcmV0dXJuIHsgbnVsbEF0b20oKSwg
bG9jYWxOYW1lLCBuYW1lc3BhY2VVUkkgfTsKIH0KIAogaW5saW5lIHZvaWQgU1ZHU01JTEVsZW1l
bnQ6OnVwZGF0ZUF0dHJpYnV0ZU5hbWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1G
YWN0b3J5LmNwcAppbmRleCBlOWE5ZDA0NDYyNDUwZDE1YTZkNDAwYWI1ZDE1ZWEwNTFjYmY5ZmNh
Li42ODkwMDY1NjUzOWU3NWM3MjNmNTRlZGVhN2YzZTZlZGI0ZTEyMGJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIHZvaWQg
TW9ja0NETUluc3RhbmNlOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwg
Y29uc3QgQXRvbWljU3RyaW5nCiB7CiAgICAgTW9ja0NETUZhY3RvcnkqIGZhY3RvcnkgPSBtX2Nk
bSA/IG1fY2RtLT5mYWN0b3J5KCkgOiBudWxscHRyOwogICAgIGlmICghZmFjdG9yeSkgewotICAg
ICAgICBjYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBlbXB0eUF0b20sIGZhbHNlLCBT
dWNjZXNzVmFsdWU6OkZhaWxlZCk7CisgICAgICAgIGNhbGxiYWNrKFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCksIGVtcHR5QXRvbSgpLCBmYWxzZSwgU3VjY2Vzc1ZhbHVlOjpGYWlsZWQpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MRXJy
b3JzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMuY3BwCmluZGV4IGQ5NjdmMTNh
Y2U2ODgxNzBlNWM3M2RiNzVmNzQ5YzNkNTk0Zjg0YzUuLmIxNDMyZDFkMDk5MjBkMDQ0YTYxNzc3
ZmEyZmU1N2MyYzdkMzNhMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxFcnJv
cnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMuY3BwCkBAIC04OSw3ICs4
OSw3IEBAIHZvaWQgWE1MRXJyb3JzOjphcHBlbmRFcnJvck1lc3NhZ2UoY29uc3QgU3RyaW5nJiB0
eXBlU3RyaW5nLCBUZXh0UG9zaXRpb24gcG9zaXRpCiAKIHN0YXRpYyBpbmxpbmUgUmVmPEVsZW1l
bnQ+IGNyZWF0ZVhIVE1MUGFyc2VyRXJyb3JIZWFkZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25z
dCBTdHJpbmcmIGVycm9yTWVzc2FnZXMpCiB7Ci0gICAgUmVmPEVsZW1lbnQ+IHJlcG9ydEVsZW1l
bnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFF1YWxpZmllZE5hbWUobnVsbEF0b20sICJwYXJz
ZXJlcnJvciIsIHhodG1sTmFtZXNwYWNlVVJJKSwgdHJ1ZSk7CisgICAgUmVmPEVsZW1lbnQ+IHJl
cG9ydEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFF1YWxpZmllZE5hbWUobnVsbEF0
b20oKSwgInBhcnNlcmVycm9yIiwgeGh0bWxOYW1lc3BhY2VVUkkpLCB0cnVlKTsKIAogICAgIFZl
Y3RvcjxBdHRyaWJ1dGU+IHJlcG9ydEF0dHJpYnV0ZXM7CiAgICAgcmVwb3J0QXR0cmlidXRlcy5h
cHBlbmQoQXR0cmlidXRlKHN0eWxlQXR0ciwgImRpc3BsYXk6IGJsb2NrOyB3aGl0ZS1zcGFjZTog
cHJlOyBib3JkZXI6IDJweCBzb2xpZCAjYzc3OyBwYWRkaW5nOiAwIDFlbSAwIDFlbTsgbWFyZ2lu
OiAxZW07IGJhY2tncm91bmQtY29sb3I6ICNmZGQ7IGNvbG9yOiBibGFjayIpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFN0ZXAuY3BwIGIvU291cmNlL1dlYkNvcmUveG1s
L1hQYXRoU3RlcC5jcHAKaW5kZXggYzU1N2UxMzZlODdhZGJhZDA1MTg4MWFiMTc1NzAyMzlhZmE0
OWUzNC4uOGM5MjdiZmYzZWViNjkwODFmMDQ3YmYwZjI2ZTZkOGVlZTkyYzVjZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoU3RlcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
eG1sL1hQYXRoU3RlcC5jcHAKQEAgLTE4NCw3ICsxODQsNyBAQCBpbmxpbmUgYm9vbCBub2RlTWF0
Y2hlc0Jhc2ljVGVzdChOb2RlJiBub2RlLCBTdGVwOjpBeGlzIGF4aXMsIGNvbnN0IFN0ZXA6Ok5v
ZGVUZQogICAgICAgICAgICAgICAgIGlmIChub2RlLm5hbWVzcGFjZVVSSSgpID09IFhNTE5TTmFt
ZXM6OnhtbG5zTmFtZXNwYWNlVVJJKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICAgICAgICAgICAgICBpZiAobmFtZSA9PSBzdGFyQXRvbSkKKyAgICAgICAgICAgICAg
ICBpZiAobmFtZSA9PSBzdGFyQXRvbSgpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmFt
ZXNwYWNlVVJJLmlzRW1wdHkoKSB8fCBub2RlLm5hbWVzcGFjZVVSSSgpID09IG5hbWVzcGFjZVVS
STsKIAogICAgICAgICAgICAgICAgIHJldHVybiBub2RlLmxvY2FsTmFtZSgpID09IG5hbWUgJiYg
bm9kZS5uYW1lc3BhY2VVUkkoKSA9PSBuYW1lc3BhY2VVUkk7CkBAIC0xOTgsNyArMTk4LDcgQEAg
aW5saW5lIGJvb2wgbm9kZU1hdGNoZXNCYXNpY1Rlc3QoTm9kZSYgbm9kZSwgU3RlcDo6QXhpcyBh
eGlzLCBjb25zdCBTdGVwOjpOb2RlVGUKICAgICAgICAgICAgIGlmICghaXM8RWxlbWVudD4obm9k
ZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgICAgICBpZiAobmFt
ZSA9PSBzdGFyQXRvbSkKKyAgICAgICAgICAgIGlmIChuYW1lID09IHN0YXJBdG9tKCkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIG5hbWVzcGFjZVVSSS5pc0VtcHR5KCkgfHwgbmFtZXNwYWNlVVJJ
ID09IG5vZGUubmFtZXNwYWNlVVJJKCk7CiAKICAgICAgICAgICAgIGlmIChpczxIVE1MRG9jdW1l
bnQ+KG5vZGUuZG9jdW1lbnQoKSkpIHsKQEAgLTM0Miw3ICszNDIsNyBAQCB2b2lkIFN0ZXA6Om5v
ZGVzSW5BeGlzKE5vZGUmIGNvbnRleHQsIE5vZGVTZXQmIG5vZGVzKSBjb25zdAogICAgICAgICAg
ICAgRWxlbWVudCYgY29udGV4dEVsZW1lbnQgPSBkb3duY2FzdDxFbGVtZW50Pihjb250ZXh0KTsK
IAogICAgICAgICAgICAgLy8gQXZvaWQgbGF6aWx5IGNyZWF0aW5nIGF0dHJpYnV0ZSBub2RlcyBm
b3IgYXR0cmlidXRlcyB0aGF0IHdlIGRvIG5vdCBuZWVkIGFueXdheS4KLSAgICAgICAgICAgIGlm
IChtX25vZGVUZXN0Lm1fa2luZCA9PSBOb2RlVGVzdDo6TmFtZVRlc3QgJiYgbV9ub2RlVGVzdC5t
X2RhdGEgIT0gc3RhckF0b20pIHsKKyAgICAgICAgICAgIGlmIChtX25vZGVUZXN0Lm1fa2luZCA9
PSBOb2RlVGVzdDo6TmFtZVRlc3QgJiYgbV9ub2RlVGVzdC5tX2RhdGEgIT0gc3RhckF0b20oKSkg
ewogICAgICAgICAgICAgICAgIGF1dG8gYXR0ciA9IGNvbnRleHRFbGVtZW50LmdldEF0dHJpYnV0
ZU5vZGVOUyhtX25vZGVUZXN0Lm1fbmFtZXNwYWNlVVJJLCBtX25vZGVUZXN0Lm1fZGF0YSk7CiAg
ICAgICAgICAgICAgICAgaWYgKGF0dHIgJiYgYXR0ci0+bmFtZXNwYWNlVVJJKCkgIT0gWE1MTlNO
YW1lczo6eG1sbnNOYW1lc3BhY2VVUkkpIHsgLy8gSW4gWFBhdGggbGFuZCwgbmFtZXNwYWNlIG5v
ZGVzIGFyZSBub3QgYWNjZXNzaWJsZSBvbiB0aGUgYXR0cmlidXRlIGF4aXMuCiAgICAgICAgICAg
ICAgICAgICAgIGlmIChub2RlTWF0Y2hlcygqYXR0ciwgQXR0cmlidXRlQXhpcywgbV9ub2RlVGVz
dCkpIC8vIFN0aWxsIG5lZWQgdG8gY2hlY2sgbWVyZ2VkIHByZWRpY2F0ZXMuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAK
aW5kZXggYmY4MjdlYTk3ZGQ0OTMxMDgyY2EyNjliMGQzNmFjYjk1NzY1NjkxNC4uZGQ3M2MwYzI3
YTliYTQzNWY4MDA2ZTJkZTUzNGJjZTkzNGNhNGQxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcApAQCAtNjAwLDkg
KzYwMCw5IEBAIFhNTERvY3VtZW50UGFyc2VyOjpYTUxEb2N1bWVudFBhcnNlcihEb2N1bWVudEZy
YWdtZW50JiBmcmFnbWVudCwgRWxlbWVudCogcGFyZW50CiAgICAgICAgIEVsZW1lbnQqIGVsZW1l
bnQgPSBlbGVtU3RhY2subGFzdCgpOwogICAgICAgICBpZiAoZWxlbWVudC0+aGFzQXR0cmlidXRl
cygpKSB7CiAgICAgICAgICAgICBmb3IgKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlIDogZWxl
bWVudC0+YXR0cmlidXRlc0l0ZXJhdG9yKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoYXR0cmli
dXRlLmxvY2FsTmFtZSgpID09IHhtbG5zQXRvbSkKKyAgICAgICAgICAgICAgICBpZiAoYXR0cmli
dXRlLmxvY2FsTmFtZSgpID09IHhtbG5zQXRvbSgpKQogICAgICAgICAgICAgICAgICAgICBtX2Rl
ZmF1bHROYW1lc3BhY2VVUkkgPSBhdHRyaWJ1dGUudmFsdWUoKTsKLSAgICAgICAgICAgICAgICBl
bHNlIGlmIChhdHRyaWJ1dGUucHJlZml4KCkgPT0geG1sbnNBdG9tKQorICAgICAgICAgICAgICAg
IGVsc2UgaWYgKGF0dHJpYnV0ZS5wcmVmaXgoKSA9PSB4bWxuc0F0b20oKSkKICAgICAgICAgICAg
ICAgICAgICAgbV9wcmVmaXhUb05hbWVzcGFjZU1hcC5zZXQoYXR0cmlidXRlLmxvY2FsTmFtZSgp
LCBhdHRyaWJ1dGUudmFsdWUoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTY5NSw3
ICs2OTUsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaGFuZGxlTmFtZXNwYWNlQXR0cmlidXRlcyhW
ZWN0b3I8QXR0cmlidXRlPiYgcHJlZml4ZWRBdHRyaWJ1dAogewogICAgIHhtbFNBWDJOYW1lc3Bh
Y2UqIG5hbWVzcGFjZXMgPSByZWludGVycHJldF9jYXN0PHhtbFNBWDJOYW1lc3BhY2UqPihsaWJ4
bWxOYW1lc3BhY2VzKTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bU5hbWVzcGFjZXM7IGkr
KykgewotICAgICAgICBBdG9taWNTdHJpbmcgbmFtZXNwYWNlUU5hbWUgPSB4bWxuc0F0b207Cisg
ICAgICAgIEF0b21pY1N0cmluZyBuYW1lc3BhY2VRTmFtZSA9IHhtbG5zQXRvbSgpOwogICAgICAg
ICBBdG9taWNTdHJpbmcgbmFtZXNwYWNlVVJJID0gdG9BdG9taWNTdHJpbmcobmFtZXNwYWNlc1tp
XS51cmkpOwogICAgICAgICBpZiAobmFtZXNwYWNlc1tpXS5wcmVmaXgpCiAgICAgICAgICAgICBu
YW1lc3BhY2VRTmFtZSA9ICJ4bWxuczoiICsgdG9TdHJpbmcobmFtZXNwYWNlc1tpXS5wcmVmaXgp
OwpAQCAtNzI1LDcgKzcyNSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBoYW5kbGVFbGVtZW50QXR0
cmlidXRlcyhWZWN0b3I8QXR0cmlidXRlPiYgcHJlZml4ZWRBdHRyaWJ1dGVzCiAgICAgICAgIGlu
dCB2YWx1ZUxlbmd0aCA9IHN0YXRpY19jYXN0PGludD4oYXR0cmlidXRlc1tpXS5lbmQgLSBhdHRy
aWJ1dGVzW2ldLnZhbHVlKTsKICAgICAgICAgQXRvbWljU3RyaW5nIGF0dHJWYWx1ZSA9IHRvQXRv
bWljU3RyaW5nKGF0dHJpYnV0ZXNbaV0udmFsdWUsIHZhbHVlTGVuZ3RoKTsKICAgICAgICAgU3Ry
aW5nIGF0dHJQcmVmaXggPSB0b1N0cmluZyhhdHRyaWJ1dGVzW2ldLnByZWZpeCk7Ci0gICAgICAg
IEF0b21pY1N0cmluZyBhdHRyVVJJID0gYXR0clByZWZpeC5pc0VtcHR5KCkgPyBudWxsQXRvbSA6
IHRvQXRvbWljU3RyaW5nKGF0dHJpYnV0ZXNbaV0udXJpKTsKKyAgICAgICAgQXRvbWljU3RyaW5n
IGF0dHJVUkkgPSBhdHRyUHJlZml4LmlzRW1wdHkoKSA/IG51bGxBdG9tKCkgOiB0b0F0b21pY1N0
cmluZyhhdHRyaWJ1dGVzW2ldLnVyaSk7CiAgICAgICAgIEF0b21pY1N0cmluZyBhdHRyUU5hbWUg
PSBhdHRyUHJlZml4LmlzRW1wdHkoKSA/IHRvQXRvbWljU3RyaW5nKGF0dHJpYnV0ZXNbaV0ubG9j
YWxuYW1lKSA6IGF0dHJQcmVmaXggKyAiOiIgKyB0b1N0cmluZyhhdHRyaWJ1dGVzW2ldLmxvY2Fs
bmFtZSk7CiAKICAgICAgICAgYXV0byByZXN1bHQgPSBFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZU5h
bWUoYXR0clVSSSwgYXR0clFOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0RP
TS9ET00ubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRE9NLm1tCmluZGV4IDBmZmExOTc4OTA2
MTY0OTcwM2JlYjQ1ZWQ2Y2M3NDBlN2NlZmE5OGYuLmIyZjA3NDNiNGQ3NmNmYTZjYjkzNDcxMjQz
MjlkN2U3NTZiMGM5YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET00ubW0K
KysrIGIvU291cmNlL1dlYktpdC9tYWMvRE9NL0RPTS5tbQpAQCAtMTY0LDcgKzE2NCw3IEBAIHN0
YXRpYyBDbGFzcyBsb29rdXBFbGVtZW50Q2xhc3MoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnKQog
ewogICAgIC8vIERvIGEgc3BlY2lhbCBsb29rdXAgdG8gaWdub3JlIGVsZW1lbnQgcHJlZml4ZXMK
ICAgICBpZiAodGFnLmhhc1ByZWZpeCgpKQotICAgICAgICByZXR1cm4gZWxlbWVudENsYXNzTWFw
LT5nZXQoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgdGFnLmxvY2FsTmFtZSgpLCB0YWcubmFtZXNw
YWNlVVJJKCkpLmltcGwoKSk7CisgICAgICAgIHJldHVybiBlbGVtZW50Q2xhc3NNYXAtPmdldChR
dWFsaWZpZWROYW1lKG51bGxBdG9tKCksIHRhZy5sb2NhbE5hbWUoKSwgdGFnLm5hbWVzcGFjZVVS
SSgpKS5pbXBsKCkpOwogICAgIAogICAgIHJldHVybiBlbGVtZW50Q2xhc3NNYXAtPmdldCh0YWcu
aW1wbCgpKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCA0ZGQwZTg1MzRmNDNhZjc1MmUyNWJiNDExNTE0MTU3M2MzOTc3OTUyLi5mZDY1ODU1
MjJmMGQ1NTMxMmNkZmQ4NGFiMmQ2M2U4NmMzYjFiMWRhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTctMDctMDQg
IFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW1dURl0g
Q2xlYW4gdXAgU3RyaW5nU3RhdGljcy5jcHAgYnkgdXNpbmcgTGF6eU5ldmVyRGVzdHJveWVkPD4g
Zm9yIEF0b21zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzQxNTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ0J1aWxkZXIuY3BwOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMTctMDctMDQgIE1pY2hhZWwgQ2F0YW56YXJvICA8
bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFJlbW92ZSB1bnVzZWQgRUZMIGxvZ28g
ZnJvbSBib3Qgd2F0Y2hlciBkYXNoYm9hcmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL1N0cmluZ0J1aWxkZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvU3RyaW5nQnVpbGRlci5jcHAKaW5kZXggMTFiZjM1OTBlNDRkOTIwNGI3NjliNzY5YjQ1
OTM0NjJkOTg3NzMzNS4uNmI4ZTA1Y2YwNDdhMGU5MWQ5ZTU1OTZmMzAwNjA3ZjllZTZhNzBiYiAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nQnVpbGRlci5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nQnVpbGRlci5jcHAK
QEAgLTI5Myw0NSArMjkzLDQ1IEBAIFRFU1QoU3RyaW5nQnVpbGRlclRlc3QsIFRvQXRvbWljU3Ry
aW5nT25FbXB0eSkKICAgICB7IC8vIERlZmF1bHQgY29uc3RydWN0ZWQuCiAgICAgICAgIFN0cmlu
Z0J1aWxkZXIgYnVpbGRlcjsKICAgICAgICAgQXRvbWljU3RyaW5nIGF0b21pY1N0cmluZyA9IGJ1
aWxkZXIudG9BdG9taWNTdHJpbmcoKTsKLSAgICAgICAgQVNTRVJUX0VRKGVtcHR5QXRvbSwgYXRv
bWljU3RyaW5nKTsKKyAgICAgICAgQVNTRVJUX0VRKGVtcHR5QXRvbSgpLCBhdG9taWNTdHJpbmcp
OwogICAgIH0KICAgICB7IC8vIFdpdGggY2FwYWNpdHkuCiAgICAgICAgIFN0cmluZ0J1aWxkZXIg
YnVpbGRlcjsKICAgICAgICAgYnVpbGRlci5yZXNlcnZlQ2FwYWNpdHkoNjQpOwogICAgICAgICBB
dG9taWNTdHJpbmcgYXRvbWljU3RyaW5nID0gYnVpbGRlci50b0F0b21pY1N0cmluZygpOwotICAg
ICAgICBBU1NFUlRfRVEoZW1wdHlBdG9tLCBhdG9taWNTdHJpbmcpOworICAgICAgICBBU1NFUlRf
RVEoZW1wdHlBdG9tKCksIGF0b21pY1N0cmluZyk7CiAgICAgfQogICAgIHsgLy8gQXRvbWljU3Ry
aW5nIGNvbnN0cnVjdGVkIGZyb20gYSBudWxsIHN0cmluZy4KICAgICAgICAgU3RyaW5nQnVpbGRl
ciBidWlsZGVyOwogICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmcoKSk7CiAgICAgICAgIEF0
b21pY1N0cmluZyBhdG9taWNTdHJpbmcgPSBidWlsZGVyLnRvQXRvbWljU3RyaW5nKCk7Ci0gICAg
ICAgIEFTU0VSVF9FUShlbXB0eUF0b20sIGF0b21pY1N0cmluZyk7CisgICAgICAgIEFTU0VSVF9F
UShlbXB0eUF0b20oKSwgYXRvbWljU3RyaW5nKTsKICAgICB9CiAgICAgeyAvLyBBdG9taWNTdHJp
bmcgY29uc3RydWN0ZWQgZnJvbSBhbiBlbXB0eSBzdHJpbmcuCiAgICAgICAgIFN0cmluZ0J1aWxk
ZXIgYnVpbGRlcjsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoZW1wdHlTdHJpbmcoKSk7CiAgICAg
ICAgIEF0b21pY1N0cmluZyBhdG9taWNTdHJpbmcgPSBidWlsZGVyLnRvQXRvbWljU3RyaW5nKCk7
Ci0gICAgICAgIEFTU0VSVF9FUShlbXB0eUF0b20sIGF0b21pY1N0cmluZyk7CisgICAgICAgIEFT
U0VSVF9FUShlbXB0eUF0b20oKSwgYXRvbWljU3RyaW5nKTsKICAgICB9CiAgICAgeyAvLyBBdG9t
aWNTdHJpbmcgY29uc3RydWN0ZWQgZnJvbSBhbiBlbXB0eSBTdHJpbmdCdWlsZGVyLgogICAgICAg
ICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgICAgIFN0cmluZ0J1aWxkZXIgZW1wdHlCdWls
ZGVyOwogICAgICAgICBidWlsZGVyLmFwcGVuZChlbXB0eUJ1aWxkZXIpOwogICAgICAgICBBdG9t
aWNTdHJpbmcgYXRvbWljU3RyaW5nID0gYnVpbGRlci50b0F0b21pY1N0cmluZygpOwotICAgICAg
ICBBU1NFUlRfRVEoZW1wdHlBdG9tLCBhdG9taWNTdHJpbmcpOworICAgICAgICBBU1NFUlRfRVEo
ZW1wdHlBdG9tKCksIGF0b21pY1N0cmluZyk7CiAgICAgfQogICAgIHsgLy8gQXRvbWljU3RyaW5n
IGNvbnN0cnVjdGVkIGZyb20gYW4gZW1wdHkgY2hhciogc3RyaW5nLgogICAgICAgICBTdHJpbmdC
dWlsZGVyIGJ1aWxkZXI7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIiLCAwKTsKICAgICAgICAg
QXRvbWljU3RyaW5nIGF0b21pY1N0cmluZyA9IGJ1aWxkZXIudG9BdG9taWNTdHJpbmcoKTsKLSAg
ICAgICAgQVNTRVJUX0VRKGVtcHR5QXRvbSwgYXRvbWljU3RyaW5nKTsKKyAgICAgICAgQVNTRVJU
X0VRKGVtcHR5QXRvbSgpLCBhdG9taWNTdHJpbmcpOwogICAgIH0KICAgICB7IC8vIENsZWFyZWQg
U3RyaW5nQnVpbGRlci4KICAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgICAgICBi
dWlsZGVyLmFwcGVuZExpdGVyYWwoIldlYktpdCIpOwogICAgICAgICBidWlsZGVyLmNsZWFyKCk7
CiAgICAgICAgIEF0b21pY1N0cmluZyBhdG9taWNTdHJpbmcgPSBidWlsZGVyLnRvQXRvbWljU3Ry
aW5nKCk7Ci0gICAgICAgIEFTU0VSVF9FUShlbXB0eUF0b20sIGF0b21pY1N0cmluZyk7CisgICAg
ICAgIEFTU0VSVF9FUShlbXB0eUF0b20oKSwgYXRvbWljU3RyaW5nKTsKICAgICB9CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>