<?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>235461</bug_id>
          
          <creation_ts>2022-01-21 16:16:23 -0800</creation_ts>
          <short_desc>Improve FourCC to use more inlining, fix incorrect mix of WEBCORE_EXPORT on entire class with inline functions</short_desc>
          <delta_ts>2022-01-23 17:00:44 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1832926</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-21 16:16:23 -0800</bug_when>
    <thetext>Improve FourCC to use more inlining, fix incorrect mix of WEBCORE_EXPORT on entire class with inline functions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832937</commentid>
    <comment_count>1</comment_count>
      <attachid>449712</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-21 16:49:58 -0800</bug_when>
    <thetext>Created attachment 449712
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833057</commentid>
    <comment_count>2</comment_count>
      <attachid>449741</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-22 16:21:52 -0800</bug_when>
    <thetext>Created attachment 449741
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833116</commentid>
    <comment_count>3</comment_count>
      <attachid>449758</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-23 11:21:13 -0800</bug_when>
    <thetext>Created attachment 449758
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833122</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-23 12:04:44 -0800</bug_when>
    <thetext>OK, after two false starts, this one is working and ready for review.

For FourCC itself, this makes the code easier to read, more elegant, reduces reliance on reinterpret_cast and assumptions that all platforms are little-endian, and even makes it a bit more efficient, although mostly in places where efficiency isn’t critical.

On the other hand, for the ISOBox classes, while this fixes the problem where the coding style checker says &quot;never use inline functions in a class marked WEBCORE_EXPORT&quot;, it makes the code less elegant. The underlying cause is that because these seemingly-simple structures are instead a class hierarchy that descends from a polymorphic class with a virtual destructor. That pattern isn’t working all that well to keep the code simple, and at some point it might be worth exploring whether it’s really needed, and considering alternatives.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833123</commentid>
    <comment_count>5</comment_count>
      <attachid>449758</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-23 12:07:47 -0800</bug_when>
    <thetext>Comment on attachment 449758
Patch

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

&gt; Source/WebCore/platform/graphics/FourCC.h:34
&gt; +    constexpr FourCC(uint32_t value) : value { value } { }

Would like to remove this so people don’t accidentally use it in cross-platform code instead of string literals, but sadly it’s too valuable for interoperating with Cocoa API that uses unsigned 32-bit ints for this, the type FourCharCode and such, so I was unable to delete it at this time.

&gt; Source/WebCore/platform/graphics/FourCC.h:48
&gt; +    value = data[0] &lt;&lt; 24 | data[1] &lt;&lt; 16 | data[2] &lt;&lt; 8 | data[3];

Should use member construction syntax for this instead of assignment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833131</commentid>
    <comment_count>6</comment_count>
      <attachid>449758</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-23 12:39:08 -0800</bug_when>
    <thetext>Comment on attachment 449758
Patch

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

&gt; Source/WebCore/platform/graphics/FourCC.cpp:44
&gt; +std::array&lt;char, 5&gt; FourCC::string() const

We could make this inline and put it in the header. Also could make it constexpr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833156</commentid>
    <comment_count>7</comment_count>
      <attachid>449758</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2022-01-23 16:08:39 -0800</bug_when>
    <thetext>Comment on attachment 449758
Patch

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

&gt; Source/WebCore/platform/graphics/FourCC.cpp:36
&gt; +        static_cast&lt;char&gt;(string[0]),

Are there any other rules worth asserting here? For instance, can a character be &apos;\0&apos;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833162</commentid>
    <comment_count>8</comment_count>
      <attachid>449758</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-23 16:38:31 -0800</bug_when>
    <thetext>Comment on attachment 449758
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/FourCC.cpp:36
&gt;&gt; +        static_cast&lt;char&gt;(string[0]),
&gt; 
&gt; Are there any other rules worth asserting here? For instance, can a character be &apos;\0&apos;?

In practice, I think these all need to be printables, in the range 0x20-0x7F. But not sure if it’s valuable in practice to check that, though. Making a FourCC successfully with values &lt; 0x20 for some of the characters would not have any ill effect that I am aware of. Mainly the reason this function checks that the string is all ASCII is we don’t want to chop non-8-bit UTF-16 code units and use just the low 8 bits. I think I won’t add more checks.

Related: The &apos;\0&apos; below is just there so we can reuse the constructor that is mainly present for ASCII literals, and it will be collapsed away by inlining.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833163</commentid>
    <comment_count>9</comment_count>
      <attachid>449771</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-23 16:40:18 -0800</bug_when>
    <thetext>Created attachment 449771
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833169</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-23 16:55:43 -0800</bug_when>
    <thetext>Committed r288426 (246317@trunk): &lt;https://commits.webkit.org/246317@trunk&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833171</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-01-23 17:00:44 -0800</bug_when>
    <thetext>&lt;rdar://problem/87947650&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449712</attachid>
            <date>2022-01-21 16:49:58 -0800</date>
            <delta_ts>2022-01-22 16:21:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235461-20220121164957.patch</filename>
            <type>text/plain</type>
            <size>27623</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4Mzg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2YxMDNlYmYzZTY3ZWMz
YTdiYmRiOTQyYWNlN2RmYzc5ZWFjODBlOS4uMjFlNTlmOTE2OGNmNjY0MmRmYWVjM2MxZGM2Zjc3
NTlhY2Q3ZWVmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDIyLTAxLTIxICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBJbXByb3ZlIEZvdXJDQyB0byB1
c2UgbW9yZSBpbmxpbmluZywgZml4IGluY29ycmVjdCBtaXggb2YgV0VCQ09SRV9FWFBPUlQgb24g
ZW50aXJlIGNsYXNzIHdpdGggaW5saW5lIGZ1bmN0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NDYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb3VyQ0MuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Rm91ckNDOjpmcm9tU3RyaW5nKTogVGFrZSBhIFN0cmluZ1Zp
ZXcgaW5zdGVhZCBvZiBTdHJpbmcuCisgICAgICAgIFJlbW92ZWQgdW5uZWNlc3NhcnkgYWxsb2Nh
dGlvbiBvZiBhIHRlbXBvcmFyeSBDU3RyaW5nIGZvciB0aGUgcmVzdWx0CisgICAgICAgIG9mIFN0
cmluZzo6YXNjaWkuCisgICAgICAgIChXZWJDb3JlOjpGb3VyQ0M6OnN0cmluZyBjb25zdCk6IFJl
bmFtZSBmcm9tIHRvU3RyaW5nIHRvIHN0cmluZyBhbmQKKyAgICAgICAgY2hhbmdlZCB0aGUgcmV0
dXJuIHR5cGUgdG8gc3RkOjphcnJheSBpbnN0ZWFkIG9mIFN0cmluZy4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ZvdXJDQy5oOiBNYWRlIGFsbCB0aGUgY29uc3RydWN0b3JzIGNvbnN0
ZXhwci4KKyAgICAgICAgQ2hhbmdlZCB0aGUgc3RyaW5nIGxpdGVyYWwgY29uc3RydWN0b3IgdG8g
anVzdCB3b3JrIHdpdGggNC1jaGFyYWN0ZXIKKyAgICAgICAgc3RyaW5ncy4gVGhlIG9sZCBvbmUg
d2FzIGEgdGVtcGxhdGUgZm9yIGFueSBsZW5ndGggc3RyaW5nLCBidXQgdGhlbgorICAgICAgICBh
c3NlcnRlZCBpdCB3YXMgNCBjaGFyYWN0ZXJzIGxvbmcsIHdoaWNoIGlzIGEgcm91bmRhYm91dCB3
YXkgdG8gZG8gaXQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlSEVWQ0RlY29kZXJDb25maWd1cmF0aW9uUmVj
b3JkKTogVGFrZSBGb3VyQ0MgaW5zdGVhZAorICAgICAgICBvZiBjb25zdCBGb3VyQ0MmLiBBbHNv
IHJlbW92ZWQgdW5uZWNlc3NhcnkgZXhwbGljaXQgY29udmVyc2lvbiB0bworICAgICAgICBGb3Vy
Q0Mgc2luY2UgZm91ciBjaGFyYWN0ZXIgc3RyaW5ncy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9IRVZDVXRpbGl0aWVzLmg6IERpdHRvLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0lTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveC5oOgorICAgICAgICBS
ZW1vdmVkIHVubmVlZGVkIFdFQkNPUkVfRVhQT1JUIG9uIHRoZXNlIGNsYXNzZXMuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUFWRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpw
cm9jZXNzTmF0aXZlU2FtcGxlcyk6IFJlbW92ZWQKKyAgICAgICAgdW5uZWNlc2FyeSBjYWxscyB0
byB0b1N0cmluZywgbG9nZ2luZyBjYW4gaGFuZGxlIEZvdXJDQyB3aXRob3V0IGl0LgorICAgICAg
ICBBbHNvIHJlbW92ZWQgdW5uZWVkZWQgdHlwZSBjYXN0cyB0byBzaXplX3QuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVkFzc2V0VHJhY2tVdGlsaXRp
ZXMubW06CisgICAgICAgIChXZWJDb3JlOjpjb250ZW50VHlwZXNUb0NvZGVjcyk6IFJlbW92ZWQg
dW5uZWNlc3NhcnkgYWxsb2NhdGlvbiBvZgorICAgICAgICBhIFN0cmluZyBieSB1c2luZyBTdHJp
bmdWaWV3IGZvciB0aGUgc3Vic3RyaW5nLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvSEVWQ1V0aWxpdGllc0NvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6dmFsaWRhdGVI
RVZDUGFyYW1ldGVycyk6IEFkZGVkIGFuIGV4cGxpY2l0IGNhc3QgdG8gU3RyaW5nCisgICAgICAg
IHNpbmNlIEZvdXJDQzo6ZnJvbVN0cmluZyBub3cgdGFrZXMgYSBTdHJpbmdWaWV3LiBTYWRseSB0
aGVyZSdzIG5vdAorICAgICAgICBhIHRyaXZpYWwgd2F5IHRvIGRvIHRoaXMgd2l0aG91dCBhbGxv
Y2F0aW5nIGEgU3RyaW5nLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvR3JhcGhp
Y3NDb250ZXh0R0xDVkNvY29hLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMQ1ZDb2NvYTo6Y29weVZpZGVvU2FtcGxlVG9UZXh0dXJlKToKKyAgICAgICAgU2luY2UgRm91
ckNDOjpzdHJpbmcgbm93IHJldHVybnMgYSBzdGQ6OmFycmF5IHdpdGggYSBDLXN0eWxlCisgICAg
ICAgIG51bGwtdGVybWluYXRlZCBzdHJpbmcsIHVzZSBpdCBpbnN0ZWFkIG9mIGNhbGxpbmcgdG9T
dHJpbmcgYW5kCisgICAgICAgIHRoZW4gdXRmOC4gQ2xlYW5lciBhbmQgYWxzbyBtdWNoIG1vcmUg
ZWZmaWNpZW50LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT0JveC5jcHA6
IE1vdmVkIGNvbnN0cnVjdG9ycyBhbmQKKyAgICAgICAgZGVzdHJ1Y3RvcnMgc28gdGhleSBhcmUg
bm8gbG9uZ2VyIGlubGluZWQgc28gdGhlcmUgaXMgbm8gbmVlZCB0bworICAgICAgICBleHBvcnQg
dGhlIHZ0YWJsZS4KKyAgICAgICAgKFdlYkNvcmU6OklTT0JveDo6cGVla0JveCk6IFJlbW92ZWQg
dW5uZWNlc3NhcnkgaW5pdGlhbGl6YXRpb24KKyAgICAgICAgb2YgRm91ckNDIHNpbmNlIHRoZXkg
YXJlIHplcm8gYnkgZGVmYXVsdC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9J
U09Cb3guaDogUmVtb3ZlZCBXRUJDT1JFX0VYUE9SVCBvZgorICAgICAgICB0aGUgZW50aXJlIGNs
YXNzLCBzaW5jZSB0aGF0J3Mgbm90IGZ1bGx5IGNvbXBhdGlibGUgd2l0aCBhIGNsYXNzCisgICAg
ICAgIHdpdGggaW5saW5lIGZ1bmN0aW9ucyAod2FybmluZyBpcyBkb25lIGJ5IGNoZWNrLXdlYmtp
dC1zdHlsZSkuCisgICAgICAgIFB1dCBXRUJDT1JFX0VYUE9SVCBvbiBpbmRpdmlkdWFsIGZ1bmN0
aW9ucyBpbnN0ZWFkLiAgQWxzbyB1c2Ugc29tZQorICAgICAgICBtb3JlIGNvbnN0ZXhwciwgcmVt
b3ZlZCB1bm5lZWRlZCBGb3VyQ0MgaW5pdGlhbGl6YXRpb24gc2luY2UgaXQgaXMKKyAgICAgICAg
emVybyBieSBkZWZhdWx0LCBhbmQgdXNlIEZvdXJDQywgbm90IGNvbnN0IEZvdXJDQyYgZm9yIHJl
dHVybiB2YWx1ZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09PcmlnaW5h
bEZvcm1hdEJveC5oOiBSZW1vdmVkIHVubmVlZGVkCisgICAgICAgIEZvdXJDQyBpbml0aWFsaXph
dGlvbiBzaW5jZSBpdCBpcyB6ZXJvIGJ5IGRlZmF1bHQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvaXNvL0lTT1NjaGVtZVR5cGVCb3guaDogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9pc28vSVNPVlRUQ3VlLmNwcDogTW92ZWQgY29uc3RydWN0b3JzIGFuZAorICAg
ICAgICBkZXN0cnVjdG9ycyBzbyB0aGV5IGFyZSBubyBsb25nZXIgaW5saW5lZCBzbyB0aGVyZSBp
cyBubyBuZWVkIHRvCisgICAgICAgIGV4cG9ydCB0aGUgdnRhYmxlLgorICAgICAgICAoV2ViQ29y
ZTo6SVNPV2ViVlRUQ3VlOjpwYXJzZSk6IFVzZSBQUkl1NjQgaW5zdGVhZCBvZiBjYXN0aW5nCisg
ICAgICAgIHRvIHNpemVfdCwgbm8gbmVlZCB0byByZWx5IG9uIHRoZSByZWxhdGlvbnNoaXAgYmV0
d2VlbiB0eXBlIHNpemVzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1ZU
VEN1ZS5oOiBSZW1vdmVkIFdFQkNPUkVfRVhQT1JUIG9mCisgICAgICAgIHRoZSBlbnRpcmUgY2xh
c3MsIHNpbmNlIHRoYXQncyBub3QgZnVsbHkgY29tcGF0aWJsZSB3aXRoIGEgY2xhc3MKKyAgICAg
ICAgd2l0aCBpbmxpbmUgZnVuY3Rpb25zICh3YXJuaW5nIGlzIGRvbmUgYnkgY2hlY2std2Via2l0
LXN0eWxlKS4KKyAgICAgICAgUHV0IFdFQkNPUkVfRVhQT1JUIG9uIGluZGl2aWR1YWwgZnVuY3Rp
b25zIGluc3RlYWQuCisKIDIwMjItMDEtMjEgIE1pa2UgR29yc2UgIDxtZ29yc2VAc3VzZS5jb20+
CiAKICAgICAgICAgQnVpbGQgZmFpbHVyZSB3aXRoIGcrKyAxMjogc3RkOjpleGNoYW5nZSB1bmRl
ZmluZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCA4OTk5YTJlYTE5NmU4NTc5MDIwYjAxM2I0ZjUwN2U3NTZjOTVhYmMzLi44ZGU1
ZDQyOTBhNTNkMmQyOTdjMzkzMzMyZDMxNTk4ODg2ZTkyMzcxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjU2NCw2ICsxMjU2
NCw3IEBACiAJCTkzMkNDMEQxMURGRkQ2NjcwMDRDMEY5RiAvKiBKU01lZGlhVHJhY2tDb25zdHJh
aW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01lZGlhVHJhY2tDb25z
dHJhaW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzJDQzBGMDFERkZEOEQ0
MDA0QzBGOUYgLyogTWVkaWFUcmFja0NvbnN0cmFpbnRzLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBNZWRpYVRyYWNrQ29uc3RyYWludHMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5MzJDQzBGNjFERkZEQTFGMDA0QzBGOUYgLyogTWVkaWFUcmFja0NvbnN0cmFpbnRzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhVHJhY2tDb25zdHJh
aW50cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzMkQyNkY0Mjc5Qjg1MjYw
MDREQ0Q4RCAvKiBGb3VyQ0MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm91ckNDLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMyRTE2MDgwQUY1NzgzNDAwMjVGNDA4IC8qIEZy
YW1lTG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZyYW1l
TG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMyRjFEMzkyNzBEMjY5
RjAwMEMyODEzIC8qIEpTRE9NQXN5bmNJdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU0RPTUFzeW5jSXRlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTMyRjFENDMyNzBFQkYzODAwMEMyODEzIC8qIEpTRmlsZVN5c3RlbURpcmVjdG9yeUhh
bmRsZUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0ZpbGVTeXN0ZW1EaXJlY3RvcnlI
YW5kbGVDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjg4MzcsNiAr
Mjg4MzgsNyBAQAogCQkJCTRBNkU5RkM2MTNDMTdENTcwMDQ2QTdGOCAvKiBGb250VGFnZ2VkU2V0
dGluZ3MuaCAqLywKIAkJCQk3Q0U2Q0JGQzE4N0YzOTQ5MDBENDZCRjUgLyogRm9ybWF0Q29udmVy
dGVyLmNwcCAqLywKIAkJCQk3Q0U2Q0JGQTE4N0YzNzA3MDBENDZCRjUgLyogRm9ybWF0Q29udmVy
dGVyLmggKi8sCisJCQkJOTMyRDI2RjQyNzlCODUyNjAwNERDRDhEIC8qIEZvdXJDQy5jcHAgKi8s
CiAJCQkJQ0Q1MjVCQTIxRUUwQjEwNzAwNzg4REY1IC8qIEZvdXJDQy5oICovLAogCQkJCTRGQjM5
MEFDMTVFRjYxRjMwMDdBRDUxRiAvKiBHZW5lcmF0ZWRJbWFnZS5jcHAgKi8sCiAJCQkJQkMyM0Yw
REEwREFGRjRBNDAwOUZEQzkxIC8qIEdlbmVyYXRlZEltYWdlLmggKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb3VyQ0MuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm91ckNDLmNwcAppbmRleCBkOWE4OTYyYjBiYjBlOWE3Yjg2
Yzg1NzMzMDhiODVkOTcyYjVkMWFjLi40MTU5NGM4NjE5ZDk3ZTIwN2YzMGNiZDRhZjVkNzIwMjMz
NTI0ODlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb3Vy
Q0MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvdXJDQy5jcHAK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDI4
ICsyOCwyOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0ZDo6b3B0aW9uYWw8Rm91ckND
PiBGb3VyQ0M6OmZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmdWYWx1ZSkKK3N0ZDo6b3B0
aW9uYWw8Rm91ckNDPiBGb3VyQ0M6OmZyb21TdHJpbmcoU3RyaW5nVmlldyBzdHJpbmcpCiB7Ci0g
ICAgYXV0byBhc2NpaVZhbHVlID0gc3RyaW5nVmFsdWUuYXNjaWkoKTsKLSAgICBpZiAoYXNjaWlW
YWx1ZS5sZW5ndGgoKSAhPSA0KQorICAgIGlmIChzdHJpbmcubGVuZ3RoKCkgIT0gNCB8fCAhc3Ry
aW5nLmlzQWxsQVNDSUkoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIGNv
bnN0IGNoYXIqIGRhdGEgPSBhc2NpaVZhbHVlLmRhdGEoKTsKLSAgICBBU1NFUlQoYXNjaWlWYWx1
ZS5kYXRhKCkpOwotICAgIHVpbnQzMl90IHZhbHVlID0gZGF0YVswXSA8PCAyNCB8IGRhdGFbMV0g
PDwgMTYgfCBkYXRhWzJdIDw8IDggfCBkYXRhWzNdOwotICAgIHJldHVybiBGb3VyQ0ModmFsdWUp
OworICAgIGNoYXIgY2hhcmFjdGVyc1tdID0geworICAgICAgICBzdGF0aWNfY2FzdDxjaGFyPihz
dHJpbmdbMF0pLAorICAgICAgICBzdGF0aWNfY2FzdDxjaGFyPihzdHJpbmdbMV0pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxjaGFyPihzdHJpbmdbMl0pLAorICAgICAgICBzdGF0aWNfY2FzdDxjaGFy
PihzdHJpbmdbM10pLAorICAgICAgICAnXDAnCisgICAgfTsKKyAgICByZXR1cm4geyB7IGNoYXJh
Y3RlcnMgfSB9OwogfQogCi1TdHJpbmcgRm91ckNDOjp0b1N0cmluZygpIGNvbnN0CitzdGQ6OmFy
cmF5PGNoYXIsIDU+IEZvdXJDQzo6c3RyaW5nKCkgY29uc3QKIHsKLSAgICBWZWN0b3I8TENoYXIs
IDQ+IGRhdGEgPSB7Ci0gICAgICAgIExDaGFyKHZhbHVlID4+IDI0KSwKLSAgICAgICAgTENoYXIo
KHZhbHVlID4+IDE2KSAmIDB4RkYpLAotICAgICAgICBMQ2hhcigodmFsdWUgPj4gOCkgJiAweEZG
KSwKLSAgICAgICAgTENoYXIodmFsdWUgJiAweEZGKSwKKyAgICByZXR1cm4geworICAgICAgICBz
dGF0aWNfY2FzdDxjaGFyPih2YWx1ZSA+PiAyNCksCisgICAgICAgIHN0YXRpY19jYXN0PGNoYXI+
KHZhbHVlID4+IDE2KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8Y2hhcj4odmFsdWUgPj4gOCksCisg
ICAgICAgIHN0YXRpY19jYXN0PGNoYXI+KHZhbHVlKSwKKyAgICAgICAgJ1wwJwogICAgIH07Ci0K
LSAgICByZXR1cm4gU3RyaW5nOjphZG9wdChXVEZNb3ZlKGRhdGEpKTsKIH0KIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm91ckNDLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb3VyQ0MuaAppbmRleCAyYTY0YzRiYzE1NDYzY2Vj
MTRiM2MyZjM5ZjI1NGZkZDA1M2JmMWYyLi5hODA5ZTE1ZmEwNzlmZDNmYmE5NWMxNDM2MDhmODll
M2IxZDVkY2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b3VyQ0MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb3VyQ0MuaApA
QCAtMjUsMjkgKzI1LDMxIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBzdHJ1Y3QgRm91ckNDIHsKLSAgICBGb3VyQ0MoKSA9IGRlZmF1bHQ7Ci0gICAgRm91
ckNDKHVpbnQzMl90IHZhbHVlKSA6IHZhbHVlKHZhbHVlKSB7IH0KKyAgICBjb25zdGV4cHIgRm91
ckNDKCkgPSBkZWZhdWx0OworICAgIGNvbnN0ZXhwciBGb3VyQ0ModWludDMyX3QgdmFsdWUpIDog
dmFsdWUgeyB2YWx1ZSB9IHsgfQorICAgIGNvbnN0ZXhwciBGb3VyQ0MoY29uc3QgY2hhciAoJm51
bGxUZXJtaW5hdGVkU3RyaW5nKVs1XSk7CisgICAgc3RkOjphcnJheTxjaGFyLCA1PiBzdHJpbmco
KSBjb25zdDsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxGb3VyQ0M+IGZyb21TdHJpbmcoU3Ry
aW5nVmlldyk7CiAKLSAgICB0ZW1wbGF0ZTxzdGQ6OnNpemVfdCBOPgotICAgIGNvbnN0ZXhwciBG
b3VyQ0MoY29uc3QgY2hhciAoJmRhdGEpW05dKQotICAgIHsKLSAgICAgICAgc3RhdGljX2Fzc2Vy
dCgoTiAtIDEpID09IDQsICJGb3VyQ0MgbGl0ZXJhbHMgbXVzdCBiZSBleGFjdGx5IDQgY2hhcmFj
dGVycyBsb25nIik7Ci0gICAgICAgIHZhbHVlID0gZGF0YVswXSA8PCAyNCB8IGRhdGFbMV0gPDwg
MTYgfCBkYXRhWzJdIDw8IDggfCBkYXRhWzNdOwotICAgIH0KKyAgICB1aW50MzJfdCB2YWx1ZSB7
IDAgfTsKK307CiAKLSAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgc3RkOjpvcHRpb25hbDxGb3VyQ0M+IGZyb21TdHJpbmcoY29uc3QgU3RyaW5n
Jik7Citib29sIG9wZXJhdG9yPT0oRm91ckNDLCBGb3VyQ0MpOworYm9vbCBvcGVyYXRvciE9KEZv
dXJDQywgRm91ckNDKTsKIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGb3VyQ0MmIG90aGVy
KSBjb25zdCB7IHJldHVybiB2YWx1ZSA9PSBvdGhlci52YWx1ZTsgfQotICAgIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBGb3VyQ0MmIG90aGVyKSBjb25zdCB7IHJldHVybiB2YWx1ZSAhPSBvdGhlci52
YWx1ZTsgfQorY29uc3RleHByIEZvdXJDQzo6Rm91ckNDKGNvbnN0IGNoYXIgKCZkYXRhKVs1XSkK
K3sKKyAgICBBU1NFUlRfVU5ERVJfQ09OU1RFWFBSX0NPTlRFWFQoZGF0YVs0XSA9PSAnXDAnKTsK
KyAgICB2YWx1ZSA9IGRhdGFbMF0gPDwgMjQgfCBkYXRhWzFdIDw8IDE2IHwgZGF0YVsyXSA8PCA4
IHwgZGF0YVszXTsKK30KIAotICAgIHVpbnQzMl90IHZhbHVlIHsgMCB9OwotfTsKK2lubGluZSBi
b29sIG9wZXJhdG9yPT0oRm91ckNDIGEsIEZvdXJDQyBiKSB7IHJldHVybiBhLnZhbHVlID09IGIu
dmFsdWU7IH0KK2lubGluZSBib29sIG9wZXJhdG9yIT0oRm91ckNDIGEsIEZvdXJDQyBiKSB7IHJl
dHVybiBhLnZhbHVlICE9IGIudmFsdWU7IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkBA
IC01Niw3ICs1OCw3IEBAIG5hbWVzcGFjZSBXVEYgewogdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVj
dCBMb2dBcmd1bWVudDsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29yZTo6
Rm91ckNDPiB7Ci0gICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBXZWJDb3JlOjpGb3Vy
Q0MmIGNvZGUpIHsgcmV0dXJuIGNvZGUudG9TdHJpbmcoKTsgfQorICAgIHN0YXRpYyBTdHJpbmcg
dG9TdHJpbmcoY29uc3QgV2ViQ29yZTo6Rm91ckNDJiBjb2RlKSB7IHJldHVybiBjb2RlLnN0cmlu
ZygpLmRhdGEoKTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0hFVkNVdGlsaXRpZXMuY3BwCmluZGV4IDMyOGVhNDI0
YWU4MTI0MWZmYzAzY2Y1ODI1Mzg1MjZhZWJjM2ZmNTMuLjBiNDE1MzdjZjE2ZDQ4MDVkMGNhNWM2
NzQyMDczNTBkZDcyZDM3NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0hFVkNVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0hFVkNVdGlsaXRpZXMuY3BwCkBAIC0yMzgsNyArMjM4LDcgQEAgU3RyaW5nIGNyZWF0
ZUhFVkNDb2RlY1BhcmFtZXRlcnNTdHJpbmcoY29uc3QgSEVWQ1BhcmFtZXRlcnMmIHBhcmFtZXRl
cnMpCiAgICAgICAgICwgY29tcGF0aWJpbGl0eUZsYWdzLnRvU3RyaW5nKCkpOwogfQogCi1zdGQ6
Om9wdGlvbmFsPEhFVkNQYXJhbWV0ZXJzPiBwYXJzZUhFVkNEZWNvZGVyQ29uZmlndXJhdGlvblJl
Y29yZChjb25zdCBGb3VyQ0MmIGNvZGVjQ29kZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIp
CitzdGQ6Om9wdGlvbmFsPEhFVkNQYXJhbWV0ZXJzPiBwYXJzZUhFVkNEZWNvZGVyQ29uZmlndXJh
dGlvblJlY29yZChGb3VyQ0MgY29kZWNDb2RlLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
IHsKICAgICAvLyBJU08vSUVDIDE0NDk2LTE1OjIwMTQKICAgICAvLyA4LjMuMy4xIEhFVkMgZGVj
b2RlciBjb25maWd1cmF0aW9uIHJlY29yZApAQCAtMjQ4LDkgKzI0OCw5IEBAIHN0ZDo6b3B0aW9u
YWw8SEVWQ1BhcmFtZXRlcnM+IHBhcnNlSEVWQ0RlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkKGNv
bnN0IEZvdXJDQyYKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIEhFVkNQYXJh
bWV0ZXJzIHBhcmFtZXRlcnM7Ci0gICAgaWYgKGNvZGVjQ29kZSA9PSBGb3VyQ0MoImhldjEiKSkK
KyAgICBpZiAoY29kZWNDb2RlID09ICJoZXYxIikKICAgICAgICAgcGFyYW1ldGVycy5jb2RlYyA9
IEhFVkNQYXJhbWV0ZXJzOjpDb2RlYzo6SGV2MTsKLSAgICBlbHNlIGlmIChjb2RlY0NvZGUgPT0g
Rm91ckNDKCJodmMxIikpCisgICAgZWxzZSBpZiAoY29kZWNDb2RlID09ICJodmMxIikKICAgICAg
ICAgcGFyYW1ldGVycy5jb2RlYyA9IEhFVkNQYXJhbWV0ZXJzOjpDb2RlYzo6SHZjMTsKICAgICBl
bHNlCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmgKaW5kZXggM2Y1MDEwMzQxNGZiNWVjYWQy
YjgyYTdhZjkxZTRhM2NhMjQ1NjYzYy4uOGJmYjM5MTc4ZjExYjE4MzZjNTAwZjJkZDFiNjNjYmRj
NGQxOTY2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSEVW
Q1V0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0hFVkNV
dGlsaXRpZXMuaApAQCAtNTUsNyArNTUsNyBAQCBzdHJ1Y3QgSEVWQ1BhcmFtZXRlcnMgewogfTsK
IAogV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxIRVZDUGFyYW1ldGVycz4gcGFyc2VIRVZD
Q29kZWNQYXJhbWV0ZXJzKFN0cmluZ1ZpZXcpOwotV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25h
bDxIRVZDUGFyYW1ldGVycz4gcGFyc2VIRVZDRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoY29u
c3QgRm91ckNDJiwgY29uc3QgU2hhcmVkQnVmZmVyJik7CitXRUJDT1JFX0VYUE9SVCBzdGQ6Om9w
dGlvbmFsPEhFVkNQYXJhbWV0ZXJzPiBwYXJzZUhFVkNEZWNvZGVyQ29uZmlndXJhdGlvblJlY29y
ZChGb3VyQ0MsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGNy
ZWF0ZUhFVkNDb2RlY1BhcmFtZXRlcnNTdHJpbmcoY29uc3QgSEVWQ1BhcmFtZXRlcnMmKTsKIAog
c3RydWN0IERvVmlQYXJhbWV0ZXJzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3guaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JU09GYWlyUGxh
eVN0cmVhbWluZ1Bzc2hCb3guaAppbmRleCA3OTRhMTUyOGQwZGVlMzU5OWM1YWYzY2U0NGFkZjli
NmI4MDIwYWRlLi4xOWRjZTY5MTQ1YWE2YmY5YmU4OWVmZGRhN2Y5ZGI0NWE5ZTE0YjU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSVNP
RmFpclBsYXlTdHJlYW1pbmdQc3NoQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0lTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveC5oCkBAIC0y
OSwxOSArMjksMTkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBXRUJDT1JFX0VY
UE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0luZm9Cb3ggZmluYWwgOiBwdWJsaWMgSVNPRnVsbEJv
eCB7CitjbGFzcyBJU09GYWlyUGxheVN0cmVhbWluZ0luZm9Cb3ggZmluYWwgOiBwdWJsaWMgSVNP
RnVsbEJveCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZvdXJDQyBib3hUeXBlTmFtZSgpIHsgcmV0
dXJuICJmcHNpIjsgfQogCiAgICAgRm91ckNDIHNjaGVtZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2No
ZW1lOyB9CiAKIHByaXZhdGU6Ci0gICAgYm9vbCBwYXJzZShKU0M6OkRhdGFWaWV3JiwgdW5zaWdu
ZWQmIG9mZnNldCkgb3ZlcnJpZGU7CisgICAgYm9vbCBwYXJzZShKU0M6OkRhdGFWaWV3JiwgdW5z
aWduZWQmIG9mZnNldCkgZmluYWw7CiAKICAgICBGb3VyQ0MgbV9zY2hlbWU7CiB9OwogCi1jbGFz
cyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0tleVJlcXVlc3RJbmZvQm94IGZp
bmFsIDogcHVibGljIElTT0Z1bGxCb3ggeworY2xhc3MgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlS
ZXF1ZXN0SW5mb0JveCBmaW5hbCA6IHB1YmxpYyBJU09GdWxsQm94IHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgRm91ckNDIGJveFR5cGVOYW1lKCkgeyByZXR1cm4gImZrcmkiOyB9CiAKQEAgLTQ5LDQ1
ICs0OSw0NSBAQCBwdWJsaWM6CiAgICAgY29uc3QgS2V5SUQmIGtleUlEKCkgY29uc3QgeyByZXR1
cm4gbV9rZXlJRDsgfQogCiBwcml2YXRlOgotICAgIGJvb2wgcGFyc2UoSlNDOjpEYXRhVmlldyYs
IHVuc2lnbmVkJiBvZmZzZXQpIG92ZXJyaWRlOworICAgIGJvb2wgcGFyc2UoSlNDOjpEYXRhVmll
dyYsIHVuc2lnbmVkJiBvZmZzZXQpIGZpbmFsOwogCiAgICAgS2V5SUQgbV9rZXlJRDsKIH07CiAK
LWNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5QXNzZXRJZEJveCBm
aW5hbCA6IHB1YmxpYyBJU09Cb3ggeworY2xhc3MgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlBc3Nl
dElkQm94IGZpbmFsIDogcHVibGljIElTT0JveCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZvdXJD
QyBib3hUeXBlTmFtZSgpIHsgcmV0dXJuICJma2FpIjsgfQogICAgIGNvbnN0IFZlY3Rvcjx1aW50
OF90PiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CiAKIHByaXZhdGU6Ci0gICAgYm9v
bCBwYXJzZShKU0M6OkRhdGFWaWV3JiwgdW5zaWduZWQmIG9mZnNldCkgb3ZlcnJpZGU7CisgICAg
Ym9vbCBwYXJzZShKU0M6OkRhdGFWaWV3JiwgdW5zaWduZWQmIG9mZnNldCkgZmluYWw7CiAKICAg
ICBWZWN0b3I8dWludDhfdD4gbV9kYXRhOwogfTsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNP
RmFpclBsYXlTdHJlYW1pbmdLZXlDb250ZXh0Qm94IGZpbmFsIDogcHVibGljIElTT0JveCB7Citj
bGFzcyBJU09GYWlyUGxheVN0cmVhbWluZ0tleUNvbnRleHRCb3ggZmluYWwgOiBwdWJsaWMgSVNP
Qm94IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgRm91ckNDIGJveFR5cGVOYW1lKCkgeyByZXR1cm4g
ImZrY3giOyB9CiAgICAgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEoKSBjb25zdCB7IHJldHVy
biBtX2RhdGE7IH0KIAogcHJpdmF0ZToKLSAgICBib29sIHBhcnNlKEpTQzo6RGF0YVZpZXcmLCB1
bnNpZ25lZCYgb2Zmc2V0KSBvdmVycmlkZTsKKyAgICBib29sIHBhcnNlKEpTQzo6RGF0YVZpZXcm
LCB1bnNpZ25lZCYgb2Zmc2V0KSBmaW5hbDsKIAogICAgIFZlY3Rvcjx1aW50OF90PiBtX2RhdGE7
CiB9OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0tleVZlcnNp
b25MaXN0Qm94IGZpbmFsIDogcHVibGljIElTT0JveCB7CitjbGFzcyBJU09GYWlyUGxheVN0cmVh
bWluZ0tleVZlcnNpb25MaXN0Qm94IGZpbmFsIDogcHVibGljIElTT0JveCB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIEZvdXJDQyBib3hUeXBlTmFtZSgpIHsgcmV0dXJuICJma3ZsIjsgfQogICAgIGNv
bnN0IFZlY3Rvcjx1aW50OF90PiB2ZXJzaW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fdmVyc2lvbnM7
IH0KIAogcHJpdmF0ZToKLSAgICBib29sIHBhcnNlKEpTQzo6RGF0YVZpZXcmLCB1bnNpZ25lZCYg
b2Zmc2V0KSBvdmVycmlkZTsKKyAgICBib29sIHBhcnNlKEpTQzo6RGF0YVZpZXcmLCB1bnNpZ25l
ZCYgb2Zmc2V0KSBmaW5hbDsKIAogICAgIFZlY3Rvcjx1aW50OF90PiBtX3ZlcnNpb25zOwogfTsK
IAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlSZXF1ZXN0Qm94
IGZpbmFsIDogcHVibGljIElTT0JveCB7CitjbGFzcyBJU09GYWlyUGxheVN0cmVhbWluZ0tleVJl
cXVlc3RCb3ggZmluYWwgOiBwdWJsaWMgSVNPQm94IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgRm91
ckNDIGJveFR5cGVOYW1lKCkgeyByZXR1cm4gImZwc2siOyB9CiAKQEAgLTk3LDcgKzk3LDcgQEAg
cHVibGljOgogICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVNPRmFpclBsYXlTdHJlYW1pbmdLZXlW
ZXJzaW9uTGlzdEJveD4mIHZlcnNpb25MaXN0KCkgY29uc3QgeyByZXR1cm4gbV92ZXJzaW9uTGlz
dDsgfQogCiBwcml2YXRlOgotICAgIGJvb2wgcGFyc2UoSlNDOjpEYXRhVmlldyYsIHVuc2lnbmVk
JiBvZmZzZXQpIG92ZXJyaWRlOworICAgIGJvb2wgcGFyc2UoSlNDOjpEYXRhVmlldyYsIHVuc2ln
bmVkJiBvZmZzZXQpIGZpbmFsOwogCiAgICAgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlSZXF1ZXN0
SW5mb0JveCBtX3JlcXVlc3RJbmZvOwogICAgIHN0ZDo6b3B0aW9uYWw8SVNPRmFpclBsYXlTdHJl
YW1pbmdLZXlBc3NldElkQm94PiBtX2Fzc2V0SUQ7CkBAIC0xMDUsNyArMTA1LDcgQEAgcHJpdmF0
ZToKICAgICBzdGQ6Om9wdGlvbmFsPElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5VmVyc2lvbkxpc3RC
b3g+IG1fdmVyc2lvbkxpc3Q7CiB9OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxh
eVN0cmVhbWluZ0luaXREYXRhQm94IGZpbmFsIDogcHVibGljIElTT0JveCB7CitjbGFzcyBJU09G
YWlyUGxheVN0cmVhbWluZ0luaXREYXRhQm94IGZpbmFsIDogcHVibGljIElTT0JveCB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIEZvdXJDQyBib3hUeXBlTmFtZSgpIHsgcmV0dXJuICJmcHNkIjsgfQog
CkBAIC0xMTMsMjAgKzExMywyMCBAQCBwdWJsaWM6CiAgICAgY29uc3QgVmVjdG9yPElTT0ZhaXJQ
bGF5U3RyZWFtaW5nS2V5UmVxdWVzdEJveD4mIHJlcXVlc3RzKCkgY29uc3QgeyByZXR1cm4gbV9y
ZXF1ZXN0czsgfQogCiBwcml2YXRlOgotICAgIGJvb2wgcGFyc2UoSlNDOjpEYXRhVmlldyYsIHVu
c2lnbmVkJiBvZmZzZXQpIG92ZXJyaWRlOworICAgIGJvb2wgcGFyc2UoSlNDOjpEYXRhVmlldyYs
IHVuc2lnbmVkJiBvZmZzZXQpIGZpbmFsOwogCiAgICAgSVNPRmFpclBsYXlTdHJlYW1pbmdJbmZv
Qm94IG1faW5mbzsKICAgICBWZWN0b3I8SVNPRmFpclBsYXlTdHJlYW1pbmdLZXlSZXF1ZXN0Qm94
PiBtX3JlcXVlc3RzOwogfTsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJl
YW1pbmdQc3NoQm94IGZpbmFsIDogcHVibGljIElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hl
YWRlckJveCB7CitjbGFzcyBJU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3ggZmluYWwgOiBwdWJs
aWMgSVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94IHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBmYWlyUGxheVN5c3RlbUlEKCk7CiAKICAgICBj
b25zdCBJU09GYWlyUGxheVN0cmVhbWluZ0luaXREYXRhQm94JiBpbml0RGF0YUJveCgpIHsgcmV0
dXJuIG1faW5pdERhdGFCb3g7IH0KIAogcHJpdmF0ZToKLSAgICBib29sIHBhcnNlKEpTQzo6RGF0
YVZpZXcmLCB1bnNpZ25lZCYgb2Zmc2V0KSBvdmVycmlkZTsKKyAgICBib29sIHBhcnNlKEpTQzo6
RGF0YVZpZXcmLCB1bnNpZ25lZCYgb2Zmc2V0KSBmaW5hbDsKIAogICAgIElTT0ZhaXJQbGF5U3Ry
ZWFtaW5nSW5pdERhdGFCb3ggbV9pbml0RGF0YUJveDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUFWRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAKaW5kZXggODRlMDg2YTE4NGJhY2U0ZmQy
OTFlZjNhNTkwMzI3MjYwMzg3MDkwNy4uNzMzZDU2YTA4M2QzMGIzZjQ1ODQ3NDk1ZjdjODliMzE5
ODQ2OTQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRl
QVZGLmNwcApAQCAtNTAyLDExICs1MDIsMTEgQEAgdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRl
QVZGOjpwcm9jZXNzTmF0aXZlU2FtcGxlcyhDRkFycmF5UmVmIG5hdGl2ZVNhbXBsZXMsIGMKICAg
ICAgICAgYXV0byB0eXBlID0gcGVla1Jlc3VsdC52YWx1ZSgpLmZpcnN0OwogICAgICAgICBhdXRv
IGJveExlbmd0aCA9IHBlZWtSZXN1bHQudmFsdWUoKS5zZWNvbmQ7CiAgICAgICAgIGlmIChib3hM
ZW5ndGggPiB2aWV3LT5ieXRlTGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIEVSUk9SX0xPRyhMT0dJ
REVOVElGSUVSLCAiY2h1bmsgIHR5cGUgPSAnIiwgdHlwZS50b1N0cmluZygpLCAiJywgc2l6ZSA9
ICIsIChzaXplX3QpYm94TGVuZ3RoLCAiIGxhcmdlciB0aGFuIGJ1ZmZlciBsZW5ndGghIik7Cisg
ICAgICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgImNodW5rICB0eXBlID0gJyIsIHR5
cGUsICInLCBzaXplID0gIiwgYm94TGVuZ3RoLCAiIGxhcmdlciB0aGFuIGJ1ZmZlciBsZW5ndGgh
Iik7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIElORk9fTE9H
KExPR0lERU5USUZJRVIsICJjaHVuayAgdHlwZSA9ICciLCB0eXBlLnRvU3RyaW5nKCksICInLCBz
aXplID0gIiwgKHNpemVfdClib3hMZW5ndGgpOworICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElG
SUVSLCAiY2h1bmsgIHR5cGUgPSAnIiwgdHlwZSwgIicsIHNpemUgPSAiLCBib3hMZW5ndGgpOwog
CiAgICAgICAgIGRvIHsKICAgICAgICAgICAgIGlmIChtX2hhdmVSZXBvcnRlZFZUVEhlYWRlciB8
fCAhZm9ybWF0RGVzY3JpcHRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVkFzc2V0VHJhY2tVdGlsaXRpZXMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVkFzc2V0
VHJhY2tVdGlsaXRpZXMubW0KaW5kZXggM2Y2ZTQzMjAxMjM0OTMzNjRlYmE4ZDYxYWE2ODNhNTYy
ZTMzMTVmOS4uMGRhZmM4YmZkNDFiZDA0Yjk3OGM0OTg0MWZhZWEwMDhmODJiNDRjMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
QVZBc3NldFRyYWNrVXRpbGl0aWVzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0FWQXNzZXRUcmFja1V0aWxpdGllcy5tbQpAQCAtNDks
NyArNDksNyBAQCBzdGF0aWMgVmVjdG9yPEZvdXJDQz4gY29udGVudFR5cGVzVG9Db2RlY3MoY29u
c3QgVmVjdG9yPENvbnRlbnRUeXBlPiYgY29udGVudFR5cAogICAgICAgICAgICAgaWYgKGZpcnN0
UGVyaW9kICE9IG5vdEZvdW5kKQogICAgICAgICAgICAgICAgIGNvZGVjU3RyaW5nLnRydW5jYXRl
KGZpcnN0UGVyaW9kKTsKIAotICAgICAgICAgICAgYXV0byBjb2RlY0lkZW50aWZpZXIgPSBGb3Vy
Q0M6OmZyb21TdHJpbmcoY29kZWNTdHJpbmcubGVmdCg0KSk7CisgICAgICAgICAgICBhdXRvIGNv
ZGVjSWRlbnRpZmllciA9IEZvdXJDQzo6ZnJvbVN0cmluZyhTdHJpbmdWaWV3IHsgY29kZWNTdHJp
bmcgfS5sZWZ0KDQpKTsKICAgICAgICAgICAgIGlmIChjb2RlY0lkZW50aWZpZXIpCiAgICAgICAg
ICAgICAgICAgY29kZWNzLmFwcGVuZChjb2RlY0lkZW50aWZpZXIudmFsdWUoKSk7CiAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0hF
VkNVdGlsaXRpZXNDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0hFVkNVdGlsaXRpZXNDb2NvYS5tbQppbmRleCA2NDgzYzI4NzNmZGJmNzYwNmUwMzk5NGVm
ODViOWQyOWQ4ZWFkNTUxLi5iOWZiOGNiMzc0ZWUwZWQ0MmJkMjU1Y2YyMmY3MTY1OGM1ZWFiMDNm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9IRVZD
VXRpbGl0aWVzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvSEVWQ1V0aWxpdGllc0NvY29hLm1tCkBAIC00OCw3ICs0OCw3IEBAIHN0ZDo6b3B0aW9u
YWw8TWVkaWFDYXBhYmlsaXRpZXNJbmZvPiB2YWxpZGF0ZUhFVkNQYXJhbWV0ZXJzKGNvbnN0IEhF
VkNQYXJhbWV0ZXJzCiAgICAgICAgIGlmICghUEFMOjppc0FWRm91bmRhdGlvbkZyYW1ld29ya0F2
YWlsYWJsZSgpIHx8ICFQQUw6OmNhbkxvYWRfQVZGb3VuZGF0aW9uX0FWVmlkZW9Db2RlY1R5cGVI
RVZDV2l0aEFscGhhKCkpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAg
ICAgIGF1dG8gY29kZWNDb2RlID0gRm91ckNDOjpmcm9tU3RyaW5nKEFWVmlkZW9Db2RlY1R5cGVI
RVZDV2l0aEFscGhhKTsKKyAgICAgICAgYXV0byBjb2RlY0NvZGUgPSBGb3VyQ0M6OmZyb21TdHJp
bmcoU3RyaW5nIHsgQVZWaWRlb0NvZGVjVHlwZUhFVkNXaXRoQWxwaGEgfSk7CiAgICAgICAgIGlm
ICghY29kZWNDb2RlKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0
R0xDVkNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0dyYXBo
aWNzQ29udGV4dEdMQ1ZDb2NvYS5jcHAKaW5kZXggZDQ1MjA0OWNhZDM3MzBiZjk5MzA5ZTc2ZjIy
OTc1ODcwNjFhODk2OC4uNWYyZmQ4NWM4Y2U4ZTM4MjhhMDczODhiMThiNDc4MzM4NTEyNTU4NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvR3JhcGhpY3ND
b250ZXh0R0xDVkNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jdi9HcmFwaGljc0NvbnRleHRHTENWQ29jb2EuY3BwCkBAIC01ODUsNyArNTg1LDcgQEAgYm9v
bCBHcmFwaGljc0NvbnRleHRHTENWQ29jb2E6OmNvcHlWaWRlb1NhbXBsZVRvVGV4dHVyZShjb25z
dCBNZWRpYVNhbXBsZVZpZGVvRnIKICAgICAgICAgJiYgcGl4ZWxGb3JtYXQgIT0ga0NWUGl4ZWxG
b3JtYXRUeXBlX0FHWF80MjBZcENiQ3I4QmlQbGFuYXJGdWxsUmFuZ2UKICNlbmRpZgogICAgICAg
ICApIHsKLSAgICAgICAgTE9HKFdlYkdMLCAiR3JhcGhpY3NDb250ZXh0R0xDVkNvY29hOjpjb3B5
VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoJXApIC0gQXNrZWQgdG8gY29weSBhbiB1bnN1
cHBvcnRlZCBwaXhlbCBmb3JtYXQgKCclcycpLiIsIHRoaXMsIEZvdXJDQyhwaXhlbEZvcm1hdCku
dG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgTE9HKFdlYkdMLCAiR3JhcGhpY3ND
b250ZXh0R0xDVkNvY29hOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoJXApIC0g
QXNrZWQgdG8gY29weSBhbiB1bnN1cHBvcnRlZCBwaXhlbCBmb3JtYXQgKCclcycpLiIsIHRoaXMs
IEZvdXJDQyhwaXhlbEZvcm1hdCkuc3RyaW5nKCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KICAgICBJT1N1cmZhY2VSZWYgc3VyZmFjZSA9IENWUGl4ZWxCdWZmZXJHZXRJ
T1N1cmZhY2UoaW1hZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvaXNvL0lTT0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9p
c28vSVNPQm94LmNwcAppbmRleCBjMDZlM2E2MzM4ODYwZjExZWIwZWJjZmE0MzhkMzUyMDI2NmY1
ZDQ4Li4zNDNhYjljYTI5ZDIxODk3ZjBjNGQ2Yzk2ODBhY2EwZDMzNDYzYTU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94LmNwcApAQCAtMzIsMTMg
KzMyLDIxIEBAIHVzaW5nIEpTQzo6RGF0YVZpZXc7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
SVNPQm94OjpJU09Cb3goKSA9IGRlZmF1bHQ7CisKK0lTT0JveDo6fklTT0JveCgpID0gZGVmYXVs
dDsKKworSVNPQm94OjpJU09Cb3goY29uc3QgSVNPQm94JikgPSBkZWZhdWx0OworCitJU09Cb3g6
OklTT0JveChJU09Cb3gmJikgPSBkZWZhdWx0OworCiBJU09Cb3g6OlBlZWtSZXN1bHQgSVNPQm94
OjpwZWVrQm94KERhdGFWaWV3JiB2aWV3LCB1bnNpZ25lZCBvZmZzZXQpCiB7CiAgICAgdWludDY0
X3Qgc2l6ZSA9IDA7CiAgICAgaWYgKCFjaGVja2VkUmVhZDx1aW50MzJfdD4oc2l6ZSwgdmlldywg
b2Zmc2V0LCBCaWdFbmRpYW4pKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAg
Rm91ckNDIHR5cGUgPSB7IHVpbnQzMl90IHsgMCB9IH07CisgICAgRm91ckNDIHR5cGU7CiAgICAg
aWYgKCFjaGVja2VkUmVhZDx1aW50MzJfdD4odHlwZSwgdmlldywgb2Zmc2V0LCBCaWdFbmRpYW4p
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94LmgKaW5kZXggZDgzZTRhNDA0MGNjZWU5ZmZiNzM5ZGZj
MjI3Y2Y3N2EwNjE4M2MyNi4uNjUwZTU3OTY2MjZmODBiNWQ4ODQ3M2JmY2NhYjNkZWFkOTcwYjZm
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT0Jv
eC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaApA
QCAtMzYsMzEgKzM2LDM0IEBAIGNsYXNzIERhdGFWaWV3OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0JveCB7CitjbGFzcyBJU09Cb3ggewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHZpcnR1YWwgfklTT0JveCgpID0g
ZGVmYXVsdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBJU09Cb3goKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBJU09Cb3goY29uc3QgSVNPQm94Jik7CisgICAgSVNPQm94KElTT0JveCYmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2aXJ0dWFsIH5JU09Cb3goKTsKKworICAgIElTT0JveCYgb3BlcmF0b3I9KGNv
bnN0IElTT0JveCYpID0gZGVmYXVsdDsKKyAgICBJU09Cb3gmIG9wZXJhdG9yPShJU09Cb3gmJikg
PSBkZWZhdWx0OwogCiAgICAgdXNpbmcgUGVla1Jlc3VsdCA9IHN0ZDo6b3B0aW9uYWw8c3RkOjpw
YWlyPEZvdXJDQywgdWludDY0X3Q+PjsKICAgICBzdGF0aWMgUGVla1Jlc3VsdCBwZWVrQm94KEpT
Qzo6RGF0YVZpZXcmLCB1bnNpZ25lZCBvZmZzZXQpOwotICAgIHN0YXRpYyBzaXplX3QgbWluaW11
bUJveFNpemUoKSB7IHJldHVybiAyICogc2l6ZW9mKHVpbnQzMl90KTsgfQorICAgIHN0YXRpYyBj
b25zdGV4cHIgc2l6ZV90IG1pbmltdW1Cb3hTaXplKCkgeyByZXR1cm4gMiAqIHNpemVvZih1aW50
MzJfdCk7IH0KIAogICAgIGJvb2wgcmVhZChKU0M6OkRhdGFWaWV3Jik7CiAgICAgYm9vbCByZWFk
KEpTQzo6RGF0YVZpZXcmLCB1bnNpZ25lZCYgb2Zmc2V0KTsKIAogICAgIHVpbnQ2NF90IHNpemUo
KSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KLSAgICBjb25zdCBGb3VyQ0MmIGJveFR5cGUoKSBj
b25zdCB7IHJldHVybiBtX2JveFR5cGU7IH0KKyAgICBGb3VyQ0MgYm94VHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1fYm94VHlwZTsgfQogICAgIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZXh0ZW5kZWRU
eXBlKCkgY29uc3QgeyByZXR1cm4gbV9leHRlbmRlZFR5cGU7IH0KIAogcHJvdGVjdGVkOgogICAg
IHZpcnR1YWwgYm9vbCBwYXJzZShKU0M6OkRhdGFWaWV3JiwgdW5zaWduZWQmIG9mZnNldCk7CiAK
LSAgICBlbnVtIEVuZGlhbm5lc3MgewotICAgICAgICBCaWdFbmRpYW4sCi0gICAgICAgIExpdHRs
ZUVuZGlhbiwKLSAgICB9OworICAgIGVudW0gRW5kaWFubmVzcyB7IEJpZ0VuZGlhbiwgTGl0dGxl
RW5kaWFuIH07CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUiwgdHlwZW5h
bWUgVj4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBSLCB0eXBlbmFtZSBWPgog
ICAgIHN0YXRpYyBib29sIGNoZWNrZWRSZWFkKFImIHJldHVyblZhbHVlLCBWJiB2aWV3LCB1bnNp
Z25lZCYgb2Zmc2V0LCBFbmRpYW5uZXNzIGVuZGlhbm5lc3MpCiAgICAgewogICAgICAgICBib29s
IHJlYWRTdGF0dXMgPSBmYWxzZTsKQEAgLTc2LDExICs3OSwxMSBAQCBwcm90ZWN0ZWQ6CiAgICAg
fQogCiAgICAgdWludDY0X3QgbV9zaXplIHsgMCB9OwotICAgIEZvdXJDQyBtX2JveFR5cGUgeyB1
aW50MzJfdCB7IDAgfSB9OworICAgIEZvdXJDQyBtX2JveFR5cGU7CiAgICAgVmVjdG9yPHVpbnQ4
X3Q+IG1fZXh0ZW5kZWRUeXBlOwogfTsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRnVsbEJv
eCA6IHB1YmxpYyBJU09Cb3ggeworY2xhc3MgSVNPRnVsbEJveCA6IHB1YmxpYyBJU09Cb3ggewog
cHVibGljOgogICAgIHVpbnQ4X3QgdmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fdmVyc2lvbjsg
fQogICAgIHVpbnQzMl90IGZsYWdzKCkgY29uc3QgeyByZXR1cm4gbV9mbGFnczsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT09yaWdpbmFsRm9y
bWF0Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPT3JpZ2lu
YWxGb3JtYXRCb3guaAppbmRleCAyMjFjYjY3NDA3ODE0YWNkMTYzYzhkMWJkMDdhZWU1MTA3MGU0
MmEwLi4wZGVjNDFlNWM4MmU2YTFiNjE1MGU4NWNmOWY4MWIwZTM5NGFmNTgwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPT3JpZ2luYWxGb3JtYXRC
b3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPT3JpZ2lu
YWxGb3JtYXRCb3guaApAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGJv
b2wgcGFyc2UoSlNDOjpEYXRhVmlldyYsIHVuc2lnbmVkJiBvZmZzZXQpIG92ZXJyaWRlOwogCi0g
ICAgRm91ckNDIG1fZGF0YUZvcm1hdCB7IHVpbnQzMl90IHsgMCB9IH07CisgICAgRm91ckNDIG1f
ZGF0YUZvcm1hdDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2lzby9JU09TY2hlbWVUeXBlQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9pc28vSVNPU2NoZW1lVHlwZUJveC5oCmluZGV4IDFiNmFmY2UzYzVhMWRjMTdj
NmM3YzY2YzZkNDViNTU5Zjc1YmVlNmYuLjczZTI4M2M2M2VlYmQ1NGJhOGY2MWU1YTYzYmY5Y2Jj
MTNmYjg2YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lz
by9JU09TY2hlbWVUeXBlQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvaXNvL0lTT1NjaGVtZVR5cGVCb3guaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIGJvb2wgcGFyc2UoSlNDOjpEYXRhVmlldyYsIHVuc2lnbmVkJiBvZmZzZXQpIG92
ZXJyaWRlOwogCi0gICAgRm91ckNDIG1fc2NoZW1lVHlwZSB7IHVpbnQzMl90IHsgMCB9IH07Cisg
ICAgRm91ckNDIG1fc2NoZW1lVHlwZTsKICAgICB1aW50MzJfdCBtX3NjaGVtZVZlcnNpb24geyAw
IH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9p
c28vSVNPVlRUQ3VlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9J
U09WVFRDdWUuY3BwCmluZGV4IGE1MmJlMjRmNmZhNmMwOGFmOWFjNjU0MWMzNTY1MjUyNmQyMDJl
NzguLjE2NDlmNDllMTA0YmZmOTNhNjZjYjcwY2FlNmU2MzA1MWU4ODVjODcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUuY3BwCkBAIC05
MSw2ICs5MSwxMiBAQCBJU09XZWJWVFRDdWU6OklTT1dlYlZUVEN1ZShNZWRpYVRpbWUmJiBwcmVz
ZW50YXRpb25UaW1lLCBNZWRpYVRpbWUmJiBkdXJhdGlvbiwgUwogewogfQogCitJU09XZWJWVFRD
dWU6OklTT1dlYlZUVEN1ZShjb25zdCBJU09XZWJWVFRDdWUmKSA9IGRlZmF1bHQ7CisKK0lTT1dl
YlZUVEN1ZTo6SVNPV2ViVlRUQ3VlKElTT1dlYlZUVEN1ZSYmKSA9IGRlZmF1bHQ7CisKK0lTT1dl
YlZUVEN1ZTo6fklTT1dlYlZUVEN1ZSgpID0gZGVmYXVsdDsKKwogYm9vbCBJU09XZWJWVFRDdWU6
OnBhcnNlKERhdGFWaWV3JiB2aWV3LCB1bnNpZ25lZCYgb2Zmc2V0KQogewogICAgIGlmICghSVNP
Qm94OjpwYXJzZSh2aWV3LCBvZmZzZXQpKQpAQCAtMTEwLDcgKzExNiw3IEBAIGJvb2wgSVNPV2Vi
VlRUQ3VlOjpwYXJzZShEYXRhVmlldyYgdmlldywgdW5zaWduZWQmIG9mZnNldCkKICAgICAgICAg
ZWxzZSBpZiAoc3RyaW5nQm94LmJveFR5cGUoKSA9PSB2dHRQYXlsb2FkQm94VHlwZSgpKQogICAg
ICAgICAgICAgbV9jdWVUZXh0ID0gc3RyaW5nQm94LmNvbnRlbnRzKCk7CiAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgIExPRyhNZWRpYSwgIklTT1dlYlZUVEN1ZTo6SVNPV2ViVlRUQ3VlIC0gc2tp
cHBpbmcgYm94IGlkID0gXCIlc1wiLCBzaXplID0gJXp1Iiwgc3RyaW5nQm94LmJveFR5cGUoKS50
b1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIChzaXplX3Qpc3RyaW5nQm94LnNpemUoKSk7CisgICAg
ICAgICAgICBMT0coTWVkaWEsICJJU09XZWJWVFRDdWU6OklTT1dlYlZUVEN1ZSAtIHNraXBwaW5n
IGJveCBpZCA9IFwiJXNcIiwgc2l6ZSA9ICUiIFBSSXU2NCwgc3RyaW5nQm94LmJveFR5cGUoKS5z
dHJpbmcoKS5kYXRhKCksIHN0cmluZ0JveC5zaXplKCkpOwogICAgIH0KICAgICByZXR1cm4gdHJ1
ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9J
U09WVFRDdWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRD
dWUuaAppbmRleCBlY2NhZWYzZGFhZWVjZjY5Y2FiMTAyNzU1M2ZmYzFjYzBlZTIwYTQ2Li4wNGI1
ZTNhNTZjM2I2OTFlZTFmY2EwOWM0ODVhYzZmNGNhNjk2OTcwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRUQ3VlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1ZUVEN1ZS5oCkBAIC0zOSwxMCArMzksMTYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gTiBieXRlcyA6IEN1ZVNldHRpbmdzQm94IDogYm94
IDogb3B0aW9uYWwKIC8vIE4gYnl0ZXMgOiBDdWVQYXlsb2FkQm94IDogYm94IDogcmVxdWlyZWQK
IAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPV2ViVlRUQ3VlIGZpbmFsIDogcHVibGljIElTT0Jv
eCB7CitjbGFzcyBJU09XZWJWVFRDdWUgZmluYWwgOiBwdWJsaWMgSVNPQm94IHsKIHB1YmxpYzoK
ICAgICBJU09XZWJWVFRDdWUoY29uc3QgTWVkaWFUaW1lJiBwcmVzZW50YXRpb25UaW1lLCBjb25z
dCBNZWRpYVRpbWUmIGR1cmF0aW9uKTsKLSAgICBJU09XZWJWVFRDdWUoTWVkaWFUaW1lJiYgcHJl
c2VudGF0aW9uVGltZSwgTWVkaWFUaW1lJiYgZHVyYXRpb24sIFN0cmluZyYmIGN1ZUlELCBTdHJp
bmcmJiBjdWVUZXh0LCBTdHJpbmcmJiBzZXR0aW5ncyA9IHsgfSwgU3RyaW5nJiYgc291cmNlSUQg
PSB7IH0sIFN0cmluZyYmIG9yaWdpbmFsU3RhcnRUaW1lID0geyB9KTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBJU09XZWJWVFRDdWUoTWVkaWFUaW1lJiYgcHJlc2VudGF0aW9uVGltZSwgTWVkaWFUaW1l
JiYgZHVyYXRpb24sIFN0cmluZyYmIGN1ZUlELCBTdHJpbmcmJiBjdWVUZXh0LCBTdHJpbmcmJiBz
ZXR0aW5ncyA9IHsgfSwgU3RyaW5nJiYgc291cmNlSUQgPSB7IH0sIFN0cmluZyYmIG9yaWdpbmFs
U3RhcnRUaW1lID0geyB9KTsKKyAgICBJU09XZWJWVFRDdWUoY29uc3QgSVNPV2ViVlRUQ3VlJik7
CisgICAgV0VCQ09SRV9FWFBPUlQgSVNPV2ViVlRUQ3VlKElTT1dlYlZUVEN1ZSYmKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB+SVNPV2ViVlRUQ3VlKCk7CisKKyAgICBJU09XZWJWVFRDdWUmIG9wZXJh
dG9yPShjb25zdCBJU09XZWJWVFRDdWUmKSA9IGRlZmF1bHQ7CisgICAgSVNPV2ViVlRUQ3VlJiBv
cGVyYXRvcj0oSVNPV2ViVlRUQ3VlJiYpID0gZGVmYXVsdDsKIAogICAgIHN0YXRpYyBGb3VyQ0Mg
Ym94VHlwZU5hbWUoKSB7IHJldHVybiAidnR0YyI7IH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449741</attachid>
            <date>2022-01-22 16:21:52 -0800</date>
            <delta_ts>2022-01-23 11:21:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235461-20220122162151.patch</filename>
            <type>text/plain</type>
            <size>33033</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NDExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmI3ZmU0YWFjMmI1OTBj
MzdlYTlkNGJhYWQ2Y2M2N2Q3MDZiMDM3Mi4uYjVkMGRjMjk4NzIyYzQ4NGRiZmUwYWQxOTc5ODlm
NmYzZTIyMDMxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkxIEBACisyMDIyLTAxLTIyICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBJbXByb3ZlIEZvdXJDQyB0byB1
c2UgbW9yZSBpbmxpbmluZywgZml4IGluY29ycmVjdCBtaXggb2YgV0VCQ09SRV9FWFBPUlQgb24g
ZW50aXJlIGNsYXNzIHdpdGggaW5saW5lIGZ1bmN0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NDYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6IEFkZGVkIEZvdXJDQy5jcHAuIEJlY2F1c2Ugb2YKKyAgICAgICAgdW5pZmllZCBzb3Vy
Y2VzIGl0IHdhcyBjb21waWxlZCwgYnV0IGJlY2F1c2UgaXQgd2FzIG5vdCBpbiB0aGUgcHJvamVj
dAorICAgICAgICB2YXJpb3VzIFhjb2RlIGZlYXR1cmVzIHdvdWxkIG5vdCB3b3JrLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0lTT0ZhaXJQbGF5U3RyZWFtaW5n
UHNzaEJveC5jcHA6CisgICAgICAgIEFkZGVkIHNvbWUgZXhwbGljaXRseSBub24taW5saW5lZCBl
eHBvcnRlZCBmdW5jdGlvbnMuIFRoZXNlIG5lZWQgdG8KKyAgICAgICAgYmUgZXhwb3J0ZWQgYmVj
YXVzZSB0aGV5IGFyZSB1c2VkIGluIFRlc3RXZWJLaXRBUEkgdGVzdHMgYW5kIHdlCisgICAgICAg
IHdhbnQgdG8gZXhwb3J0IHRoZSBmdW5jdGlvbnMgcmF0aGVyIHRoYW4gdGhlIHZ0YWJsZSBwb2lu
dGVyLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JU09GYWlyUGxh
eVN0cmVhbWluZ1Bzc2hCb3guaDoKKyAgICAgICAgU3RvcCB1c2luZyBXRUJDT1JFX0VYUE9SVCBv
biB3aG9sZSBjbGFzc2VzIHRoYXQgY29udGFpbiBpbmxpbmUKKyAgICAgICAgZnVuY3Rpb25zLCBh
bmQgaW5zdGVhZCB1c2UgaXQgb24gaW5kaXZpZHVhbCBmdW5jdGlvbnMuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Gb3VyQ0MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm91ckNDOjpm
cm9tU3RyaW5nKTogVGFrZSBhIFN0cmluZ1ZpZXcgaW5zdGVhZCBvZiBTdHJpbmcuCisgICAgICAg
IFJlbW92ZWQgdW5uZWNlc3NhcnkgYWxsb2NhdGlvbiBvZiBhIHRlbXBvcmFyeSBDU3RyaW5nIGZv
ciB0aGUgcmVzdWx0CisgICAgICAgIG9mIFN0cmluZzo6YXNjaWkuCisgICAgICAgIChXZWJDb3Jl
OjpGb3VyQ0M6OnN0cmluZyBjb25zdCk6IFJlbmFtZSBmcm9tIHRvU3RyaW5nIHRvIHN0cmluZyBh
bmQKKyAgICAgICAgY2hhbmdlZCB0aGUgcmV0dXJuIHR5cGUgdG8gc3RkOjphcnJheSBpbnN0ZWFk
IG9mIFN0cmluZy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvdXJDQy5oOiBNYWRl
IGFsbCB0aGUgY29uc3RydWN0b3JzIGNvbnN0ZXhwci4KKyAgICAgICAgQ2hhbmdlZCB0aGUgc3Ry
aW5nIGxpdGVyYWwgY29uc3RydWN0b3IgdG8ganVzdCB3b3JrIHdpdGggNC1jaGFyYWN0ZXIKKyAg
ICAgICAgc3RyaW5ncy4gVGhlIG9sZCBvbmUgd2FzIGEgdGVtcGxhdGUgZm9yIGFueSBsZW5ndGgg
c3RyaW5nLCBidXQgdGhlbgorICAgICAgICBhc3NlcnRlZCBpdCB3YXMgNCBjaGFyYWN0ZXJzIGxv
bmcsIHdoaWNoIGlzIGEgcm91bmRhYm91dCB3YXkgdG8gZG8gaXQuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNl
SEVWQ0RlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkKTogVGFrZSBGb3VyQ0MgaW5zdGVhZAorICAg
ICAgICBvZiBjb25zdCBGb3VyQ0MmLiBBbHNvIHJlbW92ZWQgdW5uZWNlc3NhcnkgZXhwbGljaXQg
Y29udmVyc2lvbiB0bworICAgICAgICBGb3VyQ0Mgc2luY2UgZm91ciBjaGFyYWN0ZXIgc3RyaW5n
cy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmg6IERpdHRvLgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0lTT0ZhaXJQbGF5U3Ry
ZWFtaW5nUHNzaEJveC5oOgorICAgICAgICBSZW1vdmVkIHVubmVlZGVkIFdFQkNPUkVfRVhQT1JU
IG9uIHRoZXNlIGNsYXNzZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzTmF0aXZlU2FtcGxlcyk6IFJlbW92ZWQK
KyAgICAgICAgdW5uZWNlc2FyeSBjYWxscyB0byB0b1N0cmluZywgbG9nZ2luZyBjYW4gaGFuZGxl
IEZvdXJDQyB3aXRob3V0IGl0LgorICAgICAgICBBbHNvIHJlbW92ZWQgdW5uZWVkZWQgdHlwZSBj
YXN0cyB0byBzaXplX3QuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9BVkFzc2V0VHJhY2tVdGlsaXRpZXMubW06CisgICAgICAgIChXZWJDb3JlOjpjb250
ZW50VHlwZXNUb0NvZGVjcyk6IFJlbW92ZWQgdW5uZWNlc3NhcnkgYWxsb2NhdGlvbiBvZgorICAg
ICAgICBhIFN0cmluZyBieSB1c2luZyBTdHJpbmdWaWV3IGZvciB0aGUgc3Vic3RyaW5nLgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSEVWQ1V0aWxpdGllc0NvY29hLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6dmFsaWRhdGVIRVZDUGFyYW1ldGVycyk6IEFkZGVkIGFuIGV4cGxp
Y2l0IGNhc3QgdG8gU3RyaW5nCisgICAgICAgIHNpbmNlIEZvdXJDQzo6ZnJvbVN0cmluZyBub3cg
dGFrZXMgYSBTdHJpbmdWaWV3LiBTYWRseSB0aGVyZSdzIG5vdAorICAgICAgICBhIHRyaXZpYWwg
d2F5IHRvIGRvIHRoaXMgd2l0aG91dCBhbGxvY2F0aW5nIGEgU3RyaW5nLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkNvY29hLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ1ZDb2NvYTo6Y29weVZpZGVvU2FtcGxlVG9U
ZXh0dXJlKToKKyAgICAgICAgU2luY2UgRm91ckNDOjpzdHJpbmcgbm93IHJldHVybnMgYSBzdGQ6
OmFycmF5IHdpdGggYSBDLXN0eWxlCisgICAgICAgIG51bGwtdGVybWluYXRlZCBzdHJpbmcsIHVz
ZSBpdCBpbnN0ZWFkIG9mIGNhbGxpbmcgdG9TdHJpbmcgYW5kCisgICAgICAgIHRoZW4gdXRmOC4g
Q2xlYW5lciBhbmQgYWxzbyBtdWNoIG1vcmUgZWZmaWNpZW50LgorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvaXNvL0lTT0JveC5jcHA6IE1vdmVkIGNvbnN0cnVjdG9ycyBhbmQKKyAgICAg
ICAgZGVzdHJ1Y3RvcnMgc28gdGhleSBhcmUgbm8gbG9uZ2VyIGlubGluZWQgc28gdGhlcmUgaXMg
bm8gbmVlZCB0bworICAgICAgICBleHBvcnQgdGhlIHZ0YWJsZS4KKyAgICAgICAgKFdlYkNvcmU6
OklTT0JveDo6cGVla0JveCk6IFJlbW92ZWQgdW5uZWNlc3NhcnkgaW5pdGlhbGl6YXRpb24KKyAg
ICAgICAgb2YgRm91ckNDIHNpbmNlIHRoZXkgYXJlIHplcm8gYnkgZGVmYXVsdC4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaDogUmVtb3ZlZCBXRUJDT1JFX0VYUE9S
VCBvZgorICAgICAgICB0aGUgZW50aXJlIGNsYXNzLCBzaW5jZSB0aGF0J3Mgbm90IGZ1bGx5IGNv
bXBhdGlibGUgd2l0aCBhIGNsYXNzCisgICAgICAgIHdpdGggaW5saW5lIGZ1bmN0aW9ucyAod2Fy
bmluZyBpcyBkb25lIGJ5IGNoZWNrLXdlYmtpdC1zdHlsZSkuCisgICAgICAgIFB1dCBXRUJDT1JF
X0VYUE9SVCBvbiBpbmRpdmlkdWFsIGZ1bmN0aW9ucyBpbnN0ZWFkLiAgQWxzbyB1c2Ugc29tZQor
ICAgICAgICBtb3JlIGNvbnN0ZXhwciwgcmVtb3ZlZCB1bm5lZWRlZCBGb3VyQ0MgaW5pdGlhbGl6
YXRpb24gc2luY2UgaXQgaXMKKyAgICAgICAgemVybyBieSBkZWZhdWx0LCBhbmQgdXNlIEZvdXJD
Qywgbm90IGNvbnN0IEZvdXJDQyYgZm9yIHJldHVybiB2YWx1ZS4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2lzby9JU09PcmlnaW5hbEZvcm1hdEJveC5oOiBSZW1vdmVkIHVubmVlZGVk
CisgICAgICAgIEZvdXJDQyBpbml0aWFsaXphdGlvbiBzaW5jZSBpdCBpcyB6ZXJvIGJ5IGRlZmF1
bHQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1NjaGVtZVR5cGVCb3guaDog
RGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRUQ3VlLmNwcDog
TW92ZWQgY29uc3RydWN0b3JzIGFuZAorICAgICAgICBkZXN0cnVjdG9ycyBzbyB0aGV5IGFyZSBu
byBsb25nZXIgaW5saW5lZCBzbyB0aGVyZSBpcyBubyBuZWVkIHRvCisgICAgICAgIGV4cG9ydCB0
aGUgdnRhYmxlLgorICAgICAgICAoV2ViQ29yZTo6SVNPV2ViVlRUQ3VlOjpwYXJzZSk6IFVzZSBQ
Ukl1NjQgaW5zdGVhZCBvZiBjYXN0aW5nCisgICAgICAgIHRvIHNpemVfdCwgbm8gbmVlZCB0byBy
ZWx5IG9uIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0eXBlIHNpemVzLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1ZUVEN1ZS5oOiBSZW1vdmVkIFdFQkNPUkVfRVhQT1JU
IG9mCisgICAgICAgIHRoZSBlbnRpcmUgY2xhc3MsIHNpbmNlIHRoYXQncyBub3QgZnVsbHkgY29t
cGF0aWJsZSB3aXRoIGEgY2xhc3MKKyAgICAgICAgd2l0aCBpbmxpbmUgZnVuY3Rpb25zICh3YXJu
aW5nIGlzIGRvbmUgYnkgY2hlY2std2Via2l0LXN0eWxlKS4KKyAgICAgICAgUHV0IFdFQkNPUkVf
RVhQT1JUIG9uIGluZGl2aWR1YWwgZnVuY3Rpb25zIGluc3RlYWQuCisKIDIwMjItMDEtMjIgIEFs
YW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lGQ10gQWRkIElu
bGluZURpc3BsYXk6OkJveDo6aXNIb3Jpem9udGFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODk5OWEyZWExOTZlODU3OTAyMGIw
MTNiNGY1MDdlNzU2Yzk1YWJjMy4uOGRlNWQ0MjkwYTUzZDJkMjk3YzM5MzMzMmQzMTU5ODg4NmU5
MjM3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTI1NjQsNiArMTI1NjQsNyBAQAogCQk5MzJDQzBEMTFERkZENjY3MDA0QzBG
OUYgLyogSlNNZWRpYVRyYWNrQ29uc3RyYWludHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNNZWRpYVRyYWNrQ29uc3RyYWludHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTMyQ0MwRjAxREZGRDhENDAwNEMwRjlGIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50
cy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTWVkaWFUcmFja0NvbnN0cmFpbnRzLmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMyQ0MwRjYxREZGREExRjAwNEMwRjlGIC8q
IE1lZGlhVHJhY2tDb25zdHJhaW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBNZWRpYVRyYWNrQ29uc3RyYWludHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk5MzJEMjZGNDI3OUI4NTI2MDA0RENEOEQgLyogRm91ckNDLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEZvdXJDQy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMkUx
NjA4MEFGNTc4MzQwMDI1RjQwOCAvKiBGcmFtZUxvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBGcmFtZUxvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTkzMkYxRDM5MjcwRDI2OUYwMDBDMjgxMyAvKiBKU0RPTUFzeW5jSXRlcmF0b3Iu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01Bc3luY0l0ZXJhdG9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMkYxRDQzMjcwRUJGMzgwMDBDMjgxMyAv
KiBKU0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNGaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTI4ODM3LDYgKzI4ODM4LDcgQEAKIAkJCQk0QTZFOUZDNjEzQzE3RDU3
MDA0NkE3RjggLyogRm9udFRhZ2dlZFNldHRpbmdzLmggKi8sCiAJCQkJN0NFNkNCRkMxODdGMzk0
OTAwRDQ2QkY1IC8qIEZvcm1hdENvbnZlcnRlci5jcHAgKi8sCiAJCQkJN0NFNkNCRkExODdGMzcw
NzAwRDQ2QkY1IC8qIEZvcm1hdENvbnZlcnRlci5oICovLAorCQkJCTkzMkQyNkY0Mjc5Qjg1MjYw
MDREQ0Q4RCAvKiBGb3VyQ0MuY3BwICovLAogCQkJCUNENTI1QkEyMUVFMEIxMDcwMDc4OERGNSAv
KiBGb3VyQ0MuaCAqLywKIAkJCQk0RkIzOTBBQzE1RUY2MUYzMDA3QUQ1MUYgLyogR2VuZXJhdGVk
SW1hZ2UuY3BwICovLAogCQkJCUJDMjNGMERBMERBRkY0QTQwMDlGREM5MSAvKiBHZW5lcmF0ZWRJ
bWFnZS5oICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm91ckNDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvdXJDQy5jcHAK
aW5kZXggZDlhODk2MmIwYmIwZTlhN2I4NmM4NTczMzA4Yjg1ZDk3MmI1ZDFhYy4uODJlMmU3Yjk0
NzRhYmMxYzNhMGU3ZWJiMTQ3ZDA3N2FmOWEzNGY4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm91ckNDLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb3VyQ0MuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yOCwyOCArMjgsMjggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1zdGQ6Om9wdGlvbmFsPEZvdXJDQz4gRm91ckNDOjpmcm9tU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nVmFsdWUpCitzdGQ6Om9wdGlvbmFsPEZvdXJDQz4gRm91ckNDOjpmcm9tU3RyaW5n
KFN0cmluZ1ZpZXcgc3RyaW5nKQogewotICAgIGF1dG8gYXNjaWlWYWx1ZSA9IHN0cmluZ1ZhbHVl
LmFzY2lpKCk7Ci0gICAgaWYgKGFzY2lpVmFsdWUubGVuZ3RoKCkgIT0gNCkKKyAgICBpZiAoc3Ry
aW5nLmxlbmd0aCgpICE9IDQgfHwgIXN0cmluZy5pc0FsbEFTQ0lJKCkpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7Ci0KLSAgICBjb25zdCBjaGFyKiBkYXRhID0gYXNjaWlWYWx1ZS5kYXRh
KCk7Ci0gICAgQVNTRVJUKGFzY2lpVmFsdWUuZGF0YSgpKTsKLSAgICB1aW50MzJfdCB2YWx1ZSA9
IGRhdGFbMF0gPDwgMjQgfCBkYXRhWzFdIDw8IDE2IHwgZGF0YVsyXSA8PCA4IHwgZGF0YVszXTsK
LSAgICByZXR1cm4gRm91ckNDKHZhbHVlKTsKKyAgICByZXR1cm4geyB7IHsKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8Y2hhcj4oc3RyaW5nWzBdKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8Y2hhcj4oc3Ry
aW5nWzFdKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8Y2hhcj4oc3RyaW5nWzJdKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8Y2hhcj4oc3RyaW5nWzNdKSwKKyAgICAgICAgJ1wwJworICAgIH0gfSB9Owog
fQogCi1TdHJpbmcgRm91ckNDOjp0b1N0cmluZygpIGNvbnN0CitzdGQ6OmFycmF5PGNoYXIsIDU+
IEZvdXJDQzo6c3RyaW5nKCkgY29uc3QKIHsKLSAgICBWZWN0b3I8TENoYXIsIDQ+IGRhdGEgPSB7
Ci0gICAgICAgIExDaGFyKHZhbHVlID4+IDI0KSwKLSAgICAgICAgTENoYXIoKHZhbHVlID4+IDE2
KSAmIDB4RkYpLAotICAgICAgICBMQ2hhcigodmFsdWUgPj4gOCkgJiAweEZGKSwKLSAgICAgICAg
TENoYXIodmFsdWUgJiAweEZGKSwKKyAgICByZXR1cm4geworICAgICAgICBzdGF0aWNfY2FzdDxj
aGFyPih2YWx1ZSA+PiAyNCksCisgICAgICAgIHN0YXRpY19jYXN0PGNoYXI+KHZhbHVlID4+IDE2
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8Y2hhcj4odmFsdWUgPj4gOCksCisgICAgICAgIHN0YXRp
Y19jYXN0PGNoYXI+KHZhbHVlKSwKKyAgICAgICAgJ1wwJwogICAgIH07Ci0KLSAgICByZXR1cm4g
U3RyaW5nOjphZG9wdChXVEZNb3ZlKGRhdGEpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm91ckNDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb3VyQ0MuaAppbmRleCAyYTY0YzRiYzE1NDYzY2VjMTRiM2MyZjM5ZjI1
NGZkZDA1M2JmMWYyLi5hODA5ZTE1ZmEwNzlmZDNmYmE5NWMxNDM2MDhmODllM2IxZDVkY2RlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb3VyQ0MuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb3VyQ0MuaApAQCAtMjUsMjkgKzI1
LDMxIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1
Y3QgRm91ckNDIHsKLSAgICBGb3VyQ0MoKSA9IGRlZmF1bHQ7Ci0gICAgRm91ckNDKHVpbnQzMl90
IHZhbHVlKSA6IHZhbHVlKHZhbHVlKSB7IH0KKyAgICBjb25zdGV4cHIgRm91ckNDKCkgPSBkZWZh
dWx0OworICAgIGNvbnN0ZXhwciBGb3VyQ0ModWludDMyX3QgdmFsdWUpIDogdmFsdWUgeyB2YWx1
ZSB9IHsgfQorICAgIGNvbnN0ZXhwciBGb3VyQ0MoY29uc3QgY2hhciAoJm51bGxUZXJtaW5hdGVk
U3RyaW5nKVs1XSk7CisgICAgc3RkOjphcnJheTxjaGFyLCA1PiBzdHJpbmcoKSBjb25zdDsKKyAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxGb3VyQ0M+IGZyb21TdHJpbmcoU3RyaW5nVmlldyk7CiAK
LSAgICB0ZW1wbGF0ZTxzdGQ6OnNpemVfdCBOPgotICAgIGNvbnN0ZXhwciBGb3VyQ0MoY29uc3Qg
Y2hhciAoJmRhdGEpW05dKQotICAgIHsKLSAgICAgICAgc3RhdGljX2Fzc2VydCgoTiAtIDEpID09
IDQsICJGb3VyQ0MgbGl0ZXJhbHMgbXVzdCBiZSBleGFjdGx5IDQgY2hhcmFjdGVycyBsb25nIik7
Ci0gICAgICAgIHZhbHVlID0gZGF0YVswXSA8PCAyNCB8IGRhdGFbMV0gPDwgMTYgfCBkYXRhWzJd
IDw8IDggfCBkYXRhWzNdOwotICAgIH0KKyAgICB1aW50MzJfdCB2YWx1ZSB7IDAgfTsKK307CiAK
LSAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
c3RkOjpvcHRpb25hbDxGb3VyQ0M+IGZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7Citib29sIG9w
ZXJhdG9yPT0oRm91ckNDLCBGb3VyQ0MpOworYm9vbCBvcGVyYXRvciE9KEZvdXJDQywgRm91ckND
KTsKIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGb3VyQ0MmIG90aGVyKSBjb25zdCB7IHJl
dHVybiB2YWx1ZSA9PSBvdGhlci52YWx1ZTsgfQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBG
b3VyQ0MmIG90aGVyKSBjb25zdCB7IHJldHVybiB2YWx1ZSAhPSBvdGhlci52YWx1ZTsgfQorY29u
c3RleHByIEZvdXJDQzo6Rm91ckNDKGNvbnN0IGNoYXIgKCZkYXRhKVs1XSkKK3sKKyAgICBBU1NF
UlRfVU5ERVJfQ09OU1RFWFBSX0NPTlRFWFQoZGF0YVs0XSA9PSAnXDAnKTsKKyAgICB2YWx1ZSA9
IGRhdGFbMF0gPDwgMjQgfCBkYXRhWzFdIDw8IDE2IHwgZGF0YVsyXSA8PCA4IHwgZGF0YVszXTsK
K30KIAotICAgIHVpbnQzMl90IHZhbHVlIHsgMCB9OwotfTsKK2lubGluZSBib29sIG9wZXJhdG9y
PT0oRm91ckNDIGEsIEZvdXJDQyBiKSB7IHJldHVybiBhLnZhbHVlID09IGIudmFsdWU7IH0KK2lu
bGluZSBib29sIG9wZXJhdG9yIT0oRm91ckNDIGEsIEZvdXJDQyBiKSB7IHJldHVybiBhLnZhbHVl
ICE9IGIudmFsdWU7IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkBAIC01Niw3ICs1OCw3
IEBAIG5hbWVzcGFjZSBXVEYgewogdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBMb2dBcmd1bWVu
dDsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29yZTo6Rm91ckNDPiB7Ci0g
ICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBXZWJDb3JlOjpGb3VyQ0MmIGNvZGUpIHsg
cmV0dXJuIGNvZGUudG9TdHJpbmcoKTsgfQorICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29u
c3QgV2ViQ29yZTo6Rm91ckNDJiBjb2RlKSB7IHJldHVybiBjb2RlLnN0cmluZygpLmRhdGEoKTsg
fQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0hFVkNVdGlsaXRpZXMuY3BwCmluZGV4IDMyOGVhNDI0YWU4MTI0MWZmYzAz
Y2Y1ODI1Mzg1MjZhZWJjM2ZmNTMuLjBiNDE1MzdjZjE2ZDQ4MDVkMGNhNWM2NzQyMDczNTBkZDcy
ZDM3NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0hFVkNV
dGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0hFVkNV
dGlsaXRpZXMuY3BwCkBAIC0yMzgsNyArMjM4LDcgQEAgU3RyaW5nIGNyZWF0ZUhFVkNDb2RlY1Bh
cmFtZXRlcnNTdHJpbmcoY29uc3QgSEVWQ1BhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAgICAgICAg
ICwgY29tcGF0aWJpbGl0eUZsYWdzLnRvU3RyaW5nKCkpOwogfQogCi1zdGQ6Om9wdGlvbmFsPEhF
VkNQYXJhbWV0ZXJzPiBwYXJzZUhFVkNEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZChjb25zdCBG
b3VyQ0MmIGNvZGVjQ29kZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGQ6Om9wdGlv
bmFsPEhFVkNQYXJhbWV0ZXJzPiBwYXJzZUhFVkNEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZChG
b3VyQ0MgY29kZWNDb2RlLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyBJ
U08vSUVDIDE0NDk2LTE1OjIwMTQKICAgICAvLyA4LjMuMy4xIEhFVkMgZGVjb2RlciBjb25maWd1
cmF0aW9uIHJlY29yZApAQCAtMjQ4LDkgKzI0OCw5IEBAIHN0ZDo6b3B0aW9uYWw8SEVWQ1BhcmFt
ZXRlcnM+IHBhcnNlSEVWQ0RlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkKGNvbnN0IEZvdXJDQyYK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIEhFVkNQYXJhbWV0ZXJzIHBhcmFt
ZXRlcnM7Ci0gICAgaWYgKGNvZGVjQ29kZSA9PSBGb3VyQ0MoImhldjEiKSkKKyAgICBpZiAoY29k
ZWNDb2RlID09ICJoZXYxIikKICAgICAgICAgcGFyYW1ldGVycy5jb2RlYyA9IEhFVkNQYXJhbWV0
ZXJzOjpDb2RlYzo6SGV2MTsKLSAgICBlbHNlIGlmIChjb2RlY0NvZGUgPT0gRm91ckNDKCJodmMx
IikpCisgICAgZWxzZSBpZiAoY29kZWNDb2RlID09ICJodmMxIikKICAgICAgICAgcGFyYW1ldGVy
cy5jb2RlYyA9IEhFVkNQYXJhbWV0ZXJzOjpDb2RlYzo6SHZjMTsKICAgICBlbHNlCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9IRVZDVXRpbGl0aWVzLmgKaW5kZXggM2Y1MDEwMzQxNGZiNWVjYWQyYjgyYTdhZjkxZTRh
M2NhMjQ1NjYzYy4uOGJmYjM5MTc4ZjExYjE4MzZjNTAwZjJkZDFiNjNjYmRjNGQxOTY2MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSEVWQ1V0aWxpdGllcy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0hFVkNVdGlsaXRpZXMuaApA
QCAtNTUsNyArNTUsNyBAQCBzdHJ1Y3QgSEVWQ1BhcmFtZXRlcnMgewogfTsKIAogV0VCQ09SRV9F
WFBPUlQgc3RkOjpvcHRpb25hbDxIRVZDUGFyYW1ldGVycz4gcGFyc2VIRVZDQ29kZWNQYXJhbWV0
ZXJzKFN0cmluZ1ZpZXcpOwotV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxIRVZDUGFyYW1l
dGVycz4gcGFyc2VIRVZDRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoY29uc3QgRm91ckNDJiwg
Y29uc3QgU2hhcmVkQnVmZmVyJik7CitXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPEhFVkNQ
YXJhbWV0ZXJzPiBwYXJzZUhFVkNEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZChGb3VyQ0MsIGNv
bnN0IFNoYXJlZEJ1ZmZlciYpOwogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGNyZWF0ZUhFVkNDb2Rl
Y1BhcmFtZXRlcnNTdHJpbmcoY29uc3QgSEVWQ1BhcmFtZXRlcnMmKTsKIAogc3RydWN0IERvVmlQ
YXJhbWV0ZXJzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9JU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3guY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0lTT0ZhaXJQbGF5U3RyZWFtaW5n
UHNzaEJveC5jcHAKaW5kZXggNGY4NDk2YWUzY2FlNDdmMDJiZGMyNjQ5YzFiMjM3ZWI0NGVjNmQ4
NC4uZjJhNDFiMjk4MmRmMzFkYWExODRlMDhlNDEyMTllZmQzMWE0ZjgwYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0lTT0ZhaXJQbGF5
U3RyZWFtaW5nUHNzaEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0lTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveC5jcHAKQEAgLTI0OCw0
ICsyNDgsMTkgQEAgYm9vbCBJU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3g6OnBhcnNlKEpTQzo6
RGF0YVZpZXcmIHZpZXcsIHVuc2lnbmVkJiBvZmZzZXQpCiAgICAgcmV0dXJuIG1faW5pdERhdGFC
b3gucmVhZCh2aWV3LCBvZmZzZXQpOwogfQogCitJU09GYWlyUGxheVN0cmVhbWluZ0luZm9Cb3g6
OklTT0ZhaXJQbGF5U3RyZWFtaW5nSW5mb0JveCgpID0gZGVmYXVsdDsKK0lTT0ZhaXJQbGF5U3Ry
ZWFtaW5nSW5mb0JveDo6SVNPRmFpclBsYXlTdHJlYW1pbmdJbmZvQm94KGNvbnN0IElTT0ZhaXJQ
bGF5U3RyZWFtaW5nSW5mb0JveCYpID0gZGVmYXVsdDsKK0lTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5
QXNzZXRJZEJveDo6SVNPRmFpclBsYXlTdHJlYW1pbmdLZXlBc3NldElkQm94KGNvbnN0IElTT0Zh
aXJQbGF5U3RyZWFtaW5nS2V5QXNzZXRJZEJveCYpID0gZGVmYXVsdDsKK0lTT0ZhaXJQbGF5U3Ry
ZWFtaW5nS2V5QXNzZXRJZEJveDo6fklTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5QXNzZXRJZEJveCgp
ID0gZGVmYXVsdDsKK0lTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5Q29udGV4dEJveDo6SVNPRmFpclBs
YXlTdHJlYW1pbmdLZXlDb250ZXh0Qm94KGNvbnN0IElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5Q29u
dGV4dEJveCYpID0gZGVmYXVsdDsKK0lTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5Q29udGV4dEJveDo6
fklTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5Q29udGV4dEJveCgpID0gZGVmYXVsdDsKK0lTT0ZhaXJQ
bGF5U3RyZWFtaW5nS2V5VmVyc2lvbkxpc3RCb3g6OklTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5VmVy
c2lvbkxpc3RCb3goY29uc3QgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlWZXJzaW9uTGlzdEJveCYp
ID0gZGVmYXVsdDsKK0lTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5VmVyc2lvbkxpc3RCb3g6On5JU09G
YWlyUGxheVN0cmVhbWluZ0tleVZlcnNpb25MaXN0Qm94KCkgPSBkZWZhdWx0OworSVNPRmFpclBs
YXlTdHJlYW1pbmdLZXlSZXF1ZXN0Qm94OjpJU09GYWlyUGxheVN0cmVhbWluZ0tleVJlcXVlc3RC
b3goY29uc3QgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlSZXF1ZXN0Qm94JikgPSBkZWZhdWx0Owor
SVNPRmFpclBsYXlTdHJlYW1pbmdLZXlSZXF1ZXN0Qm94Ojp+SVNPRmFpclBsYXlTdHJlYW1pbmdL
ZXlSZXF1ZXN0Qm94KCkgPSBkZWZhdWx0OworSVNPRmFpclBsYXlTdHJlYW1pbmdJbml0RGF0YUJv
eDo6SVNPRmFpclBsYXlTdHJlYW1pbmdJbml0RGF0YUJveCgpID0gZGVmYXVsdDsKK0lTT0ZhaXJQ
bGF5U3RyZWFtaW5nSW5pdERhdGFCb3g6On5JU09GYWlyUGxheVN0cmVhbWluZ0luaXREYXRhQm94
KCkgPSBkZWZhdWx0OworSVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94OjpJU09GYWlyUGxheVN0
cmVhbWluZ1Bzc2hCb3goKSA9IGRlZmF1bHQ7CitJU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3g6
On5JU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3goKSA9IGRlZmF1bHQ7CisKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JU09GYWly
UGxheVN0cmVhbWluZ1Bzc2hCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9JU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3guaAppbmRleCA3OTRhMTUy
OGQwZGVlMzU5OWM1YWYzY2U0NGFkZjliNmI4MDIwYWRlLi5kYTViM2RmZjU1MDY3NzkxYjk3ZDRj
NjAxYzYyNThkMjA1MWFiN2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vSVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0lTT0ZhaXJQbGF5
U3RyZWFtaW5nUHNzaEJveC5oCkBAIC0yOSwxOSArMjksMjMgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0luZm9Cb3gg
ZmluYWwgOiBwdWJsaWMgSVNPRnVsbEJveCB7CitjbGFzcyBJU09GYWlyUGxheVN0cmVhbWluZ0lu
Zm9Cb3ggZmluYWwgOiBwdWJsaWMgSVNPRnVsbEJveCB7CiBwdWJsaWM6CisgICAgV0VCQ09SRV9F
WFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdJbmZvQm94KCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
SVNPRmFpclBsYXlTdHJlYW1pbmdJbmZvQm94KGNvbnN0IElTT0ZhaXJQbGF5U3RyZWFtaW5nSW5m
b0JveCYpOworICAgIElTT0ZhaXJQbGF5U3RyZWFtaW5nSW5mb0JveChJU09GYWlyUGxheVN0cmVh
bWluZ0luZm9Cb3gmJik7CisKICAgICBzdGF0aWMgRm91ckNDIGJveFR5cGVOYW1lKCkgeyByZXR1
cm4gImZwc2kiOyB9CiAKICAgICBGb3VyQ0Mgc2NoZW1lKCkgY29uc3QgeyByZXR1cm4gbV9zY2hl
bWU7IH0KIAogcHJpdmF0ZToKLSAgICBib29sIHBhcnNlKEpTQzo6RGF0YVZpZXcmLCB1bnNpZ25l
ZCYgb2Zmc2V0KSBvdmVycmlkZTsKKyAgICBib29sIHBhcnNlKEpTQzo6RGF0YVZpZXcmLCB1bnNp
Z25lZCYgb2Zmc2V0KSBmaW5hbDsKIAogICAgIEZvdXJDQyBtX3NjaGVtZTsKIH07CiAKLWNsYXNz
IFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5UmVxdWVzdEluZm9Cb3ggZmlu
YWwgOiBwdWJsaWMgSVNPRnVsbEJveCB7CitjbGFzcyBJU09GYWlyUGxheVN0cmVhbWluZ0tleVJl
cXVlc3RJbmZvQm94IGZpbmFsIDogcHVibGljIElTT0Z1bGxCb3ggewogcHVibGljOgogICAgIHN0
YXRpYyBGb3VyQ0MgYm94VHlwZU5hbWUoKSB7IHJldHVybiAiZmtyaSI7IH0KIApAQCAtNDksNDYg
KzUzLDcyIEBAIHB1YmxpYzoKICAgICBjb25zdCBLZXlJRCYga2V5SUQoKSBjb25zdCB7IHJldHVy
biBtX2tleUlEOyB9CiAKIHByaXZhdGU6Ci0gICAgYm9vbCBwYXJzZShKU0M6OkRhdGFWaWV3Jiwg
dW5zaWduZWQmIG9mZnNldCkgb3ZlcnJpZGU7CisgICAgYm9vbCBwYXJzZShKU0M6OkRhdGFWaWV3
JiwgdW5zaWduZWQmIG9mZnNldCkgZmluYWw7CiAKICAgICBLZXlJRCBtX2tleUlEOwogfTsKIAot
Y2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlBc3NldElkQm94IGZp
bmFsIDogcHVibGljIElTT0JveCB7CitjbGFzcyBJU09GYWlyUGxheVN0cmVhbWluZ0tleUFzc2V0
SWRCb3ggZmluYWwgOiBwdWJsaWMgSVNPQm94IHsKIHB1YmxpYzoKKyAgICBJU09GYWlyUGxheVN0
cmVhbWluZ0tleUFzc2V0SWRCb3goKSA9IGRlZmF1bHQ7CisgICAgV0VCQ09SRV9FWFBPUlQgSVNP
RmFpclBsYXlTdHJlYW1pbmdLZXlBc3NldElkQm94KGNvbnN0IElTT0ZhaXJQbGF5U3RyZWFtaW5n
S2V5QXNzZXRJZEJveCYpOworICAgIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5QXNzZXRJZEJveChJ
U09GYWlyUGxheVN0cmVhbWluZ0tleUFzc2V0SWRCb3gmJikgPSBkZWZhdWx0OworICAgIFdFQkNP
UkVfRVhQT1JUIH5JU09GYWlyUGxheVN0cmVhbWluZ0tleUFzc2V0SWRCb3goKTsKKyAgICBJU09G
YWlyUGxheVN0cmVhbWluZ0tleUFzc2V0SWRCb3gmIG9wZXJhdG9yPShjb25zdCBJU09GYWlyUGxh
eVN0cmVhbWluZ0tleUFzc2V0SWRCb3gmKSA9IGRlZmF1bHQ7CisgICAgSVNPRmFpclBsYXlTdHJl
YW1pbmdLZXlBc3NldElkQm94JiBvcGVyYXRvcj0oSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlBc3Nl
dElkQm94JiYpID0gZGVmYXVsdDsKKwogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlwZU5hbWUoKSB7
IHJldHVybiAiZmthaSI7IH0KICAgICBjb25zdCBWZWN0b3I8dWludDhfdD4gZGF0YSgpIGNvbnN0
IHsgcmV0dXJuIG1fZGF0YTsgfQogCiBwcml2YXRlOgotICAgIGJvb2wgcGFyc2UoSlNDOjpEYXRh
VmlldyYsIHVuc2lnbmVkJiBvZmZzZXQpIG92ZXJyaWRlOworICAgIGJvb2wgcGFyc2UoSlNDOjpE
YXRhVmlldyYsIHVuc2lnbmVkJiBvZmZzZXQpIGZpbmFsOwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+
IG1fZGF0YTsKIH07CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5n
S2V5Q29udGV4dEJveCBmaW5hbCA6IHB1YmxpYyBJU09Cb3ggeworY2xhc3MgSVNPRmFpclBsYXlT
dHJlYW1pbmdLZXlDb250ZXh0Qm94IGZpbmFsIDogcHVibGljIElTT0JveCB7CiBwdWJsaWM6Cisg
ICAgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlDb250ZXh0Qm94KCkgPSBkZWZhdWx0OworICAgIFdF
QkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5Q29udGV4dEJveChjb25zdCBJU09G
YWlyUGxheVN0cmVhbWluZ0tleUNvbnRleHRCb3gmKTsKKyAgICBJU09GYWlyUGxheVN0cmVhbWlu
Z0tleUNvbnRleHRCb3goSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlDb250ZXh0Qm94JiYpID0gZGVm
YXVsdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB+SVNPRmFpclBsYXlTdHJlYW1pbmdLZXlDb250ZXh0
Qm94KCk7CisgICAgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlDb250ZXh0Qm94JiBvcGVyYXRvcj0o
Y29uc3QgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlDb250ZXh0Qm94JikgPSBkZWZhdWx0OworICAg
IElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5Q29udGV4dEJveCYgb3BlcmF0b3I9KElTT0ZhaXJQbGF5
U3RyZWFtaW5nS2V5Q29udGV4dEJveCYmKSA9IGRlZmF1bHQ7CisKICAgICBzdGF0aWMgRm91ckND
IGJveFR5cGVOYW1lKCkgeyByZXR1cm4gImZrY3giOyB9CiAgICAgY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KIAogcHJpdmF0ZToKLSAgICBib29s
IHBhcnNlKEpTQzo6RGF0YVZpZXcmLCB1bnNpZ25lZCYgb2Zmc2V0KSBvdmVycmlkZTsKKyAgICBi
b29sIHBhcnNlKEpTQzo6RGF0YVZpZXcmLCB1bnNpZ25lZCYgb2Zmc2V0KSBmaW5hbDsKIAogICAg
IFZlY3Rvcjx1aW50OF90PiBtX2RhdGE7CiB9OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09G
YWlyUGxheVN0cmVhbWluZ0tleVZlcnNpb25MaXN0Qm94IGZpbmFsIDogcHVibGljIElTT0JveCB7
CitjbGFzcyBJU09GYWlyUGxheVN0cmVhbWluZ0tleVZlcnNpb25MaXN0Qm94IGZpbmFsIDogcHVi
bGljIElTT0JveCB7CiBwdWJsaWM6CisgICAgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlWZXJzaW9u
TGlzdEJveCgpID0gZGVmYXVsdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVh
bWluZ0tleVZlcnNpb25MaXN0Qm94KGNvbnN0IElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5VmVyc2lv
bkxpc3RCb3gmKTsKKyAgICBJU09GYWlyUGxheVN0cmVhbWluZ0tleVZlcnNpb25MaXN0Qm94KElT
T0ZhaXJQbGF5U3RyZWFtaW5nS2V5VmVyc2lvbkxpc3RCb3gmJikgPSBkZWZhdWx0OworICAgIFdF
QkNPUkVfRVhQT1JUIH5JU09GYWlyUGxheVN0cmVhbWluZ0tleVZlcnNpb25MaXN0Qm94KCk7Cisg
ICAgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlWZXJzaW9uTGlzdEJveCYgb3BlcmF0b3I9KGNvbnN0
IElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5VmVyc2lvbkxpc3RCb3gmKSA9IGRlZmF1bHQ7CisgICAg
SVNPRmFpclBsYXlTdHJlYW1pbmdLZXlWZXJzaW9uTGlzdEJveCYgb3BlcmF0b3I9KElTT0ZhaXJQ
bGF5U3RyZWFtaW5nS2V5VmVyc2lvbkxpc3RCb3gmJikgPSBkZWZhdWx0OworCiAgICAgc3RhdGlj
IEZvdXJDQyBib3hUeXBlTmFtZSgpIHsgcmV0dXJuICJma3ZsIjsgfQogICAgIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiB2ZXJzaW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fdmVyc2lvbnM7IH0KIAogcHJp
dmF0ZToKLSAgICBib29sIHBhcnNlKEpTQzo6RGF0YVZpZXcmLCB1bnNpZ25lZCYgb2Zmc2V0KSBv
dmVycmlkZTsKKyAgICBib29sIHBhcnNlKEpTQzo6RGF0YVZpZXcmLCB1bnNpZ25lZCYgb2Zmc2V0
KSBmaW5hbDsKIAogICAgIFZlY3Rvcjx1aW50OF90PiBtX3ZlcnNpb25zOwogfTsKIAotY2xhc3Mg
V0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlSZXF1ZXN0Qm94IGZpbmFsIDog
cHVibGljIElTT0JveCB7CitjbGFzcyBJU09GYWlyUGxheVN0cmVhbWluZ0tleVJlcXVlc3RCb3gg
ZmluYWwgOiBwdWJsaWMgSVNPQm94IHsKIHB1YmxpYzoKKyAgICBJU09GYWlyUGxheVN0cmVhbWlu
Z0tleVJlcXVlc3RCb3goKSA9IGRlZmF1bHQ7CisgICAgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBs
YXlTdHJlYW1pbmdLZXlSZXF1ZXN0Qm94KGNvbnN0IElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5UmVx
dWVzdEJveCYpOworICAgIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5UmVxdWVzdEJveChJU09GYWly
UGxheVN0cmVhbWluZ0tleVJlcXVlc3RCb3gmJikgPSBkZWZhdWx0OworICAgIFdFQkNPUkVfRVhQ
T1JUIH5JU09GYWlyUGxheVN0cmVhbWluZ0tleVJlcXVlc3RCb3goKTsKKwogICAgIHN0YXRpYyBG
b3VyQ0MgYm94VHlwZU5hbWUoKSB7IHJldHVybiAiZnBzayI7IH0KIAogICAgIGNvbnN0IElTT0Zh
aXJQbGF5U3RyZWFtaW5nS2V5UmVxdWVzdEluZm9Cb3gmIHJlcXVlc3RJbmZvKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZXF1ZXN0SW5mbzsgfQpAQCAtOTcsNyArMTI3LDcgQEAgcHVibGljOgogICAgIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8SVNPRmFpclBsYXlTdHJlYW1pbmdLZXlWZXJzaW9uTGlzdEJveD4m
IHZlcnNpb25MaXN0KCkgY29uc3QgeyByZXR1cm4gbV92ZXJzaW9uTGlzdDsgfQogCiBwcml2YXRl
OgotICAgIGJvb2wgcGFyc2UoSlNDOjpEYXRhVmlldyYsIHVuc2lnbmVkJiBvZmZzZXQpIG92ZXJy
aWRlOworICAgIGJvb2wgcGFyc2UoSlNDOjpEYXRhVmlldyYsIHVuc2lnbmVkJiBvZmZzZXQpIGZp
bmFsOwogCiAgICAgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlSZXF1ZXN0SW5mb0JveCBtX3JlcXVl
c3RJbmZvOwogICAgIHN0ZDo6b3B0aW9uYWw8SVNPRmFpclBsYXlTdHJlYW1pbmdLZXlBc3NldElk
Qm94PiBtX2Fzc2V0SUQ7CkBAIC0xMDUsMjggKzEzNSwzNCBAQCBwcml2YXRlOgogICAgIHN0ZDo6
b3B0aW9uYWw8SVNPRmFpclBsYXlTdHJlYW1pbmdLZXlWZXJzaW9uTGlzdEJveD4gbV92ZXJzaW9u
TGlzdDsKIH07CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nSW5p
dERhdGFCb3ggZmluYWwgOiBwdWJsaWMgSVNPQm94IHsKK2NsYXNzIElTT0ZhaXJQbGF5U3RyZWFt
aW5nSW5pdERhdGFCb3ggZmluYWwgOiBwdWJsaWMgSVNPQm94IHsKIHB1YmxpYzoKKyAgICBXRUJD
T1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0luaXREYXRhQm94KCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgfklTT0ZhaXJQbGF5U3RyZWFtaW5nSW5pdERhdGFCb3goKTsKKwogICAgIHN0YXRp
YyBGb3VyQ0MgYm94VHlwZU5hbWUoKSB7IHJldHVybiAiZnBzZCI7IH0KIAogICAgIGNvbnN0IElT
T0ZhaXJQbGF5U3RyZWFtaW5nSW5mb0JveCYgaW5mbygpIGNvbnN0IHsgcmV0dXJuIG1faW5mbzsg
fQogICAgIGNvbnN0IFZlY3RvcjxJU09GYWlyUGxheVN0cmVhbWluZ0tleVJlcXVlc3RCb3g+JiBy
ZXF1ZXN0cygpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdHM7IH0KIAogcHJpdmF0ZToKLSAgICBi
b29sIHBhcnNlKEpTQzo6RGF0YVZpZXcmLCB1bnNpZ25lZCYgb2Zmc2V0KSBvdmVycmlkZTsKKyAg
ICBib29sIHBhcnNlKEpTQzo6RGF0YVZpZXcmLCB1bnNpZ25lZCYgb2Zmc2V0KSBmaW5hbDsKIAog
ICAgIElTT0ZhaXJQbGF5U3RyZWFtaW5nSW5mb0JveCBtX2luZm87CiAgICAgVmVjdG9yPElTT0Zh
aXJQbGF5U3RyZWFtaW5nS2V5UmVxdWVzdEJveD4gbV9yZXF1ZXN0czsKIH07CiAKLWNsYXNzIFdF
QkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveCBmaW5hbCA6IHB1YmxpYyBJ
U09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3ggeworY2xhc3MgSVNPRmFpclBsYXlT
dHJlYW1pbmdQc3NoQm94IGZpbmFsIDogcHVibGljIElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZp
Y0hlYWRlckJveCB7CiBwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJl
YW1pbmdQc3NoQm94KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgfklTT0ZhaXJQbGF5U3RyZWFtaW5n
UHNzaEJveCgpOworCiAgICAgc3RhdGljIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZmFpclBsYXlT
eXN0ZW1JRCgpOwogCiAgICAgY29uc3QgSVNPRmFpclBsYXlTdHJlYW1pbmdJbml0RGF0YUJveCYg
aW5pdERhdGFCb3goKSB7IHJldHVybiBtX2luaXREYXRhQm94OyB9CiAKIHByaXZhdGU6Ci0gICAg
Ym9vbCBwYXJzZShKU0M6OkRhdGFWaWV3JiwgdW5zaWduZWQmIG9mZnNldCkgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBwYXJzZShKU0M6OkRhdGFWaWV3JiwgdW5zaWduZWQmIG9mZnNldCkgZmluYWw7CiAK
ICAgICBJU09GYWlyUGxheVN0cmVhbWluZ0luaXREYXRhQm94IG1faW5pdERhdGFCb3g7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwCmluZGV4
IDg0ZTA4NmExODRiYWNlNGZkMjkxZWYzYTU5MDMyNzI2MDM4NzA5MDcuLjczM2Q1NmEwODNkMzBi
M2Y0NTg0NzQ5NWY3Yzg5YjMxOTg0Njk0OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAKQEAgLTUwMiwxMSArNTAyLDExIEBAIHZvaWQgSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc05hdGl2ZVNhbXBsZXMoQ0ZBcnJheVJlZiBu
YXRpdmVTYW1wbGVzLCBjCiAgICAgICAgIGF1dG8gdHlwZSA9IHBlZWtSZXN1bHQudmFsdWUoKS5m
aXJzdDsKICAgICAgICAgYXV0byBib3hMZW5ndGggPSBwZWVrUmVzdWx0LnZhbHVlKCkuc2Vjb25k
OwogICAgICAgICBpZiAoYm94TGVuZ3RoID4gdmlldy0+Ynl0ZUxlbmd0aCgpKSB7Ci0gICAgICAg
ICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgImNodW5rICB0eXBlID0gJyIsIHR5cGUudG9T
dHJpbmcoKSwgIicsIHNpemUgPSAiLCAoc2l6ZV90KWJveExlbmd0aCwgIiBsYXJnZXIgdGhhbiBi
dWZmZXIgbGVuZ3RoISIpOworICAgICAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICJj
aHVuayAgdHlwZSA9ICciLCB0eXBlLCAiJywgc2l6ZSA9ICIsIGJveExlbmd0aCwgIiBsYXJnZXIg
dGhhbiBidWZmZXIgbGVuZ3RoISIpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0K
IAotICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAiY2h1bmsgIHR5cGUgPSAnIiwgdHlw
ZS50b1N0cmluZygpLCAiJywgc2l6ZSA9ICIsIChzaXplX3QpYm94TGVuZ3RoKTsKKyAgICAgICAg
SU5GT19MT0coTE9HSURFTlRJRklFUiwgImNodW5rICB0eXBlID0gJyIsIHR5cGUsICInLCBzaXpl
ID0gIiwgYm94TGVuZ3RoKTsKIAogICAgICAgICBkbyB7CiAgICAgICAgICAgICBpZiAobV9oYXZl
UmVwb3J0ZWRWVFRIZWFkZXIgfHwgIWZvcm1hdERlc2NyaXB0aW9uKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQVZBc3NldFRy
YWNrVXRpbGl0aWVzLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQVZBc3NldFRyYWNrVXRpbGl0aWVzLm1tCmluZGV4IDNmNmU0MzIwMTIzNDkz
MzY0ZWJhOGQ2MWFhNjgzYTU2MmUzMzE1ZjkuLjBkYWZjOGJmZDQxYmQwNGI5NzhjNDk4NDFmYWVh
MDA4ZjgyYjQ0YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0FWQXNzZXRUcmFja1V0aWxpdGllcy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVkFzc2V0VHJhY2tV
dGlsaXRpZXMubW0KQEAgLTQ5LDcgKzQ5LDcgQEAgc3RhdGljIFZlY3RvcjxGb3VyQ0M+IGNvbnRl
bnRUeXBlc1RvQ29kZWNzKGNvbnN0IFZlY3RvcjxDb250ZW50VHlwZT4mIGNvbnRlbnRUeXAKICAg
ICAgICAgICAgIGlmIChmaXJzdFBlcmlvZCAhPSBub3RGb3VuZCkKICAgICAgICAgICAgICAgICBj
b2RlY1N0cmluZy50cnVuY2F0ZShmaXJzdFBlcmlvZCk7CiAKLSAgICAgICAgICAgIGF1dG8gY29k
ZWNJZGVudGlmaWVyID0gRm91ckNDOjpmcm9tU3RyaW5nKGNvZGVjU3RyaW5nLmxlZnQoNCkpOwor
ICAgICAgICAgICAgYXV0byBjb2RlY0lkZW50aWZpZXIgPSBGb3VyQ0M6OmZyb21TdHJpbmcoU3Ry
aW5nVmlldyB7IGNvZGVjU3RyaW5nIH0ubGVmdCg0KSk7CiAgICAgICAgICAgICBpZiAoY29kZWNJ
ZGVudGlmaWVyKQogICAgICAgICAgICAgICAgIGNvZGVjcy5hcHBlbmQoY29kZWNJZGVudGlmaWVy
LnZhbHVlKCkpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9IRVZDVXRpbGl0aWVzQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9IRVZDVXRpbGl0aWVzQ29jb2EubW0KaW5kZXggNjQ4M2My
ODczZmRiZjc2MDZlMDM5OTRlZjg1YjlkMjlkOGVhZDU1MS4uYjlmYjhjYjM3NGVlMGVkNDJiZDI1
NWNmMjJmNzE2NThjNWVhYjAzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvSEVWQ1V0aWxpdGllc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0hFVkNVdGlsaXRpZXNDb2NvYS5tbQpAQCAtNDgsNyAr
NDgsNyBAQCBzdGQ6Om9wdGlvbmFsPE1lZGlhQ2FwYWJpbGl0aWVzSW5mbz4gdmFsaWRhdGVIRVZD
UGFyYW1ldGVycyhjb25zdCBIRVZDUGFyYW1ldGVycwogICAgICAgICBpZiAoIVBBTDo6aXNBVkZv
dW5kYXRpb25GcmFtZXdvcmtBdmFpbGFibGUoKSB8fCAhUEFMOjpjYW5Mb2FkX0FWRm91bmRhdGlv
bl9BVlZpZGVvQ29kZWNUeXBlSEVWQ1dpdGhBbHBoYSgpKQogICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAotICAgICAgICBhdXRvIGNvZGVjQ29kZSA9IEZvdXJDQzo6ZnJvbVN0cmlu
ZyhBVlZpZGVvQ29kZWNUeXBlSEVWQ1dpdGhBbHBoYSk7CisgICAgICAgIGF1dG8gY29kZWNDb2Rl
ID0gRm91ckNDOjpmcm9tU3RyaW5nKFN0cmluZyB7IEFWVmlkZW9Db2RlY1R5cGVIRVZDV2l0aEFs
cGhhIH0pOwogICAgICAgICBpZiAoIWNvZGVjQ29kZSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2N2L0dyYXBoaWNzQ29udGV4dEdMQ1ZDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jdi9HcmFwaGljc0NvbnRleHRHTENWQ29jb2EuY3BwCmluZGV4IGQ0NTIwNDlj
YWQzNzMwYmY5OTMwOWU3NmYyMjk3NTg3MDYxYTg5NjguLjVmMmZkODVjOGNlOGUzODI4YTA3Mzg4
YjE4YjQ3ODMzODUxMjU1ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2N2L0dyYXBoaWNzQ29udGV4dEdMQ1ZDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkNvY29hLmNwcApAQCAt
NTg1LDcgKzU4NSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xDVkNvY29hOjpjb3B5VmlkZW9T
YW1wbGVUb1RleHR1cmUoY29uc3QgTWVkaWFTYW1wbGVWaWRlb0ZyCiAgICAgICAgICYmIHBpeGVs
Rm9ybWF0ICE9IGtDVlBpeGVsRm9ybWF0VHlwZV9BR1hfNDIwWXBDYkNyOEJpUGxhbmFyRnVsbFJh
bmdlCiAjZW5kaWYKICAgICAgICAgKSB7Ci0gICAgICAgIExPRyhXZWJHTCwgIkdyYXBoaWNzQ29u
dGV4dEdMQ1ZDb2NvYTo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKCVwKSAtIEFz
a2VkIHRvIGNvcHkgYW4gdW5zdXBwb3J0ZWQgcGl4ZWwgZm9ybWF0ICgnJXMnKS4iLCB0aGlzLCBG
b3VyQ0MocGl4ZWxGb3JtYXQpLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIExP
RyhXZWJHTCwgIkdyYXBoaWNzQ29udGV4dEdMQ1ZDb2NvYTo6Y29weVZpZGVvVGV4dHVyZVRvUGxh
dGZvcm1UZXh0dXJlKCVwKSAtIEFza2VkIHRvIGNvcHkgYW4gdW5zdXBwb3J0ZWQgcGl4ZWwgZm9y
bWF0ICgnJXMnKS4iLCB0aGlzLCBGb3VyQ0MocGl4ZWxGb3JtYXQpLnN0cmluZygpLmRhdGEoKSk7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgSU9TdXJmYWNlUmVmIHN1cmZhY2Ug
PSBDVlBpeGVsQnVmZmVyR2V0SU9TdXJmYWNlKGltYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT0JveC5jcHAKaW5kZXggYzA2ZTNhNjMzODg2MGYxMWVi
MGViY2ZhNDM4ZDM1MjAyNjZmNWQ0OC4uM2M2YjYxZDRmM2VjYWMwYjAxNTcyMWViNDk0OTEwOGQw
NjNlNDgxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNv
L0lTT0JveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lT
T0JveC5jcHAKQEAgLTMyLDEzICszMiwxNyBAQCB1c2luZyBKU0M6OkRhdGFWaWV3OwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK0lTT0JveDo6SVNPQm94KCkgPSBkZWZhdWx0OworSVNPQm94Ojp+
SVNPQm94KCkgPSBkZWZhdWx0OworSVNPQm94OjpJU09Cb3goY29uc3QgSVNPQm94JikgPSBkZWZh
dWx0OworCiBJU09Cb3g6OlBlZWtSZXN1bHQgSVNPQm94OjpwZWVrQm94KERhdGFWaWV3JiB2aWV3
LCB1bnNpZ25lZCBvZmZzZXQpCiB7CiAgICAgdWludDY0X3Qgc2l6ZSA9IDA7CiAgICAgaWYgKCFj
aGVja2VkUmVhZDx1aW50MzJfdD4oc2l6ZSwgdmlldywgb2Zmc2V0LCBCaWdFbmRpYW4pKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgRm91ckNDIHR5cGUgPSB7IHVpbnQzMl90
IHsgMCB9IH07CisgICAgRm91ckNDIHR5cGU7CiAgICAgaWYgKCFjaGVja2VkUmVhZDx1aW50MzJf
dD4odHlwZSwgdmlldywgb2Zmc2V0LCBCaWdFbmRpYW4pKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCkBAIC05Niw2ICsxMDAsOSBAQCBib29sIElTT0JveDo6cGFyc2UoRGF0YVZpZXcm
IHZpZXcsIHVuc2lnbmVkJiBvZmZzZXQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK0lTT0Z1bGxC
b3g6OklTT0Z1bGxCb3goKSA9IGRlZmF1bHQ7CitJU09GdWxsQm94OjpJU09GdWxsQm94KGNvbnN0
IElTT0Z1bGxCb3gmKSA9IGRlZmF1bHQ7CisKIGJvb2wgSVNPRnVsbEJveDo6cGFyc2UoRGF0YVZp
ZXcmIHZpZXcsIHVuc2lnbmVkJiBvZmZzZXQpCiB7CiAgICAgaWYgKCFJU09Cb3g6OnBhcnNlKHZp
ZXcsIG9mZnNldCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9pc28vSVNPQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNP
Qm94LmgKaW5kZXggZDgzZTRhNDA0MGNjZWU5ZmZiNzM5ZGZjMjI3Y2Y3N2EwNjE4M2MyNi4uYjg5
NWIyYWFmZmVkZjE4ZTUxYjQ4YmI5NjUwZjU0M2ZkODI4ODg5NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT0JveC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaApAQCAtMzYsMzEgKzM2LDM0IEBAIGNs
YXNzIERhdGFWaWV3OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFdFQkNPUkVfRVhQ
T1JUIElTT0JveCB7CitjbGFzcyBJU09Cb3ggewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgotICAgIHZpcnR1YWwgfklTT0JveCgpID0gZGVmYXVsdDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBJU09Cb3goKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBJU09Cb3goY29uc3QgSVNPQm94
Jik7CisgICAgSVNPQm94KElTT0JveCYmKSA9IGRlZmF1bHQ7CisgICAgV0VCQ09SRV9FWFBPUlQg
dmlydHVhbCB+SVNPQm94KCk7CisKKyAgICBJU09Cb3gmIG9wZXJhdG9yPShjb25zdCBJU09Cb3gm
KSA9IGRlZmF1bHQ7CisgICAgSVNPQm94JiBvcGVyYXRvcj0oSVNPQm94JiYpID0gZGVmYXVsdDsK
IAogICAgIHVzaW5nIFBlZWtSZXN1bHQgPSBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxGb3VyQ0Ms
IHVpbnQ2NF90Pj47CiAgICAgc3RhdGljIFBlZWtSZXN1bHQgcGVla0JveChKU0M6OkRhdGFWaWV3
JiwgdW5zaWduZWQgb2Zmc2V0KTsKLSAgICBzdGF0aWMgc2l6ZV90IG1pbmltdW1Cb3hTaXplKCkg
eyByZXR1cm4gMiAqIHNpemVvZih1aW50MzJfdCk7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIHNp
emVfdCBtaW5pbXVtQm94U2l6ZSgpIHsgcmV0dXJuIDIgKiBzaXplb2YodWludDMyX3QpOyB9CiAK
LSAgICBib29sIHJlYWQoSlNDOjpEYXRhVmlldyYpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
cmVhZChKU0M6OkRhdGFWaWV3Jik7CiAgICAgYm9vbCByZWFkKEpTQzo6RGF0YVZpZXcmLCB1bnNp
Z25lZCYgb2Zmc2V0KTsKIAogICAgIHVpbnQ2NF90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3Np
emU7IH0KLSAgICBjb25zdCBGb3VyQ0MmIGJveFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2JveFR5
cGU7IH0KKyAgICBGb3VyQ0MgYm94VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fYm94VHlwZTsgfQog
ICAgIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZXh0ZW5kZWRUeXBlKCkgY29uc3QgeyByZXR1cm4g
bV9leHRlbmRlZFR5cGU7IH0KIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgYm9vbCBwYXJzZShK
U0M6OkRhdGFWaWV3JiwgdW5zaWduZWQmIG9mZnNldCk7CiAKLSAgICBlbnVtIEVuZGlhbm5lc3Mg
ewotICAgICAgICBCaWdFbmRpYW4sCi0gICAgICAgIExpdHRsZUVuZGlhbiwKLSAgICB9OworICAg
IGVudW0gRW5kaWFubmVzcyB7IEJpZ0VuZGlhbiwgTGl0dGxlRW5kaWFuIH07CiAKLSAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUiwgdHlwZW5hbWUgVj4KKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBSLCB0eXBlbmFtZSBWPgogICAgIHN0YXRpYyBib29sIGNoZWNr
ZWRSZWFkKFImIHJldHVyblZhbHVlLCBWJiB2aWV3LCB1bnNpZ25lZCYgb2Zmc2V0LCBFbmRpYW5u
ZXNzIGVuZGlhbm5lc3MpCiAgICAgewogICAgICAgICBib29sIHJlYWRTdGF0dXMgPSBmYWxzZTsK
QEAgLTc2LDEyICs3OSwxNiBAQCBwcm90ZWN0ZWQ6CiAgICAgfQogCiAgICAgdWludDY0X3QgbV9z
aXplIHsgMCB9OwotICAgIEZvdXJDQyBtX2JveFR5cGUgeyB1aW50MzJfdCB7IDAgfSB9OworICAg
IEZvdXJDQyBtX2JveFR5cGU7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fZXh0ZW5kZWRUeXBlOwog
fTsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRnVsbEJveCA6IHB1YmxpYyBJU09Cb3ggewor
Y2xhc3MgSVNPRnVsbEJveCA6IHB1YmxpYyBJU09Cb3ggewogcHVibGljOgorICAgIFdFQkNPUkVf
RVhQT1JUIElTT0Z1bGxCb3goKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBJU09GdWxsQm94KGNvbnN0
IElTT0Z1bGxCb3gmKTsKKyAgICBJU09GdWxsQm94KElTT0Z1bGxCb3gmJikgPSBkZWZhdWx0Owor
CiAgICAgdWludDhfdCB2ZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV92ZXJzaW9uOyB9CiAgICAg
dWludDMyX3QgZmxhZ3MoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzOyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09PcmlnaW5hbEZvcm1hdEJv
eC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT09yaWdpbmFsRm9y
bWF0Qm94LmgKaW5kZXggMjIxY2I2NzQwNzgxNGFjZDE2M2M4ZDFiZDA3YWVlNTEwNzBlNDJhMC4u
MGRlYzQxZTVjODJlNmExYjYxNTBlODVjZjlmODFiMGUzOTRhZjU4MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT09yaWdpbmFsRm9ybWF0Qm94LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT09yaWdpbmFsRm9y
bWF0Qm94LmgKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBib29sIHBh
cnNlKEpTQzo6RGF0YVZpZXcmLCB1bnNpZ25lZCYgb2Zmc2V0KSBvdmVycmlkZTsKIAotICAgIEZv
dXJDQyBtX2RhdGFGb3JtYXQgeyB1aW50MzJfdCB7IDAgfSB9OworICAgIEZvdXJDQyBtX2RhdGFG
b3JtYXQ7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9pc28vSVNPU2NoZW1lVHlwZUJveC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvaXNvL0lTT1NjaGVtZVR5cGVCb3guaAppbmRleCAxYjZhZmNlM2M1YTFkYzE3YzZjN2M2
NmM2ZDQ1YjU1OWY3NWJlZTZmLi43M2UyODNjNjNlZWJkNTRiYThmNjFlNWE2M2JmOWNiYzEzZmI4
NmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNP
U2NoZW1lVHlwZUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lz
by9JU09TY2hlbWVUeXBlQm94LmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICBib29sIHBhcnNlKEpTQzo6RGF0YVZpZXcmLCB1bnNpZ25lZCYgb2Zmc2V0KSBvdmVycmlk
ZTsKIAotICAgIEZvdXJDQyBtX3NjaGVtZVR5cGUgeyB1aW50MzJfdCB7IDAgfSB9OworICAgIEZv
dXJDQyBtX3NjaGVtZVR5cGU7CiAgICAgdWludDMyX3QgbV9zY2hlbWVWZXJzaW9uIHsgMCB9Owog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lT
T1ZUVEN1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRU
Q3VlLmNwcAppbmRleCBhNTJiZTI0ZjZmYTZjMDhhZjlhYzY1NDFjMzU2NTI1MjZkMjAyZTc4Li4x
NjQ5ZjQ5ZTEwNGJmZjkzYTY2Y2I3MGNhZTZlNjMwNTFlODg1Yzg3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRUQ3VlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRUQ3VlLmNwcApAQCAtOTEsNiAr
OTEsMTIgQEAgSVNPV2ViVlRUQ3VlOjpJU09XZWJWVFRDdWUoTWVkaWFUaW1lJiYgcHJlc2VudGF0
aW9uVGltZSwgTWVkaWFUaW1lJiYgZHVyYXRpb24sIFMKIHsKIH0KIAorSVNPV2ViVlRUQ3VlOjpJ
U09XZWJWVFRDdWUoY29uc3QgSVNPV2ViVlRUQ3VlJikgPSBkZWZhdWx0OworCitJU09XZWJWVFRD
dWU6OklTT1dlYlZUVEN1ZShJU09XZWJWVFRDdWUmJikgPSBkZWZhdWx0OworCitJU09XZWJWVFRD
dWU6On5JU09XZWJWVFRDdWUoKSA9IGRlZmF1bHQ7CisKIGJvb2wgSVNPV2ViVlRUQ3VlOjpwYXJz
ZShEYXRhVmlldyYgdmlldywgdW5zaWduZWQmIG9mZnNldCkKIHsKICAgICBpZiAoIUlTT0JveDo6
cGFyc2Uodmlldywgb2Zmc2V0KSkKQEAgLTExMCw3ICsxMTYsNyBAQCBib29sIElTT1dlYlZUVEN1
ZTo6cGFyc2UoRGF0YVZpZXcmIHZpZXcsIHVuc2lnbmVkJiBvZmZzZXQpCiAgICAgICAgIGVsc2Ug
aWYgKHN0cmluZ0JveC5ib3hUeXBlKCkgPT0gdnR0UGF5bG9hZEJveFR5cGUoKSkKICAgICAgICAg
ICAgIG1fY3VlVGV4dCA9IHN0cmluZ0JveC5jb250ZW50cygpOwogICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBMT0coTWVkaWEsICJJU09XZWJWVFRDdWU6OklTT1dlYlZUVEN1ZSAtIHNraXBwaW5n
IGJveCBpZCA9IFwiJXNcIiwgc2l6ZSA9ICV6dSIsIHN0cmluZ0JveC5ib3hUeXBlKCkudG9TdHJp
bmcoKS51dGY4KCkuZGF0YSgpLCAoc2l6ZV90KXN0cmluZ0JveC5zaXplKCkpOworICAgICAgICAg
ICAgTE9HKE1lZGlhLCAiSVNPV2ViVlRUQ3VlOjpJU09XZWJWVFRDdWUgLSBza2lwcGluZyBib3gg
aWQgPSBcIiVzXCIsIHNpemUgPSAlIiBQUkl1NjQsIHN0cmluZ0JveC5ib3hUeXBlKCkuc3RyaW5n
KCkuZGF0YSgpLCBzdHJpbmdCb3guc2l6ZSgpKTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRU
Q3VlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRUQ3VlLmgK
aW5kZXggZWNjYWVmM2RhYWVlY2Y2OWNhYjEwMjc1NTNmZmMxY2MwZWUyMGE0Ni4uMDRiNWUzYTU2
YzNiNjkxZWUxZmNhMDljNDg1YWM2ZjRjYTY5Njk3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1ZUVEN1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUuaApAQCAtMzksMTAgKzM5LDE2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIC8vIE4gYnl0ZXMgOiBDdWVTZXR0aW5nc0JveCA6IGJveCA6IG9w
dGlvbmFsCiAvLyBOIGJ5dGVzIDogQ3VlUGF5bG9hZEJveCA6IGJveCA6IHJlcXVpcmVkCiAKLWNs
YXNzIFdFQkNPUkVfRVhQT1JUIElTT1dlYlZUVEN1ZSBmaW5hbCA6IHB1YmxpYyBJU09Cb3ggewor
Y2xhc3MgSVNPV2ViVlRUQ3VlIGZpbmFsIDogcHVibGljIElTT0JveCB7CiBwdWJsaWM6CiAgICAg
SVNPV2ViVlRUQ3VlKGNvbnN0IE1lZGlhVGltZSYgcHJlc2VudGF0aW9uVGltZSwgY29uc3QgTWVk
aWFUaW1lJiBkdXJhdGlvbik7Ci0gICAgSVNPV2ViVlRUQ3VlKE1lZGlhVGltZSYmIHByZXNlbnRh
dGlvblRpbWUsIE1lZGlhVGltZSYmIGR1cmF0aW9uLCBTdHJpbmcmJiBjdWVJRCwgU3RyaW5nJiYg
Y3VlVGV4dCwgU3RyaW5nJiYgc2V0dGluZ3MgPSB7IH0sIFN0cmluZyYmIHNvdXJjZUlEID0geyB9
LCBTdHJpbmcmJiBvcmlnaW5hbFN0YXJ0VGltZSA9IHsgfSk7CisgICAgV0VCQ09SRV9FWFBPUlQg
SVNPV2ViVlRUQ3VlKE1lZGlhVGltZSYmIHByZXNlbnRhdGlvblRpbWUsIE1lZGlhVGltZSYmIGR1
cmF0aW9uLCBTdHJpbmcmJiBjdWVJRCwgU3RyaW5nJiYgY3VlVGV4dCwgU3RyaW5nJiYgc2V0dGlu
Z3MgPSB7IH0sIFN0cmluZyYmIHNvdXJjZUlEID0geyB9LCBTdHJpbmcmJiBvcmlnaW5hbFN0YXJ0
VGltZSA9IHsgfSk7CisgICAgSVNPV2ViVlRUQ3VlKGNvbnN0IElTT1dlYlZUVEN1ZSYpOworICAg
IFdFQkNPUkVfRVhQT1JUIElTT1dlYlZUVEN1ZShJU09XZWJWVFRDdWUmJik7CisgICAgV0VCQ09S
RV9FWFBPUlQgfklTT1dlYlZUVEN1ZSgpOworCisgICAgSVNPV2ViVlRUQ3VlJiBvcGVyYXRvcj0o
Y29uc3QgSVNPV2ViVlRUQ3VlJikgPSBkZWZhdWx0OworICAgIElTT1dlYlZUVEN1ZSYgb3BlcmF0
b3I9KElTT1dlYlZUVEN1ZSYmKSA9IGRlZmF1bHQ7CiAKICAgICBzdGF0aWMgRm91ckNDIGJveFR5
cGVOYW1lKCkgeyByZXR1cm4gInZ0dGMiOyB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449758</attachid>
            <date>2022-01-23 11:21:13 -0800</date>
            <delta_ts>2022-01-23 16:08:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235461-20220123112112.patch</filename>
            <type>text/plain</type>
            <size>32966</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NDIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2M4NDVkOGJiZmM5MGIz
MWEzNjBlZDNhMjFmMTkxMzMwYjYzMDI5MS4uOThmNTNjZmRkMDhkZDhkMTQzMTA4MmJiM2RmYzdh
ZmI5ZmFjYTEyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkxIEBACisyMDIyLTAxLTIyICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBJbXByb3ZlIEZvdXJDQyB0byB1
c2UgbW9yZSBpbmxpbmluZywgZml4IGluY29ycmVjdCBtaXggb2YgV0VCQ09SRV9FWFBPUlQgb24g
ZW50aXJlIGNsYXNzIHdpdGggaW5saW5lIGZ1bmN0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NDYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6IEFkZGVkIEZvdXJDQy5jcHAuIEJlY2F1c2Ugb2YKKyAgICAgICAgdW5pZmllZCBzb3Vy
Y2VzIGl0IHdhcyBjb21waWxlZCwgYnV0IGJlY2F1c2UgaXQgd2FzIG5vdCBpbiB0aGUgcHJvamVj
dAorICAgICAgICB2YXJpb3VzIFhjb2RlIGZlYXR1cmVzIHdvdWxkIG5vdCB3b3JrLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0lTT0ZhaXJQbGF5U3RyZWFtaW5n
UHNzaEJveC5jcHA6CisgICAgICAgIEFkZGVkIHNvbWUgZXhwbGljaXRseSBub24taW5saW5lZCBl
eHBvcnRlZCBmdW5jdGlvbnMuIFRoZXNlIG5lZWQgdG8KKyAgICAgICAgYmUgZXhwb3J0ZWQgYmVj
YXVzZSB0aGV5IGFyZSB1c2VkIGluIFRlc3RXZWJLaXRBUEkgdGVzdHMgYW5kIHdlCisgICAgICAg
IHdhbnQgdG8gZXhwb3J0IHRoZSBmdW5jdGlvbnMgcmF0aGVyIHRoYW4gdGhlIHZ0YWJsZSBwb2lu
dGVyLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JU09GYWlyUGxh
eVN0cmVhbWluZ1Bzc2hCb3guaDoKKyAgICAgICAgU3RvcCB1c2luZyBXRUJDT1JFX0VYUE9SVCBv
biB3aG9sZSBjbGFzc2VzIHRoYXQgY29udGFpbiBpbmxpbmUKKyAgICAgICAgZnVuY3Rpb25zLCBh
bmQgaW5zdGVhZCB1c2UgaXQgb24gaW5kaXZpZHVhbCBmdW5jdGlvbnMuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Gb3VyQ0MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm91ckNDOjpm
cm9tU3RyaW5nKTogVGFrZSBhIFN0cmluZ1ZpZXcgaW5zdGVhZCBvZiBTdHJpbmcuCisgICAgICAg
IFJlbW92ZWQgdW5uZWNlc3NhcnkgYWxsb2NhdGlvbiBvZiBhIHRlbXBvcmFyeSBDU3RyaW5nIGZv
ciB0aGUgcmVzdWx0CisgICAgICAgIG9mIFN0cmluZzo6YXNjaWkuCisgICAgICAgIChXZWJDb3Jl
OjpGb3VyQ0M6OnN0cmluZyBjb25zdCk6IFJlbmFtZSBmcm9tIHRvU3RyaW5nIHRvIHN0cmluZyBh
bmQKKyAgICAgICAgY2hhbmdlZCB0aGUgcmV0dXJuIHR5cGUgdG8gc3RkOjphcnJheSBpbnN0ZWFk
IG9mIFN0cmluZy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvdXJDQy5oOiBNYWRl
IGFsbCB0aGUgY29uc3RydWN0b3JzIGNvbnN0ZXhwci4KKyAgICAgICAgQ2hhbmdlZCB0aGUgc3Ry
aW5nIGxpdGVyYWwgY29uc3RydWN0b3IgdG8ganVzdCB3b3JrIHdpdGggNC1jaGFyYWN0ZXIKKyAg
ICAgICAgc3RyaW5ncy4gVGhlIG9sZCBvbmUgd2FzIGEgdGVtcGxhdGUgZm9yIGFueSBsZW5ndGgg
c3RyaW5nLCBidXQgdGhlbgorICAgICAgICBhc3NlcnRlZCBpdCB3YXMgNCBjaGFyYWN0ZXJzIGxv
bmcsIHdoaWNoIGlzIGEgcm91bmRhYm91dCB3YXkgdG8gZG8gaXQuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNl
SEVWQ0RlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkKTogVGFrZSBGb3VyQ0MgaW5zdGVhZAorICAg
ICAgICBvZiBjb25zdCBGb3VyQ0MmLiBBbHNvIHJlbW92ZWQgdW5uZWNlc3NhcnkgZXhwbGljaXQg
Y29udmVyc2lvbiB0bworICAgICAgICBGb3VyQ0Mgc2luY2UgZm91ciBjaGFyYWN0ZXIgc3RyaW5n
cy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmg6IERpdHRvLgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0lTT0ZhaXJQbGF5U3Ry
ZWFtaW5nUHNzaEJveC5oOgorICAgICAgICBSZW1vdmVkIHVubmVlZGVkIFdFQkNPUkVfRVhQT1JU
IG9uIHRoZXNlIGNsYXNzZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzTmF0aXZlU2FtcGxlcyk6IFJlbW92ZWQK
KyAgICAgICAgdW5uZWNlc2FyeSBjYWxscyB0byB0b1N0cmluZywgbG9nZ2luZyBjYW4gaGFuZGxl
IEZvdXJDQyB3aXRob3V0IGl0LgorICAgICAgICBBbHNvIHJlbW92ZWQgdW5uZWVkZWQgdHlwZSBj
YXN0cyB0byBzaXplX3QuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9BVkFzc2V0VHJhY2tVdGlsaXRpZXMubW06CisgICAgICAgIChXZWJDb3JlOjpjb250
ZW50VHlwZXNUb0NvZGVjcyk6IFJlbW92ZWQgdW5uZWNlc3NhcnkgYWxsb2NhdGlvbiBvZgorICAg
ICAgICBhIFN0cmluZyBieSB1c2luZyBTdHJpbmdWaWV3IGZvciB0aGUgc3Vic3RyaW5nLgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSEVWQ1V0aWxpdGllc0NvY29hLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6dmFsaWRhdGVIRVZDUGFyYW1ldGVycyk6IEFkZGVkIGFuIGV4cGxp
Y2l0IGNhc3QgdG8gU3RyaW5nCisgICAgICAgIHNpbmNlIEZvdXJDQzo6ZnJvbVN0cmluZyBub3cg
dGFrZXMgYSBTdHJpbmdWaWV3LiBTYWRseSB0aGVyZSdzIG5vdAorICAgICAgICBhIHRyaXZpYWwg
d2F5IHRvIGRvIHRoaXMgd2l0aG91dCBhbGxvY2F0aW5nIGEgU3RyaW5nLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkNvY29hLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ1ZDb2NvYTo6Y29weVZpZGVvU2FtcGxlVG9U
ZXh0dXJlKToKKyAgICAgICAgU2luY2UgRm91ckNDOjpzdHJpbmcgbm93IHJldHVybnMgYSBzdGQ6
OmFycmF5IHdpdGggYSBDLXN0eWxlCisgICAgICAgIG51bGwtdGVybWluYXRlZCBzdHJpbmcsIHVz
ZSBpdCBpbnN0ZWFkIG9mIGNhbGxpbmcgdG9TdHJpbmcgYW5kCisgICAgICAgIHRoZW4gdXRmOC4g
Q2xlYW5lciBhbmQgYWxzbyBtdWNoIG1vcmUgZWZmaWNpZW50LgorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvaXNvL0lTT0JveC5jcHA6IE1vdmVkIGNvbnN0cnVjdG9ycyBhbmQKKyAgICAg
ICAgZGVzdHJ1Y3RvcnMgc28gdGhleSBhcmUgbm8gbG9uZ2VyIGlubGluZWQgc28gdGhlcmUgaXMg
bm8gbmVlZCB0bworICAgICAgICBleHBvcnQgdGhlIHZ0YWJsZS4KKyAgICAgICAgKFdlYkNvcmU6
OklTT0JveDo6cGVla0JveCk6IFJlbW92ZWQgdW5uZWNlc3NhcnkgaW5pdGlhbGl6YXRpb24KKyAg
ICAgICAgb2YgRm91ckNDIHNpbmNlIHRoZXkgYXJlIHplcm8gYnkgZGVmYXVsdC4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaDogUmVtb3ZlZCBXRUJDT1JFX0VYUE9S
VCBvZgorICAgICAgICB0aGUgZW50aXJlIGNsYXNzLCBzaW5jZSB0aGF0J3Mgbm90IGZ1bGx5IGNv
bXBhdGlibGUgd2l0aCBhIGNsYXNzCisgICAgICAgIHdpdGggaW5saW5lIGZ1bmN0aW9ucyAod2Fy
bmluZyBpcyBkb25lIGJ5IGNoZWNrLXdlYmtpdC1zdHlsZSkuCisgICAgICAgIFB1dCBXRUJDT1JF
X0VYUE9SVCBvbiBpbmRpdmlkdWFsIGZ1bmN0aW9ucyBpbnN0ZWFkLiAgQWxzbyB1c2Ugc29tZQor
ICAgICAgICBtb3JlIGNvbnN0ZXhwciwgcmVtb3ZlZCB1bm5lZWRlZCBGb3VyQ0MgaW5pdGlhbGl6
YXRpb24gc2luY2UgaXQgaXMKKyAgICAgICAgemVybyBieSBkZWZhdWx0LCBhbmQgdXNlIEZvdXJD
Qywgbm90IGNvbnN0IEZvdXJDQyYgZm9yIHJldHVybiB2YWx1ZS4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2lzby9JU09PcmlnaW5hbEZvcm1hdEJveC5oOiBSZW1vdmVkIHVubmVlZGVk
CisgICAgICAgIEZvdXJDQyBpbml0aWFsaXphdGlvbiBzaW5jZSBpdCBpcyB6ZXJvIGJ5IGRlZmF1
bHQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1NjaGVtZVR5cGVCb3guaDog
RGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRUQ3VlLmNwcDog
TW92ZWQgY29uc3RydWN0b3JzIGFuZAorICAgICAgICBkZXN0cnVjdG9ycyBzbyB0aGV5IGFyZSBu
byBsb25nZXIgaW5saW5lZCBzbyB0aGVyZSBpcyBubyBuZWVkIHRvCisgICAgICAgIGV4cG9ydCB0
aGUgdnRhYmxlLgorICAgICAgICAoV2ViQ29yZTo6SVNPV2ViVlRUQ3VlOjpwYXJzZSk6IFVzZSBQ
Ukl1NjQgaW5zdGVhZCBvZiBjYXN0aW5nCisgICAgICAgIHRvIHNpemVfdCwgbm8gbmVlZCB0byBy
ZWx5IG9uIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0eXBlIHNpemVzLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1ZUVEN1ZS5oOiBSZW1vdmVkIFdFQkNPUkVfRVhQT1JU
IG9mCisgICAgICAgIHRoZSBlbnRpcmUgY2xhc3MsIHNpbmNlIHRoYXQncyBub3QgZnVsbHkgY29t
cGF0aWJsZSB3aXRoIGEgY2xhc3MKKyAgICAgICAgd2l0aCBpbmxpbmUgZnVuY3Rpb25zICh3YXJu
aW5nIGlzIGRvbmUgYnkgY2hlY2std2Via2l0LXN0eWxlKS4KKyAgICAgICAgUHV0IFdFQkNPUkVf
RVhQT1JUIG9uIGluZGl2aWR1YWwgZnVuY3Rpb25zIGluc3RlYWQuCisKIDIwMjItMDEtMjMgIEFs
YW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lGQ10gSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVHZW9tZXRyeUZvckxpbmVDb250ZW50IHNob3VsZCBh
bHdheXMgcmV0dXJuIHRoZSBsaW5lIGxvZ2ljYWwgcmVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGQ0Zjg4NDU2NmE1MjY3NGUw
ZmZlNDYxMmFjOGU0NjFiZWZkZWIxYTguLjljYTk0MzJmZTk5ZjE2NDZmZDY0MDdjZDRlZWVkODE0
YTBmZDI3OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTEyNTY4LDYgKzEyNTY4LDcgQEAKIAkJOTMyQ0MwRDExREZGRDY2NzAw
NEMwRjlGIC8qIEpTTWVkaWFUcmFja0NvbnN0cmFpbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTTWVkaWFUcmFja0NvbnN0cmFpbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkzMkNDMEYwMURGRkQ4RDQwMDRDMEY5RiAvKiBNZWRpYVRyYWNrQ29uc3Ry
YWludHMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1lZGlhVHJhY2tDb25zdHJhaW50cy5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMkNDMEY2MURGRkRBMUYwMDRDMEY5
RiAvKiBNZWRpYVRyYWNrQ29uc3RyYWludHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gTWVkaWFUcmFja0NvbnN0cmFpbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJOTMyRDI2RjQyNzlCODUyNjAwNERDRDhEIC8qIEZvdXJDQy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBGb3VyQ0MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
MzJFMTYwODBBRjU3ODM0MDAyNUY0MDggLyogRnJhbWVMb2FkZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRnJhbWVMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5MzJGMUQzOTI3MEQyNjlGMDAwQzI4MTMgLyogSlNET01Bc3luY0l0ZXJh
dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NQXN5bmNJdGVyYXRv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzJGMUQ0MzI3MEVCRjM4MDAwQzI4
MTMgLyogSlNGaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0yODg0Myw2ICsyODg0NCw3IEBACiAJCQkJNEE2RTlGQzYxM0Mx
N0Q1NzAwNDZBN0Y4IC8qIEZvbnRUYWdnZWRTZXR0aW5ncy5oICovLAogCQkJCTdDRTZDQkZDMTg3
RjM5NDkwMEQ0NkJGNSAvKiBGb3JtYXRDb252ZXJ0ZXIuY3BwICovLAogCQkJCTdDRTZDQkZBMTg3
RjM3MDcwMEQ0NkJGNSAvKiBGb3JtYXRDb252ZXJ0ZXIuaCAqLywKKwkJCQk5MzJEMjZGNDI3OUI4
NTI2MDA0RENEOEQgLyogRm91ckNDLmNwcCAqLywKIAkJCQlDRDUyNUJBMjFFRTBCMTA3MDA3ODhE
RjUgLyogRm91ckNDLmggKi8sCiAJCQkJNEZCMzkwQUMxNUVGNjFGMzAwN0FENTFGIC8qIEdlbmVy
YXRlZEltYWdlLmNwcCAqLywKIAkJCQlCQzIzRjBEQTBEQUZGNEE0MDA5RkRDOTEgLyogR2VuZXJh
dGVkSW1hZ2UuaCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvdXJDQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb3VyQ0Mu
Y3BwCmluZGV4IGQ5YTg5NjJiMGJiMGU5YTdiODZjODU3MzMwOGI4NWQ5NzJiNWQxYWMuLjgyZTJl
N2I5NDc0YWJjMWMzYTBlN2ViYjE0N2QwNzdhZjlhMzRmODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvdXJDQy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm91ckNDLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsMjggKzI4LDI4IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotc3RkOjpvcHRpb25hbDxGb3VyQ0M+IEZvdXJDQzo6ZnJvbVN0cmluZyhjb25zdCBT
dHJpbmcmIHN0cmluZ1ZhbHVlKQorc3RkOjpvcHRpb25hbDxGb3VyQ0M+IEZvdXJDQzo6ZnJvbVN0
cmluZyhTdHJpbmdWaWV3IHN0cmluZykKIHsKLSAgICBhdXRvIGFzY2lpVmFsdWUgPSBzdHJpbmdW
YWx1ZS5hc2NpaSgpOwotICAgIGlmIChhc2NpaVZhbHVlLmxlbmd0aCgpICE9IDQpCisgICAgaWYg
KHN0cmluZy5sZW5ndGgoKSAhPSA0IHx8ICFzdHJpbmcuaXNBbGxBU0NJSSgpKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgY29uc3QgY2hhciogZGF0YSA9IGFzY2lpVmFsdWUu
ZGF0YSgpOwotICAgIEFTU0VSVChhc2NpaVZhbHVlLmRhdGEoKSk7Ci0gICAgdWludDMyX3QgdmFs
dWUgPSBkYXRhWzBdIDw8IDI0IHwgZGF0YVsxXSA8PCAxNiB8IGRhdGFbMl0gPDwgOCB8IGRhdGFb
M107Ci0gICAgcmV0dXJuIEZvdXJDQyh2YWx1ZSk7CisgICAgcmV0dXJuIHsgeyB7CisgICAgICAg
IHN0YXRpY19jYXN0PGNoYXI+KHN0cmluZ1swXSksCisgICAgICAgIHN0YXRpY19jYXN0PGNoYXI+
KHN0cmluZ1sxXSksCisgICAgICAgIHN0YXRpY19jYXN0PGNoYXI+KHN0cmluZ1syXSksCisgICAg
ICAgIHN0YXRpY19jYXN0PGNoYXI+KHN0cmluZ1szXSksCisgICAgICAgICdcMCcKKyAgICB9IH0g
fTsKIH0KIAotU3RyaW5nIEZvdXJDQzo6dG9TdHJpbmcoKSBjb25zdAorc3RkOjphcnJheTxjaGFy
LCA1PiBGb3VyQ0M6OnN0cmluZygpIGNvbnN0CiB7Ci0gICAgVmVjdG9yPExDaGFyLCA0PiBkYXRh
ID0gewotICAgICAgICBMQ2hhcih2YWx1ZSA+PiAyNCksCi0gICAgICAgIExDaGFyKCh2YWx1ZSA+
PiAxNikgJiAweEZGKSwKLSAgICAgICAgTENoYXIoKHZhbHVlID4+IDgpICYgMHhGRiksCi0gICAg
ICAgIExDaGFyKHZhbHVlICYgMHhGRiksCisgICAgcmV0dXJuIHsKKyAgICAgICAgc3RhdGljX2Nh
c3Q8Y2hhcj4odmFsdWUgPj4gMjQpLAorICAgICAgICBzdGF0aWNfY2FzdDxjaGFyPih2YWx1ZSA+
PiAxNiksCisgICAgICAgIHN0YXRpY19jYXN0PGNoYXI+KHZhbHVlID4+IDgpLAorICAgICAgICBz
dGF0aWNfY2FzdDxjaGFyPih2YWx1ZSksCisgICAgICAgICdcMCcKICAgICB9OwotCi0gICAgcmV0
dXJuIFN0cmluZzo6YWRvcHQoV1RGTW92ZShkYXRhKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvdXJDQy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm91ckNDLmgKaW5kZXggMmE2NGM0YmMxNTQ2M2NlYzE0YjNjMmYz
OWYyNTRmZGQwNTNiZjFmMi4uMDRmYzdkYTkyNDFkMjM5MjIwNTc1NGFiYTRhMzdjZDI0YWNkZDQ4
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm91ckNDLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm91ckNDLmgKQEAgLTMwLDI0
ICszMCwyNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgRm91ckNDIHsKLSAgICBG
b3VyQ0MoKSA9IGRlZmF1bHQ7Ci0gICAgRm91ckNDKHVpbnQzMl90IHZhbHVlKSA6IHZhbHVlKHZh
bHVlKSB7IH0KKyAgICBjb25zdGV4cHIgRm91ckNDKCkgPSBkZWZhdWx0OworICAgIGNvbnN0ZXhw
ciBGb3VyQ0ModWludDMyX3QgdmFsdWUpIDogdmFsdWUgeyB2YWx1ZSB9IHsgfQorICAgIGNvbnN0
ZXhwciBGb3VyQ0MoY29uc3QgY2hhciAoJm51bGxUZXJtaW5hdGVkU3RyaW5nKVs1XSk7CisgICAg
c3RkOjphcnJheTxjaGFyLCA1PiBzdHJpbmcoKSBjb25zdDsKKyAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxGb3VyQ0M+IGZyb21TdHJpbmcoU3RyaW5nVmlldyk7CiAKLSAgICB0ZW1wbGF0ZTxzdGQ6
OnNpemVfdCBOPgotICAgIGNvbnN0ZXhwciBGb3VyQ0MoY29uc3QgY2hhciAoJmRhdGEpW05dKQot
ICAgIHsKLSAgICAgICAgc3RhdGljX2Fzc2VydCgoTiAtIDEpID09IDQsICJGb3VyQ0MgbGl0ZXJh
bHMgbXVzdCBiZSBleGFjdGx5IDQgY2hhcmFjdGVycyBsb25nIik7Ci0gICAgICAgIHZhbHVlID0g
ZGF0YVswXSA8PCAyNCB8IGRhdGFbMV0gPDwgMTYgfCBkYXRhWzJdIDw8IDggfCBkYXRhWzNdOwot
ICAgIH0KKyAgICB1aW50MzJfdCB2YWx1ZSB7IDAgfTsKK307CiAKLSAgICBTdHJpbmcgdG9TdHJp
bmcoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjpvcHRpb25hbDxGb3Vy
Q0M+IGZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7Citib29sIG9wZXJhdG9yPT0oRm91ckNDLCBG
b3VyQ0MpOworYm9vbCBvcGVyYXRvciE9KEZvdXJDQywgRm91ckNDKTsKIAotICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBGb3VyQ0MmIG90aGVyKSBjb25zdCB7IHJldHVybiB2YWx1ZSA9PSBvdGhl
ci52YWx1ZTsgfQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBGb3VyQ0MmIG90aGVyKSBjb25z
dCB7IHJldHVybiB2YWx1ZSAhPSBvdGhlci52YWx1ZTsgfQorY29uc3RleHByIEZvdXJDQzo6Rm91
ckNDKGNvbnN0IGNoYXIgKCZkYXRhKVs1XSkKK3sKKyAgICBBU1NFUlRfVU5ERVJfQ09OU1RFWFBS
X0NPTlRFWFQoZGF0YVs0XSA9PSAnXDAnKTsKKyAgICB2YWx1ZSA9IGRhdGFbMF0gPDwgMjQgfCBk
YXRhWzFdIDw8IDE2IHwgZGF0YVsyXSA8PCA4IHwgZGF0YVszXTsKK30KIAotICAgIHVpbnQzMl90
IHZhbHVlIHsgMCB9OwotfTsKK2lubGluZSBib29sIG9wZXJhdG9yPT0oRm91ckNDIGEsIEZvdXJD
QyBiKSB7IHJldHVybiBhLnZhbHVlID09IGIudmFsdWU7IH0KK2lubGluZSBib29sIG9wZXJhdG9y
IT0oRm91ckNDIGEsIEZvdXJDQyBiKSB7IHJldHVybiBhLnZhbHVlICE9IGIudmFsdWU7IH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkBAIC01Niw3ICs1OCw3IEBAIG5hbWVzcGFjZSBXVEYg
ewogdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBMb2dBcmd1bWVudDsKIAogdGVtcGxhdGU8PiBz
dHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29yZTo6Rm91ckNDPiB7Ci0gICAgc3RhdGljIFN0cmluZyB0
b1N0cmluZyhjb25zdCBXZWJDb3JlOjpGb3VyQ0MmIGNvZGUpIHsgcmV0dXJuIGNvZGUudG9TdHJp
bmcoKTsgfQorICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgV2ViQ29yZTo6Rm91ckND
JiBjb2RlKSB7IHJldHVybiBjb2RlLnN0cmluZygpLmRhdGEoKTsgfQogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9I
RVZDVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0hFVkNV
dGlsaXRpZXMuY3BwCmluZGV4IDMyOGVhNDI0YWU4MTI0MWZmYzAzY2Y1ODI1Mzg1MjZhZWJjM2Zm
NTMuLjBiNDE1MzdjZjE2ZDQ4MDVkMGNhNWM2NzQyMDczNTBkZDcyZDM3NmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0hFVkNVdGlsaXRpZXMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0hFVkNVdGlsaXRpZXMuY3BwCkBAIC0y
MzgsNyArMjM4LDcgQEAgU3RyaW5nIGNyZWF0ZUhFVkNDb2RlY1BhcmFtZXRlcnNTdHJpbmcoY29u
c3QgSEVWQ1BhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAgICAgICAgICwgY29tcGF0aWJpbGl0eUZs
YWdzLnRvU3RyaW5nKCkpOwogfQogCi1zdGQ6Om9wdGlvbmFsPEhFVkNQYXJhbWV0ZXJzPiBwYXJz
ZUhFVkNEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZChjb25zdCBGb3VyQ0MmIGNvZGVjQ29kZSwg
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPEhFVkNQYXJhbWV0ZXJz
PiBwYXJzZUhFVkNEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZChGb3VyQ0MgY29kZWNDb2RlLCBj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyBJU08vSUVDIDE0NDk2LTE1OjIw
MTQKICAgICAvLyA4LjMuMy4xIEhFVkMgZGVjb2RlciBjb25maWd1cmF0aW9uIHJlY29yZApAQCAt
MjQ4LDkgKzI0OCw5IEBAIHN0ZDo6b3B0aW9uYWw8SEVWQ1BhcmFtZXRlcnM+IHBhcnNlSEVWQ0Rl
Y29kZXJDb25maWd1cmF0aW9uUmVjb3JkKGNvbnN0IEZvdXJDQyYKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIEhFVkNQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7Ci0gICAgaWYgKGNv
ZGVjQ29kZSA9PSBGb3VyQ0MoImhldjEiKSkKKyAgICBpZiAoY29kZWNDb2RlID09ICJoZXYxIikK
ICAgICAgICAgcGFyYW1ldGVycy5jb2RlYyA9IEhFVkNQYXJhbWV0ZXJzOjpDb2RlYzo6SGV2MTsK
LSAgICBlbHNlIGlmIChjb2RlY0NvZGUgPT0gRm91ckNDKCJodmMxIikpCisgICAgZWxzZSBpZiAo
Y29kZWNDb2RlID09ICJodmMxIikKICAgICAgICAgcGFyYW1ldGVycy5jb2RlYyA9IEhFVkNQYXJh
bWV0ZXJzOjpDb2RlYzo6SHZjMTsKICAgICBlbHNlCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRp
bGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVz
LmgKaW5kZXggM2Y1MDEwMzQxNGZiNWVjYWQyYjgyYTdhZjkxZTRhM2NhMjQ1NjYzYy4uOGJmYjM5
MTc4ZjExYjE4MzZjNTAwZjJkZDFiNjNjYmRjNGQxOTY2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSEVWQ1V0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0hFVkNVdGlsaXRpZXMuaApAQCAtNTUsNyArNTUsNyBAQCBz
dHJ1Y3QgSEVWQ1BhcmFtZXRlcnMgewogfTsKIAogV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25h
bDxIRVZDUGFyYW1ldGVycz4gcGFyc2VIRVZDQ29kZWNQYXJhbWV0ZXJzKFN0cmluZ1ZpZXcpOwot
V0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxIRVZDUGFyYW1ldGVycz4gcGFyc2VIRVZDRGVj
b2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoY29uc3QgRm91ckNDJiwgY29uc3QgU2hhcmVkQnVmZmVy
Jik7CitXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPEhFVkNQYXJhbWV0ZXJzPiBwYXJzZUhF
VkNEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZChGb3VyQ0MsIGNvbnN0IFNoYXJlZEJ1ZmZlciYp
OwogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGNyZWF0ZUhFVkNDb2RlY1BhcmFtZXRlcnNTdHJpbmco
Y29uc3QgSEVWQ1BhcmFtZXRlcnMmKTsKIAogc3RydWN0IERvVmlQYXJhbWV0ZXJzIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JU09G
YWlyUGxheVN0cmVhbWluZ1Bzc2hCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL0lTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveC5jcHAKaW5kZXgg
NGY4NDk2YWUzY2FlNDdmMDJiZGMyNjQ5YzFiMjM3ZWI0NGVjNmQ4NC4uZjJhNDFiMjk4MmRmMzFk
YWExODRlMDhlNDEyMTllZmQzMWE0ZjgwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0lTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0lT
T0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveC5jcHAKQEAgLTI0OCw0ICsyNDgsMTkgQEAgYm9vbCBJ
U09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3g6OnBhcnNlKEpTQzo6RGF0YVZpZXcmIHZpZXcsIHVu
c2lnbmVkJiBvZmZzZXQpCiAgICAgcmV0dXJuIG1faW5pdERhdGFCb3gucmVhZCh2aWV3LCBvZmZz
ZXQpOwogfQogCitJU09GYWlyUGxheVN0cmVhbWluZ0luZm9Cb3g6OklTT0ZhaXJQbGF5U3RyZWFt
aW5nSW5mb0JveCgpID0gZGVmYXVsdDsKK0lTT0ZhaXJQbGF5U3RyZWFtaW5nSW5mb0JveDo6SVNP
RmFpclBsYXlTdHJlYW1pbmdJbmZvQm94KGNvbnN0IElTT0ZhaXJQbGF5U3RyZWFtaW5nSW5mb0Jv
eCYpID0gZGVmYXVsdDsKK0lTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5QXNzZXRJZEJveDo6SVNPRmFp
clBsYXlTdHJlYW1pbmdLZXlBc3NldElkQm94KGNvbnN0IElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5
QXNzZXRJZEJveCYpID0gZGVmYXVsdDsKK0lTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5QXNzZXRJZEJv
eDo6fklTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5QXNzZXRJZEJveCgpID0gZGVmYXVsdDsKK0lTT0Zh
aXJQbGF5U3RyZWFtaW5nS2V5Q29udGV4dEJveDo6SVNPRmFpclBsYXlTdHJlYW1pbmdLZXlDb250
ZXh0Qm94KGNvbnN0IElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5Q29udGV4dEJveCYpID0gZGVmYXVs
dDsKK0lTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5Q29udGV4dEJveDo6fklTT0ZhaXJQbGF5U3RyZWFt
aW5nS2V5Q29udGV4dEJveCgpID0gZGVmYXVsdDsKK0lTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5VmVy
c2lvbkxpc3RCb3g6OklTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5VmVyc2lvbkxpc3RCb3goY29uc3Qg
SVNPRmFpclBsYXlTdHJlYW1pbmdLZXlWZXJzaW9uTGlzdEJveCYpID0gZGVmYXVsdDsKK0lTT0Zh
aXJQbGF5U3RyZWFtaW5nS2V5VmVyc2lvbkxpc3RCb3g6On5JU09GYWlyUGxheVN0cmVhbWluZ0tl
eVZlcnNpb25MaXN0Qm94KCkgPSBkZWZhdWx0OworSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlSZXF1
ZXN0Qm94OjpJU09GYWlyUGxheVN0cmVhbWluZ0tleVJlcXVlc3RCb3goY29uc3QgSVNPRmFpclBs
YXlTdHJlYW1pbmdLZXlSZXF1ZXN0Qm94JikgPSBkZWZhdWx0OworSVNPRmFpclBsYXlTdHJlYW1p
bmdLZXlSZXF1ZXN0Qm94Ojp+SVNPRmFpclBsYXlTdHJlYW1pbmdLZXlSZXF1ZXN0Qm94KCkgPSBk
ZWZhdWx0OworSVNPRmFpclBsYXlTdHJlYW1pbmdJbml0RGF0YUJveDo6SVNPRmFpclBsYXlTdHJl
YW1pbmdJbml0RGF0YUJveCgpID0gZGVmYXVsdDsKK0lTT0ZhaXJQbGF5U3RyZWFtaW5nSW5pdERh
dGFCb3g6On5JU09GYWlyUGxheVN0cmVhbWluZ0luaXREYXRhQm94KCkgPSBkZWZhdWx0OworSVNP
RmFpclBsYXlTdHJlYW1pbmdQc3NoQm94OjpJU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3goKSA9
IGRlZmF1bHQ7CitJU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3g6On5JU09GYWlyUGxheVN0cmVh
bWluZ1Bzc2hCb3goKSA9IGRlZmF1bHQ7CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hC
b3guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JU09G
YWlyUGxheVN0cmVhbWluZ1Bzc2hCb3guaAppbmRleCA3OTRhMTUyOGQwZGVlMzU5OWM1YWYzY2U0
NGFkZjliNmI4MDIwYWRlLi5kZTA4ZGQ4NWE1MWM2ZmM2NGU1NmE1M2IwNGViNzk0N2U4Y2RjMDAx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vSVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0lTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveC5o
CkBAIC0yOSwxOSArMjksMjMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBXRUJD
T1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0luZm9Cb3ggZmluYWwgOiBwdWJsaWMgSVNP
RnVsbEJveCB7CitjbGFzcyBJU09GYWlyUGxheVN0cmVhbWluZ0luZm9Cb3ggZmluYWwgOiBwdWJs
aWMgSVNPRnVsbEJveCB7CiBwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlT
dHJlYW1pbmdJbmZvQm94KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1p
bmdJbmZvQm94KGNvbnN0IElTT0ZhaXJQbGF5U3RyZWFtaW5nSW5mb0JveCYpOworICAgIElTT0Zh
aXJQbGF5U3RyZWFtaW5nSW5mb0JveChJU09GYWlyUGxheVN0cmVhbWluZ0luZm9Cb3gmJik7CisK
ICAgICBzdGF0aWMgRm91ckNDIGJveFR5cGVOYW1lKCkgeyByZXR1cm4gImZwc2kiOyB9CiAKICAg
ICBGb3VyQ0Mgc2NoZW1lKCkgY29uc3QgeyByZXR1cm4gbV9zY2hlbWU7IH0KIAogcHJpdmF0ZToK
LSAgICBib29sIHBhcnNlKEpTQzo6RGF0YVZpZXcmLCB1bnNpZ25lZCYgb2Zmc2V0KSBvdmVycmlk
ZTsKKyAgICBib29sIHBhcnNlKEpTQzo6RGF0YVZpZXcmLCB1bnNpZ25lZCYgb2Zmc2V0KSBmaW5h
bDsKIAogICAgIEZvdXJDQyBtX3NjaGVtZTsKIH07CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIElT
T0ZhaXJQbGF5U3RyZWFtaW5nS2V5UmVxdWVzdEluZm9Cb3ggZmluYWwgOiBwdWJsaWMgSVNPRnVs
bEJveCB7CitjbGFzcyBJU09GYWlyUGxheVN0cmVhbWluZ0tleVJlcXVlc3RJbmZvQm94IGZpbmFs
IDogcHVibGljIElTT0Z1bGxCb3ggewogcHVibGljOgogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlw
ZU5hbWUoKSB7IHJldHVybiAiZmtyaSI7IH0KIApAQCAtNDksNDYgKzUzLDc1IEBAIHB1YmxpYzoK
ICAgICBjb25zdCBLZXlJRCYga2V5SUQoKSBjb25zdCB7IHJldHVybiBtX2tleUlEOyB9CiAKIHBy
aXZhdGU6Ci0gICAgYm9vbCBwYXJzZShKU0M6OkRhdGFWaWV3JiwgdW5zaWduZWQmIG9mZnNldCkg
b3ZlcnJpZGU7CisgICAgYm9vbCBwYXJzZShKU0M6OkRhdGFWaWV3JiwgdW5zaWduZWQmIG9mZnNl
dCkgZmluYWw7CiAKICAgICBLZXlJRCBtX2tleUlEOwogfTsKIAotY2xhc3MgV0VCQ09SRV9FWFBP
UlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlBc3NldElkQm94IGZpbmFsIDogcHVibGljIElTT0Jv
eCB7CitjbGFzcyBJU09GYWlyUGxheVN0cmVhbWluZ0tleUFzc2V0SWRCb3ggZmluYWwgOiBwdWJs
aWMgSVNPQm94IHsKIHB1YmxpYzoKKyAgICBJU09GYWlyUGxheVN0cmVhbWluZ0tleUFzc2V0SWRC
b3goKSA9IGRlZmF1bHQ7CisgICAgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdL
ZXlBc3NldElkQm94KGNvbnN0IElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5QXNzZXRJZEJveCYpOwor
ICAgIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5QXNzZXRJZEJveChJU09GYWlyUGxheVN0cmVhbWlu
Z0tleUFzc2V0SWRCb3gmJikgPSBkZWZhdWx0OworICAgIFdFQkNPUkVfRVhQT1JUIH5JU09GYWly
UGxheVN0cmVhbWluZ0tleUFzc2V0SWRCb3goKTsKKworICAgIElTT0ZhaXJQbGF5U3RyZWFtaW5n
S2V5QXNzZXRJZEJveCYgb3BlcmF0b3I9KGNvbnN0IElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5QXNz
ZXRJZEJveCYpID0gZGVmYXVsdDsKKyAgICBJU09GYWlyUGxheVN0cmVhbWluZ0tleUFzc2V0SWRC
b3gmIG9wZXJhdG9yPShJU09GYWlyUGxheVN0cmVhbWluZ0tleUFzc2V0SWRCb3gmJikgPSBkZWZh
dWx0OworCiAgICAgc3RhdGljIEZvdXJDQyBib3hUeXBlTmFtZSgpIHsgcmV0dXJuICJma2FpIjsg
fQogICAgIGNvbnN0IFZlY3Rvcjx1aW50OF90PiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
OyB9CiAKIHByaXZhdGU6Ci0gICAgYm9vbCBwYXJzZShKU0M6OkRhdGFWaWV3JiwgdW5zaWduZWQm
IG9mZnNldCkgb3ZlcnJpZGU7CisgICAgYm9vbCBwYXJzZShKU0M6OkRhdGFWaWV3JiwgdW5zaWdu
ZWQmIG9mZnNldCkgZmluYWw7CiAKICAgICBWZWN0b3I8dWludDhfdD4gbV9kYXRhOwogfTsKIAot
Y2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlDb250ZXh0Qm94IGZp
bmFsIDogcHVibGljIElTT0JveCB7CitjbGFzcyBJU09GYWlyUGxheVN0cmVhbWluZ0tleUNvbnRl
eHRCb3ggZmluYWwgOiBwdWJsaWMgSVNPQm94IHsKIHB1YmxpYzoKKyAgICBJU09GYWlyUGxheVN0
cmVhbWluZ0tleUNvbnRleHRCb3goKSA9IGRlZmF1bHQ7CisgICAgV0VCQ09SRV9FWFBPUlQgSVNP
RmFpclBsYXlTdHJlYW1pbmdLZXlDb250ZXh0Qm94KGNvbnN0IElTT0ZhaXJQbGF5U3RyZWFtaW5n
S2V5Q29udGV4dEJveCYpOworICAgIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5Q29udGV4dEJveChJ
U09GYWlyUGxheVN0cmVhbWluZ0tleUNvbnRleHRCb3gmJikgPSBkZWZhdWx0OworICAgIFdFQkNP
UkVfRVhQT1JUIH5JU09GYWlyUGxheVN0cmVhbWluZ0tleUNvbnRleHRCb3goKTsKKworICAgIElT
T0ZhaXJQbGF5U3RyZWFtaW5nS2V5Q29udGV4dEJveCYgb3BlcmF0b3I9KGNvbnN0IElTT0ZhaXJQ
bGF5U3RyZWFtaW5nS2V5Q29udGV4dEJveCYpID0gZGVmYXVsdDsKKyAgICBJU09GYWlyUGxheVN0
cmVhbWluZ0tleUNvbnRleHRCb3gmIG9wZXJhdG9yPShJU09GYWlyUGxheVN0cmVhbWluZ0tleUNv
bnRleHRCb3gmJikgPSBkZWZhdWx0OworCiAgICAgc3RhdGljIEZvdXJDQyBib3hUeXBlTmFtZSgp
IHsgcmV0dXJuICJma2N4IjsgfQogICAgIGNvbnN0IFZlY3Rvcjx1aW50OF90PiBkYXRhKCkgY29u
c3QgeyByZXR1cm4gbV9kYXRhOyB9CiAKIHByaXZhdGU6Ci0gICAgYm9vbCBwYXJzZShKU0M6OkRh
dGFWaWV3JiwgdW5zaWduZWQmIG9mZnNldCkgb3ZlcnJpZGU7CisgICAgYm9vbCBwYXJzZShKU0M6
OkRhdGFWaWV3JiwgdW5zaWduZWQmIG9mZnNldCkgZmluYWw7CiAKICAgICBWZWN0b3I8dWludDhf
dD4gbV9kYXRhOwogfTsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1p
bmdLZXlWZXJzaW9uTGlzdEJveCBmaW5hbCA6IHB1YmxpYyBJU09Cb3ggeworY2xhc3MgSVNPRmFp
clBsYXlTdHJlYW1pbmdLZXlWZXJzaW9uTGlzdEJveCBmaW5hbCA6IHB1YmxpYyBJU09Cb3ggewog
cHVibGljOgorICAgIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5VmVyc2lvbkxpc3RCb3goKSA9IGRl
ZmF1bHQ7CisgICAgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlWZXJzaW9u
TGlzdEJveChjb25zdCBJU09GYWlyUGxheVN0cmVhbWluZ0tleVZlcnNpb25MaXN0Qm94Jik7Cisg
ICAgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlWZXJzaW9uTGlzdEJveChJU09GYWlyUGxheVN0cmVh
bWluZ0tleVZlcnNpb25MaXN0Qm94JiYpID0gZGVmYXVsdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB+
SVNPRmFpclBsYXlTdHJlYW1pbmdLZXlWZXJzaW9uTGlzdEJveCgpOworCisgICAgSVNPRmFpclBs
YXlTdHJlYW1pbmdLZXlWZXJzaW9uTGlzdEJveCYgb3BlcmF0b3I9KGNvbnN0IElTT0ZhaXJQbGF5
U3RyZWFtaW5nS2V5VmVyc2lvbkxpc3RCb3gmKSA9IGRlZmF1bHQ7CisgICAgSVNPRmFpclBsYXlT
dHJlYW1pbmdLZXlWZXJzaW9uTGlzdEJveCYgb3BlcmF0b3I9KElTT0ZhaXJQbGF5U3RyZWFtaW5n
S2V5VmVyc2lvbkxpc3RCb3gmJikgPSBkZWZhdWx0OworCiAgICAgc3RhdGljIEZvdXJDQyBib3hU
eXBlTmFtZSgpIHsgcmV0dXJuICJma3ZsIjsgfQogICAgIGNvbnN0IFZlY3Rvcjx1aW50OF90PiB2
ZXJzaW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fdmVyc2lvbnM7IH0KIAogcHJpdmF0ZToKLSAgICBi
b29sIHBhcnNlKEpTQzo6RGF0YVZpZXcmLCB1bnNpZ25lZCYgb2Zmc2V0KSBvdmVycmlkZTsKKyAg
ICBib29sIHBhcnNlKEpTQzo6RGF0YVZpZXcmLCB1bnNpZ25lZCYgb2Zmc2V0KSBmaW5hbDsKIAog
ICAgIFZlY3Rvcjx1aW50OF90PiBtX3ZlcnNpb25zOwogfTsKIAotY2xhc3MgV0VCQ09SRV9FWFBP
UlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlSZXF1ZXN0Qm94IGZpbmFsIDogcHVibGljIElTT0Jv
eCB7CitjbGFzcyBJU09GYWlyUGxheVN0cmVhbWluZ0tleVJlcXVlc3RCb3ggZmluYWwgOiBwdWJs
aWMgSVNPQm94IHsKIHB1YmxpYzoKKyAgICBJU09GYWlyUGxheVN0cmVhbWluZ0tleVJlcXVlc3RC
b3goKSA9IGRlZmF1bHQ7CisgICAgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdL
ZXlSZXF1ZXN0Qm94KGNvbnN0IElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5UmVxdWVzdEJveCYpOwor
ICAgIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5UmVxdWVzdEJveChJU09GYWlyUGxheVN0cmVhbWlu
Z0tleVJlcXVlc3RCb3gmJikgPSBkZWZhdWx0OworICAgIFdFQkNPUkVfRVhQT1JUIH5JU09GYWly
UGxheVN0cmVhbWluZ0tleVJlcXVlc3RCb3goKTsKKwogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlw
ZU5hbWUoKSB7IHJldHVybiAiZnBzayI7IH0KIAogICAgIGNvbnN0IElTT0ZhaXJQbGF5U3RyZWFt
aW5nS2V5UmVxdWVzdEluZm9Cb3gmIHJlcXVlc3RJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1
ZXN0SW5mbzsgfQpAQCAtOTcsNyArMTMwLDcgQEAgcHVibGljOgogICAgIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8SVNPRmFpclBsYXlTdHJlYW1pbmdLZXlWZXJzaW9uTGlzdEJveD4mIHZlcnNpb25MaXN0
KCkgY29uc3QgeyByZXR1cm4gbV92ZXJzaW9uTGlzdDsgfQogCiBwcml2YXRlOgotICAgIGJvb2wg
cGFyc2UoSlNDOjpEYXRhVmlldyYsIHVuc2lnbmVkJiBvZmZzZXQpIG92ZXJyaWRlOworICAgIGJv
b2wgcGFyc2UoSlNDOjpEYXRhVmlldyYsIHVuc2lnbmVkJiBvZmZzZXQpIGZpbmFsOwogCiAgICAg
SVNPRmFpclBsYXlTdHJlYW1pbmdLZXlSZXF1ZXN0SW5mb0JveCBtX3JlcXVlc3RJbmZvOwogICAg
IHN0ZDo6b3B0aW9uYWw8SVNPRmFpclBsYXlTdHJlYW1pbmdLZXlBc3NldElkQm94PiBtX2Fzc2V0
SUQ7CkBAIC0xMDUsMjggKzEzOCwzNCBAQCBwcml2YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8SVNP
RmFpclBsYXlTdHJlYW1pbmdLZXlWZXJzaW9uTGlzdEJveD4gbV92ZXJzaW9uTGlzdDsKIH07CiAK
LWNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nSW5pdERhdGFCb3ggZmlu
YWwgOiBwdWJsaWMgSVNPQm94IHsKK2NsYXNzIElTT0ZhaXJQbGF5U3RyZWFtaW5nSW5pdERhdGFC
b3ggZmluYWwgOiBwdWJsaWMgSVNPQm94IHsKIHB1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBJ
U09GYWlyUGxheVN0cmVhbWluZ0luaXREYXRhQm94KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgfklT
T0ZhaXJQbGF5U3RyZWFtaW5nSW5pdERhdGFCb3goKTsKKwogICAgIHN0YXRpYyBGb3VyQ0MgYm94
VHlwZU5hbWUoKSB7IHJldHVybiAiZnBzZCI7IH0KIAogICAgIGNvbnN0IElTT0ZhaXJQbGF5U3Ry
ZWFtaW5nSW5mb0JveCYgaW5mbygpIGNvbnN0IHsgcmV0dXJuIG1faW5mbzsgfQogICAgIGNvbnN0
IFZlY3RvcjxJU09GYWlyUGxheVN0cmVhbWluZ0tleVJlcXVlc3RCb3g+JiByZXF1ZXN0cygpIGNv
bnN0IHsgcmV0dXJuIG1fcmVxdWVzdHM7IH0KIAogcHJpdmF0ZToKLSAgICBib29sIHBhcnNlKEpT
Qzo6RGF0YVZpZXcmLCB1bnNpZ25lZCYgb2Zmc2V0KSBvdmVycmlkZTsKKyAgICBib29sIHBhcnNl
KEpTQzo6RGF0YVZpZXcmLCB1bnNpZ25lZCYgb2Zmc2V0KSBmaW5hbDsKIAogICAgIElTT0ZhaXJQ
bGF5U3RyZWFtaW5nSW5mb0JveCBtX2luZm87CiAgICAgVmVjdG9yPElTT0ZhaXJQbGF5U3RyZWFt
aW5nS2V5UmVxdWVzdEJveD4gbV9yZXF1ZXN0czsKIH07CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JU
IElTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveCBmaW5hbCA6IHB1YmxpYyBJU09Qcm90ZWN0aW9u
U3lzdGVtU3BlY2lmaWNIZWFkZXJCb3ggeworY2xhc3MgSVNPRmFpclBsYXlTdHJlYW1pbmdQc3No
Qm94IGZpbmFsIDogcHVibGljIElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveCB7
CiBwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94
KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgfklTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveCgpOwor
CiAgICAgc3RhdGljIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZmFpclBsYXlTeXN0ZW1JRCgpOwog
CiAgICAgY29uc3QgSVNPRmFpclBsYXlTdHJlYW1pbmdJbml0RGF0YUJveCYgaW5pdERhdGFCb3go
KSB7IHJldHVybiBtX2luaXREYXRhQm94OyB9CiAKIHByaXZhdGU6Ci0gICAgYm9vbCBwYXJzZShK
U0M6OkRhdGFWaWV3JiwgdW5zaWduZWQmIG9mZnNldCkgb3ZlcnJpZGU7CisgICAgYm9vbCBwYXJz
ZShKU0M6OkRhdGFWaWV3JiwgdW5zaWduZWQmIG9mZnNldCkgZmluYWw7CiAKICAgICBJU09GYWly
UGxheVN0cmVhbWluZ0luaXREYXRhQm94IG1faW5pdERhdGFCb3g7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRU
cmFja1ByaXZhdGVBVkYuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwCmluZGV4IDg0ZTA4NmExODRi
YWNlNGZkMjkxZWYzYTU5MDMyNzI2MDM4NzA5MDcuLjczM2Q1NmEwODNkMzBiM2Y0NTg0NzQ5NWY3
Yzg5YjMxOTg0Njk0OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUFWRi5jcHAKQEAgLTUwMiwxMSArNTAyLDExIEBAIHZvaWQgSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUFWRjo6cHJvY2Vzc05hdGl2ZVNhbXBsZXMoQ0ZBcnJheVJlZiBuYXRpdmVTYW1wbGVz
LCBjCiAgICAgICAgIGF1dG8gdHlwZSA9IHBlZWtSZXN1bHQudmFsdWUoKS5maXJzdDsKICAgICAg
ICAgYXV0byBib3hMZW5ndGggPSBwZWVrUmVzdWx0LnZhbHVlKCkuc2Vjb25kOwogICAgICAgICBp
ZiAoYm94TGVuZ3RoID4gdmlldy0+Ynl0ZUxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBFUlJPUl9M
T0coTE9HSURFTlRJRklFUiwgImNodW5rICB0eXBlID0gJyIsIHR5cGUudG9TdHJpbmcoKSwgIics
IHNpemUgPSAiLCAoc2l6ZV90KWJveExlbmd0aCwgIiBsYXJnZXIgdGhhbiBidWZmZXIgbGVuZ3Ro
ISIpOworICAgICAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICJjaHVuayAgdHlwZSA9
ICciLCB0eXBlLCAiJywgc2l6ZSA9ICIsIGJveExlbmd0aCwgIiBsYXJnZXIgdGhhbiBidWZmZXIg
bGVuZ3RoISIpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAotICAgICAgICBJ
TkZPX0xPRyhMT0dJREVOVElGSUVSLCAiY2h1bmsgIHR5cGUgPSAnIiwgdHlwZS50b1N0cmluZygp
LCAiJywgc2l6ZSA9ICIsIChzaXplX3QpYm94TGVuZ3RoKTsKKyAgICAgICAgSU5GT19MT0coTE9H
SURFTlRJRklFUiwgImNodW5rICB0eXBlID0gJyIsIHR5cGUsICInLCBzaXplID0gIiwgYm94TGVu
Z3RoKTsKIAogICAgICAgICBkbyB7CiAgICAgICAgICAgICBpZiAobV9oYXZlUmVwb3J0ZWRWVFRI
ZWFkZXIgfHwgIWZvcm1hdERlc2NyaXB0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQVZBc3NldFRyYWNrVXRpbGl0aWVz
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
QVZBc3NldFRyYWNrVXRpbGl0aWVzLm1tCmluZGV4IDNmNmU0MzIwMTIzNDkzMzY0ZWJhOGQ2MWFh
NjgzYTU2MmUzMzE1ZjkuLjBkYWZjOGJmZDQxYmQwNGI5NzhjNDk4NDFmYWVhMDA4ZjgyYjQ0YzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0FWQXNzZXRUcmFja1V0aWxpdGllcy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVkFzc2V0VHJhY2tVdGlsaXRpZXMubW0K
QEAgLTQ5LDcgKzQ5LDcgQEAgc3RhdGljIFZlY3RvcjxGb3VyQ0M+IGNvbnRlbnRUeXBlc1RvQ29k
ZWNzKGNvbnN0IFZlY3RvcjxDb250ZW50VHlwZT4mIGNvbnRlbnRUeXAKICAgICAgICAgICAgIGlm
IChmaXJzdFBlcmlvZCAhPSBub3RGb3VuZCkKICAgICAgICAgICAgICAgICBjb2RlY1N0cmluZy50
cnVuY2F0ZShmaXJzdFBlcmlvZCk7CiAKLSAgICAgICAgICAgIGF1dG8gY29kZWNJZGVudGlmaWVy
ID0gRm91ckNDOjpmcm9tU3RyaW5nKGNvZGVjU3RyaW5nLmxlZnQoNCkpOworICAgICAgICAgICAg
YXV0byBjb2RlY0lkZW50aWZpZXIgPSBGb3VyQ0M6OmZyb21TdHJpbmcoU3RyaW5nVmlldyB7IGNv
ZGVjU3RyaW5nIH0ubGVmdCg0KSk7CiAgICAgICAgICAgICBpZiAoY29kZWNJZGVudGlmaWVyKQog
ICAgICAgICAgICAgICAgIGNvZGVjcy5hcHBlbmQoY29kZWNJZGVudGlmaWVyLnZhbHVlKCkpOwog
ICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9IRVZDVXRpbGl0aWVzQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9IRVZDVXRpbGl0aWVzQ29jb2EubW0KaW5kZXggNjQ4M2MyODczZmRiZjc2MDZl
MDM5OTRlZjg1YjlkMjlkOGVhZDU1MS4uYjlmYjhjYjM3NGVlMGVkNDJiZDI1NWNmMjJmNzE2NThj
NWVhYjAzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvSEVWQ1V0aWxpdGllc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0hFVkNVdGlsaXRpZXNDb2NvYS5tbQpAQCAtNDgsNyArNDgsNyBAQCBzdGQ6
Om9wdGlvbmFsPE1lZGlhQ2FwYWJpbGl0aWVzSW5mbz4gdmFsaWRhdGVIRVZDUGFyYW1ldGVycyhj
b25zdCBIRVZDUGFyYW1ldGVycwogICAgICAgICBpZiAoIVBBTDo6aXNBVkZvdW5kYXRpb25GcmFt
ZXdvcmtBdmFpbGFibGUoKSB8fCAhUEFMOjpjYW5Mb2FkX0FWRm91bmRhdGlvbl9BVlZpZGVvQ29k
ZWNUeXBlSEVWQ1dpdGhBbHBoYSgpKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAotICAgICAgICBhdXRvIGNvZGVjQ29kZSA9IEZvdXJDQzo6ZnJvbVN0cmluZyhBVlZpZGVvQ29k
ZWNUeXBlSEVWQ1dpdGhBbHBoYSk7CisgICAgICAgIGF1dG8gY29kZWNDb2RlID0gRm91ckNDOjpm
cm9tU3RyaW5nKFN0cmluZyB7IEFWVmlkZW9Db2RlY1R5cGVIRVZDV2l0aEFscGhhIH0pOwogICAg
ICAgICBpZiAoIWNvZGVjQ29kZSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0dyYXBoaWNz
Q29udGV4dEdMQ1ZDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
di9HcmFwaGljc0NvbnRleHRHTENWQ29jb2EuY3BwCmluZGV4IGQ0NTIwNDljYWQzNzMwYmY5OTMw
OWU3NmYyMjk3NTg3MDYxYTg5NjguLjVmMmZkODVjOGNlOGUzODI4YTA3Mzg4YjE4YjQ3ODMzODUx
MjU1ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0dy
YXBoaWNzQ29udGV4dEdMQ1ZDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkNvY29hLmNwcApAQCAtNTg1LDcgKzU4NSw3
IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xDVkNvY29hOjpjb3B5VmlkZW9TYW1wbGVUb1RleHR1
cmUoY29uc3QgTWVkaWFTYW1wbGVWaWRlb0ZyCiAgICAgICAgICYmIHBpeGVsRm9ybWF0ICE9IGtD
VlBpeGVsRm9ybWF0VHlwZV9BR1hfNDIwWXBDYkNyOEJpUGxhbmFyRnVsbFJhbmdlCiAjZW5kaWYK
ICAgICAgICAgKSB7Ci0gICAgICAgIExPRyhXZWJHTCwgIkdyYXBoaWNzQ29udGV4dEdMQ1ZDb2Nv
YTo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKCVwKSAtIEFza2VkIHRvIGNvcHkg
YW4gdW5zdXBwb3J0ZWQgcGl4ZWwgZm9ybWF0ICgnJXMnKS4iLCB0aGlzLCBGb3VyQ0MocGl4ZWxG
b3JtYXQpLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIExPRyhXZWJHTCwgIkdy
YXBoaWNzQ29udGV4dEdMQ1ZDb2NvYTo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJl
KCVwKSAtIEFza2VkIHRvIGNvcHkgYW4gdW5zdXBwb3J0ZWQgcGl4ZWwgZm9ybWF0ICgnJXMnKS4i
LCB0aGlzLCBGb3VyQ0MocGl4ZWxGb3JtYXQpLnN0cmluZygpLmRhdGEoKSk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAgICAgSU9TdXJmYWNlUmVmIHN1cmZhY2UgPSBDVlBpeGVsQnVm
ZmVyR2V0SU9TdXJmYWNlKGltYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2lzby9JU09Cb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvaXNvL0lTT0JveC5jcHAKaW5kZXggYzA2ZTNhNjMzODg2MGYxMWViMGViY2ZhNDM4ZDM1
MjAyNjZmNWQ0OC4uM2M2YjYxZDRmM2VjYWMwYjAxNTcyMWViNDk0OTEwOGQwNjNlNDgxMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT0JveC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT0JveC5jcHAKQEAg
LTMyLDEzICszMiwxNyBAQCB1c2luZyBKU0M6OkRhdGFWaWV3OwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK0lTT0JveDo6SVNPQm94KCkgPSBkZWZhdWx0OworSVNPQm94Ojp+SVNPQm94KCkgPSBk
ZWZhdWx0OworSVNPQm94OjpJU09Cb3goY29uc3QgSVNPQm94JikgPSBkZWZhdWx0OworCiBJU09C
b3g6OlBlZWtSZXN1bHQgSVNPQm94OjpwZWVrQm94KERhdGFWaWV3JiB2aWV3LCB1bnNpZ25lZCBv
ZmZzZXQpCiB7CiAgICAgdWludDY0X3Qgc2l6ZSA9IDA7CiAgICAgaWYgKCFjaGVja2VkUmVhZDx1
aW50MzJfdD4oc2l6ZSwgdmlldywgb2Zmc2V0LCBCaWdFbmRpYW4pKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCi0gICAgRm91ckNDIHR5cGUgPSB7IHVpbnQzMl90IHsgMCB9IH07Cisg
ICAgRm91ckNDIHR5cGU7CiAgICAgaWYgKCFjaGVja2VkUmVhZDx1aW50MzJfdD4odHlwZSwgdmll
dywgb2Zmc2V0LCBCaWdFbmRpYW4pKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBA
IC05Niw2ICsxMDAsOSBAQCBib29sIElTT0JveDo6cGFyc2UoRGF0YVZpZXcmIHZpZXcsIHVuc2ln
bmVkJiBvZmZzZXQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK0lTT0Z1bGxCb3g6OklTT0Z1bGxC
b3goKSA9IGRlZmF1bHQ7CitJU09GdWxsQm94OjpJU09GdWxsQm94KGNvbnN0IElTT0Z1bGxCb3gm
KSA9IGRlZmF1bHQ7CisKIGJvb2wgSVNPRnVsbEJveDo6cGFyc2UoRGF0YVZpZXcmIHZpZXcsIHVu
c2lnbmVkJiBvZmZzZXQpCiB7CiAgICAgaWYgKCFJU09Cb3g6OnBhcnNlKHZpZXcsIG9mZnNldCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94LmgKaW5kZXgg
ZDgzZTRhNDA0MGNjZWU5ZmZiNzM5ZGZjMjI3Y2Y3N2EwNjE4M2MyNi4uYjg5NWIyYWFmZmVkZjE4
ZTUxYjQ4YmI5NjUwZjU0M2ZkODI4ODg5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvaXNvL0lTT0JveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2lzby9JU09Cb3guaApAQCAtMzYsMzEgKzM2LDM0IEBAIGNsYXNzIERhdGFWaWV3
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0JveCB7
CitjbGFzcyBJU09Cb3ggewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgot
ICAgIHZpcnR1YWwgfklTT0JveCgpID0gZGVmYXVsdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBJU09C
b3goKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBJU09Cb3goY29uc3QgSVNPQm94Jik7CisgICAgSVNP
Qm94KElTT0JveCYmKSA9IGRlZmF1bHQ7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+SVNP
Qm94KCk7CisKKyAgICBJU09Cb3gmIG9wZXJhdG9yPShjb25zdCBJU09Cb3gmKSA9IGRlZmF1bHQ7
CisgICAgSVNPQm94JiBvcGVyYXRvcj0oSVNPQm94JiYpID0gZGVmYXVsdDsKIAogICAgIHVzaW5n
IFBlZWtSZXN1bHQgPSBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxGb3VyQ0MsIHVpbnQ2NF90Pj47
CiAgICAgc3RhdGljIFBlZWtSZXN1bHQgcGVla0JveChKU0M6OkRhdGFWaWV3JiwgdW5zaWduZWQg
b2Zmc2V0KTsKLSAgICBzdGF0aWMgc2l6ZV90IG1pbmltdW1Cb3hTaXplKCkgeyByZXR1cm4gMiAq
IHNpemVvZih1aW50MzJfdCk7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBtaW5pbXVt
Qm94U2l6ZSgpIHsgcmV0dXJuIDIgKiBzaXplb2YodWludDMyX3QpOyB9CiAKLSAgICBib29sIHJl
YWQoSlNDOjpEYXRhVmlldyYpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcmVhZChKU0M6OkRh
dGFWaWV3Jik7CiAgICAgYm9vbCByZWFkKEpTQzo6RGF0YVZpZXcmLCB1bnNpZ25lZCYgb2Zmc2V0
KTsKIAogICAgIHVpbnQ2NF90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KLSAgICBj
b25zdCBGb3VyQ0MmIGJveFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2JveFR5cGU7IH0KKyAgICBG
b3VyQ0MgYm94VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fYm94VHlwZTsgfQogICAgIGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgZXh0ZW5kZWRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9leHRlbmRlZFR5
cGU7IH0KIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgYm9vbCBwYXJzZShKU0M6OkRhdGFWaWV3
JiwgdW5zaWduZWQmIG9mZnNldCk7CiAKLSAgICBlbnVtIEVuZGlhbm5lc3MgewotICAgICAgICBC
aWdFbmRpYW4sCi0gICAgICAgIExpdHRsZUVuZGlhbiwKLSAgICB9OworICAgIGVudW0gRW5kaWFu
bmVzcyB7IEJpZ0VuZGlhbiwgTGl0dGxlRW5kaWFuIH07CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgUiwgdHlwZW5hbWUgVj4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBSLCB0eXBlbmFtZSBWPgogICAgIHN0YXRpYyBib29sIGNoZWNrZWRSZWFkKFImIHJl
dHVyblZhbHVlLCBWJiB2aWV3LCB1bnNpZ25lZCYgb2Zmc2V0LCBFbmRpYW5uZXNzIGVuZGlhbm5l
c3MpCiAgICAgewogICAgICAgICBib29sIHJlYWRTdGF0dXMgPSBmYWxzZTsKQEAgLTc2LDEyICs3
OSwxNiBAQCBwcm90ZWN0ZWQ6CiAgICAgfQogCiAgICAgdWludDY0X3QgbV9zaXplIHsgMCB9Owot
ICAgIEZvdXJDQyBtX2JveFR5cGUgeyB1aW50MzJfdCB7IDAgfSB9OworICAgIEZvdXJDQyBtX2Jv
eFR5cGU7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fZXh0ZW5kZWRUeXBlOwogfTsKIAotY2xhc3Mg
V0VCQ09SRV9FWFBPUlQgSVNPRnVsbEJveCA6IHB1YmxpYyBJU09Cb3ggeworY2xhc3MgSVNPRnVs
bEJveCA6IHB1YmxpYyBJU09Cb3ggewogcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIElTT0Z1
bGxCb3goKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBJU09GdWxsQm94KGNvbnN0IElTT0Z1bGxCb3gm
KTsKKyAgICBJU09GdWxsQm94KElTT0Z1bGxCb3gmJikgPSBkZWZhdWx0OworCiAgICAgdWludDhf
dCB2ZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV92ZXJzaW9uOyB9CiAgICAgdWludDMyX3QgZmxh
Z3MoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09PcmlnaW5hbEZvcm1hdEJveC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT09yaWdpbmFsRm9ybWF0Qm94LmgKaW5k
ZXggMjIxY2I2NzQwNzgxNGFjZDE2M2M4ZDFiZDA3YWVlNTEwNzBlNDJhMC4uMGRlYzQxZTVjODJl
NmExYjYxNTBlODVjZjlmODFiMGUzOTRhZjU4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT09yaWdpbmFsRm9ybWF0Qm94LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT09yaWdpbmFsRm9ybWF0Qm94LmgKQEAg
LTM4LDcgKzM4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBib29sIHBhcnNlKEpTQzo6RGF0
YVZpZXcmLCB1bnNpZ25lZCYgb2Zmc2V0KSBvdmVycmlkZTsKIAotICAgIEZvdXJDQyBtX2RhdGFG
b3JtYXQgeyB1aW50MzJfdCB7IDAgfSB9OworICAgIEZvdXJDQyBtX2RhdGFGb3JtYXQ7CiB9Owog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNP
U2NoZW1lVHlwZUJveC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lT
T1NjaGVtZVR5cGVCb3guaAppbmRleCAxYjZhZmNlM2M1YTFkYzE3YzZjN2M2NmM2ZDQ1YjU1OWY3
NWJlZTZmLi43M2UyODNjNjNlZWJkNTRiYThmNjFlNWE2M2JmOWNiYzEzZmI4NmMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lVHlwZUJv
eC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09TY2hlbWVU
eXBlQm94LmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBib29sIHBh
cnNlKEpTQzo6RGF0YVZpZXcmLCB1bnNpZ25lZCYgb2Zmc2V0KSBvdmVycmlkZTsKIAotICAgIEZv
dXJDQyBtX3NjaGVtZVR5cGUgeyB1aW50MzJfdCB7IDAgfSB9OworICAgIEZvdXJDQyBtX3NjaGVt
ZVR5cGU7CiAgICAgdWludDMyX3QgbV9zY2hlbWVWZXJzaW9uIHsgMCB9OwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1ZUVEN1ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRUQ3VlLmNwcAppbmRl
eCBhNTJiZTI0ZjZmYTZjMDhhZjlhYzY1NDFjMzU2NTI1MjZkMjAyZTc4Li44MTVhNjQ2Njc3YTE4
YjkzNjgwY2Y5Nzk5NTEwMDA5MzYzNWQ4N2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRUQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRUQ3VlLmNwcApAQCAtOTEsNiArOTEsOSBAQCBJU09X
ZWJWVFRDdWU6OklTT1dlYlZUVEN1ZShNZWRpYVRpbWUmJiBwcmVzZW50YXRpb25UaW1lLCBNZWRp
YVRpbWUmJiBkdXJhdGlvbiwgUwogewogfQogCitJU09XZWJWVFRDdWU6OklTT1dlYlZUVEN1ZShJ
U09XZWJWVFRDdWUmJikgPSBkZWZhdWx0OworSVNPV2ViVlRUQ3VlOjp+SVNPV2ViVlRUQ3VlKCkg
PSBkZWZhdWx0OworCiBib29sIElTT1dlYlZUVEN1ZTo6cGFyc2UoRGF0YVZpZXcmIHZpZXcsIHVu
c2lnbmVkJiBvZmZzZXQpCiB7CiAgICAgaWYgKCFJU09Cb3g6OnBhcnNlKHZpZXcsIG9mZnNldCkp
CkBAIC0xMTAsNyArMTEzLDcgQEAgYm9vbCBJU09XZWJWVFRDdWU6OnBhcnNlKERhdGFWaWV3JiB2
aWV3LCB1bnNpZ25lZCYgb2Zmc2V0KQogICAgICAgICBlbHNlIGlmIChzdHJpbmdCb3guYm94VHlw
ZSgpID09IHZ0dFBheWxvYWRCb3hUeXBlKCkpCiAgICAgICAgICAgICBtX2N1ZVRleHQgPSBzdHJp
bmdCb3guY29udGVudHMoKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgTE9HKE1lZGlhLCAi
SVNPV2ViVlRUQ3VlOjpJU09XZWJWVFRDdWUgLSBza2lwcGluZyBib3ggaWQgPSBcIiVzXCIsIHNp
emUgPSAlenUiLCBzdHJpbmdCb3guYm94VHlwZSgpLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwg
KHNpemVfdClzdHJpbmdCb3guc2l6ZSgpKTsKKyAgICAgICAgICAgIExPRyhNZWRpYSwgIklTT1dl
YlZUVEN1ZTo6SVNPV2ViVlRUQ3VlIC0gc2tpcHBpbmcgYm94IGlkID0gXCIlc1wiLCBzaXplID0g
JSIgUFJJdTY0LCBzdHJpbmdCb3guYm94VHlwZSgpLnN0cmluZygpLmRhdGEoKSwgc3RyaW5nQm94
LnNpemUoKSk7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1ZUVEN1ZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1ZUVEN1ZS5oCmluZGV4IGVjY2FlZjNkYWFlZWNm
NjljYWIxMDI3NTUzZmZjMWNjMGVlMjBhNDYuLjFjOWJkNzY3Mzk5MmUxNTQ0NmU3ZmY0YjZiNmE4
MGM4MDJlNmY3NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2lzby9JU09WVFRDdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9p
c28vSVNPVlRUQ3VlLmgKQEAgLTM5LDEwICszOSwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAv
LyBOIGJ5dGVzIDogQ3VlU2V0dGluZ3NCb3ggOiBib3ggOiBvcHRpb25hbAogLy8gTiBieXRlcyA6
IEN1ZVBheWxvYWRCb3ggOiBib3ggOiByZXF1aXJlZAogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBJ
U09XZWJWVFRDdWUgZmluYWwgOiBwdWJsaWMgSVNPQm94IHsKK2NsYXNzIElTT1dlYlZUVEN1ZSBm
aW5hbCA6IHB1YmxpYyBJU09Cb3ggewogcHVibGljOgogICAgIElTT1dlYlZUVEN1ZShjb25zdCBN
ZWRpYVRpbWUmIHByZXNlbnRhdGlvblRpbWUsIGNvbnN0IE1lZGlhVGltZSYgZHVyYXRpb24pOwot
ICAgIElTT1dlYlZUVEN1ZShNZWRpYVRpbWUmJiBwcmVzZW50YXRpb25UaW1lLCBNZWRpYVRpbWUm
JiBkdXJhdGlvbiwgU3RyaW5nJiYgY3VlSUQsIFN0cmluZyYmIGN1ZVRleHQsIFN0cmluZyYmIHNl
dHRpbmdzID0geyB9LCBTdHJpbmcmJiBzb3VyY2VJRCA9IHsgfSwgU3RyaW5nJiYgb3JpZ2luYWxT
dGFydFRpbWUgPSB7IH0pOworICAgIFdFQkNPUkVfRVhQT1JUIElTT1dlYlZUVEN1ZShNZWRpYVRp
bWUmJiBwcmVzZW50YXRpb25UaW1lLCBNZWRpYVRpbWUmJiBkdXJhdGlvbiwgU3RyaW5nJiYgY3Vl
SUQsIFN0cmluZyYmIGN1ZVRleHQsIFN0cmluZyYmIHNldHRpbmdzID0geyB9LCBTdHJpbmcmJiBz
b3VyY2VJRCA9IHsgfSwgU3RyaW5nJiYgb3JpZ2luYWxTdGFydFRpbWUgPSB7IH0pOworICAgIElT
T1dlYlZUVEN1ZShjb25zdCBJU09XZWJWVFRDdWUmKSA9IGRlZmF1bHQ7CisgICAgV0VCQ09SRV9F
WFBPUlQgSVNPV2ViVlRUQ3VlKElTT1dlYlZUVEN1ZSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+
SVNPV2ViVlRUQ3VlKCk7CisKKyAgICBJU09XZWJWVFRDdWUmIG9wZXJhdG9yPShjb25zdCBJU09X
ZWJWVFRDdWUmKSA9IGRlZmF1bHQ7CisgICAgSVNPV2ViVlRUQ3VlJiBvcGVyYXRvcj0oSVNPV2Vi
VlRUQ3VlJiYpID0gZGVmYXVsdDsKIAogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlwZU5hbWUoKSB7
IHJldHVybiAidnR0YyI7IH0KIAo=
</data>
<flag name="review"
          id="475958"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449771</attachid>
            <date>2022-01-23 16:40:18 -0800</date>
            <delta_ts>2022-01-23 16:46:59 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-235461-20220123164017.patch</filename>
            <type>text/plain</type>
            <size>33378</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NDI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2U3ODdjMzc3YjQ0NThl
Zjk3MjM0MDY0NDY2N2VkOWJhNDE0YzdhOC4uZWE5ZDBkNDkwMjdjZDViOWMyNmQ2MTFkZGUzY2Nm
NTgyMjQzMTZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkxIEBACisyMDIyLTAxLTIzICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBJbXByb3ZlIEZvdXJDQyB0byB1
c2UgbW9yZSBpbmxpbmluZywgZml4IGluY29ycmVjdCBtaXggb2YgV0VCQ09SRV9FWFBPUlQgb24g
ZW50aXJlIGNsYXNzIHdpdGggaW5saW5lIGZ1bmN0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NDYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
U2FtIFdlaW5pZy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajogQWRkZWQgRm91ckNDLmNwcC4gQmVjYXVzZSBvZgorICAgICAgICB1bmlmaWVkIHNvdXJjZXMg
aXQgd2FzIGNvbXBpbGVkLCBidXQgYmVjYXVzZSBpdCB3YXMgbm90IGluIHRoZSBwcm9qZWN0Cisg
ICAgICAgIHZhcmlvdXMgWGNvZGUgZmVhdHVyZXMgd291bGQgbm90IHdvcmsuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSVNPRmFpclBsYXlTdHJlYW1pbmdQc3No
Qm94LmNwcDoKKyAgICAgICAgQWRkZWQgc29tZSBleHBsaWNpdGx5IG5vbi1pbmxpbmVkIGV4cG9y
dGVkIGZ1bmN0aW9ucy4gVGhlc2UgbmVlZCB0bworICAgICAgICBiZSBleHBvcnRlZCBiZWNhdXNl
IHRoZXkgYXJlIHVzZWQgaW4gVGVzdFdlYktpdEFQSSB0ZXN0cyBhbmQgd2UKKyAgICAgICAgd2Fu
dCB0byBleHBvcnQgdGhlIGZ1bmN0aW9ucyByYXRoZXIgdGhhbiB0aGUgdnRhYmxlIHBvaW50ZXIu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0lTT0ZhaXJQbGF5U3Ry
ZWFtaW5nUHNzaEJveC5oOgorICAgICAgICBTdG9wIHVzaW5nIFdFQkNPUkVfRVhQT1JUIG9uIHdo
b2xlIGNsYXNzZXMgdGhhdCBjb250YWluIGlubGluZQorICAgICAgICBmdW5jdGlvbnMsIGFuZCBp
bnN0ZWFkIHVzZSBpdCBvbiBpbmRpdmlkdWFsIGZ1bmN0aW9ucy4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0ZvdXJDQy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3VyQ0M6OmZyb21T
dHJpbmcpOiBUYWtlIGEgU3RyaW5nVmlldyBpbnN0ZWFkIG9mIFN0cmluZy4KKyAgICAgICAgUmVt
b3ZlZCB1bm5lY2Vzc2FyeSBhbGxvY2F0aW9uIG9mIGEgdGVtcG9yYXJ5IENTdHJpbmcgZm9yIHRo
ZSByZXN1bHQKKyAgICAgICAgb2YgU3RyaW5nOjphc2NpaS4KKyAgICAgICAgKFdlYkNvcmU6OkZv
dXJDQzo6c3RyaW5nIGNvbnN0KTogUmVuYW1lIGZyb20gdG9TdHJpbmcgdG8gc3RyaW5nIGFuZAor
ICAgICAgICBjaGFuZ2VkIHRoZSByZXR1cm4gdHlwZSB0byBzdGQ6OmFycmF5IGluc3RlYWQgb2Yg
U3RyaW5nLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm91ckNDLmg6IE1hZGUgYWxs
IHRoZSBjb25zdHJ1Y3RvcnMgY29uc3RleHByLgorICAgICAgICBDaGFuZ2VkIHRoZSBzdHJpbmcg
bGl0ZXJhbCBjb25zdHJ1Y3RvciB0byBqdXN0IHdvcmsgd2l0aCA0LWNoYXJhY3RlcgorICAgICAg
ICBzdHJpbmdzLiBUaGUgb2xkIG9uZSB3YXMgYSB0ZW1wbGF0ZSBmb3IgYW55IGxlbmd0aCBzdHJp
bmcsIGJ1dCB0aGVuCisgICAgICAgIGFzc2VydGVkIGl0IHdhcyA0IGNoYXJhY3RlcnMgbG9uZywg
d2hpY2ggaXMgYSByb3VuZGFib3V0IHdheSB0byBkbyBpdC4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0hFVkNVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VIRVZD
RGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQpOiBUYWtlIEZvdXJDQyBpbnN0ZWFkCisgICAgICAg
IG9mIGNvbnN0IEZvdXJDQyYuIEFsc28gcmVtb3ZlZCB1bm5lY2Vzc2FyeSBleHBsaWNpdCBjb252
ZXJzaW9uIHRvCisgICAgICAgIEZvdXJDQyBzaW5jZSBmb3VyIGNoYXJhY3RlciBzdHJpbmdzLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0hFVkNVdGlsaXRpZXMuaDogRGl0dG8uCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSVNPRmFpclBsYXlTdHJlYW1p
bmdQc3NoQm94Lmg6CisgICAgICAgIFJlbW92ZWQgdW5uZWVkZWQgV0VCQ09SRV9FWFBPUlQgb24g
dGhlc2UgY2xhc3Nlcy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluYmFu
ZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NOYXRpdmVTYW1wbGVzKTogUmVtb3ZlZAorICAg
ICAgICB1bm5lY2VzYXJ5IGNhbGxzIHRvIHRvU3RyaW5nLCBsb2dnaW5nIGNhbiBoYW5kbGUgRm91
ckNDIHdpdGhvdXQgaXQuCisgICAgICAgIEFsc28gcmVtb3ZlZCB1bm5lZWRlZCB0eXBlIGNhc3Rz
IHRvIHNpemVfdC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0FWQXNzZXRUcmFja1V0aWxpdGllcy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRlbnRU
eXBlc1RvQ29kZWNzKTogUmVtb3ZlZCB1bm5lY2Vzc2FyeSBhbGxvY2F0aW9uIG9mCisgICAgICAg
IGEgU3RyaW5nIGJ5IHVzaW5nIFN0cmluZ1ZpZXcgZm9yIHRoZSBzdWJzdHJpbmcuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9IRVZDVXRpbGl0aWVzQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjp2YWxpZGF0ZUhFVkNQYXJhbWV0ZXJzKTogQWRkZWQgYW4gZXhwbGljaXQg
Y2FzdCB0byBTdHJpbmcKKyAgICAgICAgc2luY2UgRm91ckNDOjpmcm9tU3RyaW5nIG5vdyB0YWtl
cyBhIFN0cmluZ1ZpZXcuIFNhZGx5IHRoZXJlJ3Mgbm90CisgICAgICAgIGEgdHJpdmlhbCB3YXkg
dG8gZG8gdGhpcyB3aXRob3V0IGFsbG9jYXRpbmcgYSBTdHJpbmcuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jdi9HcmFwaGljc0NvbnRleHRHTENWQ29jb2EuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDVkNvY29hOjpjb3B5VmlkZW9TYW1wbGVUb1RleHR1
cmUpOgorICAgICAgICBTaW5jZSBGb3VyQ0M6OnN0cmluZyBub3cgcmV0dXJucyBhIHN0ZDo6YXJy
YXkgd2l0aCBhIEMtc3R5bGUKKyAgICAgICAgbnVsbC10ZXJtaW5hdGVkIHN0cmluZywgdXNlIGl0
IGluc3RlYWQgb2YgY2FsbGluZyB0b1N0cmluZyBhbmQKKyAgICAgICAgdGhlbiB1dGY4LiBDbGVh
bmVyIGFuZCBhbHNvIG11Y2ggbW9yZSBlZmZpY2llbnQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9pc28vSVNPQm94LmNwcDogTW92ZWQgY29uc3RydWN0b3JzIGFuZAorICAgICAgICBk
ZXN0cnVjdG9ycyBzbyB0aGV5IGFyZSBubyBsb25nZXIgaW5saW5lZCBzbyB0aGVyZSBpcyBubyBu
ZWVkIHRvCisgICAgICAgIGV4cG9ydCB0aGUgdnRhYmxlLgorICAgICAgICAoV2ViQ29yZTo6SVNP
Qm94OjpwZWVrQm94KTogUmVtb3ZlZCB1bm5lY2Vzc2FyeSBpbml0aWFsaXphdGlvbgorICAgICAg
ICBvZiBGb3VyQ0Mgc2luY2UgdGhleSBhcmUgemVybyBieSBkZWZhdWx0LgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT0JveC5oOiBSZW1vdmVkIFdFQkNPUkVfRVhQT1JUIG9m
CisgICAgICAgIHRoZSBlbnRpcmUgY2xhc3MsIHNpbmNlIHRoYXQncyBub3QgZnVsbHkgY29tcGF0
aWJsZSB3aXRoIGEgY2xhc3MKKyAgICAgICAgd2l0aCBpbmxpbmUgZnVuY3Rpb25zICh3YXJuaW5n
IGlzIGRvbmUgYnkgY2hlY2std2Via2l0LXN0eWxlKS4KKyAgICAgICAgUHV0IFdFQkNPUkVfRVhQ
T1JUIG9uIGluZGl2aWR1YWwgZnVuY3Rpb25zIGluc3RlYWQuICBBbHNvIHVzZSBzb21lCisgICAg
ICAgIG1vcmUgY29uc3RleHByLCByZW1vdmVkIHVubmVlZGVkIEZvdXJDQyBpbml0aWFsaXphdGlv
biBzaW5jZSBpdCBpcworICAgICAgICB6ZXJvIGJ5IGRlZmF1bHQsIGFuZCB1c2UgRm91ckNDLCBu
b3QgY29uc3QgRm91ckNDJiBmb3IgcmV0dXJuIHZhbHVlLgorCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvaXNvL0lTT09yaWdpbmFsRm9ybWF0Qm94Lmg6IFJlbW92ZWQgdW5uZWVkZWQKKyAg
ICAgICAgRm91ckNDIGluaXRpYWxpemF0aW9uIHNpbmNlIGl0IGlzIHplcm8gYnkgZGVmYXVsdC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lVHlwZUJveC5oOiBEaXR0
by4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUuY3BwOiBNb3Zl
ZCBjb25zdHJ1Y3RvcnMgYW5kCisgICAgICAgIGRlc3RydWN0b3JzIHNvIHRoZXkgYXJlIG5vIGxv
bmdlciBpbmxpbmVkIHNvIHRoZXJlIGlzIG5vIG5lZWQgdG8KKyAgICAgICAgZXhwb3J0IHRoZSB2
dGFibGUuCisgICAgICAgIChXZWJDb3JlOjpJU09XZWJWVFRDdWU6OnBhcnNlKTogVXNlIFBSSXU2
NCBpbnN0ZWFkIG9mIGNhc3RpbmcKKyAgICAgICAgdG8gc2l6ZV90LCBubyBuZWVkIHRvIHJlbHkg
b24gdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHR5cGUgc2l6ZXMuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRUQ3VlLmg6IFJlbW92ZWQgV0VCQ09SRV9FWFBPUlQgb2YK
KyAgICAgICAgdGhlIGVudGlyZSBjbGFzcywgc2luY2UgdGhhdCdzIG5vdCBmdWxseSBjb21wYXRp
YmxlIHdpdGggYSBjbGFzcworICAgICAgICB3aXRoIGlubGluZSBmdW5jdGlvbnMgKHdhcm5pbmcg
aXMgZG9uZSBieSBjaGVjay13ZWJraXQtc3R5bGUpLgorICAgICAgICBQdXQgV0VCQ09SRV9FWFBP
UlQgb24gaW5kaXZpZHVhbCBmdW5jdGlvbnMgaW5zdGVhZC4KKwogMjAyMi0wMS0yMyAgVHlsZXIg
V2lsY29jayAgPHR5bGVyX3dAYXBwbGUuY29tPgogCiAgICAgICAgIEFYIElzb2xhdGVkIFRyZWUg
TW9kZTogUmUtY29tcHV0ZSBBWFByb3BlcnR5TmFtZTo6SXNFbmFibGVkIHdoZW4gYSBub2RlIGV4
cGVyaWVuY2VzIEFYRGlzYWJsZWRTdGF0ZUNoYW5nZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkNGY4ODQ1NjZhNTI2NzRlMGZm
ZTQ2MTJhYzhlNDYxYmVmZGViMWE4Li45Y2E5NDMyZmU5OWYxNjQ2ZmQ2NDA3Y2Q0ZWVlZDgxNGEw
ZmQyNzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0xMjU2OCw2ICsxMjU2OCw3IEBACiAJCTkzMkNDMEQxMURGRkQ2NjcwMDRD
MEY5RiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU01lZGlhVHJhY2tDb25zdHJhaW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5MzJDQzBGMDFERkZEOEQ0MDA0QzBGOUYgLyogTWVkaWFUcmFja0NvbnN0cmFp
bnRzLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNZWRpYVRyYWNrQ29uc3RyYWludHMuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzJDQzBGNjFERkZEQTFGMDA0QzBGOUYg
LyogTWVkaWFUcmFja0NvbnN0cmFpbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IE1lZGlhVHJhY2tDb25zdHJhaW50cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTkzMkQyNkY0Mjc5Qjg1MjYwMDREQ0Q4RCAvKiBGb3VyQ0MuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRm91ckNDLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMy
RTE2MDgwQUY1NzgzNDAwMjVGNDA4IC8qIEZyYW1lTG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZyYW1lTG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTMyRjFEMzkyNzBEMjY5RjAwMEMyODEzIC8qIEpTRE9NQXN5bmNJdGVyYXRv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTUFzeW5jSXRlcmF0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMyRjFENDMyNzBFQkYzODAwMEMyODEz
IC8qIEpTRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjg4NDMsNiArMjg4NDQsNyBAQAogCQkJCTRBNkU5RkM2MTNDMTdE
NTcwMDQ2QTdGOCAvKiBGb250VGFnZ2VkU2V0dGluZ3MuaCAqLywKIAkJCQk3Q0U2Q0JGQzE4N0Yz
OTQ5MDBENDZCRjUgLyogRm9ybWF0Q29udmVydGVyLmNwcCAqLywKIAkJCQk3Q0U2Q0JGQTE4N0Yz
NzA3MDBENDZCRjUgLyogRm9ybWF0Q29udmVydGVyLmggKi8sCisJCQkJOTMyRDI2RjQyNzlCODUy
NjAwNERDRDhEIC8qIEZvdXJDQy5jcHAgKi8sCiAJCQkJQ0Q1MjVCQTIxRUUwQjEwNzAwNzg4REY1
IC8qIEZvdXJDQy5oICovLAogCQkJCTRGQjM5MEFDMTVFRjYxRjMwMDdBRDUxRiAvKiBHZW5lcmF0
ZWRJbWFnZS5jcHAgKi8sCiAJCQkJQkMyM0YwREEwREFGRjRBNDAwOUZEQzkxIC8qIEdlbmVyYXRl
ZEltYWdlLmggKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb3VyQ0MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm91ckNDLmNw
cAppbmRleCBkOWE4OTYyYjBiYjBlOWE3Yjg2Yzg1NzMzMDhiODVkOTcyYjVkMWFjLi41NGZkZTRl
OGE3YThmNjM4OTBiMGI4MmRmNTk4MmI2MGU5MzU1MzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb3VyQ0MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvdXJDQy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAyMS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsMjggKzI4LDE3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotc3RkOjpvcHRpb25hbDxGb3VyQ0M+IEZvdXJDQzo6ZnJvbVN0cmluZyhjb25z
dCBTdHJpbmcmIHN0cmluZ1ZhbHVlKQorc3RkOjpvcHRpb25hbDxGb3VyQ0M+IEZvdXJDQzo6ZnJv
bVN0cmluZyhTdHJpbmdWaWV3IHN0cmluZykKIHsKLSAgICBhdXRvIGFzY2lpVmFsdWUgPSBzdHJp
bmdWYWx1ZS5hc2NpaSgpOwotICAgIGlmIChhc2NpaVZhbHVlLmxlbmd0aCgpICE9IDQpCisgICAg
aWYgKHN0cmluZy5sZW5ndGgoKSAhPSA0IHx8ICFzdHJpbmcuaXNBbGxBU0NJSSgpKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgY29uc3QgY2hhciogZGF0YSA9IGFzY2lpVmFs
dWUuZGF0YSgpOwotICAgIEFTU0VSVChhc2NpaVZhbHVlLmRhdGEoKSk7Ci0gICAgdWludDMyX3Qg
dmFsdWUgPSBkYXRhWzBdIDw8IDI0IHwgZGF0YVsxXSA8PCAxNiB8IGRhdGFbMl0gPDwgOCB8IGRh
dGFbM107Ci0gICAgcmV0dXJuIEZvdXJDQyh2YWx1ZSk7Ci19Ci0KLVN0cmluZyBGb3VyQ0M6OnRv
U3RyaW5nKCkgY29uc3QKLXsKLSAgICBWZWN0b3I8TENoYXIsIDQ+IGRhdGEgPSB7Ci0gICAgICAg
IExDaGFyKHZhbHVlID4+IDI0KSwKLSAgICAgICAgTENoYXIoKHZhbHVlID4+IDE2KSAmIDB4RkYp
LAotICAgICAgICBMQ2hhcigodmFsdWUgPj4gOCkgJiAweEZGKSwKLSAgICAgICAgTENoYXIodmFs
dWUgJiAweEZGKSwKLSAgICB9OwotCi0gICAgcmV0dXJuIFN0cmluZzo6YWRvcHQoV1RGTW92ZShk
YXRhKSk7CisgICAgcmV0dXJuIHsgeyB7CisgICAgICAgIHN0YXRpY19jYXN0PGNoYXI+KHN0cmlu
Z1swXSksCisgICAgICAgIHN0YXRpY19jYXN0PGNoYXI+KHN0cmluZ1sxXSksCisgICAgICAgIHN0
YXRpY19jYXN0PGNoYXI+KHN0cmluZ1syXSksCisgICAgICAgIHN0YXRpY19jYXN0PGNoYXI+KHN0
cmluZ1szXSksCisgICAgICAgICdcMCcKKyAgICB9IH0gfTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm91ckNDLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb3VyQ0MuaAppbmRleCAyYTY0YzRiYzE1NDYzY2VjMTRiM2My
ZjM5ZjI1NGZkZDA1M2JmMWYyLi5iM2E3NTk5MDFkYjUzNGQwY2Q3OThkNDBlZGU0NzUwZDdlMzUz
NjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb3VyQ0Mu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb3VyQ0MuaApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMCwyNCAr
MzAsMzcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IEZvdXJDQyB7Ci0gICAgRm91
ckNDKCkgPSBkZWZhdWx0OwotICAgIEZvdXJDQyh1aW50MzJfdCB2YWx1ZSkgOiB2YWx1ZSh2YWx1
ZSkgeyB9CisgICAgY29uc3RleHByIEZvdXJDQygpID0gZGVmYXVsdDsKKyAgICBjb25zdGV4cHIg
Rm91ckNDKHVpbnQzMl90IHZhbHVlKSA6IHZhbHVlIHsgdmFsdWUgfSB7IH0KKyAgICBjb25zdGV4
cHIgRm91ckNDKGNvbnN0IGNoYXIgKCZudWxsVGVybWluYXRlZFN0cmluZylbNV0pOworICAgIGNv
bnN0ZXhwciBzdGQ6OmFycmF5PGNoYXIsIDU+IHN0cmluZygpIGNvbnN0OworICAgIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPEZvdXJDQz4gZnJvbVN0cmluZyhTdHJpbmdWaWV3KTsKIAotICAgIHRlbXBs
YXRlPHN0ZDo6c2l6ZV90IE4+Ci0gICAgY29uc3RleHByIEZvdXJDQyhjb25zdCBjaGFyICgmZGF0
YSlbTl0pCi0gICAgewotICAgICAgICBzdGF0aWNfYXNzZXJ0KChOIC0gMSkgPT0gNCwgIkZvdXJD
QyBsaXRlcmFscyBtdXN0IGJlIGV4YWN0bHkgNCBjaGFyYWN0ZXJzIGxvbmciKTsKLSAgICAgICAg
dmFsdWUgPSBkYXRhWzBdIDw8IDI0IHwgZGF0YVsxXSA8PCAxNiB8IGRhdGFbMl0gPDwgOCB8IGRh
dGFbM107Ci0gICAgfQorICAgIHVpbnQzMl90IHZhbHVlIHsgMCB9OworfTsKIAotICAgIFN0cmlu
ZyB0b1N0cmluZygpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPEZvdXJDQz4gZnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsKK2NvbnN0ZXhwciBib29sIG9w
ZXJhdG9yPT0oRm91ckNDLCBGb3VyQ0MpOworY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShGb3Vy
Q0MsIEZvdXJDQyk7CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRm91ckNDJiBvdGhlcikg
Y29uc3QgeyByZXR1cm4gdmFsdWUgPT0gb3RoZXIudmFsdWU7IH0KLSAgICBib29sIG9wZXJhdG9y
IT0oY29uc3QgRm91ckNDJiBvdGhlcikgY29uc3QgeyByZXR1cm4gdmFsdWUgIT0gb3RoZXIudmFs
dWU7IH0KK2NvbnN0ZXhwciBGb3VyQ0M6OkZvdXJDQyhjb25zdCBjaGFyICgmZGF0YSlbNV0pCisg
ICAgOiB2YWx1ZShkYXRhWzBdIDw8IDI0IHwgc3RhdGljX2Nhc3Q8dWludDhfdD4oZGF0YVsxXSkg
PDwgMTYgfCBzdGF0aWNfY2FzdDx1aW50OF90PihkYXRhWzJdKSA8PCA4IHwgc3RhdGljX2Nhc3Q8
dWludDhfdD4oZGF0YVszXSkpCit7CisgICAgQVNTRVJUX1VOREVSX0NPTlNURVhQUl9DT05URVhU
KGRhdGFbNF0gPT0gJ1wwJyk7Cit9CiAKLSAgICB1aW50MzJfdCB2YWx1ZSB7IDAgfTsKLX07Citj
b25zdGV4cHIgc3RkOjphcnJheTxjaGFyLCA1PiBGb3VyQ0M6OnN0cmluZygpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIHsKKyAgICAgICAgc3RhdGljX2Nhc3Q8Y2hhcj4odmFsdWUgPj4gMjQpLAorICAg
ICAgICBzdGF0aWNfY2FzdDxjaGFyPih2YWx1ZSA+PiAxNiksCisgICAgICAgIHN0YXRpY19jYXN0
PGNoYXI+KHZhbHVlID4+IDgpLAorICAgICAgICBzdGF0aWNfY2FzdDxjaGFyPih2YWx1ZSksCisg
ICAgICAgICdcMCcKKyAgICB9OworfQorCitjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KEZvdXJD
QyBhLCBGb3VyQ0MgYikgeyByZXR1cm4gYS52YWx1ZSA9PSBiLnZhbHVlOyB9Citjb25zdGV4cHIg
Ym9vbCBvcGVyYXRvciE9KEZvdXJDQyBhLCBGb3VyQ0MgYikgeyByZXR1cm4gYS52YWx1ZSAhPSBi
LnZhbHVlOyB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApAQCAtNTYsNyArNjksNyBAQCBu
YW1lc3BhY2UgV1RGIHsKIHRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgTG9nQXJndW1lbnQ7CiAK
IHRlbXBsYXRlPD4gc3RydWN0IExvZ0FyZ3VtZW50PFdlYkNvcmU6OkZvdXJDQz4gewotICAgIHN0
YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgV2ViQ29yZTo6Rm91ckNDJiBjb2RlKSB7IHJldHVy
biBjb2RlLnRvU3RyaW5nKCk7IH0KKyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFdl
YkNvcmU6OkZvdXJDQyYgY29kZSkgeyByZXR1cm4gY29kZS5zdHJpbmcoKS5kYXRhKCk7IH0KIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSEVWQ1V0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9IRVZDVXRpbGl0aWVzLmNwcAppbmRleCAzMjhlYTQyNGFlODEyNDFmZmMwM2NmNTgy
NTM4NTI2YWViYzNmZjUzLi4wYjQxNTM3Y2YxNmQ0ODA1ZDBjYTVjNjc0MjA3MzUwZGQ3MmQzNzZm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0
aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0
aWVzLmNwcApAQCAtMjM4LDcgKzIzOCw3IEBAIFN0cmluZyBjcmVhdGVIRVZDQ29kZWNQYXJhbWV0
ZXJzU3RyaW5nKGNvbnN0IEhFVkNQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAgICAgICAsIGNv
bXBhdGliaWxpdHlGbGFncy50b1N0cmluZygpKTsKIH0KIAotc3RkOjpvcHRpb25hbDxIRVZDUGFy
YW1ldGVycz4gcGFyc2VIRVZDRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoY29uc3QgRm91ckND
JiBjb2RlY0NvZGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RkOjpvcHRpb25hbDxI
RVZDUGFyYW1ldGVycz4gcGFyc2VIRVZDRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoRm91ckND
IGNvZGVjQ29kZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gSVNPL0lF
QyAxNDQ5Ni0xNToyMDE0CiAgICAgLy8gOC4zLjMuMSBIRVZDIGRlY29kZXIgY29uZmlndXJhdGlv
biByZWNvcmQKQEAgLTI0OCw5ICsyNDgsOSBAQCBzdGQ6Om9wdGlvbmFsPEhFVkNQYXJhbWV0ZXJz
PiBwYXJzZUhFVkNEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZChjb25zdCBGb3VyQ0MmCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBIRVZDUGFyYW1ldGVycyBwYXJhbWV0ZXJz
OwotICAgIGlmIChjb2RlY0NvZGUgPT0gRm91ckNDKCJoZXYxIikpCisgICAgaWYgKGNvZGVjQ29k
ZSA9PSAiaGV2MSIpCiAgICAgICAgIHBhcmFtZXRlcnMuY29kZWMgPSBIRVZDUGFyYW1ldGVyczo6
Q29kZWM6OkhldjE7Ci0gICAgZWxzZSBpZiAoY29kZWNDb2RlID09IEZvdXJDQygiaHZjMSIpKQor
ICAgIGVsc2UgaWYgKGNvZGVjQ29kZSA9PSAiaHZjMSIpCiAgICAgICAgIHBhcmFtZXRlcnMuY29k
ZWMgPSBIRVZDUGFyYW1ldGVyczo6Q29kZWM6Okh2YzE7CiAgICAgZWxzZQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSEVWQ1V0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SEVWQ1V0aWxpdGllcy5oCmluZGV4IDNmNTAxMDM0MTRmYjVlY2FkMmI4MmE3YWY5MWU0YTNjYTI0
NTY2M2MuLjhiZmIzOTE3OGYxMWIxODM2YzUwMGYyZGQxYjYzY2JkYzRkMTk2NjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0hFVkNVdGlsaXRpZXMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmgKQEAgLTU1
LDcgKzU1LDcgQEAgc3RydWN0IEhFVkNQYXJhbWV0ZXJzIHsKIH07CiAKIFdFQkNPUkVfRVhQT1JU
IHN0ZDo6b3B0aW9uYWw8SEVWQ1BhcmFtZXRlcnM+IHBhcnNlSEVWQ0NvZGVjUGFyYW1ldGVycyhT
dHJpbmdWaWV3KTsKLVdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8SEVWQ1BhcmFtZXRlcnM+
IHBhcnNlSEVWQ0RlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkKGNvbnN0IEZvdXJDQyYsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYpOworV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxIRVZDUGFyYW1l
dGVycz4gcGFyc2VIRVZDRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoRm91ckNDLCBjb25zdCBT
aGFyZWRCdWZmZXImKTsKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBjcmVhdGVIRVZDQ29kZWNQYXJh
bWV0ZXJzU3RyaW5nKGNvbnN0IEhFVkNQYXJhbWV0ZXJzJik7CiAKIHN0cnVjdCBEb1ZpUGFyYW1l
dGVycyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vSVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hC
b3guY3BwCmluZGV4IDRmODQ5NmFlM2NhZTQ3ZjAyYmRjMjY0OWMxYjIzN2ViNDRlYzZkODQuLmYy
YTQxYjI5ODJkZjMxZGFhMTg0ZTA4ZTQxMjE5ZWZkMzFhNGY4MGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JU09GYWlyUGxheVN0cmVh
bWluZ1Bzc2hCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9JU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3guY3BwCkBAIC0yNDgsNCArMjQ4
LDE5IEBAIGJvb2wgSVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94OjpwYXJzZShKU0M6OkRhdGFW
aWV3JiB2aWV3LCB1bnNpZ25lZCYgb2Zmc2V0KQogICAgIHJldHVybiBtX2luaXREYXRhQm94LnJl
YWQodmlldywgb2Zmc2V0KTsKIH0KIAorSVNPRmFpclBsYXlTdHJlYW1pbmdJbmZvQm94OjpJU09G
YWlyUGxheVN0cmVhbWluZ0luZm9Cb3goKSA9IGRlZmF1bHQ7CitJU09GYWlyUGxheVN0cmVhbWlu
Z0luZm9Cb3g6OklTT0ZhaXJQbGF5U3RyZWFtaW5nSW5mb0JveChjb25zdCBJU09GYWlyUGxheVN0
cmVhbWluZ0luZm9Cb3gmKSA9IGRlZmF1bHQ7CitJU09GYWlyUGxheVN0cmVhbWluZ0tleUFzc2V0
SWRCb3g6OklTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5QXNzZXRJZEJveChjb25zdCBJU09GYWlyUGxh
eVN0cmVhbWluZ0tleUFzc2V0SWRCb3gmKSA9IGRlZmF1bHQ7CitJU09GYWlyUGxheVN0cmVhbWlu
Z0tleUFzc2V0SWRCb3g6On5JU09GYWlyUGxheVN0cmVhbWluZ0tleUFzc2V0SWRCb3goKSA9IGRl
ZmF1bHQ7CitJU09GYWlyUGxheVN0cmVhbWluZ0tleUNvbnRleHRCb3g6OklTT0ZhaXJQbGF5U3Ry
ZWFtaW5nS2V5Q29udGV4dEJveChjb25zdCBJU09GYWlyUGxheVN0cmVhbWluZ0tleUNvbnRleHRC
b3gmKSA9IGRlZmF1bHQ7CitJU09GYWlyUGxheVN0cmVhbWluZ0tleUNvbnRleHRCb3g6On5JU09G
YWlyUGxheVN0cmVhbWluZ0tleUNvbnRleHRCb3goKSA9IGRlZmF1bHQ7CitJU09GYWlyUGxheVN0
cmVhbWluZ0tleVZlcnNpb25MaXN0Qm94OjpJU09GYWlyUGxheVN0cmVhbWluZ0tleVZlcnNpb25M
aXN0Qm94KGNvbnN0IElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5VmVyc2lvbkxpc3RCb3gmKSA9IGRl
ZmF1bHQ7CitJU09GYWlyUGxheVN0cmVhbWluZ0tleVZlcnNpb25MaXN0Qm94Ojp+SVNPRmFpclBs
YXlTdHJlYW1pbmdLZXlWZXJzaW9uTGlzdEJveCgpID0gZGVmYXVsdDsKK0lTT0ZhaXJQbGF5U3Ry
ZWFtaW5nS2V5UmVxdWVzdEJveDo6SVNPRmFpclBsYXlTdHJlYW1pbmdLZXlSZXF1ZXN0Qm94KGNv
bnN0IElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5UmVxdWVzdEJveCYpID0gZGVmYXVsdDsKK0lTT0Zh
aXJQbGF5U3RyZWFtaW5nS2V5UmVxdWVzdEJveDo6fklTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5UmVx
dWVzdEJveCgpID0gZGVmYXVsdDsKK0lTT0ZhaXJQbGF5U3RyZWFtaW5nSW5pdERhdGFCb3g6OklT
T0ZhaXJQbGF5U3RyZWFtaW5nSW5pdERhdGFCb3goKSA9IGRlZmF1bHQ7CitJU09GYWlyUGxheVN0
cmVhbWluZ0luaXREYXRhQm94Ojp+SVNPRmFpclBsYXlTdHJlYW1pbmdJbml0RGF0YUJveCgpID0g
ZGVmYXVsdDsKK0lTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveDo6SVNPRmFpclBsYXlTdHJlYW1p
bmdQc3NoQm94KCkgPSBkZWZhdWx0OworSVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94Ojp+SVNP
RmFpclBsYXlTdHJlYW1pbmdQc3NoQm94KCkgPSBkZWZhdWx0OworCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSVNPRmFpclBsYXlT
dHJlYW1pbmdQc3NoQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vSVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94LmgKaW5kZXggNzk0YTE1MjhkMGRl
ZTM1OTljNWFmM2NlNDRhZGY5YjZiODAyMGFkZS4uZGUwOGRkODVhNTFjNmZjNjRlNTZhNTNiMDRl
Yjc5NDdlOGNkYzAwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0lTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JU09GYWlyUGxheVN0cmVh
bWluZ1Bzc2hCb3guaApAQCAtMjksMTkgKzI5LDIzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdJbmZvQm94IGZpbmFs
IDogcHVibGljIElTT0Z1bGxCb3ggeworY2xhc3MgSVNPRmFpclBsYXlTdHJlYW1pbmdJbmZvQm94
IGZpbmFsIDogcHVibGljIElTT0Z1bGxCb3ggewogcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JU
IElTT0ZhaXJQbGF5U3RyZWFtaW5nSW5mb0JveCgpOworICAgIFdFQkNPUkVfRVhQT1JUIElTT0Zh
aXJQbGF5U3RyZWFtaW5nSW5mb0JveChjb25zdCBJU09GYWlyUGxheVN0cmVhbWluZ0luZm9Cb3gm
KTsKKyAgICBJU09GYWlyUGxheVN0cmVhbWluZ0luZm9Cb3goSVNPRmFpclBsYXlTdHJlYW1pbmdJ
bmZvQm94JiYpOworCiAgICAgc3RhdGljIEZvdXJDQyBib3hUeXBlTmFtZSgpIHsgcmV0dXJuICJm
cHNpIjsgfQogCiAgICAgRm91ckNDIHNjaGVtZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2NoZW1lOyB9
CiAKIHByaXZhdGU6Ci0gICAgYm9vbCBwYXJzZShKU0M6OkRhdGFWaWV3JiwgdW5zaWduZWQmIG9m
ZnNldCkgb3ZlcnJpZGU7CisgICAgYm9vbCBwYXJzZShKU0M6OkRhdGFWaWV3JiwgdW5zaWduZWQm
IG9mZnNldCkgZmluYWw7CiAKICAgICBGb3VyQ0MgbV9zY2hlbWU7CiB9OwogCi1jbGFzcyBXRUJD
T1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0tleVJlcXVlc3RJbmZvQm94IGZpbmFsIDog
cHVibGljIElTT0Z1bGxCb3ggeworY2xhc3MgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlSZXF1ZXN0
SW5mb0JveCBmaW5hbCA6IHB1YmxpYyBJU09GdWxsQm94IHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
Rm91ckNDIGJveFR5cGVOYW1lKCkgeyByZXR1cm4gImZrcmkiOyB9CiAKQEAgLTQ5LDQ2ICs1Myw3
NSBAQCBwdWJsaWM6CiAgICAgY29uc3QgS2V5SUQmIGtleUlEKCkgY29uc3QgeyByZXR1cm4gbV9r
ZXlJRDsgfQogCiBwcml2YXRlOgotICAgIGJvb2wgcGFyc2UoSlNDOjpEYXRhVmlldyYsIHVuc2ln
bmVkJiBvZmZzZXQpIG92ZXJyaWRlOworICAgIGJvb2wgcGFyc2UoSlNDOjpEYXRhVmlldyYsIHVu
c2lnbmVkJiBvZmZzZXQpIGZpbmFsOwogCiAgICAgS2V5SUQgbV9rZXlJRDsKIH07CiAKLWNsYXNz
IFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5QXNzZXRJZEJveCBmaW5hbCA6
IHB1YmxpYyBJU09Cb3ggeworY2xhc3MgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlBc3NldElkQm94
IGZpbmFsIDogcHVibGljIElTT0JveCB7CiBwdWJsaWM6CisgICAgSVNPRmFpclBsYXlTdHJlYW1p
bmdLZXlBc3NldElkQm94KCkgPSBkZWZhdWx0OworICAgIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQ
bGF5U3RyZWFtaW5nS2V5QXNzZXRJZEJveChjb25zdCBJU09GYWlyUGxheVN0cmVhbWluZ0tleUFz
c2V0SWRCb3gmKTsKKyAgICBJU09GYWlyUGxheVN0cmVhbWluZ0tleUFzc2V0SWRCb3goSVNPRmFp
clBsYXlTdHJlYW1pbmdLZXlBc3NldElkQm94JiYpID0gZGVmYXVsdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCB+SVNPRmFpclBsYXlTdHJlYW1pbmdLZXlBc3NldElkQm94KCk7CisKKyAgICBJU09GYWly
UGxheVN0cmVhbWluZ0tleUFzc2V0SWRCb3gmIG9wZXJhdG9yPShjb25zdCBJU09GYWlyUGxheVN0
cmVhbWluZ0tleUFzc2V0SWRCb3gmKSA9IGRlZmF1bHQ7CisgICAgSVNPRmFpclBsYXlTdHJlYW1p
bmdLZXlBc3NldElkQm94JiBvcGVyYXRvcj0oSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlBc3NldElk
Qm94JiYpID0gZGVmYXVsdDsKKwogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlwZU5hbWUoKSB7IHJl
dHVybiAiZmthaSI7IH0KICAgICBjb25zdCBWZWN0b3I8dWludDhfdD4gZGF0YSgpIGNvbnN0IHsg
cmV0dXJuIG1fZGF0YTsgfQogCiBwcml2YXRlOgotICAgIGJvb2wgcGFyc2UoSlNDOjpEYXRhVmll
dyYsIHVuc2lnbmVkJiBvZmZzZXQpIG92ZXJyaWRlOworICAgIGJvb2wgcGFyc2UoSlNDOjpEYXRh
VmlldyYsIHVuc2lnbmVkJiBvZmZzZXQpIGZpbmFsOwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG1f
ZGF0YTsKIH07CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5
Q29udGV4dEJveCBmaW5hbCA6IHB1YmxpYyBJU09Cb3ggeworY2xhc3MgSVNPRmFpclBsYXlTdHJl
YW1pbmdLZXlDb250ZXh0Qm94IGZpbmFsIDogcHVibGljIElTT0JveCB7CiBwdWJsaWM6CisgICAg
SVNPRmFpclBsYXlTdHJlYW1pbmdLZXlDb250ZXh0Qm94KCkgPSBkZWZhdWx0OworICAgIFdFQkNP
UkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5Q29udGV4dEJveChjb25zdCBJU09GYWly
UGxheVN0cmVhbWluZ0tleUNvbnRleHRCb3gmKTsKKyAgICBJU09GYWlyUGxheVN0cmVhbWluZ0tl
eUNvbnRleHRCb3goSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlDb250ZXh0Qm94JiYpID0gZGVmYXVs
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCB+SVNPRmFpclBsYXlTdHJlYW1pbmdLZXlDb250ZXh0Qm94
KCk7CisKKyAgICBJU09GYWlyUGxheVN0cmVhbWluZ0tleUNvbnRleHRCb3gmIG9wZXJhdG9yPShj
b25zdCBJU09GYWlyUGxheVN0cmVhbWluZ0tleUNvbnRleHRCb3gmKSA9IGRlZmF1bHQ7CisgICAg
SVNPRmFpclBsYXlTdHJlYW1pbmdLZXlDb250ZXh0Qm94JiBvcGVyYXRvcj0oSVNPRmFpclBsYXlT
dHJlYW1pbmdLZXlDb250ZXh0Qm94JiYpID0gZGVmYXVsdDsKKwogICAgIHN0YXRpYyBGb3VyQ0Mg
Ym94VHlwZU5hbWUoKSB7IHJldHVybiAiZmtjeCI7IH0KICAgICBjb25zdCBWZWN0b3I8dWludDhf
dD4gZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQogCiBwcml2YXRlOgotICAgIGJvb2wg
cGFyc2UoSlNDOjpEYXRhVmlldyYsIHVuc2lnbmVkJiBvZmZzZXQpIG92ZXJyaWRlOworICAgIGJv
b2wgcGFyc2UoSlNDOjpEYXRhVmlldyYsIHVuc2lnbmVkJiBvZmZzZXQpIGZpbmFsOwogCiAgICAg
VmVjdG9yPHVpbnQ4X3Q+IG1fZGF0YTsKIH07CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0Zh
aXJQbGF5U3RyZWFtaW5nS2V5VmVyc2lvbkxpc3RCb3ggZmluYWwgOiBwdWJsaWMgSVNPQm94IHsK
K2NsYXNzIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5VmVyc2lvbkxpc3RCb3ggZmluYWwgOiBwdWJs
aWMgSVNPQm94IHsKIHB1YmxpYzoKKyAgICBJU09GYWlyUGxheVN0cmVhbWluZ0tleVZlcnNpb25M
aXN0Qm94KCkgPSBkZWZhdWx0OworICAgIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFt
aW5nS2V5VmVyc2lvbkxpc3RCb3goY29uc3QgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlWZXJzaW9u
TGlzdEJveCYpOworICAgIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5VmVyc2lvbkxpc3RCb3goSVNP
RmFpclBsYXlTdHJlYW1pbmdLZXlWZXJzaW9uTGlzdEJveCYmKSA9IGRlZmF1bHQ7CisgICAgV0VC
Q09SRV9FWFBPUlQgfklTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5VmVyc2lvbkxpc3RCb3goKTsKKwor
ICAgIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5VmVyc2lvbkxpc3RCb3gmIG9wZXJhdG9yPShjb25z
dCBJU09GYWlyUGxheVN0cmVhbWluZ0tleVZlcnNpb25MaXN0Qm94JikgPSBkZWZhdWx0OworICAg
IElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5VmVyc2lvbkxpc3RCb3gmIG9wZXJhdG9yPShJU09GYWly
UGxheVN0cmVhbWluZ0tleVZlcnNpb25MaXN0Qm94JiYpID0gZGVmYXVsdDsKKwogICAgIHN0YXRp
YyBGb3VyQ0MgYm94VHlwZU5hbWUoKSB7IHJldHVybiAiZmt2bCI7IH0KICAgICBjb25zdCBWZWN0
b3I8dWludDhfdD4gdmVyc2lvbnMoKSBjb25zdCB7IHJldHVybiBtX3ZlcnNpb25zOyB9CiAKIHBy
aXZhdGU6Ci0gICAgYm9vbCBwYXJzZShKU0M6OkRhdGFWaWV3JiwgdW5zaWduZWQmIG9mZnNldCkg
b3ZlcnJpZGU7CisgICAgYm9vbCBwYXJzZShKU0M6OkRhdGFWaWV3JiwgdW5zaWduZWQmIG9mZnNl
dCkgZmluYWw7CiAKICAgICBWZWN0b3I8dWludDhfdD4gbV92ZXJzaW9uczsKIH07CiAKLWNsYXNz
IFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5UmVxdWVzdEJveCBmaW5hbCA6
IHB1YmxpYyBJU09Cb3ggeworY2xhc3MgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlSZXF1ZXN0Qm94
IGZpbmFsIDogcHVibGljIElTT0JveCB7CiBwdWJsaWM6CisgICAgSVNPRmFpclBsYXlTdHJlYW1p
bmdLZXlSZXF1ZXN0Qm94KCkgPSBkZWZhdWx0OworICAgIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQ
bGF5U3RyZWFtaW5nS2V5UmVxdWVzdEJveChjb25zdCBJU09GYWlyUGxheVN0cmVhbWluZ0tleVJl
cXVlc3RCb3gmKTsKKyAgICBJU09GYWlyUGxheVN0cmVhbWluZ0tleVJlcXVlc3RCb3goSVNPRmFp
clBsYXlTdHJlYW1pbmdLZXlSZXF1ZXN0Qm94JiYpID0gZGVmYXVsdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCB+SVNPRmFpclBsYXlTdHJlYW1pbmdLZXlSZXF1ZXN0Qm94KCk7CisKICAgICBzdGF0aWMg
Rm91ckNDIGJveFR5cGVOYW1lKCkgeyByZXR1cm4gImZwc2siOyB9CiAKICAgICBjb25zdCBJU09G
YWlyUGxheVN0cmVhbWluZ0tleVJlcXVlc3RJbmZvQm94JiByZXF1ZXN0SW5mbygpIGNvbnN0IHsg
cmV0dXJuIG1fcmVxdWVzdEluZm87IH0KQEAgLTk3LDcgKzEzMCw3IEBAIHB1YmxpYzoKICAgICBj
b25zdCBzdGQ6Om9wdGlvbmFsPElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5VmVyc2lvbkxpc3RCb3g+
JiB2ZXJzaW9uTGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fdmVyc2lvbkxpc3Q7IH0KIAogcHJpdmF0
ZToKLSAgICBib29sIHBhcnNlKEpTQzo6RGF0YVZpZXcmLCB1bnNpZ25lZCYgb2Zmc2V0KSBvdmVy
cmlkZTsKKyAgICBib29sIHBhcnNlKEpTQzo6RGF0YVZpZXcmLCB1bnNpZ25lZCYgb2Zmc2V0KSBm
aW5hbDsKIAogICAgIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5UmVxdWVzdEluZm9Cb3ggbV9yZXF1
ZXN0SW5mbzsKICAgICBzdGQ6Om9wdGlvbmFsPElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5QXNzZXRJ
ZEJveD4gbV9hc3NldElEOwpAQCAtMTA1LDI4ICsxMzgsMzQgQEAgcHJpdmF0ZToKICAgICBzdGQ6
Om9wdGlvbmFsPElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5VmVyc2lvbkxpc3RCb3g+IG1fdmVyc2lv
bkxpc3Q7CiB9OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0lu
aXREYXRhQm94IGZpbmFsIDogcHVibGljIElTT0JveCB7CitjbGFzcyBJU09GYWlyUGxheVN0cmVh
bWluZ0luaXREYXRhQm94IGZpbmFsIDogcHVibGljIElTT0JveCB7CiBwdWJsaWM6CisgICAgV0VC
Q09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdJbml0RGF0YUJveCgpOworICAgIFdFQkNP
UkVfRVhQT1JUIH5JU09GYWlyUGxheVN0cmVhbWluZ0luaXREYXRhQm94KCk7CisKICAgICBzdGF0
aWMgRm91ckNDIGJveFR5cGVOYW1lKCkgeyByZXR1cm4gImZwc2QiOyB9CiAKICAgICBjb25zdCBJ
U09GYWlyUGxheVN0cmVhbWluZ0luZm9Cb3gmIGluZm8oKSBjb25zdCB7IHJldHVybiBtX2luZm87
IH0KICAgICBjb25zdCBWZWN0b3I8SVNPRmFpclBsYXlTdHJlYW1pbmdLZXlSZXF1ZXN0Qm94PiYg
cmVxdWVzdHMoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RzOyB9CiAKIHByaXZhdGU6Ci0gICAg
Ym9vbCBwYXJzZShKU0M6OkRhdGFWaWV3JiwgdW5zaWduZWQmIG9mZnNldCkgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBwYXJzZShKU0M6OkRhdGFWaWV3JiwgdW5zaWduZWQmIG9mZnNldCkgZmluYWw7CiAK
ICAgICBJU09GYWlyUGxheVN0cmVhbWluZ0luZm9Cb3ggbV9pbmZvOwogICAgIFZlY3RvcjxJU09G
YWlyUGxheVN0cmVhbWluZ0tleVJlcXVlc3RCb3g+IG1fcmVxdWVzdHM7CiB9OwogCi1jbGFzcyBX
RUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3ggZmluYWwgOiBwdWJsaWMg
SVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94IHsKK2NsYXNzIElTT0ZhaXJQbGF5
U3RyZWFtaW5nUHNzaEJveCBmaW5hbCA6IHB1YmxpYyBJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lm
aWNIZWFkZXJCb3ggewogcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3Ry
ZWFtaW5nUHNzaEJveCgpOworICAgIFdFQkNPUkVfRVhQT1JUIH5JU09GYWlyUGxheVN0cmVhbWlu
Z1Bzc2hCb3goKTsKKwogICAgIHN0YXRpYyBjb25zdCBWZWN0b3I8dWludDhfdD4mIGZhaXJQbGF5
U3lzdGVtSUQoKTsKIAogICAgIGNvbnN0IElTT0ZhaXJQbGF5U3RyZWFtaW5nSW5pdERhdGFCb3gm
IGluaXREYXRhQm94KCkgeyByZXR1cm4gbV9pbml0RGF0YUJveDsgfQogCiBwcml2YXRlOgotICAg
IGJvb2wgcGFyc2UoSlNDOjpEYXRhVmlldyYsIHVuc2lnbmVkJiBvZmZzZXQpIG92ZXJyaWRlOwor
ICAgIGJvb2wgcGFyc2UoSlNDOjpEYXRhVmlldyYsIHVuc2lnbmVkJiBvZmZzZXQpIGZpbmFsOwog
CiAgICAgSVNPRmFpclBsYXlTdHJlYW1pbmdJbml0RGF0YUJveCBtX2luaXREYXRhQm94OwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAppbmRl
eCA4NGUwODZhMTg0YmFjZTRmZDI5MWVmM2E1OTAzMjcyNjAzODcwOTA3Li43MzNkNTZhMDgzZDMw
YjNmNDU4NDc0OTVmN2M4OWIzMTk4NDY5NDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0lu
YmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwCkBAIC01MDIsMTEgKzUwMiwxMSBAQCB2b2lkIElu
YmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NOYXRpdmVTYW1wbGVzKENGQXJyYXlSZWYg
bmF0aXZlU2FtcGxlcywgYwogICAgICAgICBhdXRvIHR5cGUgPSBwZWVrUmVzdWx0LnZhbHVlKCku
Zmlyc3Q7CiAgICAgICAgIGF1dG8gYm94TGVuZ3RoID0gcGVla1Jlc3VsdC52YWx1ZSgpLnNlY29u
ZDsKICAgICAgICAgaWYgKGJveExlbmd0aCA+IHZpZXctPmJ5dGVMZW5ndGgoKSkgewotICAgICAg
ICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICJjaHVuayAgdHlwZSA9ICciLCB0eXBlLnRv
U3RyaW5nKCksICInLCBzaXplID0gIiwgKHNpemVfdClib3hMZW5ndGgsICIgbGFyZ2VyIHRoYW4g
YnVmZmVyIGxlbmd0aCEiKTsKKyAgICAgICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAi
Y2h1bmsgIHR5cGUgPSAnIiwgdHlwZSwgIicsIHNpemUgPSAiLCBib3hMZW5ndGgsICIgbGFyZ2Vy
IHRoYW4gYnVmZmVyIGxlbmd0aCEiKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9
CiAKLSAgICAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgImNodW5rICB0eXBlID0gJyIsIHR5
cGUudG9TdHJpbmcoKSwgIicsIHNpemUgPSAiLCAoc2l6ZV90KWJveExlbmd0aCk7CisgICAgICAg
IElORk9fTE9HKExPR0lERU5USUZJRVIsICJjaHVuayAgdHlwZSA9ICciLCB0eXBlLCAiJywgc2l6
ZSA9ICIsIGJveExlbmd0aCk7CiAKICAgICAgICAgZG8gewogICAgICAgICAgICAgaWYgKG1faGF2
ZVJlcG9ydGVkVlRUSGVhZGVyIHx8ICFmb3JtYXREZXNjcmlwdGlvbikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0FWQXNzZXRU
cmFja1V0aWxpdGllcy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0FWQXNzZXRUcmFja1V0aWxpdGllcy5tbQppbmRleCAzZjZlNDMyMDEyMzQ5
MzM2NGViYThkNjFhYTY4M2E1NjJlMzMxNWY5Li4wZGFmYzhiZmQ0MWJkMDRiOTc4YzQ5ODQxZmFl
YTAwOGY4MmI0NGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9BVkFzc2V0VHJhY2tVdGlsaXRpZXMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQVZBc3NldFRyYWNr
VXRpbGl0aWVzLm1tCkBAIC00OSw3ICs0OSw3IEBAIHN0YXRpYyBWZWN0b3I8Rm91ckNDPiBjb250
ZW50VHlwZXNUb0NvZGVjcyhjb25zdCBWZWN0b3I8Q29udGVudFR5cGU+JiBjb250ZW50VHlwCiAg
ICAgICAgICAgICBpZiAoZmlyc3RQZXJpb2QgIT0gbm90Rm91bmQpCiAgICAgICAgICAgICAgICAg
Y29kZWNTdHJpbmcudHJ1bmNhdGUoZmlyc3RQZXJpb2QpOwogCi0gICAgICAgICAgICBhdXRvIGNv
ZGVjSWRlbnRpZmllciA9IEZvdXJDQzo6ZnJvbVN0cmluZyhjb2RlY1N0cmluZy5sZWZ0KDQpKTsK
KyAgICAgICAgICAgIGF1dG8gY29kZWNJZGVudGlmaWVyID0gRm91ckNDOjpmcm9tU3RyaW5nKFN0
cmluZ1ZpZXcgeyBjb2RlY1N0cmluZyB9LmxlZnQoNCkpOwogICAgICAgICAgICAgaWYgKGNvZGVj
SWRlbnRpZmllcikKICAgICAgICAgICAgICAgICBjb2RlY3MuYXBwZW5kKGNvZGVjSWRlbnRpZmll
ci52YWx1ZSgpKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvSEVWQ1V0aWxpdGllc0NvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSEVWQ1V0aWxpdGllc0NvY29hLm1tCmluZGV4IDY0ODNj
Mjg3M2ZkYmY3NjA2ZTAzOTk0ZWY4NWI5ZDI5ZDhlYWQ1NTEuLmI5ZmI4Y2IzNzRlZTBlZDQyYmQy
NTVjZjIyZjcxNjU4YzVlYWIwM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0hFVkNVdGlsaXRpZXNDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9IRVZDVXRpbGl0aWVzQ29jb2EubW0KQEAgLTQ4LDcg
KzQ4LDcgQEAgc3RkOjpvcHRpb25hbDxNZWRpYUNhcGFiaWxpdGllc0luZm8+IHZhbGlkYXRlSEVW
Q1BhcmFtZXRlcnMoY29uc3QgSEVWQ1BhcmFtZXRlcnMKICAgICAgICAgaWYgKCFQQUw6OmlzQVZG
b3VuZGF0aW9uRnJhbWV3b3JrQXZhaWxhYmxlKCkgfHwgIVBBTDo6Y2FuTG9hZF9BVkZvdW5kYXRp
b25fQVZWaWRlb0NvZGVjVHlwZUhFVkNXaXRoQWxwaGEoKSkKICAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgYXV0byBjb2RlY0NvZGUgPSBGb3VyQ0M6OmZyb21TdHJp
bmcoQVZWaWRlb0NvZGVjVHlwZUhFVkNXaXRoQWxwaGEpOworICAgICAgICBhdXRvIGNvZGVjQ29k
ZSA9IEZvdXJDQzo6ZnJvbVN0cmluZyhTdHJpbmcgeyBBVlZpZGVvQ29kZWNUeXBlSEVWQ1dpdGhB
bHBoYSB9KTsKICAgICAgICAgaWYgKCFjb2RlY0NvZGUpCiAgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jdi9HcmFwaGljc0NvbnRleHRHTENWQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkNvY29hLmNwcAppbmRleCBkNDUyMDQ5
Y2FkMzczMGJmOTkzMDllNzZmMjI5NzU4NzA2MWE4OTY4Li41ZjJmZDg1YzhjZThlMzgyOGEwNzM4
OGIxOGI0NzgzMzg1MTI1NTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jdi9HcmFwaGljc0NvbnRleHRHTENWQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0dyYXBoaWNzQ29udGV4dEdMQ1ZDb2NvYS5jcHAKQEAg
LTU4NSw3ICs1ODUsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMQ1ZDb2NvYTo6Y29weVZpZGVv
U2FtcGxlVG9UZXh0dXJlKGNvbnN0IE1lZGlhU2FtcGxlVmlkZW9GcgogICAgICAgICAmJiBwaXhl
bEZvcm1hdCAhPSBrQ1ZQaXhlbEZvcm1hdFR5cGVfQUdYXzQyMFlwQ2JDcjhCaVBsYW5hckZ1bGxS
YW5nZQogI2VuZGlmCiAgICAgICAgICkgewotICAgICAgICBMT0coV2ViR0wsICJHcmFwaGljc0Nv
bnRleHRHTENWQ29jb2E6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSglcCkgLSBB
c2tlZCB0byBjb3B5IGFuIHVuc3VwcG9ydGVkIHBpeGVsIGZvcm1hdCAoJyVzJykuIiwgdGhpcywg
Rm91ckNDKHBpeGVsRm9ybWF0KS50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBM
T0coV2ViR0wsICJHcmFwaGljc0NvbnRleHRHTENWQ29jb2E6OmNvcHlWaWRlb1RleHR1cmVUb1Bs
YXRmb3JtVGV4dHVyZSglcCkgLSBBc2tlZCB0byBjb3B5IGFuIHVuc3VwcG9ydGVkIHBpeGVsIGZv
cm1hdCAoJyVzJykuIiwgdGhpcywgRm91ckNDKHBpeGVsRm9ybWF0KS5zdHJpbmcoKS5kYXRhKCkp
OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIElPU3VyZmFjZVJlZiBzdXJmYWNl
ID0gQ1ZQaXhlbEJ1ZmZlckdldElPU3VyZmFjZShpbWFnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guY3BwCmluZGV4IGMwNmUzYTYzMzg4NjBmMTFl
YjBlYmNmYTQzOGQzNTIwMjY2ZjVkNDguLjNjNmI2MWQ0ZjNlY2FjMGIwMTU3MjFlYjQ5NDkxMDhk
MDYzZTQ4MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lz
by9JU09Cb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9J
U09Cb3guY3BwCkBAIC0zMiwxMyArMzIsMTcgQEAgdXNpbmcgSlNDOjpEYXRhVmlldzsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitJU09Cb3g6OklTT0JveCgpID0gZGVmYXVsdDsKK0lTT0JveDo6
fklTT0JveCgpID0gZGVmYXVsdDsKK0lTT0JveDo6SVNPQm94KGNvbnN0IElTT0JveCYpID0gZGVm
YXVsdDsKKwogSVNPQm94OjpQZWVrUmVzdWx0IElTT0JveDo6cGVla0JveChEYXRhVmlldyYgdmll
dywgdW5zaWduZWQgb2Zmc2V0KQogewogICAgIHVpbnQ2NF90IHNpemUgPSAwOwogICAgIGlmICgh
Y2hlY2tlZFJlYWQ8dWludDMyX3Q+KHNpemUsIHZpZXcsIG9mZnNldCwgQmlnRW5kaWFuKSkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIEZvdXJDQyB0eXBlID0geyB1aW50MzJf
dCB7IDAgfSB9OworICAgIEZvdXJDQyB0eXBlOwogICAgIGlmICghY2hlY2tlZFJlYWQ8dWludDMy
X3Q+KHR5cGUsIHZpZXcsIG9mZnNldCwgQmlnRW5kaWFuKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIApAQCAtOTYsNiArMTAwLDkgQEAgYm9vbCBJU09Cb3g6OnBhcnNlKERhdGFWaWV3
JiB2aWV3LCB1bnNpZ25lZCYgb2Zmc2V0KQogICAgIHJldHVybiB0cnVlOwogfQogCitJU09GdWxs
Qm94OjpJU09GdWxsQm94KCkgPSBkZWZhdWx0OworSVNPRnVsbEJveDo6SVNPRnVsbEJveChjb25z
dCBJU09GdWxsQm94JikgPSBkZWZhdWx0OworCiBib29sIElTT0Z1bGxCb3g6OnBhcnNlKERhdGFW
aWV3JiB2aWV3LCB1bnNpZ25lZCYgb2Zmc2V0KQogewogICAgIGlmICghSVNPQm94OjpwYXJzZSh2
aWV3LCBvZmZzZXQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvaXNvL0lTT0JveC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lT
T0JveC5oCmluZGV4IGQ4M2U0YTQwNDBjY2VlOWZmYjczOWRmYzIyN2NmNzdhMDYxODNjMjYuLmI4
OTViMmFhZmZlZGYxOGU1MWI0OGJiOTY1MGY1NDNmZDgyODg4OTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94LmgKQEAgLTM2LDMxICszNiwzNCBAQCBj
bGFzcyBEYXRhVmlldzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBXRUJDT1JFX0VY
UE9SVCBJU09Cb3ggeworY2xhc3MgSVNPQm94IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIH5JU09Cb3goKSA9IGRlZmF1bHQ7CisgICAgV0VCQ09S
RV9FWFBPUlQgSVNPQm94KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgSVNPQm94KGNvbnN0IElTT0Jv
eCYpOworICAgIElTT0JveChJU09Cb3gmJikgPSBkZWZhdWx0OworICAgIFdFQkNPUkVfRVhQT1JU
IHZpcnR1YWwgfklTT0JveCgpOworCisgICAgSVNPQm94JiBvcGVyYXRvcj0oY29uc3QgSVNPQm94
JikgPSBkZWZhdWx0OworICAgIElTT0JveCYgb3BlcmF0b3I9KElTT0JveCYmKSA9IGRlZmF1bHQ7
CiAKICAgICB1c2luZyBQZWVrUmVzdWx0ID0gc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8Rm91ckND
LCB1aW50NjRfdD4+OwogICAgIHN0YXRpYyBQZWVrUmVzdWx0IHBlZWtCb3goSlNDOjpEYXRhVmll
dyYsIHVuc2lnbmVkIG9mZnNldCk7Ci0gICAgc3RhdGljIHNpemVfdCBtaW5pbXVtQm94U2l6ZSgp
IHsgcmV0dXJuIDIgKiBzaXplb2YodWludDMyX3QpOyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBz
aXplX3QgbWluaW11bUJveFNpemUoKSB7IHJldHVybiAyICogc2l6ZW9mKHVpbnQzMl90KTsgfQog
Ci0gICAgYm9vbCByZWFkKEpTQzo6RGF0YVZpZXcmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29s
IHJlYWQoSlNDOjpEYXRhVmlldyYpOwogICAgIGJvb2wgcmVhZChKU0M6OkRhdGFWaWV3JiwgdW5z
aWduZWQmIG9mZnNldCk7CiAKICAgICB1aW50NjRfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9z
aXplOyB9Ci0gICAgY29uc3QgRm91ckNDJiBib3hUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9ib3hU
eXBlOyB9CisgICAgRm91ckNDIGJveFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2JveFR5cGU7IH0K
ICAgICBjb25zdCBWZWN0b3I8dWludDhfdD4mIGV4dGVuZGVkVHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fZXh0ZW5kZWRUeXBlOyB9CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGJvb2wgcGFyc2Uo
SlNDOjpEYXRhVmlldyYsIHVuc2lnbmVkJiBvZmZzZXQpOwogCi0gICAgZW51bSBFbmRpYW5uZXNz
IHsKLSAgICAgICAgQmlnRW5kaWFuLAotICAgICAgICBMaXR0bGVFbmRpYW4sCi0gICAgfTsKKyAg
ICBlbnVtIEVuZGlhbm5lc3MgeyBCaWdFbmRpYW4sIExpdHRsZUVuZGlhbiB9OwogCi0gICAgdGVt
cGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFIsIHR5cGVuYW1lIFY+CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgUiwgdHlwZW5hbWUgVj4KICAgICBzdGF0aWMgYm9vbCBjaGVj
a2VkUmVhZChSJiByZXR1cm5WYWx1ZSwgViYgdmlldywgdW5zaWduZWQmIG9mZnNldCwgRW5kaWFu
bmVzcyBlbmRpYW5uZXNzKQogICAgIHsKICAgICAgICAgYm9vbCByZWFkU3RhdHVzID0gZmFsc2U7
CkBAIC03NiwxMiArNzksMTYgQEAgcHJvdGVjdGVkOgogICAgIH0KIAogICAgIHVpbnQ2NF90IG1f
c2l6ZSB7IDAgfTsKLSAgICBGb3VyQ0MgbV9ib3hUeXBlIHsgdWludDMyX3QgeyAwIH0gfTsKKyAg
ICBGb3VyQ0MgbV9ib3hUeXBlOwogICAgIFZlY3Rvcjx1aW50OF90PiBtX2V4dGVuZGVkVHlwZTsK
IH07CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0Z1bGxCb3ggOiBwdWJsaWMgSVNPQm94IHsK
K2NsYXNzIElTT0Z1bGxCb3ggOiBwdWJsaWMgSVNPQm94IHsKIHB1YmxpYzoKKyAgICBXRUJDT1JF
X0VYUE9SVCBJU09GdWxsQm94KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgSVNPRnVsbEJveChjb25z
dCBJU09GdWxsQm94Jik7CisgICAgSVNPRnVsbEJveChJU09GdWxsQm94JiYpID0gZGVmYXVsdDsK
KwogICAgIHVpbnQ4X3QgdmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fdmVyc2lvbjsgfQogICAg
IHVpbnQzMl90IGZsYWdzKCkgY29uc3QgeyByZXR1cm4gbV9mbGFnczsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPT3JpZ2luYWxGb3JtYXRC
b3guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09PcmlnaW5hbEZv
cm1hdEJveC5oCmluZGV4IDIyMWNiNjc0MDc4MTRhY2QxNjNjOGQxYmQwN2FlZTUxMDcwZTQyYTAu
LjBkZWM0MWU1YzgyZTZhMWI2MTUwZTg1Y2Y5ZjgxYjBlMzk0YWY1ODAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09PcmlnaW5hbEZvcm1hdEJveC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09PcmlnaW5hbEZv
cm1hdEJveC5oCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgYm9vbCBw
YXJzZShKU0M6OkRhdGFWaWV3JiwgdW5zaWduZWQmIG9mZnNldCkgb3ZlcnJpZGU7CiAKLSAgICBG
b3VyQ0MgbV9kYXRhRm9ybWF0IHsgdWludDMyX3QgeyAwIH0gfTsKKyAgICBGb3VyQ0MgbV9kYXRh
Rm9ybWF0OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvaXNvL0lTT1NjaGVtZVR5cGVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2lzby9JU09TY2hlbWVUeXBlQm94LmgKaW5kZXggMWI2YWZjZTNjNWExZGMxN2M2Yzdj
NjZjNmQ0NWI1NTlmNzViZWU2Zi4uNzNlMjgzYzYzZWViZDU0YmE4ZjYxZTVhNjNiZjljYmMxM2Zi
ODZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lT
T1NjaGVtZVR5cGVCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9p
c28vSVNPU2NoZW1lVHlwZUJveC5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAgICAgYm9vbCBwYXJzZShKU0M6OkRhdGFWaWV3JiwgdW5zaWduZWQmIG9mZnNldCkgb3ZlcnJp
ZGU7CiAKLSAgICBGb3VyQ0MgbV9zY2hlbWVUeXBlIHsgdWludDMyX3QgeyAwIH0gfTsKKyAgICBG
b3VyQ0MgbV9zY2hlbWVUeXBlOwogICAgIHVpbnQzMl90IG1fc2NoZW1lVmVyc2lvbiB7IDAgfTsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9J
U09WVFRDdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1ZU
VEN1ZS5jcHAKaW5kZXggYTUyYmUyNGY2ZmE2YzA4YWY5YWM2NTQxYzM1NjUyNTI2ZDIwMmU3OC4u
ODE1YTY0NjY3N2ExOGI5MzY4MGNmOTc5OTUxMDAwOTM2MzVkODdhYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1ZUVEN1ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1ZUVEN1ZS5jcHAKQEAgLTkxLDYg
KzkxLDkgQEAgSVNPV2ViVlRUQ3VlOjpJU09XZWJWVFRDdWUoTWVkaWFUaW1lJiYgcHJlc2VudGF0
aW9uVGltZSwgTWVkaWFUaW1lJiYgZHVyYXRpb24sIFMKIHsKIH0KIAorSVNPV2ViVlRUQ3VlOjpJ
U09XZWJWVFRDdWUoSVNPV2ViVlRUQ3VlJiYpID0gZGVmYXVsdDsKK0lTT1dlYlZUVEN1ZTo6fklT
T1dlYlZUVEN1ZSgpID0gZGVmYXVsdDsKKwogYm9vbCBJU09XZWJWVFRDdWU6OnBhcnNlKERhdGFW
aWV3JiB2aWV3LCB1bnNpZ25lZCYgb2Zmc2V0KQogewogICAgIGlmICghSVNPQm94OjpwYXJzZSh2
aWV3LCBvZmZzZXQpKQpAQCAtMTEwLDcgKzExMyw3IEBAIGJvb2wgSVNPV2ViVlRUQ3VlOjpwYXJz
ZShEYXRhVmlldyYgdmlldywgdW5zaWduZWQmIG9mZnNldCkKICAgICAgICAgZWxzZSBpZiAoc3Ry
aW5nQm94LmJveFR5cGUoKSA9PSB2dHRQYXlsb2FkQm94VHlwZSgpKQogICAgICAgICAgICAgbV9j
dWVUZXh0ID0gc3RyaW5nQm94LmNvbnRlbnRzKCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
IExPRyhNZWRpYSwgIklTT1dlYlZUVEN1ZTo6SVNPV2ViVlRUQ3VlIC0gc2tpcHBpbmcgYm94IGlk
ID0gXCIlc1wiLCBzaXplID0gJXp1Iiwgc3RyaW5nQm94LmJveFR5cGUoKS50b1N0cmluZygpLnV0
ZjgoKS5kYXRhKCksIChzaXplX3Qpc3RyaW5nQm94LnNpemUoKSk7CisgICAgICAgICAgICBMT0co
TWVkaWEsICJJU09XZWJWVFRDdWU6OklTT1dlYlZUVEN1ZSAtIHNraXBwaW5nIGJveCBpZCA9IFwi
JXNcIiwgc2l6ZSA9ICUiIFBSSXU2NCwgc3RyaW5nQm94LmJveFR5cGUoKS5zdHJpbmcoKS5kYXRh
KCksIHN0cmluZ0JveC5zaXplKCkpOwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUuaAppbmRleCBl
Y2NhZWYzZGFhZWVjZjY5Y2FiMTAyNzU1M2ZmYzFjYzBlZTIwYTQ2Li4xYzliZDc2NzM5OTJlMTU0
NDZlN2ZmNGI2YjZhODBjODAyZTZmNzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRUQ3VlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvaXNvL0lTT1ZUVEN1ZS5oCkBAIC0zOSwxMCArMzksMTYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogLy8gTiBieXRlcyA6IEN1ZVNldHRpbmdzQm94IDogYm94IDogb3B0aW9uYWwK
IC8vIE4gYnl0ZXMgOiBDdWVQYXlsb2FkQm94IDogYm94IDogcmVxdWlyZWQKIAotY2xhc3MgV0VC
Q09SRV9FWFBPUlQgSVNPV2ViVlRUQ3VlIGZpbmFsIDogcHVibGljIElTT0JveCB7CitjbGFzcyBJ
U09XZWJWVFRDdWUgZmluYWwgOiBwdWJsaWMgSVNPQm94IHsKIHB1YmxpYzoKICAgICBJU09XZWJW
VFRDdWUoY29uc3QgTWVkaWFUaW1lJiBwcmVzZW50YXRpb25UaW1lLCBjb25zdCBNZWRpYVRpbWUm
IGR1cmF0aW9uKTsKLSAgICBJU09XZWJWVFRDdWUoTWVkaWFUaW1lJiYgcHJlc2VudGF0aW9uVGlt
ZSwgTWVkaWFUaW1lJiYgZHVyYXRpb24sIFN0cmluZyYmIGN1ZUlELCBTdHJpbmcmJiBjdWVUZXh0
LCBTdHJpbmcmJiBzZXR0aW5ncyA9IHsgfSwgU3RyaW5nJiYgc291cmNlSUQgPSB7IH0sIFN0cmlu
ZyYmIG9yaWdpbmFsU3RhcnRUaW1lID0geyB9KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBJU09XZWJW
VFRDdWUoTWVkaWFUaW1lJiYgcHJlc2VudGF0aW9uVGltZSwgTWVkaWFUaW1lJiYgZHVyYXRpb24s
IFN0cmluZyYmIGN1ZUlELCBTdHJpbmcmJiBjdWVUZXh0LCBTdHJpbmcmJiBzZXR0aW5ncyA9IHsg
fSwgU3RyaW5nJiYgc291cmNlSUQgPSB7IH0sIFN0cmluZyYmIG9yaWdpbmFsU3RhcnRUaW1lID0g
eyB9KTsKKyAgICBJU09XZWJWVFRDdWUoY29uc3QgSVNPV2ViVlRUQ3VlJikgPSBkZWZhdWx0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIElTT1dlYlZUVEN1ZShJU09XZWJWVFRDdWUmJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgfklTT1dlYlZUVEN1ZSgpOworCisgICAgSVNPV2ViVlRUQ3VlJiBvcGVyYXRv
cj0oY29uc3QgSVNPV2ViVlRUQ3VlJikgPSBkZWZhdWx0OworICAgIElTT1dlYlZUVEN1ZSYgb3Bl
cmF0b3I9KElTT1dlYlZUVEN1ZSYmKSA9IGRlZmF1bHQ7CiAKICAgICBzdGF0aWMgRm91ckNDIGJv
eFR5cGVOYW1lKCkgeyByZXR1cm4gInZ0dGMiOyB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>