<?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>198471</bug_id>
          
          <creation_ts>2019-06-02 17:17:07 -0700</creation_ts>
          <short_desc>Finish cleanup of String::number for floating point</short_desc>
          <delta_ts>2019-06-03 04:35:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Template Framework</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>178319</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1541155</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-06-02 17:17:07 -0700</bug_when>
    <thetext>Finish cleanup of String::number for floating point</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1541156</commentid>
    <comment_count>1</comment_count>
      <attachid>371172</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-06-02 17:42:53 -0700</bug_when>
    <thetext>Created attachment 371172
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1541157</commentid>
    <comment_count>2</comment_count>
      <attachid>371172</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-06-02 17:46:45 -0700</bug_when>
    <thetext>Comment on attachment 371172
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=371172&amp;action=review

&gt; Source/WTF/wtf/text/WTFString.h:132
&gt; +    // We have verified empirically that we need to, but it would be good understand exactly why.

Oops, missing word here in my edit to this comment. In my local patch I have now deleted the entire FIXME comment instead and that’s what I’ll land unless I get some feedback to the contrary during review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1541158</commentid>
    <comment_count>3</comment_count>
      <attachid>371173</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-06-02 17:49:29 -0700</bug_when>
    <thetext>Created attachment 371173
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1541165</commentid>
    <comment_count>4</comment_count>
      <attachid>371173</attachid>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-06-02 19:41:04 -0700</bug_when>
    <thetext>Comment on attachment 371173
Patch

Attachment 371173 did not pass jsc-ews (mac):
Output: https://webkit-queues.webkit.org/results/12359319

New failing tests:
mozilla-tests.yaml/js1_5/Array/regress-101964.js.mozilla-dfg-eager-no-cjit-validate-phases
apiTests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1541173</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-06-02 21:33:13 -0700</bug_when>
    <thetext>(In reply to Build Bot from comment #4)
&gt; Comment on attachment 371173 [details]
&gt; mozilla-tests.yaml/js1_5/Array/regress-101964.js.mozilla-dfg-eager-no-cjit-
&gt; validate-phases
&gt; apiTests

Seems obvious from reading the error messages that this is not a real failure. Just a slow run on the test bot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1541211</commentid>
    <comment_count>6</comment_count>
      <attachid>371173</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-06-03 04:03:58 -0700</bug_when>
    <thetext>Comment on attachment 371173
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=371173&amp;action=review

r=me

&gt; Source/WebCore/rendering/RenderListMarker.cpp:139
&gt; +    // The asterisks list-style-type is the worst case; we show |number| asterisks.
&gt; +    CharacterType symbol = symbols[(number - 1) % symbolsSize];
&gt; +    unsigned count = (number - 1) / symbolsSize + 1;
&gt; +
&gt; +    CharacterType* characters;
&gt; +    String result = String::createUninitialized(count, characters);
&gt; +    for (unsigned i = 0; i &lt; count; ++i)
&gt; +        characters[i] = symbol;
&gt; +    return result;

Nice! The code becomes much cleaner.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1541212</commentid>
    <comment_count>7</comment_count>
      <attachid>371173</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-06-03 04:34:26 -0700</bug_when>
    <thetext>Comment on attachment 371173
Patch

Clearing flags on attachment: 371173

Committed r246034: &lt;https://trac.webkit.org/changeset/246034&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1541213</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-06-03 04:34:28 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1541214</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-06-03 04:35:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/51353064&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>371172</attachid>
            <date>2019-06-02 17:42:53 -0700</date>
            <delta_ts>2019-06-02 17:49:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198471-20190602174253.patch</filename>
            <type>text/plain</type>
            <size>82961</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2MDI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
NWE1ZTM5NWI3Njc5MjQzMDA0MzZkYmVjOWUxZmVhNjczMmM0YTI4Li44MjI0ZDc5MjM4NjliOWU4
ZDc2NDRlYWZhYjU5Y2UyNTUwNzg2MDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMCBAQAorMjAxOS0wNi0wMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgRmluaXNoIGNsZWFudXAgb2YgU3RyaW5nOjpudW1iZXIgZm9yIGZsb2F0aW5nIHBv
aW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTg0
NzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGRm
Zy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTdHJl
bmd0aFJlZHVjdGlvblBoYXNlOjpoYW5kbGVOb2RlKTogVXNlIFN0cmluZzo6bnVtYmVyIGluc3Rl
YWQgb2YKKyAgICAgICAgU3RyaW5nOjpudW1iZXJUb1N0cmluZ0VDTUFTY3JpcHQsIHNpbmNlIHRo
YXQncyBub3cgdGhlIGRlZmF1bHQuCisgICAgICAgICogcGFyc2VyL1BhcnNlckFyZW5hLmg6Cisg
ICAgICAgIChKU0M6OklkZW50aWZpZXJBcmVuYTo6bWFrZU51bWVyaWNJZGVudGlmaWVyKTogRGl0
dG8uCisgICAgICAgICogcnVudGltZS9KU09OT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6U3Ry
aW5naWZpZXI6OmFwcGVuZFN0cmluZ2lmaWVkVmFsdWUpOiBVc2UgYXBwZW5kTnVtYmVyIGluc3Rl
YWQgb2YKKyAgICAgICAgYnVpbGRlci5hcHBlbmRFQ01BU2NyaXB0TnVtYmVyLCBzaW5jZSB0aGF0
J3Mgbm93IHRoZSBkZWZhdWx0LgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNw
cDoKKyAgICAgICAgKEpTQzo6dG9TdHJpbmdXaXRoUmFkaXgpOiBVc2UgU3RyaW5nOjpudW1iZXIg
aW5zdGVhZCBvZgorICAgICAgICBTdHJpbmc6Om51bWJlclRvU3RyaW5nRUNNQVNjcmlwdCwgc2lu
Y2UgdGhhdCdzIG5vdyB0aGUgZGVmYXVsdC4KKyAgICAgICAgKEpTQzo6bnVtYmVyUHJvdG9GdW5j
VG9FeHBvbmVudGlhbCk6IERpdHRvLgorICAgICAgICAoSlNDOjpudW1iZXJQcm90b0Z1bmNUb0Zp
eGVkKTogRGl0dG8uCisgICAgICAgIChKU0M6Om51bWJlclByb3RvRnVuY1RvUHJlY2lzaW9uKTog
RGl0dG8uCisgICAgICAgIChKU0M6Om51bWJlclRvU3RyaW5nSW50ZXJuYWwpOiBEaXR0by4KKyAg
ICAgICAgKiBydW50aW1lL051bWVyaWNTdHJpbmdzLmg6CisgICAgICAgIChKU0M6Ok51bWVyaWNT
dHJpbmdzOjphZGQpOiBEaXR0by4KKyAgICAgICAgKiB3YXNtL1dhc21CQlFQbGFuLmNwcDoKKyAg
ICAgICAgKEpTQzo6V2FzbTo6QkJRUGxhbjo6cHJlcGFyZSk6IERpdHRvLgorCiAyMDE5LTA2LTAy
ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gQ3Jh
c2ggZXhwbGljaXRseSBpZiBTdHJ1Y3R1cmVJRHMgYXJlIGV4aGF1c3RlZApkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA4MzQ2Njg2
ZDgxMjQzNjA4NmE5NzE1OTU0YjgyZTc5MDZjZGJlMTcyLi4wNThlNTI3Nzc2NzQ4Yjc3NzRiNjcw
OTk2ODlkMzQ4YzZjZDg5NGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE5LTA2LTAyICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBGaW5pc2ggY2xlYW51cCBvZiBT
dHJpbmc6Om51bWJlciBmb3IgZmxvYXRpbmcgcG9pbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODQ3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0pTT05WYWx1ZXMuY3BwOgorICAgICAgICAo
V1RGOjpKU09OSW1wbDo6VmFsdWU6OndyaXRlSlNPTiBjb25zdCk6IFVzZSBhcHBlbmROdW1iZXIg
aW5zdGVhZCBvZgorICAgICAgICBhcHBlbmRFQ01BU2NyaXB0TnVtYmVyLCBzaW5jZSB0aGF0J3Mg
bm93IHRoZSBkZWZhdWx0LgorCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nQnVpbGRlci5jcHA6
CisgICAgICAgIChXVEY6OlN0cmluZ0J1aWxkZXI6OmFwcGVuZE51bWJlcik6IFJlbmFtZWQgZnJv
bSBhcHBlbmRTaG9ydGVzdEZvcm1OdW1iZXIuCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oOiBSZW1vdmVkIGFwcGVuZFNob3J0ZXN0Rm9ybU51bWJlciBhbmQKKyAgICAgICAgYXBw
ZW5kRUNNQVNjcmlwdE51bWJlciwgcmVwbGFjaW5nIGJvdGggd2l0aCBvdmVybG9hZCBvZiBhcHBl
bmROdW1iZXIuCisKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuY3BwOgorICAgICAgICAo
V1RGOjpTdHJpbmc6Om51bWJlcik6IFJlbmFtZWQgZnJvbSBudW1iZXJUb1N0cmluZ1Nob3J0ZXN0
LgorICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5oOiBSZW1vdmVkIG51bWJlclRvU3RyaW5n
U2hvcnRlc3QgYW5kCisgICAgICAgIG51bWJlclRvU3RyaW5nRUNNQVNjcmlwdCwgcmVwbGFjaW5n
IGJvdGggd2l0aCBvdmVybG9hZCBvZiBudW1iZXIuCisKIDIwMTktMDYtMDIgIEtlaXRoIE1pbGxl
ciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVlbmFibGUgR2lnYWNhZ2Ug
b24gQVJNNjQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTk2ZDI2MDljOWUzZDcyMDdmZmE5MmQxZGEyZWE3NjNm
MzZhMjEwNS4uODJkOTAxZTJkMGQxMDYzYTZlZjMzNjU2ZDczZDQ5MGRkODg4YTJmOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE5LTA2LTAyICBEYXJpbiBBZGxlciAgPGRhcmluQGFw
cGxlLmNvbT4KKworICAgICAgICBGaW5pc2ggY2xlYW51cCBvZiBTdHJpbmc6Om51bWJlciBmb3Ig
ZmxvYXRpbmcgcG9pbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5ODQ3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6Y3VzdG9tQ1NTVGV4dCBjb25zdCk6IFVzZSBtYWtlU3RyaW5n
IGluc3RlYWQKKyAgICAgICAgb2YgU3RyaW5nQnVpbGRlciBzaW5jZSBpdCBpcyBtb3JlIHRlcnNl
IGFuZCBwb3NzaWJseSBtb3JlIGVmZmljaWVudCBhcyB3ZWxsLgorICAgICAgICAqIGNzcy9ET01N
YXRyaXhSZWFkT25seS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01NYXRyaXhSZWFkT25seTo6
dG9TdHJpbmcgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTTWF0cml4LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdENTU01hdHJpeDo6dG9TdHJpbmcgY29uc3QpOiBE
aXR0by4KKworICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6c2VyaWFsaXplRm9yTnVtYmVyVHlwZSk6IFVzZSBTdHJpbmc6Om51bWJl
ciBpbnN0ZWFkIG9mCisgICAgICAgIFN0cmluZzo6bnVtYmVyVG9TdHJpbmdFQ01BU2NyaXB0IHNp
bmNlIHRoYXQgaXMgbm93IHRoZSBkZWZhdWx0LgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlh
Q29udHJvbEVsZW1lbnRUeXBlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xW
b2x1bWVTbGlkZXJFbGVtZW50OjpzZXRWb2x1bWUpOiBEaXR0by4KKyAgICAgICAgKiBodG1sL3No
YWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNv
bnRyb2xUaW1lbGluZUVsZW1lbnQ6OnNldFBvc2l0aW9uKTogRGl0dG8uCisgICAgICAgICogcGxh
dGZvcm0vRGVjaW1hbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpmcm9tRG91Ymxl
KTogRGl0dG8uCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjp0b1JvbWFuKTogUmV0dXJuIGEgU3RyaW5nIGluc3RlYWQgb2YgdGFr
aW5nIGEgU3RyaW5nQnVpbGRlciBhcmd1bWVudC4KKyAgICAgICAgVXNlIExldHRlckNhc2UgZW51
bSBpbnN0ZWFkIG9mIGJvb2wgZm9yIHRoZSB1cHBlcmNhc2UgdnMuIGxvd2VyY2FzZSBhcmd1bWVu
dCwgdG8KKyAgICAgICAgYmUgbGVzcyBteXN0ZXJpb3VzIGF0IGNhbGwgc2l0ZXMuIFVzZSB1bnNp
Z25lZCBmb3Igc3RyaW5nIGxlbmd0aHMgc2luY2UgdGhhdCdzCisgICAgICAgIHdoYXQgV1RGOjpT
dHJpbmcgdXNlcy4KKyAgICAgICAgKFdlYkNvcmU6OnRvQWxwaGFiZXRpY09yTnVtZXJpYyk6IERp
dHRvLiBBbHNvIHVwZGF0ZWQgc2luY2UgU2VxdWVuY2VUeXBlIGlzIG5vdworICAgICAgICBhbiBl
bnVtIGNsYXNzLgorICAgICAgICAoV2ViQ29yZTo6dG9TeW1ib2xpYyk6IFVzZSBTdHJpbmc6OmNy
ZWF0ZVVuaW5pdGlhbGl6ZWQgaW5zdGVhZCBvZiBTdHJpbmdCdWlsZGVyLgorICAgICAgICBSZXR1
cm4gYSBTdHJpbmcgaW5zdGVhZCBvZiB0YWtpbmcgYSBTdHJpbmdCdWlsZGVyIGFyZ3VtZW50LiBT
dHJhaWdodGVuIG91dCB0aGUKKyAgICAgICAgYWxnb3JpdGhtIHNvIGl0J3MgZWFzaWVyIHRvIHVu
ZGVyc3RhbmQuCisgICAgICAgIChXZWJDb3JlOjp0b0FscGhhYmV0aWMpOiBVcGRhdGVkIHNpbmNl
IFNlcXVlbmNlVHlwZSBpcyBub3cgYW4gZW51bSBjbGFzcy4KKyAgICAgICAgKFdlYkNvcmU6OnRv
TnVtZXJpYyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6dG9IZWJyZXcpOiBSZXR1cm4gYSBT
dHJpbmcgaW5zdGVhZCBvZiB0YWtpbmcgYSBTdHJpbmdCdWlsZGVyIGFyZ3VtZW50LgorICAgICAg
ICBVc2UgdW5zaWduZWQgZm9yIHN0cmluZyBsZW5ndGhzIHNpbmNlIHRoYXQncyB3aGF0IFdURjo6
U3RyaW5nIHVzZXMuCisgICAgICAgIChXZWJDb3JlOjp0b0FybWVuaWFuVW5kZXIxMDAwMCk6IFVz
ZSB1bnNpZ25lZCBhbmQgdGhlIExldHRlckNhc2UgZW51bSBjbGFzcy4KKyAgICAgICAgKFdlYkNv
cmU6OnRvQXJtZW5pYW4pOiBSZXR1cm4gYSBTdHJpbmcgaW5zdGVhZCBvZiB0YWtpbmcgYSBTdHJp
bmdCdWlsZGVyIGFyZ3VtZW50LgorICAgICAgICBBbHNvIHVzZSB1bnNpZ25lZCBmb3Igc3RyaW5n
IGxlbmd0aHMgc2luY2UgdGhhdCdzIHdoYXQgV1RGOjpTdHJpbmcgdXNlcy4KKyAgICAgICAgKFdl
YkNvcmU6OnRvR2VvcmdpYW4pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnRvQ0pLSWRlb2dy
YXBoaWMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Omxpc3RNYXJrZXJTdWZmaXgpOiBUd2Vh
a2VkIGEgY29tbWVudC4KKyAgICAgICAgKFdlYkNvcmU6Omxpc3RNYXJrZXJUZXh0KTogVXNlIFN0
cmluZyByZXR1cm4gdmFsdWVzIGluc3RlYWQgb2YgU3RyaW5nQnVpbGRlci4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxpc3RNYXJrZXI6OnBhaW50KTogVXNlIFN0cmluZzo6Y3JlYXRlVW5pbml0
aWFsaXplZCBpbnN0ZWFkIG9mCisgICAgICAgIFN0cmluZ0J1aWxkZXIgc2luY2UgaXQncyBhIGJp
dCBtb3JlIGVmZmljaWVudC4gVXNlIG1ha2VTdHJpbmcgaW5zdGVhZCBvZiB0dXJuaW5nCisgICAg
ICAgIHNpbmdsZSBjaGFyYWN0ZXJzIGludG8gc3RyaW5ncyBzaW5jZSB0aGF0J3MgbW9yZSBlZmZp
Y2llbnQuCisKKyAgICAgICAgKiBzdmcvU1ZHUGF0aFV0aWxpdGllcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpidWlsZFN0cmluZ0Zyb21QYXRoKTogVXNlIGFwcGVuZE51bWJlciBpbnN0ZWFkIG9m
IGFwcGVuZFNob3J0ZXN0Rm9ybU51bWJlcgorICAgICAgICBzaW5jZSB0aGF0IGlzIG5vdyB0aGUg
ZGVmYXVsdC4KKwogMjAxOS0wNi0wMSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxl
LmNvbT4KIAogICAgICAgICBbQXN5bmMgb3ZlcmZsb3cgc2Nyb2xsXSBGbGFzaGluZyBjb250ZW50
IHdoZW4gc2Nyb2xsaW5nIGFzeW5jIG92ZXJmbG93IHdpdGggYSBuZWdhdGl2ZSB6LWluZGV4IGNo
aWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IDBhZTJhMzFlODZlNGQwNWFhZmJlMTVlZGIzZTZhNTIyZTBlZDNiNmMu
LmU5ZDVjMzJlYjU5MzljMGQ1NWViODUwZjQ1M2E0ZDMyNTUyNDlhNjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTggQEAKKzIwMTktMDYtMDIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgor
CisgICAgICAgIEZpbmlzaCBjbGVhbnVwIG9mIFN0cmluZzo6bnVtYmVyIGZvciBmbG9hdGluZyBw
b2ludAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4
NDcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0
cnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpzdWJtaXRUb3BMaXN0KTogVXNlIG1ha2VTdHJpbmcg
aW5zdGVhZCBvZiBTdHJpbmdCdWlsZGVyIHNpbmNlIGl0CisgICAgICAgIGlzIG1vcmUgdGVyc2Ug
YW5kIHBvc3NpYmx5IG1vcmUgZWZmaWNpZW50IGFzIHdlbGwuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9BUElVc2VyU2NyaXB0LmNwcDoKKyAgICAgICAgKEFQSTo6VXNlclNjcmlwdDo6Z2VuZXJh
dGVVbmlxdWVVUkwpOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVzZXJTdHls
ZVNoZWV0LmNwcDoKKyAgICAgICAgKEFQSTo6VXNlclN0eWxlU2hlZXQ6OmdlbmVyYXRlVW5pcXVl
VVJMKTogRGl0dG8uCisKIDIwMTktMDYtMDEgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29t
PgogCiAgICAgICAgIFByb3ZpZGUgYW4gYWN0aW9uIHRvIHNhdmUgYW4gaW1hZ2Ugb24gYSBsaW5r
IHNoZWV0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3Ro
UmVkdWN0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0
aFJlZHVjdGlvblBoYXNlLmNwcAppbmRleCBjN2ZkNTJhOGViOTc1NWFkMWIxYjI5OTU3ZjEzZjRi
YmUxNmM0OGMxLi5kMWNkZTEzNDEzM2VjMzAyZjk0ZjRmYWM4ZjEyYzcxYzc4MzlmZDk0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhh
c2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rp
b25QaGFzZS5jcHAKQEAgLTM1MCw3ICszNTAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
ICAgICBpZiAodmFsdWUuaXNJbnQzMigpKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IFN0cmluZzo6bnVtYmVyKHZhbHVlLmFzSW50MzIoKSk7CiAgICAgICAgICAgICAgICAgICAgIGlm
ICh2YWx1ZS5pc051bWJlcigpKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFN0cmlu
Zzo6bnVtYmVyVG9TdHJpbmdFQ01BU2NyaXB0KHZhbHVlLmFzTnVtYmVyKCkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyKHZhbHVlLmFzTnVtYmVyKCkpOwog
ICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUuaXNCb29sZWFuKCkpCiAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdmFsdWUuYXNCb29sZWFuKCkgPyAidHJ1ZSJfcyA6ICJmYWxzZSJf
czsKICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlLmlzTnVsbCgpKQpAQCAtNDIxLDcgKzQy
MSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUuaXNJbnQz
MigpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IFN0cmluZzo6bnVtYmVy
KHZhbHVlLmFzSW50MzIoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh2YWx1
ZS5pc051bWJlcigpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IFN0cmlu
Zzo6bnVtYmVyVG9TdHJpbmdFQ01BU2NyaXB0KHZhbHVlLmFzTnVtYmVyKCkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IFN0cmluZzo6bnVtYmVyKHZhbHVlLmFzTnVtYmVy
KCkpOwogCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5pc051bGwoKSkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRUb0xhenlKU1ZhbHVlKG1fbm9kZSwg
TGF6eUpTVmFsdWU6Om5ld1N0cmluZyhtX2dyYXBoLCByZXN1bHQpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaAppbmRleCA2N2I3ODJkZDNkYzZjYjUyYzE3OGYz
MzZkZjMzOGE3MjZkOTg2OTY5Li5kZjE3YmU1MzY2M2U3Y2I3YjcwYzQ4NzcwZjlhMDUyOWNmMzNh
N2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5h
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5oCkBAIC0x
MzAsNyArMTMwLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgCiAgICAgaW5saW5lIGNvbnN0IElk
ZW50aWZpZXImIElkZW50aWZpZXJBcmVuYTo6bWFrZU51bWVyaWNJZGVudGlmaWVyKFZNKiB2bSwg
ZG91YmxlIG51bWJlcikKICAgICB7Ci0gICAgICAgIG1faWRlbnRpZmllcnMuYXBwZW5kKElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sIFN0cmluZzo6bnVtYmVyVG9TdHJpbmdFQ01BU2NyaXB0KG51
bWJlcikpKTsKKyAgICAgICAgLy8gRklYTUU6IFdoeSBkb2Vzbid0IHRoaXMgdXNlIHRoZSBJZGVu
dGlmaWVyOjpmcm9tIG92ZXJsb2FkIHRoYXQgdGFrZXMgYSBkb3VibGU/CisgICAgICAgIC8vIFNl
ZW1zIHdlIGFyZSBtaXNzaW5nIG91dCBvbiBtdWx0aXBsZSBvcHRpbWl6YXRpb25zIGJ5IG5vdCB1
c2luZyBpdC4KKyAgICAgICAgbV9pZGVudGlmaWVycy5hcHBlbmQoSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgU3RyaW5nOjpudW1iZXIobnVtYmVyKSkpOwogICAgICAgICByZXR1cm4gbV9pZGVu
dGlmaWVycy5sYXN0KCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09OT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT05PYmplY3QuY3BwCmluZGV4IGRkMTJiZDM2YTcyMDNhMjM3MmY5MWExOTRlYzQ1NTFhN2I3
NTczNWMuLjk3YzEwNDUxYzgzMTI5N2Y2ZGYzZGZiZTU1MzIyZWQ3Y2ZiMTMxY2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCkBAIC0zNzcsNyArMzc3
LDcgQEAgU3RyaW5naWZpZXI6OlN0cmluZ2lmeVJlc3VsdCBTdHJpbmdpZmllcjo6YXBwZW5kU3Ry
aW5naWZpZWRWYWx1ZShTdHJpbmdCdWlsZGVyJgogICAgICAgICAgICAgaWYgKCFzdGQ6OmlzZmlu
aXRlKG51bWJlcikpCiAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJudWxs
Iik7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRFQ01B
U2NyaXB0TnVtYmVyKG51bWJlcik7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1i
ZXIobnVtYmVyKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gU3RyaW5naWZ5U3VjY2VlZGVk
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJl
clByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90
b3R5cGUuY3BwCmluZGV4IGFiM2FmZDAwM2JiMzZmMGMxZDZhZWQ2M2FjZGMzNTY2NDdjNzI5YzYu
LmY2OWU2OGI4ZWY1ZDFiNGNhMTMzZDU2N2ViZWZjOTk2N2ExZWYwZTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcApAQCAtMzk1LDcg
KzM5NSw3IEBAIFN0cmluZyB0b1N0cmluZ1dpdGhSYWRpeChkb3VibGUgZG91YmxlVmFsdWUsIGlu
dDMyX3QgcmFkaXgpCiAgICAgICAgIHJldHVybiB0b1N0cmluZ1dpdGhSYWRpeEludGVybmFsKGlu
dGVnZXJWYWx1ZSwgcmFkaXgpOwogCiAgICAgaWYgKHJhZGl4ID09IDEwIHx8ICFzdGQ6OmlzZmlu
aXRlKGRvdWJsZVZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyVG9TdHJpbmdF
Q01BU2NyaXB0KGRvdWJsZVZhbHVlKTsKKyAgICAgICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyKGRv
dWJsZVZhbHVlKTsKIAogICAgIFJhZGl4QnVmZmVyIGJ1ZmZlcjsKICAgICByZXR1cm4gdG9TdHJp
bmdXaXRoUmFkaXhJbnRlcm5hbChidWZmZXIsIGRvdWJsZVZhbHVlLCByYWRpeCk7CkBAIC00MjIs
NyArNDIyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNU
b0V4cG9uZW50aWFsKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIC8vIEhhbmRsZSBOYU4gYW5kIElu
ZmluaXR5LgogICAgIGlmICghc3RkOjppc2Zpbml0ZSh4KSkKLSAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywgU3RyaW5nOjpudW1iZXJUb1N0cmlu
Z0VDTUFTY3JpcHQoeCkpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRy
aXZpYWxTdHJpbmcoZXhlYywgU3RyaW5nOjpudW1iZXIoeCkpKTsKIAogICAgIGlmICghaW5SYW5n
ZSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBzY29wZSwgY3JlYXRlUmFuZ2VF
cnJvcihleGVjLCAidG9FeHBvbmVudGlhbCgpIGFyZ3VtZW50IG11c3QgYmUgYmV0d2VlbiAwIGFu
ZCAyMCJfcykpOwpAQCAtNDYzLDcgKzQ2Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgbnVtYmVyUHJvdG9GdW5jVG9GaXhlZChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgLy8gVGhpcyBh
bHNvIGNvdmVycyBJbmluaXR5LCBhbmQgc3RydWN0dXJlIHRoZSBjaGVjayBzbyB0aGF0IE5hTgog
ICAgIC8vIHZhbHVlcyBhcmUgYWxzbyBoYW5kbGVkIGJ5IG51bWJlclRvU3RyaW5nCiAgICAgaWYg
KCEoZmFicyh4KSA8IDFlKzIxKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0
cmluZyhleGVjLCBTdHJpbmc6Om51bWJlclRvU3RyaW5nRUNNQVNjcmlwdCh4KSkpOworICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIFN0cmluZzo6bnVtYmVyKHgp
KSk7CiAKICAgICAvLyBUaGUgY2hlY2sgYWJvdmUgd2lsbCByZXR1cm4gZmFsc2UgZm9yIE5hTiBv
ciBJbmZpbml0eSwgdGhlc2Ugd2lsbCBiZQogICAgIC8vIGhhbmRsZWQgYnkgbnVtYmVyVG9TdHJp
bmcuCkBAIC00OTYsMTEgKzQ5NiwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51
bWJlclByb3RvRnVuY1RvUHJlY2lzaW9uKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIC8vIFRvIHBy
ZWNpc2lvbiBjYWxsZWQgd2l0aCBubyBhcmd1bWVudCBpcyB0cmVhdGVkIGFzIFRvU3RyaW5nLgog
ICAgIGlmIChpc1VuZGVmaW5lZCkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0
cmluZyhleGVjLCBTdHJpbmc6Om51bWJlclRvU3RyaW5nRUNNQVNjcmlwdCh4KSkpOworICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIFN0cmluZzo6bnVtYmVyKHgp
KSk7CiAKICAgICAvLyBIYW5kbGUgTmFOIGFuZCBJbmZpbml0eS4KICAgICBpZiAoIXN0ZDo6aXNm
aW5pdGUoeCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFsU3Ry
aW5nKGV4ZWMsIFN0cmluZzo6bnVtYmVyVG9TdHJpbmdFQ01BU2NyaXB0KHgpKSk7CisgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFsU3RyaW5nKGV4ZWMsIFN0cmluZzo6
bnVtYmVyKHgpKSk7CiAKICAgICBpZiAoIWluUmFuZ2UpCiAgICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3IoZXhlYywgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgInRvUHJlY2lzaW9uKCkg
YXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDIxIl9zKSk7CkBAIC01MzcsNyArNTM3LDcg
QEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNTdHJpbmcqIG51bWJlclRvU3RyaW5nSW50ZXJuYWwo
Vk0mIHZtLCBkb3VibGUgZG91YmxlVmFsdWUKICAgICAgICAgcmV0dXJuIGpzU3RyaW5nKCZ2bSwg
dm0ubnVtZXJpY1N0cmluZ3MuYWRkKGRvdWJsZVZhbHVlKSk7CiAKICAgICBpZiAoIXN0ZDo6aXNm
aW5pdGUoZG91YmxlVmFsdWUpKQotICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKCZ2
bSwgU3RyaW5nOjpudW1iZXJUb1N0cmluZ0VDTUFTY3JpcHQoZG91YmxlVmFsdWUpKTsKKyAgICAg
ICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZygmdm0sIFN0cmluZzo6bnVtYmVyKGRvdWJsZVZh
bHVlKSk7CiAKICAgICBSYWRpeEJ1ZmZlciBidWZmZXI7CiAgICAgcmV0dXJuIGpzU3RyaW5nKCZ2
bSwgdG9TdHJpbmdXaXRoUmFkaXhJbnRlcm5hbChidWZmZXIsIGRvdWJsZVZhbHVlLCByYWRpeCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtZXJpY1N0cmlu
Z3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWVyaWNTdHJpbmdzLmgKaW5k
ZXggODZjNWMzODIzZjljOGMwMGU3ZWVkMDAyZjY0MjMzMzkwZWM5MDNjOC4uY2E5M2Y0N2I3OTcy
Y2VlYjUxZmI4ZDFmZmNkZjY5MjFlMjMwNWI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTnVtZXJpY1N0cmluZ3MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OdW1lcmljU3RyaW5ncy5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgaWYgKGQgPT0gZW50cnkua2V5ICYmICFlbnRyeS52YWx1ZS5pc051bGwoKSkKICAgICAg
ICAgICAgIHJldHVybiBlbnRyeS52YWx1ZTsKICAgICAgICAgZW50cnkua2V5ID0gZDsKLSAgICAg
ICAgZW50cnkudmFsdWUgPSBTdHJpbmc6Om51bWJlclRvU3RyaW5nRUNNQVNjcmlwdChkKTsKKyAg
ICAgICAgZW50cnkudmFsdWUgPSBTdHJpbmc6Om51bWJlcihkKTsKICAgICAgICAgcmV0dXJuIGVu
dHJ5LnZhbHVlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUJCUVBsYW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJCUVBs
YW4uY3BwCmluZGV4IGZlMDlkMzMwMGU0ZDM0NTIzZTQ0NWMwYTkxZTk4MDQ0YjgwNmZlMDcuLjBi
MzhmOWQ1OTZiZmMwN2JjYjY3MmJjMmExN2I3MWFhZGMxYzQ5YWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NSw3ICs0NSw3IEBACiAjaW5jbHVk
ZSA8d3RmL01vbm90b25pY1RpbWUuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAj
aW5jbHVkZSA8d3RmL1N5c3RlbVRyYWNpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdC
dWlsZGVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+
CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CiAKQEAgLTE1MSwxMSArMTUxLDcg
QEAgdm9pZCBCQlFQbGFuOjpwcmVwYXJlKCkKIAogICAgIGF1dG8gdHJ5UmVzZXJ2ZUNhcGFjaXR5
ID0gW3RoaXNdIChhdXRvJiB2ZWN0b3IsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyKiB3aGF0KSB7
CiAgICAgICAgIGlmIChVTkxJS0VMWSghdmVjdG9yLnRyeVJlc2VydmVDYXBhY2l0eShzaXplKSkp
IHsKLSAgICAgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgiRmFpbGVkIGFsbG9jYXRpbmcgZW5vdWdoIHNwYWNlIGZvciAiKTsK
LSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKHNpemUpOwotICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmQod2hhdCk7Ci0gICAgICAgICAgICBmYWlsKGhvbGRMb2NrKG1fbG9jayksIGJ1
aWxkZXIudG9TdHJpbmcoKSk7CisgICAgICAgICAgICBmYWlsKGhvbGRMb2NrKG1fbG9jayksIFdU
Rjo6bWFrZVN0cmluZygiRmFpbGVkIGFsbG9jYXRpbmcgZW5vdWdoIHNwYWNlIGZvciAiLCBzaXpl
LCB3aGF0KSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAg
cmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9KU09OVmFsdWVzLmNwcCBi
L1NvdXJjZS9XVEYvd3RmL0pTT05WYWx1ZXMuY3BwCmluZGV4IDgyOWFjY2E5OTdjY2RlZDAzZDYx
NDllMjRmOWM2Y2VjMzU3ZWFlZjkuLjg2ODFhODhlNDg2MjA3MGY1ZGIzNGYyMDJkMGRlYTgyMDU2
N2NhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0pTT05WYWx1ZXMuY3BwCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL0pTT05WYWx1ZXMuY3BwCkBAIC02ODAsNyArNjgwLDcgQEAgdm9pZCBWYWx1
ZTo6d3JpdGVKU09OKFN0cmluZ0J1aWxkZXImIG91dHB1dCkgY29uc3QKICAgICAgICAgaWYgKCFz
dGQ6OmlzZmluaXRlKG1fdmFsdWUubnVtYmVyKSkKICAgICAgICAgICAgIG91dHB1dC5hcHBlbmRM
aXRlcmFsKCJudWxsIik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG91dHB1dC5hcHBlbmRF
Q01BU2NyaXB0TnVtYmVyKG1fdmFsdWUubnVtYmVyKTsKKyAgICAgICAgICAgIG91dHB1dC5hcHBl
bmROdW1iZXIobV92YWx1ZS5udW1iZXIpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgZGVm
YXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5jcHAg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuY3BwCmluZGV4IGUzZDM1NDIyODdh
NDJlOTRjOWEzYzc3YWNmNmZmNTUxYzY2NDQ2MzcuLmRhMWQ0YTRjMWRjOWM5NDZkMzMxNGUwZTZk
ZTFlODEzZDEwMzEzNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVp
bGRlci5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmNwcApAQCAt
NDE1LDEzICs0MTUsMTMgQEAgdm9pZCBTdHJpbmdCdWlsZGVyOjphcHBlbmRGaXhlZFByZWNpc2lv
bk51bWJlcihkb3VibGUgbnVtYmVyLCB1bnNpZ25lZCBwcmVjaXNpb24KICAgICBhcHBlbmQobnVt
YmVyVG9GaXhlZFByZWNpc2lvblN0cmluZyhudW1iZXIsIHByZWNpc2lvbiwgYnVmZmVyLCBwb2xp
Y3kgPT0gVHJ1bmNhdGVUcmFpbGluZ1plcm9zKSk7CiB9CiAKLXZvaWQgU3RyaW5nQnVpbGRlcjo6
YXBwZW5kU2hvcnRlc3RGb3JtTnVtYmVyKGZsb2F0IG51bWJlcikKK3ZvaWQgU3RyaW5nQnVpbGRl
cjo6YXBwZW5kTnVtYmVyKGZsb2F0IG51bWJlcikKIHsKICAgICBOdW1iZXJUb1N0cmluZ0J1ZmZl
ciBidWZmZXI7CiAgICAgYXBwZW5kKG51bWJlclRvU3RyaW5nKG51bWJlciwgYnVmZmVyKSk7CiB9
CiAKLXZvaWQgU3RyaW5nQnVpbGRlcjo6YXBwZW5kU2hvcnRlc3RGb3JtTnVtYmVyKGRvdWJsZSBu
dW1iZXIpCit2b2lkIFN0cmluZ0J1aWxkZXI6OmFwcGVuZE51bWJlcihkb3VibGUgbnVtYmVyKQog
ewogICAgIE51bWJlclRvU3RyaW5nQnVmZmVyIGJ1ZmZlcjsKICAgICBhcHBlbmQobnVtYmVyVG9T
dHJpbmcobnVtYmVyLCBidWZmZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgKaW5k
ZXggZWJhZjczZTZlZjc5MGM4MjY5YWI5YTAxMmQ0MjU0ODhjNTdiMWUxMS4uZmU0YzUzMjBjZWIz
ZjFkMjhhMDRmNTkyODM5OTZiOTJiYmMxZTUxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
dGV4dC9TdHJpbmdCdWlsZGVyLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWls
ZGVyLmgKQEAgLTIyMiwyMSArMjIyLDE0IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgdm9pZCBhcHBlbmROdW1iZXIodW5zaWduZWQgbG9uZyk7CiAgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHZvaWQgYXBwZW5kTnVtYmVyKGxvbmcgbG9uZyk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHZvaWQgYXBwZW5kTnVtYmVyKHVuc2lnbmVkIGxvbmcgbG9uZyk7Ci0gICAgLy8gRklYTUU6IENo
YW5nZSB0byBjYWxsIGFwcGVuZFNob3J0ZXN0Rm9ybU51bWJlci4KLSAgICB2b2lkIGFwcGVuZE51
bWJlcihmbG9hdCkgPSBkZWxldGU7Ci0gICAgdm9pZCBhcHBlbmROdW1iZXIoZG91YmxlKSA9IGRl
bGV0ZTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmROdW1iZXIoZmxvYXQpOwor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGFwcGVuZE51bWJlcihkb3VibGUpOwogCi0gICAg
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYXBwZW5kU2hvcnRlc3RGb3JtTnVtYmVyKGZsb2F0KTsK
LSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmRTaG9ydGVzdEZvcm1OdW1iZXIoZG91
YmxlKTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmRGaXhlZFByZWNpc2lvbk51
bWJlcihmbG9hdCwgdW5zaWduZWQgcHJlY2lzaW9uID0gNiwgVHJhaWxpbmdaZXJvc1RydW5jYXRp
bmdQb2xpY3kgPSBUcnVuY2F0ZVRyYWlsaW5nWmVyb3MpOwogICAgIFdURl9FWFBPUlRfUFJJVkFU
RSB2b2lkIGFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKGRvdWJsZSwgdW5zaWduZWQgcHJlY2lz
aW9uID0gNiwgVHJhaWxpbmdaZXJvc1RydW5jYXRpbmdQb2xpY3kgPSBUcnVuY2F0ZVRyYWlsaW5n
WmVyb3MpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGFwcGVuZEZpeGVkV2lkdGhOdW1i
ZXIoZmxvYXQsIHVuc2lnbmVkIGRlY2ltYWxQbGFjZXMpOwogICAgIFdURl9FWFBPUlRfUFJJVkFU
RSB2b2lkIGFwcGVuZEZpeGVkV2lkdGhOdW1iZXIoZG91YmxlLCB1bnNpZ25lZCBkZWNpbWFsUGxh
Y2VzKTsKIAotICAgIC8vIEZJWE1FOiBEZWxldGUgaW4gZmF2b3Igb2YgdGhlIG5hbWUgYXBwZW5k
U2hvcnRlc3RGb3JtTnVtYmVyIG9yIGp1c3QgYXBwZW5kTnVtYmVyLgotICAgIHZvaWQgYXBwZW5k
RUNNQVNjcmlwdE51bWJlcihmbG9hdCkgPSBkZWxldGU7Ci0gICAgdm9pZCBhcHBlbmRFQ01BU2Ny
aXB0TnVtYmVyKGRvdWJsZSk7Ci0KICAgICBTdHJpbmcgdG9TdHJpbmcoKQogICAgIHsKICAgICAg
ICAgaWYgKCFtX3N0cmluZy5pc051bGwoKSkgewpAQCAtMzk0LDExICszODcsNiBAQCBBTFdBWVNf
SU5MSU5FIFVDaGFyKiBTdHJpbmdCdWlsZGVyOjpnZXRCdWZmZXJDaGFyYWN0ZXJzPFVDaGFyPigp
CiAgICAgcmV0dXJuIG1fYnVmZmVyQ2hhcmFjdGVyczE2OwogfQogCi1pbmxpbmUgdm9pZCBTdHJp
bmdCdWlsZGVyOjphcHBlbmRFQ01BU2NyaXB0TnVtYmVyKGRvdWJsZSBudW1iZXIpCi17Ci0gICAg
YXBwZW5kU2hvcnRlc3RGb3JtTnVtYmVyKG51bWJlcik7Ci19Ci0KIHRlbXBsYXRlIDx0eXBlbmFt
ZSBDaGFyVHlwZT4KIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nQnVpbGRlciYgcywgY29uc3QgQ2hh
clR5cGUqIGJ1ZmZlciwgdW5zaWduZWQgbGVuZ3RoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcu
Y3BwCmluZGV4IGY1YWNiYTgzNzRjYmEyMzZmODZlZWM1ZTdiNzQwMGI2YmI2YmIzNjAuLmU1YzE4
ZmU0YzM2ZjU5ZDk3MjAzZDkyNzBmNmYyYTIwOGIxZTI3NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0
cmluZy5jcHAKQEAgLTQ5MSwxMyArNDkxLDEzIEBAIFN0cmluZyBTdHJpbmc6Om51bWJlclRvU3Ry
aW5nRml4ZWRQcmVjaXNpb24oZG91YmxlIG51bWJlciwgdW5zaWduZWQgcHJlY2lzaW9uLCBUCiAg
ICAgcmV0dXJuIG51bWJlclRvRml4ZWRQcmVjaXNpb25TdHJpbmcobnVtYmVyLCBwcmVjaXNpb24s
IGJ1ZmZlciwgdHJhaWxpbmdaZXJvc1RydW5jYXRpbmdQb2xpY3kgPT0gVHJ1bmNhdGVUcmFpbGlu
Z1plcm9zKTsKIH0KIAotU3RyaW5nIFN0cmluZzo6bnVtYmVyVG9TdHJpbmdTaG9ydGVzdChmbG9h
dCBudW1iZXIpCitTdHJpbmcgU3RyaW5nOjpudW1iZXIoZmxvYXQgbnVtYmVyKQogewogICAgIE51
bWJlclRvU3RyaW5nQnVmZmVyIGJ1ZmZlcjsKICAgICByZXR1cm4gbnVtYmVyVG9TdHJpbmcobnVt
YmVyLCBidWZmZXIpOwogfQogCi1TdHJpbmcgU3RyaW5nOjpudW1iZXJUb1N0cmluZ1Nob3J0ZXN0
KGRvdWJsZSBudW1iZXIpCitTdHJpbmcgU3RyaW5nOjpudW1iZXIoZG91YmxlIG51bWJlcikKIHsK
ICAgICBOdW1iZXJUb1N0cmluZ0J1ZmZlciBidWZmZXI7CiAgICAgcmV0dXJuIG51bWJlclRvU3Ry
aW5nKG51bWJlciwgYnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RG
U3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IDAwN2FjNTcy
ZDZiZTA3YjFmZDg1YjlkZGMzNTNhNTlmZTdkMTc0NzIuLjZjYThkZTY2NzllOGFlOTQ3ZTU3NmUx
MDE0NWZkNzdhYzI5NDBkMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3Ry
aW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaApAQCAtMTI5LDcgKzEy
OSw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJDb3VudD4gU3Ry
aW5nKGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJDb3VudF0sIENvbnN0cnVjdEZy
b21MaXRlcmFsVGFnKSA6IG1faW1wbChTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbDxjaGFy
YWN0ZXJDb3VudD4oY2hhcmFjdGVycykpIHsgfQogCiAgICAgLy8gRklYTUU6IFdoeSBkbyB3ZSBo
YXZlIHRvIGRlZmluZSB0aGVzZSBleHBsaWNpdGx5IGdpdmVuIHRoYXQgd2UganVzdCB3YW50IHRo
ZSBkZWZhdWx0IHZlcnNpb25zPwotICAgIC8vIFdlIGhhdmUgdmVyaWZpZWQgZW1waXJpY2FsbHkg
dGhhdCB3ZSBkby4KKyAgICAvLyBXZSBoYXZlIHZlcmlmaWVkIGVtcGlyaWNhbGx5IHRoYXQgd2Ug
bmVlZCB0bywgYnV0IGl0IHdvdWxkIGJlIGdvb2QgdW5kZXJzdGFuZCBleGFjdGx5IHdoeS4KICAg
ICBTdHJpbmcoY29uc3QgU3RyaW5nJikgPSBkZWZhdWx0OwogICAgIFN0cmluZyhTdHJpbmcmJikg
PSBkZWZhdWx0OwogICAgIFN0cmluZyYgb3BlcmF0b3I9KGNvbnN0IFN0cmluZyYpID0gZGVmYXVs
dDsKQEAgLTE3OSwyMSArMTc5LDE0IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIFN0cmluZyBudW1iZXIodW5zaWduZWQgbG9uZyk7CiAgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBTdHJpbmcgbnVtYmVyKGxvbmcgbG9uZyk7CiAgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBTdHJpbmcgbnVtYmVyKHVuc2lnbmVkIGxvbmcgbG9uZyk7Ci0gICAgLy8gRklY
TUU6IENoYW5nZSB0byBjYWxsIG51bWJlclRvU3RyaW5nU2hvcnRlc3QuCi0gICAgc3RhdGljIFN0
cmluZyBudW1iZXIoZmxvYXQpID0gZGVsZXRlOwotICAgIHN0YXRpYyBTdHJpbmcgbnVtYmVyKGRv
dWJsZSkgPSBkZWxldGU7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgbnVt
YmVyKGZsb2F0KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZyBudW1iZXIo
ZG91YmxlKTsKIAotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nIG51bWJlclRv
U3RyaW5nU2hvcnRlc3QoZmxvYXQpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3Ry
aW5nIG51bWJlclRvU3RyaW5nU2hvcnRlc3QoZG91YmxlKTsKICAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIFN0cmluZyBudW1iZXJUb1N0cmluZ0ZpeGVkUHJlY2lzaW9uKGZsb2F0LCB1bnNp
Z25lZCBwcmVjaXNpb24gPSA2LCBUcmFpbGluZ1plcm9zVHJ1bmNhdGluZ1BvbGljeSA9IFRydW5j
YXRlVHJhaWxpbmdaZXJvcyk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmcg
bnVtYmVyVG9TdHJpbmdGaXhlZFByZWNpc2lvbihkb3VibGUsIHVuc2lnbmVkIHByZWNpc2lvbiA9
IDYsIFRyYWlsaW5nWmVyb3NUcnVuY2F0aW5nUG9saWN5ID0gVHJ1bmNhdGVUcmFpbGluZ1plcm9z
KTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZyBudW1iZXJUb1N0cmluZ0Zp
eGVkV2lkdGgoZmxvYXQsIHVuc2lnbmVkIGRlY2ltYWxQbGFjZXMpOwogICAgIFdURl9FWFBPUlRf
UFJJVkFURSBzdGF0aWMgU3RyaW5nIG51bWJlclRvU3RyaW5nRml4ZWRXaWR0aChkb3VibGUsIHVu
c2lnbmVkIGRlY2ltYWxQbGFjZXMpOwogCi0gICAgLy8gRklYTUU6IERlbGV0ZSBpbiBmYXZvciBv
ZiB0aGUgbmFtZSBudW1iZXJUb1N0cmluZ1Nob3J0ZXN0IG9yIGp1c3QgbnVtYmVyLgotICAgIHN0
YXRpYyBTdHJpbmcgbnVtYmVyVG9TdHJpbmdFQ01BU2NyaXB0KGZsb2F0KSA9IGRlbGV0ZTsKLSAg
ICBzdGF0aWMgU3RyaW5nIG51bWJlclRvU3RyaW5nRUNNQVNjcmlwdChkb3VibGUpOwotCiAgICAg
Ly8gRmluZCBhIHNpbmdsZSBjaGFyYWN0ZXIgb3Igc3RyaW5nLCBhbHNvIHdpdGggbWF0Y2ggZnVu
Y3Rpb24gJiBsYXRpbjEgZm9ybXMuCiAgICAgc2l6ZV90IGZpbmQoVUNoYXIgY2hhcmFjdGVyLCB1
bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZmluZChj
aGFyYWN0ZXIsIHN0YXJ0KSA6IG5vdEZvdW5kOyB9CiAKQEAgLTY1NCwxMSArNjQ3LDYgQEAgdGVt
cGxhdGU8dW5zaWduZWQgbGVuZ3RoPiBpbmxpbmUgYm9vbCBzdGFydHNXaXRoTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKGNvbnN0IFMKICAgICByZXR1cm4gc3RhcnRzV2l0aExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZShzdHJpbmcuaW1wbCgpLCBsb3dlcmNhc2VMZXR0ZXJzKTsKIH0KIAotaW5saW5l
IFN0cmluZyBTdHJpbmc6Om51bWJlclRvU3RyaW5nRUNNQVNjcmlwdChkb3VibGUgbnVtYmVyKQot
ewotICAgIHJldHVybiBudW1iZXJUb1N0cmluZ1Nob3J0ZXN0KG51bWJlcik7Ci19Ci0KIGlubGlu
ZSBuYW1lc3BhY2UgU3RyaW5nTGl0ZXJhbHMgewogCiBpbmxpbmUgU3RyaW5nIG9wZXJhdG9yIiIg
X3N0cihjb25zdCBjaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHAKaW5kZXggMzNhNTI5ZTgxMjY2MDczMTM1NjkzZTBkNzQ3
ZDVkMTJlOWRlMTYwMi4uZjE1N2FhZmQ0Y2VkODFlNDMxNzM2ODlkMTdkODgzMWNhMTYxYTE3MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmNwcApAQCAtMSw3ICsx
LDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4K
ICAqICAgICAgICAgICAoQykgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2Rl
Lm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTU0LDE1ICs1NCwxMCBAQCBDU1NDdXJzb3JJ
bWFnZVZhbHVlOjp+Q1NTQ3Vyc29ySW1hZ2VWYWx1ZSgpCiAKIFN0cmluZyBDU1NDdXJzb3JJbWFn
ZVZhbHVlOjpjdXN0b21DU1NUZXh0KCkgY29uc3QKIHsKLSAgICBTdHJpbmdCdWlsZGVyIHJlc3Vs
dDsKLSAgICByZXN1bHQuYXBwZW5kKG1faW1hZ2VWYWx1ZS5nZXQoKS5jc3NUZXh0KCkpOwotICAg
IGlmIChtX2hhc0hvdFNwb3QpIHsKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcpOwotICAgICAg
ICByZXN1bHQuYXBwZW5kTnVtYmVyKG1faG90U3BvdC54KCkpOwotICAgICAgICByZXN1bHQuYXBw
ZW5kKCcgJyk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmROdW1iZXIobV9ob3RTcG90LnkoKSk7Ci0g
ICAgfQotICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKKyAgICBTdHJpbmcgdGV4dCA9IG1f
aW1hZ2VWYWx1ZS5nZXQoKS5jc3NUZXh0KCk7CisgICAgaWYgKCFtX2hhc0hvdFNwb3QpCisgICAg
ICAgIHJldHVybiB0ZXh0OworICAgIHJldHVybiBtYWtlU3RyaW5nKHRleHQsICcgJywgbV9ob3RT
cG90LngoKSwgJyAnLCBtX2hvdFNwb3QueSgpKTsKIH0KIAogLy8gRklYTUU6IFNob3VsZCB0aGlz
IGZ1bmN0aW9uIHRha2UgYSBUcmVlU2NvcGUgaW5zdGVhZD8KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9ET01NYXRyaXhSZWFkT25seS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9N
TWF0cml4UmVhZE9ubHkuY3BwCmluZGV4IDY1NjY0MWI3ZTE5YzViMzMyNzE5NmVmNzVhYTdhMGYz
ODYxZTk2OWUuLjVkODk1NWRhMTFmYWM5MmUzMGFlOGJhNTAyMzY5MDlmY2IxMWZkZjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXhSZWFkT25seS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJpeFJlYWRPbmx5LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MDQsNTYgKzQwNCwxMCBAQCBF
eGNlcHRpb25PcjxTdHJpbmc+IERPTU1hdHJpeFJlYWRPbmx5Ojp0b1N0cmluZygpIGNvbnN0CiAg
ICAgaWYgKCFtX21hdHJpeC5jb250YWluc09ubHlGaW5pdGVWYWx1ZXMoKSkKICAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiTWF0cml4IGNvbnRhaW5zIG5vbi1m
aW5pdGUgdmFsdWVzIl9zIH07CiAKLSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgaWYg
KGlzMkQoKSkgewotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIm1hdHJpeCgiKTsKLSAg
ICAgICAgYnVpbGRlci5hcHBlbmRFQ01BU2NyaXB0TnVtYmVyKG1fbWF0cml4LmEoKSk7Ci0gICAg
ICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRF
Q01BU2NyaXB0TnVtYmVyKG1fbWF0cml4LmIoKSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiLCAiKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRFQ01BU2NyaXB0TnVtYmVyKG1fbWF0
cml4LmMoKSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKLSAgICAgICAg
YnVpbGRlci5hcHBlbmRFQ01BU2NyaXB0TnVtYmVyKG1fbWF0cml4LmQoKSk7Ci0gICAgICAgIGJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRFQ01BU2Ny
aXB0TnVtYmVyKG1fbWF0cml4LmUoKSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
LCAiKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRFQ01BU2NyaXB0TnVtYmVyKG1fbWF0cml4LmYo
KSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJtYXRyaXgz
ZCgiKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRFQ01BU2NyaXB0TnVtYmVyKG1fbWF0cml4Lm0x
MSgpKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsICIpOwotICAgICAgICBidWls
ZGVyLmFwcGVuZEVDTUFTY3JpcHROdW1iZXIobV9tYXRyaXgubTEyKCkpOwotICAgICAgICBidWls
ZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kRUNNQVNjcmlw
dE51bWJlcihtX21hdHJpeC5tMTMoKSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
LCAiKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRFQ01BU2NyaXB0TnVtYmVyKG1fbWF0cml4Lm0x
NCgpKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsICIpOwotICAgICAgICBidWls
ZGVyLmFwcGVuZEVDTUFTY3JpcHROdW1iZXIobV9tYXRyaXgubTIxKCkpOwotICAgICAgICBidWls
ZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kRUNNQVNjcmlw
dE51bWJlcihtX21hdHJpeC5tMjIoKSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
LCAiKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRFQ01BU2NyaXB0TnVtYmVyKG1fbWF0cml4Lm0y
MygpKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsICIpOwotICAgICAgICBidWls
ZGVyLmFwcGVuZEVDTUFTY3JpcHROdW1iZXIobV9tYXRyaXgubTI0KCkpOwotICAgICAgICBidWls
ZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kRUNNQVNjcmlw
dE51bWJlcihtX21hdHJpeC5tMzEoKSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
LCAiKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRFQ01BU2NyaXB0TnVtYmVyKG1fbWF0cml4Lm0z
MigpKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsICIpOwotICAgICAgICBidWls
ZGVyLmFwcGVuZEVDTUFTY3JpcHROdW1iZXIobV9tYXRyaXgubTMzKCkpOwotICAgICAgICBidWls
ZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kRUNNQVNjcmlw
dE51bWJlcihtX21hdHJpeC5tMzQoKSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
LCAiKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRFQ01BU2NyaXB0TnVtYmVyKG1fbWF0cml4Lm00
MSgpKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsICIpOwotICAgICAgICBidWls
ZGVyLmFwcGVuZEVDTUFTY3JpcHROdW1iZXIobV9tYXRyaXgubTQyKCkpOwotICAgICAgICBidWls
ZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kRUNNQVNjcmlw
dE51bWJlcihtX21hdHJpeC5tNDMoKSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
LCAiKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRFQ01BU2NyaXB0TnVtYmVyKG1fbWF0cml4Lm00
NCgpKTsKLSAgICB9Ci0gICAgYnVpbGRlci5hcHBlbmQoJyknKTsKLSAgICByZXR1cm4gYnVpbGRl
ci50b1N0cmluZygpOworICAgIGlmIChpczJEKCkpCisgICAgICAgIHJldHVybiBtYWtlU3RyaW5n
KCJtYXRyaXgoIiwgbV9tYXRyaXguYSgpLCAiLCAiLCBtX21hdHJpeC5iKCksICIsICIsIG1fbWF0
cml4LmMoKSwgIiwgIiwgbV9tYXRyaXguZCgpLCAiLCAiLCBtX21hdHJpeC5lKCksICIsICIsIG1f
bWF0cml4LmYoKSwgJyknKTsKKworICAgIHJldHVybiBtYWtlU3RyaW5nKCJtYXRyaXgzZCgiLCBt
X21hdHJpeC5tMTEoKSwgIiwgIiwgbV9tYXRyaXgubTEyKCksICIsICIsIG1fbWF0cml4Lm0xMygp
LCAiLCAiLCBtX21hdHJpeC5tMTQoKSwgIiwgIiwgbV9tYXRyaXgubTIxKCksICIsICIsIG1fbWF0
cml4Lm0yMigpLCAiLCAiLCBtX21hdHJpeC5tMjMoKSwgIiwgIiwgbV9tYXRyaXgubTI0KCksICIs
ICIsIG1fbWF0cml4Lm0zMSgpLCAiLCAiLCBtX21hdHJpeC5tMzIoKSwgIiwgIiwgbV9tYXRyaXgu
bTMzKCksICIsICIsIG1fbWF0cml4Lm0zNCgpLCAiLCAiLCBtX21hdHJpeC5tNDEoKSwgIiwgIiwg
bV9tYXRyaXgubTQyKCksICIsICIsIG1fbWF0cml4Lm00MygpLCAiLCAiLCBtX21hdHJpeC5tNDQo
KSwgJyknKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2Vi
S2l0Q1NTTWF0cml4LmNwcAppbmRleCAyYjMwMWU5NTE3MjM3M2M1NDYyZWUwZWQwN2U0OTAwNzAw
ZTE4YWZjLi5kM2U4NjAwNGIwMDAyNjE1NGE0OWU0ZDlhNTRmZjc3OGZiMTcxNzYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSAi
VHJhbnNmb3JtRnVuY3Rpb25zLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4K
ICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0yMDMsNTYgKzIwMywxMCBAQCBFeGNlcHRpb25P
cjxTdHJpbmc+IFdlYktpdENTU01hdHJpeDo6dG9TdHJpbmcoKSBjb25zdAogICAgIGlmICghbV9t
YXRyaXguY29udGFpbnNPbmx5RmluaXRlVmFsdWVzKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBJbnZhbGlkU3RhdGVFcnJvciwgIk1hdHJpeCBjb250YWlucyBub24tZmluaXRlIHZhbHVl
cyJfcyB9OwogCi0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIGlmIChtX21hdHJpeC5p
c0FmZmluZSgpKSB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgibWF0cml4KCIpOwot
ICAgICAgICBidWlsZGVyLmFwcGVuZEVDTUFTY3JpcHROdW1iZXIobV9tYXRyaXguYSgpKTsKLSAg
ICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsICIpOwotICAgICAgICBidWlsZGVyLmFwcGVu
ZEVDTUFTY3JpcHROdW1iZXIobV9tYXRyaXguYigpKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRM
aXRlcmFsKCIsICIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZEVDTUFTY3JpcHROdW1iZXIobV9t
YXRyaXguYygpKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsICIpOwotICAgICAg
ICBidWlsZGVyLmFwcGVuZEVDTUFTY3JpcHROdW1iZXIobV9tYXRyaXguZCgpKTsKLSAgICAgICAg
YnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsICIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZEVDTUFT
Y3JpcHROdW1iZXIobV9tYXRyaXguZSgpKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFs
KCIsICIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZEVDTUFTY3JpcHROdW1iZXIobV9tYXRyaXgu
ZigpKTsKLSAgICB9IGVsc2UgewotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIm1hdHJp
eDNkKCIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZEVDTUFTY3JpcHROdW1iZXIobV9tYXRyaXgu
bTExKCkpOwotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7Ci0gICAgICAgIGJ1
aWxkZXIuYXBwZW5kRUNNQVNjcmlwdE51bWJlcihtX21hdHJpeC5tMTIoKSk7Ci0gICAgICAgIGJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRFQ01BU2Ny
aXB0TnVtYmVyKG1fbWF0cml4Lm0xMygpKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFs
KCIsICIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZEVDTUFTY3JpcHROdW1iZXIobV9tYXRyaXgu
bTE0KCkpOwotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7Ci0gICAgICAgIGJ1
aWxkZXIuYXBwZW5kRUNNQVNjcmlwdE51bWJlcihtX21hdHJpeC5tMjEoKSk7Ci0gICAgICAgIGJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRFQ01BU2Ny
aXB0TnVtYmVyKG1fbWF0cml4Lm0yMigpKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFs
KCIsICIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZEVDTUFTY3JpcHROdW1iZXIobV9tYXRyaXgu
bTIzKCkpOwotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7Ci0gICAgICAgIGJ1
aWxkZXIuYXBwZW5kRUNNQVNjcmlwdE51bWJlcihtX21hdHJpeC5tMjQoKSk7Ci0gICAgICAgIGJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRFQ01BU2Ny
aXB0TnVtYmVyKG1fbWF0cml4Lm0zMSgpKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFs
KCIsICIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZEVDTUFTY3JpcHROdW1iZXIobV9tYXRyaXgu
bTMyKCkpOwotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7Ci0gICAgICAgIGJ1
aWxkZXIuYXBwZW5kRUNNQVNjcmlwdE51bWJlcihtX21hdHJpeC5tMzMoKSk7Ci0gICAgICAgIGJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRFQ01BU2Ny
aXB0TnVtYmVyKG1fbWF0cml4Lm0zNCgpKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFs
KCIsICIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZEVDTUFTY3JpcHROdW1iZXIobV9tYXRyaXgu
bTQxKCkpOwotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7Ci0gICAgICAgIGJ1
aWxkZXIuYXBwZW5kRUNNQVNjcmlwdE51bWJlcihtX21hdHJpeC5tNDIoKSk7Ci0gICAgICAgIGJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRFQ01BU2Ny
aXB0TnVtYmVyKG1fbWF0cml4Lm00MygpKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFs
KCIsICIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZEVDTUFTY3JpcHROdW1iZXIobV9tYXRyaXgu
bTQ0KCkpOwotICAgIH0KLSAgICBidWlsZGVyLmFwcGVuZCgnKScpOwotICAgIHJldHVybiBidWls
ZGVyLnRvU3RyaW5nKCk7CisgICAgaWYgKG1fbWF0cml4LmlzQWZmaW5lKCkpCisgICAgICAgIHJl
dHVybiBtYWtlU3RyaW5nKCJtYXRyaXgoIiwgbV9tYXRyaXguYSgpLCAiLCAiLCBtX21hdHJpeC5i
KCksICIsICIsIG1fbWF0cml4LmMoKSwgIiwgIiwgbV9tYXRyaXguZCgpLCAiLCAiLCBtX21hdHJp
eC5lKCksICIsICIsIG1fbWF0cml4LmYoKSwgJyknKTsKKworICAgIHJldHVybiBtYWtlU3RyaW5n
KCJtYXRyaXgzZCgiLCBtX21hdHJpeC5tMTEoKSwgIiwgIiwgbV9tYXRyaXgubTEyKCksICIsICIs
IG1fbWF0cml4Lm0xMygpLCAiLCAiLCBtX21hdHJpeC5tMTQoKSwgIiwgIiwgbV9tYXRyaXgubTIx
KCksICIsICIsIG1fbWF0cml4Lm0yMigpLCAiLCAiLCBtX21hdHJpeC5tMjMoKSwgIiwgIiwgbV9t
YXRyaXgubTI0KCksICIsICIsIG1fbWF0cml4Lm0zMSgpLCAiLCAiLCBtX21hdHJpeC5tMzIoKSwg
IiwgIiwgbV9tYXRyaXgubTMzKCksICIsICIsIG1fbWF0cml4Lm0zNCgpLCAiLCAiLCBtX21hdHJp
eC5tNDEoKSwgIiwgIiwgbV9tYXRyaXgubTQyKCksICIsICIsIG1fbWF0cml4Lm00MygpLCAiLCAi
LCBtX21hdHJpeC5tNDQoKSwgJyknKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcAppbmRleCAz
OTkxZTc1NDYxNWRkMTMwY2ZiZmE1OWRkNzU0ZmU5Nzc2MDA1OTJhLi41NDQyZTBjNGEwNjdiYTcy
N2I2Mjk1ZjliOTE4ZjMzOTlkYjJlYWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MUGFyc2VySWRpb21zLmNwcApAQCAtODksNyArODksNyBAQCBTdHJpbmcgc2VyaWFs
aXplRm9yTnVtYmVyVHlwZShkb3VibGUgbnVtYmVyKQogewogICAgIC8vIEFjY29yZGluZyB0byBI
VE1MNSwgInRoZSBiZXN0IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBudW1iZXIgbiBhcyBhIGZsb2F0
aW5nCiAgICAgLy8gcG9pbnQgbnVtYmVyIiBpcyBhIHN0cmluZyBwcm9kdWNlZCBieSBhcHBseWlu
ZyBUb1N0cmluZygpIHRvIG4uCi0gICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyVG9TdHJpbmdFQ01B
U2NyaXB0KG51bWJlcik7CisgICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyKG51bWJlcik7CiB9CiAK
IERlY2ltYWwgcGFyc2VUb0RlY2ltYWxGb3JOdW1iZXJUeXBlKGNvbnN0IFN0cmluZyYgc3RyaW5n
LCBjb25zdCBEZWNpbWFsJiBmYWxsYmFja1ZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudFR5cGVzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5jcHAKaW5kZXggZDI4OTFh
N2U5ZDVlNWU0OWZiZWFlYzNhZjU4ODliNjY2MzJlOTc4ZC4uMjZhYWExNTNlYWUzN2ZmODRlNWIx
OTE4Y2E5MzgwNTZmMDhiMDQ4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvTWVkaWFDb250cm9sRWxlbWVudFR5cGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuY3BwCkBAIC0yNDIsNyArMjQyLDcgQEAg
Ym9vbCBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VD
bGlja0V2ZW50cygpCiB2b2lkIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ6OnNldFZv
bHVtZShkb3VibGUgdm9sdW1lKQogewogICAgIGlmICh2YWx1ZSgpLnRvRG91YmxlKCkgIT0gdm9s
dW1lKQotICAgICAgICBzZXRWYWx1ZShTdHJpbmc6Om51bWJlclRvU3RyaW5nRUNNQVNjcmlwdCh2
b2x1bWUpKTsKKyAgICAgICAgc2V0VmFsdWUoU3RyaW5nOjpudW1iZXIodm9sdW1lKSk7CiB9CiAK
IHZvaWQgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudDo6c2V0Q2xlYXJNdXRlZE9uVXNl
ckludGVyYWN0aW9uKGJvb2wgY2xlYXJNdXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCmluZGV4IDdmYTRhYjZkYTRlZjc4YmVh
ODEzNGVlODM0MDM3MGNmMGYzYTQ2ZjUuLjA4OWUxMzkzNDgzNjI4MjdiYjVlZDA0MzdiNjcyMGNl
NjFkZmM5OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29u
dHJvbEVsZW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNv
bnRyb2xFbGVtZW50cy5jcHAKQEAgLTkwOSw3ICs5MDksNyBAQCBib29sIE1lZGlhQ29udHJvbFRp
bWVsaW5lRWxlbWVudDo6d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKQogCiB2b2lkIE1l
ZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudDo6c2V0UG9zaXRpb24oZG91YmxlIGN1cnJlbnRUaW1l
KQogewotICAgIHNldFZhbHVlKFN0cmluZzo6bnVtYmVyVG9TdHJpbmdFQ01BU2NyaXB0KGN1cnJl
bnRUaW1lKSk7CisgICAgc2V0VmFsdWUoU3RyaW5nOjpudW1iZXIoY3VycmVudFRpbWUpKTsKIH0K
IAogdm9pZCBNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ6OnNldER1cmF0aW9uKGRvdWJsZSBk
dXJhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlY2ltYWwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVjaW1hbC5jcHAKaW5kZXggYjFhYzY1OTJlZjI4
MWEyMWNiYjM2YzZlODBhODI5ZGJjYmFhM2ZiZS4uMGIyMTEwNGY5NjU3ZWY5ZDAzMjgyN2RiNjAy
MTIzYWQ4NzlmNGMyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVjaW1h
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVjaW1hbC5jcHAKQEAgLTY4MSw4
ICs2ODEsMTEgQEAgRGVjaW1hbCBEZWNpbWFsOjpmbG9vcigpIGNvbnN0CiAKIERlY2ltYWwgRGVj
aW1hbDo6ZnJvbURvdWJsZShkb3VibGUgZG91YmxlVmFsdWUpCiB7Ci0gICAgaWYgKHN0ZDo6aXNm
aW5pdGUoZG91YmxlVmFsdWUpKQotICAgICAgICByZXR1cm4gZnJvbVN0cmluZyhTdHJpbmc6Om51
bWJlclRvU3RyaW5nRUNNQVNjcmlwdChkb3VibGVWYWx1ZSkpOworICAgIGlmIChzdGQ6OmlzZmlu
aXRlKGRvdWJsZVZhbHVlKSkgeworICAgICAgICAvLyBGSVhNRTogQ2hhbmdlIGZyb21TdHJpbmcg
dG8gdGFrZSBhIFN0cmluZ1ZpZXcgaW5zdGVhZCBvZiBhIFN0cmluZyBhbmQgdGhlbgorICAgICAg
ICAvLyB1c2UgYSBmaXhlZCBzaXplIHN0YWNrIGJ1ZmZlciBpbnN0ZWFkIG9mIGFsbG9jYXRpbmcg
YW5kIGRlYWxsb2NhdGluZyBhIHN0cmluZy4KKyAgICAgICAgcmV0dXJuIGZyb21TdHJpbmcoU3Ry
aW5nOjpudW1iZXIoZG91YmxlVmFsdWUpKTsKKyAgICB9CiAKICAgICBpZiAoc3RkOjppc2luZihk
b3VibGVWYWx1ZSkpCiAgICAgICAgIHJldHVybiBpbmZpbml0eShkb3VibGVWYWx1ZSA8IDAgPyBO
ZWdhdGl2ZSA6IFBvc2l0aXZlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMaXN0TWFya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
aXN0TWFya2VyLmNwcAppbmRleCA0Zjc4ZjgzMTA1Yzk2Y2M2YmY4MWQ3M2VmODI0NDU5ZDY0NGE5
MzI2Li5jZTAxOWJhYTNiZDU1YTE2ZWUyNGZhZWU2ZTk3NjYyNmJjYmVhZWQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCkBAIC0xLDcgKzEsNyBA
QAogLyoKICAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQog
ICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQot
ICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNiBBbmRy
ZXcgV2VsbGluZ3RvbiAocHJvdG9uQHdpcmV0YXBwZWQubmV0KQogICogQ29weXJpZ2h0IChDKSAy
MDEwIERhbmllbCBCYXRlcyAoZGJhdGVzQGludHVkYXRhLmNvbSkKICAqCkBAIC0zNCw3ICszNCw3
IEBACiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxp
bmVzLmg+CiAjaW5jbHVkZSA8d3RmL1N0YWNrU3RhdHMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1i
ZXJzLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtNDUsOSArNDUsMTAgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9J
TVBMKFJlbmRlckxpc3RNYXJrZXIpOwogCiBjb25zdCBpbnQgY01hcmtlclBhZGRpbmcgPSA3Owog
Ci1lbnVtIFNlcXVlbmNlVHlwZSB7IE51bWVyaWNTZXF1ZW5jZSwgQWxwaGFiZXRpY1NlcXVlbmNl
IH07CitlbnVtIGNsYXNzIExldHRlckNhc2UgeyBMb3dlciwgVXBwZXIgfTsKK2VudW0gY2xhc3Mg
U2VxdWVuY2VUeXBlIHsgTnVtZXJpYywgQWxwaGFiZXRpYyB9OwogCi1zdGF0aWMgTkVWRVJfSU5M
SU5FIHZvaWQgdG9Sb21hbihTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBpbnQgbnVtYmVyLCBib29s
IHVwcGVyKQorc3RhdGljIE5FVkVSX0lOTElORSBTdHJpbmcgdG9Sb21hbihpbnQgbnVtYmVyLCBM
ZXR0ZXJDYXNlIGxldHRlckNhc2UpCiB7CiAgICAgLy8gRklYTUU6IENTUzMgZGVzY3JpYmVzIGhv
dyB0byBtYWtlIHRoaXMgd29yayBmb3IgbXVjaCBsYXJnZXIgbnVtYmVycywKICAgICAvLyB1c2lu
ZyBvdmVyYmFycyBhbmQgc3BlY2lhbCBjaGFyYWN0ZXJzLiBJdCBhbHNvIHNwZWNpZmllcyB0aGUg
Y2hhcmFjdGVycwpAQCAtNTYsMTMgKzU3LDEzIEBAIHN0YXRpYyBORVZFUl9JTkxJTkUgdm9pZCB0
b1JvbWFuKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGludCBudW1iZXIsIGJvb2wgdXBwZXIpCiAK
ICAgICAvLyBCaWcgZW5vdWdoIHRvIHN0b3JlIGxhcmdlc3Qgcm9tYW4gbnVtYmVyIGxlc3MgdGhh
biAzOTk5IHdoaWNoCiAgICAgLy8gaXMgMzg4OCAoTU1NRENDQ0xYWFhWSUlJKQotICAgIGNvbnN0
IGludCBsZXR0ZXJzU2l6ZSA9IDE1OworICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBsZXR0ZXJzU2l6
ZSA9IDE1OwogICAgIExDaGFyIGxldHRlcnNbbGV0dGVyc1NpemVdOwogCi0gICAgaW50IGxlbmd0
aCA9IDA7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gMDsKICAgICBjb25zdCBMQ2hhciBsZGlnaXRz
W10gPSB7ICdpJywgJ3YnLCAneCcsICdsJywgJ2MnLCAnZCcsICdtJyB9OwogICAgIGNvbnN0IExD
aGFyIHVkaWdpdHNbXSA9IHsgJ0knLCAnVicsICdYJywgJ0wnLCAnQycsICdEJywgJ00nIH07Ci0g
ICAgY29uc3QgTENoYXIqIGRpZ2l0cyA9IHVwcGVyID8gdWRpZ2l0cyA6IGxkaWdpdHM7CisgICAg
Y29uc3QgTENoYXIqIGRpZ2l0cyA9IGxldHRlckNhc2UgPT0gTGV0dGVyQ2FzZTo6VXBwZXIgPyB1
ZGlnaXRzIDogbGRpZ2l0czsKICAgICBpbnQgZCA9IDA7CiAgICAgZG8gewogICAgICAgICBpbnQg
bnVtID0gbnVtYmVyICUgMTA7CkBAIC04MCwyMiArODEsMjIgQEAgc3RhdGljIE5FVkVSX0lOTElO
RSB2b2lkIHRvUm9tYW4oU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgaW50IG51bWJlciwgYm9vbCB1
cHBlcikKICAgICB9IHdoaWxlIChudW1iZXIpOwogCiAgICAgQVNTRVJUKGxlbmd0aCA8PSBsZXR0
ZXJzU2l6ZSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoJmxldHRlcnNbbGV0dGVyc1NpemUgLSBsZW5n
dGhdLCBsZW5ndGgpOworICAgIHJldHVybiBTdHJpbmcgeyAmbGV0dGVyc1tsZXR0ZXJzU2l6ZSAt
IGxlbmd0aF0sIGxlbmd0aCB9OwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4KLXN0YXRpYyBpbmxpbmUgdm9pZCB0b0FscGhhYmV0aWNPck51bWVyaWMoU3RyaW5nQnVpbGRl
ciYgYnVpbGRlciwgaW50IG51bWJlciwgY29uc3QgQ2hhcmFjdGVyVHlwZSogc2VxdWVuY2UsIHVu
c2lnbmVkIHNlcXVlbmNlU2l6ZSwgU2VxdWVuY2VUeXBlIHR5cGUpCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPgorc3RhdGljIGlubGluZSBTdHJpbmcgdG9BbHBoYWJldGljT3JOdW1l
cmljKGludCBudW1iZXIsIGNvbnN0IENoYXJhY3RlclR5cGUqIHNlcXVlbmNlLCB1bnNpZ25lZCBz
ZXF1ZW5jZVNpemUsIFNlcXVlbmNlVHlwZSB0eXBlKQogewogICAgIEFTU0VSVChzZXF1ZW5jZVNp
emUgPj0gMik7CiAKICAgICAvLyBUYWtpbmcgc2l6ZW9mKG51bWJlcikgaW4gdGhlIGV4cHJlc3Np
b24gYmVsb3cgZG9lc24ndCB3b3JrIHdpdGggc29tZSBjb21waWxlcnMuCi0gICAgY29uc3QgaW50
IGxldHRlcnNTaXplID0gc2l6ZW9mKGludCkgKiA4ICsgMTsgLy8gQmluYXJ5IGlzIHRoZSB3b3Jz
dCBjYXNlOyByZXF1aXJlcyBvbmUgY2hhcmFjdGVyIHBlciBiaXQgcGx1cyBhIG1pbnVzIHNpZ24u
CisgICAgY29uc3RleHByIHVuc2lnbmVkIGxldHRlcnNTaXplID0gc2l6ZW9mKGludCkgKiA4ICsg
MTsgLy8gQmluYXJ5IGlzIHRoZSB3b3JzdCBjYXNlOyByZXF1aXJlcyBvbmUgY2hhcmFjdGVyIHBl
ciBiaXQgcGx1cyBhIG1pbnVzIHNpZ24uCiAKICAgICBDaGFyYWN0ZXJUeXBlIGxldHRlcnNbbGV0
dGVyc1NpemVdOwogCiAgICAgYm9vbCBpc05lZ2F0aXZlTnVtYmVyID0gZmFsc2U7CiAgICAgdW5z
aWduZWQgbnVtYmVyU2hhZG93ID0gbnVtYmVyOwotICAgIGlmICh0eXBlID09IEFscGhhYmV0aWNT
ZXF1ZW5jZSkgeworICAgIGlmICh0eXBlID09IFNlcXVlbmNlVHlwZTo6QWxwaGFiZXRpYykgewog
ICAgICAgICBBU1NFUlQobnVtYmVyID4gMCk7CiAgICAgICAgIC0tbnVtYmVyU2hhZG93OwogICAg
IH0gZWxzZSBpZiAobnVtYmVyIDwgMCkgewpAQCAtMTAzLDkgKzEwNCw5IEBAIHN0YXRpYyBpbmxp
bmUgdm9pZCB0b0FscGhhYmV0aWNPck51bWVyaWMoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgaW50
IG51bWJlciwgY29uCiAgICAgICAgIGlzTmVnYXRpdmVOdW1iZXIgPSB0cnVlOwogICAgIH0KICAg
ICBsZXR0ZXJzW2xldHRlcnNTaXplIC0gMV0gPSBzZXF1ZW5jZVtudW1iZXJTaGFkb3cgJSBzZXF1
ZW5jZVNpemVdOwotICAgIGludCBsZW5ndGggPSAxOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IDE7
CiAKLSAgICBpZiAodHlwZSA9PSBBbHBoYWJldGljU2VxdWVuY2UpIHsKKyAgICBpZiAodHlwZSA9
PSBTZXF1ZW5jZVR5cGU6OkFscGhhYmV0aWMpIHsKICAgICAgICAgd2hpbGUgKChudW1iZXJTaGFk
b3cgLz0gc2VxdWVuY2VTaXplKSA+IDApIHsKICAgICAgICAgICAgIC0tbnVtYmVyU2hhZG93Owog
ICAgICAgICAgICAgbGV0dGVyc1tsZXR0ZXJzU2l6ZSAtICsrbGVuZ3RoXSA9IHNlcXVlbmNlW251
bWJlclNoYWRvdyAlIHNlcXVlbmNlU2l6ZV07CkBAIC0xMTgsNTIgKzExOSw1NCBAQCBzdGF0aWMg
aW5saW5lIHZvaWQgdG9BbHBoYWJldGljT3JOdW1lcmljKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIs
IGludCBudW1iZXIsIGNvbgogICAgICAgICBsZXR0ZXJzW2xldHRlcnNTaXplIC0gKytsZW5ndGhd
ID0gaHlwaGVuTWludXM7CiAKICAgICBBU1NFUlQobGVuZ3RoIDw9IGxldHRlcnNTaXplKTsKLSAg
ICBidWlsZGVyLmFwcGVuZCgmbGV0dGVyc1tsZXR0ZXJzU2l6ZSAtIGxlbmd0aF0sIGxlbmd0aCk7
CisgICAgcmV0dXJuIFN0cmluZyB7ICZsZXR0ZXJzW2xldHRlcnNTaXplIC0gbGVuZ3RoXSwgbGVu
Z3RoIH07CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotc3RhdGljIE5F
VkVSX0lOTElORSB2b2lkIHRvU3ltYm9saWMoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgaW50IG51
bWJlciwgY29uc3QgQ2hhcmFjdGVyVHlwZSogc3ltYm9scywgdW5zaWduZWQgc3ltYm9sc1NpemUp
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorc3RhdGljIE5FVkVSX0lOTElORSBT
dHJpbmcgdG9TeW1ib2xpYyhpbnQgbnVtYmVyLCBjb25zdCBDaGFyYWN0ZXJUeXBlKiBzeW1ib2xz
LCB1bnNpZ25lZCBzeW1ib2xzU2l6ZSkKIHsKICAgICBBU1NFUlQobnVtYmVyID4gMCk7CiAgICAg
QVNTRVJUKHN5bWJvbHNTaXplID49IDEpOwotICAgIHVuc2lnbmVkIG51bWJlclNoYWRvdyA9IG51
bWJlcjsKLSAgICAtLW51bWJlclNoYWRvdzsKIAotICAgIC8vIFRoZSBhc3Rlcmlza3MgbGlzdC1z
dHlsZS10eXBlIGlzIHRoZSB3b3JzdCBjYXNlOyB3ZSBzaG93IHxudW1iZXJTaGFkb3d8IGFzdGVy
aXNrcy4KLSAgICBidWlsZGVyLmFwcGVuZChzeW1ib2xzW251bWJlclNoYWRvdyAlIHN5bWJvbHNT
aXplXSk7Ci0gICAgdW5zaWduZWQgbnVtU3ltYm9scyA9IG51bWJlclNoYWRvdyAvIHN5bWJvbHNT
aXplOwotICAgIHdoaWxlIChudW1TeW1ib2xzLS0pCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKHN5
bWJvbHNbbnVtYmVyU2hhZG93ICUgc3ltYm9sc1NpemVdKTsKKyAgICAvLyBUaGUgYXN0ZXJpc2tz
IGxpc3Qtc3R5bGUtdHlwZSBpcyB0aGUgd29yc3QgY2FzZTsgd2Ugc2hvdyB8bnVtYmVyfCBhc3Rl
cmlza3MuCisgICAgQ2hhcmFjdGVyVHlwZSBzeW1ib2wgPSBzeW1ib2xzWyhudW1iZXIgLSAxKSAl
IHN5bWJvbHNTaXplXTsKKyAgICB1bnNpZ25lZCBjb3VudCA9IChudW1iZXIgLSAxKSAvIHN5bWJv
bHNTaXplICsgMTsKKworICAgIENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnM7CisgICAgU3RyaW5n
IHJlc3VsdCA9IFN0cmluZzo6Y3JlYXRlVW5pbml0aWFsaXplZChjb3VudCwgY2hhcmFjdGVycyk7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvdW50OyArK2kpCisgICAgICAgIGNoYXJh
Y3RlcnNbaV0gPSBzeW1ib2w7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdGVtcGxhdGUgPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1zdGF0aWMgTkVWRVJfSU5MSU5FIHZvaWQgdG9BbHBoYWJl
dGljKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGludCBudW1iZXIsIGNvbnN0IENoYXJhY3RlclR5
cGUqIGFscGhhYmV0LCB1bnNpZ25lZCBhbHBoYWJldFNpemUpCit0ZW1wbGF0ZTx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPgorc3RhdGljIE5FVkVSX0lOTElORSBTdHJpbmcgdG9BbHBoYWJldGljKGlu
dCBudW1iZXIsIGNvbnN0IENoYXJhY3RlclR5cGUqIGFscGhhYmV0LCB1bnNpZ25lZCBhbHBoYWJl
dFNpemUpCiB7Ci0gICAgdG9BbHBoYWJldGljT3JOdW1lcmljKGJ1aWxkZXIsIG51bWJlciwgYWxw
aGFiZXQsIGFscGhhYmV0U2l6ZSwgQWxwaGFiZXRpY1NlcXVlbmNlKTsKKyAgICByZXR1cm4gdG9B
bHBoYWJldGljT3JOdW1lcmljKG51bWJlciwgYWxwaGFiZXQsIGFscGhhYmV0U2l6ZSwgU2VxdWVu
Y2VUeXBlOjpBbHBoYWJldGljKTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+Ci1zdGF0aWMgTkVWRVJfSU5MSU5FIHZvaWQgdG9OdW1lcmljKFN0cmluZ0J1aWxkZXImIGJ1
aWxkZXIsIGludCBudW1iZXIsIGNvbnN0IENoYXJhY3RlclR5cGUqIG51bWVyYWxzLCB1bnNpZ25l
ZCBudW1lcmFsc1NpemUpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorc3RhdGlj
IE5FVkVSX0lOTElORSBTdHJpbmcgdG9OdW1lcmljKGludCBudW1iZXIsIGNvbnN0IENoYXJhY3Rl
clR5cGUqIG51bWVyYWxzLCB1bnNpZ25lZCBudW1lcmFsc1NpemUpCiB7Ci0gICAgdG9BbHBoYWJl
dGljT3JOdW1lcmljKGJ1aWxkZXIsIG51bWJlciwgbnVtZXJhbHMsIG51bWVyYWxzU2l6ZSwgTnVt
ZXJpY1NlcXVlbmNlKTsKKyAgICByZXR1cm4gdG9BbHBoYWJldGljT3JOdW1lcmljKG51bWJlciwg
bnVtZXJhbHMsIG51bWVyYWxzU2l6ZSwgU2VxdWVuY2VUeXBlOjpOdW1lcmljKTsKIH0KIAotdGVt
cGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIHNpemVfdCBzaXplPgotc3RhdGljIGlubGlu
ZSB2b2lkIHRvQWxwaGFiZXRpYyhTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBpbnQgbnVtYmVyLCBj
b25zdCBDaGFyYWN0ZXJUeXBlKCZhbHBoYWJldClbc2l6ZV0pCit0ZW1wbGF0ZTx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlLCBzaXplX3Qgc2l6ZT4KK3N0YXRpYyBpbmxpbmUgU3RyaW5nIHRvQWxwaGFi
ZXRpYyhpbnQgbnVtYmVyLCBjb25zdCBDaGFyYWN0ZXJUeXBlKCZhbHBoYWJldClbc2l6ZV0pCiB7
Ci0gICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIG51bWJlciwgYWxwaGFiZXQsIHNpemUpOworICAg
IHJldHVybiB0b0FscGhhYmV0aWMobnVtYmVyLCBhbHBoYWJldCwgc2l6ZSk7CiB9CiAKLXRlbXBs
YXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCBzaXplX3Qgc2l6ZT4KLXN0YXRpYyBpbmxpbmUg
dm9pZCB0b051bWVyaWMoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgaW50IG51bWJlciwgY29uc3Qg
Q2hhcmFjdGVyVHlwZSgmYWxwaGFiZXQpW3NpemVdKQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZSwgc2l6ZV90IHNpemU+CitzdGF0aWMgaW5saW5lIFN0cmluZyB0b051bWVyaWMoaW50
IG51bWJlciwgY29uc3QgQ2hhcmFjdGVyVHlwZSgmYWxwaGFiZXQpW3NpemVdKQogewotICAgIHRv
TnVtZXJpYyhidWlsZGVyLCBudW1iZXIsIGFscGhhYmV0LCBzaXplKTsKKyAgICByZXR1cm4gdG9O
dW1lcmljKG51bWJlciwgYWxwaGFiZXQsIHNpemUpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZSwgc2l6ZV90IHNpemU+Ci1zdGF0aWMgaW5saW5lIHZvaWQgdG9TeW1ib2xp
YyhTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBpbnQgbnVtYmVyLCBjb25zdCBDaGFyYWN0ZXJUeXBl
KCZhbHBoYWJldClbc2l6ZV0pCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCBzaXpl
X3Qgc2l6ZT4KK3N0YXRpYyBpbmxpbmUgU3RyaW5nIHRvU3ltYm9saWMoaW50IG51bWJlciwgY29u
c3QgQ2hhcmFjdGVyVHlwZSgmYWxwaGFiZXQpW3NpemVdKQogeyAgICAKLSAgICB0b1N5bWJvbGlj
KGJ1aWxkZXIsIG51bWJlciwgYWxwaGFiZXQsIHNpemUpOworICAgIHJldHVybiB0b1N5bWJvbGlj
KG51bWJlciwgYWxwaGFiZXQsIHNpemUpOwogfQogCiBzdGF0aWMgTkVWRVJfSU5MSU5FIGludCB0
b0hlYnJld1VuZGVyMTAwMChpbnQgbnVtYmVyLCBVQ2hhciBsZXR0ZXJzWzVdKQpAQCAtMTk0LDIx
ICsxOTcsMjAgQEAgc3RhdGljIE5FVkVSX0lOTElORSBpbnQgdG9IZWJyZXdVbmRlcjEwMDAoaW50
IG51bWJlciwgVUNoYXIgbGV0dGVyc1s1XSkKICAgICByZXR1cm4gbGVuZ3RoOwogfQogCi1zdGF0
aWMgTkVWRVJfSU5MSU5FIHZvaWQgdG9IZWJyZXcoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgaW50
IG51bWJlcikKK3N0YXRpYyBORVZFUl9JTkxJTkUgU3RyaW5nIHRvSGVicmV3KGludCBudW1iZXIp
CiB7CiAgICAgLy8gRklYTUU6IENTUzMgbWVudGlvbnMgd2F5cyB0byBtYWtlIHRoaXMgd29yayBm
b3IgbXVjaCBsYXJnZXIgbnVtYmVycy4KICAgICBBU1NFUlQobnVtYmVyID49IDAgJiYgbnVtYmVy
IDw9IDk5OTk5OSk7CiAKICAgICBpZiAobnVtYmVyID09IDApIHsKICAgICAgICAgc3RhdGljIGNv
bnN0IFVDaGFyIGhlYnJld1plcm9bM10gPSB7IDB4MDVEMCwgMHgwNUU0LCAweDA1RTEgfTsKLSAg
ICAgICAgYnVpbGRlci5hcHBlbmQoaGVicmV3WmVybywgMyk7Ci0gICAgICAgIHJldHVybjsKKyAg
ICAgICAgcmV0dXJuIFN0cmluZyB7IGhlYnJld1plcm8sIDMgfTsKICAgICB9CiAKLSAgICBjb25z
dCBpbnQgbGV0dGVyc1NpemUgPSAxMTsgLy8gYmlnIGVub3VnaCBmb3IgdHdvIDUtZGlnaXQgc2Vx
dWVuY2VzIHBsdXMgYSBxdW90ZSBtYXJrIGJldHdlZW4KKyAgICBjb25zdGV4cHIgdW5zaWduZWQg
bGV0dGVyc1NpemUgPSAxMTsgLy8gYmlnIGVub3VnaCBmb3IgdHdvIDUtZGlnaXQgc2VxdWVuY2Vz
IHBsdXMgYSBxdW90ZSBtYXJrIGJldHdlZW4KICAgICBVQ2hhciBsZXR0ZXJzW2xldHRlcnNTaXpl
XTsKIAotICAgIGludCBsZW5ndGg7CisgICAgdW5zaWduZWQgbGVuZ3RoOwogICAgIGlmIChudW1i
ZXIgPCAxMDAwKQogICAgICAgICBsZW5ndGggPSAwOwogICAgIGVsc2UgewpAQCAtMjE5LDE1ICsy
MjEsMTUgQEAgc3RhdGljIE5FVkVSX0lOTElORSB2b2lkIHRvSGVicmV3KFN0cmluZ0J1aWxkZXIm
IGJ1aWxkZXIsIGludCBudW1iZXIpCiAgICAgbGVuZ3RoICs9IHRvSGVicmV3VW5kZXIxMDAwKG51
bWJlciwgbGV0dGVycyArIGxlbmd0aCk7CiAKICAgICBBU1NFUlQobGVuZ3RoIDw9IGxldHRlcnNT
aXplKTsKLSAgICBidWlsZGVyLmFwcGVuZChsZXR0ZXJzLCBsZW5ndGgpOworICAgIHJldHVybiBT
dHJpbmcgeyBsZXR0ZXJzLCBsZW5ndGggfTsKIH0KIAotc3RhdGljIE5FVkVSX0lOTElORSBpbnQg
dG9Bcm1lbmlhblVuZGVyMTAwMDAoaW50IG51bWJlciwgYm9vbCB1cHBlciwgYm9vbCBhZGRDaXJj
dW1mbGV4LCBVQ2hhciBsZXR0ZXJzWzldKQorc3RhdGljIE5FVkVSX0lOTElORSB1bnNpZ25lZCB0
b0FybWVuaWFuVW5kZXIxMDAwMChpbnQgbnVtYmVyLCBMZXR0ZXJDYXNlIGxldHRlckNhc2UsIGJv
b2wgYWRkQ2lyY3VtZmxleCwgVUNoYXIgbGV0dGVyc1s5XSkKIHsKICAgICBBU1NFUlQobnVtYmVy
ID49IDAgJiYgbnVtYmVyIDwgMTAwMDApOwotICAgIGludCBsZW5ndGggPSAwOworICAgIHVuc2ln
bmVkIGxlbmd0aCA9IDA7CiAKLSAgICBpbnQgbG93ZXJPZmZzZXQgPSB1cHBlciA/IDAgOiAweDAw
MzA7CisgICAgaW50IGxvd2VyT2Zmc2V0ID0gbGV0dGVyQ2FzZSA9PSBMZXR0ZXJDYXNlOjpVcHBl
ciA/IDAgOiAweDAwMzA7CiAKICAgICBpZiAoaW50IHRob3VzYW5kcyA9IG51bWJlciAvIDEwMDAp
IHsKICAgICAgICAgaWYgKHRob3VzYW5kcyA9PSA3KSB7CkBAIC0yNjIsMjggKzI2NCwyOCBAQCBz
dGF0aWMgTkVWRVJfSU5MSU5FIGludCB0b0FybWVuaWFuVW5kZXIxMDAwMChpbnQgbnVtYmVyLCBi
b29sIHVwcGVyLCBib29sIGFkZENpcgogICAgIHJldHVybiBsZW5ndGg7CiB9CiAKLXN0YXRpYyBO
RVZFUl9JTkxJTkUgdm9pZCB0b0FybWVuaWFuKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGludCBu
dW1iZXIsIGJvb2wgdXBwZXIpCitzdGF0aWMgTkVWRVJfSU5MSU5FIFN0cmluZyB0b0FybWVuaWFu
KGludCBudW1iZXIsIExldHRlckNhc2UgbGV0dGVyQ2FzZSkKIHsKICAgICBBU1NFUlQobnVtYmVy
ID49IDEgJiYgbnVtYmVyIDw9IDk5OTk5OTk5KTsKIAotICAgIGNvbnN0IGludCBsZXR0ZXJzU2l6
ZSA9IDE4OyAvLyB0d2ljZSB3aGF0IHRvQXJtZW5pYW5VbmRlcjEwMDAwIG5lZWRzCisgICAgY29u
c3RleHByIHVuc2lnbmVkIGxldHRlcnNTaXplID0gMTg7IC8vIHR3aWNlIHdoYXQgdG9Bcm1lbmlh
blVuZGVyMTAwMDAgbmVlZHMKICAgICBVQ2hhciBsZXR0ZXJzW2xldHRlcnNTaXplXTsKIAotICAg
IGludCBsZW5ndGggPSB0b0FybWVuaWFuVW5kZXIxMDAwMChudW1iZXIgLyAxMDAwMCwgdXBwZXIs
IHRydWUsIGxldHRlcnMpOwotICAgIGxlbmd0aCArPSB0b0FybWVuaWFuVW5kZXIxMDAwMChudW1i
ZXIgJSAxMDAwMCwgdXBwZXIsIGZhbHNlLCBsZXR0ZXJzICsgbGVuZ3RoKTsKKyAgICB1bnNpZ25l
ZCBsZW5ndGggPSB0b0FybWVuaWFuVW5kZXIxMDAwMChudW1iZXIgLyAxMDAwMCwgbGV0dGVyQ2Fz
ZSwgdHJ1ZSwgbGV0dGVycyk7CisgICAgbGVuZ3RoICs9IHRvQXJtZW5pYW5VbmRlcjEwMDAwKG51
bWJlciAlIDEwMDAwLCBsZXR0ZXJDYXNlLCBmYWxzZSwgbGV0dGVycyArIGxlbmd0aCk7CiAKICAg
ICBBU1NFUlQobGVuZ3RoIDw9IGxldHRlcnNTaXplKTsKLSAgICBidWlsZGVyLmFwcGVuZChsZXR0
ZXJzLCBsZW5ndGgpOworICAgIHJldHVybiBTdHJpbmcgeyBsZXR0ZXJzLCBsZW5ndGggfTsKIH0K
IAotc3RhdGljIE5FVkVSX0lOTElORSB2b2lkIHRvR2VvcmdpYW4oU3RyaW5nQnVpbGRlciYgYnVp
bGRlciwgaW50IG51bWJlcikKK3N0YXRpYyBORVZFUl9JTkxJTkUgU3RyaW5nIHRvR2VvcmdpYW4o
aW50IG51bWJlcikKIHsKICAgICBBU1NFUlQobnVtYmVyID49IDEgJiYgbnVtYmVyIDw9IDE5OTk5
KTsKIAotICAgIGNvbnN0IGludCBsZXR0ZXJzU2l6ZSA9IDU7CisgICAgY29uc3RleHByIHVuc2ln
bmVkIGxldHRlcnNTaXplID0gNTsKICAgICBVQ2hhciBsZXR0ZXJzW2xldHRlcnNTaXplXTsKIAot
ICAgIGludCBsZW5ndGggPSAwOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IDA7CiAKICAgICBpZiAo
bnVtYmVyID4gOTk5OSkKICAgICAgICAgbGV0dGVyc1tsZW5ndGgrK10gPSAweDEwRjU7CkBAIC0z
MTcsMTIgKzMxOSwxMiBAQCBzdGF0aWMgTkVWRVJfSU5MSU5FIHZvaWQgdG9HZW9yZ2lhbihTdHJp
bmdCdWlsZGVyJiBidWlsZGVyLCBpbnQgbnVtYmVyKQogICAgIH0KIAogICAgIEFTU0VSVChsZW5n
dGggPD0gbGV0dGVyc1NpemUpOwotICAgIGJ1aWxkZXIuYXBwZW5kKGxldHRlcnMsIGxlbmd0aCk7
CisgICAgcmV0dXJuIFN0cmluZyB7IGxldHRlcnMsIGxlbmd0aCB9OwogfQogCiAvLyBUaGUgdGFi
bGUgdXNlcyB0aGUgb3JkZXIgZnJvbSB0aGUgQ1NTMyBzcGVjaWZpY2F0aW9uOgogLy8gZmlyc3Qg
MyBncm91cCBtYXJrZXJzLCB0aGVuIDMgZGlnaXQgbWFya2VycywgdGhlbiB0ZW4gZGlnaXRzLgot
c3RhdGljIE5FVkVSX0lOTElORSB2b2lkIHRvQ0pLSWRlb2dyYXBoaWMoU3RyaW5nQnVpbGRlciYg
YnVpbGRlciwgaW50IG51bWJlciwgY29uc3QgVUNoYXIgdGFibGVbMTZdKQorc3RhdGljIE5FVkVS
X0lOTElORSBTdHJpbmcgdG9DSktJZGVvZ3JhcGhpYyhpbnQgbnVtYmVyLCBjb25zdCBVQ2hhciB0
YWJsZVsxNl0pCiB7CiAgICAgQVNTRVJUKG51bWJlciA+PSAwKTsKIApAQCAtMzM0LDEzICszMzYs
MTEgQEAgc3RhdGljIE5FVkVSX0lOTElORSB2b2lkIHRvQ0pLSWRlb2dyYXBoaWMoU3RyaW5nQnVp
bGRlciYgYnVpbGRlciwgaW50IG51bWJlciwgY28KICAgICAgICAgZGlnaXQ1LCBkaWdpdDYsIGRp
Z2l0NywgZGlnaXQ4LCBkaWdpdDkKICAgICB9OwogCi0gICAgaWYgKG51bWJlciA9PSAwKSB7Ci0g
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKHRhYmxlW2RpZ2l0MCAtIDFdKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KKyAgICBpZiAoIW51bWJlcikKKyAgICAgICAgcmV0dXJuIFN0cmluZyB7ICZ0YWJs
ZVtkaWdpdDAgLSAxXSAsIDEgfTsKIAotICAgIGNvbnN0IGludCBncm91cExlbmd0aCA9IDg7IC8v
IDQgZGlnaXRzLCAzIGRpZ2l0IG1hcmtlcnMsIGFuZCBhIGdyb3VwIG1hcmtlcgotICAgIGNvbnN0
IGludCBidWZmZXJMZW5ndGggPSA0ICogZ3JvdXBMZW5ndGg7CisgICAgY29uc3RleHByIHVuc2ln
bmVkIGdyb3VwTGVuZ3RoID0gODsgLy8gNCBkaWdpdHMsIDMgZGlnaXQgbWFya2VycywgYW5kIGEg
Z3JvdXAgbWFya2VyCisgICAgY29uc3RleHByIHVuc2lnbmVkIGJ1ZmZlckxlbmd0aCA9IDQgKiBn
cm91cExlbmd0aDsKICAgICBBYnN0cmFjdENKS0NoYXIgYnVmZmVyW2J1ZmZlckxlbmd0aF0gPSB7
IG5vQ2hhciB9OwogCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyArK2kpIHsKQEAgLTM4MSwx
NiArMzgxLDE1IEBAIHN0YXRpYyBORVZFUl9JTkxJTkUgdm9pZCB0b0NKS0lkZW9ncmFwaGljKFN0
cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGludCBudW1iZXIsIGNvCiAgICAgICAgICAgICBncm91cFs0
XSA9IG5vQ2hhcjsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChudW1iZXIgPT0gMCkKKyAgICAg
ICAgaWYgKCFudW1iZXIpCiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICAvLyBDb252
ZXJ0IGludG8gY2hhcmFjdGVycywgb21pdHRpbmcgY29uc2VjdXRpdmUgcnVucyBvZiBkaWdpdDAg
YW5kCi0gICAgLy8gYW55IHRyYWlsaW5nIGRpZ2l0MC4KLSAgICBpbnQgbGVuZ3RoID0gMDsKKyAg
ICAvLyBDb252ZXJ0IGludG8gY2hhcmFjdGVycywgb21pdHRpbmcgY29uc2VjdXRpdmUgcnVucyBv
ZiBkaWdpdDAgYW5kIHRyYWlsaW5nIGRpZ2l0MC4KKyAgICB1bnNpZ25lZCBsZW5ndGggPSAwOwog
ICAgIFVDaGFyIGNoYXJhY3RlcnNbYnVmZmVyTGVuZ3RoXTsKICAgICBBYnN0cmFjdENKS0NoYXIg
bGFzdCA9IG5vQ2hhcjsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGJ1ZmZlckxlbmd0aDsgKytp
KSB7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJ1ZmZlckxlbmd0aDsgKytpKSB7CiAg
ICAgICAgIEFic3RyYWN0Q0pLQ2hhciBhID0gYnVmZmVyW2ldOwogICAgICAgICBpZiAoYSAhPSBu
b0NoYXIpIHsKICAgICAgICAgICAgIGlmIChhICE9IGRpZ2l0MCB8fCBsYXN0ICE9IGRpZ2l0MCkK
QEAgLTQwMSw3ICs0MDAsNyBAQCBzdGF0aWMgTkVWRVJfSU5MSU5FIHZvaWQgdG9DSktJZGVvZ3Jh
cGhpYyhTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBpbnQgbnVtYmVyLCBjbwogICAgIGlmIChsYXN0
ID09IGRpZ2l0MCkKICAgICAgICAgLS1sZW5ndGg7CiAKLSAgICBidWlsZGVyLmFwcGVuZChjaGFy
YWN0ZXJzLCBsZW5ndGgpOworICAgIHJldHVybiBTdHJpbmcgeyBjaGFyYWN0ZXJzLCBsZW5ndGgg
fTsKIH0KIAogc3RhdGljIExpc3RTdHlsZVR5cGUgZWZmZWN0aXZlTGlzdE1hcmtlclR5cGUoTGlz
dFN0eWxlVHlwZSB0eXBlLCBpbnQgdmFsdWUpCkBAIC01MDYsNyArNTA1LDcgQEAgc3RhdGljIExp
c3RTdHlsZVR5cGUgZWZmZWN0aXZlTGlzdE1hcmtlclR5cGUoTGlzdFN0eWxlVHlwZSB0eXBlLCBp
bnQgdmFsdWUpCiBzdGF0aWMgVUNoYXIgbGlzdE1hcmtlclN1ZmZpeChMaXN0U3R5bGVUeXBlIHR5
cGUsIGludCB2YWx1ZSkKIHsKICAgICAvLyBJZiB0aGUgbGlzdC1zdHlsZS10eXBlIGNhbm5vdCBy
ZXByZXNlbnQgfHZhbHVlfCBiZWNhdXNlIGl0J3Mgb3V0c2lkZSBpdHMKLSAgICAvLyBvcmRpbmFs
IHJhbmdlIHRoZW4gd2UgZmFsbCBiYWNrIHRvIHNvbWUgbGlzdCBzdHlsZSB0aGF0IGNhbiByZXBy
ZXNlbnQgfHZhbHVlfC4KKyAgICAvLyBvcmRpbmFsIHJhbmdlIHRoZW4gd2UgZmFsbCBiYWNrIHRv
IGFub3RoZXIgbGlzdCBzdHlsZSB0aGF0IGNhbiByZXByZXNlbnQgfHZhbHVlfC4KICAgICBMaXN0
U3R5bGVUeXBlIGVmZmVjdGl2ZVR5cGUgPSBlZmZlY3RpdmVMaXN0TWFya2VyVHlwZSh0eXBlLCB2
YWx1ZSk7CiAKICAgICAvLyBOb3RlLCB0aGUgZm9sbG93aW5nIHN3aXRjaCBzdGF0ZW1lbnQgaGFz
IGJlZW4gZXhwbGljaXRseQpAQCAtNjA0LDc2ICs2MDMsNjIgQEAgc3RhdGljIFVDaGFyIGxpc3RN
YXJrZXJTdWZmaXgoTGlzdFN0eWxlVHlwZSB0eXBlLCBpbnQgdmFsdWUpCiAKIFN0cmluZyBsaXN0
TWFya2VyVGV4dChMaXN0U3R5bGVUeXBlIHR5cGUsIGludCB2YWx1ZSkKIHsKLSAgICBTdHJpbmdC
dWlsZGVyIGJ1aWxkZXI7Ci0KLSAgICAvLyBJZiB0aGUgbGlzdC1zdHlsZS10eXBlLCBzYXkgaGVi
cmV3LCBjYW5ub3QgcmVwcmVzZW50IHx2YWx1ZXwgYmVjYXVzZSBpdCdzIG91dHNpZGUKLSAgICAv
LyBpdHMgb3JkaW5hbCByYW5nZSB0aGVuIHdlIGZhbGxiYWNrIHRvIHNvbWUgbGlzdCBzdHlsZSB0
aGF0IGNhbiByZXByZXNlbnQgfHZhbHVlfC4KKyAgICAvLyBJZiB0aGUgbGlzdC1zdHlsZS10eXBl
IGNhbm5vdCByZXByZXNlbnQgfHZhbHVlfCBiZWNhdXNlIGl0J3Mgb3V0c2lkZSBpdHMKKyAgICAv
LyBvcmRpbmFsIHJhbmdlIHRoZW4gd2UgZmFsbCBiYWNrIHRvIGFub3RoZXIgbGlzdCBzdHlsZSB0
aGF0IGNhbiByZXByZXNlbnQgfHZhbHVlfC4KICAgICBzd2l0Y2ggKGVmZmVjdGl2ZUxpc3RNYXJr
ZXJUeXBlKHR5cGUsIHZhbHVlKSkgewogICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Tm9uZToKICAg
ICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKICAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkFz
dGVyaXNrczogewogICAgICAgICBzdGF0aWMgY29uc3QgTENoYXIgYXN0ZXJpc2tzU3ltYm9sc1sx
XSA9IHsgMHgyQSB9OwotICAgICAgICB0b1N5bWJvbGljKGJ1aWxkZXIsIHZhbHVlLCBhc3Rlcmlz
a3NTeW1ib2xzKTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiB0b1N5bWJvbGljKHZh
bHVlLCBhc3Rlcmlza3NTeW1ib2xzKTsKICAgICB9CiAgICAgLy8gV2UgdXNlIHRoZSBzYW1lIGNo
YXJhY3RlcnMgZm9yIHRleHQgc2VjdXJpdHkuCiAgICAgLy8gU2VlIFJlbmRlclRleHQ6OnNldElu
dGVybmFsU3RyaW5nLgogICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Q2lyY2xlOgotICAgICAgICBi
dWlsZGVyLmFwcGVuZCh3aGl0ZUJ1bGxldCk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1
cm4gU3RyaW5nIHsgJndoaXRlQnVsbGV0LCAxIH07CiAgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpE
aXNjOgotICAgICAgICBidWlsZGVyLmFwcGVuZChidWxsZXQpOwotICAgICAgICBicmVhazsKKyAg
ICAgICAgcmV0dXJuIFN0cmluZyB7ICZidWxsZXQsIDEgfTsKICAgICBjYXNlIExpc3RTdHlsZVR5
cGU6OkZvb3Rub3RlczogewogICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgZm9vdG5vdGVzU3lt
Ym9sc1s0XSA9IHsgMHgwMDJBLCAweDIwNTEsIDB4MjAyMCwgMHgyMDIxIH07Ci0gICAgICAgIHRv
U3ltYm9saWMoYnVpbGRlciwgdmFsdWUsIGZvb3Rub3Rlc1N5bWJvbHMpOwotICAgICAgICBicmVh
azsKKyAgICAgICAgcmV0dXJuIHRvU3ltYm9saWModmFsdWUsIGZvb3Rub3Rlc1N5bWJvbHMpOwog
ICAgIH0KICAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlNxdWFyZToKLSAgICAgICAgLy8gVGhlIENT
UyAyLjEgdGVzdCBzdWl0ZSB1c2VzIFUrMjVFRSBCTEFDSyBNRURJVU0gU01BTEwgU1FVQVJFCi0g
ICAgICAgIC8vIGluc3RlYWQsIGJ1dCBJIHRoaW5rIHRoaXMgbG9va3MgYmV0dGVyLgotICAgICAg
ICBidWlsZGVyLmFwcGVuZChibGFja1NxdWFyZSk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICAv
LyBUaGUgQ1NTIDIuMSB0ZXN0IHN1aXRlIHVzZXMgVSsyNUVFIEJMQUNLIE1FRElVTSBTTUFMTCBT
UVVBUkUgaW5zdGVhZCwKKyAgICAgICAgLy8gYnV0IHdlIHVzZWQgdGhpcyBiZWNhdXNlIHdlIHRo
b3VnaHQgaXQgbG9va2VkIGJldHRlci4KKyAgICAgICAgcmV0dXJuIFN0cmluZyB7ICZibGFja1Nx
dWFyZSwgMSB9OwogCiAgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpEZWNpbWFsOgotICAgICAgICBi
dWlsZGVyLmFwcGVuZE51bWJlcih2YWx1ZSk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1
cm4gU3RyaW5nOjpudW1iZXIodmFsdWUpOwogCiAgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpEZWNp
bWFsTGVhZGluZ1plcm86Ci0gICAgICAgIGlmICh2YWx1ZSA8IC05IHx8IHZhbHVlID4gOSkgewot
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIodmFsdWUpOwotICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGlmICh2YWx1ZSA+PSAwICYmIHZhbHVlIDw9IDkpIHsKKyAgICAgICAgICAg
IExDaGFyIGNoYXJhY3RlcnNbMl0gPSB7ICcwJywgc3RhdGljX2Nhc3Q8TENoYXI+KCcwJyArIHZh
bHVlKSB9OyAvLyAwMCB0byAwOQorICAgICAgICAgICAgcmV0dXJuIFN0cmluZyB7IGNoYXJhY3Rl
cnMsIDIgfTsKICAgICAgICAgfQotICAgICAgICBpZiAodmFsdWUgPCAwKSB7Ci0gICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIi0wIik7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZE51bWJlcigtdmFsdWUpOyAvLyAtMDEgdG8gLTA5Ci0gICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgaWYgKHZhbHVlID49IC05ICYmIHZhbHVlIDw9IC0xKSB7CisgICAgICAgICAgICBMQ2hhciBj
aGFyYWN0ZXJzWzNdID0geyAnLScsICcwJywgc3RhdGljX2Nhc3Q8TENoYXI+KCcwJyAtIHZhbHVl
KSB9OyAvLyAtMDEgdG8gLTA5CisgICAgICAgICAgICByZXR1cm4gU3RyaW5nIHsgY2hhcmFjdGVy
cywgMyB9OwogICAgICAgICB9Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcwJyk7Ci0gICAgICAg
IGJ1aWxkZXIuYXBwZW5kTnVtYmVyKHZhbHVlKTsgLy8gMDAgdG8gMDkKLSAgICAgICAgYnJlYWs7
CisgICAgICAgIHJldHVybiBTdHJpbmc6Om51bWJlcih2YWx1ZSk7CiAKICAgICBjYXNlIExpc3RT
dHlsZVR5cGU6OkFyYWJpY0luZGljOiB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBhcmFi
aWNJbmRpY051bWVyYWxzWzEwXSA9IHsKICAgICAgICAgICAgIDB4MDY2MCwgMHgwNjYxLCAweDA2
NjIsIDB4MDY2MywgMHgwNjY0LCAweDA2NjUsIDB4MDY2NiwgMHgwNjY3LCAweDA2NjgsIDB4MDY2
OQogICAgICAgICB9OwotICAgICAgICB0b051bWVyaWMoYnVpbGRlciwgdmFsdWUsIGFyYWJpY0lu
ZGljTnVtZXJhbHMpOwotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIHRvTnVtZXJpYyh2
YWx1ZSwgYXJhYmljSW5kaWNOdW1lcmFscyk7CiAgICAgfQogCiAgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpCaW5hcnk6IHsKICAgICAgICAgc3RhdGljIGNvbnN0IExDaGFyIGJpbmFyeU51bWVyYWxz
WzJdID0geyAnMCcsICcxJyB9OwotICAgICAgICB0b051bWVyaWMoYnVpbGRlciwgdmFsdWUsIGJp
bmFyeU51bWVyYWxzKTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiB0b051bWVyaWMo
dmFsdWUsIGJpbmFyeU51bWVyYWxzKTsKICAgICB9CiAKICAgICBjYXNlIExpc3RTdHlsZVR5cGU6
OkJlbmdhbGk6IHsKICAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGJlbmdhbGlOdW1lcmFsc1sx
MF0gPSB7CiAgICAgICAgICAgICAweDA5RTYsIDB4MDlFNywgMHgwOUU4LCAweDA5RTksIDB4MDlF
QSwgMHgwOUVCLCAweDA5RUMsIDB4MDlFRCwgMHgwOUVFLCAweDA5RUYKICAgICAgICAgfTsKLSAg
ICAgICAgdG9OdW1lcmljKGJ1aWxkZXIsIHZhbHVlLCBiZW5nYWxpTnVtZXJhbHMpOwotICAgICAg
ICBicmVhazsKKyAgICAgICAgcmV0dXJuIHRvTnVtZXJpYyh2YWx1ZSwgYmVuZ2FsaU51bWVyYWxz
KTsKICAgICB9CiAKICAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkNhbWJvZGlhbjoKQEAgLTY4MSwx
MjEgKzY2NiwxMDQgQEAgU3RyaW5nIGxpc3RNYXJrZXJUZXh0KExpc3RTdHlsZVR5cGUgdHlwZSwg
aW50IHZhbHVlKQogICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIga2htZXJOdW1lcmFsc1sxMF0g
PSB7CiAgICAgICAgICAgICAweDE3RTAsIDB4MTdFMSwgMHgxN0UyLCAweDE3RTMsIDB4MTdFNCwg
MHgxN0U1LCAweDE3RTYsIDB4MTdFNywgMHgxN0U4LCAweDE3RTkKICAgICAgICAgfTsKLSAgICAg
ICAgdG9OdW1lcmljKGJ1aWxkZXIsIHZhbHVlLCBraG1lck51bWVyYWxzKTsKLSAgICAgICAgYnJl
YWs7CisgICAgICAgIHJldHVybiB0b051bWVyaWModmFsdWUsIGtobWVyTnVtZXJhbHMpOwogICAg
IH0KICAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkRldmFuYWdhcmk6IHsKICAgICAgICAgc3RhdGlj
IGNvbnN0IFVDaGFyIGRldmFuYWdhcmlOdW1lcmFsc1sxMF0gPSB7CiAgICAgICAgICAgICAweDA5
NjYsIDB4MDk2NywgMHgwOTY4LCAweDA5NjksIDB4MDk2QSwgMHgwOTZCLCAweDA5NkMsIDB4MDk2
RCwgMHgwOTZFLCAweDA5NkYKICAgICAgICAgfTsKLSAgICAgICAgdG9OdW1lcmljKGJ1aWxkZXIs
IHZhbHVlLCBkZXZhbmFnYXJpTnVtZXJhbHMpOwotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0
dXJuIHRvTnVtZXJpYyh2YWx1ZSwgZGV2YW5hZ2FyaU51bWVyYWxzKTsKICAgICB9CiAgICAgY2Fz
ZSBMaXN0U3R5bGVUeXBlOjpHdWphcmF0aTogewogICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIg
Z3VqYXJhdGlOdW1lcmFsc1sxMF0gPSB7CiAgICAgICAgICAgICAweDBBRTYsIDB4MEFFNywgMHgw
QUU4LCAweDBBRTksIDB4MEFFQSwgMHgwQUVCLCAweDBBRUMsIDB4MEFFRCwgMHgwQUVFLCAweDBB
RUYKICAgICAgICAgfTsKLSAgICAgICAgdG9OdW1lcmljKGJ1aWxkZXIsIHZhbHVlLCBndWphcmF0
aU51bWVyYWxzKTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiB0b051bWVyaWModmFs
dWUsIGd1amFyYXRpTnVtZXJhbHMpOwogICAgIH0KICAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okd1
cm11a2hpOiB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBndXJtdWtoaU51bWVyYWxzWzEw
XSA9IHsKICAgICAgICAgICAgIDB4MEE2NiwgMHgwQTY3LCAweDBBNjgsIDB4MEE2OSwgMHgwQTZB
LCAweDBBNkIsIDB4MEE2QywgMHgwQTZELCAweDBBNkUsIDB4MEE2RgogICAgICAgICB9OwotICAg
ICAgICB0b051bWVyaWMoYnVpbGRlciwgdmFsdWUsIGd1cm11a2hpTnVtZXJhbHMpOwotICAgICAg
ICBicmVhazsKKyAgICAgICAgcmV0dXJuIHRvTnVtZXJpYyh2YWx1ZSwgZ3VybXVraGlOdW1lcmFs
cyk7CiAgICAgfQogICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6S2FubmFkYTogewogICAgICAgICBz
dGF0aWMgY29uc3QgVUNoYXIga2FubmFkYU51bWVyYWxzWzEwXSA9IHsKICAgICAgICAgICAgIDB4
MENFNiwgMHgwQ0U3LCAweDBDRTgsIDB4MENFOSwgMHgwQ0VBLCAweDBDRUIsIDB4MENFQywgMHgw
Q0VELCAweDBDRUUsIDB4MENFRgogICAgICAgICB9OwotICAgICAgICB0b051bWVyaWMoYnVpbGRl
ciwgdmFsdWUsIGthbm5hZGFOdW1lcmFscyk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1
cm4gdG9OdW1lcmljKHZhbHVlLCBrYW5uYWRhTnVtZXJhbHMpOwogICAgIH0KICAgICBjYXNlIExp
c3RTdHlsZVR5cGU6Okxvd2VySGV4YWRlY2ltYWw6IHsKICAgICAgICAgc3RhdGljIGNvbnN0IExD
aGFyIGxvd2VySGV4YWRlY2ltYWxOdW1lcmFsc1sxNl0gPSB7CiAgICAgICAgICAgICAnMCcsICcx
JywgJzInLCAnMycsICc0JywgJzUnLCAnNicsICc3JywgJzgnLCAnOScsICdhJywgJ2InLCAnYycs
ICdkJywgJ2UnLCAnZicKICAgICAgICAgfTsKLSAgICAgICAgdG9OdW1lcmljKGJ1aWxkZXIsIHZh
bHVlLCBsb3dlckhleGFkZWNpbWFsTnVtZXJhbHMpOwotICAgICAgICBicmVhazsKKyAgICAgICAg
cmV0dXJuIHRvTnVtZXJpYyh2YWx1ZSwgbG93ZXJIZXhhZGVjaW1hbE51bWVyYWxzKTsKICAgICB9
CiAgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMYW86IHsKICAgICAgICAgc3RhdGljIGNvbnN0IFVD
aGFyIGxhb051bWVyYWxzWzEwXSA9IHsKICAgICAgICAgICAgIDB4MEVEMCwgMHgwRUQxLCAweDBF
RDIsIDB4MEVEMywgMHgwRUQ0LCAweDBFRDUsIDB4MEVENiwgMHgwRUQ3LCAweDBFRDgsIDB4MEVE
OQogICAgICAgICB9OwotICAgICAgICB0b051bWVyaWMoYnVpbGRlciwgdmFsdWUsIGxhb051bWVy
YWxzKTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiB0b051bWVyaWModmFsdWUsIGxh
b051bWVyYWxzKTsKICAgICB9CiAgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpNYWxheWFsYW06IHsK
ICAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIG1hbGF5YWxhbU51bWVyYWxzWzEwXSA9IHsKICAg
ICAgICAgICAgIDB4MEQ2NiwgMHgwRDY3LCAweDBENjgsIDB4MEQ2OSwgMHgwRDZBLCAweDBENkIs
IDB4MEQ2QywgMHgwRDZELCAweDBENkUsIDB4MEQ2RgogICAgICAgICB9OwotICAgICAgICB0b051
bWVyaWMoYnVpbGRlciwgdmFsdWUsIG1hbGF5YWxhbU51bWVyYWxzKTsKLSAgICAgICAgYnJlYWs7
CisgICAgICAgIHJldHVybiB0b051bWVyaWModmFsdWUsIG1hbGF5YWxhbU51bWVyYWxzKTsKICAg
ICB9CiAgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpNb25nb2xpYW46IHsKICAgICAgICAgc3RhdGlj
IGNvbnN0IFVDaGFyIG1vbmdvbGlhbk51bWVyYWxzWzEwXSA9IHsKICAgICAgICAgICAgIDB4MTgx
MCwgMHgxODExLCAweDE4MTIsIDB4MTgxMywgMHgxODE0LCAweDE4MTUsIDB4MTgxNiwgMHgxODE3
LCAweDE4MTgsIDB4MTgxOQogICAgICAgICB9OwotICAgICAgICB0b051bWVyaWMoYnVpbGRlciwg
dmFsdWUsIG1vbmdvbGlhbk51bWVyYWxzKTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVy
biB0b051bWVyaWModmFsdWUsIG1vbmdvbGlhbk51bWVyYWxzKTsKICAgICB9CiAgICAgY2FzZSBM
aXN0U3R5bGVUeXBlOjpNeWFubWFyOiB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBteWFu
bWFyTnVtZXJhbHNbMTBdID0gewogICAgICAgICAgICAgMHgxMDQwLCAweDEwNDEsIDB4MTA0Miwg
MHgxMDQzLCAweDEwNDQsIDB4MTA0NSwgMHgxMDQ2LCAweDEwNDcsIDB4MTA0OCwgMHgxMDQ5CiAg
ICAgICAgIH07Ci0gICAgICAgIHRvTnVtZXJpYyhidWlsZGVyLCB2YWx1ZSwgbXlhbm1hck51bWVy
YWxzKTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiB0b051bWVyaWModmFsdWUsIG15
YW5tYXJOdW1lcmFscyk7CiAgICAgfQogICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6T2N0YWw6IHsK
ICAgICAgICAgc3RhdGljIGNvbnN0IExDaGFyIG9jdGFsTnVtZXJhbHNbOF0gPSB7CiAgICAgICAg
ICAgICAnMCcsICcxJywgJzInLCAnMycsICc0JywgJzUnLCAnNicsICc3JwogICAgICAgICB9Owot
ICAgICAgICB0b051bWVyaWMoYnVpbGRlciwgdmFsdWUsIG9jdGFsTnVtZXJhbHMpOwotICAgICAg
ICBicmVhazsKKyAgICAgICAgcmV0dXJuIHRvTnVtZXJpYyh2YWx1ZSwgb2N0YWxOdW1lcmFscyk7
CiAgICAgfQogICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6T3JpeWE6IHsKICAgICAgICAgc3RhdGlj
IGNvbnN0IFVDaGFyIG9yaXlhTnVtZXJhbHNbMTBdID0gewogICAgICAgICAgICAgMHgwQjY2LCAw
eDBCNjcsIDB4MEI2OCwgMHgwQjY5LCAweDBCNkEsIDB4MEI2QiwgMHgwQjZDLCAweDBCNkQsIDB4
MEI2RSwgMHgwQjZGCiAgICAgICAgIH07Ci0gICAgICAgIHRvTnVtZXJpYyhidWlsZGVyLCB2YWx1
ZSwgb3JpeWFOdW1lcmFscyk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4gdG9OdW1l
cmljKHZhbHVlLCBvcml5YU51bWVyYWxzKTsKICAgICB9CiAgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpQZXJzaWFuOgogICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXJkdTogewogICAgICAgICBzdGF0
aWMgY29uc3QgVUNoYXIgdXJkdU51bWVyYWxzWzEwXSA9IHsKICAgICAgICAgICAgIDB4MDZGMCwg
MHgwNkYxLCAweDA2RjIsIDB4MDZGMywgMHgwNkY0LCAweDA2RjUsIDB4MDZGNiwgMHgwNkY3LCAw
eDA2RjgsIDB4MDZGOQogICAgICAgICB9OwotICAgICAgICB0b051bWVyaWMoYnVpbGRlciwgdmFs
dWUsIHVyZHVOdW1lcmFscyk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4gdG9OdW1l
cmljKHZhbHVlLCB1cmR1TnVtZXJhbHMpOwogICAgIH0KICAgICBjYXNlIExpc3RTdHlsZVR5cGU6
OlRlbHVndTogewogICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgdGVsdWd1TnVtZXJhbHNbMTBd
ID0gewogICAgICAgICAgICAgMHgwQzY2LCAweDBDNjcsIDB4MEM2OCwgMHgwQzY5LCAweDBDNkEs
IDB4MEM2QiwgMHgwQzZDLCAweDBDNkQsIDB4MEM2RSwgMHgwQzZGCiAgICAgICAgIH07Ci0gICAg
ICAgIHRvTnVtZXJpYyhidWlsZGVyLCB2YWx1ZSwgdGVsdWd1TnVtZXJhbHMpOwotICAgICAgICBi
cmVhazsKKyAgICAgICAgcmV0dXJuIHRvTnVtZXJpYyh2YWx1ZSwgdGVsdWd1TnVtZXJhbHMpOwog
ICAgIH0KICAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRpYmV0YW46IHsKICAgICAgICAgc3RhdGlj
IGNvbnN0IFVDaGFyIHRpYmV0YW5OdW1lcmFsc1sxMF0gPSB7CiAgICAgICAgICAgICAweDBGMjAs
IDB4MEYyMSwgMHgwRjIyLCAweDBGMjMsIDB4MEYyNCwgMHgwRjI1LCAweDBGMjYsIDB4MEYyNywg
MHgwRjI4LCAweDBGMjkKICAgICAgICAgfTsKLSAgICAgICAgdG9OdW1lcmljKGJ1aWxkZXIsIHZh
bHVlLCB0aWJldGFuTnVtZXJhbHMpOwotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIHRv
TnVtZXJpYyh2YWx1ZSwgdGliZXRhbk51bWVyYWxzKTsKICAgICB9CiAgICAgY2FzZSBMaXN0U3R5
bGVUeXBlOjpUaGFpOiB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciB0aGFpTnVtZXJhbHNb
MTBdID0gewogICAgICAgICAgICAgMHgwRTUwLCAweDBFNTEsIDB4MEU1MiwgMHgwRTUzLCAweDBF
NTQsIDB4MEU1NSwgMHgwRTU2LCAweDBFNTcsIDB4MEU1OCwgMHgwRTU5CiAgICAgICAgIH07Ci0g
ICAgICAgIHRvTnVtZXJpYyhidWlsZGVyLCB2YWx1ZSwgdGhhaU51bWVyYWxzKTsKLSAgICAgICAg
YnJlYWs7CisgICAgICAgIHJldHVybiB0b051bWVyaWModmFsdWUsIHRoYWlOdW1lcmFscyk7CiAg
ICAgfQogICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJIZXhhZGVjaW1hbDogewogICAgICAg
ICBzdGF0aWMgY29uc3QgTENoYXIgdXBwZXJIZXhhZGVjaW1hbE51bWVyYWxzWzE2XSA9IHsKICAg
ICAgICAgICAgICcwJywgJzEnLCAnMicsICczJywgJzQnLCAnNScsICc2JywgJzcnLCAnOCcsICc5
JywgJ0EnLCAnQicsICdDJywgJ0QnLCAnRScsICdGJwogICAgICAgICB9OwotICAgICAgICB0b051
bWVyaWMoYnVpbGRlciwgdmFsdWUsIHVwcGVySGV4YWRlY2ltYWxOdW1lcmFscyk7Ci0gICAgICAg
IGJyZWFrOworICAgICAgICByZXR1cm4gdG9OdW1lcmljKHZhbHVlLCB1cHBlckhleGFkZWNpbWFs
TnVtZXJhbHMpOwogICAgIH0KIAogICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93ZXJBbHBoYToK
QEAgLTgwNCw4ICs3NzIsNyBAQCBTdHJpbmcgbGlzdE1hcmtlclRleHQoTGlzdFN0eWxlVHlwZSB0
eXBlLCBpbnQgdmFsdWUpCiAgICAgICAgICAgICAnYScsICdiJywgJ2MnLCAnZCcsICdlJywgJ2Yn
LCAnZycsICdoJywgJ2knLCAnaicsICdrJywgJ2wnLCAnbScsCiAgICAgICAgICAgICAnbicsICdv
JywgJ3AnLCAncScsICdyJywgJ3MnLCAndCcsICd1JywgJ3YnLCAndycsICd4JywgJ3knLCAneicK
ICAgICAgICAgfTsKLSAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVlLCBsb3dlckxh
dGluQWxwaGFiZXQpOwotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIHRvQWxwaGFiZXRp
Yyh2YWx1ZSwgbG93ZXJMYXRpbkFscGhhYmV0KTsKICAgICB9CiAgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpVcHBlckFscGhhOgogICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJMYXRpbjogewpA
QCAtODEzLDggKzc4MCw3IEBAIFN0cmluZyBsaXN0TWFya2VyVGV4dChMaXN0U3R5bGVUeXBlIHR5
cGUsIGludCB2YWx1ZSkKICAgICAgICAgICAgICdBJywgJ0InLCAnQycsICdEJywgJ0UnLCAnRics
ICdHJywgJ0gnLCAnSScsICdKJywgJ0snLCAnTCcsICdNJywKICAgICAgICAgICAgICdOJywgJ08n
LCAnUCcsICdRJywgJ1InLCAnUycsICdUJywgJ1UnLCAnVicsICdXJywgJ1gnLCAnWScsICdaJwog
ICAgICAgICB9OwotICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwgdmFsdWUsIHVwcGVyTGF0
aW5BbHBoYWJldCk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4gdG9BbHBoYWJldGlj
KHZhbHVlLCB1cHBlckxhdGluQWxwaGFiZXQpOwogICAgIH0KICAgICBjYXNlIExpc3RTdHlsZVR5
cGU6Okxvd2VyR3JlZWs6IHsKICAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGxvd2VyR3JlZWtB
bHBoYWJldFsyNF0gPSB7CkBAIC04MjIsOCArNzg4LDcgQEAgU3RyaW5nIGxpc3RNYXJrZXJUZXh0
KExpc3RTdHlsZVR5cGUgdHlwZSwgaW50IHZhbHVlKQogICAgICAgICAgICAgMHgwM0I5LCAweDAz
QkEsIDB4MDNCQiwgMHgwM0JDLCAweDAzQkQsIDB4MDNCRSwgMHgwM0JGLCAweDAzQzAsCiAgICAg
ICAgICAgICAweDAzQzEsIDB4MDNDMywgMHgwM0M0LCAweDAzQzUsIDB4MDNDNiwgMHgwM0M3LCAw
eDAzQzgsIDB4MDNDOQogICAgICAgICB9OwotICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwg
dmFsdWUsIGxvd2VyR3JlZWtBbHBoYWJldCk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1
cm4gdG9BbHBoYWJldGljKHZhbHVlLCBsb3dlckdyZWVrQWxwaGFiZXQpOwogICAgIH0KIAogICAg
IGNhc2UgTGlzdFN0eWxlVHlwZTo6SGlyYWdhbmE6IHsKQEAgLTgzNyw4ICs4MDIsNyBAQCBTdHJp
bmcgbGlzdE1hcmtlclRleHQoTGlzdFN0eWxlVHlwZSB0eXBlLCBpbnQgdmFsdWUpCiAgICAgICAg
ICAgICAweDMwODAsIDB4MzA4MSwgMHgzMDgyLCAweDMwODQsIDB4MzA4NiwgMHgzMDg4LCAweDMw
ODksIDB4MzA4QSwKICAgICAgICAgICAgIDB4MzA4QiwgMHgzMDhDLCAweDMwOEQsIDB4MzA4Riwg
MHgzMDkwLCAweDMwOTEsIDB4MzA5MiwgMHgzMDkzCiAgICAgICAgIH07Ci0gICAgICAgIHRvQWxw
aGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgaGlyYWdhbmFBbHBoYWJldCk7Ci0gICAgICAgIGJyZWFr
OworICAgICAgICByZXR1cm4gdG9BbHBoYWJldGljKHZhbHVlLCBoaXJhZ2FuYUFscGhhYmV0KTsK
ICAgICB9CiAgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpIaXJhZ2FuYUlyb2hhOiB7CiAgICAgICAg
IC8vIEZJWE1FOiBUaGlzIHRhYmxlIGNvbWVzIGZyb20gdGhlIENTUzMgZHJhZnQsIGFuZCBpcyBw
cm9iYWJseQpAQCAtODUxLDggKzgxNSw3IEBAIFN0cmluZyBsaXN0TWFya2VyVGV4dChMaXN0U3R5
bGVUeXBlIHR5cGUsIGludCB2YWx1ZSkKICAgICAgICAgICAgIDB4MzA1MywgMHgzMDQ4LCAweDMw
NjYsIDB4MzA0MiwgMHgzMDU1LCAweDMwNEQsIDB4MzA4NiwgMHgzMDgxLAogICAgICAgICAgICAg
MHgzMDdGLCAweDMwNTcsIDB4MzA5MSwgMHgzMDcyLCAweDMwODIsIDB4MzA1QiwgMHgzMDU5CiAg
ICAgICAgIH07Ci0gICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgaGlyYWdhbmFJ
cm9oYUFscGhhYmV0KTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiB0b0FscGhhYmV0
aWModmFsdWUsIGhpcmFnYW5hSXJvaGFBbHBoYWJldCk7CiAgICAgfQogICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6S2F0YWthbmE6IHsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgdGFibGUgY29tZXMg
ZnJvbSB0aGUgQ1NTMyBkcmFmdCwgYW5kIGlzIHByb2JhYmx5CkBAIC04NjUsOCArODI4LDcgQEAg
U3RyaW5nIGxpc3RNYXJrZXJUZXh0KExpc3RTdHlsZVR5cGUgdHlwZSwgaW50IHZhbHVlKQogICAg
ICAgICAgICAgMHgzMEUwLCAweDMwRTEsIDB4MzBFMiwgMHgzMEU0LCAweDMwRTYsIDB4MzBFOCwg
MHgzMEU5LCAweDMwRUEsCiAgICAgICAgICAgICAweDMwRUIsIDB4MzBFQywgMHgzMEVELCAweDMw
RUYsIDB4MzBGMCwgMHgzMEYxLCAweDMwRjIsIDB4MzBGMwogICAgICAgICB9OwotICAgICAgICB0
b0FscGhhYmV0aWMoYnVpbGRlciwgdmFsdWUsIGthdGFrYW5hQWxwaGFiZXQpOwotICAgICAgICBi
cmVhazsKKyAgICAgICAgcmV0dXJuIHRvQWxwaGFiZXRpYyh2YWx1ZSwga2F0YWthbmFBbHBoYWJl
dCk7CiAgICAgfQogICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6S2F0YWthbmFJcm9oYTogewogICAg
ICAgICAvLyBGSVhNRTogVGhpcyB0YWJsZSBjb21lcyBmcm9tIHRoZSBDU1MzIGRyYWZ0LCBhbmQg
aXMgcHJvYmFibHkKQEAgLTg3OSw4ICs4NDEsNyBAQCBTdHJpbmcgbGlzdE1hcmtlclRleHQoTGlz
dFN0eWxlVHlwZSB0eXBlLCBpbnQgdmFsdWUpCiAgICAgICAgICAgICAweDMwQjMsIDB4MzBBOCwg
MHgzMEM2LCAweDMwQTIsIDB4MzBCNSwgMHgzMEFELCAweDMwRTYsIDB4MzBFMSwKICAgICAgICAg
ICAgIDB4MzBERiwgMHgzMEI3LCAweDMwRjEsIDB4MzBEMiwgMHgzMEUyLCAweDMwQkIsIDB4MzBC
OQogICAgICAgICB9OwotICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwgdmFsdWUsIGthdGFr
YW5hSXJvaGFBbHBoYWJldCk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4gdG9BbHBo
YWJldGljKHZhbHVlLCBrYXRha2FuYUlyb2hhQWxwaGFiZXQpOwogICAgIH0KIAogICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6QWZhcjoKQEAgLTg5MCw4ICs4NTEsNyBAQCBTdHJpbmcgbGlzdE1hcmtl
clRleHQoTGlzdFN0eWxlVHlwZSB0eXBlLCBpbnQgdmFsdWUpCiAgICAgICAgICAgICAweDEyMDAs
IDB4MTIwOCwgMHgxMjEwLCAweDEyMTgsIDB4MTIyOCwgMHgxMjMwLCAweDEyNjAsIDB4MTI3MCwg
MHgxMjkwLAogICAgICAgICAgICAgMHgxMkEwLCAweDEyQTgsIDB4MTJDOCwgMHgxMkQwLCAweDEy
RTgsIDB4MTJGMCwgMHgxMzA4LCAweDEzMzgsIDB4MTM0OAogICAgICAgICB9OwotICAgICAgICB0
b0FscGhhYmV0aWMoYnVpbGRlciwgdmFsdWUsIGV0aGlvcGljSGFsZWhhbWVBYUVyQWxwaGFiZXQp
OwotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIHRvQWxwaGFiZXRpYyh2YWx1ZSwgZXRo
aW9waWNIYWxlaGFtZUFhRXJBbHBoYWJldCk7CiAgICAgfQogICAgIGNhc2UgTGlzdFN0eWxlVHlw
ZTo6QW1oYXJpYzoKICAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVBbUV0
OiB7CkBAIC05MDEsOCArODYxLDcgQEAgU3RyaW5nIGxpc3RNYXJrZXJUZXh0KExpc3RTdHlsZVR5
cGUgdHlwZSwgaW50IHZhbHVlKQogICAgICAgICAgICAgMHgxMkM4LCAweDEyRDAsIDB4MTJEOCwg
MHgxMkUwLCAweDEyRTgsIDB4MTJGMCwgMHgxMzAwLCAweDEzMDgsIDB4MTMyMCwKICAgICAgICAg
ICAgIDB4MTMyOCwgMHgxMzMwLCAweDEzMzgsIDB4MTM0MCwgMHgxMzQ4LCAweDEzNTAKICAgICAg
ICAgfTsKLSAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVlLCBldGhpb3BpY0hhbGVo
YW1lQW1FdEFscGhhYmV0KTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiB0b0FscGhh
YmV0aWModmFsdWUsIGV0aGlvcGljSGFsZWhhbWVBbUV0QWxwaGFiZXQpOwogICAgIH0KICAgICBj
YXNlIExpc3RTdHlsZVR5cGU6OkFtaGFyaWNBYmVnZWRlOgogICAgIGNhc2UgTGlzdFN0eWxlVHlw
ZTo6RXRoaW9waWNBYmVnZWRlQW1FdDogewpAQCAtOTEyLDI0ICs4NzEsMjEgQEAgU3RyaW5nIGxp
c3RNYXJrZXJUZXh0KExpc3RTdHlsZVR5cGUgdHlwZSwgaW50IHZhbHVlKQogICAgICAgICAgICAg
MHgxMjk4LCAweDEyMjAsIDB4MTJEMCwgMHgxMzQ4LCAweDEzMzgsIDB4MTI0MCwgMHgxMjI4LCAw
eDEyMzAsIDB4MTIzOCwKICAgICAgICAgICAgIDB4MTI3MCwgMHgxMjc4LCAweDEyODAsIDB4MTM0
MCwgMHgxMzMwLCAweDEzNTAKICAgICAgICAgfTsKLSAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxk
ZXIsIHZhbHVlLCBldGhpb3BpY0FiZWdlZGVBbUV0QWxwaGFiZXQpOwotICAgICAgICBicmVhazsK
KyAgICAgICAgcmV0dXJuIHRvQWxwaGFiZXRpYyh2YWx1ZSwgZXRoaW9waWNBYmVnZWRlQW1FdEFs
cGhhYmV0KTsKICAgICB9CiAgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpDamtFYXJ0aGx5QnJhbmNo
OiB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBjamtFYXJ0aGx5QnJhbmNoQWxwaGFiZXRb
MTJdID0gewogICAgICAgICAgICAgMHg1QjUwLCAweDRFMTEsIDB4NUJDNSwgMHg1MzZGLCAweDhG
QjAsIDB4NURGMywgMHg1MzQ4LCAweDY3MkEsIDB4NzUzMywKICAgICAgICAgICAgIDB4OTE0OSwg
MHg2MjBDLCAweDRFQTUKICAgICAgICAgfTsKLSAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIs
IHZhbHVlLCBjamtFYXJ0aGx5QnJhbmNoQWxwaGFiZXQpOwotICAgICAgICBicmVhazsKKyAgICAg
ICAgcmV0dXJuIHRvQWxwaGFiZXRpYyh2YWx1ZSwgY2prRWFydGhseUJyYW5jaEFscGhhYmV0KTsK
ICAgICB9CiAgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpDamtIZWF2ZW5seVN0ZW06IHsKICAgICAg
ICAgc3RhdGljIGNvbnN0IFVDaGFyIGNqa0hlYXZlbmx5U3RlbUFscGhhYmV0WzEwXSA9IHsKICAg
ICAgICAgICAgIDB4NzUzMiwgMHg0RTU5LCAweDRFMTksIDB4NEUwMSwgMHg2MjBBLCAweDVERjEs
IDB4NUU5QSwgMHg4RjlCLCAweDU4RUMsCiAgICAgICAgICAgICAweDc2NzgKICAgICAgICAgfTsK
LSAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVlLCBjamtIZWF2ZW5seVN0ZW1BbHBo
YWJldCk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4gdG9BbHBoYWJldGljKHZhbHVl
LCBjamtIZWF2ZW5seVN0ZW1BbHBoYWJldCk7CiAgICAgfQogICAgIGNhc2UgTGlzdFN0eWxlVHlw
ZTo6RXRoaW9waWM6CiAgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lR2V6
OiB7CkBAIC05MzgsOCArODk0LDcgQEAgU3RyaW5nIGxpc3RNYXJrZXJUZXh0KExpc3RTdHlsZVR5
cGUgdHlwZSwgaW50IHZhbHVlKQogICAgICAgICAgICAgMHgxMjcwLCAweDEyODAsIDB4MTI5MCwg
MHgxMkEwLCAweDEyQTgsIDB4MTJDOCwgMHgxMkQwLCAweDEyRDgsIDB4MTJFOCwKICAgICAgICAg
ICAgIDB4MTJGMCwgMHgxMzA4LCAweDEzMjAsIDB4MTMzMCwgMHgxMzM4LCAweDEzNDAsIDB4MTM0
OCwgMHgxMzUwCiAgICAgICAgIH07Ci0gICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1
ZSwgZXRoaW9waWNIYWxlaGFtZUdlekFscGhhYmV0KTsKLSAgICAgICAgYnJlYWs7CisgICAgICAg
IHJldHVybiB0b0FscGhhYmV0aWModmFsdWUsIGV0aGlvcGljSGFsZWhhbWVHZXpBbHBoYWJldCk7
CiAgICAgfQogICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNBYmVnZWRlOgogICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNBYmVnZWRlR2V6OiB7CkBAIC05NDgsMjQgKzkwMywy
MSBAQCBTdHJpbmcgbGlzdE1hcmtlclRleHQoTGlzdFN0eWxlVHlwZSB0eXBlLCBpbnQgdmFsdWUp
CiAgICAgICAgICAgICAweDEyRTgsIDB4MTJBOCwgMHgxMjA4LCAweDEyMTgsIDB4MTI5MCwgMHgx
MjIwLCAweDEyRDAsIDB4MTM0OCwgMHgxMzM4LAogICAgICAgICAgICAgMHgxMjQwLCAweDEyMjgs
IDB4MTIzMCwgMHgxMjcwLCAweDEyODAsIDB4MTM0MCwgMHgxMzMwLCAweDEzNTAKICAgICAgICAg
fTsKLSAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVlLCBldGhpb3BpY0FiZWdlZGVH
ZXpBbHBoYWJldCk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4gdG9BbHBoYWJldGlj
KHZhbHVlLCBldGhpb3BpY0FiZWdlZGVHZXpBbHBoYWJldCk7CiAgICAgfQogICAgIGNhc2UgTGlz
dFN0eWxlVHlwZTo6SGFuZ3VsQ29uc29uYW50OiB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hh
ciBoYW5ndWxDb25zb25hbnRBbHBoYWJldFsxNF0gPSB7CiAgICAgICAgICAgICAweDMxMzEsIDB4
MzEzNCwgMHgzMTM3LCAweDMxMzksIDB4MzE0MSwgMHgzMTQyLCAweDMxNDUsIDB4MzE0NywgMHgz
MTQ4LAogICAgICAgICAgICAgMHgzMTRBLCAweDMxNEIsIDB4MzE0QywgMHgzMTRELCAweDMxNEUK
ICAgICAgICAgfTsKLSAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVlLCBoYW5ndWxD
b25zb25hbnRBbHBoYWJldCk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4gdG9BbHBo
YWJldGljKHZhbHVlLCBoYW5ndWxDb25zb25hbnRBbHBoYWJldCk7CiAgICAgfQogICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6SGFuZ3VsOiB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBoYW5n
dWxBbHBoYWJldFsxNF0gPSB7CiAgICAgICAgICAgICAweEFDMDAsIDB4QjA5OCwgMHhCMkU0LCAw
eEI3N0MsIDB4QjlDOCwgMHhCQzE0LCAweEMwQUMsIDB4QzU0NCwgMHhDNzkwLAogICAgICAgICAg
ICAgMHhDQzI4LCAweENFNzQsIDB4RDBDMCwgMHhEMzBDLCAweEQ1NTgKICAgICAgICAgfTsKLSAg
ICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVlLCBoYW5ndWxBbHBoYWJldCk7Ci0gICAg
ICAgIGJyZWFrOworICAgICAgICByZXR1cm4gdG9BbHBoYWJldGljKHZhbHVlLCBoYW5ndWxBbHBo
YWJldCk7CiAgICAgfQogICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6T3JvbW86CiAgICAgY2FzZSBM
aXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lT21FdDogewpAQCAtOTc0LDggKzkyNiw3IEBA
IFN0cmluZyBsaXN0TWFya2VyVGV4dChMaXN0U3R5bGVUeXBlIHR5cGUsIGludCB2YWx1ZSkKICAg
ICAgICAgICAgIDB4MTI3OCwgMHgxMjkwLCAweDEyOTgsIDB4MTJBMCwgMHgxMkE4LCAweDEyQzgs
IDB4MTJFOCwgMHgxMkYwLCAweDEyRjgsCiAgICAgICAgICAgICAweDEzMDAsIDB4MTMwOCwgMHgx
MzIwLCAweDEzMjgsIDB4MTMzOCwgMHgxMzMwLCAweDEzNDgKICAgICAgICAgfTsKLSAgICAgICAg
dG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVlLCBldGhpb3BpY0hhbGVoYW1lT21FdEFscGhhYmV0
KTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiB0b0FscGhhYmV0aWModmFsdWUsIGV0
aGlvcGljSGFsZWhhbWVPbUV0QWxwaGFiZXQpOwogICAgIH0KICAgICBjYXNlIExpc3RTdHlsZVR5
cGU6OlNpZGFtYToKICAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVTaWRF
dDogewpAQCAtOTg0LDggKzkzNSw3IEBAIFN0cmluZyBsaXN0TWFya2VyVGV4dChMaXN0U3R5bGVU
eXBlIHR5cGUsIGludCB2YWx1ZSkKICAgICAgICAgICAgIDB4MTI3MCwgMHgxMjc4LCAweDEyOTAs
IDB4MTI5OCwgMHgxMkEwLCAweDEyQTgsIDB4MTJDOCwgMHgxMkU4LCAweDEyRjAsCiAgICAgICAg
ICAgICAweDEyRjgsIDB4MTMwMCwgMHgxMzA4LCAweDEzMjAsIDB4MTMyOCwgMHgxMzM4LCAweDEz
MzAsIDB4MTM0OAogICAgICAgICB9OwotICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwgdmFs
dWUsIGV0aGlvcGljSGFsZWhhbWVTaWRFdEFscGhhYmV0KTsKLSAgICAgICAgYnJlYWs7CisgICAg
ICAgIHJldHVybiB0b0FscGhhYmV0aWModmFsdWUsIGV0aGlvcGljSGFsZWhhbWVTaWRFdEFscGhh
YmV0KTsKICAgICB9CiAgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpTb21hbGk6CiAgICAgY2FzZSBM
aXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lU29FdDogewpAQCAtOTk0LDggKzk0NCw3IEBA
IFN0cmluZyBsaXN0TWFya2VyVGV4dChMaXN0U3R5bGVUeXBlIHR5cGUsIGludCB2YWx1ZSkKICAg
ICAgICAgICAgIDB4MTI3MCwgMHgxMjkwLCAweDEyQTAsIDB4MTJBOCwgMHgxMkI4LCAweDEyQzgs
IDB4MTJEMCwgMHgxMkU4LCAweDEyRjAsCiAgICAgICAgICAgICAweDEzMDAsIDB4MTMwOCwgMHgx
MzM4LCAweDEzNDgKICAgICAgICAgfTsKLSAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZh
bHVlLCBldGhpb3BpY0hhbGVoYW1lU29FdEFscGhhYmV0KTsKLSAgICAgICAgYnJlYWs7CisgICAg
ICAgIHJldHVybiB0b0FscGhhYmV0aWModmFsdWUsIGV0aGlvcGljSGFsZWhhbWVTb0V0QWxwaGFi
ZXQpOwogICAgIH0KICAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRpZ3JlOgogICAgIGNhc2UgTGlz
dFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZVRpZzogewpAQCAtMTAwNCw4ICs5NTMsNyBAQCBT
dHJpbmcgbGlzdE1hcmtlclRleHQoTGlzdFN0eWxlVHlwZSB0eXBlLCBpbnQgdmFsdWUpCiAgICAg
ICAgICAgICAweDEyNzAsIDB4MTI3OCwgMHgxMjkwLCAweDEyQTAsIDB4MTJBOCwgMHgxMkM4LCAw
eDEyRDAsIDB4MTJEOCwgMHgxMkU4LAogICAgICAgICAgICAgMHgxMkYwLCAweDEzMDAsIDB4MTMw
OCwgMHgxMzIwLCAweDEzMjgsIDB4MTMzOCwgMHgxMzMwLCAweDEzNDgsIDB4MTM1MAogICAgICAg
ICB9OwotICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwgdmFsdWUsIGV0aGlvcGljSGFsZWhh
bWVUaWdBbHBoYWJldCk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4gdG9BbHBoYWJl
dGljKHZhbHVlLCBldGhpb3BpY0hhbGVoYW1lVGlnQWxwaGFiZXQpOwogICAgIH0KICAgICBjYXNl
IExpc3RTdHlsZVR5cGU6OlRpZ3JpbnlhRXI6CiAgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhp
b3BpY0hhbGVoYW1lVGlFcjogewpAQCAtMTAxNSw4ICs5NjMsNyBAQCBTdHJpbmcgbGlzdE1hcmtl
clRleHQoTGlzdFN0eWxlVHlwZSB0eXBlLCBpbnQgdmFsdWUpCiAgICAgICAgICAgICAweDEyRDAs
IDB4MTJEOCwgMHgxMkUwLCAweDEyRTgsIDB4MTJGMCwgMHgxMzAwLCAweDEzMDgsIDB4MTMyMCwg
MHgxMzI4LAogICAgICAgICAgICAgMHgxMzMwLCAweDEzMzgsIDB4MTM0OCwgMHgxMzUwCiAgICAg
ICAgIH07Ci0gICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgZXRoaW9waWNIYWxl
aGFtZVRpRXJBbHBoYWJldCk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4gdG9BbHBo
YWJldGljKHZhbHVlLCBldGhpb3BpY0hhbGVoYW1lVGlFckFscGhhYmV0KTsKICAgICB9CiAgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpUaWdyaW55YUVyQWJlZ2VkZToKICAgICBjYXNlIExpc3RTdHls
ZVR5cGU6OkV0aGlvcGljQWJlZ2VkZVRpRXI6IHsKQEAgLTEwMjYsOCArOTczLDcgQEAgU3RyaW5n
IGxpc3RNYXJrZXJUZXh0KExpc3RTdHlsZVR5cGUgdHlwZSwgaW50IHZhbHVlKQogICAgICAgICAg
ICAgMHgxMjk4LCAweDEyRDAsIDB4MTM0OCwgMHgxMzM4LCAweDEyNDAsIDB4MTI1MCwgMHgxMjI4
LCAweDEyMzAsIDB4MTIzOCwKICAgICAgICAgICAgIDB4MTI3MCwgMHgxMjc4LCAweDEzMzAsIDB4
MTM1MAogICAgICAgICB9OwotICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwgdmFsdWUsIGV0
aGlvcGljQWJlZ2VkZVRpRXJBbHBoYWJldCk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1
cm4gdG9BbHBoYWJldGljKHZhbHVlLCBldGhpb3BpY0FiZWdlZGVUaUVyQWxwaGFiZXQpOwogICAg
IH0KICAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRpZ3JpbnlhRXQ6CiAgICAgY2FzZSBMaXN0U3R5
bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lVGlFdDogewpAQCAtMTAzNyw4ICs5ODMsNyBAQCBTdHJp
bmcgbGlzdE1hcmtlclRleHQoTGlzdFN0eWxlVHlwZSB0eXBlLCBpbnQgdmFsdWUpCiAgICAgICAg
ICAgICAweDEyQjgsIDB4MTJDOCwgMHgxMkQwLCAweDEyRDgsIDB4MTJFMCwgMHgxMkU4LCAweDEy
RjAsIDB4MTMwMCwgMHgxMzA4LAogICAgICAgICAgICAgMHgxMzIwLCAweDEzMjgsIDB4MTMzMCwg
MHgxMzM4LCAweDEzNDAsIDB4MTM0OCwgMHgxMzUwCiAgICAgICAgIH07Ci0gICAgICAgIHRvQWxw
aGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgZXRoaW9waWNIYWxlaGFtZVRpRXRBbHBoYWJldCk7Ci0g
ICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4gdG9BbHBoYWJldGljKHZhbHVlLCBldGhpb3Bp
Y0hhbGVoYW1lVGlFdEFscGhhYmV0KTsKICAgICB9CiAgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpU
aWdyaW55YUV0QWJlZ2VkZToKICAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljQWJlZ2Vk
ZVRpRXQ6IHsKQEAgLTEwNDgsOCArOTkzLDcgQEAgU3RyaW5nIGxpc3RNYXJrZXJUZXh0KExpc3RT
dHlsZVR5cGUgdHlwZSwgaW50IHZhbHVlKQogICAgICAgICAgICAgMHgxMjk4LCAweDEyMjAsIDB4
MTJEMCwgMHgxMzQ4LCAweDEzMzgsIDB4MTI0MCwgMHgxMjUwLCAweDEyMjgsIDB4MTIzMCwKICAg
ICAgICAgICAgIDB4MTIzOCwgMHgxMjcwLCAweDEyNzgsIDB4MTI4MCwgMHgxMzQwLCAweDEzMzAs
IDB4MTM1MAogICAgICAgICB9OwotICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwgdmFsdWUs
IGV0aGlvcGljQWJlZ2VkZVRpRXRBbHBoYWJldCk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICBy
ZXR1cm4gdG9BbHBoYWJldGljKHZhbHVlLCBldGhpb3BpY0FiZWdlZGVUaUV0QWxwaGFiZXQpOwog
ICAgIH0KICAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVyR3JlZWs6IHsKICAgICAgICAgc3Rh
dGljIGNvbnN0IFVDaGFyIHVwcGVyR3JlZWtBbHBoYWJldFsyNF0gPSB7CkBAIC0xMDU3LDggKzEw
MDEsNyBAQCBTdHJpbmcgbGlzdE1hcmtlclRleHQoTGlzdFN0eWxlVHlwZSB0eXBlLCBpbnQgdmFs
dWUpCiAgICAgICAgICAgICAweDAzOUEsIDB4MDM5QiwgMHgwMzlDLCAweDAzOUQsIDB4MDM5RSwg
MHgwMzlGLCAweDAzQTAsIDB4MDNBMSwgMHgwM0EzLAogICAgICAgICAgICAgMHgwM0E0LCAweDAz
QTUsIDB4MDNBNiwgMHgwM0E3LCAweDAzQTgsIDB4MDNBOQogICAgICAgICB9OwotICAgICAgICB0
b0FscGhhYmV0aWMoYnVpbGRlciwgdmFsdWUsIHVwcGVyR3JlZWtBbHBoYWJldCk7Ci0gICAgICAg
IGJyZWFrOworICAgICAgICByZXR1cm4gdG9BbHBoYWJldGljKHZhbHVlLCB1cHBlckdyZWVrQWxw
aGFiZXQpOwogICAgIH0KICAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okxvd2VyTm9yd2VnaWFuOiB7
CiAgICAgICAgIHN0YXRpYyBjb25zdCBMQ2hhciBsb3dlck5vcndlZ2lhbkFscGhhYmV0WzI5XSA9
IHsKQEAgLTEwNjcsOCArMTAxMCw3IEBAIFN0cmluZyBsaXN0TWFya2VyVGV4dChMaXN0U3R5bGVU
eXBlIHR5cGUsIGludCB2YWx1ZSkKICAgICAgICAgICAgIDB4NzMsIDB4NzQsIDB4NzUsIDB4NzYs
IDB4NzcsIDB4NzgsIDB4NzksIDB4N0EsIDB4RTYsCiAgICAgICAgICAgICAweEY4LCAweEU1CiAg
ICAgICAgIH07Ci0gICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgbG93ZXJOb3J3
ZWdpYW5BbHBoYWJldCk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4gdG9BbHBoYWJl
dGljKHZhbHVlLCBsb3dlck5vcndlZ2lhbkFscGhhYmV0KTsKICAgICB9CiAgICAgY2FzZSBMaXN0
U3R5bGVUeXBlOjpVcHBlck5vcndlZ2lhbjogewogICAgICAgICBzdGF0aWMgY29uc3QgTENoYXIg
dXBwZXJOb3J3ZWdpYW5BbHBoYWJldFsyOV0gPSB7CkBAIC0xMDc3LDggKzEwMTksNyBAQCBTdHJp
bmcgbGlzdE1hcmtlclRleHQoTGlzdFN0eWxlVHlwZSB0eXBlLCBpbnQgdmFsdWUpCiAgICAgICAg
ICAgICAweDUzLCAweDU0LCAweDU1LCAweDU2LCAweDU3LCAweDU4LCAweDU5LCAweDVBLCAweEM2
LAogICAgICAgICAgICAgMHhEOCwgMHhDNQogICAgICAgICB9OwotICAgICAgICB0b0FscGhhYmV0
aWMoYnVpbGRlciwgdmFsdWUsIHVwcGVyTm9yd2VnaWFuQWxwaGFiZXQpOwotICAgICAgICBicmVh
azsKKyAgICAgICAgcmV0dXJuIHRvQWxwaGFiZXRpYyh2YWx1ZSwgdXBwZXJOb3J3ZWdpYW5BbHBo
YWJldCk7CiAgICAgfQogICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Q0pLSWRlb2dyYXBoaWM6IHsK
ICAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIHRyYWRpdGlvbmFsQ2hpbmVzZUluZm9ybWFsVGFi
bGVbMTZdID0gewpAQCAtMTA4NywzNiArMTAyOCwzMCBAQCBTdHJpbmcgbGlzdE1hcmtlclRleHQo
TGlzdFN0eWxlVHlwZSB0eXBlLCBpbnQgdmFsdWUpCiAgICAgICAgICAgICAweDk2RjYsIDB4NEUw
MCwgMHg0RThDLCAweDRFMDksIDB4NTZEQiwKICAgICAgICAgICAgIDB4NEU5NCwgMHg1MTZELCAw
eDRFMDMsIDB4NTE2QiwgMHg0RTVECiAgICAgICAgIH07Ci0gICAgICAgIHRvQ0pLSWRlb2dyYXBo
aWMoYnVpbGRlciwgdmFsdWUsIHRyYWRpdGlvbmFsQ2hpbmVzZUluZm9ybWFsVGFibGUpOwotICAg
ICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIHRvQ0pLSWRlb2dyYXBoaWModmFsdWUsIHRyYWRp
dGlvbmFsQ2hpbmVzZUluZm9ybWFsVGFibGUpOwogICAgIH0KIAogICAgIGNhc2UgTGlzdFN0eWxl
VHlwZTo6TG93ZXJSb21hbjoKLSAgICAgICAgdG9Sb21hbihidWlsZGVyLCB2YWx1ZSwgZmFsc2Up
OwotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIHRvUm9tYW4odmFsdWUsIExldHRlckNh
c2U6Okxvd2VyKTsKICAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVyUm9tYW46Ci0gICAgICAg
IHRvUm9tYW4oYnVpbGRlciwgdmFsdWUsIHRydWUpOwotICAgICAgICBicmVhazsKKyAgICAgICAg
cmV0dXJuIHRvUm9tYW4odmFsdWUsIExldHRlckNhc2U6OlVwcGVyKTsKIAorICAgIC8vIEEgQ1NT
MyBkcmFmdCBzYWlkIHRoYXQgImFybWVuaWFuIiBtZWFucyAibG93ZXItYXJtZW5pYW4iLiBCdXQg
dGhlIENTUzIuMSB0ZXN0CisgICAgLy8gc3VpdGUgY29udGFpbnMgdXBwZXJjYXNlIHRlc3QgcmVz
dWx0cyBmb3IgImFybWVuaWFuIjsgb3VyIGJlaGF2aW9yIG1hdGNoZXMgdGhhdC4KICAgICBjYXNl
IExpc3RTdHlsZVR5cGU6OkFybWVuaWFuOgogICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJB
cm1lbmlhbjoKLSAgICAgICAgLy8gQ1NTMyBzYXlzICJhcm1lbmlhbiIgbWVhbnMgImxvd2VyLWFy
bWVuaWFuIi4KLSAgICAgICAgLy8gQnV0IHRoZSBDU1MyLjEgdGVzdCBzdWl0ZSBjb250YWlucyB1
cHBlcmNhc2UgdGVzdCByZXN1bHRzIGZvciAiYXJtZW5pYW4iLAotICAgICAgICAvLyBzbyB3ZSds
bCBtYXRjaCB0aGUgdGVzdCBzdWl0ZS4KLSAgICAgICAgdG9Bcm1lbmlhbihidWlsZGVyLCB2YWx1
ZSwgdHJ1ZSk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4gdG9Bcm1lbmlhbih2YWx1
ZSwgTGV0dGVyQ2FzZTo6VXBwZXIpOwogICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93ZXJBcm1l
bmlhbjoKLSAgICAgICAgdG9Bcm1lbmlhbihidWlsZGVyLCB2YWx1ZSwgZmFsc2UpOwotICAgICAg
ICBicmVhazsKKyAgICAgICAgcmV0dXJuIHRvQXJtZW5pYW4odmFsdWUsIExldHRlckNhc2U6Okxv
d2VyKTsKKwogICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6R2VvcmdpYW46Ci0gICAgICAgIHRvR2Vv
cmdpYW4oYnVpbGRlciwgdmFsdWUpOwotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIHRv
R2VvcmdpYW4odmFsdWUpOwogICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6SGVicmV3OgotICAgICAg
ICB0b0hlYnJldyhidWlsZGVyLCB2YWx1ZSk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1
cm4gdG9IZWJyZXcodmFsdWUpOwogICAgIH0KIAotICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5n
KCk7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7
CiB9CiAKIFJlbmRlckxpc3RNYXJrZXI6OlJlbmRlckxpc3RNYXJrZXIoUmVuZGVyTGlzdEl0ZW0m
IGxpc3RJdGVtLCBSZW5kZXJTdHlsZSYmIHN0eWxlKQpAQCAtMTM1MCwzMiArMTI4NSwzNSBAQCB2
b2lkIFJlbmRlckxpc3RNYXJrZXI6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYgcGFpbnRPZmZzZQogICAgIGVsc2UgewogICAgICAgICBjb25zdCBVQ2hhciBz
dWZmaXggPSBsaXN0TWFya2VyU3VmZml4KHR5cGUsIG1fbGlzdEl0ZW0tPnZhbHVlKCkpOwogCi0g
ICAgICAgIC8vIFRleHQgaXMgbm90IGFyYml0cmFyeS4gV2UgY2FuIGp1ZGdlIHdoZXRoZXIgaXQn
cyBSVEwgZnJvbSB0aGUgZmlyc3QgY2hhcmFjdGVyLAotICAgICAgICAvLyBhbmQgd2Ugb25seSBu
ZWVkIHRvIGhhbmRsZSB0aGUgZGlyZWN0aW9uIFVfUklHSFRfVE9fTEVGVCBmb3Igbm93LgotICAg
ICAgICBib29sIHRleHROZWVkc1JldmVyc2luZyA9IHVfY2hhckRpcmVjdGlvbihtX3RleHRbMF0p
ID09IFVfUklHSFRfVE9fTEVGVDsKLSAgICAgICAgU3RyaW5nIHRvRHJhdzsKLSAgICAgICAgaWYg
KHRleHROZWVkc1JldmVyc2luZykgeworICAgICAgICAvLyBGSVhNRTogQ291bGQgdXNlIGEgVmVj
dG9yIHdpdGggaW5saW5lIGNhcGFjaXR5IGluc3RlYWQgb2YgU3RyaW5nIHRvIGF2b2lkCisgICAg
ICAgIC8vIG1lbW9yeSBhbGxvY2F0aW9uIGhlcmUuCisgICAgICAgIFN0cmluZyB0ZXh0VG9EcmF3
OworCisgICAgICAgIC8vIFNpbmNlIG1hcmtlciB0ZXh0IGlzIG5vdCBhcmJpdHJhcnksIHdlIGNh
biBqdWRnZSBpdHMgZGlyZWN0aW9uIGp1c3QgYnkKKyAgICAgICAgLy8gY2hlY2tpbmcgdGhlIGZp
cnN0IGNoYXJhY3RlciwgYW5kIG9ubHkgbmVlZCB0byBoYW5kbGUgVV9SSUdIVF9UT19MRUZULgor
ICAgICAgICAvLyBGSVhNRTogQ291bGQgY2hlY2sgbW9yZSBlZmZpY2llbnRseSB0aGFuIHVfY2hh
ckRpcmVjdGlvbiwgc2luY2Ugd2Uga25vdworICAgICAgICAvLyBvbmx5IGNlcnRhaW4gY2hhcmFj
dGVycyBhcmUgdXNlZCBhbmQgb25seSBuZWVkIHRvIGNoZWNrIGZvciBVX1JJR0hUX1RPX0xFRlQu
CisgICAgICAgIGlmICh1X2NoYXJEaXJlY3Rpb24obV90ZXh0WzBdKSA9PSBVX1JJR0hUX1RPX0xF
RlQpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IG1fdGV4dC5sZW5ndGgoKTsKLSAg
ICAgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVmZmVyOwotICAgICAgICAgICAgYnVmZmVyLnJlc2Vy
dmVDYXBhY2l0eShsZW5ndGggKyAyKTsKKyAgICAgICAgICAgIFVDaGFyKiBjaGFyYWN0ZXJzOwor
ICAgICAgICAgICAgdGV4dFRvRHJhdyA9IFN0cmluZzo6Y3JlYXRlVW5pbml0aWFsaXplZChsZW5n
dGggKyAyLCBjaGFyYWN0ZXJzKTsKICAgICAgICAgICAgIGlmICghc3R5bGUoKS5pc0xlZnRUb1Jp
Z2h0RGlyZWN0aW9uKCkpIHsKLSAgICAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKHNwYWNlKTsK
LSAgICAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKHN1ZmZpeCk7CisgICAgICAgICAgICAgICAg
KmNoYXJhY3RlcnMrKyA9IHNwYWNlOworICAgICAgICAgICAgICAgICpjaGFyYWN0ZXJzKysgPSBz
dWZmaXg7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbGVuZ3RoOyArK2kpCi0gICAgICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChtX3RleHRbbGVu
Z3RoIC0gaSAtIDFdKTsKKyAgICAgICAgICAgICAgICAqY2hhcmFjdGVycysrID0gbV90ZXh0W2xl
bmd0aCAtIGkgLSAxXTsKICAgICAgICAgICAgIGlmIChzdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJl
Y3Rpb24oKSkgewotICAgICAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoc3VmZml4KTsKLSAgICAg
ICAgICAgICAgICBidWZmZXIuYXBwZW5kKHNwYWNlKTsKKyAgICAgICAgICAgICAgICAqY2hhcmFj
dGVycysrID0gc3VmZml4OworICAgICAgICAgICAgICAgICpjaGFyYWN0ZXJzKysgPSBzcGFjZTsK
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRvRHJhdyA9IGJ1ZmZlci50b1N0cmluZygpOwog
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKHN0eWxlKCkuaXNMZWZ0VG9SaWdodERp
cmVjdGlvbigpKQotICAgICAgICAgICAgICAgIHRvRHJhdyA9IG1fdGV4dCArIFN0cmluZygmc3Vm
Zml4LCAxKSArIFN0cmluZygmc3BhY2UsIDEpOworICAgICAgICAgICAgICAgIHRleHRUb0RyYXcg
PSBtYWtlU3RyaW5nKG1fdGV4dCwgc3VmZml4LCBzcGFjZSk7CiAgICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgdG9EcmF3ID0gU3RyaW5nKCZzcGFjZSwgMSkgKyBTdHJpbmcoJnN1ZmZp
eCwgMSkgKyBtX3RleHQ7CisgICAgICAgICAgICAgICAgdGV4dFRvRHJhdyA9IG1ha2VTdHJpbmco
c3BhY2UsIHN1ZmZpeCwgbV90ZXh0KTsKICAgICAgICAgfQotICAgICAgICB0ZXh0UnVuLnNldFRl
eHQoU3RyaW5nVmlldyh0b0RyYXcpKTsKKyAgICAgICAgdGV4dFJ1bi5zZXRUZXh0KHRleHRUb0Ry
YXcpOwogCiAgICAgICAgIGNvbnRleHQuZHJhd1RleHQoZm9udCwgdGV4dFJ1biwgdGV4dE9yaWdp
bik7CiAgICAgfQpAQCAtMTU2OCw4ICsxNTA2LDggQEAgdm9pZCBSZW5kZXJMaXN0TWFya2VyOjpj
b21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpCiAgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpG
b290bm90ZXM6IHsKICAgICAgICAgVGV4dFJ1biBydW4gPSBSZW5kZXJCbG9jazo6Y29uc3RydWN0
VGV4dFJ1bihtX3RleHQsIHN0eWxlKCkpOwogICAgICAgICBsb2dpY2FsV2lkdGggPSBmb250Lndp
ZHRoKHJ1bik7IC8vIG5vIHN1ZmZpeCBmb3IgdGhlc2UgdHlwZXMKLSAgICB9CiAgICAgICAgIGJy
ZWFrOworICAgIH0KICAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkNpcmNsZToKICAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OkRpc2M6CiAgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpTcXVhcmU6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFV0aWxpdGllcy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHUGF0aFV0aWxpdGllcy5jcHAKaW5kZXggNGI3OWMxZmFiMDJkZDU4NTFm
YmJhMDcwN2Q5ZGQzNGZjYzNmYmNlYy4uZGI4ZjkyOWFkMTliNWJlMGY3OTQ5YmE1YjUyNDQxODBm
Y2FhN2FhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhVdGlsaXRpZXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoVXRpbGl0aWVzLmNwcApAQCAtNjAs
MzkgKzYwLDM5IEBAIFN0cmluZyBidWlsZFN0cmluZ0Zyb21QYXRoKGNvbnN0IFBhdGgmIHBhdGgp
CiAgICAgICAgICAgICBzd2l0Y2ggKGVsZW1lbnQudHlwZSkgewogICAgICAgICAgICAgY2FzZSBQ
YXRoRWxlbWVudE1vdmVUb1BvaW50OgogICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdN
Jyk7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRTaG9ydGVzdEZvcm1OdW1iZXIoZWxl
bWVudC5wb2ludHNbMF0ueCgpKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJl
cihlbGVtZW50LnBvaW50c1swXS54KCkpOwogICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCcgJyk7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRTaG9ydGVzdEZvcm1OdW1iZXIo
ZWxlbWVudC5wb2ludHNbMF0ueSgpKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZE51
bWJlcihlbGVtZW50LnBvaW50c1swXS55KCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgY2FzZSBQYXRoRWxlbWVudEFkZExpbmVUb1BvaW50OgogICAgICAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCdMJyk7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRTaG9y
dGVzdEZvcm1OdW1iZXIoZWxlbWVudC5wb2ludHNbMF0ueCgpKTsKKyAgICAgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZE51bWJlcihlbGVtZW50LnBvaW50c1swXS54KCkpOwogICAgICAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRT
aG9ydGVzdEZvcm1OdW1iZXIoZWxlbWVudC5wb2ludHNbMF0ueSgpKTsKKyAgICAgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZE51bWJlcihlbGVtZW50LnBvaW50c1swXS55KCkpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBQYXRoRWxlbWVudEFkZFF1YWRDdXJ2ZVRv
UG9pbnQ6CiAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1EnKTsKLSAgICAgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZFNob3J0ZXN0Rm9ybU51bWJlcihlbGVtZW50LnBvaW50c1swXS54
KCkpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGVsZW1lbnQucG9pbnRz
WzBdLngoKSk7CiAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICAgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZFNob3J0ZXN0Rm9ybU51bWJlcihlbGVtZW50LnBvaW50c1sw
XS55KCkpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGVsZW1lbnQucG9p
bnRzWzBdLnkoKSk7CiAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJywnKTsKLSAgICAg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZFNob3J0ZXN0Rm9ybU51bWJlcihlbGVtZW50LnBvaW50
c1sxXS54KCkpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGVsZW1lbnQu
cG9pbnRzWzFdLngoKSk7CiAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAg
ICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZFNob3J0ZXN0Rm9ybU51bWJlcihlbGVtZW50LnBv
aW50c1sxXS55KCkpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGVsZW1l
bnQucG9pbnRzWzFdLnkoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBj
YXNlIFBhdGhFbGVtZW50QWRkQ3VydmVUb1BvaW50OgogICAgICAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCdDJyk7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRTaG9ydGVzdEZvcm1O
dW1iZXIoZWxlbWVudC5wb2ludHNbMF0ueCgpKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZE51bWJlcihlbGVtZW50LnBvaW50c1swXS54KCkpOwogICAgICAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCcgJyk7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRTaG9ydGVzdEZv
cm1OdW1iZXIoZWxlbWVudC5wb2ludHNbMF0ueSgpKTsKKyAgICAgICAgICAgICAgICBidWlsZGVy
LmFwcGVuZE51bWJlcihlbGVtZW50LnBvaW50c1swXS55KCkpOwogICAgICAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCcsJyk7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRTaG9ydGVz
dEZvcm1OdW1iZXIoZWxlbWVudC5wb2ludHNbMV0ueCgpKTsKKyAgICAgICAgICAgICAgICBidWls
ZGVyLmFwcGVuZE51bWJlcihlbGVtZW50LnBvaW50c1sxXS54KCkpOwogICAgICAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRTaG9y
dGVzdEZvcm1OdW1iZXIoZWxlbWVudC5wb2ludHNbMV0ueSgpKTsKKyAgICAgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZE51bWJlcihlbGVtZW50LnBvaW50c1sxXS55KCkpOwogICAgICAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCcsJyk7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRT
aG9ydGVzdEZvcm1OdW1iZXIoZWxlbWVudC5wb2ludHNbMl0ueCgpKTsKKyAgICAgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZE51bWJlcihlbGVtZW50LnBvaW50c1syXS54KCkpOwogICAgICAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmRTaG9ydGVzdEZvcm1OdW1iZXIoZWxlbWVudC5wb2ludHNbMl0ueSgpKTsKKyAgICAgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihlbGVtZW50LnBvaW50c1syXS55KCkpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBQYXRoRWxlbWVudENsb3NlU3VicGF0
aDoKICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnWicpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NUZWxlbWV0cnkuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuY3BwCmluZGV4IDJhYjVmMDcx
ZjNlYzg4ZmIxMzUzMDEzYmE2OTMwNjY5YmU2ZGZmNDcuLjc1MzkxNTgyYjFhNTg2MzU1ZWE2N2Zm
OWFmMjQ4NzhjNDA5NWEwMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1RlbGVtZXRyeS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsNyArMzcsNyBAQAogI2luY2x1ZGUgPHd0Zi9NYWlu
VGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1J1bkxvb3AuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0xNTksMTEgKzE1OSw4IEBAIHN0YXRp
YyB2b2lkIHN1Ym1pdFRvcExpc3QodW5zaWduZWQgbnVtYmVyT2ZSZXNvdXJjZXNGcm9tVGhlVG9w
LCBjb25zdCBWZWN0b3I8UHJlCiAgICAgdW5zaWduZWQgdG9wTnVtYmVyT2ZUaW1lc0FjY2Vzc2Vk
QXNGaXJzdFBhcnR5RHVlVG9Vc2VySW50ZXJhY3Rpb24gPSBtZWRpYW4oc29ydGVkUHJldmFsZW50
UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiwgMCwgbnVtYmVyT2ZSZXNvdXJjZXNGcm9t
VGhlVG9wIC0gMSwgbnVtYmVyT2ZUaW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9Vc2VySW50
ZXJhY3Rpb25HZXR0ZXIpOwogICAgIHVuc2lnbmVkIHRvcE51bWJlck9mVGltZXNBY2Nlc3NlZEFz
Rmlyc3RQYXJ0eUR1ZVRvU3RvcmFnZUFjY2Vzc0FQSSA9IG1lZGlhbihzb3J0ZWRQcmV2YWxlbnRS
ZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9uLCAwLCBudW1iZXJPZlJlc291cmNlc0Zyb21U
aGVUb3AgLSAxLCBudW1iZXJPZlRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1N0b3JhZ2VB
Y2Nlc3NBUElHZXR0ZXIpOwogCi0gICAgU3RyaW5nQnVpbGRlciBwcmVhbWJsZUJ1aWxkZXI7Ci0g
ICAgcHJlYW1ibGVCdWlsZGVyLmFwcGVuZExpdGVyYWwoInRvcCIpOwotICAgIHByZWFtYmxlQnVp
bGRlci5hcHBlbmROdW1iZXIobnVtYmVyT2ZSZXNvdXJjZXNGcm9tVGhlVG9wKTsKLSAgICBTdHJp
bmcgZGVzY3JpcHRpb25QcmVhbWJsZSA9IHByZWFtYmxlQnVpbGRlci50b1N0cmluZygpOwotICAg
IAorICAgIFN0cmluZyBkZXNjcmlwdGlvblByZWFtYmxlID0gbWFrZVN0cmluZygidG9wIiwgbnVt
YmVyT2ZSZXNvdXJjZXNGcm9tVGhlVG9wKTsKKwogICAgIHN0b3JlLnNlbmREaWFnbm9zdGljTWVz
c2FnZVdpdGhWYWx1ZShEaWFnbm9zdGljTG9nZ2luZ0tleXM6OnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NUZWxlbWV0cnlLZXkoKSwgZGVzY3JpcHRpb25QcmVhbWJsZSArICJQcmV2YWxlbnRSZXNvdXJj
ZXNXaXRoVXNlckludGVyYWN0aW9uIiwKICAgICAgICAgdG9wUHJldmFsZW50UmVzb3VyY2VzV2l0
aFVzZXJJbnRlcmFjdGlvbiwgc2lnbmlmaWNhbnRGaWd1cmVzRm9yTG9nZ2VkVmFsdWVzLCBTaG91
bGRTYW1wbGU6Ok5vKTsKICAgICBzdG9yZS5zZW5kRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUo
RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5S2V5
KCksIGRlc2NyaXB0aW9uUHJlYW1ibGUgKyAiU3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lucyIs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlwdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlwdC5jcHAKaW5kZXgg
NDAyMmVmZGNiOTdhNTA5ZjZlMGVmODk1ZGNiNjczODY2YWE5ZjU2Zi4uZTdjZWM0NDY0M2U0ODE0
MDk4MDFiNDNmNDFmODBmYzczY2Q2NDNhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElVc2VyU2NyaXB0LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE1LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiwxOCArMjYsMTQgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJBUElVc2VyU2NyaXB0LmgiCiAKLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJz
Lmg+CiAKIG5hbWVzcGFjZSBBUEkgewogCiBXVEY6OlVSTCBVc2VyU2NyaXB0OjpnZW5lcmF0ZVVu
aXF1ZVVSTCgpCiB7CiAgICAgc3RhdGljIHVpbnQ2NF90IGlkZW50aWZpZXI7Ci0KLSAgICBTdHJp
bmdCdWlsZGVyIHVybFN0cmluZ0J1aWxkZXI7Ci0gICAgdXJsU3RyaW5nQnVpbGRlci5hcHBlbmRM
aXRlcmFsKCJ1c2VyLXNjcmlwdDoiKTsKLSAgICB1cmxTdHJpbmdCdWlsZGVyLmFwcGVuZE51bWJl
cigrK2lkZW50aWZpZXIpOwotICAgIHJldHVybiB7IHsgfSwgdXJsU3RyaW5nQnVpbGRlci50b1N0
cmluZygpIH07CisgICAgcmV0dXJuIHsgeyB9LCBtYWtlU3RyaW5nKCJ1c2VyLXNjcmlwdDoiLCAr
K2lkZW50aWZpZXIpIH07CiB9CiAKIFVzZXJTY3JpcHQ6OlVzZXJTY3JpcHQoV2ViQ29yZTo6VXNl
clNjcmlwdCB1c2VyU2NyaXB0LCBBUEk6OlVzZXJDb250ZW50V29ybGQmIHdvcmxkKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyU3R5bGVTaGVldC5jcHAKaW5kZXgg
M2VhNDYxZmUxYTE1NmM2YTlkNTg5NTg0MDM3ZmUzODdjMjkwN2YwOC4uZmQ2OWI4MzIwOTVmZjk5
NDIyODliNzk5Zjk5YTQ4NTRlYjNlN2Y0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJVXNlclN0eWxlU2hlZXQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTUtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDE4ICsyNiwxNCBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkFQSVVzZXJTdHlsZVNoZWV0LmgiCiAKLSNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0
ZW5hdGVOdW1iZXJzLmg+CiAKIG5hbWVzcGFjZSBBUEkgewogCiBXVEY6OlVSTCBVc2VyU3R5bGVT
aGVldDo6Z2VuZXJhdGVVbmlxdWVVUkwoKQogewogICAgIHN0YXRpYyB1aW50NjRfdCBpZGVudGlm
aWVyOwotCi0gICAgU3RyaW5nQnVpbGRlciB1cmxTdHJpbmdCdWlsZGVyOwotICAgIHVybFN0cmlu
Z0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgidXNlci1zdHlsZS1zaGVldDoiKTsKLSAgICB1cmxTdHJp
bmdCdWlsZGVyLmFwcGVuZE51bWJlcigrK2lkZW50aWZpZXIpOwotICAgIHJldHVybiB7IHsgfSwg
dXJsU3RyaW5nQnVpbGRlci50b1N0cmluZygpIH07CisgICAgcmV0dXJuIHsgeyB9LCBtYWtlU3Ry
aW5nKCJ1c2VyLXN0eWxlLXNoZWV0OiIsICsraWRlbnRpZmllcikgfTsKIH0KIAogVXNlclN0eWxl
U2hlZXQ6OlVzZXJTdHlsZVNoZWV0KFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0IHVzZXJTdHlsZVNo
ZWV0LCBBUEk6OlVzZXJDb250ZW50V29ybGQmIHdvcmxkKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDI4ODM0OTAzM2NlZWM3MjhiZGNkMmIyOGQ5
MjI3MjU0OWUwYzY3NGMuLjI4MDAwMzQ4YjgxZGJmZDBlZDJkZDVlYWExMWY0ZGE5NzFlZDhkZTgg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxOS0wNi0wMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgRmluaXNoIGNsZWFudXAgb2YgU3RyaW5nOjpudW1iZXIgZm9yIGZsb2F0aW5nIHBv
aW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTg0
NzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcDoKKyAg
ICAgICAgKFdUUjo6ZHVtcEZyYW1lU2Nyb2xsUG9zaXRpb24pOiBVc2UgYXBwZW5kTnVtYmVyIGlu
c3RlYWQgb2YgYXBwZW5kRUNNQVNjcmlwdE51bWJlcgorICAgICAgICBzaW5jZSB0aGF0IGlzIG5v
dyB0aGUgZGVmYXVsdC4KKwogMjAxOS0wNS0zMSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxl
LmNvbT4KIAogICAgICAgICBUZXN0V2ViS2l0QVBJLldLV2ViVmlldy5Mb2NhbFN0b3JhZ2VQcm9j
ZXNzU3VzcGVuZHMgaXMgZmxha3kKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAppbmRleCA0MDAxZjg2
MmI5YzMxNTZmMzNjYTUzODgzMTFjODkwOGU0ZGRmMzEyLi5kYzlkZTE2NjM3MmRkMDQwNjQ0NTc4
OGE4YzNjM2FiODA3NjAxNjJiIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCkBAIC03ODIsOSAr
NzgyLDkgQEAgc3RhdGljIHZvaWQgZHVtcEZyYW1lU2Nyb2xsUG9zaXRpb24oV0tCdW5kbGVGcmFt
ZVJlZiBmcmFtZSwgU3RyaW5nQnVpbGRlciYgc3RyaW4KICAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmRMaXRlcmFsKCInICIpOwogICAgIH0KICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVy
YWwoInNjcm9sbGVkIHRvICIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kRUNNQVNjcmlwdE51
bWJlcih4KTsKKyAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZE51bWJlcih4KTsKICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZCgnLCcpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kRUNNQVNjcmlwdE51
bWJlcih5KTsKKyAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZE51bWJlcih5KTsKICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZCgnXG4nKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>371173</attachid>
            <date>2019-06-02 17:49:29 -0700</date>
            <delta_ts>2019-06-03 04:34:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198471-20190602174928.patch</filename>
            <type>text/plain</type>
            <size>84077</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2MDI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
NWE1ZTM5NWI3Njc5MjQzMDA0MzZkYmVjOWUxZmVhNjczMmM0YTI4Li44MjI0ZDc5MjM4NjliOWU4
ZDc2NDRlYWZhYjU5Y2UyNTUwNzg2MDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMCBAQAorMjAxOS0wNi0wMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgRmluaXNoIGNsZWFudXAgb2YgU3RyaW5nOjpudW1iZXIgZm9yIGZsb2F0aW5nIHBv
aW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTg0
NzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGRm
Zy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTdHJl
bmd0aFJlZHVjdGlvblBoYXNlOjpoYW5kbGVOb2RlKTogVXNlIFN0cmluZzo6bnVtYmVyIGluc3Rl
YWQgb2YKKyAgICAgICAgU3RyaW5nOjpudW1iZXJUb1N0cmluZ0VDTUFTY3JpcHQsIHNpbmNlIHRo
YXQncyBub3cgdGhlIGRlZmF1bHQuCisgICAgICAgICogcGFyc2VyL1BhcnNlckFyZW5hLmg6Cisg
ICAgICAgIChKU0M6OklkZW50aWZpZXJBcmVuYTo6bWFrZU51bWVyaWNJZGVudGlmaWVyKTogRGl0
dG8uCisgICAgICAgICogcnVudGltZS9KU09OT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6U3Ry
aW5naWZpZXI6OmFwcGVuZFN0cmluZ2lmaWVkVmFsdWUpOiBVc2UgYXBwZW5kTnVtYmVyIGluc3Rl
YWQgb2YKKyAgICAgICAgYnVpbGRlci5hcHBlbmRFQ01BU2NyaXB0TnVtYmVyLCBzaW5jZSB0aGF0
J3Mgbm93IHRoZSBkZWZhdWx0LgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNw
cDoKKyAgICAgICAgKEpTQzo6dG9TdHJpbmdXaXRoUmFkaXgpOiBVc2UgU3RyaW5nOjpudW1iZXIg
aW5zdGVhZCBvZgorICAgICAgICBTdHJpbmc6Om51bWJlclRvU3RyaW5nRUNNQVNjcmlwdCwgc2lu
Y2UgdGhhdCdzIG5vdyB0aGUgZGVmYXVsdC4KKyAgICAgICAgKEpTQzo6bnVtYmVyUHJvdG9GdW5j
VG9FeHBvbmVudGlhbCk6IERpdHRvLgorICAgICAgICAoSlNDOjpudW1iZXJQcm90b0Z1bmNUb0Zp
eGVkKTogRGl0dG8uCisgICAgICAgIChKU0M6Om51bWJlclByb3RvRnVuY1RvUHJlY2lzaW9uKTog
RGl0dG8uCisgICAgICAgIChKU0M6Om51bWJlclRvU3RyaW5nSW50ZXJuYWwpOiBEaXR0by4KKyAg
ICAgICAgKiBydW50aW1lL051bWVyaWNTdHJpbmdzLmg6CisgICAgICAgIChKU0M6Ok51bWVyaWNT
dHJpbmdzOjphZGQpOiBEaXR0by4KKyAgICAgICAgKiB3YXNtL1dhc21CQlFQbGFuLmNwcDoKKyAg
ICAgICAgKEpTQzo6V2FzbTo6QkJRUGxhbjo6cHJlcGFyZSk6IERpdHRvLgorCiAyMDE5LTA2LTAy
ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gQ3Jh
c2ggZXhwbGljaXRseSBpZiBTdHJ1Y3R1cmVJRHMgYXJlIGV4aGF1c3RlZApkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA4MzQ2Njg2
ZDgxMjQzNjA4NmE5NzE1OTU0YjgyZTc5MDZjZGJlMTcyLi4wNThlNTI3Nzc2NzQ4Yjc3NzRiNjcw
OTk2ODlkMzQ4YzZjZDg5NGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE5LTA2LTAyICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBGaW5pc2ggY2xlYW51cCBvZiBT
dHJpbmc6Om51bWJlciBmb3IgZmxvYXRpbmcgcG9pbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODQ3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0pTT05WYWx1ZXMuY3BwOgorICAgICAgICAo
V1RGOjpKU09OSW1wbDo6VmFsdWU6OndyaXRlSlNPTiBjb25zdCk6IFVzZSBhcHBlbmROdW1iZXIg
aW5zdGVhZCBvZgorICAgICAgICBhcHBlbmRFQ01BU2NyaXB0TnVtYmVyLCBzaW5jZSB0aGF0J3Mg
bm93IHRoZSBkZWZhdWx0LgorCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nQnVpbGRlci5jcHA6
CisgICAgICAgIChXVEY6OlN0cmluZ0J1aWxkZXI6OmFwcGVuZE51bWJlcik6IFJlbmFtZWQgZnJv
bSBhcHBlbmRTaG9ydGVzdEZvcm1OdW1iZXIuCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oOiBSZW1vdmVkIGFwcGVuZFNob3J0ZXN0Rm9ybU51bWJlciBhbmQKKyAgICAgICAgYXBw
ZW5kRUNNQVNjcmlwdE51bWJlciwgcmVwbGFjaW5nIGJvdGggd2l0aCBvdmVybG9hZCBvZiBhcHBl
bmROdW1iZXIuCisKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuY3BwOgorICAgICAgICAo
V1RGOjpTdHJpbmc6Om51bWJlcik6IFJlbmFtZWQgZnJvbSBudW1iZXJUb1N0cmluZ1Nob3J0ZXN0
LgorICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5oOiBSZW1vdmVkIG51bWJlclRvU3RyaW5n
U2hvcnRlc3QgYW5kCisgICAgICAgIG51bWJlclRvU3RyaW5nRUNNQVNjcmlwdCwgcmVwbGFjaW5n
IGJvdGggd2l0aCBvdmVybG9hZCBvZiBudW1iZXIuCisKIDIwMTktMDYtMDIgIEtlaXRoIE1pbGxl
ciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVlbmFibGUgR2lnYWNhZ2Ug
b24gQVJNNjQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTk2ZDI2MDljOWUzZDcyMDdmZmE5MmQxZGEyZWE3NjNm
MzZhMjEwNS4uODJkOTAxZTJkMGQxMDYzYTZlZjMzNjU2ZDczZDQ5MGRkODg4YTJmOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE5LTA2LTAyICBEYXJpbiBBZGxlciAgPGRhcmluQGFw
cGxlLmNvbT4KKworICAgICAgICBGaW5pc2ggY2xlYW51cCBvZiBTdHJpbmc6Om51bWJlciBmb3Ig
ZmxvYXRpbmcgcG9pbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5ODQ3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6Y3VzdG9tQ1NTVGV4dCBjb25zdCk6IFVzZSBtYWtlU3RyaW5n
IGluc3RlYWQKKyAgICAgICAgb2YgU3RyaW5nQnVpbGRlciBzaW5jZSBpdCBpcyBtb3JlIHRlcnNl
IGFuZCBwb3NzaWJseSBtb3JlIGVmZmljaWVudCBhcyB3ZWxsLgorICAgICAgICAqIGNzcy9ET01N
YXRyaXhSZWFkT25seS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01NYXRyaXhSZWFkT25seTo6
dG9TdHJpbmcgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTTWF0cml4LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdENTU01hdHJpeDo6dG9TdHJpbmcgY29uc3QpOiBE
aXR0by4KKworICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6c2VyaWFsaXplRm9yTnVtYmVyVHlwZSk6IFVzZSBTdHJpbmc6Om51bWJl
ciBpbnN0ZWFkIG9mCisgICAgICAgIFN0cmluZzo6bnVtYmVyVG9TdHJpbmdFQ01BU2NyaXB0IHNp
bmNlIHRoYXQgaXMgbm93IHRoZSBkZWZhdWx0LgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlh
Q29udHJvbEVsZW1lbnRUeXBlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xW
b2x1bWVTbGlkZXJFbGVtZW50OjpzZXRWb2x1bWUpOiBEaXR0by4KKyAgICAgICAgKiBodG1sL3No
YWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNv
bnRyb2xUaW1lbGluZUVsZW1lbnQ6OnNldFBvc2l0aW9uKTogRGl0dG8uCisgICAgICAgICogcGxh
dGZvcm0vRGVjaW1hbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpmcm9tRG91Ymxl
KTogRGl0dG8uCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjp0b1JvbWFuKTogUmV0dXJuIGEgU3RyaW5nIGluc3RlYWQgb2YgdGFr
aW5nIGEgU3RyaW5nQnVpbGRlciBhcmd1bWVudC4KKyAgICAgICAgVXNlIExldHRlckNhc2UgZW51
bSBpbnN0ZWFkIG9mIGJvb2wgZm9yIHRoZSB1cHBlcmNhc2UgdnMuIGxvd2VyY2FzZSBhcmd1bWVu
dCwgdG8KKyAgICAgICAgYmUgbGVzcyBteXN0ZXJpb3VzIGF0IGNhbGwgc2l0ZXMuIFVzZSB1bnNp
Z25lZCBmb3Igc3RyaW5nIGxlbmd0aHMgc2luY2UgdGhhdCdzCisgICAgICAgIHdoYXQgV1RGOjpT
dHJpbmcgdXNlcy4KKyAgICAgICAgKFdlYkNvcmU6OnRvQWxwaGFiZXRpY09yTnVtZXJpYyk6IERp
dHRvLiBBbHNvIHVwZGF0ZWQgc2luY2UgU2VxdWVuY2VUeXBlIGlzIG5vdworICAgICAgICBhbiBl
bnVtIGNsYXNzLgorICAgICAgICAoV2ViQ29yZTo6dG9TeW1ib2xpYyk6IFVzZSBTdHJpbmc6OmNy
ZWF0ZVVuaW5pdGlhbGl6ZWQgaW5zdGVhZCBvZiBTdHJpbmdCdWlsZGVyLgorICAgICAgICBSZXR1
cm4gYSBTdHJpbmcgaW5zdGVhZCBvZiB0YWtpbmcgYSBTdHJpbmdCdWlsZGVyIGFyZ3VtZW50LiBT
dHJhaWdodGVuIG91dCB0aGUKKyAgICAgICAgYWxnb3JpdGhtIHNvIGl0J3MgZWFzaWVyIHRvIHVu
ZGVyc3RhbmQuCisgICAgICAgIChXZWJDb3JlOjp0b0FscGhhYmV0aWMpOiBVcGRhdGVkIHNpbmNl
IFNlcXVlbmNlVHlwZSBpcyBub3cgYW4gZW51bSBjbGFzcy4KKyAgICAgICAgKFdlYkNvcmU6OnRv
TnVtZXJpYyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6dG9IZWJyZXcpOiBSZXR1cm4gYSBT
dHJpbmcgaW5zdGVhZCBvZiB0YWtpbmcgYSBTdHJpbmdCdWlsZGVyIGFyZ3VtZW50LgorICAgICAg
ICBVc2UgdW5zaWduZWQgZm9yIHN0cmluZyBsZW5ndGhzIHNpbmNlIHRoYXQncyB3aGF0IFdURjo6
U3RyaW5nIHVzZXMuCisgICAgICAgIChXZWJDb3JlOjp0b0FybWVuaWFuVW5kZXIxMDAwMCk6IFVz
ZSB1bnNpZ25lZCBhbmQgdGhlIExldHRlckNhc2UgZW51bSBjbGFzcy4KKyAgICAgICAgKFdlYkNv
cmU6OnRvQXJtZW5pYW4pOiBSZXR1cm4gYSBTdHJpbmcgaW5zdGVhZCBvZiB0YWtpbmcgYSBTdHJp
bmdCdWlsZGVyIGFyZ3VtZW50LgorICAgICAgICBBbHNvIHVzZSB1bnNpZ25lZCBmb3Igc3RyaW5n
IGxlbmd0aHMgc2luY2UgdGhhdCdzIHdoYXQgV1RGOjpTdHJpbmcgdXNlcy4KKyAgICAgICAgKFdl
YkNvcmU6OnRvR2VvcmdpYW4pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnRvQ0pLSWRlb2dy
YXBoaWMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Omxpc3RNYXJrZXJTdWZmaXgpOiBUd2Vh
a2VkIGEgY29tbWVudC4KKyAgICAgICAgKFdlYkNvcmU6Omxpc3RNYXJrZXJUZXh0KTogVXNlIFN0
cmluZyByZXR1cm4gdmFsdWVzIGluc3RlYWQgb2YgU3RyaW5nQnVpbGRlci4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxpc3RNYXJrZXI6OnBhaW50KTogVXNlIFN0cmluZzo6Y3JlYXRlVW5pbml0
aWFsaXplZCBpbnN0ZWFkIG9mCisgICAgICAgIFN0cmluZ0J1aWxkZXIgc2luY2UgaXQncyBhIGJp
dCBtb3JlIGVmZmljaWVudC4gVXNlIG1ha2VTdHJpbmcgaW5zdGVhZCBvZiB0dXJuaW5nCisgICAg
ICAgIHNpbmdsZSBjaGFyYWN0ZXJzIGludG8gc3RyaW5ncyBzaW5jZSB0aGF0J3MgbW9yZSBlZmZp
Y2llbnQuCisKKyAgICAgICAgKiBzdmcvU1ZHUGF0aFV0aWxpdGllcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpidWlsZFN0cmluZ0Zyb21QYXRoKTogVXNlIGFwcGVuZE51bWJlciBpbnN0ZWFkIG9m
IGFwcGVuZFNob3J0ZXN0Rm9ybU51bWJlcgorICAgICAgICBzaW5jZSB0aGF0IGlzIG5vdyB0aGUg
ZGVmYXVsdC4KKwogMjAxOS0wNi0wMSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxl
LmNvbT4KIAogICAgICAgICBbQXN5bmMgb3ZlcmZsb3cgc2Nyb2xsXSBGbGFzaGluZyBjb250ZW50
IHdoZW4gc2Nyb2xsaW5nIGFzeW5jIG92ZXJmbG93IHdpdGggYSBuZWdhdGl2ZSB6LWluZGV4IGNo
aWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IDBhZTJhMzFlODZlNGQwNWFhZmJlMTVlZGIzZTZhNTIyZTBlZDNiNmMu
LmU5ZDVjMzJlYjU5MzljMGQ1NWViODUwZjQ1M2E0ZDMyNTUyNDlhNjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTggQEAKKzIwMTktMDYtMDIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgor
CisgICAgICAgIEZpbmlzaCBjbGVhbnVwIG9mIFN0cmluZzo6bnVtYmVyIGZvciBmbG9hdGluZyBw
b2ludAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4
NDcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0
cnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpzdWJtaXRUb3BMaXN0KTogVXNlIG1ha2VTdHJpbmcg
aW5zdGVhZCBvZiBTdHJpbmdCdWlsZGVyIHNpbmNlIGl0CisgICAgICAgIGlzIG1vcmUgdGVyc2Ug
YW5kIHBvc3NpYmx5IG1vcmUgZWZmaWNpZW50IGFzIHdlbGwuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9BUElVc2VyU2NyaXB0LmNwcDoKKyAgICAgICAgKEFQSTo6VXNlclNjcmlwdDo6Z2VuZXJh
dGVVbmlxdWVVUkwpOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVzZXJTdHls
ZVNoZWV0LmNwcDoKKyAgICAgICAgKEFQSTo6VXNlclN0eWxlU2hlZXQ6OmdlbmVyYXRlVW5pcXVl
VVJMKTogRGl0dG8uCisKIDIwMTktMDYtMDEgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29t
PgogCiAgICAgICAgIFByb3ZpZGUgYW4gYWN0aW9uIHRvIHNhdmUgYW4gaW1hZ2Ugb24gYSBsaW5r
IHNoZWV0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3Ro
UmVkdWN0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0
aFJlZHVjdGlvblBoYXNlLmNwcAppbmRleCBjN2ZkNTJhOGViOTc1NWFkMWIxYjI5OTU3ZjEzZjRi
YmUxNmM0OGMxLi5kMWNkZTEzNDEzM2VjMzAyZjk0ZjRmYWM4ZjEyYzcxYzc4MzlmZDk0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhh
c2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rp
b25QaGFzZS5jcHAKQEAgLTM1MCw3ICszNTAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
ICAgICBpZiAodmFsdWUuaXNJbnQzMigpKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IFN0cmluZzo6bnVtYmVyKHZhbHVlLmFzSW50MzIoKSk7CiAgICAgICAgICAgICAgICAgICAgIGlm
ICh2YWx1ZS5pc051bWJlcigpKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFN0cmlu
Zzo6bnVtYmVyVG9TdHJpbmdFQ01BU2NyaXB0KHZhbHVlLmFzTnVtYmVyKCkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyKHZhbHVlLmFzTnVtYmVyKCkpOwog
ICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUuaXNCb29sZWFuKCkpCiAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdmFsdWUuYXNCb29sZWFuKCkgPyAidHJ1ZSJfcyA6ICJmYWxzZSJf
czsKICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlLmlzTnVsbCgpKQpAQCAtNDIxLDcgKzQy
MSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUuaXNJbnQz
MigpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IFN0cmluZzo6bnVtYmVy
KHZhbHVlLmFzSW50MzIoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh2YWx1
ZS5pc051bWJlcigpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IFN0cmlu
Zzo6bnVtYmVyVG9TdHJpbmdFQ01BU2NyaXB0KHZhbHVlLmFzTnVtYmVyKCkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IFN0cmluZzo6bnVtYmVyKHZhbHVlLmFzTnVtYmVy
KCkpOwogCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5pc051bGwoKSkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRUb0xhenlKU1ZhbHVlKG1fbm9kZSwg
TGF6eUpTVmFsdWU6Om5ld1N0cmluZyhtX2dyYXBoLCByZXN1bHQpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaAppbmRleCA2N2I3ODJkZDNkYzZjYjUyYzE3OGYz
MzZkZjMzOGE3MjZkOTg2OTY5Li5kZjE3YmU1MzY2M2U3Y2I3YjcwYzQ4NzcwZjlhMDUyOWNmMzNh
N2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5h
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5oCkBAIC0x
MzAsNyArMTMwLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgCiAgICAgaW5saW5lIGNvbnN0IElk
ZW50aWZpZXImIElkZW50aWZpZXJBcmVuYTo6bWFrZU51bWVyaWNJZGVudGlmaWVyKFZNKiB2bSwg
ZG91YmxlIG51bWJlcikKICAgICB7Ci0gICAgICAgIG1faWRlbnRpZmllcnMuYXBwZW5kKElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sIFN0cmluZzo6bnVtYmVyVG9TdHJpbmdFQ01BU2NyaXB0KG51
bWJlcikpKTsKKyAgICAgICAgLy8gRklYTUU6IFdoeSBkb2Vzbid0IHRoaXMgdXNlIHRoZSBJZGVu
dGlmaWVyOjpmcm9tIG92ZXJsb2FkIHRoYXQgdGFrZXMgYSBkb3VibGU/CisgICAgICAgIC8vIFNl
ZW1zIHdlIGFyZSBtaXNzaW5nIG91dCBvbiBtdWx0aXBsZSBvcHRpbWl6YXRpb25zIGJ5IG5vdCB1
c2luZyBpdC4KKyAgICAgICAgbV9pZGVudGlmaWVycy5hcHBlbmQoSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgU3RyaW5nOjpudW1iZXIobnVtYmVyKSkpOwogICAgICAgICByZXR1cm4gbV9pZGVu
dGlmaWVycy5sYXN0KCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09OT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT05PYmplY3QuY3BwCmluZGV4IGRkMTJiZDM2YTcyMDNhMjM3MmY5MWExOTRlYzQ1NTFhN2I3
NTczNWMuLjk3YzEwNDUxYzgzMTI5N2Y2ZGYzZGZiZTU1MzIyZWQ3Y2ZiMTMxY2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCkBAIC0zNzcsNyArMzc3
LDcgQEAgU3RyaW5naWZpZXI6OlN0cmluZ2lmeVJlc3VsdCBTdHJpbmdpZmllcjo6YXBwZW5kU3Ry
aW5naWZpZWRWYWx1ZShTdHJpbmdCdWlsZGVyJgogICAgICAgICAgICAgaWYgKCFzdGQ6OmlzZmlu
aXRlKG51bWJlcikpCiAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJudWxs
Iik7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRFQ01B
U2NyaXB0TnVtYmVyKG51bWJlcik7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1i
ZXIobnVtYmVyKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gU3RyaW5naWZ5U3VjY2VlZGVk
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJl
clByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90
b3R5cGUuY3BwCmluZGV4IGFiM2FmZDAwM2JiMzZmMGMxZDZhZWQ2M2FjZGMzNTY2NDdjNzI5YzYu
LmY2OWU2OGI4ZWY1ZDFiNGNhMTMzZDU2N2ViZWZjOTk2N2ExZWYwZTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcApAQCAtMzk1LDcg
KzM5NSw3IEBAIFN0cmluZyB0b1N0cmluZ1dpdGhSYWRpeChkb3VibGUgZG91YmxlVmFsdWUsIGlu
dDMyX3QgcmFkaXgpCiAgICAgICAgIHJldHVybiB0b1N0cmluZ1dpdGhSYWRpeEludGVybmFsKGlu
dGVnZXJWYWx1ZSwgcmFkaXgpOwogCiAgICAgaWYgKHJhZGl4ID09IDEwIHx8ICFzdGQ6OmlzZmlu
aXRlKGRvdWJsZVZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyVG9TdHJpbmdF
Q01BU2NyaXB0KGRvdWJsZVZhbHVlKTsKKyAgICAgICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyKGRv
dWJsZVZhbHVlKTsKIAogICAgIFJhZGl4QnVmZmVyIGJ1ZmZlcjsKICAgICByZXR1cm4gdG9TdHJp
bmdXaXRoUmFkaXhJbnRlcm5hbChidWZmZXIsIGRvdWJsZVZhbHVlLCByYWRpeCk7CkBAIC00MjIs
NyArNDIyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNU
b0V4cG9uZW50aWFsKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIC8vIEhhbmRsZSBOYU4gYW5kIElu
ZmluaXR5LgogICAgIGlmICghc3RkOjppc2Zpbml0ZSh4KSkKLSAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywgU3RyaW5nOjpudW1iZXJUb1N0cmlu
Z0VDTUFTY3JpcHQoeCkpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRy
aXZpYWxTdHJpbmcoZXhlYywgU3RyaW5nOjpudW1iZXIoeCkpKTsKIAogICAgIGlmICghaW5SYW5n
ZSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBzY29wZSwgY3JlYXRlUmFuZ2VF
cnJvcihleGVjLCAidG9FeHBvbmVudGlhbCgpIGFyZ3VtZW50IG11c3QgYmUgYmV0d2VlbiAwIGFu
ZCAyMCJfcykpOwpAQCAtNDYzLDcgKzQ2Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgbnVtYmVyUHJvdG9GdW5jVG9GaXhlZChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgLy8gVGhpcyBh
bHNvIGNvdmVycyBJbmluaXR5LCBhbmQgc3RydWN0dXJlIHRoZSBjaGVjayBzbyB0aGF0IE5hTgog
ICAgIC8vIHZhbHVlcyBhcmUgYWxzbyBoYW5kbGVkIGJ5IG51bWJlclRvU3RyaW5nCiAgICAgaWYg
KCEoZmFicyh4KSA8IDFlKzIxKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0
cmluZyhleGVjLCBTdHJpbmc6Om51bWJlclRvU3RyaW5nRUNNQVNjcmlwdCh4KSkpOworICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIFN0cmluZzo6bnVtYmVyKHgp
KSk7CiAKICAgICAvLyBUaGUgY2hlY2sgYWJvdmUgd2lsbCByZXR1cm4gZmFsc2UgZm9yIE5hTiBv
ciBJbmZpbml0eSwgdGhlc2Ugd2lsbCBiZQogICAgIC8vIGhhbmRsZWQgYnkgbnVtYmVyVG9TdHJp
bmcuCkBAIC00OTYsMTEgKzQ5NiwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51
bWJlclByb3RvRnVuY1RvUHJlY2lzaW9uKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIC8vIFRvIHBy
ZWNpc2lvbiBjYWxsZWQgd2l0aCBubyBhcmd1bWVudCBpcyB0cmVhdGVkIGFzIFRvU3RyaW5nLgog
ICAgIGlmIChpc1VuZGVmaW5lZCkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0
cmluZyhleGVjLCBTdHJpbmc6Om51bWJlclRvU3RyaW5nRUNNQVNjcmlwdCh4KSkpOworICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIFN0cmluZzo6bnVtYmVyKHgp
KSk7CiAKICAgICAvLyBIYW5kbGUgTmFOIGFuZCBJbmZpbml0eS4KICAgICBpZiAoIXN0ZDo6aXNm
aW5pdGUoeCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFsU3Ry
aW5nKGV4ZWMsIFN0cmluZzo6bnVtYmVyVG9TdHJpbmdFQ01BU2NyaXB0KHgpKSk7CisgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFsU3RyaW5nKGV4ZWMsIFN0cmluZzo6
bnVtYmVyKHgpKSk7CiAKICAgICBpZiAoIWluUmFuZ2UpCiAgICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3IoZXhlYywgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgInRvUHJlY2lzaW9uKCkg
YXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDIxIl9zKSk7CkBAIC01MzcsNyArNTM3LDcg
QEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNTdHJpbmcqIG51bWJlclRvU3RyaW5nSW50ZXJuYWwo
Vk0mIHZtLCBkb3VibGUgZG91YmxlVmFsdWUKICAgICAgICAgcmV0dXJuIGpzU3RyaW5nKCZ2bSwg
dm0ubnVtZXJpY1N0cmluZ3MuYWRkKGRvdWJsZVZhbHVlKSk7CiAKICAgICBpZiAoIXN0ZDo6aXNm
aW5pdGUoZG91YmxlVmFsdWUpKQotICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKCZ2
bSwgU3RyaW5nOjpudW1iZXJUb1N0cmluZ0VDTUFTY3JpcHQoZG91YmxlVmFsdWUpKTsKKyAgICAg
ICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZygmdm0sIFN0cmluZzo6bnVtYmVyKGRvdWJsZVZh
bHVlKSk7CiAKICAgICBSYWRpeEJ1ZmZlciBidWZmZXI7CiAgICAgcmV0dXJuIGpzU3RyaW5nKCZ2
bSwgdG9TdHJpbmdXaXRoUmFkaXhJbnRlcm5hbChidWZmZXIsIGRvdWJsZVZhbHVlLCByYWRpeCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtZXJpY1N0cmlu
Z3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWVyaWNTdHJpbmdzLmgKaW5k
ZXggODZjNWMzODIzZjljOGMwMGU3ZWVkMDAyZjY0MjMzMzkwZWM5MDNjOC4uY2E5M2Y0N2I3OTcy
Y2VlYjUxZmI4ZDFmZmNkZjY5MjFlMjMwNWI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTnVtZXJpY1N0cmluZ3MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OdW1lcmljU3RyaW5ncy5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgaWYgKGQgPT0gZW50cnkua2V5ICYmICFlbnRyeS52YWx1ZS5pc051bGwoKSkKICAgICAg
ICAgICAgIHJldHVybiBlbnRyeS52YWx1ZTsKICAgICAgICAgZW50cnkua2V5ID0gZDsKLSAgICAg
ICAgZW50cnkudmFsdWUgPSBTdHJpbmc6Om51bWJlclRvU3RyaW5nRUNNQVNjcmlwdChkKTsKKyAg
ICAgICAgZW50cnkudmFsdWUgPSBTdHJpbmc6Om51bWJlcihkKTsKICAgICAgICAgcmV0dXJuIGVu
dHJ5LnZhbHVlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUJCUVBsYW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJCUVBs
YW4uY3BwCmluZGV4IGZlMDlkMzMwMGU0ZDM0NTIzZTQ0NWMwYTkxZTk4MDQ0YjgwNmZlMDcuLjBi
MzhmOWQ1OTZiZmMwN2JjYjY3MmJjMmExN2I3MWFhZGMxYzQ5YWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NSw3ICs0NSw3IEBACiAjaW5jbHVk
ZSA8d3RmL01vbm90b25pY1RpbWUuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAj
aW5jbHVkZSA8d3RmL1N5c3RlbVRyYWNpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdC
dWlsZGVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+
CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CiAKQEAgLTE1MSwxMSArMTUxLDcg
QEAgdm9pZCBCQlFQbGFuOjpwcmVwYXJlKCkKIAogICAgIGF1dG8gdHJ5UmVzZXJ2ZUNhcGFjaXR5
ID0gW3RoaXNdIChhdXRvJiB2ZWN0b3IsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyKiB3aGF0KSB7
CiAgICAgICAgIGlmIChVTkxJS0VMWSghdmVjdG9yLnRyeVJlc2VydmVDYXBhY2l0eShzaXplKSkp
IHsKLSAgICAgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgiRmFpbGVkIGFsbG9jYXRpbmcgZW5vdWdoIHNwYWNlIGZvciAiKTsK
LSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKHNpemUpOwotICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmQod2hhdCk7Ci0gICAgICAgICAgICBmYWlsKGhvbGRMb2NrKG1fbG9jayksIGJ1
aWxkZXIudG9TdHJpbmcoKSk7CisgICAgICAgICAgICBmYWlsKGhvbGRMb2NrKG1fbG9jayksIFdU
Rjo6bWFrZVN0cmluZygiRmFpbGVkIGFsbG9jYXRpbmcgZW5vdWdoIHNwYWNlIGZvciAiLCBzaXpl
LCB3aGF0KSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAg
cmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9KU09OVmFsdWVzLmNwcCBi
L1NvdXJjZS9XVEYvd3RmL0pTT05WYWx1ZXMuY3BwCmluZGV4IDgyOWFjY2E5OTdjY2RlZDAzZDYx
NDllMjRmOWM2Y2VjMzU3ZWFlZjkuLjg2ODFhODhlNDg2MjA3MGY1ZGIzNGYyMDJkMGRlYTgyMDU2
N2NhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0pTT05WYWx1ZXMuY3BwCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL0pTT05WYWx1ZXMuY3BwCkBAIC02ODAsNyArNjgwLDcgQEAgdm9pZCBWYWx1
ZTo6d3JpdGVKU09OKFN0cmluZ0J1aWxkZXImIG91dHB1dCkgY29uc3QKICAgICAgICAgaWYgKCFz
dGQ6OmlzZmluaXRlKG1fdmFsdWUubnVtYmVyKSkKICAgICAgICAgICAgIG91dHB1dC5hcHBlbmRM
aXRlcmFsKCJudWxsIik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG91dHB1dC5hcHBlbmRF
Q01BU2NyaXB0TnVtYmVyKG1fdmFsdWUubnVtYmVyKTsKKyAgICAgICAgICAgIG91dHB1dC5hcHBl
bmROdW1iZXIobV92YWx1ZS5udW1iZXIpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgZGVm
YXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5jcHAg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuY3BwCmluZGV4IGUzZDM1NDIyODdh
NDJlOTRjOWEzYzc3YWNmNmZmNTUxYzY2NDQ2MzcuLmRhMWQ0YTRjMWRjOWM5NDZkMzMxNGUwZTZk
ZTFlODEzZDEwMzEzNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVp
bGRlci5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmNwcApAQCAt
NDE1LDEzICs0MTUsMTMgQEAgdm9pZCBTdHJpbmdCdWlsZGVyOjphcHBlbmRGaXhlZFByZWNpc2lv
bk51bWJlcihkb3VibGUgbnVtYmVyLCB1bnNpZ25lZCBwcmVjaXNpb24KICAgICBhcHBlbmQobnVt
YmVyVG9GaXhlZFByZWNpc2lvblN0cmluZyhudW1iZXIsIHByZWNpc2lvbiwgYnVmZmVyLCBwb2xp
Y3kgPT0gVHJ1bmNhdGVUcmFpbGluZ1plcm9zKSk7CiB9CiAKLXZvaWQgU3RyaW5nQnVpbGRlcjo6
YXBwZW5kU2hvcnRlc3RGb3JtTnVtYmVyKGZsb2F0IG51bWJlcikKK3ZvaWQgU3RyaW5nQnVpbGRl
cjo6YXBwZW5kTnVtYmVyKGZsb2F0IG51bWJlcikKIHsKICAgICBOdW1iZXJUb1N0cmluZ0J1ZmZl
ciBidWZmZXI7CiAgICAgYXBwZW5kKG51bWJlclRvU3RyaW5nKG51bWJlciwgYnVmZmVyKSk7CiB9
CiAKLXZvaWQgU3RyaW5nQnVpbGRlcjo6YXBwZW5kU2hvcnRlc3RGb3JtTnVtYmVyKGRvdWJsZSBu
dW1iZXIpCit2b2lkIFN0cmluZ0J1aWxkZXI6OmFwcGVuZE51bWJlcihkb3VibGUgbnVtYmVyKQog
ewogICAgIE51bWJlclRvU3RyaW5nQnVmZmVyIGJ1ZmZlcjsKICAgICBhcHBlbmQobnVtYmVyVG9T
dHJpbmcobnVtYmVyLCBidWZmZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgKaW5k
ZXggZWJhZjczZTZlZjc5MGM4MjY5YWI5YTAxMmQ0MjU0ODhjNTdiMWUxMS4uZmU0YzUzMjBjZWIz
ZjFkMjhhMDRmNTkyODM5OTZiOTJiYmMxZTUxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
dGV4dC9TdHJpbmdCdWlsZGVyLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWls
ZGVyLmgKQEAgLTIyMiwyMSArMjIyLDE0IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgdm9pZCBhcHBlbmROdW1iZXIodW5zaWduZWQgbG9uZyk7CiAgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHZvaWQgYXBwZW5kTnVtYmVyKGxvbmcgbG9uZyk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHZvaWQgYXBwZW5kTnVtYmVyKHVuc2lnbmVkIGxvbmcgbG9uZyk7Ci0gICAgLy8gRklYTUU6IENo
YW5nZSB0byBjYWxsIGFwcGVuZFNob3J0ZXN0Rm9ybU51bWJlci4KLSAgICB2b2lkIGFwcGVuZE51
bWJlcihmbG9hdCkgPSBkZWxldGU7Ci0gICAgdm9pZCBhcHBlbmROdW1iZXIoZG91YmxlKSA9IGRl
bGV0ZTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmROdW1iZXIoZmxvYXQpOwor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGFwcGVuZE51bWJlcihkb3VibGUpOwogCi0gICAg
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYXBwZW5kU2hvcnRlc3RGb3JtTnVtYmVyKGZsb2F0KTsK
LSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmRTaG9ydGVzdEZvcm1OdW1iZXIoZG91
YmxlKTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmRGaXhlZFByZWNpc2lvbk51
bWJlcihmbG9hdCwgdW5zaWduZWQgcHJlY2lzaW9uID0gNiwgVHJhaWxpbmdaZXJvc1RydW5jYXRp
bmdQb2xpY3kgPSBUcnVuY2F0ZVRyYWlsaW5nWmVyb3MpOwogICAgIFdURl9FWFBPUlRfUFJJVkFU
RSB2b2lkIGFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKGRvdWJsZSwgdW5zaWduZWQgcHJlY2lz
aW9uID0gNiwgVHJhaWxpbmdaZXJvc1RydW5jYXRpbmdQb2xpY3kgPSBUcnVuY2F0ZVRyYWlsaW5n
WmVyb3MpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGFwcGVuZEZpeGVkV2lkdGhOdW1i
ZXIoZmxvYXQsIHVuc2lnbmVkIGRlY2ltYWxQbGFjZXMpOwogICAgIFdURl9FWFBPUlRfUFJJVkFU
RSB2b2lkIGFwcGVuZEZpeGVkV2lkdGhOdW1iZXIoZG91YmxlLCB1bnNpZ25lZCBkZWNpbWFsUGxh
Y2VzKTsKIAotICAgIC8vIEZJWE1FOiBEZWxldGUgaW4gZmF2b3Igb2YgdGhlIG5hbWUgYXBwZW5k
U2hvcnRlc3RGb3JtTnVtYmVyIG9yIGp1c3QgYXBwZW5kTnVtYmVyLgotICAgIHZvaWQgYXBwZW5k
RUNNQVNjcmlwdE51bWJlcihmbG9hdCkgPSBkZWxldGU7Ci0gICAgdm9pZCBhcHBlbmRFQ01BU2Ny
aXB0TnVtYmVyKGRvdWJsZSk7Ci0KICAgICBTdHJpbmcgdG9TdHJpbmcoKQogICAgIHsKICAgICAg
ICAgaWYgKCFtX3N0cmluZy5pc051bGwoKSkgewpAQCAtMzk0LDExICszODcsNiBAQCBBTFdBWVNf
SU5MSU5FIFVDaGFyKiBTdHJpbmdCdWlsZGVyOjpnZXRCdWZmZXJDaGFyYWN0ZXJzPFVDaGFyPigp
CiAgICAgcmV0dXJuIG1fYnVmZmVyQ2hhcmFjdGVyczE2OwogfQogCi1pbmxpbmUgdm9pZCBTdHJp
bmdCdWlsZGVyOjphcHBlbmRFQ01BU2NyaXB0TnVtYmVyKGRvdWJsZSBudW1iZXIpCi17Ci0gICAg
YXBwZW5kU2hvcnRlc3RGb3JtTnVtYmVyKG51bWJlcik7Ci19Ci0KIHRlbXBsYXRlIDx0eXBlbmFt
ZSBDaGFyVHlwZT4KIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nQnVpbGRlciYgcywgY29uc3QgQ2hh
clR5cGUqIGJ1ZmZlciwgdW5zaWduZWQgbGVuZ3RoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcu
Y3BwCmluZGV4IGY1YWNiYTgzNzRjYmEyMzZmODZlZWM1ZTdiNzQwMGI2YmI2YmIzNjAuLmU1YzE4
ZmU0YzM2ZjU5ZDk3MjAzZDkyNzBmNmYyYTIwOGIxZTI3NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0
cmluZy5jcHAKQEAgLTQ5MSwxMyArNDkxLDEzIEBAIFN0cmluZyBTdHJpbmc6Om51bWJlclRvU3Ry
aW5nRml4ZWRQcmVjaXNpb24oZG91YmxlIG51bWJlciwgdW5zaWduZWQgcHJlY2lzaW9uLCBUCiAg
ICAgcmV0dXJuIG51bWJlclRvRml4ZWRQcmVjaXNpb25TdHJpbmcobnVtYmVyLCBwcmVjaXNpb24s
IGJ1ZmZlciwgdHJhaWxpbmdaZXJvc1RydW5jYXRpbmdQb2xpY3kgPT0gVHJ1bmNhdGVUcmFpbGlu
Z1plcm9zKTsKIH0KIAotU3RyaW5nIFN0cmluZzo6bnVtYmVyVG9TdHJpbmdTaG9ydGVzdChmbG9h
dCBudW1iZXIpCitTdHJpbmcgU3RyaW5nOjpudW1iZXIoZmxvYXQgbnVtYmVyKQogewogICAgIE51
bWJlclRvU3RyaW5nQnVmZmVyIGJ1ZmZlcjsKICAgICByZXR1cm4gbnVtYmVyVG9TdHJpbmcobnVt
YmVyLCBidWZmZXIpOwogfQogCi1TdHJpbmcgU3RyaW5nOjpudW1iZXJUb1N0cmluZ1Nob3J0ZXN0
KGRvdWJsZSBudW1iZXIpCitTdHJpbmcgU3RyaW5nOjpudW1iZXIoZG91YmxlIG51bWJlcikKIHsK
ICAgICBOdW1iZXJUb1N0cmluZ0J1ZmZlciBidWZmZXI7CiAgICAgcmV0dXJuIG51bWJlclRvU3Ry
aW5nKG51bWJlciwgYnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RG
U3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IDAwN2FjNTcy
ZDZiZTA3YjFmZDg1YjlkZGMzNTNhNTlmZTdkMTc0NzIuLjlhNzUzYWRiNjEyM2RhNGM0ZjFlYjhm
YWI5OTEyZTE0NmQzN2IzNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3Ry
aW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaApAQCAtMTI0LDEyICsx
MjQsMTAgQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcoQVNDSUlMaXRl
cmFsKTsKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyBmcm9tIGEgY29uc3RhbnQgc3RyaW5n
IGxpdGVyYWwuCi0gICAgLy8gVGhpcyBjb25zdHJ1Y3RvciBpcyB0aGUgImJpZyIgdmVyc2lvbiwg
YXMgaXQgcHV0IHRoZSBsZW5ndGggaW4gdGhlIGZ1bmN0aW9uIGNhbGwgYW5kIGdlbmVyYXRlIGJp
Z2dlciBjb2RlLgorICAgIC8vIFRoaXMgaXMgdGhlICJiaWciIHZlcnNpb246IHB1dHMgdGhlIGxl
bmd0aCBpbiB0aGUgZnVuY3Rpb24gY2FsbCBhbmQgZ2VuZXJhdGVzIGJpZ2dlciBjb2RlLgogICAg
IGVudW0gQ29uc3RydWN0RnJvbUxpdGVyYWxUYWcgeyBDb25zdHJ1Y3RGcm9tTGl0ZXJhbCB9Owog
ICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50PiBTdHJpbmcoY29uc3QgY2hhciAo
JmNoYXJhY3RlcnMpW2NoYXJhY3RlckNvdW50XSwgQ29uc3RydWN0RnJvbUxpdGVyYWxUYWcpIDog
bV9pbXBsKFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsPGNoYXJhY3RlckNvdW50PihjaGFy
YWN0ZXJzKSkgeyB9CiAKLSAgICAvLyBGSVhNRTogV2h5IGRvIHdlIGhhdmUgdG8gZGVmaW5lIHRo
ZXNlIGV4cGxpY2l0bHkgZ2l2ZW4gdGhhdCB3ZSBqdXN0IHdhbnQgdGhlIGRlZmF1bHQgdmVyc2lv
bnM/Ci0gICAgLy8gV2UgaGF2ZSB2ZXJpZmllZCBlbXBpcmljYWxseSB0aGF0IHdlIGRvLgogICAg
IFN0cmluZyhjb25zdCBTdHJpbmcmKSA9IGRlZmF1bHQ7CiAgICAgU3RyaW5nKFN0cmluZyYmKSA9
IGRlZmF1bHQ7CiAgICAgU3RyaW5nJiBvcGVyYXRvcj0oY29uc3QgU3RyaW5nJikgPSBkZWZhdWx0
OwpAQCAtMTc5LDIxICsxNzcsMTQgQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBz
dGF0aWMgU3RyaW5nIG51bWJlcih1bnNpZ25lZCBsb25nKTsKICAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIFN0cmluZyBudW1iZXIobG9uZyBsb25nKTsKICAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIFN0cmluZyBudW1iZXIodW5zaWduZWQgbG9uZyBsb25nKTsKLSAgICAvLyBGSVhN
RTogQ2hhbmdlIHRvIGNhbGwgbnVtYmVyVG9TdHJpbmdTaG9ydGVzdC4KLSAgICBzdGF0aWMgU3Ry
aW5nIG51bWJlcihmbG9hdCkgPSBkZWxldGU7Ci0gICAgc3RhdGljIFN0cmluZyBudW1iZXIoZG91
YmxlKSA9IGRlbGV0ZTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZyBudW1i
ZXIoZmxvYXQpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nIG51bWJlcihk
b3VibGUpOwogCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgbnVtYmVyVG9T
dHJpbmdTaG9ydGVzdChmbG9hdCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJp
bmcgbnVtYmVyVG9TdHJpbmdTaG9ydGVzdChkb3VibGUpOwogICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgU3RyaW5nIG51bWJlclRvU3RyaW5nRml4ZWRQcmVjaXNpb24oZmxvYXQsIHVuc2ln
bmVkIHByZWNpc2lvbiA9IDYsIFRyYWlsaW5nWmVyb3NUcnVuY2F0aW5nUG9saWN5ID0gVHJ1bmNh
dGVUcmFpbGluZ1plcm9zKTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZyBu
dW1iZXJUb1N0cmluZ0ZpeGVkUHJlY2lzaW9uKGRvdWJsZSwgdW5zaWduZWQgcHJlY2lzaW9uID0g
NiwgVHJhaWxpbmdaZXJvc1RydW5jYXRpbmdQb2xpY3kgPSBUcnVuY2F0ZVRyYWlsaW5nWmVyb3Mp
OwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nIG51bWJlclRvU3RyaW5nRml4
ZWRXaWR0aChmbG9hdCwgdW5zaWduZWQgZGVjaW1hbFBsYWNlcyk7CiAgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBTdHJpbmcgbnVtYmVyVG9TdHJpbmdGaXhlZFdpZHRoKGRvdWJsZSwgdW5z
aWduZWQgZGVjaW1hbFBsYWNlcyk7CiAKLSAgICAvLyBGSVhNRTogRGVsZXRlIGluIGZhdm9yIG9m
IHRoZSBuYW1lIG51bWJlclRvU3RyaW5nU2hvcnRlc3Qgb3IganVzdCBudW1iZXIuCi0gICAgc3Rh
dGljIFN0cmluZyBudW1iZXJUb1N0cmluZ0VDTUFTY3JpcHQoZmxvYXQpID0gZGVsZXRlOwotICAg
IHN0YXRpYyBTdHJpbmcgbnVtYmVyVG9TdHJpbmdFQ01BU2NyaXB0KGRvdWJsZSk7Ci0KICAgICAv
LyBGaW5kIGEgc2luZ2xlIGNoYXJhY3RlciBvciBzdHJpbmcsIGFsc28gd2l0aCBtYXRjaCBmdW5j
dGlvbiAmIGxhdGluMSBmb3Jtcy4KICAgICBzaXplX3QgZmluZChVQ2hhciBjaGFyYWN0ZXIsIHVu
c2lnbmVkIHN0YXJ0ID0gMCkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kKGNo
YXJhY3Rlciwgc3RhcnQpIDogbm90Rm91bmQ7IH0KIApAQCAtNjU0LDExICs2NDUsNiBAQCB0ZW1w
bGF0ZTx1bnNpZ25lZCBsZW5ndGg+IGlubGluZSBib29sIHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2UoY29uc3QgUwogICAgIHJldHVybiBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKHN0cmluZy5pbXBsKCksIGxvd2VyY2FzZUxldHRlcnMpOwogfQogCi1pbmxpbmUg
U3RyaW5nIFN0cmluZzo6bnVtYmVyVG9TdHJpbmdFQ01BU2NyaXB0KGRvdWJsZSBudW1iZXIpCi17
Ci0gICAgcmV0dXJuIG51bWJlclRvU3RyaW5nU2hvcnRlc3QobnVtYmVyKTsKLX0KLQogaW5saW5l
IG5hbWVzcGFjZSBTdHJpbmdMaXRlcmFscyB7CiAKIGlubGluZSBTdHJpbmcgb3BlcmF0b3IiIiBf
c3RyKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHNpemVfdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NDdXJzb3JJbWFnZVZhbHVlLmNwcAppbmRleCAzM2E1MjllODEyNjYwNzMxMzU2OTNlMGQ3NDdk
NWQxMmU5ZGUxNjAyLi5mMTU3YWFmZDRjZWQ4MWU0MzE3MzY4OWQxN2Q4ODMxY2ExNjFhMTcxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuY3BwCkBAIC0xLDcgKzEs
NyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgog
ICogICAgICAgICAgIChDKSAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUu
b3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNTQsMTUgKzU0LDEwIEBAIENTU0N1cnNvcklt
YWdlVmFsdWU6On5DU1NDdXJzb3JJbWFnZVZhbHVlKCkKIAogU3RyaW5nIENTU0N1cnNvckltYWdl
VmFsdWU6OmN1c3RvbUNTU1RleHQoKSBjb25zdAogewotICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0
OwotICAgIHJlc3VsdC5hcHBlbmQobV9pbWFnZVZhbHVlLmdldCgpLmNzc1RleHQoKSk7Ci0gICAg
aWYgKG1faGFzSG90U3BvdCkgewotICAgICAgICByZXN1bHQuYXBwZW5kKCcgJyk7Ci0gICAgICAg
IHJlc3VsdC5hcHBlbmROdW1iZXIobV9ob3RTcG90LngoKSk7Ci0gICAgICAgIHJlc3VsdC5hcHBl
bmQoJyAnKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZE51bWJlcihtX2hvdFNwb3QueSgpKTsKLSAg
ICB9Ci0gICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworICAgIFN0cmluZyB0ZXh0ID0gbV9p
bWFnZVZhbHVlLmdldCgpLmNzc1RleHQoKTsKKyAgICBpZiAoIW1faGFzSG90U3BvdCkKKyAgICAg
ICAgcmV0dXJuIHRleHQ7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcodGV4dCwgJyAnLCBtX2hvdFNw
b3QueCgpLCAnICcsIG1faG90U3BvdC55KCkpOwogfQogCiAvLyBGSVhNRTogU2hvdWxkIHRoaXMg
ZnVuY3Rpb24gdGFrZSBhIFRyZWVTY29wZSBpbnN0ZWFkPwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0RPTU1hdHJpeFJlYWRPbmx5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01N
YXRyaXhSZWFkT25seS5jcHAKaW5kZXggNjU2NjQxYjdlMTljNWIzMzI3MTk2ZWY3NWFhN2EwZjM4
NjFlOTY5ZS4uNWQ4OTU1ZGExMWZhYzkyZTMwYWU4YmE1MDIzNjkwOWZjYjExZmRmNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJpeFJlYWRPbmx5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4UmVhZE9ubHkuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQwNCw1NiArNDA0LDEwIEBAIEV4
Y2VwdGlvbk9yPFN0cmluZz4gRE9NTWF0cml4UmVhZE9ubHk6OnRvU3RyaW5nKCkgY29uc3QKICAg
ICBpZiAoIW1fbWF0cml4LmNvbnRhaW5zT25seUZpbml0ZVZhbHVlcygpKQogICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJNYXRyaXggY29udGFpbnMgbm9uLWZp
bml0ZSB2YWx1ZXMiX3MgfTsKIAotICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBpZiAo
aXMyRCgpKSB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgibWF0cml4KCIpOwotICAg
ICAgICBidWlsZGVyLmFwcGVuZEVDTUFTY3JpcHROdW1iZXIobV9tYXRyaXguYSgpKTsKLSAgICAg
ICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsICIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZEVD
TUFTY3JpcHROdW1iZXIobV9tYXRyaXguYigpKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRl
cmFsKCIsICIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZEVDTUFTY3JpcHROdW1iZXIobV9tYXRy
aXguYygpKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsICIpOwotICAgICAgICBi
dWlsZGVyLmFwcGVuZEVDTUFTY3JpcHROdW1iZXIobV9tYXRyaXguZCgpKTsKLSAgICAgICAgYnVp
bGRlci5hcHBlbmRMaXRlcmFsKCIsICIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZEVDTUFTY3Jp
cHROdW1iZXIobV9tYXRyaXguZSgpKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIs
ICIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZEVDTUFTY3JpcHROdW1iZXIobV9tYXRyaXguZigp
KTsKLSAgICB9IGVsc2UgewotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIm1hdHJpeDNk
KCIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZEVDTUFTY3JpcHROdW1iZXIobV9tYXRyaXgubTEx
KCkpOwotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7Ci0gICAgICAgIGJ1aWxk
ZXIuYXBwZW5kRUNNQVNjcmlwdE51bWJlcihtX21hdHJpeC5tMTIoKSk7Ci0gICAgICAgIGJ1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRFQ01BU2NyaXB0
TnVtYmVyKG1fbWF0cml4Lm0xMygpKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIs
ICIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZEVDTUFTY3JpcHROdW1iZXIobV9tYXRyaXgubTE0
KCkpOwotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7Ci0gICAgICAgIGJ1aWxk
ZXIuYXBwZW5kRUNNQVNjcmlwdE51bWJlcihtX21hdHJpeC5tMjEoKSk7Ci0gICAgICAgIGJ1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRFQ01BU2NyaXB0
TnVtYmVyKG1fbWF0cml4Lm0yMigpKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIs
ICIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZEVDTUFTY3JpcHROdW1iZXIobV9tYXRyaXgubTIz
KCkpOwotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7Ci0gICAgICAgIGJ1aWxk
ZXIuYXBwZW5kRUNNQVNjcmlwdE51bWJlcihtX21hdHJpeC5tMjQoKSk7Ci0gICAgICAgIGJ1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRFQ01BU2NyaXB0
TnVtYmVyKG1fbWF0cml4Lm0zMSgpKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIs
ICIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZEVDTUFTY3JpcHROdW1iZXIobV9tYXRyaXgubTMy
KCkpOwotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7Ci0gICAgICAgIGJ1aWxk
ZXIuYXBwZW5kRUNNQVNjcmlwdE51bWJlcihtX21hdHJpeC5tMzMoKSk7Ci0gICAgICAgIGJ1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRFQ01BU2NyaXB0
TnVtYmVyKG1fbWF0cml4Lm0zNCgpKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIs
ICIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZEVDTUFTY3JpcHROdW1iZXIobV9tYXRyaXgubTQx
KCkpOwotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7Ci0gICAgICAgIGJ1aWxk
ZXIuYXBwZW5kRUNNQVNjcmlwdE51bWJlcihtX21hdHJpeC5tNDIoKSk7Ci0gICAgICAgIGJ1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRFQ01BU2NyaXB0
TnVtYmVyKG1fbWF0cml4Lm00MygpKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIs
ICIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZEVDTUFTY3JpcHROdW1iZXIobV9tYXRyaXgubTQ0
KCkpOwotICAgIH0KLSAgICBidWlsZGVyLmFwcGVuZCgnKScpOwotICAgIHJldHVybiBidWlsZGVy
LnRvU3RyaW5nKCk7CisgICAgaWYgKGlzMkQoKSkKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmco
Im1hdHJpeCgiLCBtX21hdHJpeC5hKCksICIsICIsIG1fbWF0cml4LmIoKSwgIiwgIiwgbV9tYXRy
aXguYygpLCAiLCAiLCBtX21hdHJpeC5kKCksICIsICIsIG1fbWF0cml4LmUoKSwgIiwgIiwgbV9t
YXRyaXguZigpLCAnKScpOworCisgICAgcmV0dXJuIG1ha2VTdHJpbmcoIm1hdHJpeDNkKCIsIG1f
bWF0cml4Lm0xMSgpLCAiLCAiLCBtX21hdHJpeC5tMTIoKSwgIiwgIiwgbV9tYXRyaXgubTEzKCks
ICIsICIsIG1fbWF0cml4Lm0xNCgpLCAiLCAiLCBtX21hdHJpeC5tMjEoKSwgIiwgIiwgbV9tYXRy
aXgubTIyKCksICIsICIsIG1fbWF0cml4Lm0yMygpLCAiLCAiLCBtX21hdHJpeC5tMjQoKSwgIiwg
IiwgbV9tYXRyaXgubTMxKCksICIsICIsIG1fbWF0cml4Lm0zMigpLCAiLCAiLCBtX21hdHJpeC5t
MzMoKSwgIiwgIiwgbV9tYXRyaXgubTM0KCksICIsICIsIG1fbWF0cml4Lm00MSgpLCAiLCAiLCBt
X21hdHJpeC5tNDIoKSwgIiwgIiwgbV9tYXRyaXgubTQzKCksICIsICIsIG1fbWF0cml4Lm00NCgp
LCAnKScpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJL
aXRDU1NNYXRyaXguY3BwCmluZGV4IDJiMzAxZTk1MTcyMzczYzU0NjJlZTBlZDA3ZTQ5MDA3MDBl
MThhZmMuLmQzZTg2MDA0YjAwMDI2MTU0YTQ5ZTRkOWE1NGZmNzc4ZmIxNzE3NjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlICJU
cmFuc2Zvcm1GdW5jdGlvbnMuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgog
I2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTIwMyw1NiArMjAzLDEwIEBAIEV4Y2VwdGlvbk9y
PFN0cmluZz4gV2ViS2l0Q1NTTWF0cml4Ojp0b1N0cmluZygpIGNvbnN0CiAgICAgaWYgKCFtX21h
dHJpeC5jb250YWluc09ubHlGaW5pdGVWYWx1ZXMoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IEludmFsaWRTdGF0ZUVycm9yLCAiTWF0cml4IGNvbnRhaW5zIG5vbi1maW5pdGUgdmFsdWVz
Il9zIH07CiAKLSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgaWYgKG1fbWF0cml4Lmlz
QWZmaW5lKCkpIHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJtYXRyaXgoIik7Ci0g
ICAgICAgIGJ1aWxkZXIuYXBwZW5kRUNNQVNjcmlwdE51bWJlcihtX21hdHJpeC5hKCkpOwotICAg
ICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5k
RUNNQVNjcmlwdE51bWJlcihtX21hdHJpeC5iKCkpOwotICAgICAgICBidWlsZGVyLmFwcGVuZExp
dGVyYWwoIiwgIik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kRUNNQVNjcmlwdE51bWJlcihtX21h
dHJpeC5jKCkpOwotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7Ci0gICAgICAg
IGJ1aWxkZXIuYXBwZW5kRUNNQVNjcmlwdE51bWJlcihtX21hdHJpeC5kKCkpOwotICAgICAgICBi
dWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kRUNNQVNj
cmlwdE51bWJlcihtX21hdHJpeC5lKCkpOwotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
IiwgIik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kRUNNQVNjcmlwdE51bWJlcihtX21hdHJpeC5m
KCkpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgibWF0cml4
M2QoIik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kRUNNQVNjcmlwdE51bWJlcihtX21hdHJpeC5t
MTEoKSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKLSAgICAgICAgYnVp
bGRlci5hcHBlbmRFQ01BU2NyaXB0TnVtYmVyKG1fbWF0cml4Lm0xMigpKTsKLSAgICAgICAgYnVp
bGRlci5hcHBlbmRMaXRlcmFsKCIsICIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZEVDTUFTY3Jp
cHROdW1iZXIobV9tYXRyaXgubTEzKCkpOwotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
IiwgIik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kRUNNQVNjcmlwdE51bWJlcihtX21hdHJpeC5t
MTQoKSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKLSAgICAgICAgYnVp
bGRlci5hcHBlbmRFQ01BU2NyaXB0TnVtYmVyKG1fbWF0cml4Lm0yMSgpKTsKLSAgICAgICAgYnVp
bGRlci5hcHBlbmRMaXRlcmFsKCIsICIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZEVDTUFTY3Jp
cHROdW1iZXIobV9tYXRyaXgubTIyKCkpOwotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
IiwgIik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kRUNNQVNjcmlwdE51bWJlcihtX21hdHJpeC5t
MjMoKSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKLSAgICAgICAgYnVp
bGRlci5hcHBlbmRFQ01BU2NyaXB0TnVtYmVyKG1fbWF0cml4Lm0yNCgpKTsKLSAgICAgICAgYnVp
bGRlci5hcHBlbmRMaXRlcmFsKCIsICIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZEVDTUFTY3Jp
cHROdW1iZXIobV9tYXRyaXgubTMxKCkpOwotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
IiwgIik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kRUNNQVNjcmlwdE51bWJlcihtX21hdHJpeC5t
MzIoKSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKLSAgICAgICAgYnVp
bGRlci5hcHBlbmRFQ01BU2NyaXB0TnVtYmVyKG1fbWF0cml4Lm0zMygpKTsKLSAgICAgICAgYnVp
bGRlci5hcHBlbmRMaXRlcmFsKCIsICIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZEVDTUFTY3Jp
cHROdW1iZXIobV9tYXRyaXgubTM0KCkpOwotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
IiwgIik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kRUNNQVNjcmlwdE51bWJlcihtX21hdHJpeC5t
NDEoKSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKLSAgICAgICAgYnVp
bGRlci5hcHBlbmRFQ01BU2NyaXB0TnVtYmVyKG1fbWF0cml4Lm00MigpKTsKLSAgICAgICAgYnVp
bGRlci5hcHBlbmRMaXRlcmFsKCIsICIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZEVDTUFTY3Jp
cHROdW1iZXIobV9tYXRyaXgubTQzKCkpOwotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
IiwgIik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kRUNNQVNjcmlwdE51bWJlcihtX21hdHJpeC5t
NDQoKSk7Ci0gICAgfQotICAgIGJ1aWxkZXIuYXBwZW5kKCcpJyk7Ci0gICAgcmV0dXJuIGJ1aWxk
ZXIudG9TdHJpbmcoKTsKKyAgICBpZiAobV9tYXRyaXguaXNBZmZpbmUoKSkKKyAgICAgICAgcmV0
dXJuIG1ha2VTdHJpbmcoIm1hdHJpeCgiLCBtX21hdHJpeC5hKCksICIsICIsIG1fbWF0cml4LmIo
KSwgIiwgIiwgbV9tYXRyaXguYygpLCAiLCAiLCBtX21hdHJpeC5kKCksICIsICIsIG1fbWF0cml4
LmUoKSwgIiwgIiwgbV9tYXRyaXguZigpLCAnKScpOworCisgICAgcmV0dXJuIG1ha2VTdHJpbmco
Im1hdHJpeDNkKCIsIG1fbWF0cml4Lm0xMSgpLCAiLCAiLCBtX21hdHJpeC5tMTIoKSwgIiwgIiwg
bV9tYXRyaXgubTEzKCksICIsICIsIG1fbWF0cml4Lm0xNCgpLCAiLCAiLCBtX21hdHJpeC5tMjEo
KSwgIiwgIiwgbV9tYXRyaXgubTIyKCksICIsICIsIG1fbWF0cml4Lm0yMygpLCAiLCAiLCBtX21h
dHJpeC5tMjQoKSwgIiwgIiwgbV9tYXRyaXgubTMxKCksICIsICIsIG1fbWF0cml4Lm0zMigpLCAi
LCAiLCBtX21hdHJpeC5tMzMoKSwgIiwgIiwgbV9tYXRyaXgubTM0KCksICIsICIsIG1fbWF0cml4
Lm00MSgpLCAiLCAiLCBtX21hdHJpeC5tNDIoKSwgIiwgIiwgbV9tYXRyaXgubTQzKCksICIsICIs
IG1fbWF0cml4Lm00NCgpLCAnKScpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwCmluZGV4IDM5
OTFlNzU0NjE1ZGQxMzBjZmJmYTU5ZGQ3NTRmZTk3NzYwMDU5MmEuLjU0NDJlMGM0YTA2N2JhNzI3
YjYyOTVmOWI5MThmMzM5OWRiMmVhY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwCkBAIC04OSw3ICs4OSw3IEBAIFN0cmluZyBzZXJpYWxp
emVGb3JOdW1iZXJUeXBlKGRvdWJsZSBudW1iZXIpCiB7CiAgICAgLy8gQWNjb3JkaW5nIHRvIEhU
TUw1LCAidGhlIGJlc3QgcmVwcmVzZW50YXRpb24gb2YgdGhlIG51bWJlciBuIGFzIGEgZmxvYXRp
bmcKICAgICAvLyBwb2ludCBudW1iZXIiIGlzIGEgc3RyaW5nIHByb2R1Y2VkIGJ5IGFwcGx5aW5n
IFRvU3RyaW5nKCkgdG8gbi4KLSAgICByZXR1cm4gU3RyaW5nOjpudW1iZXJUb1N0cmluZ0VDTUFT
Y3JpcHQobnVtYmVyKTsKKyAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIobnVtYmVyKTsKIH0KIAog
RGVjaW1hbCBwYXJzZVRvRGVjaW1hbEZvck51bWJlclR5cGUoY29uc3QgU3RyaW5nJiBzdHJpbmcs
IGNvbnN0IERlY2ltYWwmIGZhbGxiYWNrVmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudFR5cGVzLmNwcAppbmRleCBkMjg5MWE3
ZTlkNWU1ZTQ5ZmJlYWVjM2FmNTg4OWI2NjYzMmU5NzhkLi4yNmFhYTE1M2VhZTM3ZmY4NGU1YjE5
MThjYTkzODA1NmYwOGIwNDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9NZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5jcHAKQEAgLTI0Miw3ICsyNDIsNyBAQCBi
b29sIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ6OndpbGxSZXNwb25kVG9Nb3VzZUNs
aWNrRXZlbnRzKCkKIHZvaWQgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudDo6c2V0Vm9s
dW1lKGRvdWJsZSB2b2x1bWUpCiB7CiAgICAgaWYgKHZhbHVlKCkudG9Eb3VibGUoKSAhPSB2b2x1
bWUpCi0gICAgICAgIHNldFZhbHVlKFN0cmluZzo6bnVtYmVyVG9TdHJpbmdFQ01BU2NyaXB0KHZv
bHVtZSkpOworICAgICAgICBzZXRWYWx1ZShTdHJpbmc6Om51bWJlcih2b2x1bWUpKTsKIH0KIAog
dm9pZCBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50OjpzZXRDbGVhck11dGVkT25Vc2Vy
SW50ZXJhY3Rpb24oYm9vbCBjbGVhck11dGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKaW5kZXggN2ZhNGFiNmRhNGVmNzhiZWE4
MTM0ZWU4MzQwMzcwY2YwZjNhNDZmNS4uMDg5ZTEzOTM0ODM2MjgyN2JiNWVkMDQzN2I2NzIwY2U2
MWRmYzk5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sRWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29u
dHJvbEVsZW1lbnRzLmNwcApAQCAtOTA5LDcgKzkwOSw3IEBAIGJvb2wgTWVkaWFDb250cm9sVGlt
ZWxpbmVFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpCiAKIHZvaWQgTWVk
aWFDb250cm9sVGltZWxpbmVFbGVtZW50OjpzZXRQb3NpdGlvbihkb3VibGUgY3VycmVudFRpbWUp
CiB7Ci0gICAgc2V0VmFsdWUoU3RyaW5nOjpudW1iZXJUb1N0cmluZ0VDTUFTY3JpcHQoY3VycmVu
dFRpbWUpKTsKKyAgICBzZXRWYWx1ZShTdHJpbmc6Om51bWJlcihjdXJyZW50VGltZSkpOwogfQog
CiB2b2lkIE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudDo6c2V0RHVyYXRpb24oZG91YmxlIGR1
cmF0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVjaW1hbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNpbWFsLmNwcAppbmRleCBiMWFjNjU5MmVmMjgx
YTIxY2JiMzZjNmU4MGE4MjlkYmNiYWEzZmJlLi4wYjIxMTA0Zjk2NTdlZjlkMDMyODI3ZGI2MDIx
MjNhZDg3OWY0YzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNpbWFs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNpbWFsLmNwcApAQCAtNjgxLDgg
KzY4MSwxMSBAQCBEZWNpbWFsIERlY2ltYWw6OmZsb29yKCkgY29uc3QKIAogRGVjaW1hbCBEZWNp
bWFsOjpmcm9tRG91YmxlKGRvdWJsZSBkb3VibGVWYWx1ZSkKIHsKLSAgICBpZiAoc3RkOjppc2Zp
bml0ZShkb3VibGVWYWx1ZSkpCi0gICAgICAgIHJldHVybiBmcm9tU3RyaW5nKFN0cmluZzo6bnVt
YmVyVG9TdHJpbmdFQ01BU2NyaXB0KGRvdWJsZVZhbHVlKSk7CisgICAgaWYgKHN0ZDo6aXNmaW5p
dGUoZG91YmxlVmFsdWUpKSB7CisgICAgICAgIC8vIEZJWE1FOiBDaGFuZ2UgZnJvbVN0cmluZyB0
byB0YWtlIGEgU3RyaW5nVmlldyBpbnN0ZWFkIG9mIGEgU3RyaW5nIGFuZCB0aGVuCisgICAgICAg
IC8vIHVzZSBhIGZpeGVkIHNpemUgc3RhY2sgYnVmZmVyIGluc3RlYWQgb2YgYWxsb2NhdGluZyBh
bmQgZGVhbGxvY2F0aW5nIGEgc3RyaW5nLgorICAgICAgICByZXR1cm4gZnJvbVN0cmluZyhTdHJp
bmc6Om51bWJlcihkb3VibGVWYWx1ZSkpOworICAgIH0KIAogICAgIGlmIChzdGQ6OmlzaW5mKGRv
dWJsZVZhbHVlKSkKICAgICAgICAgcmV0dXJuIGluZmluaXR5KGRvdWJsZVZhbHVlIDwgMCA/IE5l
Z2F0aXZlIDogUG9zaXRpdmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxpc3RNYXJrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxp
c3RNYXJrZXIuY3BwCmluZGV4IDRmNzhmODMxMDVjOTZjYzZiZjgxZDczZWY4MjQ0NTlkNjQ0YTkz
MjYuLmNlMDE5YmFhM2JkNTVhMTZlZTI0ZmFlZTZlOTc2NjI2YmNiZWFlZDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKQEAgLTEsNyArMSw3IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAg
KiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA2IEFuZHJl
dyBXZWxsaW5ndG9uIChwcm90b25Ad2lyZXRhcHBlZC5uZXQpCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MTAgRGFuaWVsIEJhdGVzIChkYmF0ZXNAaW50dWRhdGEuY29tKQogICoKQEAgLTM0LDcgKzM0LDcg
QEAKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGlu
ZXMuaD4KICNpbmNsdWRlIDx3dGYvU3RhY2tTdGF0cy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJl
cnMuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC00NSw5ICs0NSwxMCBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lN
UEwoUmVuZGVyTGlzdE1hcmtlcik7CiAKIGNvbnN0IGludCBjTWFya2VyUGFkZGluZyA9IDc7CiAK
LWVudW0gU2VxdWVuY2VUeXBlIHsgTnVtZXJpY1NlcXVlbmNlLCBBbHBoYWJldGljU2VxdWVuY2Ug
fTsKK2VudW0gY2xhc3MgTGV0dGVyQ2FzZSB7IExvd2VyLCBVcHBlciB9OworZW51bSBjbGFzcyBT
ZXF1ZW5jZVR5cGUgeyBOdW1lcmljLCBBbHBoYWJldGljIH07CiAKLXN0YXRpYyBORVZFUl9JTkxJ
TkUgdm9pZCB0b1JvbWFuKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGludCBudW1iZXIsIGJvb2wg
dXBwZXIpCitzdGF0aWMgTkVWRVJfSU5MSU5FIFN0cmluZyB0b1JvbWFuKGludCBudW1iZXIsIExl
dHRlckNhc2UgbGV0dGVyQ2FzZSkKIHsKICAgICAvLyBGSVhNRTogQ1NTMyBkZXNjcmliZXMgaG93
IHRvIG1ha2UgdGhpcyB3b3JrIGZvciBtdWNoIGxhcmdlciBudW1iZXJzLAogICAgIC8vIHVzaW5n
IG92ZXJiYXJzIGFuZCBzcGVjaWFsIGNoYXJhY3RlcnMuIEl0IGFsc28gc3BlY2lmaWVzIHRoZSBj
aGFyYWN0ZXJzCkBAIC01NiwxMyArNTcsMTMgQEAgc3RhdGljIE5FVkVSX0lOTElORSB2b2lkIHRv
Um9tYW4oU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgaW50IG51bWJlciwgYm9vbCB1cHBlcikKIAog
ICAgIC8vIEJpZyBlbm91Z2ggdG8gc3RvcmUgbGFyZ2VzdCByb21hbiBudW1iZXIgbGVzcyB0aGFu
IDM5OTkgd2hpY2gKICAgICAvLyBpcyAzODg4IChNTU1EQ0NDTFhYWFZJSUkpCi0gICAgY29uc3Qg
aW50IGxldHRlcnNTaXplID0gMTU7CisgICAgY29uc3RleHByIHVuc2lnbmVkIGxldHRlcnNTaXpl
ID0gMTU7CiAgICAgTENoYXIgbGV0dGVyc1tsZXR0ZXJzU2l6ZV07CiAKLSAgICBpbnQgbGVuZ3Ro
ID0gMDsKKyAgICB1bnNpZ25lZCBsZW5ndGggPSAwOwogICAgIGNvbnN0IExDaGFyIGxkaWdpdHNb
XSA9IHsgJ2knLCAndicsICd4JywgJ2wnLCAnYycsICdkJywgJ20nIH07CiAgICAgY29uc3QgTENo
YXIgdWRpZ2l0c1tdID0geyAnSScsICdWJywgJ1gnLCAnTCcsICdDJywgJ0QnLCAnTScgfTsKLSAg
ICBjb25zdCBMQ2hhciogZGlnaXRzID0gdXBwZXIgPyB1ZGlnaXRzIDogbGRpZ2l0czsKKyAgICBj
b25zdCBMQ2hhciogZGlnaXRzID0gbGV0dGVyQ2FzZSA9PSBMZXR0ZXJDYXNlOjpVcHBlciA/IHVk
aWdpdHMgOiBsZGlnaXRzOwogICAgIGludCBkID0gMDsKICAgICBkbyB7CiAgICAgICAgIGludCBu
dW0gPSBudW1iZXIgJSAxMDsKQEAgLTgwLDIyICs4MSwyMiBAQCBzdGF0aWMgTkVWRVJfSU5MSU5F
IHZvaWQgdG9Sb21hbihTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBpbnQgbnVtYmVyLCBib29sIHVw
cGVyKQogICAgIH0gd2hpbGUgKG51bWJlcik7CiAKICAgICBBU1NFUlQobGVuZ3RoIDw9IGxldHRl
cnNTaXplKTsKLSAgICBidWlsZGVyLmFwcGVuZCgmbGV0dGVyc1tsZXR0ZXJzU2l6ZSAtIGxlbmd0
aF0sIGxlbmd0aCk7CisgICAgcmV0dXJuIFN0cmluZyB7ICZsZXR0ZXJzW2xldHRlcnNTaXplIC0g
bGVuZ3RoXSwgbGVuZ3RoIH07CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
Pgotc3RhdGljIGlubGluZSB2b2lkIHRvQWxwaGFiZXRpY09yTnVtZXJpYyhTdHJpbmdCdWlsZGVy
JiBidWlsZGVyLCBpbnQgbnVtYmVyLCBjb25zdCBDaGFyYWN0ZXJUeXBlKiBzZXF1ZW5jZSwgdW5z
aWduZWQgc2VxdWVuY2VTaXplLCBTZXF1ZW5jZVR5cGUgdHlwZSkKK3RlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+CitzdGF0aWMgaW5saW5lIFN0cmluZyB0b0FscGhhYmV0aWNPck51bWVy
aWMoaW50IG51bWJlciwgY29uc3QgQ2hhcmFjdGVyVHlwZSogc2VxdWVuY2UsIHVuc2lnbmVkIHNl
cXVlbmNlU2l6ZSwgU2VxdWVuY2VUeXBlIHR5cGUpCiB7CiAgICAgQVNTRVJUKHNlcXVlbmNlU2l6
ZSA+PSAyKTsKIAogICAgIC8vIFRha2luZyBzaXplb2YobnVtYmVyKSBpbiB0aGUgZXhwcmVzc2lv
biBiZWxvdyBkb2Vzbid0IHdvcmsgd2l0aCBzb21lIGNvbXBpbGVycy4KLSAgICBjb25zdCBpbnQg
bGV0dGVyc1NpemUgPSBzaXplb2YoaW50KSAqIDggKyAxOyAvLyBCaW5hcnkgaXMgdGhlIHdvcnN0
IGNhc2U7IHJlcXVpcmVzIG9uZSBjaGFyYWN0ZXIgcGVyIGJpdCBwbHVzIGEgbWludXMgc2lnbi4K
KyAgICBjb25zdGV4cHIgdW5zaWduZWQgbGV0dGVyc1NpemUgPSBzaXplb2YoaW50KSAqIDggKyAx
OyAvLyBCaW5hcnkgaXMgdGhlIHdvcnN0IGNhc2U7IHJlcXVpcmVzIG9uZSBjaGFyYWN0ZXIgcGVy
IGJpdCBwbHVzIGEgbWludXMgc2lnbi4KIAogICAgIENoYXJhY3RlclR5cGUgbGV0dGVyc1tsZXR0
ZXJzU2l6ZV07CiAKICAgICBib29sIGlzTmVnYXRpdmVOdW1iZXIgPSBmYWxzZTsKICAgICB1bnNp
Z25lZCBudW1iZXJTaGFkb3cgPSBudW1iZXI7Ci0gICAgaWYgKHR5cGUgPT0gQWxwaGFiZXRpY1Nl
cXVlbmNlKSB7CisgICAgaWYgKHR5cGUgPT0gU2VxdWVuY2VUeXBlOjpBbHBoYWJldGljKSB7CiAg
ICAgICAgIEFTU0VSVChudW1iZXIgPiAwKTsKICAgICAgICAgLS1udW1iZXJTaGFkb3c7CiAgICAg
fSBlbHNlIGlmIChudW1iZXIgPCAwKSB7CkBAIC0xMDMsOSArMTA0LDkgQEAgc3RhdGljIGlubGlu
ZSB2b2lkIHRvQWxwaGFiZXRpY09yTnVtZXJpYyhTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBpbnQg
bnVtYmVyLCBjb24KICAgICAgICAgaXNOZWdhdGl2ZU51bWJlciA9IHRydWU7CiAgICAgfQogICAg
IGxldHRlcnNbbGV0dGVyc1NpemUgLSAxXSA9IHNlcXVlbmNlW251bWJlclNoYWRvdyAlIHNlcXVl
bmNlU2l6ZV07Ci0gICAgaW50IGxlbmd0aCA9IDE7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gMTsK
IAotICAgIGlmICh0eXBlID09IEFscGhhYmV0aWNTZXF1ZW5jZSkgeworICAgIGlmICh0eXBlID09
IFNlcXVlbmNlVHlwZTo6QWxwaGFiZXRpYykgewogICAgICAgICB3aGlsZSAoKG51bWJlclNoYWRv
dyAvPSBzZXF1ZW5jZVNpemUpID4gMCkgewogICAgICAgICAgICAgLS1udW1iZXJTaGFkb3c7CiAg
ICAgICAgICAgICBsZXR0ZXJzW2xldHRlcnNTaXplIC0gKytsZW5ndGhdID0gc2VxdWVuY2VbbnVt
YmVyU2hhZG93ICUgc2VxdWVuY2VTaXplXTsKQEAgLTExOCw1MiArMTE5LDU0IEBAIHN0YXRpYyBp
bmxpbmUgdm9pZCB0b0FscGhhYmV0aWNPck51bWVyaWMoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwg
aW50IG51bWJlciwgY29uCiAgICAgICAgIGxldHRlcnNbbGV0dGVyc1NpemUgLSArK2xlbmd0aF0g
PSBoeXBoZW5NaW51czsKIAogICAgIEFTU0VSVChsZW5ndGggPD0gbGV0dGVyc1NpemUpOwotICAg
IGJ1aWxkZXIuYXBwZW5kKCZsZXR0ZXJzW2xldHRlcnNTaXplIC0gbGVuZ3RoXSwgbGVuZ3RoKTsK
KyAgICByZXR1cm4gU3RyaW5nIHsgJmxldHRlcnNbbGV0dGVyc1NpemUgLSBsZW5ndGhdLCBsZW5n
dGggfTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1zdGF0aWMgTkVW
RVJfSU5MSU5FIHZvaWQgdG9TeW1ib2xpYyhTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBpbnQgbnVt
YmVyLCBjb25zdCBDaGFyYWN0ZXJUeXBlKiBzeW1ib2xzLCB1bnNpZ25lZCBzeW1ib2xzU2l6ZSkK
K3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitzdGF0aWMgTkVWRVJfSU5MSU5FIFN0
cmluZyB0b1N5bWJvbGljKGludCBudW1iZXIsIGNvbnN0IENoYXJhY3RlclR5cGUqIHN5bWJvbHMs
IHVuc2lnbmVkIHN5bWJvbHNTaXplKQogewogICAgIEFTU0VSVChudW1iZXIgPiAwKTsKICAgICBB
U1NFUlQoc3ltYm9sc1NpemUgPj0gMSk7Ci0gICAgdW5zaWduZWQgbnVtYmVyU2hhZG93ID0gbnVt
YmVyOwotICAgIC0tbnVtYmVyU2hhZG93OwogCi0gICAgLy8gVGhlIGFzdGVyaXNrcyBsaXN0LXN0
eWxlLXR5cGUgaXMgdGhlIHdvcnN0IGNhc2U7IHdlIHNob3cgfG51bWJlclNoYWRvd3wgYXN0ZXJp
c2tzLgotICAgIGJ1aWxkZXIuYXBwZW5kKHN5bWJvbHNbbnVtYmVyU2hhZG93ICUgc3ltYm9sc1Np
emVdKTsKLSAgICB1bnNpZ25lZCBudW1TeW1ib2xzID0gbnVtYmVyU2hhZG93IC8gc3ltYm9sc1Np
emU7Ci0gICAgd2hpbGUgKG51bVN5bWJvbHMtLSkKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoc3lt
Ym9sc1tudW1iZXJTaGFkb3cgJSBzeW1ib2xzU2l6ZV0pOworICAgIC8vIFRoZSBhc3Rlcmlza3Mg
bGlzdC1zdHlsZS10eXBlIGlzIHRoZSB3b3JzdCBjYXNlOyB3ZSBzaG93IHxudW1iZXJ8IGFzdGVy
aXNrcy4KKyAgICBDaGFyYWN0ZXJUeXBlIHN5bWJvbCA9IHN5bWJvbHNbKG51bWJlciAtIDEpICUg
c3ltYm9sc1NpemVdOworICAgIHVuc2lnbmVkIGNvdW50ID0gKG51bWJlciAtIDEpIC8gc3ltYm9s
c1NpemUgKyAxOworCisgICAgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVyczsKKyAgICBTdHJpbmcg
cmVzdWx0ID0gU3RyaW5nOjpjcmVhdGVVbmluaXRpYWxpemVkKGNvdW50LCBjaGFyYWN0ZXJzKTsK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY291bnQ7ICsraSkKKyAgICAgICAgY2hhcmFj
dGVyc1tpXSA9IHN5bWJvbDsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLXN0YXRpYyBORVZFUl9JTkxJTkUgdm9pZCB0b0FscGhhYmV0
aWMoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgaW50IG51bWJlciwgY29uc3QgQ2hhcmFjdGVyVHlw
ZSogYWxwaGFiZXQsIHVuc2lnbmVkIGFscGhhYmV0U2l6ZSkKK3RlbXBsYXRlPHR5cGVuYW1lIENo
YXJhY3RlclR5cGU+CitzdGF0aWMgTkVWRVJfSU5MSU5FIFN0cmluZyB0b0FscGhhYmV0aWMoaW50
IG51bWJlciwgY29uc3QgQ2hhcmFjdGVyVHlwZSogYWxwaGFiZXQsIHVuc2lnbmVkIGFscGhhYmV0
U2l6ZSkKIHsKLSAgICB0b0FscGhhYmV0aWNPck51bWVyaWMoYnVpbGRlciwgbnVtYmVyLCBhbHBo
YWJldCwgYWxwaGFiZXRTaXplLCBBbHBoYWJldGljU2VxdWVuY2UpOworICAgIHJldHVybiB0b0Fs
cGhhYmV0aWNPck51bWVyaWMobnVtYmVyLCBhbHBoYWJldCwgYWxwaGFiZXRTaXplLCBTZXF1ZW5j
ZVR5cGU6OkFscGhhYmV0aWMpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4KLXN0YXRpYyBORVZFUl9JTkxJTkUgdm9pZCB0b051bWVyaWMoU3RyaW5nQnVpbGRlciYgYnVp
bGRlciwgaW50IG51bWJlciwgY29uc3QgQ2hhcmFjdGVyVHlwZSogbnVtZXJhbHMsIHVuc2lnbmVk
IG51bWVyYWxzU2l6ZSkKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitzdGF0aWMg
TkVWRVJfSU5MSU5FIFN0cmluZyB0b051bWVyaWMoaW50IG51bWJlciwgY29uc3QgQ2hhcmFjdGVy
VHlwZSogbnVtZXJhbHMsIHVuc2lnbmVkIG51bWVyYWxzU2l6ZSkKIHsKLSAgICB0b0FscGhhYmV0
aWNPck51bWVyaWMoYnVpbGRlciwgbnVtYmVyLCBudW1lcmFscywgbnVtZXJhbHNTaXplLCBOdW1l
cmljU2VxdWVuY2UpOworICAgIHJldHVybiB0b0FscGhhYmV0aWNPck51bWVyaWMobnVtYmVyLCBu
dW1lcmFscywgbnVtZXJhbHNTaXplLCBTZXF1ZW5jZVR5cGU6Ok51bWVyaWMpOwogfQogCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwgc2l6ZV90IHNpemU+Ci1zdGF0aWMgaW5saW5l
IHZvaWQgdG9BbHBoYWJldGljKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGludCBudW1iZXIsIGNv
bnN0IENoYXJhY3RlclR5cGUoJmFscGhhYmV0KVtzaXplXSkKK3RlbXBsYXRlPHR5cGVuYW1lIENo
YXJhY3RlclR5cGUsIHNpemVfdCBzaXplPgorc3RhdGljIGlubGluZSBTdHJpbmcgdG9BbHBoYWJl
dGljKGludCBudW1iZXIsIGNvbnN0IENoYXJhY3RlclR5cGUoJmFscGhhYmV0KVtzaXplXSkKIHsK
LSAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwgbnVtYmVyLCBhbHBoYWJldCwgc2l6ZSk7CisgICAg
cmV0dXJuIHRvQWxwaGFiZXRpYyhudW1iZXIsIGFscGhhYmV0LCBzaXplKTsKIH0KIAotdGVtcGxh
dGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIHNpemVfdCBzaXplPgotc3RhdGljIGlubGluZSB2
b2lkIHRvTnVtZXJpYyhTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBpbnQgbnVtYmVyLCBjb25zdCBD
aGFyYWN0ZXJUeXBlKCZhbHBoYWJldClbc2l6ZV0pCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlLCBzaXplX3Qgc2l6ZT4KK3N0YXRpYyBpbmxpbmUgU3RyaW5nIHRvTnVtZXJpYyhpbnQg
bnVtYmVyLCBjb25zdCBDaGFyYWN0ZXJUeXBlKCZhbHBoYWJldClbc2l6ZV0pCiB7Ci0gICAgdG9O
dW1lcmljKGJ1aWxkZXIsIG51bWJlciwgYWxwaGFiZXQsIHNpemUpOworICAgIHJldHVybiB0b051
bWVyaWMobnVtYmVyLCBhbHBoYWJldCwgc2l6ZSk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlLCBzaXplX3Qgc2l6ZT4KLXN0YXRpYyBpbmxpbmUgdm9pZCB0b1N5bWJvbGlj
KFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGludCBudW1iZXIsIGNvbnN0IENoYXJhY3RlclR5cGUo
JmFscGhhYmV0KVtzaXplXSkKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIHNpemVf
dCBzaXplPgorc3RhdGljIGlubGluZSBTdHJpbmcgdG9TeW1ib2xpYyhpbnQgbnVtYmVyLCBjb25z
dCBDaGFyYWN0ZXJUeXBlKCZhbHBoYWJldClbc2l6ZV0pCiB7ICAgIAotICAgIHRvU3ltYm9saWMo
YnVpbGRlciwgbnVtYmVyLCBhbHBoYWJldCwgc2l6ZSk7CisgICAgcmV0dXJuIHRvU3ltYm9saWMo
bnVtYmVyLCBhbHBoYWJldCwgc2l6ZSk7CiB9CiAKIHN0YXRpYyBORVZFUl9JTkxJTkUgaW50IHRv
SGVicmV3VW5kZXIxMDAwKGludCBudW1iZXIsIFVDaGFyIGxldHRlcnNbNV0pCkBAIC0xOTQsMjEg
KzE5NywyMCBAQCBzdGF0aWMgTkVWRVJfSU5MSU5FIGludCB0b0hlYnJld1VuZGVyMTAwMChpbnQg
bnVtYmVyLCBVQ2hhciBsZXR0ZXJzWzVdKQogICAgIHJldHVybiBsZW5ndGg7CiB9CiAKLXN0YXRp
YyBORVZFUl9JTkxJTkUgdm9pZCB0b0hlYnJldyhTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBpbnQg
bnVtYmVyKQorc3RhdGljIE5FVkVSX0lOTElORSBTdHJpbmcgdG9IZWJyZXcoaW50IG51bWJlcikK
IHsKICAgICAvLyBGSVhNRTogQ1NTMyBtZW50aW9ucyB3YXlzIHRvIG1ha2UgdGhpcyB3b3JrIGZv
ciBtdWNoIGxhcmdlciBudW1iZXJzLgogICAgIEFTU0VSVChudW1iZXIgPj0gMCAmJiBudW1iZXIg
PD0gOTk5OTk5KTsKIAogICAgIGlmIChudW1iZXIgPT0gMCkgewogICAgICAgICBzdGF0aWMgY29u
c3QgVUNoYXIgaGVicmV3WmVyb1szXSA9IHsgMHgwNUQwLCAweDA1RTQsIDB4MDVFMSB9OwotICAg
ICAgICBidWlsZGVyLmFwcGVuZChoZWJyZXdaZXJvLCAzKTsKLSAgICAgICAgcmV0dXJuOworICAg
ICAgICByZXR1cm4gU3RyaW5nIHsgaGVicmV3WmVybywgMyB9OwogICAgIH0KIAotICAgIGNvbnN0
IGludCBsZXR0ZXJzU2l6ZSA9IDExOyAvLyBiaWcgZW5vdWdoIGZvciB0d28gNS1kaWdpdCBzZXF1
ZW5jZXMgcGx1cyBhIHF1b3RlIG1hcmsgYmV0d2VlbgorICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBs
ZXR0ZXJzU2l6ZSA9IDExOyAvLyBiaWcgZW5vdWdoIGZvciB0d28gNS1kaWdpdCBzZXF1ZW5jZXMg
cGx1cyBhIHF1b3RlIG1hcmsgYmV0d2VlbgogICAgIFVDaGFyIGxldHRlcnNbbGV0dGVyc1NpemVd
OwogCi0gICAgaW50IGxlbmd0aDsKKyAgICB1bnNpZ25lZCBsZW5ndGg7CiAgICAgaWYgKG51bWJl
ciA8IDEwMDApCiAgICAgICAgIGxlbmd0aCA9IDA7CiAgICAgZWxzZSB7CkBAIC0yMTksMTUgKzIy
MSwxNSBAQCBzdGF0aWMgTkVWRVJfSU5MSU5FIHZvaWQgdG9IZWJyZXcoU3RyaW5nQnVpbGRlciYg
YnVpbGRlciwgaW50IG51bWJlcikKICAgICBsZW5ndGggKz0gdG9IZWJyZXdVbmRlcjEwMDAobnVt
YmVyLCBsZXR0ZXJzICsgbGVuZ3RoKTsKIAogICAgIEFTU0VSVChsZW5ndGggPD0gbGV0dGVyc1Np
emUpOwotICAgIGJ1aWxkZXIuYXBwZW5kKGxldHRlcnMsIGxlbmd0aCk7CisgICAgcmV0dXJuIFN0
cmluZyB7IGxldHRlcnMsIGxlbmd0aCB9OwogfQogCi1zdGF0aWMgTkVWRVJfSU5MSU5FIGludCB0
b0FybWVuaWFuVW5kZXIxMDAwMChpbnQgbnVtYmVyLCBib29sIHVwcGVyLCBib29sIGFkZENpcmN1
bWZsZXgsIFVDaGFyIGxldHRlcnNbOV0pCitzdGF0aWMgTkVWRVJfSU5MSU5FIHVuc2lnbmVkIHRv
QXJtZW5pYW5VbmRlcjEwMDAwKGludCBudW1iZXIsIExldHRlckNhc2UgbGV0dGVyQ2FzZSwgYm9v
bCBhZGRDaXJjdW1mbGV4LCBVQ2hhciBsZXR0ZXJzWzldKQogewogICAgIEFTU0VSVChudW1iZXIg
Pj0gMCAmJiBudW1iZXIgPCAxMDAwMCk7Ci0gICAgaW50IGxlbmd0aCA9IDA7CisgICAgdW5zaWdu
ZWQgbGVuZ3RoID0gMDsKIAotICAgIGludCBsb3dlck9mZnNldCA9IHVwcGVyID8gMCA6IDB4MDAz
MDsKKyAgICBpbnQgbG93ZXJPZmZzZXQgPSBsZXR0ZXJDYXNlID09IExldHRlckNhc2U6OlVwcGVy
ID8gMCA6IDB4MDAzMDsKIAogICAgIGlmIChpbnQgdGhvdXNhbmRzID0gbnVtYmVyIC8gMTAwMCkg
ewogICAgICAgICBpZiAodGhvdXNhbmRzID09IDcpIHsKQEAgLTI2MiwyOCArMjY0LDI4IEBAIHN0
YXRpYyBORVZFUl9JTkxJTkUgaW50IHRvQXJtZW5pYW5VbmRlcjEwMDAwKGludCBudW1iZXIsIGJv
b2wgdXBwZXIsIGJvb2wgYWRkQ2lyCiAgICAgcmV0dXJuIGxlbmd0aDsKIH0KIAotc3RhdGljIE5F
VkVSX0lOTElORSB2b2lkIHRvQXJtZW5pYW4oU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgaW50IG51
bWJlciwgYm9vbCB1cHBlcikKK3N0YXRpYyBORVZFUl9JTkxJTkUgU3RyaW5nIHRvQXJtZW5pYW4o
aW50IG51bWJlciwgTGV0dGVyQ2FzZSBsZXR0ZXJDYXNlKQogewogICAgIEFTU0VSVChudW1iZXIg
Pj0gMSAmJiBudW1iZXIgPD0gOTk5OTk5OTkpOwogCi0gICAgY29uc3QgaW50IGxldHRlcnNTaXpl
ID0gMTg7IC8vIHR3aWNlIHdoYXQgdG9Bcm1lbmlhblVuZGVyMTAwMDAgbmVlZHMKKyAgICBjb25z
dGV4cHIgdW5zaWduZWQgbGV0dGVyc1NpemUgPSAxODsgLy8gdHdpY2Ugd2hhdCB0b0FybWVuaWFu
VW5kZXIxMDAwMCBuZWVkcwogICAgIFVDaGFyIGxldHRlcnNbbGV0dGVyc1NpemVdOwogCi0gICAg
aW50IGxlbmd0aCA9IHRvQXJtZW5pYW5VbmRlcjEwMDAwKG51bWJlciAvIDEwMDAwLCB1cHBlciwg
dHJ1ZSwgbGV0dGVycyk7Ci0gICAgbGVuZ3RoICs9IHRvQXJtZW5pYW5VbmRlcjEwMDAwKG51bWJl
ciAlIDEwMDAwLCB1cHBlciwgZmFsc2UsIGxldHRlcnMgKyBsZW5ndGgpOworICAgIHVuc2lnbmVk
IGxlbmd0aCA9IHRvQXJtZW5pYW5VbmRlcjEwMDAwKG51bWJlciAvIDEwMDAwLCBsZXR0ZXJDYXNl
LCB0cnVlLCBsZXR0ZXJzKTsKKyAgICBsZW5ndGggKz0gdG9Bcm1lbmlhblVuZGVyMTAwMDAobnVt
YmVyICUgMTAwMDAsIGxldHRlckNhc2UsIGZhbHNlLCBsZXR0ZXJzICsgbGVuZ3RoKTsKIAogICAg
IEFTU0VSVChsZW5ndGggPD0gbGV0dGVyc1NpemUpOwotICAgIGJ1aWxkZXIuYXBwZW5kKGxldHRl
cnMsIGxlbmd0aCk7CisgICAgcmV0dXJuIFN0cmluZyB7IGxldHRlcnMsIGxlbmd0aCB9OwogfQog
Ci1zdGF0aWMgTkVWRVJfSU5MSU5FIHZvaWQgdG9HZW9yZ2lhbihTdHJpbmdCdWlsZGVyJiBidWls
ZGVyLCBpbnQgbnVtYmVyKQorc3RhdGljIE5FVkVSX0lOTElORSBTdHJpbmcgdG9HZW9yZ2lhbihp
bnQgbnVtYmVyKQogewogICAgIEFTU0VSVChudW1iZXIgPj0gMSAmJiBudW1iZXIgPD0gMTk5OTkp
OwogCi0gICAgY29uc3QgaW50IGxldHRlcnNTaXplID0gNTsKKyAgICBjb25zdGV4cHIgdW5zaWdu
ZWQgbGV0dGVyc1NpemUgPSA1OwogICAgIFVDaGFyIGxldHRlcnNbbGV0dGVyc1NpemVdOwogCi0g
ICAgaW50IGxlbmd0aCA9IDA7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gMDsKIAogICAgIGlmIChu
dW1iZXIgPiA5OTk5KQogICAgICAgICBsZXR0ZXJzW2xlbmd0aCsrXSA9IDB4MTBGNTsKQEAgLTMx
NywxMiArMzE5LDEyIEBAIHN0YXRpYyBORVZFUl9JTkxJTkUgdm9pZCB0b0dlb3JnaWFuKFN0cmlu
Z0J1aWxkZXImIGJ1aWxkZXIsIGludCBudW1iZXIpCiAgICAgfQogCiAgICAgQVNTRVJUKGxlbmd0
aCA8PSBsZXR0ZXJzU2l6ZSk7Ci0gICAgYnVpbGRlci5hcHBlbmQobGV0dGVycywgbGVuZ3RoKTsK
KyAgICByZXR1cm4gU3RyaW5nIHsgbGV0dGVycywgbGVuZ3RoIH07CiB9CiAKIC8vIFRoZSB0YWJs
ZSB1c2VzIHRoZSBvcmRlciBmcm9tIHRoZSBDU1MzIHNwZWNpZmljYXRpb246CiAvLyBmaXJzdCAz
IGdyb3VwIG1hcmtlcnMsIHRoZW4gMyBkaWdpdCBtYXJrZXJzLCB0aGVuIHRlbiBkaWdpdHMuCi1z
dGF0aWMgTkVWRVJfSU5MSU5FIHZvaWQgdG9DSktJZGVvZ3JhcGhpYyhTdHJpbmdCdWlsZGVyJiBi
dWlsZGVyLCBpbnQgbnVtYmVyLCBjb25zdCBVQ2hhciB0YWJsZVsxNl0pCitzdGF0aWMgTkVWRVJf
SU5MSU5FIFN0cmluZyB0b0NKS0lkZW9ncmFwaGljKGludCBudW1iZXIsIGNvbnN0IFVDaGFyIHRh
YmxlWzE2XSkKIHsKICAgICBBU1NFUlQobnVtYmVyID49IDApOwogCkBAIC0zMzQsMTMgKzMzNiwx
MSBAQCBzdGF0aWMgTkVWRVJfSU5MSU5FIHZvaWQgdG9DSktJZGVvZ3JhcGhpYyhTdHJpbmdCdWls
ZGVyJiBidWlsZGVyLCBpbnQgbnVtYmVyLCBjbwogICAgICAgICBkaWdpdDUsIGRpZ2l0NiwgZGln
aXQ3LCBkaWdpdDgsIGRpZ2l0OQogICAgIH07CiAKLSAgICBpZiAobnVtYmVyID09IDApIHsKLSAg
ICAgICAgYnVpbGRlci5hcHBlbmQodGFibGVbZGlnaXQwIC0gMV0pOwotICAgICAgICByZXR1cm47
Ci0gICAgfQorICAgIGlmICghbnVtYmVyKQorICAgICAgICByZXR1cm4gU3RyaW5nIHsgJnRhYmxl
W2RpZ2l0MCAtIDFdICwgMSB9OwogCi0gICAgY29uc3QgaW50IGdyb3VwTGVuZ3RoID0gODsgLy8g
NCBkaWdpdHMsIDMgZGlnaXQgbWFya2VycywgYW5kIGEgZ3JvdXAgbWFya2VyCi0gICAgY29uc3Qg
aW50IGJ1ZmZlckxlbmd0aCA9IDQgKiBncm91cExlbmd0aDsKKyAgICBjb25zdGV4cHIgdW5zaWdu
ZWQgZ3JvdXBMZW5ndGggPSA4OyAvLyA0IGRpZ2l0cywgMyBkaWdpdCBtYXJrZXJzLCBhbmQgYSBn
cm91cCBtYXJrZXIKKyAgICBjb25zdGV4cHIgdW5zaWduZWQgYnVmZmVyTGVuZ3RoID0gNCAqIGdy
b3VwTGVuZ3RoOwogICAgIEFic3RyYWN0Q0pLQ2hhciBidWZmZXJbYnVmZmVyTGVuZ3RoXSA9IHsg
bm9DaGFyIH07CiAKICAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7ICsraSkgewpAQCAtMzgxLDE2
ICszODEsMTUgQEAgc3RhdGljIE5FVkVSX0lOTElORSB2b2lkIHRvQ0pLSWRlb2dyYXBoaWMoU3Ry
aW5nQnVpbGRlciYgYnVpbGRlciwgaW50IG51bWJlciwgY28KICAgICAgICAgICAgIGdyb3VwWzRd
ID0gbm9DaGFyOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKG51bWJlciA9PSAwKQorICAgICAg
ICBpZiAoIW51bWJlcikKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIC8vIENvbnZl
cnQgaW50byBjaGFyYWN0ZXJzLCBvbWl0dGluZyBjb25zZWN1dGl2ZSBydW5zIG9mIGRpZ2l0MCBh
bmQKLSAgICAvLyBhbnkgdHJhaWxpbmcgZGlnaXQwLgotICAgIGludCBsZW5ndGggPSAwOworICAg
IC8vIENvbnZlcnQgaW50byBjaGFyYWN0ZXJzLCBvbWl0dGluZyBjb25zZWN1dGl2ZSBydW5zIG9m
IGRpZ2l0MCBhbmQgdHJhaWxpbmcgZGlnaXQwLgorICAgIHVuc2lnbmVkIGxlbmd0aCA9IDA7CiAg
ICAgVUNoYXIgY2hhcmFjdGVyc1tidWZmZXJMZW5ndGhdOwogICAgIEFic3RyYWN0Q0pLQ2hhciBs
YXN0ID0gbm9DaGFyOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYnVmZmVyTGVuZ3RoOyArK2kp
IHsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYnVmZmVyTGVuZ3RoOyArK2kpIHsKICAg
ICAgICAgQWJzdHJhY3RDSktDaGFyIGEgPSBidWZmZXJbaV07CiAgICAgICAgIGlmIChhICE9IG5v
Q2hhcikgewogICAgICAgICAgICAgaWYgKGEgIT0gZGlnaXQwIHx8IGxhc3QgIT0gZGlnaXQwKQpA
QCAtNDAxLDcgKzQwMCw3IEBAIHN0YXRpYyBORVZFUl9JTkxJTkUgdm9pZCB0b0NKS0lkZW9ncmFw
aGljKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGludCBudW1iZXIsIGNvCiAgICAgaWYgKGxhc3Qg
PT0gZGlnaXQwKQogICAgICAgICAtLWxlbmd0aDsKIAotICAgIGJ1aWxkZXIuYXBwZW5kKGNoYXJh
Y3RlcnMsIGxlbmd0aCk7CisgICAgcmV0dXJuIFN0cmluZyB7IGNoYXJhY3RlcnMsIGxlbmd0aCB9
OwogfQogCiBzdGF0aWMgTGlzdFN0eWxlVHlwZSBlZmZlY3RpdmVMaXN0TWFya2VyVHlwZShMaXN0
U3R5bGVUeXBlIHR5cGUsIGludCB2YWx1ZSkKQEAgLTUwNiw3ICs1MDUsNyBAQCBzdGF0aWMgTGlz
dFN0eWxlVHlwZSBlZmZlY3RpdmVMaXN0TWFya2VyVHlwZShMaXN0U3R5bGVUeXBlIHR5cGUsIGlu
dCB2YWx1ZSkKIHN0YXRpYyBVQ2hhciBsaXN0TWFya2VyU3VmZml4KExpc3RTdHlsZVR5cGUgdHlw
ZSwgaW50IHZhbHVlKQogewogICAgIC8vIElmIHRoZSBsaXN0LXN0eWxlLXR5cGUgY2Fubm90IHJl
cHJlc2VudCB8dmFsdWV8IGJlY2F1c2UgaXQncyBvdXRzaWRlIGl0cwotICAgIC8vIG9yZGluYWwg
cmFuZ2UgdGhlbiB3ZSBmYWxsIGJhY2sgdG8gc29tZSBsaXN0IHN0eWxlIHRoYXQgY2FuIHJlcHJl
c2VudCB8dmFsdWV8LgorICAgIC8vIG9yZGluYWwgcmFuZ2UgdGhlbiB3ZSBmYWxsIGJhY2sgdG8g
YW5vdGhlciBsaXN0IHN0eWxlIHRoYXQgY2FuIHJlcHJlc2VudCB8dmFsdWV8LgogICAgIExpc3RT
dHlsZVR5cGUgZWZmZWN0aXZlVHlwZSA9IGVmZmVjdGl2ZUxpc3RNYXJrZXJUeXBlKHR5cGUsIHZh
bHVlKTsKIAogICAgIC8vIE5vdGUsIHRoZSBmb2xsb3dpbmcgc3dpdGNoIHN0YXRlbWVudCBoYXMg
YmVlbiBleHBsaWNpdGx5CkBAIC02MDQsNzYgKzYwMyw2MiBAQCBzdGF0aWMgVUNoYXIgbGlzdE1h
cmtlclN1ZmZpeChMaXN0U3R5bGVUeXBlIHR5cGUsIGludCB2YWx1ZSkKIAogU3RyaW5nIGxpc3RN
YXJrZXJUZXh0KExpc3RTdHlsZVR5cGUgdHlwZSwgaW50IHZhbHVlKQogewotICAgIFN0cmluZ0J1
aWxkZXIgYnVpbGRlcjsKLQotICAgIC8vIElmIHRoZSBsaXN0LXN0eWxlLXR5cGUsIHNheSBoZWJy
ZXcsIGNhbm5vdCByZXByZXNlbnQgfHZhbHVlfCBiZWNhdXNlIGl0J3Mgb3V0c2lkZQotICAgIC8v
IGl0cyBvcmRpbmFsIHJhbmdlIHRoZW4gd2UgZmFsbGJhY2sgdG8gc29tZSBsaXN0IHN0eWxlIHRo
YXQgY2FuIHJlcHJlc2VudCB8dmFsdWV8LgorICAgIC8vIElmIHRoZSBsaXN0LXN0eWxlLXR5cGUg
Y2Fubm90IHJlcHJlc2VudCB8dmFsdWV8IGJlY2F1c2UgaXQncyBvdXRzaWRlIGl0cworICAgIC8v
IG9yZGluYWwgcmFuZ2UgdGhlbiB3ZSBmYWxsIGJhY2sgdG8gYW5vdGhlciBsaXN0IHN0eWxlIHRo
YXQgY2FuIHJlcHJlc2VudCB8dmFsdWV8LgogICAgIHN3aXRjaCAoZWZmZWN0aXZlTGlzdE1hcmtl
clR5cGUodHlwZSwgdmFsdWUpKSB7CiAgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpOb25lOgogICAg
ICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAogICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QXN0
ZXJpc2tzOiB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBMQ2hhciBhc3Rlcmlza3NTeW1ib2xzWzFd
ID0geyAweDJBIH07Ci0gICAgICAgIHRvU3ltYm9saWMoYnVpbGRlciwgdmFsdWUsIGFzdGVyaXNr
c1N5bWJvbHMpOwotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIHRvU3ltYm9saWModmFs
dWUsIGFzdGVyaXNrc1N5bWJvbHMpOwogICAgIH0KICAgICAvLyBXZSB1c2UgdGhlIHNhbWUgY2hh
cmFjdGVycyBmb3IgdGV4dCBzZWN1cml0eS4KICAgICAvLyBTZWUgUmVuZGVyVGV4dDo6c2V0SW50
ZXJuYWxTdHJpbmcuCiAgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpDaXJjbGU6Ci0gICAgICAgIGJ1
aWxkZXIuYXBwZW5kKHdoaXRlQnVsbGV0KTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVy
biBTdHJpbmcgeyAmd2hpdGVCdWxsZXQsIDEgfTsKICAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkRp
c2M6Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKGJ1bGxldCk7Ci0gICAgICAgIGJyZWFrOworICAg
ICAgICByZXR1cm4gU3RyaW5nIHsgJmJ1bGxldCwgMSB9OwogICAgIGNhc2UgTGlzdFN0eWxlVHlw
ZTo6Rm9vdG5vdGVzOiB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBmb290bm90ZXNTeW1i
b2xzWzRdID0geyAweDAwMkEsIDB4MjA1MSwgMHgyMDIwLCAweDIwMjEgfTsKLSAgICAgICAgdG9T
eW1ib2xpYyhidWlsZGVyLCB2YWx1ZSwgZm9vdG5vdGVzU3ltYm9scyk7Ci0gICAgICAgIGJyZWFr
OworICAgICAgICByZXR1cm4gdG9TeW1ib2xpYyh2YWx1ZSwgZm9vdG5vdGVzU3ltYm9scyk7CiAg
ICAgfQogICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6U3F1YXJlOgotICAgICAgICAvLyBUaGUgQ1NT
IDIuMSB0ZXN0IHN1aXRlIHVzZXMgVSsyNUVFIEJMQUNLIE1FRElVTSBTTUFMTCBTUVVBUkUKLSAg
ICAgICAgLy8gaW5zdGVhZCwgYnV0IEkgdGhpbmsgdGhpcyBsb29rcyBiZXR0ZXIuCi0gICAgICAg
IGJ1aWxkZXIuYXBwZW5kKGJsYWNrU3F1YXJlKTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIC8v
IFRoZSBDU1MgMi4xIHRlc3Qgc3VpdGUgdXNlcyBVKzI1RUUgQkxBQ0sgTUVESVVNIFNNQUxMIFNR
VUFSRSBpbnN0ZWFkLAorICAgICAgICAvLyBidXQgd2UgdXNlZCB0aGlzIGJlY2F1c2Ugd2UgdGhv
dWdodCBpdCBsb29rZWQgYmV0dGVyLgorICAgICAgICByZXR1cm4gU3RyaW5nIHsgJmJsYWNrU3F1
YXJlLCAxIH07CiAKICAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkRlY2ltYWw6Ci0gICAgICAgIGJ1
aWxkZXIuYXBwZW5kTnVtYmVyKHZhbHVlKTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVy
biBTdHJpbmc6Om51bWJlcih2YWx1ZSk7CiAKICAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkRlY2lt
YWxMZWFkaW5nWmVybzoKLSAgICAgICAgaWYgKHZhbHVlIDwgLTkgfHwgdmFsdWUgPiA5KSB7Ci0g
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcih2YWx1ZSk7Ci0gICAgICAgICAgICBicmVh
azsKKyAgICAgICAgaWYgKHZhbHVlID49IDAgJiYgdmFsdWUgPD0gOSkgeworICAgICAgICAgICAg
TENoYXIgY2hhcmFjdGVyc1syXSA9IHsgJzAnLCBzdGF0aWNfY2FzdDxMQ2hhcj4oJzAnICsgdmFs
dWUpIH07IC8vIDAwIHRvIDA5CisgICAgICAgICAgICByZXR1cm4gU3RyaW5nIHsgY2hhcmFjdGVy
cywgMiB9OwogICAgICAgICB9Ci0gICAgICAgIGlmICh2YWx1ZSA8IDApIHsKLSAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLTAiKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
TnVtYmVyKC12YWx1ZSk7IC8vIC0wMSB0byAtMDkKLSAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBpZiAodmFsdWUgPj0gLTkgJiYgdmFsdWUgPD0gLTEpIHsKKyAgICAgICAgICAgIExDaGFyIGNo
YXJhY3RlcnNbM10gPSB7ICctJywgJzAnLCBzdGF0aWNfY2FzdDxMQ2hhcj4oJzAnIC0gdmFsdWUp
IH07IC8vIC0wMSB0byAtMDkKKyAgICAgICAgICAgIHJldHVybiBTdHJpbmcgeyBjaGFyYWN0ZXJz
LCAzIH07CiAgICAgICAgIH0KLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJzAnKTsKLSAgICAgICAg
YnVpbGRlci5hcHBlbmROdW1iZXIodmFsdWUpOyAvLyAwMCB0byAwOQotICAgICAgICBicmVhazsK
KyAgICAgICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyKHZhbHVlKTsKIAogICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6QXJhYmljSW5kaWM6IHsKICAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGFyYWJp
Y0luZGljTnVtZXJhbHNbMTBdID0gewogICAgICAgICAgICAgMHgwNjYwLCAweDA2NjEsIDB4MDY2
MiwgMHgwNjYzLCAweDA2NjQsIDB4MDY2NSwgMHgwNjY2LCAweDA2NjcsIDB4MDY2OCwgMHgwNjY5
CiAgICAgICAgIH07Ci0gICAgICAgIHRvTnVtZXJpYyhidWlsZGVyLCB2YWx1ZSwgYXJhYmljSW5k
aWNOdW1lcmFscyk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4gdG9OdW1lcmljKHZh
bHVlLCBhcmFiaWNJbmRpY051bWVyYWxzKTsKICAgICB9CiAKICAgICBjYXNlIExpc3RTdHlsZVR5
cGU6OkJpbmFyeTogewogICAgICAgICBzdGF0aWMgY29uc3QgTENoYXIgYmluYXJ5TnVtZXJhbHNb
Ml0gPSB7ICcwJywgJzEnIH07Ci0gICAgICAgIHRvTnVtZXJpYyhidWlsZGVyLCB2YWx1ZSwgYmlu
YXJ5TnVtZXJhbHMpOwotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIHRvTnVtZXJpYyh2
YWx1ZSwgYmluYXJ5TnVtZXJhbHMpOwogICAgIH0KIAogICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6
QmVuZ2FsaTogewogICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgYmVuZ2FsaU51bWVyYWxzWzEw
XSA9IHsKICAgICAgICAgICAgIDB4MDlFNiwgMHgwOUU3LCAweDA5RTgsIDB4MDlFOSwgMHgwOUVB
LCAweDA5RUIsIDB4MDlFQywgMHgwOUVELCAweDA5RUUsIDB4MDlFRgogICAgICAgICB9OwotICAg
ICAgICB0b051bWVyaWMoYnVpbGRlciwgdmFsdWUsIGJlbmdhbGlOdW1lcmFscyk7Ci0gICAgICAg
IGJyZWFrOworICAgICAgICByZXR1cm4gdG9OdW1lcmljKHZhbHVlLCBiZW5nYWxpTnVtZXJhbHMp
OwogICAgIH0KIAogICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Q2FtYm9kaWFuOgpAQCAtNjgxLDEy
MSArNjY2LDEwNCBAQCBTdHJpbmcgbGlzdE1hcmtlclRleHQoTGlzdFN0eWxlVHlwZSB0eXBlLCBp
bnQgdmFsdWUpCiAgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBraG1lck51bWVyYWxzWzEwXSA9
IHsKICAgICAgICAgICAgIDB4MTdFMCwgMHgxN0UxLCAweDE3RTIsIDB4MTdFMywgMHgxN0U0LCAw
eDE3RTUsIDB4MTdFNiwgMHgxN0U3LCAweDE3RTgsIDB4MTdFOQogICAgICAgICB9OwotICAgICAg
ICB0b051bWVyaWMoYnVpbGRlciwgdmFsdWUsIGtobWVyTnVtZXJhbHMpOwotICAgICAgICBicmVh
azsKKyAgICAgICAgcmV0dXJuIHRvTnVtZXJpYyh2YWx1ZSwga2htZXJOdW1lcmFscyk7CiAgICAg
fQogICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RGV2YW5hZ2FyaTogewogICAgICAgICBzdGF0aWMg
Y29uc3QgVUNoYXIgZGV2YW5hZ2FyaU51bWVyYWxzWzEwXSA9IHsKICAgICAgICAgICAgIDB4MDk2
NiwgMHgwOTY3LCAweDA5NjgsIDB4MDk2OSwgMHgwOTZBLCAweDA5NkIsIDB4MDk2QywgMHgwOTZE
LCAweDA5NkUsIDB4MDk2RgogICAgICAgICB9OwotICAgICAgICB0b051bWVyaWMoYnVpbGRlciwg
dmFsdWUsIGRldmFuYWdhcmlOdW1lcmFscyk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1
cm4gdG9OdW1lcmljKHZhbHVlLCBkZXZhbmFnYXJpTnVtZXJhbHMpOwogICAgIH0KICAgICBjYXNl
IExpc3RTdHlsZVR5cGU6Okd1amFyYXRpOiB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBn
dWphcmF0aU51bWVyYWxzWzEwXSA9IHsKICAgICAgICAgICAgIDB4MEFFNiwgMHgwQUU3LCAweDBB
RTgsIDB4MEFFOSwgMHgwQUVBLCAweDBBRUIsIDB4MEFFQywgMHgwQUVELCAweDBBRUUsIDB4MEFF
RgogICAgICAgICB9OwotICAgICAgICB0b051bWVyaWMoYnVpbGRlciwgdmFsdWUsIGd1amFyYXRp
TnVtZXJhbHMpOwotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIHRvTnVtZXJpYyh2YWx1
ZSwgZ3VqYXJhdGlOdW1lcmFscyk7CiAgICAgfQogICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6R3Vy
bXVraGk6IHsKICAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGd1cm11a2hpTnVtZXJhbHNbMTBd
ID0gewogICAgICAgICAgICAgMHgwQTY2LCAweDBBNjcsIDB4MEE2OCwgMHgwQTY5LCAweDBBNkEs
IDB4MEE2QiwgMHgwQTZDLCAweDBBNkQsIDB4MEE2RSwgMHgwQTZGCiAgICAgICAgIH07Ci0gICAg
ICAgIHRvTnVtZXJpYyhidWlsZGVyLCB2YWx1ZSwgZ3VybXVraGlOdW1lcmFscyk7Ci0gICAgICAg
IGJyZWFrOworICAgICAgICByZXR1cm4gdG9OdW1lcmljKHZhbHVlLCBndXJtdWtoaU51bWVyYWxz
KTsKICAgICB9CiAgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpLYW5uYWRhOiB7CiAgICAgICAgIHN0
YXRpYyBjb25zdCBVQ2hhciBrYW5uYWRhTnVtZXJhbHNbMTBdID0gewogICAgICAgICAgICAgMHgw
Q0U2LCAweDBDRTcsIDB4MENFOCwgMHgwQ0U5LCAweDBDRUEsIDB4MENFQiwgMHgwQ0VDLCAweDBD
RUQsIDB4MENFRSwgMHgwQ0VGCiAgICAgICAgIH07Ci0gICAgICAgIHRvTnVtZXJpYyhidWlsZGVy
LCB2YWx1ZSwga2FubmFkYU51bWVyYWxzKTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVy
biB0b051bWVyaWModmFsdWUsIGthbm5hZGFOdW1lcmFscyk7CiAgICAgfQogICAgIGNhc2UgTGlz
dFN0eWxlVHlwZTo6TG93ZXJIZXhhZGVjaW1hbDogewogICAgICAgICBzdGF0aWMgY29uc3QgTENo
YXIgbG93ZXJIZXhhZGVjaW1hbE51bWVyYWxzWzE2XSA9IHsKICAgICAgICAgICAgICcwJywgJzEn
LCAnMicsICczJywgJzQnLCAnNScsICc2JywgJzcnLCAnOCcsICc5JywgJ2EnLCAnYicsICdjJywg
J2QnLCAnZScsICdmJwogICAgICAgICB9OwotICAgICAgICB0b051bWVyaWMoYnVpbGRlciwgdmFs
dWUsIGxvd2VySGV4YWRlY2ltYWxOdW1lcmFscyk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICBy
ZXR1cm4gdG9OdW1lcmljKHZhbHVlLCBsb3dlckhleGFkZWNpbWFsTnVtZXJhbHMpOwogICAgIH0K
ICAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkxhbzogewogICAgICAgICBzdGF0aWMgY29uc3QgVUNo
YXIgbGFvTnVtZXJhbHNbMTBdID0gewogICAgICAgICAgICAgMHgwRUQwLCAweDBFRDEsIDB4MEVE
MiwgMHgwRUQzLCAweDBFRDQsIDB4MEVENSwgMHgwRUQ2LCAweDBFRDcsIDB4MEVEOCwgMHgwRUQ5
CiAgICAgICAgIH07Ci0gICAgICAgIHRvTnVtZXJpYyhidWlsZGVyLCB2YWx1ZSwgbGFvTnVtZXJh
bHMpOwotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIHRvTnVtZXJpYyh2YWx1ZSwgbGFv
TnVtZXJhbHMpOwogICAgIH0KICAgICBjYXNlIExpc3RTdHlsZVR5cGU6Ok1hbGF5YWxhbTogewog
ICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgbWFsYXlhbGFtTnVtZXJhbHNbMTBdID0gewogICAg
ICAgICAgICAgMHgwRDY2LCAweDBENjcsIDB4MEQ2OCwgMHgwRDY5LCAweDBENkEsIDB4MEQ2Qiwg
MHgwRDZDLCAweDBENkQsIDB4MEQ2RSwgMHgwRDZGCiAgICAgICAgIH07Ci0gICAgICAgIHRvTnVt
ZXJpYyhidWlsZGVyLCB2YWx1ZSwgbWFsYXlhbGFtTnVtZXJhbHMpOwotICAgICAgICBicmVhazsK
KyAgICAgICAgcmV0dXJuIHRvTnVtZXJpYyh2YWx1ZSwgbWFsYXlhbGFtTnVtZXJhbHMpOwogICAg
IH0KICAgICBjYXNlIExpc3RTdHlsZVR5cGU6Ok1vbmdvbGlhbjogewogICAgICAgICBzdGF0aWMg
Y29uc3QgVUNoYXIgbW9uZ29saWFuTnVtZXJhbHNbMTBdID0gewogICAgICAgICAgICAgMHgxODEw
LCAweDE4MTEsIDB4MTgxMiwgMHgxODEzLCAweDE4MTQsIDB4MTgxNSwgMHgxODE2LCAweDE4MTcs
IDB4MTgxOCwgMHgxODE5CiAgICAgICAgIH07Ci0gICAgICAgIHRvTnVtZXJpYyhidWlsZGVyLCB2
YWx1ZSwgbW9uZ29saWFuTnVtZXJhbHMpOwotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJu
IHRvTnVtZXJpYyh2YWx1ZSwgbW9uZ29saWFuTnVtZXJhbHMpOwogICAgIH0KICAgICBjYXNlIExp
c3RTdHlsZVR5cGU6Ok15YW5tYXI6IHsKICAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIG15YW5t
YXJOdW1lcmFsc1sxMF0gPSB7CiAgICAgICAgICAgICAweDEwNDAsIDB4MTA0MSwgMHgxMDQyLCAw
eDEwNDMsIDB4MTA0NCwgMHgxMDQ1LCAweDEwNDYsIDB4MTA0NywgMHgxMDQ4LCAweDEwNDkKICAg
ICAgICAgfTsKLSAgICAgICAgdG9OdW1lcmljKGJ1aWxkZXIsIHZhbHVlLCBteWFubWFyTnVtZXJh
bHMpOwotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIHRvTnVtZXJpYyh2YWx1ZSwgbXlh
bm1hck51bWVyYWxzKTsKICAgICB9CiAgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpPY3RhbDogewog
ICAgICAgICBzdGF0aWMgY29uc3QgTENoYXIgb2N0YWxOdW1lcmFsc1s4XSA9IHsKICAgICAgICAg
ICAgICcwJywgJzEnLCAnMicsICczJywgJzQnLCAnNScsICc2JywgJzcnCiAgICAgICAgIH07Ci0g
ICAgICAgIHRvTnVtZXJpYyhidWlsZGVyLCB2YWx1ZSwgb2N0YWxOdW1lcmFscyk7Ci0gICAgICAg
IGJyZWFrOworICAgICAgICByZXR1cm4gdG9OdW1lcmljKHZhbHVlLCBvY3RhbE51bWVyYWxzKTsK
ICAgICB9CiAgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpPcml5YTogewogICAgICAgICBzdGF0aWMg
Y29uc3QgVUNoYXIgb3JpeWFOdW1lcmFsc1sxMF0gPSB7CiAgICAgICAgICAgICAweDBCNjYsIDB4
MEI2NywgMHgwQjY4LCAweDBCNjksIDB4MEI2QSwgMHgwQjZCLCAweDBCNkMsIDB4MEI2RCwgMHgw
QjZFLCAweDBCNkYKICAgICAgICAgfTsKLSAgICAgICAgdG9OdW1lcmljKGJ1aWxkZXIsIHZhbHVl
LCBvcml5YU51bWVyYWxzKTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiB0b051bWVy
aWModmFsdWUsIG9yaXlhTnVtZXJhbHMpOwogICAgIH0KICAgICBjYXNlIExpc3RTdHlsZVR5cGU6
OlBlcnNpYW46CiAgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpVcmR1OiB7CiAgICAgICAgIHN0YXRp
YyBjb25zdCBVQ2hhciB1cmR1TnVtZXJhbHNbMTBdID0gewogICAgICAgICAgICAgMHgwNkYwLCAw
eDA2RjEsIDB4MDZGMiwgMHgwNkYzLCAweDA2RjQsIDB4MDZGNSwgMHgwNkY2LCAweDA2RjcsIDB4
MDZGOCwgMHgwNkY5CiAgICAgICAgIH07Ci0gICAgICAgIHRvTnVtZXJpYyhidWlsZGVyLCB2YWx1
ZSwgdXJkdU51bWVyYWxzKTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiB0b051bWVy
aWModmFsdWUsIHVyZHVOdW1lcmFscyk7CiAgICAgfQogICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6
VGVsdWd1OiB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciB0ZWx1Z3VOdW1lcmFsc1sxMF0g
PSB7CiAgICAgICAgICAgICAweDBDNjYsIDB4MEM2NywgMHgwQzY4LCAweDBDNjksIDB4MEM2QSwg
MHgwQzZCLCAweDBDNkMsIDB4MEM2RCwgMHgwQzZFLCAweDBDNkYKICAgICAgICAgfTsKLSAgICAg
ICAgdG9OdW1lcmljKGJ1aWxkZXIsIHZhbHVlLCB0ZWx1Z3VOdW1lcmFscyk7Ci0gICAgICAgIGJy
ZWFrOworICAgICAgICByZXR1cm4gdG9OdW1lcmljKHZhbHVlLCB0ZWx1Z3VOdW1lcmFscyk7CiAg
ICAgfQogICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGliZXRhbjogewogICAgICAgICBzdGF0aWMg
Y29uc3QgVUNoYXIgdGliZXRhbk51bWVyYWxzWzEwXSA9IHsKICAgICAgICAgICAgIDB4MEYyMCwg
MHgwRjIxLCAweDBGMjIsIDB4MEYyMywgMHgwRjI0LCAweDBGMjUsIDB4MEYyNiwgMHgwRjI3LCAw
eDBGMjgsIDB4MEYyOQogICAgICAgICB9OwotICAgICAgICB0b051bWVyaWMoYnVpbGRlciwgdmFs
dWUsIHRpYmV0YW5OdW1lcmFscyk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4gdG9O
dW1lcmljKHZhbHVlLCB0aWJldGFuTnVtZXJhbHMpOwogICAgIH0KICAgICBjYXNlIExpc3RTdHls
ZVR5cGU6OlRoYWk6IHsKICAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIHRoYWlOdW1lcmFsc1sx
MF0gPSB7CiAgICAgICAgICAgICAweDBFNTAsIDB4MEU1MSwgMHgwRTUyLCAweDBFNTMsIDB4MEU1
NCwgMHgwRTU1LCAweDBFNTYsIDB4MEU1NywgMHgwRTU4LCAweDBFNTkKICAgICAgICAgfTsKLSAg
ICAgICAgdG9OdW1lcmljKGJ1aWxkZXIsIHZhbHVlLCB0aGFpTnVtZXJhbHMpOwotICAgICAgICBi
cmVhazsKKyAgICAgICAgcmV0dXJuIHRvTnVtZXJpYyh2YWx1ZSwgdGhhaU51bWVyYWxzKTsKICAg
ICB9CiAgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpVcHBlckhleGFkZWNpbWFsOiB7CiAgICAgICAg
IHN0YXRpYyBjb25zdCBMQ2hhciB1cHBlckhleGFkZWNpbWFsTnVtZXJhbHNbMTZdID0gewogICAg
ICAgICAgICAgJzAnLCAnMScsICcyJywgJzMnLCAnNCcsICc1JywgJzYnLCAnNycsICc4JywgJzkn
LCAnQScsICdCJywgJ0MnLCAnRCcsICdFJywgJ0YnCiAgICAgICAgIH07Ci0gICAgICAgIHRvTnVt
ZXJpYyhidWlsZGVyLCB2YWx1ZSwgdXBwZXJIZXhhZGVjaW1hbE51bWVyYWxzKTsKLSAgICAgICAg
YnJlYWs7CisgICAgICAgIHJldHVybiB0b051bWVyaWModmFsdWUsIHVwcGVySGV4YWRlY2ltYWxO
dW1lcmFscyk7CiAgICAgfQogCiAgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dlckFscGhhOgpA
QCAtODA0LDggKzc3Miw3IEBAIFN0cmluZyBsaXN0TWFya2VyVGV4dChMaXN0U3R5bGVUeXBlIHR5
cGUsIGludCB2YWx1ZSkKICAgICAgICAgICAgICdhJywgJ2InLCAnYycsICdkJywgJ2UnLCAnZics
ICdnJywgJ2gnLCAnaScsICdqJywgJ2snLCAnbCcsICdtJywKICAgICAgICAgICAgICduJywgJ28n
LCAncCcsICdxJywgJ3InLCAncycsICd0JywgJ3UnLCAndicsICd3JywgJ3gnLCAneScsICd6Jwog
ICAgICAgICB9OwotICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwgdmFsdWUsIGxvd2VyTGF0
aW5BbHBoYWJldCk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4gdG9BbHBoYWJldGlj
KHZhbHVlLCBsb3dlckxhdGluQWxwaGFiZXQpOwogICAgIH0KICAgICBjYXNlIExpc3RTdHlsZVR5
cGU6OlVwcGVyQWxwaGE6CiAgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpVcHBlckxhdGluOiB7CkBA
IC04MTMsOCArNzgwLDcgQEAgU3RyaW5nIGxpc3RNYXJrZXJUZXh0KExpc3RTdHlsZVR5cGUgdHlw
ZSwgaW50IHZhbHVlKQogICAgICAgICAgICAgJ0EnLCAnQicsICdDJywgJ0QnLCAnRScsICdGJywg
J0cnLCAnSCcsICdJJywgJ0onLCAnSycsICdMJywgJ00nLAogICAgICAgICAgICAgJ04nLCAnTycs
ICdQJywgJ1EnLCAnUicsICdTJywgJ1QnLCAnVScsICdWJywgJ1cnLCAnWCcsICdZJywgJ1onCiAg
ICAgICAgIH07Ci0gICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgdXBwZXJMYXRp
bkFscGhhYmV0KTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiB0b0FscGhhYmV0aWMo
dmFsdWUsIHVwcGVyTGF0aW5BbHBoYWJldCk7CiAgICAgfQogICAgIGNhc2UgTGlzdFN0eWxlVHlw
ZTo6TG93ZXJHcmVlazogewogICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgbG93ZXJHcmVla0Fs
cGhhYmV0WzI0XSA9IHsKQEAgLTgyMiw4ICs3ODgsNyBAQCBTdHJpbmcgbGlzdE1hcmtlclRleHQo
TGlzdFN0eWxlVHlwZSB0eXBlLCBpbnQgdmFsdWUpCiAgICAgICAgICAgICAweDAzQjksIDB4MDNC
QSwgMHgwM0JCLCAweDAzQkMsIDB4MDNCRCwgMHgwM0JFLCAweDAzQkYsIDB4MDNDMCwKICAgICAg
ICAgICAgIDB4MDNDMSwgMHgwM0MzLCAweDAzQzQsIDB4MDNDNSwgMHgwM0M2LCAweDAzQzcsIDB4
MDNDOCwgMHgwM0M5CiAgICAgICAgIH07Ci0gICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2
YWx1ZSwgbG93ZXJHcmVla0FscGhhYmV0KTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVy
biB0b0FscGhhYmV0aWModmFsdWUsIGxvd2VyR3JlZWtBbHBoYWJldCk7CiAgICAgfQogCiAgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpIaXJhZ2FuYTogewpAQCAtODM3LDggKzgwMiw3IEBAIFN0cmlu
ZyBsaXN0TWFya2VyVGV4dChMaXN0U3R5bGVUeXBlIHR5cGUsIGludCB2YWx1ZSkKICAgICAgICAg
ICAgIDB4MzA4MCwgMHgzMDgxLCAweDMwODIsIDB4MzA4NCwgMHgzMDg2LCAweDMwODgsIDB4MzA4
OSwgMHgzMDhBLAogICAgICAgICAgICAgMHgzMDhCLCAweDMwOEMsIDB4MzA4RCwgMHgzMDhGLCAw
eDMwOTAsIDB4MzA5MSwgMHgzMDkyLCAweDMwOTMKICAgICAgICAgfTsKLSAgICAgICAgdG9BbHBo
YWJldGljKGJ1aWxkZXIsIHZhbHVlLCBoaXJhZ2FuYUFscGhhYmV0KTsKLSAgICAgICAgYnJlYWs7
CisgICAgICAgIHJldHVybiB0b0FscGhhYmV0aWModmFsdWUsIGhpcmFnYW5hQWxwaGFiZXQpOwog
ICAgIH0KICAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkhpcmFnYW5hSXJvaGE6IHsKICAgICAgICAg
Ly8gRklYTUU6IFRoaXMgdGFibGUgY29tZXMgZnJvbSB0aGUgQ1NTMyBkcmFmdCwgYW5kIGlzIHBy
b2JhYmx5CkBAIC04NTEsOCArODE1LDcgQEAgU3RyaW5nIGxpc3RNYXJrZXJUZXh0KExpc3RTdHls
ZVR5cGUgdHlwZSwgaW50IHZhbHVlKQogICAgICAgICAgICAgMHgzMDUzLCAweDMwNDgsIDB4MzA2
NiwgMHgzMDQyLCAweDMwNTUsIDB4MzA0RCwgMHgzMDg2LCAweDMwODEsCiAgICAgICAgICAgICAw
eDMwN0YsIDB4MzA1NywgMHgzMDkxLCAweDMwNzIsIDB4MzA4MiwgMHgzMDVCLCAweDMwNTkKICAg
ICAgICAgfTsKLSAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVlLCBoaXJhZ2FuYUly
b2hhQWxwaGFiZXQpOwotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIHRvQWxwaGFiZXRp
Yyh2YWx1ZSwgaGlyYWdhbmFJcm9oYUFscGhhYmV0KTsKICAgICB9CiAgICAgY2FzZSBMaXN0U3R5
bGVUeXBlOjpLYXRha2FuYTogewogICAgICAgICAvLyBGSVhNRTogVGhpcyB0YWJsZSBjb21lcyBm
cm9tIHRoZSBDU1MzIGRyYWZ0LCBhbmQgaXMgcHJvYmFibHkKQEAgLTg2NSw4ICs4MjgsNyBAQCBT
dHJpbmcgbGlzdE1hcmtlclRleHQoTGlzdFN0eWxlVHlwZSB0eXBlLCBpbnQgdmFsdWUpCiAgICAg
ICAgICAgICAweDMwRTAsIDB4MzBFMSwgMHgzMEUyLCAweDMwRTQsIDB4MzBFNiwgMHgzMEU4LCAw
eDMwRTksIDB4MzBFQSwKICAgICAgICAgICAgIDB4MzBFQiwgMHgzMEVDLCAweDMwRUQsIDB4MzBF
RiwgMHgzMEYwLCAweDMwRjEsIDB4MzBGMiwgMHgzMEYzCiAgICAgICAgIH07Ci0gICAgICAgIHRv
QWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwga2F0YWthbmFBbHBoYWJldCk7Ci0gICAgICAgIGJy
ZWFrOworICAgICAgICByZXR1cm4gdG9BbHBoYWJldGljKHZhbHVlLCBrYXRha2FuYUFscGhhYmV0
KTsKICAgICB9CiAgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpLYXRha2FuYUlyb2hhOiB7CiAgICAg
ICAgIC8vIEZJWE1FOiBUaGlzIHRhYmxlIGNvbWVzIGZyb20gdGhlIENTUzMgZHJhZnQsIGFuZCBp
cyBwcm9iYWJseQpAQCAtODc5LDggKzg0MSw3IEBAIFN0cmluZyBsaXN0TWFya2VyVGV4dChMaXN0
U3R5bGVUeXBlIHR5cGUsIGludCB2YWx1ZSkKICAgICAgICAgICAgIDB4MzBCMywgMHgzMEE4LCAw
eDMwQzYsIDB4MzBBMiwgMHgzMEI1LCAweDMwQUQsIDB4MzBFNiwgMHgzMEUxLAogICAgICAgICAg
ICAgMHgzMERGLCAweDMwQjcsIDB4MzBGMSwgMHgzMEQyLCAweDMwRTIsIDB4MzBCQiwgMHgzMEI5
CiAgICAgICAgIH07Ci0gICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwga2F0YWth
bmFJcm9oYUFscGhhYmV0KTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiB0b0FscGhh
YmV0aWModmFsdWUsIGthdGFrYW5hSXJvaGFBbHBoYWJldCk7CiAgICAgfQogCiAgICAgY2FzZSBM
aXN0U3R5bGVUeXBlOjpBZmFyOgpAQCAtODkwLDggKzg1MSw3IEBAIFN0cmluZyBsaXN0TWFya2Vy
VGV4dChMaXN0U3R5bGVUeXBlIHR5cGUsIGludCB2YWx1ZSkKICAgICAgICAgICAgIDB4MTIwMCwg
MHgxMjA4LCAweDEyMTAsIDB4MTIxOCwgMHgxMjI4LCAweDEyMzAsIDB4MTI2MCwgMHgxMjcwLCAw
eDEyOTAsCiAgICAgICAgICAgICAweDEyQTAsIDB4MTJBOCwgMHgxMkM4LCAweDEyRDAsIDB4MTJF
OCwgMHgxMkYwLCAweDEzMDgsIDB4MTMzOCwgMHgxMzQ4CiAgICAgICAgIH07Ci0gICAgICAgIHRv
QWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgZXRoaW9waWNIYWxlaGFtZUFhRXJBbHBoYWJldCk7
Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4gdG9BbHBoYWJldGljKHZhbHVlLCBldGhp
b3BpY0hhbGVoYW1lQWFFckFscGhhYmV0KTsKICAgICB9CiAgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpBbWhhcmljOgogICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZUFtRXQ6
IHsKQEAgLTkwMSw4ICs4NjEsNyBAQCBTdHJpbmcgbGlzdE1hcmtlclRleHQoTGlzdFN0eWxlVHlw
ZSB0eXBlLCBpbnQgdmFsdWUpCiAgICAgICAgICAgICAweDEyQzgsIDB4MTJEMCwgMHgxMkQ4LCAw
eDEyRTAsIDB4MTJFOCwgMHgxMkYwLCAweDEzMDAsIDB4MTMwOCwgMHgxMzIwLAogICAgICAgICAg
ICAgMHgxMzI4LCAweDEzMzAsIDB4MTMzOCwgMHgxMzQwLCAweDEzNDgsIDB4MTM1MAogICAgICAg
ICB9OwotICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwgdmFsdWUsIGV0aGlvcGljSGFsZWhh
bWVBbUV0QWxwaGFiZXQpOwotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIHRvQWxwaGFi
ZXRpYyh2YWx1ZSwgZXRoaW9waWNIYWxlaGFtZUFtRXRBbHBoYWJldCk7CiAgICAgfQogICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6QW1oYXJpY0FiZWdlZGU6CiAgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpFdGhpb3BpY0FiZWdlZGVBbUV0OiB7CkBAIC05MTIsMjQgKzg3MSwyMSBAQCBTdHJpbmcgbGlz
dE1hcmtlclRleHQoTGlzdFN0eWxlVHlwZSB0eXBlLCBpbnQgdmFsdWUpCiAgICAgICAgICAgICAw
eDEyOTgsIDB4MTIyMCwgMHgxMkQwLCAweDEzNDgsIDB4MTMzOCwgMHgxMjQwLCAweDEyMjgsIDB4
MTIzMCwgMHgxMjM4LAogICAgICAgICAgICAgMHgxMjcwLCAweDEyNzgsIDB4MTI4MCwgMHgxMzQw
LCAweDEzMzAsIDB4MTM1MAogICAgICAgICB9OwotICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRl
ciwgdmFsdWUsIGV0aGlvcGljQWJlZ2VkZUFtRXRBbHBoYWJldCk7Ci0gICAgICAgIGJyZWFrOwor
ICAgICAgICByZXR1cm4gdG9BbHBoYWJldGljKHZhbHVlLCBldGhpb3BpY0FiZWdlZGVBbUV0QWxw
aGFiZXQpOwogICAgIH0KICAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkNqa0VhcnRobHlCcmFuY2g6
IHsKICAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGNqa0VhcnRobHlCcmFuY2hBbHBoYWJldFsx
Ml0gPSB7CiAgICAgICAgICAgICAweDVCNTAsIDB4NEUxMSwgMHg1QkM1LCAweDUzNkYsIDB4OEZC
MCwgMHg1REYzLCAweDUzNDgsIDB4NjcyQSwgMHg3NTMzLAogICAgICAgICAgICAgMHg5MTQ5LCAw
eDYyMEMsIDB4NEVBNQogICAgICAgICB9OwotICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwg
dmFsdWUsIGNqa0VhcnRobHlCcmFuY2hBbHBoYWJldCk7Ci0gICAgICAgIGJyZWFrOworICAgICAg
ICByZXR1cm4gdG9BbHBoYWJldGljKHZhbHVlLCBjamtFYXJ0aGx5QnJhbmNoQWxwaGFiZXQpOwog
ICAgIH0KICAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkNqa0hlYXZlbmx5U3RlbTogewogICAgICAg
ICBzdGF0aWMgY29uc3QgVUNoYXIgY2prSGVhdmVubHlTdGVtQWxwaGFiZXRbMTBdID0gewogICAg
ICAgICAgICAgMHg3NTMyLCAweDRFNTksIDB4NEUxOSwgMHg0RTAxLCAweDYyMEEsIDB4NURGMSwg
MHg1RTlBLCAweDhGOUIsIDB4NThFQywKICAgICAgICAgICAgIDB4NzY3OAogICAgICAgICB9Owot
ICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwgdmFsdWUsIGNqa0hlYXZlbmx5U3RlbUFscGhh
YmV0KTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiB0b0FscGhhYmV0aWModmFsdWUs
IGNqa0hlYXZlbmx5U3RlbUFscGhhYmV0KTsKICAgICB9CiAgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpFdGhpb3BpYzoKICAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVHZXo6
IHsKQEAgLTkzOCw4ICs4OTQsNyBAQCBTdHJpbmcgbGlzdE1hcmtlclRleHQoTGlzdFN0eWxlVHlw
ZSB0eXBlLCBpbnQgdmFsdWUpCiAgICAgICAgICAgICAweDEyNzAsIDB4MTI4MCwgMHgxMjkwLCAw
eDEyQTAsIDB4MTJBOCwgMHgxMkM4LCAweDEyRDAsIDB4MTJEOCwgMHgxMkU4LAogICAgICAgICAg
ICAgMHgxMkYwLCAweDEzMDgsIDB4MTMyMCwgMHgxMzMwLCAweDEzMzgsIDB4MTM0MCwgMHgxMzQ4
LCAweDEzNTAKICAgICAgICAgfTsKLSAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVl
LCBldGhpb3BpY0hhbGVoYW1lR2V6QWxwaGFiZXQpOwotICAgICAgICBicmVhazsKKyAgICAgICAg
cmV0dXJuIHRvQWxwaGFiZXRpYyh2YWx1ZSwgZXRoaW9waWNIYWxlaGFtZUdlekFscGhhYmV0KTsK
ICAgICB9CiAgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0FiZWdlZGU6CiAgICAgY2Fz
ZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0FiZWdlZGVHZXo6IHsKQEAgLTk0OCwyNCArOTAzLDIx
IEBAIFN0cmluZyBsaXN0TWFya2VyVGV4dChMaXN0U3R5bGVUeXBlIHR5cGUsIGludCB2YWx1ZSkK
ICAgICAgICAgICAgIDB4MTJFOCwgMHgxMkE4LCAweDEyMDgsIDB4MTIxOCwgMHgxMjkwLCAweDEy
MjAsIDB4MTJEMCwgMHgxMzQ4LCAweDEzMzgsCiAgICAgICAgICAgICAweDEyNDAsIDB4MTIyOCwg
MHgxMjMwLCAweDEyNzAsIDB4MTI4MCwgMHgxMzQwLCAweDEzMzAsIDB4MTM1MAogICAgICAgICB9
OwotICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwgdmFsdWUsIGV0aGlvcGljQWJlZ2VkZUdl
ekFscGhhYmV0KTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiB0b0FscGhhYmV0aWMo
dmFsdWUsIGV0aGlvcGljQWJlZ2VkZUdlekFscGhhYmV0KTsKICAgICB9CiAgICAgY2FzZSBMaXN0
U3R5bGVUeXBlOjpIYW5ndWxDb25zb25hbnQ6IHsKICAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFy
IGhhbmd1bENvbnNvbmFudEFscGhhYmV0WzE0XSA9IHsKICAgICAgICAgICAgIDB4MzEzMSwgMHgz
MTM0LCAweDMxMzcsIDB4MzEzOSwgMHgzMTQxLCAweDMxNDIsIDB4MzE0NSwgMHgzMTQ3LCAweDMx
NDgsCiAgICAgICAgICAgICAweDMxNEEsIDB4MzE0QiwgMHgzMTRDLCAweDMxNEQsIDB4MzE0RQog
ICAgICAgICB9OwotICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwgdmFsdWUsIGhhbmd1bENv
bnNvbmFudEFscGhhYmV0KTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiB0b0FscGhh
YmV0aWModmFsdWUsIGhhbmd1bENvbnNvbmFudEFscGhhYmV0KTsKICAgICB9CiAgICAgY2FzZSBM
aXN0U3R5bGVUeXBlOjpIYW5ndWw6IHsKICAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGhhbmd1
bEFscGhhYmV0WzE0XSA9IHsKICAgICAgICAgICAgIDB4QUMwMCwgMHhCMDk4LCAweEIyRTQsIDB4
Qjc3QywgMHhCOUM4LCAweEJDMTQsIDB4QzBBQywgMHhDNTQ0LCAweEM3OTAsCiAgICAgICAgICAg
ICAweENDMjgsIDB4Q0U3NCwgMHhEMEMwLCAweEQzMEMsIDB4RDU1OAogICAgICAgICB9OwotICAg
ICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwgdmFsdWUsIGhhbmd1bEFscGhhYmV0KTsKLSAgICAg
ICAgYnJlYWs7CisgICAgICAgIHJldHVybiB0b0FscGhhYmV0aWModmFsdWUsIGhhbmd1bEFscGhh
YmV0KTsKICAgICB9CiAgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpPcm9tbzoKICAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVPbUV0OiB7CkBAIC05NzQsOCArOTI2LDcgQEAg
U3RyaW5nIGxpc3RNYXJrZXJUZXh0KExpc3RTdHlsZVR5cGUgdHlwZSwgaW50IHZhbHVlKQogICAg
ICAgICAgICAgMHgxMjc4LCAweDEyOTAsIDB4MTI5OCwgMHgxMkEwLCAweDEyQTgsIDB4MTJDOCwg
MHgxMkU4LCAweDEyRjAsIDB4MTJGOCwKICAgICAgICAgICAgIDB4MTMwMCwgMHgxMzA4LCAweDEz
MjAsIDB4MTMyOCwgMHgxMzM4LCAweDEzMzAsIDB4MTM0OAogICAgICAgICB9OwotICAgICAgICB0
b0FscGhhYmV0aWMoYnVpbGRlciwgdmFsdWUsIGV0aGlvcGljSGFsZWhhbWVPbUV0QWxwaGFiZXQp
OwotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIHRvQWxwaGFiZXRpYyh2YWx1ZSwgZXRo
aW9waWNIYWxlaGFtZU9tRXRBbHBoYWJldCk7CiAgICAgfQogICAgIGNhc2UgTGlzdFN0eWxlVHlw
ZTo6U2lkYW1hOgogICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZVNpZEV0
OiB7CkBAIC05ODQsOCArOTM1LDcgQEAgU3RyaW5nIGxpc3RNYXJrZXJUZXh0KExpc3RTdHlsZVR5
cGUgdHlwZSwgaW50IHZhbHVlKQogICAgICAgICAgICAgMHgxMjcwLCAweDEyNzgsIDB4MTI5MCwg
MHgxMjk4LCAweDEyQTAsIDB4MTJBOCwgMHgxMkM4LCAweDEyRTgsIDB4MTJGMCwKICAgICAgICAg
ICAgIDB4MTJGOCwgMHgxMzAwLCAweDEzMDgsIDB4MTMyMCwgMHgxMzI4LCAweDEzMzgsIDB4MTMz
MCwgMHgxMzQ4CiAgICAgICAgIH07Ci0gICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1
ZSwgZXRoaW9waWNIYWxlaGFtZVNpZEV0QWxwaGFiZXQpOwotICAgICAgICBicmVhazsKKyAgICAg
ICAgcmV0dXJuIHRvQWxwaGFiZXRpYyh2YWx1ZSwgZXRoaW9waWNIYWxlaGFtZVNpZEV0QWxwaGFi
ZXQpOwogICAgIH0KICAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlNvbWFsaToKICAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVTb0V0OiB7CkBAIC05OTQsOCArOTQ0LDcgQEAg
U3RyaW5nIGxpc3RNYXJrZXJUZXh0KExpc3RTdHlsZVR5cGUgdHlwZSwgaW50IHZhbHVlKQogICAg
ICAgICAgICAgMHgxMjcwLCAweDEyOTAsIDB4MTJBMCwgMHgxMkE4LCAweDEyQjgsIDB4MTJDOCwg
MHgxMkQwLCAweDEyRTgsIDB4MTJGMCwKICAgICAgICAgICAgIDB4MTMwMCwgMHgxMzA4LCAweDEz
MzgsIDB4MTM0OAogICAgICAgICB9OwotICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwgdmFs
dWUsIGV0aGlvcGljSGFsZWhhbWVTb0V0QWxwaGFiZXQpOwotICAgICAgICBicmVhazsKKyAgICAg
ICAgcmV0dXJuIHRvQWxwaGFiZXRpYyh2YWx1ZSwgZXRoaW9waWNIYWxlaGFtZVNvRXRBbHBoYWJl
dCk7CiAgICAgfQogICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGlncmU6CiAgICAgY2FzZSBMaXN0
U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lVGlnOiB7CkBAIC0xMDA0LDggKzk1Myw3IEBAIFN0
cmluZyBsaXN0TWFya2VyVGV4dChMaXN0U3R5bGVUeXBlIHR5cGUsIGludCB2YWx1ZSkKICAgICAg
ICAgICAgIDB4MTI3MCwgMHgxMjc4LCAweDEyOTAsIDB4MTJBMCwgMHgxMkE4LCAweDEyQzgsIDB4
MTJEMCwgMHgxMkQ4LCAweDEyRTgsCiAgICAgICAgICAgICAweDEyRjAsIDB4MTMwMCwgMHgxMzA4
LCAweDEzMjAsIDB4MTMyOCwgMHgxMzM4LCAweDEzMzAsIDB4MTM0OCwgMHgxMzUwCiAgICAgICAg
IH07Ci0gICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgZXRoaW9waWNIYWxlaGFt
ZVRpZ0FscGhhYmV0KTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiB0b0FscGhhYmV0
aWModmFsdWUsIGV0aGlvcGljSGFsZWhhbWVUaWdBbHBoYWJldCk7CiAgICAgfQogICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6VGlncmlueWFFcjoKICAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlv
cGljSGFsZWhhbWVUaUVyOiB7CkBAIC0xMDE1LDggKzk2Myw3IEBAIFN0cmluZyBsaXN0TWFya2Vy
VGV4dChMaXN0U3R5bGVUeXBlIHR5cGUsIGludCB2YWx1ZSkKICAgICAgICAgICAgIDB4MTJEMCwg
MHgxMkQ4LCAweDEyRTAsIDB4MTJFOCwgMHgxMkYwLCAweDEzMDAsIDB4MTMwOCwgMHgxMzIwLCAw
eDEzMjgsCiAgICAgICAgICAgICAweDEzMzAsIDB4MTMzOCwgMHgxMzQ4LCAweDEzNTAKICAgICAg
ICAgfTsKLSAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVlLCBldGhpb3BpY0hhbGVo
YW1lVGlFckFscGhhYmV0KTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiB0b0FscGhh
YmV0aWModmFsdWUsIGV0aGlvcGljSGFsZWhhbWVUaUVyQWxwaGFiZXQpOwogICAgIH0KICAgICBj
YXNlIExpc3RTdHlsZVR5cGU6OlRpZ3JpbnlhRXJBYmVnZWRlOgogICAgIGNhc2UgTGlzdFN0eWxl
VHlwZTo6RXRoaW9waWNBYmVnZWRlVGlFcjogewpAQCAtMTAyNiw4ICs5NzMsNyBAQCBTdHJpbmcg
bGlzdE1hcmtlclRleHQoTGlzdFN0eWxlVHlwZSB0eXBlLCBpbnQgdmFsdWUpCiAgICAgICAgICAg
ICAweDEyOTgsIDB4MTJEMCwgMHgxMzQ4LCAweDEzMzgsIDB4MTI0MCwgMHgxMjUwLCAweDEyMjgs
IDB4MTIzMCwgMHgxMjM4LAogICAgICAgICAgICAgMHgxMjcwLCAweDEyNzgsIDB4MTMzMCwgMHgx
MzUwCiAgICAgICAgIH07Ci0gICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgZXRo
aW9waWNBYmVnZWRlVGlFckFscGhhYmV0KTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVy
biB0b0FscGhhYmV0aWModmFsdWUsIGV0aGlvcGljQWJlZ2VkZVRpRXJBbHBoYWJldCk7CiAgICAg
fQogICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGlncmlueWFFdDoKICAgICBjYXNlIExpc3RTdHls
ZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVUaUV0OiB7CkBAIC0xMDM3LDggKzk4Myw3IEBAIFN0cmlu
ZyBsaXN0TWFya2VyVGV4dChMaXN0U3R5bGVUeXBlIHR5cGUsIGludCB2YWx1ZSkKICAgICAgICAg
ICAgIDB4MTJCOCwgMHgxMkM4LCAweDEyRDAsIDB4MTJEOCwgMHgxMkUwLCAweDEyRTgsIDB4MTJG
MCwgMHgxMzAwLCAweDEzMDgsCiAgICAgICAgICAgICAweDEzMjAsIDB4MTMyOCwgMHgxMzMwLCAw
eDEzMzgsIDB4MTM0MCwgMHgxMzQ4LCAweDEzNTAKICAgICAgICAgfTsKLSAgICAgICAgdG9BbHBo
YWJldGljKGJ1aWxkZXIsIHZhbHVlLCBldGhpb3BpY0hhbGVoYW1lVGlFdEFscGhhYmV0KTsKLSAg
ICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiB0b0FscGhhYmV0aWModmFsdWUsIGV0aGlvcGlj
SGFsZWhhbWVUaUV0QWxwaGFiZXQpOwogICAgIH0KICAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRp
Z3JpbnlhRXRBYmVnZWRlOgogICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNBYmVnZWRl
VGlFdDogewpAQCAtMTA0OCw4ICs5OTMsNyBAQCBTdHJpbmcgbGlzdE1hcmtlclRleHQoTGlzdFN0
eWxlVHlwZSB0eXBlLCBpbnQgdmFsdWUpCiAgICAgICAgICAgICAweDEyOTgsIDB4MTIyMCwgMHgx
MkQwLCAweDEzNDgsIDB4MTMzOCwgMHgxMjQwLCAweDEyNTAsIDB4MTIyOCwgMHgxMjMwLAogICAg
ICAgICAgICAgMHgxMjM4LCAweDEyNzAsIDB4MTI3OCwgMHgxMjgwLCAweDEzNDAsIDB4MTMzMCwg
MHgxMzUwCiAgICAgICAgIH07Ci0gICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwg
ZXRoaW9waWNBYmVnZWRlVGlFdEFscGhhYmV0KTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJl
dHVybiB0b0FscGhhYmV0aWModmFsdWUsIGV0aGlvcGljQWJlZ2VkZVRpRXRBbHBoYWJldCk7CiAg
ICAgfQogICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJHcmVlazogewogICAgICAgICBzdGF0
aWMgY29uc3QgVUNoYXIgdXBwZXJHcmVla0FscGhhYmV0WzI0XSA9IHsKQEAgLTEwNTcsOCArMTAw
MSw3IEBAIFN0cmluZyBsaXN0TWFya2VyVGV4dChMaXN0U3R5bGVUeXBlIHR5cGUsIGludCB2YWx1
ZSkKICAgICAgICAgICAgIDB4MDM5QSwgMHgwMzlCLCAweDAzOUMsIDB4MDM5RCwgMHgwMzlFLCAw
eDAzOUYsIDB4MDNBMCwgMHgwM0ExLCAweDAzQTMsCiAgICAgICAgICAgICAweDAzQTQsIDB4MDNB
NSwgMHgwM0E2LCAweDAzQTcsIDB4MDNBOCwgMHgwM0E5CiAgICAgICAgIH07Ci0gICAgICAgIHRv
QWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgdXBwZXJHcmVla0FscGhhYmV0KTsKLSAgICAgICAg
YnJlYWs7CisgICAgICAgIHJldHVybiB0b0FscGhhYmV0aWModmFsdWUsIHVwcGVyR3JlZWtBbHBo
YWJldCk7CiAgICAgfQogICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93ZXJOb3J3ZWdpYW46IHsK
ICAgICAgICAgc3RhdGljIGNvbnN0IExDaGFyIGxvd2VyTm9yd2VnaWFuQWxwaGFiZXRbMjldID0g
ewpAQCAtMTA2Nyw4ICsxMDEwLDcgQEAgU3RyaW5nIGxpc3RNYXJrZXJUZXh0KExpc3RTdHlsZVR5
cGUgdHlwZSwgaW50IHZhbHVlKQogICAgICAgICAgICAgMHg3MywgMHg3NCwgMHg3NSwgMHg3Niwg
MHg3NywgMHg3OCwgMHg3OSwgMHg3QSwgMHhFNiwKICAgICAgICAgICAgIDB4RjgsIDB4RTUKICAg
ICAgICAgfTsKLSAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVlLCBsb3dlck5vcndl
Z2lhbkFscGhhYmV0KTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiB0b0FscGhhYmV0
aWModmFsdWUsIGxvd2VyTm9yd2VnaWFuQWxwaGFiZXQpOwogICAgIH0KICAgICBjYXNlIExpc3RT
dHlsZVR5cGU6OlVwcGVyTm9yd2VnaWFuOiB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBMQ2hhciB1
cHBlck5vcndlZ2lhbkFscGhhYmV0WzI5XSA9IHsKQEAgLTEwNzcsOCArMTAxOSw3IEBAIFN0cmlu
ZyBsaXN0TWFya2VyVGV4dChMaXN0U3R5bGVUeXBlIHR5cGUsIGludCB2YWx1ZSkKICAgICAgICAg
ICAgIDB4NTMsIDB4NTQsIDB4NTUsIDB4NTYsIDB4NTcsIDB4NTgsIDB4NTksIDB4NUEsIDB4QzYs
CiAgICAgICAgICAgICAweEQ4LCAweEM1CiAgICAgICAgIH07Ci0gICAgICAgIHRvQWxwaGFiZXRp
YyhidWlsZGVyLCB2YWx1ZSwgdXBwZXJOb3J3ZWdpYW5BbHBoYWJldCk7Ci0gICAgICAgIGJyZWFr
OworICAgICAgICByZXR1cm4gdG9BbHBoYWJldGljKHZhbHVlLCB1cHBlck5vcndlZ2lhbkFscGhh
YmV0KTsKICAgICB9CiAgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpDSktJZGVvZ3JhcGhpYzogewog
ICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgdHJhZGl0aW9uYWxDaGluZXNlSW5mb3JtYWxUYWJs
ZVsxNl0gPSB7CkBAIC0xMDg3LDM2ICsxMDI4LDMwIEBAIFN0cmluZyBsaXN0TWFya2VyVGV4dChM
aXN0U3R5bGVUeXBlIHR5cGUsIGludCB2YWx1ZSkKICAgICAgICAgICAgIDB4OTZGNiwgMHg0RTAw
LCAweDRFOEMsIDB4NEUwOSwgMHg1NkRCLAogICAgICAgICAgICAgMHg0RTk0LCAweDUxNkQsIDB4
NEUwMywgMHg1MTZCLCAweDRFNUQKICAgICAgICAgfTsKLSAgICAgICAgdG9DSktJZGVvZ3JhcGhp
YyhidWlsZGVyLCB2YWx1ZSwgdHJhZGl0aW9uYWxDaGluZXNlSW5mb3JtYWxUYWJsZSk7Ci0gICAg
ICAgIGJyZWFrOworICAgICAgICByZXR1cm4gdG9DSktJZGVvZ3JhcGhpYyh2YWx1ZSwgdHJhZGl0
aW9uYWxDaGluZXNlSW5mb3JtYWxUYWJsZSk7CiAgICAgfQogCiAgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpMb3dlclJvbWFuOgotICAgICAgICB0b1JvbWFuKGJ1aWxkZXIsIHZhbHVlLCBmYWxzZSk7
Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4gdG9Sb21hbih2YWx1ZSwgTGV0dGVyQ2Fz
ZTo6TG93ZXIpOwogICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJSb21hbjoKLSAgICAgICAg
dG9Sb21hbihidWlsZGVyLCB2YWx1ZSwgdHJ1ZSk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICBy
ZXR1cm4gdG9Sb21hbih2YWx1ZSwgTGV0dGVyQ2FzZTo6VXBwZXIpOwogCisgICAgLy8gQSBDU1Mz
IGRyYWZ0IHNhaWQgdGhhdCAiYXJtZW5pYW4iIG1lYW5zICJsb3dlci1hcm1lbmlhbiIuIEJ1dCB0
aGUgQ1NTMi4xIHRlc3QKKyAgICAvLyBzdWl0ZSBjb250YWlucyB1cHBlcmNhc2UgdGVzdCByZXN1
bHRzIGZvciAiYXJtZW5pYW4iOyBvdXIgYmVoYXZpb3IgbWF0Y2hlcyB0aGF0LgogICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6QXJtZW5pYW46CiAgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpVcHBlckFy
bWVuaWFuOgotICAgICAgICAvLyBDU1MzIHNheXMgImFybWVuaWFuIiBtZWFucyAibG93ZXItYXJt
ZW5pYW4iLgotICAgICAgICAvLyBCdXQgdGhlIENTUzIuMSB0ZXN0IHN1aXRlIGNvbnRhaW5zIHVw
cGVyY2FzZSB0ZXN0IHJlc3VsdHMgZm9yICJhcm1lbmlhbiIsCi0gICAgICAgIC8vIHNvIHdlJ2xs
IG1hdGNoIHRoZSB0ZXN0IHN1aXRlLgotICAgICAgICB0b0FybWVuaWFuKGJ1aWxkZXIsIHZhbHVl
LCB0cnVlKTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiB0b0FybWVuaWFuKHZhbHVl
LCBMZXR0ZXJDYXNlOjpVcHBlcik7CiAgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dlckFybWVu
aWFuOgotICAgICAgICB0b0FybWVuaWFuKGJ1aWxkZXIsIHZhbHVlLCBmYWxzZSk7Ci0gICAgICAg
IGJyZWFrOworICAgICAgICByZXR1cm4gdG9Bcm1lbmlhbih2YWx1ZSwgTGV0dGVyQ2FzZTo6TG93
ZXIpOworCiAgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpHZW9yZ2lhbjoKLSAgICAgICAgdG9HZW9y
Z2lhbihidWlsZGVyLCB2YWx1ZSk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4gdG9H
ZW9yZ2lhbih2YWx1ZSk7CiAgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpIZWJyZXc6Ci0gICAgICAg
IHRvSGVicmV3KGJ1aWxkZXIsIHZhbHVlKTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVy
biB0b0hlYnJldyh2YWx1ZSk7CiAgICAgfQogCi0gICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmco
KTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsK
IH0KIAogUmVuZGVyTGlzdE1hcmtlcjo6UmVuZGVyTGlzdE1hcmtlcihSZW5kZXJMaXN0SXRlbSYg
bGlzdEl0ZW0sIFJlbmRlclN0eWxlJiYgc3R5bGUpCkBAIC0xMzUwLDMyICsxMjg1LDM1IEBAIHZv
aWQgUmVuZGVyTGlzdE1hcmtlcjo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExh
eW91dFBvaW50JiBwYWludE9mZnNlCiAgICAgZWxzZSB7CiAgICAgICAgIGNvbnN0IFVDaGFyIHN1
ZmZpeCA9IGxpc3RNYXJrZXJTdWZmaXgodHlwZSwgbV9saXN0SXRlbS0+dmFsdWUoKSk7CiAKLSAg
ICAgICAgLy8gVGV4dCBpcyBub3QgYXJiaXRyYXJ5LiBXZSBjYW4ganVkZ2Ugd2hldGhlciBpdCdz
IFJUTCBmcm9tIHRoZSBmaXJzdCBjaGFyYWN0ZXIsCi0gICAgICAgIC8vIGFuZCB3ZSBvbmx5IG5l
ZWQgdG8gaGFuZGxlIHRoZSBkaXJlY3Rpb24gVV9SSUdIVF9UT19MRUZUIGZvciBub3cuCi0gICAg
ICAgIGJvb2wgdGV4dE5lZWRzUmV2ZXJzaW5nID0gdV9jaGFyRGlyZWN0aW9uKG1fdGV4dFswXSkg
PT0gVV9SSUdIVF9UT19MRUZUOwotICAgICAgICBTdHJpbmcgdG9EcmF3OwotICAgICAgICBpZiAo
dGV4dE5lZWRzUmV2ZXJzaW5nKSB7CisgICAgICAgIC8vIEZJWE1FOiBDb3VsZCB1c2UgYSBWZWN0
b3Igd2l0aCBpbmxpbmUgY2FwYWNpdHkgaW5zdGVhZCBvZiBTdHJpbmcgdG8gYXZvaWQKKyAgICAg
ICAgLy8gbWVtb3J5IGFsbG9jYXRpb24gaGVyZS4KKyAgICAgICAgU3RyaW5nIHRleHRUb0RyYXc7
CisKKyAgICAgICAgLy8gU2luY2UgbWFya2VyIHRleHQgaXMgbm90IGFyYml0cmFyeSwgd2UgY2Fu
IGp1ZGdlIGl0cyBkaXJlY3Rpb24ganVzdCBieQorICAgICAgICAvLyBjaGVja2luZyB0aGUgZmly
c3QgY2hhcmFjdGVyLCBhbmQgb25seSBuZWVkIHRvIGhhbmRsZSBVX1JJR0hUX1RPX0xFRlQuCisg
ICAgICAgIC8vIEZJWE1FOiBDb3VsZCBjaGVjayBtb3JlIGVmZmljaWVudGx5IHRoYW4gdV9jaGFy
RGlyZWN0aW9uLCBzaW5jZSB3ZSBrbm93CisgICAgICAgIC8vIG9ubHkgY2VydGFpbiBjaGFyYWN0
ZXJzIGFyZSB1c2VkIGFuZCBvbmx5IG5lZWQgdG8gY2hlY2sgZm9yIFVfUklHSFRfVE9fTEVGVC4K
KyAgICAgICAgaWYgKHVfY2hhckRpcmVjdGlvbihtX3RleHRbMF0pID09IFVfUklHSFRfVE9fTEVG
VCkgewogICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gbV90ZXh0Lmxlbmd0aCgpOwotICAg
ICAgICAgICAgU3RyaW5nQnVpbGRlciBidWZmZXI7Ci0gICAgICAgICAgICBidWZmZXIucmVzZXJ2
ZUNhcGFjaXR5KGxlbmd0aCArIDIpOworICAgICAgICAgICAgVUNoYXIqIGNoYXJhY3RlcnM7Cisg
ICAgICAgICAgICB0ZXh0VG9EcmF3ID0gU3RyaW5nOjpjcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0
aCArIDIsIGNoYXJhY3RlcnMpOwogICAgICAgICAgICAgaWYgKCFzdHlsZSgpLmlzTGVmdFRvUmln
aHREaXJlY3Rpb24oKSkgewotICAgICAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoc3BhY2UpOwot
ICAgICAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoc3VmZml4KTsKKyAgICAgICAgICAgICAgICAq
Y2hhcmFjdGVycysrID0gc3BhY2U7CisgICAgICAgICAgICAgICAgKmNoYXJhY3RlcnMrKyA9IHN1
ZmZpeDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBsZW5ndGg7ICsraSkKLSAgICAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKG1fdGV4dFtsZW5n
dGggLSBpIC0gMV0pOworICAgICAgICAgICAgICAgICpjaGFyYWN0ZXJzKysgPSBtX3RleHRbbGVu
Z3RoIC0gaSAtIDFdOwogICAgICAgICAgICAgaWYgKHN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVj
dGlvbigpKSB7Ci0gICAgICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChzdWZmaXgpOwotICAgICAg
ICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoc3BhY2UpOworICAgICAgICAgICAgICAgICpjaGFyYWN0
ZXJzKysgPSBzdWZmaXg7CisgICAgICAgICAgICAgICAgKmNoYXJhY3RlcnMrKyA9IHNwYWNlOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgdG9EcmF3ID0gYnVmZmVyLnRvU3RyaW5nKCk7CiAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAoc3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGly
ZWN0aW9uKCkpCi0gICAgICAgICAgICAgICAgdG9EcmF3ID0gbV90ZXh0ICsgU3RyaW5nKCZzdWZm
aXgsIDEpICsgU3RyaW5nKCZzcGFjZSwgMSk7CisgICAgICAgICAgICAgICAgdGV4dFRvRHJhdyA9
IG1ha2VTdHJpbmcobV90ZXh0LCBzdWZmaXgsIHNwYWNlKTsKICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICB0b0RyYXcgPSBTdHJpbmcoJnNwYWNlLCAxKSArIFN0cmluZygmc3VmZml4
LCAxKSArIG1fdGV4dDsKKyAgICAgICAgICAgICAgICB0ZXh0VG9EcmF3ID0gbWFrZVN0cmluZyhz
cGFjZSwgc3VmZml4LCBtX3RleHQpOwogICAgICAgICB9Ci0gICAgICAgIHRleHRSdW4uc2V0VGV4
dChTdHJpbmdWaWV3KHRvRHJhdykpOworICAgICAgICB0ZXh0UnVuLnNldFRleHQodGV4dFRvRHJh
dyk7CiAKICAgICAgICAgY29udGV4dC5kcmF3VGV4dChmb250LCB0ZXh0UnVuLCB0ZXh0T3JpZ2lu
KTsKICAgICB9CkBAIC0xNTY4LDggKzE1MDYsOCBAQCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OmNv
bXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkKICAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkZv
b3Rub3RlczogewogICAgICAgICBUZXh0UnVuIHJ1biA9IFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RU
ZXh0UnVuKG1fdGV4dCwgc3R5bGUoKSk7CiAgICAgICAgIGxvZ2ljYWxXaWR0aCA9IGZvbnQud2lk
dGgocnVuKTsgLy8gbm8gc3VmZml4IGZvciB0aGVzZSB0eXBlcwotICAgIH0KICAgICAgICAgYnJl
YWs7CisgICAgfQogICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Q2lyY2xlOgogICAgIGNhc2UgTGlz
dFN0eWxlVHlwZTo6RGlzYzoKICAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlNxdWFyZToKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdQYXRoVXRpbGl0aWVzLmNwcAppbmRleCA0Yjc5YzFmYWIwMmRkNTg1MWZi
YmEwNzA3ZDlkZDM0ZmNjM2ZiY2VjLi5kYjhmOTI5YWQxOWI1YmUwZjc5NDliYTViNTI0NDE4MGZj
YWE3YWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFV0aWxpdGllcy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhVdGlsaXRpZXMuY3BwCkBAIC02MCwz
OSArNjAsMzkgQEAgU3RyaW5nIGJ1aWxkU3RyaW5nRnJvbVBhdGgoY29uc3QgUGF0aCYgcGF0aCkK
ICAgICAgICAgICAgIHN3aXRjaCAoZWxlbWVudC50eXBlKSB7CiAgICAgICAgICAgICBjYXNlIFBh
dGhFbGVtZW50TW92ZVRvUG9pbnQ6CiAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ00n
KTsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZFNob3J0ZXN0Rm9ybU51bWJlcihlbGVt
ZW50LnBvaW50c1swXS54KCkpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVy
KGVsZW1lbnQucG9pbnRzWzBdLngoKSk7CiAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
JyAnKTsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZFNob3J0ZXN0Rm9ybU51bWJlcihl
bGVtZW50LnBvaW50c1swXS55KCkpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVt
YmVyKGVsZW1lbnQucG9pbnRzWzBdLnkoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICBjYXNlIFBhdGhFbGVtZW50QWRkTGluZVRvUG9pbnQ6CiAgICAgICAgICAgICAgICAg
YnVpbGRlci5hcHBlbmQoJ0wnKTsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZFNob3J0
ZXN0Rm9ybU51bWJlcihlbGVtZW50LnBvaW50c1swXS54KCkpOworICAgICAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kTnVtYmVyKGVsZW1lbnQucG9pbnRzWzBdLngoKSk7CiAgICAgICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZFNo
b3J0ZXN0Rm9ybU51bWJlcihlbGVtZW50LnBvaW50c1swXS55KCkpOworICAgICAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGVsZW1lbnQucG9pbnRzWzBdLnkoKSk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFBhdGhFbGVtZW50QWRkUXVhZEN1cnZlVG9Q
b2ludDoKICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnUScpOwotICAgICAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kU2hvcnRlc3RGb3JtTnVtYmVyKGVsZW1lbnQucG9pbnRzWzBdLngo
KSk7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIoZWxlbWVudC5wb2ludHNb
MF0ueCgpKTsKICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgICAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kU2hvcnRlc3RGb3JtTnVtYmVyKGVsZW1lbnQucG9pbnRzWzBd
LnkoKSk7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIoZWxlbWVudC5wb2lu
dHNbMF0ueSgpKTsKICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnLCcpOwotICAgICAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kU2hvcnRlc3RGb3JtTnVtYmVyKGVsZW1lbnQucG9pbnRz
WzFdLngoKSk7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIoZWxlbWVudC5w
b2ludHNbMV0ueCgpKTsKICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAg
ICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kU2hvcnRlc3RGb3JtTnVtYmVyKGVsZW1lbnQucG9p
bnRzWzFdLnkoKSk7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIoZWxlbWVu
dC5wb2ludHNbMV0ueSgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNh
c2UgUGF0aEVsZW1lbnRBZGRDdXJ2ZVRvUG9pbnQ6CiAgICAgICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmQoJ0MnKTsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZFNob3J0ZXN0Rm9ybU51
bWJlcihlbGVtZW50LnBvaW50c1swXS54KCkpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kTnVtYmVyKGVsZW1lbnQucG9pbnRzWzBdLngoKSk7CiAgICAgICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmQoJyAnKTsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZFNob3J0ZXN0Rm9y
bU51bWJlcihlbGVtZW50LnBvaW50c1swXS55KCkpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kTnVtYmVyKGVsZW1lbnQucG9pbnRzWzBdLnkoKSk7CiAgICAgICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmQoJywnKTsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZFNob3J0ZXN0
Rm9ybU51bWJlcihlbGVtZW50LnBvaW50c1sxXS54KCkpOworICAgICAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kTnVtYmVyKGVsZW1lbnQucG9pbnRzWzFdLngoKSk7CiAgICAgICAgICAgICAgICAg
YnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZFNob3J0
ZXN0Rm9ybU51bWJlcihlbGVtZW50LnBvaW50c1sxXS55KCkpOworICAgICAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kTnVtYmVyKGVsZW1lbnQucG9pbnRzWzFdLnkoKSk7CiAgICAgICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoJywnKTsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZFNo
b3J0ZXN0Rm9ybU51bWJlcihlbGVtZW50LnBvaW50c1syXS54KCkpOworICAgICAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGVsZW1lbnQucG9pbnRzWzJdLngoKSk7CiAgICAgICAgICAg
ICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZFNob3J0ZXN0Rm9ybU51bWJlcihlbGVtZW50LnBvaW50c1syXS55KCkpOworICAgICAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGVsZW1lbnQucG9pbnRzWzJdLnkoKSk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFBhdGhFbGVtZW50Q2xvc2VTdWJwYXRo
OgogICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdaJyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1RlbGVtZXRyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5jcHAKaW5kZXggMmFiNWYwNzFm
M2VjODhmYjEzNTMwMTNiYTY5MzA2NjliZTZkZmY0Ny4uNzUzOTE1ODJiMWE1ODYzNTVlYTY3ZmY5
YWYyNDg3OGM0MDk1YTAzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzVGVsZW1ldHJ5LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0zNyw3ICszNyw3IEBACiAjaW5jbHVkZSA8d3RmL01haW5U
aHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYv
UnVuTG9vcC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KIAogbmFtZXNwYWNlIFdlYktp
dCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTE1OSwxMSArMTU5LDggQEAgc3RhdGlj
IHZvaWQgc3VibWl0VG9wTGlzdCh1bnNpZ25lZCBudW1iZXJPZlJlc291cmNlc0Zyb21UaGVUb3As
IGNvbnN0IFZlY3RvcjxQcmUKICAgICB1bnNpZ25lZCB0b3BOdW1iZXJPZlRpbWVzQWNjZXNzZWRB
c0ZpcnN0UGFydHlEdWVUb1VzZXJJbnRlcmFjdGlvbiA9IG1lZGlhbihzb3J0ZWRQcmV2YWxlbnRS
ZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9uLCAwLCBudW1iZXJPZlJlc291cmNlc0Zyb21U
aGVUb3AgLSAxLCBudW1iZXJPZlRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1VzZXJJbnRl
cmFjdGlvbkdldHRlcik7CiAgICAgdW5zaWduZWQgdG9wTnVtYmVyT2ZUaW1lc0FjY2Vzc2VkQXNG
aXJzdFBhcnR5RHVlVG9TdG9yYWdlQWNjZXNzQVBJID0gbWVkaWFuKHNvcnRlZFByZXZhbGVudFJl
c291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24sIDAsIG51bWJlck9mUmVzb3VyY2VzRnJvbVRo
ZVRvcCAtIDEsIG51bWJlck9mVGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvU3RvcmFnZUFj
Y2Vzc0FQSUdldHRlcik7CiAKLSAgICBTdHJpbmdCdWlsZGVyIHByZWFtYmxlQnVpbGRlcjsKLSAg
ICBwcmVhbWJsZUJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgidG9wIik7Ci0gICAgcHJlYW1ibGVCdWls
ZGVyLmFwcGVuZE51bWJlcihudW1iZXJPZlJlc291cmNlc0Zyb21UaGVUb3ApOwotICAgIFN0cmlu
ZyBkZXNjcmlwdGlvblByZWFtYmxlID0gcHJlYW1ibGVCdWlsZGVyLnRvU3RyaW5nKCk7Ci0gICAg
CisgICAgU3RyaW5nIGRlc2NyaXB0aW9uUHJlYW1ibGUgPSBtYWtlU3RyaW5nKCJ0b3AiLCBudW1i
ZXJPZlJlc291cmNlc0Zyb21UaGVUb3ApOworCiAgICAgc3RvcmUuc2VuZERpYWdub3N0aWNNZXNz
YWdlV2l0aFZhbHVlKERpYWdub3N0aWNMb2dnaW5nS2V5czo6cmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1RlbGVtZXRyeUtleSgpLCBkZXNjcmlwdGlvblByZWFtYmxlICsgIlByZXZhbGVudFJlc291cmNl
c1dpdGhVc2VySW50ZXJhY3Rpb24iLAogICAgICAgICB0b3BQcmV2YWxlbnRSZXNvdXJjZXNXaXRo
VXNlckludGVyYWN0aW9uLCBzaWduaWZpY2FudEZpZ3VyZXNGb3JMb2dnZWRWYWx1ZXMsIFNob3Vs
ZFNhbXBsZTo6Tm8pOwogICAgIHN0b3JlLnNlbmREaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShE
aWFnbm9zdGljTG9nZ2luZ0tleXM6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnlLZXko
KSwgZGVzY3JpcHRpb25QcmVhbWJsZSArICJTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zIiwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmNwcAppbmRleCA0
MDIyZWZkY2I5N2E1MDlmNmUwZWY4OTVkY2I2NzM4NjZhYTlmNTZmLi5lN2NlYzQ0NjQzZTQ4MTQw
OTgwMWI0M2Y0MWY4MGZjNzNjZDY0M2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJVXNlclNjcmlwdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVVzZXJTY3JpcHQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDE4ICsyNiwxNCBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkFQSVVzZXJTY3JpcHQuaCIKIAotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMu
aD4KIAogbmFtZXNwYWNlIEFQSSB7CiAKIFdURjo6VVJMIFVzZXJTY3JpcHQ6OmdlbmVyYXRlVW5p
cXVlVVJMKCkKIHsKICAgICBzdGF0aWMgdWludDY0X3QgaWRlbnRpZmllcjsKLQotICAgIFN0cmlu
Z0J1aWxkZXIgdXJsU3RyaW5nQnVpbGRlcjsKLSAgICB1cmxTdHJpbmdCdWlsZGVyLmFwcGVuZExp
dGVyYWwoInVzZXItc2NyaXB0OiIpOwotICAgIHVybFN0cmluZ0J1aWxkZXIuYXBwZW5kTnVtYmVy
KCsraWRlbnRpZmllcik7Ci0gICAgcmV0dXJuIHsgeyB9LCB1cmxTdHJpbmdCdWlsZGVyLnRvU3Ry
aW5nKCkgfTsKKyAgICByZXR1cm4geyB7IH0sIG1ha2VTdHJpbmcoInVzZXItc2NyaXB0OiIsICsr
aWRlbnRpZmllcikgfTsKIH0KIAogVXNlclNjcmlwdDo6VXNlclNjcmlwdChXZWJDb3JlOjpVc2Vy
U2NyaXB0IHVzZXJTY3JpcHQsIEFQSTo6VXNlckNvbnRlbnRXb3JsZCYgd29ybGQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlclN0eWxlU2hlZXQuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0LmNwcAppbmRleCAz
ZWE0NjFmZTFhMTU2YzZhOWQ1ODk1ODQwMzdmZTM4N2MyOTA3ZjA4Li5mZDY5YjgzMjA5NWZmOTk0
MjI4OWI3OTlmOTlhNDg1NGViM2U3ZjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJVXNlclN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElVc2VyU3R5bGVTaGVldC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsMTggKzI2LDE0IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiQVBJVXNlclN0eWxlU2hlZXQuaCIKIAotI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRl
bmF0ZU51bWJlcnMuaD4KIAogbmFtZXNwYWNlIEFQSSB7CiAKIFdURjo6VVJMIFVzZXJTdHlsZVNo
ZWV0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpCiB7CiAgICAgc3RhdGljIHVpbnQ2NF90IGlkZW50aWZp
ZXI7Ci0KLSAgICBTdHJpbmdCdWlsZGVyIHVybFN0cmluZ0J1aWxkZXI7Ci0gICAgdXJsU3RyaW5n
QnVpbGRlci5hcHBlbmRMaXRlcmFsKCJ1c2VyLXN0eWxlLXNoZWV0OiIpOwotICAgIHVybFN0cmlu
Z0J1aWxkZXIuYXBwZW5kTnVtYmVyKCsraWRlbnRpZmllcik7Ci0gICAgcmV0dXJuIHsgeyB9LCB1
cmxTdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkgfTsKKyAgICByZXR1cm4geyB7IH0sIG1ha2VTdHJp
bmcoInVzZXItc3R5bGUtc2hlZXQ6IiwgKytpZGVudGlmaWVyKSB9OwogfQogCiBVc2VyU3R5bGVT
aGVldDo6VXNlclN0eWxlU2hlZXQoV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQgdXNlclN0eWxlU2hl
ZXQsIEFQSTo6VXNlckNvbnRlbnRXb3JsZCYgd29ybGQpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjg4MzQ5MDMzY2VlYzcyOGJkY2QyYjI4ZDky
MjcyNTQ5ZTBjNjc0Yy4uODE0YjBkZTViZjcxODI5ZTNhZmNmOWRlNzQxNTNkODE0N2M3MDVkYSAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE4IEBACisyMDE5LTA2LTAyICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKwor
ICAgICAgICBGaW5pc2ggY2xlYW51cCBvZiBTdHJpbmc6Om51bWJlciBmb3IgZmxvYXRpbmcgcG9p
bnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODQ3
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvV1RGU3RyaW5nLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OnRlc3RTdHJpbmdOdW1iZXIpOiBHbyBiYWNrIHRvIGNhbGxpbmcgU3RyaW5nOjpudW1iZXIg
aW5zdGVhZCBvZgorICAgICAgICBTdHJpbmc6Om51bWJlclRvU3RyaW5nRUNNQVNjcmlwdC4KKwor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlLmNwcDoKKyAgICAgICAgKFdUUjo6ZHVtcEZyYW1lU2Nyb2xsUG9zaXRpb24pOiBVc2UgYXBw
ZW5kTnVtYmVyIGluc3RlYWQgb2YgYXBwZW5kRUNNQVNjcmlwdE51bWJlcgorICAgICAgICBzaW5j
ZSB0aGF0IGlzIG5vdyB0aGUgZGVmYXVsdC4KKwogMjAxOS0wNS0zMSAgU2lodWkgTGl1ICA8c2lo
dWlfbGl1QGFwcGxlLmNvbT4KIAogICAgICAgICBUZXN0V2ViS2l0QVBJLldLV2ViVmlldy5Mb2Nh
bFN0b3JhZ2VQcm9jZXNzU3VzcGVuZHMgaXMgZmxha3kKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL1dURlN0cmluZy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9XVEZTdHJpbmcuY3BwCmluZGV4IDdhMDU3ZGNhZmRhNjY2NGZhZGU2MDhkNjlmMmVm
YzZhNDEyZjY4MjYuLjdhZDIwMjhmNzFhNmFhYTA4NDM4NTA1NGI5YWUwM2Q4ZTIwNDY1NWIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dURlN0cmluZy5jcHAKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV1RGU3RyaW5nLmNwcApAQCAtMTcyLDcg
KzE3Miw3IEBAIFRFU1QoV1RGLCBTdHJpbmdOdW1iZXJGaXhlZFdpZHRoKQogc3RhdGljIGlubGlu
ZSBjb25zdCBjaGFyKiB0ZXN0U3RyaW5nTnVtYmVyKGRvdWJsZSBudW1iZXIpCiB7CiAgICAgc3Rh
dGljIGNoYXIgdGVzdEJ1ZmZlclsxMDBdID0geyB9OwotICAgIHN0ZDo6c3RybmNweSh0ZXN0QnVm
ZmVyLCBTdHJpbmc6Om51bWJlclRvU3RyaW5nRUNNQVNjcmlwdChudW1iZXIpLnV0ZjgoKS5kYXRh
KCksIDk5KTsKKyAgICBzdGQ6OnN0cm5jcHkodGVzdEJ1ZmZlciwgU3RyaW5nOjpudW1iZXIobnVt
YmVyKS51dGY4KCkuZGF0YSgpLCA5OSk7CiAgICAgcmV0dXJuIHRlc3RCdWZmZXI7CiB9CiAKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlLmNwcAppbmRleCA0MDAxZjg2MmI5YzMxNTZmMzNjYTUzODgzMTFjODkw
OGU0ZGRmMzEyLi5kYzlkZTE2NjM3MmRkMDQwNjQ0NTc4OGE4YzNjM2FiODA3NjAxNjJiIDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZVBhZ2UuY3BwCkBAIC03ODIsOSArNzgyLDkgQEAgc3RhdGljIHZvaWQgZHVt
cEZyYW1lU2Nyb2xsUG9zaXRpb24oV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgU3RyaW5nQnVpbGRl
ciYgc3RyaW4KICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCInICIpOwogICAg
IH0KICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoInNjcm9sbGVkIHRvICIpOwotICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kRUNNQVNjcmlwdE51bWJlcih4KTsKKyAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZE51bWJlcih4KTsKICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnLCcpOwotICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kRUNNQVNjcmlwdE51bWJlcih5KTsKKyAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZE51bWJlcih5KTsKICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnXG4nKTsKIH0K
IAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>