<?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>222330</bug_id>
          
          <creation_ts>2021-02-23 13:19:12 -0800</creation_ts>
          <short_desc>[iOS] Reduce use of retain/release in WAKWindow and remove unneeded methods from that class</short_desc>
          <delta_ts>2021-02-28 12:56:47 -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>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>iPhone / iPad</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>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>cdumez</cc>
    
    <cc>sam</cc>
    
    <cc>tsavell</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1732669</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-02-23 13:19:12 -0800</bug_when>
    <thetext>Reduce use of retain/release in WAKWindow and remove unneeded methods from that class</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732710</commentid>
    <comment_count>1</comment_count>
      <attachid>421360</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-02-23 15:46:39 -0800</bug_when>
    <thetext>Created attachment 421360
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732749</commentid>
    <comment_count>2</comment_count>
      <attachid>421378</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-02-23 17:29:47 -0800</bug_when>
    <thetext>Created attachment 421378
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732763</commentid>
    <comment_count>3</comment_count>
      <attachid>421378</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-23 18:27:26 -0800</bug_when>
    <thetext>Comment on attachment 421378
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733141</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-24 16:35:48 -0800</bug_when>
    <thetext>Ready to cq+?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733147</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-02-24 17:03:48 -0800</bug_when>
    <thetext>I had missed your r=me!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733148</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-02-24 17:06:06 -0800</bug_when>
    <thetext>Committed r273462 (234543@main): &lt;https://commits.webkit.org/234543@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733149</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-02-24 17:07:20 -0800</bug_when>
    <thetext>&lt;rdar://problem/74721444&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733359</commentid>
    <comment_count>8</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2021-02-25 09:34:31 -0800</bug_when>
    <thetext>Reverted r273462 for reason:

Caused API build failures

Committed r273489 (234568@main): &lt;https://commits.webkit.org/234568@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733392</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-02-25 10:26:08 -0800</bug_when>
    <thetext>Will re-land this once we fix the header dependences in Apple’s internal build system.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1734294</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-28 12:56:45 -0800</bug_when>
    <thetext>Committed r273639: &lt;https://commits.webkit.org/r273639&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 421378.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421360</attachid>
            <date>2021-02-23 15:46:39 -0800</date>
            <delta_ts>2021-02-23 17:29:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222330-20210223154638.patch</filename>
            <type>text/plain</type>
            <size>24099</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMzA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjkxYmYzNTQ0YTQ3NTkz
OTNjZmJkNmZlYmRkMjJjNTczMzY0MzRlYi4uYmRkNzRlZDY5YTU0ZThkMWRmOGE2MTk0Y2RhZGY4
NTc0MjkxMTI3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDIxLTAyLTIzICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBSZWR1Y2UgdXNlIG9m
IHJldGFpbi9yZWxlYXNlIGluIFdBS1dpbmRvdyBhbmQgcmVtb3ZlIHVubmVlZGVkIG1ldGhvZHMg
ZnJvbSB0aGF0IGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjIzMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUuaDogVXNlIHByYWdtYSBvbmNl
LCByZW1vdmUgdW5uZWVkZWQgaW5jbHVkZXMsCisgICAgICAgIHR3ZWFrIGNvZGluZyBzdHlsZSBh
IGJpdCB0byBtYXRjaCBXZWJLaXQgc3RhbmRhcmQuIFJlbW92ZWQgaGFzUGVuZGluZ0RyYXcuCisg
ICAgICAgIGFkZGVkIFdFQkNPUkVfRVhQT1JUIHRvIHNldFRpbGVCb3JkZXJzVmlzaWJsZSBhbmQg
c2V0VGlsZVBhaW50Q291bnRlcnNWaXNpYmxlCisgICAgICAgIHNvIHRoZXkgY2FuIGJlIHVzZWQg
aW4gV2ViS2l0TGVnYWN5LgorCisgICAgICAgICogcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNo
ZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVRpbGVDYWNoZTo6aGFzUGVuZGluZ0RyYXcg
Y29uc3QpOiBEZWxldGVkLgorCisgICAgICAgICogcGxhdGZvcm0vaW9zL3dhay9XQUtXaW5kb3cu
aDogVXNlIHByYWdtYSBvbmNlLCByZW1vdmUgdW5uZWVkZWQgaW5jbHVkZXMsCisgICAgICAgIHR3
ZWFrIGNvZGluZyBzdHlsZSBhIGJpdCB0byBtYXRjaCBXZWJLaXQgc3RhbmRhcmQuIFJlbW92ZWQg
aGFzUGVuZGluZ0RyYXcsCisgICAgICAgIHNldFRpbGVDb250cm9sbGVyU2hvdWxkVXNlTG93U2Nh
bGVUaWxlcywgc2V0VGlsZUJvcmRlcnNWaXNpYmxlLAorICAgICAgICBzZXRUaWxlUGFpbnRDb3Vu
dHNWaXNpYmxlLCBzZXRBY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkLCBmcmVlemVWaXNpYmxlUmVj
dCwKKyAgICAgICAgYW5kIHVuZnJlZXplVmlzaWJsZVJlY3QuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9pb3Mvd2FrL1dBS1dpbmRvdy5tbTogUmVtb3ZlZCAidXNpbmcgbmFtZXNwYWNlIFdlYkNvcmUi
LgorICAgICAgICBSZW1vdmVkIHVudXNlZCBfV0FLS2V5V2luZG93IGdsb2JhbC4gQ29udmVydGVk
IGN1cnJlbnRFdmVudCBhbmQKKyAgICAgICAgZ09yaWVudGF0aW9uUHJvdmlkZXIgZ2xvYmFscyB0
byBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Pj4uCisgICAgICAgIChvcmllbnRhdGlvblByb3Zp
ZGVyKTogQWRkZWQKKyAgICAgICAgKGN1cnJlbnRFdmVudCk6IEFkZGVkLgorICAgICAgICAoLVtX
QUtXaW5kb3cgaXNLZXlXaW5kb3ddKTogUmVtb3ZlIGRlYWQgY29kZTsgdGhpcyBtZXRob2QgYWxy
ZWFkeSBhbHdheXMKKyAgICAgICAgcmV0dXJucyBZRVMuCisgICAgICAgICgtW1dBS1dpbmRvdyBt
YWtlS2V5V2luZG93XSk6IFJlbW92ZSBkZWFkIGNvZGUuIFRoaXMgbWV0aG9kIHdyb3RlIHRvIGEK
KyAgICAgICAgZ2xvYmFsIHRoYXQgd2FzIG5ldmVyIHJlYWQgYW55d2hlcmUuCisgICAgICAgICgt
W1dBS1dpbmRvdyBzZW5kRXZlbnRTeW5jaHJvbm91c2x5Ol0pOiBVc2UgdGhlIGN1cnJlbnRFdmVu
dCBmdW5jdGlvbgorICAgICAgICBhbmQgdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIGZhY3QgdGhhdCBp
dCdzIGEgUmV0YWluUHRyIHNvIHdlIGRvbid0IG5lZWQgYQorICAgICAgICBhIGxvY2FsIHZhcmlh
YmxlIG5hbWVkIGN1cnJlbnRFdmVudFByb3RlY3Rvci4KKyAgICAgICAgKC1bV0FLV2luZG93IGhh
c1BlbmRpbmdEcmF3XSk6IERlbGV0ZWQuIE5vIGNhbGxlcnMgZGVwZW5kIG9uIHRoaXMuCisgICAg
ICAgICgtW1dBS1dpbmRvdyB3aWxsUm90YXRlXSk6IFNldCBfZnJvemVuVmlzaWJsZVJlY3QgaGVy
ZSBkaXJlY3RseSBpbnN0ZWFkCisgICAgICAgIG9mIGNhbGxpbmcgYW5vZXRoZXIgbWV0aG9kIHRv
IGRvIHRoYXQuCisgICAgICAgICgtW1dBS1dpbmRvdyBkaWRSb3RhdGVdKTogRGl0dG8uCisgICAg
ICAgICgtW1dBS1dpbmRvdyBmcmVlemVWaXNpYmxlUmVjdF0pOiBEZWxldGVkLiBUaGUgbWV0aG9k
IGFib3ZlIHdhcyB0aGUgb25seQorICAgICAgICBjYWxsZXIgZm9yIHRoaXMgbWV0aG9kLgorICAg
ICAgICAoLVtXQUtXaW5kb3cgdW5mcmVlemVWaXNpYmxlUmVjdF0pOiBEaXR0by4KKyAgICAgICAg
KCtbV0FLV2luZG93IHNldE9yaWVudGF0aW9uUHJvdmlkZXI6XSk6IFVzZSB0aGUgb3JpZW50YXRp
b25Qcm92aWRlciBmdW5jdGlvbi4KKyAgICAgICAgTm90ZSwgdGhpcyBub3cgcmV0YWlucyB0aGUg
cGFzc2VkLWluIG9iamVjdC4gVGhpcyBpcyBzYWZlOyB0aGUgb25seSBjYWxsZXIKKyAgICAgICAg
cGFzc2VzIGluIGEgY2xhc3MsIHNvIHRoZXJlJ3Mgbm8gcmlzayBvZiBhIHJldGFpbiBjeWNsZS4K
KyAgICAgICAgKCtbV0FLV2luZG93IGhhc0xhbmRzY2FwZU9yaWVudGF0aW9uXSk6IFVzZSB0aGUg
b3JpZW50YXRpb25Qcm92aWRlciBmdW5jdGlvbi4KKyAgICAgICAgKC1bV0FLV2luZG93IHNldFRp
bGVCb3JkZXJzVmlzaWJsZTpdKTogRGVsZXRlZC4gVGhlIG9ubHkgY2FsbGVyIGZvciB0aGlzCisg
ICAgICAgIHdhcyBpbiBXZWJLaXRMZWdhY3ksIGFuZCByZWZhY3RvcmVkIHRvIHVzZSB0aGUgdGls
ZSBjYWNoZSBkaXJlY3RseS4KKyAgICAgICAgKC1bV0FLV2luZG93IHNldFRpbGVQYWludENvdW50
c1Zpc2libGU6XSk6IERpdHRvLgorICAgICAgICAoLVtXQUtXaW5kb3cgc2V0QWNjZWxlcmF0ZWRE
cmF3aW5nRW5hYmxlZDpdKTogRGl0dG8uCisgICAgICAgICgtW1dBS1dpbmRvdyBzZXRUaWxlQ29u
dHJvbGxlclNob3VsZFVzZUxvd1NjYWxlVGlsZXM6XSk6IERlbGV0ZWQuIE5vCisgICAgICAgIGNh
bGxlcnMgZGVwZW5kIG9uIHRoaXMuCisgICAgICAgICgrW1dBS1dpbmRvdyBjdXJyZW50RXZlbnRd
KTogVXNlIHRoZSBjdXJyZW50RXZlbnQgZnVuY3Rpb24uCisKIDIwMjEtMDItMjMgIFBoaWxpcHBl
IE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHU3RyZWFtZXJdIGZh
c3QvbWVkaWFzdHJlYW0vY2FwdHVyZVN0cmVhbS9jYW52YXMyZC5odG1sIGlzIGZsYWt5IHRpbWlu
ZyBvdXQgc2luY2UgR1N0cmVhbWVyIDEuMTggdXBkYXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cKaW5kZXggMWQ0ZGRkNDVkMDU3ZDg3N2M0NWI5ZmE1NDYzN2RjMGU5MzBlODNiMi4uZTRiNjAz
ZGQ0M2RiMjg4YzQ5OGZjZTdhNmM0ODFjMDhjNWU4NTU4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTAyLTIzICBEYXJpbiBBZGxlciAgPGRhcmlu
QGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBSZWR1Y2UgdXNlIG9mIHJldGFpbi9yZWxlYXNl
IGluIFdBS1dpbmRvdyBhbmQgcmVtb3ZlIHVubmVlZGVkIG1ldGhvZHMgZnJvbSB0aGF0IGNsYXNz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjIzMzAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZp
ZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfcHJlZmVyZW5jZXNDaGFuZ2VkOl0p
OiBDYWxsIExlZ2FjeVRpbGVDYWNoZSBmdW5jdGlvbnMgZGlyZWN0bHkgcmF0aGVyCisgICAgICAg
IHRoYW4gaW5kaXJlY3RpbmcgdGhyb3VnaCBXQUtXaW5kb3cgbWV0aG9kcy4KKyAgICAgICAgKC1b
V2ViVmlldyB2aWV3RGlkTW92ZVRvV2luZG93XSk6IERpdHRvLiBBbHNvIHR3ZWFrZWQgY29uZGl0
aW9uYWxzIGEgbGl0dGxlIGZvciBjbGFyaXR5LgorCiAyMDIxLTAyLTIyICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIGFkb3B0TlMoKSBhcyBzb29uIGFzIHdl
IFtbT2JqY0NsYXNzIGFsbG9jXSBpbml0XSB0byBhdm9pZCBsZWFrcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5oCmluZGV4IGNlYzQyMDg2YzI5NDA1MWQ1
MzBhODA5NzdmMGE0YzAwZDk0OWVkOTguLjlhMmFkYWJmZTAwNGRhMzlmNWMxYzgyYzMxOGJkYzgz
NTRiYmM0NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lU
aWxlQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNh
Y2hlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjMsMTUgKzIzLDEyIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAotI2lmbmRlZiBMZWdhY3lUaWxlQ2FjaGVfaAotI2RlZmluZSBMZWdhY3lU
aWxlQ2FjaGVfaAorI3ByYWdtYSBvbmNlCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCi0j
aW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJJbnRS
ZWN0LmgiCi0jaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVk
ZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAgLTQwLDI2ICsz
NywyMCBAQAogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAKLSNpZmRlZiBfX09CSkNfXwotQGNsYXNzIENBTGF5ZXI7Ci1AY2xhc3MgTGVnYWN5VGls
ZUNhY2hlVG9tYnN0b25lOwotQGNsYXNzIExlZ2FjeVRpbGVMYXllcjsKLUBjbGFzcyBXQUtXaW5k
b3c7Ci0jZWxzZQotY2xhc3MgQ0FMYXllcjsKLWNsYXNzIExlZ2FjeVRpbGVDYWNoZVRvbWJzdG9u
ZTsKLWNsYXNzIExlZ2FjeVRpbGVMYXllcjsKLWNsYXNzIFdBS1dpbmRvdzsKLSNlbmRpZgorT0JK
Q19DTEFTUyBDQUxheWVyOworT0JKQ19DTEFTUyBMZWdhY3lUaWxlQ2FjaGVUb21ic3RvbmU7CitP
QkpDX0NMQVNTIExlZ2FjeVRpbGVMYXllcjsKK09CSkNfQ0xBU1MgV0FLV2luZG93OwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbG9yOwogY2xhc3MgTGVnYWN5VGlsZUdyaWQ7CiAK
IGNsYXNzIExlZ2FjeVRpbGVDYWNoZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTGVnYWN5
VGlsZUNhY2hlKTsKIHB1YmxpYzoKLSAgICBMZWdhY3lUaWxlQ2FjaGUoV0FLV2luZG93Kik7Cisg
ICAgTGVnYWN5VGlsZUNhY2hlKFdBS1dpbmRvdyAqKTsKICAgICB+TGVnYWN5VGlsZUNhY2hlKCk7
CiAKICAgICBDR0Zsb2F0IHNjcmVlblNjYWxlKCkgY29uc3Q7CkBAIC04MCwxMCArNzEsMTAgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0Q29udGVudFJlcGxhY2VtZW50SW1hZ2UoUmV0YWluUHRyPENH
SW1hZ2VSZWY+KTsKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY29udGVudFJlcGxhY2VtZW50
SW1hZ2UoKSBjb25zdDsKIAotICAgIHZvaWQgc2V0VGlsZUJvcmRlcnNWaXNpYmxlKGJvb2wpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VGlsZUJvcmRlcnNWaXNpYmxlKGJvb2wpOwogICAg
IGJvb2wgdGlsZUJvcmRlcnNWaXNpYmxlKCkgY29uc3QgeyByZXR1cm4gbV90aWxlQm9yZGVyc1Zp
c2libGU7IH0KIAotICAgIHZvaWQgc2V0VGlsZVBhaW50Q291bnRlcnNWaXNpYmxlKGJvb2wpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VGlsZVBhaW50Q291bnRlcnNWaXNpYmxlKGJvb2wp
OwogICAgIGJvb2wgdGlsZVBhaW50Q291bnRlcnNWaXNpYmxlKCkgY29uc3QgeyByZXR1cm4gbV90
aWxlUGFpbnRDb3VudGVyc1Zpc2libGU7IH0KIAogICAgIHZvaWQgc2V0QWNjZWxlcmF0ZWREcmF3
aW5nRW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV9hY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkID0g
ZW5hYmxlZDsgfQpAQCAtMTEyLDE3ICsxMDMsMTUgQEAgcHVibGljOgogICAgIFRpbGluZ01vZGUg
dGlsaW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGlsaW5nTW9kZTsgfQogICAgIHZvaWQgc2V0
VGlsaW5nTW9kZShUaWxpbmdNb2RlKTsKIAotICAgIHR5cGVkZWYgZW51bSB7CisgICAgZW51bSBU
aWxpbmdEaXJlY3Rpb24gewogICAgICAgICBUaWxpbmdEaXJlY3Rpb25VcCwKICAgICAgICAgVGls
aW5nRGlyZWN0aW9uRG93biwKICAgICAgICAgVGlsaW5nRGlyZWN0aW9uTGVmdCwKICAgICAgICAg
VGlsaW5nRGlyZWN0aW9uUmlnaHQsCi0gICAgfSBUaWxpbmdEaXJlY3Rpb247CisgICAgfTsKICAg
ICB2b2lkIHNldFRpbGluZ0RpcmVjdGlvbihUaWxpbmdEaXJlY3Rpb24pOwogICAgIFRpbGluZ0Rp
cmVjdGlvbiB0aWxpbmdEaXJlY3Rpb24oKSBjb25zdDsKIAotICAgIGJvb2wgaGFzUGVuZGluZ0Ry
YXcoKSBjb25zdDsKLQogICAgIHZvaWQgaG9zdExheWVyU2l6ZUNoYW5nZWQoKTsKIAogICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNldExheWVyUG9vbENhcGFjaXR5KHVuc2lnbmVkKTsK
QEAgLTEzNSw3ICsxMjQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkb0xheW91dFRpbGVzKCk7CiAg
ICAgCiAgICAgZW51bSBjbGFzcyBEcmF3aW5nRmxhZ3MgeyBOb25lLCBTbmFwc2hvdHRpbmcgfTsK
LSAgICB2b2lkIGRyYXdMYXllcihMZWdhY3lUaWxlTGF5ZXIqLCBDR0NvbnRleHRSZWYsIERyYXdp
bmdGbGFncyk7CisgICAgdm9pZCBkcmF3TGF5ZXIoTGVnYWN5VGlsZUxheWVyICosIENHQ29udGV4
dFJlZiwgRHJhd2luZ0ZsYWdzKTsKICAgICB2b2lkIHByZXBhcmVUb0RyYXcoKTsKICAgICB2b2lk
IGZpbmlzaGVkQ3JlYXRpbmdUaWxlcyhib29sIGRpZENyZWF0ZVRpbGVzLCBib29sIGNyZWF0ZU1v
cmUpOwogICAgIEZsb2F0UmVjdCB2aXNpYmxlUmVjdEluTGF5ZXIoQ0FMYXllciAqKSBjb25zdDsK
QEAgLTE3NCwxMCArMTYzLDEwIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHRpbGVDcmVhdGlvblRp
bWVyRmlyZWQoKTsKIAotICAgIHZvaWQgZHJhd1JlcGxhY2VtZW50SW1hZ2UoTGVnYWN5VGlsZUxh
eWVyKiwgQ0dDb250ZXh0UmVmLCBDR0ltYWdlUmVmKTsKLSAgICB2b2lkIGRyYXdXaW5kb3dDb250
ZW50KExlZ2FjeVRpbGVMYXllciosIENHQ29udGV4dFJlZiwgQ0dSZWN0IGRpcnR5UmVjdCwgRHJh
d2luZ0ZsYWdzKTsKKyAgICB2b2lkIGRyYXdSZXBsYWNlbWVudEltYWdlKExlZ2FjeVRpbGVMYXll
ciAqLCBDR0NvbnRleHRSZWYsIENHSW1hZ2VSZWYpOworICAgIHZvaWQgZHJhd1dpbmRvd0NvbnRl
bnQoTGVnYWN5VGlsZUxheWVyICosIENHQ29udGV4dFJlZiwgQ0dSZWN0IGRpcnR5UmVjdCwgRHJh
d2luZ0ZsYWdzKTsKIAotICAgIFdBS1dpbmRvdyogbV93aW5kb3cgeyBudWxscHRyIH07CisgICAg
V0FLV2luZG93ICptX3dpbmRvdyB7IG51bGxwdHIgfTsKIAogICAgIFJldGFpblB0cjxDR0ltYWdl
UmVmPiBtX2NvbnRlbnRSZXBsYWNlbWVudEltYWdlOwogCkBAIC0yMjIsNSArMjExLDMgQEAgcHJp
dmF0ZToKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19G
QU1JTFkpCi0KLSNlbmRpZiAvLyBUaWxlQ2FjaGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0KaW5kZXggNTE1NTIyMjVlNjRiMTIwMjJkMzc1ODQ2
OGM2NzllZjA5YWVhNWZiZC4uZjExMTdmZjI0NzBjZmMyN2Y0NTkxM2E3NDgyNjI1ZTA5ZTczZWVj
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNo
ZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1t
CkBAIC00MywxMSArNDMsMTEgQEAKICNpbXBvcnQgPHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIu
aD4KICNpbXBvcnQgPHd0Zi9SQU1TaXplLmg+CiAKKy8vIEZJWE1FOiBUaGlzIHNob3VsZCBnbyBp
bnRvIGEgV0FLVmlld0ludGVybmFscy5oIGhlYWRlci4KIEBpbnRlcmZhY2UgV0FLVmlldyAoV2Vi
Vmlld0V4dHJhcykKLS0gKHZvaWQpX2Rpc3BhdGNoVGlsZURpZERyYXc6KENBTGF5ZXIqKXRpbGU7
CistICh2b2lkKV9kaXNwYXRjaFRpbGVEaWREcmF3OihDQUxheWVyICopdGlsZTsKIC0gKHZvaWQp
X3dpbGxTdGFydFNjcm9sbGluZ09yWm9vbWluZzsKIC0gKHZvaWQpX2RpZEZpbmlzaFNjcm9sbGlu
Z09yWm9vbWluZzsKLS0gKHZvaWQpX2Rpc3BhdGNoVGlsZURpZERyYXc7CiAtICh2b2lkKV9zY2hl
ZHVsZVJlbmRlcmluZ1VwZGF0ZUZvclBlbmRpbmdUaWxlQ2FjaGVSZXBhaW50OwogQGVuZAogCkBA
IC01NSwxMyArNTUsMTAgQEAgQGludGVyZmFjZSBMZWdhY3lUaWxlQ2FjaGVUb21ic3RvbmUgOiBO
U09iamVjdCB7CiAgICAgQk9PTCBkZWFkOwogfQogQHByb3BlcnR5KGdldHRlcj1pc0RlYWQpIEJP
T0wgZGVhZDsKLQogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gTGVnYWN5VGlsZUNhY2hlVG9tYnN0
b25lCi0KIEBzeW50aGVzaXplIGRlYWQ7Ci0KIEBlbmQKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtNzc1LDExICs3NzIsNiBAQCB2b2lkIExlZ2FjeVRpbGVDYWNoZTo6c2V0U3BlY3VsYXRpdmVU
aWxlQ3JlYXRpb25FbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICAgICAgbV90aWxlQ3JlYXRpb25U
aW1lci5zdGFydE9uZVNob3QoMF9zKTsKIH0KIAotYm9vbCBMZWdhY3lUaWxlQ2FjaGU6Omhhc1Bl
bmRpbmdEcmF3KCkgY29uc3QKLXsKLSAgICByZXR1cm4gIW1fc2F2ZWREaXNwbGF5UmVjdHMuaXNF
bXB0eSgpOwotfQotCiB2b2lkIExlZ2FjeVRpbGVDYWNoZTo6cHJlcGFyZVRvRHJhdygpCiB7CiAg
ICAgLy8gVGhpcyB3aWxsIHRyaWdnZXIgZG9jdW1lbnQgcmVsYXlvdXQgaWYgbmVlZGVkLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XQUtXaW5kb3cuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0FLV2luZG93LmgKaW5kZXggNGM4ZjYxZDll
M2JlOGZkOGI5N2I1ZDAyMmU3YjYwNTJkNTczMzA2Mi4uNzJiZDdhOWUxZDc1MGNmZTk2ODI2N2Nk
N2E4YThkN2IxMzE1Mzg5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L3dhay9XQUtXaW5kb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dB
S1dpbmRvdy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAw
NiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSwgMjAxMiwgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTIzLDEzICsyMywxMSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLSNpZm5kZWYgV0FLV2luZG93X2gKLSNkZWZpbmUgV0FLV2luZG93X2gKKyNwcmFnbWEgb25j
ZQogCiAjaWYgVEFSR0VUX09TX0lQSE9ORQogCiAjaW1wb3J0ICJXQUtBcHBLaXRTdHVicy5oIgot
I2ltcG9ydCAiV0FLUmVzcG9uZGVyLmgiCiAjaW1wb3J0ICJXQUtWaWV3LmgiCiAjaW1wb3J0ICJX
S0NvbnRlbnRPYnNlcnZhdGlvbi5oIgogI2ltcG9ydCA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGlj
cy5oPgpAQCAtNjgsNyArNjYsNyBAQCBleHRlcm4gTlNTdHJpbmcgKiBjb25zdCBXQUtXaW5kb3dW
aXNpYmlsaXR5RGlkQ2hhbmdlTm90aWZpY2F0aW9uOwogCiBXRUJDT1JFX0VYUE9SVCBAaW50ZXJm
YWNlIFdBS1dpbmRvdyA6IFdBS1Jlc3BvbmRlcgogewotICAgIENBTGF5ZXIqIF9ob3N0TGF5ZXI7
CisgICAgQ0FMYXllciAqX2hvc3RMYXllcjsKICAgICBMZWdhY3lUaWxlQ2FjaGUqIF90aWxlQ2Fj
aGU7CiAgICAgQ0dSZWN0IF9mcm96ZW5WaXNpYmxlUmVjdDsKICAgICBDQUxheWVyICpfcm9vdExh
eWVyOwpAQCAtMTAxLDIxICs5OSwyMSBAQCBXRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNlIFdBS1dp
bmRvdyA6IFdBS1Jlc3BvbmRlcgogCiAtIChDQUxheWVyKilob3N0TGF5ZXI7CiAKLS0gKHZvaWQp
c2V0Q29udGVudFZpZXc6KFdBS1ZpZXcgKilhVmlldzsKKy0gKHZvaWQpc2V0Q29udGVudFZpZXc6
KFdBS1ZpZXcgKil2aWV3OwogLSAoV0FLVmlldyAqKWNvbnRlbnRWaWV3OwogLSAodm9pZCljbG9z
ZTsKIC0gKFdBS1ZpZXcgKilmaXJzdFJlc3BvbmRlcjsKIAotLSAoTlNQb2ludCljb252ZXJ0QmFz
ZVRvU2NyZWVuOihOU1BvaW50KWFQb2ludDsKLS0gKE5TUG9pbnQpY29udmVydFNjcmVlblRvQmFz
ZTooTlNQb2ludClhUG9pbnQ7Ci0tIChOU1JlY3QpY29udmVydFJlY3RUb1NjcmVlbjooTlNSZWN0
KWFSZWN0OwotLSAoTlNSZWN0KWNvbnZlcnRSZWN0RnJvbVNjcmVlbjooTlNSZWN0KWFSZWN0Owor
LSAoTlNQb2ludCljb252ZXJ0QmFzZVRvU2NyZWVuOihOU1BvaW50KXBvaW50OworLSAoTlNQb2lu
dCljb252ZXJ0U2NyZWVuVG9CYXNlOihOU1BvaW50KXBvaW50OworLSAoTlNSZWN0KWNvbnZlcnRS
ZWN0VG9TY3JlZW46KE5TUmVjdClyZWN0OworLSAoTlNSZWN0KWNvbnZlcnRSZWN0RnJvbVNjcmVl
bjooTlNSZWN0KXJlY3Q7CiAtIChCT09MKWlzS2V5V2luZG93OwogLSAodm9pZCltYWtlS2V5V2lu
ZG93OwogLSAoQk9PTClpc1Zpc2libGU7CiAtICh2b2lkKXNldFZpc2libGU6KEJPT0wpdmlzaWJs
ZTsKIC0gKE5TU2VsZWN0aW9uRGlyZWN0aW9uKWtleVZpZXdTZWxlY3Rpb25EaXJlY3Rpb247Ci0t
IChCT09MKW1ha2VGaXJzdFJlc3BvbmRlcjooTlNSZXNwb25kZXIgKilhUmVzcG9uZGVyOworLSAo
Qk9PTCltYWtlRmlyc3RSZXNwb25kZXI6KE5TUmVzcG9uZGVyICopcmVzcG9uZGVyOwogLSAoV0FL
VmlldyAqKV9uZXdGaXJzdFJlc3BvbmRlckFmdGVyUmVzaWduaW5nIE5TX1JFVFVSTlNfTk9UX1JF
VEFJTkVEOwogLSAodm9pZClzZXRGcmFtZTooTlNSZWN0KWZyYW1lUmVjdCBkaXNwbGF5OihCT09M
KWZsYWc7CiAtIChDR1JlY3QpZnJhbWU7CkBAIC0xMjgsOSArMTI2LDkgQEAgV0VCQ09SRV9FWFBP
UlQgQGludGVyZmFjZSBXQUtXaW5kb3cgOiBXQUtSZXNwb25kZXIKIC0gKENHRmxvYXQpc2NyZWVu
U2NhbGU7CiAtICh2b2lkKXNldFJvb3RMYXllcjooQ0FMYXllciAqKWxheWVyOwogLSAoQ0FMYXll
ciAqKXJvb3RMYXllcjsKLS0gKHZvaWQpc2VuZEV2ZW50OihXZWJFdmVudCAqKWFuRXZlbnQ7Ci0t
ICh2b2lkKXNlbmRFdmVudFN5bmNocm9ub3VzbHk6KFdlYkV2ZW50ICopYW5FdmVudDsKLS0gKHZv
aWQpc2VuZE1vdXNlTW92ZUV2ZW50OihXZWJFdmVudCAqKWFuRXZlbnQgY29udGVudENoYW5nZToo
V0tDb250ZW50Q2hhbmdlICopYUNvbnRlbnRDaGFuZ2U7CistICh2b2lkKXNlbmRFdmVudDooV2Vi
RXZlbnQgKilldmVudDsKKy0gKHZvaWQpc2VuZEV2ZW50U3luY2hyb25vdXNseTooV2ViRXZlbnQg
KilldmVudDsKKy0gKHZvaWQpc2VuZE1vdXNlTW92ZUV2ZW50OihXZWJFdmVudCAqKWV2ZW50IGNv
bnRlbnRDaGFuZ2U6KFdLQ29udGVudENoYW5nZSAqKWNoYW5nZTsKIAogLSAodm9pZClzZXRJc0lu
U25hcHNob3R0aW5nUGFpbnQ6KEJPT0wpaXNJblNuYXBzaG90dGluZ1BhaW50OwogLSAoQk9PTClp
c0luU25hcHNob3R0aW5nUGFpbnQ7CkBAIC0xNjEsNyArMTU5LDYgQEAgV0VCQ09SRV9FWFBPUlQg
QGludGVyZmFjZSBXQUtXaW5kb3cgOiBXQUtSZXNwb25kZXIKIC0gKFdBS1dpbmRvd1RpbGluZ01v
ZGUpdGlsaW5nTW9kZTsKIC0gKHZvaWQpc2V0VGlsaW5nRGlyZWN0aW9uOihXQUtUaWxpbmdEaXJl
Y3Rpb24pdGlsaW5nRGlyZWN0aW9uOwogLSAoV0FLVGlsaW5nRGlyZWN0aW9uKXRpbGluZ0RpcmVj
dGlvbjsKLS0gKEJPT0wpaGFzUGVuZGluZ0RyYXc7CiAtICh2b2lkKWRpc3BsYXlSZWN0OihOU1Jl
Y3QpcmVjdDsKIC0gKHZvaWQpc2V0Wm9vbWVkT3V0VGlsZVNjYWxlOihmbG9hdClzY2FsZTsKIC0g
KGZsb2F0KXpvb21lZE91dFRpbGVTY2FsZTsKQEAgLTE2OSwxOCArMTY2LDEwIEBAIFdFQkNPUkVf
RVhQT1JUIEBpbnRlcmZhY2UgV0FLV2luZG93IDogV0FLUmVzcG9uZGVyCiAtIChmbG9hdCljdXJy
ZW50VGlsZVNjYWxlOwogLSAodm9pZClzZXRLZWVwc1pvb21lZE91dFRpbGVzOihCT09MKWtlZXBz
Wm9vbWVkT3V0VGlsZXM7CiAtIChCT09MKWtlZXBzWm9vbWVkT3V0VGlsZXM7Ci0tIChMZWdhY3lU
aWxlQ2FjaGUgKil0aWxlQ2FjaGU7Ci0KLS0gKHZvaWQpc2V0VGlsZUNvbnRyb2xsZXJTaG91bGRV
c2VMb3dTY2FsZVRpbGVzOihCT09MKWxvd1NjYWxlVGlsZXM7CistIChMZWdhY3lUaWxlQ2FjaGUq
KXRpbGVDYWNoZTsKIAogLSAodm9pZClkdW1wVGlsZXM7CiAKLS0gKHZvaWQpc2V0VGlsZUJvcmRl
cnNWaXNpYmxlOihCT09MKXZpc2libGU7Ci0tICh2b2lkKXNldFRpbGVQYWludENvdW50c1Zpc2li
bGU6KEJPT0wpdmlzaWJsZTsKLS0gKHZvaWQpc2V0QWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZDoo
Qk9PTCllbmFibGVkOwotCi0tICh2b2lkKWZyZWV6ZVZpc2libGVSZWN0OwotLSAodm9pZCl1bmZy
ZWV6ZVZpc2libGVSZWN0OwogLSAodm9pZCl3aWxsUm90YXRlOwogLSAodm9pZClkaWRSb3RhdGU7
CiAKQEAgLTE5Miw4ICsxODEsNyBAQCBXRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNlIFdBS1dpbmRv
dyA6IFdBS1Jlc3BvbmRlcgogKyAoV2ViRXZlbnQgKiljdXJyZW50RXZlbnQ7CiAKIC0gKE5TU3Ry
aW5nICopcmVjdXJzaXZlRGVzY3JpcHRpb247CisKIEBlbmQKIAogI2VuZGlmIC8vIFRBUkdFVF9P
U19JUEhPTkUKLQotI2VuZGlmIC8vIFdBS1dpbmRvd19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dBS1dpbmRvdy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy93YWsvV0FLV2luZG93Lm1tCmluZGV4IDc3YTk1MDlkMGE3NGZhZmMxYjAyODY4ODVk
MGMzOWIxMmNlYWI3YTEuLmJiOTM0ZGQ2YTIyZGI2MWQ1ZTJkNjQ5NGNjMzU0MjA2OTI3M2M5MzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0FLV2luZG93Lm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0FLV2luZG93Lm1tCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwg
MjAwOSwgMjAxMCwgMjAxMSwgMjAxMiwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDE5ICszNywyNyBA
QAogI2ltcG9ydCAiV0tWaWV3UHJpdmF0ZS5oIgogI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpD
b3JlLmg+CiAjaW1wb3J0IDx3dGYvTG9jay5oPgorI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKIFdFQkNPUkVfRVhQT1JUIE5TU3RyaW5n
ICogY29uc3QgV0FLV2luZG93U2NyZWVuU2NhbGVEaWRDaGFuZ2VOb3RpZmljYXRpb24gPSBAIldB
S1dpbmRvd1NjcmVlblNjYWxlRGlkQ2hhbmdlTm90aWZpY2F0aW9uIjsKIFdFQkNPUkVfRVhQT1JU
IE5TU3RyaW5nICogY29uc3QgV0FLV2luZG93VmlzaWJpbGl0eURpZENoYW5nZU5vdGlmaWNhdGlv
biA9IEAiV0FLV2luZG93VmlzaWJpbGl0eURpZENoYW5nZU5vdGlmaWNhdGlvbiI7CiAKLXVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwotCiBAcHJvdG9jb2wgT3JpZW50YXRpb25Qcm92aWRlcgogLSAo
Qk9PTCloYXNMYW5kc2NhcGVPcmllbnRhdGlvbjsKIEBlbmQKIAotc3RhdGljIFdBS1dpbmRvdyAq
X1dBS0tleVdpbmRvdyA9IG5pbDsgICAgICAgIC8vIHdlYWsKLXN0YXRpYyBXZWJFdmVudCAqY3Vy
cmVudEV2ZW50ID0gbmlsOwotc3RhdGljIGlkPE9yaWVudGF0aW9uUHJvdmlkZXI+IGdPcmllbnRh
dGlvblByb3ZpZGVyOworc3RhdGljIFJldGFpblB0cjxpZDxPcmllbnRhdGlvblByb3ZpZGVyPj4m
IG9yaWVudGF0aW9uUHJvdmlkZXIoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRh
aW5QdHI8aWQ8T3JpZW50YXRpb25Qcm92aWRlcj4+PiBwcm92aWRlcjsKKyAgICByZXR1cm4gcHJv
dmlkZXI7Cit9CisKK3N0YXRpYyBSZXRhaW5QdHI8V2ViRXZlbnQ+JiBjdXJyZW50RXZlbnQoKQor
eworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8V2ViRXZlbnQ+PiBldmVudDsK
KyAgICByZXR1cm4gZXZlbnQ7Cit9CiAKIEBpbXBsZW1lbnRhdGlvbiBXQUtXaW5kb3cgewogICAg
IExvY2sgX2V4cG9zZWRTY3JvbGxWaWV3UmVjdExvY2s7CkBAIC02OCw3ICs3Niw3IEBAIC0gKGlk
KWluaXRXaXRoTGF5ZXI6KENBTGF5ZXIgKilsYXllcgogCiAgICAgX2ZyYW1lID0gW19ob3N0TGF5
ZXIgZnJhbWVdOwogICAgIF9zY3JlZW5TY2FsZSA9IHNjcmVlblNjYWxlRmFjdG9yKCk7Ci0gICAg
CisKICAgICBfdGlsZUNhY2hlID0gbmV3IExlZ2FjeVRpbGVDYWNoZShzZWxmKTsKIAogICAgIF9m
cm96ZW5WaXNpYmxlUmVjdCA9IENHUmVjdE51bGw7CkBAIC03OCw3ICs4Niw3IEBAIC0gKGlkKWlu
aXRXaXRoTGF5ZXI6KENBTGF5ZXIgKilsYXllcgogICAgIHJldHVybiBzZWxmOwogfQogCi0vLyBU
aGlzIGlzIHVzZWQgZm9yIFdlYlZpZXdzIHRoYXQgYXJlIG5vdCBiYWNrZWQgYnkgdGhlIHRpbGUg
Y2FjaGUuIFRoZWlyIGNvbnRlbnQgbXVzdCBiZSBwYWludGVkIG1hbnVhbGx5LgorLy8gVGhpcyBp
cyB1c2VkIGZvciBXZWJWaWV3cyB0aGF0IGFyZSBub3QgYmFja2VkIGJ5IGEgdGlsZSBjYWNoZS4g
VGhlaXIgY29udGVudCBtdXN0IGJlIHBhaW50ZWQgbWFudWFsbHkuCiAtIChpZClpbml0V2l0aEZy
YW1lOihDR1JlY3QpZnJhbWUKIHsKICAgICBzZWxmID0gW3N1cGVyIGluaXRdOwpAQCAtMTAxLDE0
ICsxMDksMTQgQEAgLSAodm9pZClkZWFsbG9jCiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCi0t
ICh2b2lkKXNldENvbnRlbnRWaWV3OihXQUtWaWV3ICopYVZpZXcKKy0gKHZvaWQpc2V0Q29udGVu
dFZpZXc6KFdBS1ZpZXcgKil2aWV3CiB7Ci0gICAgW2FWaWV3IHJldGFpbl07CisgICAgW3ZpZXcg
cmV0YWluXTsKICAgICBbX2NvbnRlbnRWaWV3IHJlbGVhc2VdOwogCi0gICAgaWYgKGFWaWV3KQot
ICAgICAgICBfV0tWaWV3U2V0V2luZG93KFthVmlldyBfdmlld1JlZl0sIHNlbGYpOwotICAgIF9j
b250ZW50VmlldyA9IGFWaWV3OworICAgIGlmICh2aWV3KQorICAgICAgICBfV0tWaWV3U2V0V2lu
ZG93KFt2aWV3IF92aWV3UmVmXSwgc2VsZik7CisgICAgX2NvbnRlbnRWaWV3ID0gdmlldzsKIH0K
IAogLSAoV0FLVmlldyAqKWNvbnRlbnRWaWV3CkBAIC0xNzYsMTUgKzE4NCwxMSBAQCAtIChOU1Jl
Y3QpY29udmVydFJlY3RGcm9tU2NyZWVuOihOU1JlY3Qpc2NyZWVuUmVjdAogCiAtIChCT09MKWlz
S2V5V2luZG93CiB7Ci0gICAgcmV0dXJuIFlFUyB8fCBzZWxmID09IF9XQUtLZXlXaW5kb3c7IAor
ICAgIHJldHVybiBZRVM7CiB9CiAKIC0gKHZvaWQpbWFrZUtleVdpbmRvdwogewotICAgIGlmIChb
c2VsZiBpc0tleVdpbmRvd10pCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBfV0FLS2V5V2lu
ZG93ID0gc2VsZjsKIH0KIAogLSAoQk9PTClpc1Zpc2libGUKQEAgLTIyMSwxMiArMjI1LDEyIEBA
IC0gKEJPT0wpcmVzaWduRmlyc3RSZXNwb25kZXIKICAgICByZXR1cm4gTk87CiB9CiAKLS0gKEJP
T0wpbWFrZUZpcnN0UmVzcG9uZGVyOihOU1Jlc3BvbmRlciAqKWFSZXNwb25kZXIKKy0gKEJPT0wp
bWFrZUZpcnN0UmVzcG9uZGVyOihOU1Jlc3BvbmRlciAqKXJlc3BvbmRlcgogewotICAgIGlmICgh
W2FSZXNwb25kZXIgaXNLaW5kT2ZDbGFzczpbV0FLVmlldyBjbGFzc11dKQorICAgIGlmICghW3Jl
c3BvbmRlciBpc0tpbmRPZkNsYXNzOltXQUtWaWV3IGNsYXNzXV0pCiAgICAgICAgIHJldHVybiBO
TzsKIAotICAgIFdBS1ZpZXcgKnZpZXcgPSBzdGF0aWNfY2FzdDxXQUtWaWV3Kj4oYVJlc3BvbmRl
cik7CisgICAgV0FLVmlldyAqdmlldyA9IHN0YXRpY19jYXN0PFdBS1ZpZXcqPihyZXNwb25kZXIp
OwogICAgIEJPT0wgcmVzdWx0ID0gWUVTOwogICAgIGlmICh2aWV3ICE9IF9yZXNwb25kZXJWaWV3
KSB7CiAgICAgICAgIC8vIFdlIG5lZWQgdG8gaGFuZGxlIHRoZSBjYXNlIG9mIHRoZSB2aWV3IG5v
dCBhY2NlcHRpbmcgdG8gYmUgYSBmaXJzdCByZXNwb25kZXIsCkBAIC0zMjQsNTQgKzMyOCw1MiBA
QCAtIChDQUxheWVyICopcm9vdExheWVyCiAgICAgcmV0dXJuIF9yb290TGF5ZXI7CiB9CiAKLS0g
KHZvaWQpc2VuZEV2ZW50OihXZWJFdmVudCAqKWFuRXZlbnQKKy0gKHZvaWQpc2VuZEV2ZW50OihX
ZWJFdmVudCAqKWV2ZW50CiB7Ci0gICAgQVNTRVJUKGFuRXZlbnQpOworICAgIEFTU0VSVChldmVu
dCk7CiAgICAgV2ViVGhyZWFkUnVuKF57Ci0gICAgICAgIFtzZWxmIHNlbmRFdmVudFN5bmNocm9u
b3VzbHk6YW5FdmVudF07CisgICAgICAgIFtzZWxmIHNlbmRFdmVudFN5bmNocm9ub3VzbHk6ZXZl
bnRdOwogICAgIH0pOwogfQogCi0tICh2b2lkKXNlbmRFdmVudFN5bmNocm9ub3VzbHk6KFdlYkV2
ZW50ICopYW5FdmVudAorLSAodm9pZClzZW5kRXZlbnRTeW5jaHJvbm91c2x5OihXZWJFdmVudCAq
KWV2ZW50CiB7Ci0gICAgQVNTRVJUKGFuRXZlbnQpOworICAgIEFTU0VSVChldmVudCk7CiAgICAg
QVNTRVJUKFdlYlRocmVhZElzTG9ja2VkT3JEaXNhYmxlZCgpKTsKLSAgICBXZWJFdmVudCAqbGFz
dEV2ZW50ID0gY3VycmVudEV2ZW50OwotICAgIGF1dG8gY3VycmVudEV2ZW50UHJvdGVjdG9yID0g
cmV0YWluUHRyKGFuRXZlbnQpOwotICAgIGN1cnJlbnRFdmVudCA9IGFuRXZlbnQ7CisgICAgYXV0
byBsYXN0RXZlbnQgPSBzdGQ6OmV4Y2hhbmdlKGN1cnJlbnRFdmVudCgpLCBldmVudCk7CiAKLSAg
ICBzd2l0Y2ggKGFuRXZlbnQudHlwZSkgeworICAgIHN3aXRjaCAoZXZlbnQudHlwZSkgewogICAg
IGNhc2UgV2ViRXZlbnRNb3VzZU1vdmVkOgogICAgIGNhc2UgV2ViRXZlbnRTY3JvbGxXaGVlbDoK
LSAgICAgICAgaWYgKFdBS1ZpZXcgKmhpdFZpZXcgPSBbX2NvbnRlbnRWaWV3IGhpdFRlc3Q6KGFu
RXZlbnQubG9jYXRpb25JbldpbmRvdyldKQotICAgICAgICAgICAgW2hpdFZpZXcgaGFuZGxlRXZl
bnQ6YW5FdmVudF07CisgICAgICAgIGlmIChXQUtWaWV3ICpoaXRWaWV3ID0gW19jb250ZW50Vmll
dyBoaXRUZXN0OmV2ZW50LmxvY2F0aW9uSW5XaW5kb3ddKQorICAgICAgICAgICAgW2hpdFZpZXcg
aGFuZGxlRXZlbnQ6ZXZlbnRdOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgV2ViRXZlbnRN
b3VzZVVwOgogICAgIGNhc2UgV2ViRXZlbnRLZXlEb3duOgogICAgIGNhc2UgV2ViRXZlbnRLZXlV
cDoKICAgICBjYXNlIFdlYkV2ZW50VG91Y2hDaGFuZ2U6Ci0gICAgICAgIFtfcmVzcG9uZGVyVmll
dyBoYW5kbGVFdmVudDphbkV2ZW50XTsKKyAgICAgICAgW19yZXNwb25kZXJWaWV3IGhhbmRsZUV2
ZW50OmV2ZW50XTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFdlYkV2ZW50TW91c2VEb3du
OgogICAgIGNhc2UgV2ViRXZlbnRUb3VjaEJlZ2luOgogICAgIGNhc2UgV2ViRXZlbnRUb3VjaEVu
ZDoKICAgICBjYXNlIFdlYkV2ZW50VG91Y2hDYW5jZWw6Ci0gICAgICAgIGlmIChXQUtWaWV3ICpo
aXRWaWV3ID0gW19jb250ZW50VmlldyBoaXRUZXN0OihhbkV2ZW50LmxvY2F0aW9uSW5XaW5kb3cp
XSkgeworICAgICAgICBpZiAoV0FLVmlldyAqaGl0VmlldyA9IFtfY29udGVudFZpZXcgaGl0VGVz
dDpldmVudC5sb2NhdGlvbkluV2luZG93XSkgewogICAgICAgICAgICAgW3NlbGYgbWFrZUZpcnN0
UmVzcG9uZGVyOmhpdFZpZXddOwotICAgICAgICAgICAgW2hpdFZpZXcgaGFuZGxlRXZlbnQ6YW5F
dmVudF07CisgICAgICAgICAgICBbaGl0VmlldyBoYW5kbGVFdmVudDpldmVudF07CiAgICAgICAg
IH0KICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgY3VycmVudEV2ZW50ID0gbGFzdEV2ZW50
OworICAgIGN1cnJlbnRFdmVudCgpID0gV1RGTW92ZShsYXN0RXZlbnQpOwogfQogCi0tICh2b2lk
KXNlbmRNb3VzZU1vdmVFdmVudDooV2ViRXZlbnQgKilhbkV2ZW50IGNvbnRlbnRDaGFuZ2U6KFdL
Q29udGVudENoYW5nZSAqKWFDb250ZW50Q2hhbmdlCistICh2b2lkKXNlbmRNb3VzZU1vdmVFdmVu
dDooV2ViRXZlbnQgKilldmVudCBjb250ZW50Q2hhbmdlOihXS0NvbnRlbnRDaGFuZ2UgKilhQ29u
dGVudENoYW5nZQogewogICAgIFdlYlRocmVhZFJ1biheewotICAgICAgICBbc2VsZiBzZW5kRXZl
bnQ6YW5FdmVudF07CisgICAgICAgIFtzZWxmIHNlbmRFdmVudDpldmVudF07CiAKICAgICAgICAg
aWYgKGFDb250ZW50Q2hhbmdlKSB7CiAgICAgICAgICAgICAvLyBXZSBhbHdheXMgbWFrZSB0aGUg
ZGVjaXNpb24gYXN5bmNocm9ub3VzbHkuIFNlZSBFdmVudEhhbmRsZXI6Om1vdXNlTW92ZWQuCkBA
IC02MDAsMTMgKzYwMiw2IEBAIC0gKExlZ2FjeVRpbGVDYWNoZSopdGlsZUNhY2hlCiAgICAgcmV0
dXJuIF90aWxlQ2FjaGU7CiB9CiAKLS0gKEJPT0wpaGFzUGVuZGluZ0RyYXcKLXsKLSAgICBpZiAo
IV90aWxlQ2FjaGUpCi0gICAgICAgIHJldHVybiBOTzsKLSAgICAgcmV0dXJuIF90aWxlQ2FjaGUt
Pmhhc1BlbmRpbmdEcmF3KCk7Ci19Ci0KIC0gKHZvaWQpc2V0Q29udGVudFJlcGxhY2VtZW50SW1h
Z2U6KENHSW1hZ2VSZWYpY29udGVudFJlcGxhY2VtZW50SW1hZ2UKIHsKICAgICBpZiAoIV90aWxl
Q2FjaGUpCkBAIC02MjcsMjEgKzYyMiwxMSBAQCAtICh2b2lkKWRpc3BsYXlSZWN0OihOU1JlY3Qp
cmVjdAogfQogCiAtICh2b2lkKXdpbGxSb3RhdGUKLXsKLSAgICBbc2VsZiBmcmVlemVWaXNpYmxl
UmVjdF07Ci19Ci0KLS0gKHZvaWQpZGlkUm90YXRlCi17Ci0gICAgW3NlbGYgdW5mcmVlemVWaXNp
YmxlUmVjdF07Ci19Ci0KLS0gKHZvaWQpZnJlZXplVmlzaWJsZVJlY3QKIHsKICAgICBfZnJvemVu
VmlzaWJsZVJlY3QgPSBbc2VsZiB2aXNpYmxlUmVjdF07CiB9CiAKLS0gKHZvaWQpdW5mcmVlemVW
aXNpYmxlUmVjdAorLSAodm9pZClkaWRSb3RhdGUKIHsKICAgICBfZnJvemVuVmlzaWJsZVJlY3Qg
PSBDR1JlY3ROdWxsOwogfQpAQCAtNjQ5LDEzICs2MzQsMTMgQEAgLSAodm9pZCl1bmZyZWV6ZVZp
c2libGVSZWN0CiArICh2b2lkKXNldE9yaWVudGF0aW9uUHJvdmlkZXI6KGlkKXByb3ZpZGVyCiB7
CiAgICAgLy8gVGhpcyBpcyByZWFsbHkgdGhlIFVJV2ViRG9jdW1lbnRWaWV3IGNsYXNzIHRoYXQg
Y2FsbHMgaW50byBVSUFwcGxpY2F0aW9uIHRvIGdldCB0aGUgb3JpZW50YXRpb24uCi0gICAgZ09y
aWVudGF0aW9uUHJvdmlkZXIgPSBwcm92aWRlcjsKKyAgICBvcmllbnRhdGlvblByb3ZpZGVyKCkg
PSBwcm92aWRlcjsKIH0KIAogKyAoQk9PTCloYXNMYW5kc2NhcGVPcmllbnRhdGlvbgogewogICAg
IC8vIHRoaXMgc2hvdWxkIGJlIHBlcmZlY3RseSB0aHJlYWQgc2FmZQotICAgIHJldHVybiBbZ09y
aWVudGF0aW9uUHJvdmlkZXIgaGFzTGFuZHNjYXBlT3JpZW50YXRpb25dOworICAgIHJldHVybiBb
b3JpZW50YXRpb25Qcm92aWRlcigpIGhhc0xhbmRzY2FwZU9yaWVudGF0aW9uXTsKIH0KIAogLSAo
Q0FMYXllciopaG9zdExheWVyCkBAIC02NjMsMzAgKzY0OCw2IEBAIC0gKENBTGF5ZXIqKWhvc3RM
YXllcgogICAgIHJldHVybiBfaG9zdExheWVyOwogfQogCi0tICh2b2lkKXNldFRpbGVCb3JkZXJz
VmlzaWJsZTooQk9PTCl2aXNpYmxlCi17Ci0gICAgaWYgKCFfdGlsZUNhY2hlKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBfdGlsZUNhY2hlLT5zZXRUaWxlQm9yZGVyc1Zpc2libGUodmlzaWJsZSk7
Ci19Ci0KLS0gKHZvaWQpc2V0VGlsZVBhaW50Q291bnRzVmlzaWJsZTooQk9PTCl2aXNpYmxlCi17
Ci0gICAgaWYgKCFfdGlsZUNhY2hlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBfdGlsZUNhY2hl
LT5zZXRUaWxlUGFpbnRDb3VudGVyc1Zpc2libGUodmlzaWJsZSk7Ci19Ci0KLS0gKHZvaWQpc2V0
QWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZDooQk9PTCllbmFibGVkCi17Ci0gICAgaWYgKCFfdGls
ZUNhY2hlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBfdGlsZUNhY2hlLT5zZXRBY2NlbGVyYXRl
ZERyYXdpbmdFbmFibGVkKGVuYWJsZWQpOwotfQotCiAtICh2b2lkKWR1bXBUaWxlcwogewogICAg
IENHUmVjdCBzYXZlZEZyb3plblZpc2libGVSZWN0ID0gX2Zyb3plblZpc2libGVSZWN0OwpAQCAt
NzAxLDE0ICs2NjIsNiBAQCAtICh2b2lkKWR1bXBUaWxlcwogICAgIF90aWxlQ2FjaGUtPmR1bXBU
aWxlcygpOwogfQogCi0tICh2b2lkKXNldFRpbGVDb250cm9sbGVyU2hvdWxkVXNlTG93U2NhbGVU
aWxlczooQk9PTClsb3dTY2FsZVRpbGVzIAoteyAKLSAgICBpZiAoIV90aWxlQ2FjaGUpIAotICAg
ICAgICByZXR1cm47IAotCi0gICAgX3RpbGVDYWNoZS0+c2V0VGlsZUNvbnRyb2xsZXJTaG91bGRV
c2VMb3dTY2FsZVRpbGVzKGxvd1NjYWxlVGlsZXMpOyAKLX0gCi0KIC0gKE5TU3RyaW5nICopZGVz
Y3JpcHRpb24KIHsKICAgICBOU011dGFibGVTdHJpbmcgKmRlc2NyaXB0aW9uID0gW05TTXV0YWJs
ZVN0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPCVAOiBXQUs6ICVwOyAiLCBbc2VsZiBjbGFzc10s
IHNlbGZdOwpAQCAtNzI2LDcgKzY3OSw3IEBAIC0gKE5TU3RyaW5nICopZGVzY3JpcHRpb24KIAog
KyAoV2ViRXZlbnQgKiljdXJyZW50RXZlbnQKIHsKLSAgICByZXR1cm4gY3VycmVudEV2ZW50Owor
ICAgIHJldHVybiBjdXJyZW50RXZlbnQoKS5nZXQoKTsKIH0KIAogLSAoTlNTdHJpbmcgKilyZWN1
cnNpdmVEZXNjcmlwdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCmluZGV4IDkxN2EwNWQ4OTEwNzI5ZjQyZGFlMDZmNTlmYjUxYTM2Yjc4MWVjYmEuLjU0ZGQ2
ZGZiODU4ZWQyNjY3Y2MxYmUwMDMyNTQ5ZDc0ODUxMGRmZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTI5NjYsOSArMjk2NiwxMSBAQCAtICh2b2lk
KV9wcmVmZXJlbmNlc0NoYW5nZWQ6KFdlYlByZWZlcmVuY2VzICopcHJlZmVyZW5jZXMKICAgICAg
ICAgW3NlbGYgX3NldFpvb21NdWx0aXBsaWVyOl9wcml2YXRlLT56b29tTXVsdGlwbGllciBpc1Rl
eHRPbmx5Onpvb21zVGV4dE9ubHldOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBb
W3NlbGYgd2luZG93XSBzZXRUaWxlQm9yZGVyc1Zpc2libGU6W3ByZWZlcmVuY2VzIHNob3dEZWJ1
Z0JvcmRlcnNdXTsKLSAgICBbW3NlbGYgd2luZG93XSBzZXRUaWxlUGFpbnRDb3VudHNWaXNpYmxl
OltwcmVmZXJlbmNlcyBzaG93UmVwYWludENvdW50ZXJdXTsKLSAgICBbW3NlbGYgd2luZG93XSBz
ZXRBY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkOltwcmVmZXJlbmNlcyBhY2NlbGVyYXRlZERyYXdp
bmdFbmFibGVkXV07CisgICAgaWYgKGF1dG8gdGlsZUNhY2hlID0gc2VsZi53aW5kb3cudGlsZUNh
Y2hlKSB7CisgICAgICAgIHRpbGVDYWNoZS0+c2V0VGlsZUJvcmRlcnNWaXNpYmxlKHByZWZlcmVu
Y2VzLnNob3dEZWJ1Z0JvcmRlcnMpOworICAgICAgICB0aWxlQ2FjaGUtPnNldFRpbGVQYWludENv
dW50ZXJzVmlzaWJsZShwcmVmZXJlbmNlcy5zaG93UmVwYWludENvdW50ZXIpOworICAgICAgICB0
aWxlQ2FjaGUtPnNldEFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQocHJlZmVyZW5jZXMuYWNjZWxl
cmF0ZWREcmF3aW5nRW5hYmxlZCk7CisgICAgfQogICAgIFtXQUtWaWV3IF9zZXRJbnRlcnBvbGF0
aW9uUXVhbGl0eTpbcHJlZmVyZW5jZXMgX2ludGVycG9sYXRpb25RdWFsaXR5XV07CiAjZW5kaWYK
IH0KQEAgLTU2NDIsMTEgKzU2NDQsMTIgQEAgLSAodm9pZCl2aWV3RGlkTW92ZVRvV2luZG93CiAg
ICAgICAgIF9wcml2YXRlLT5wYWdlLT5zZXRJc0luV2luZG93KHRydWUpOwogCiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKLSAgICAgICAgV2ViUHJlZmVyZW5jZXMgKnByZWZlcmVuY2VzID0gW3Nl
bGYgcHJlZmVyZW5jZXNdOwotICAgICAgICBOU1dpbmRvdyAqd2luZG93ID0gW3NlbGYgd2luZG93
XTsKLSAgICAgICAgW3dpbmRvdyBzZXRUaWxlQm9yZGVyc1Zpc2libGU6W3ByZWZlcmVuY2VzIHNo
b3dEZWJ1Z0JvcmRlcnNdXTsKLSAgICAgICAgW3dpbmRvdyBzZXRUaWxlUGFpbnRDb3VudHNWaXNp
YmxlOltwcmVmZXJlbmNlcyBzaG93UmVwYWludENvdW50ZXJdXTsKLSAgICAgICAgW3dpbmRvdyBz
ZXRBY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkOltwcmVmZXJlbmNlcyBhY2NlbGVyYXRlZERyYXdp
bmdFbmFibGVkXV07CisgICAgICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBzZWxmLnByZWZlcmVuY2Vz
OworICAgICAgICBpZiAoYXV0byB0aWxlQ2FjaGUgPSBzZWxmLndpbmRvdy50aWxlQ2FjaGUpIHsK
KyAgICAgICAgICAgIHRpbGVDYWNoZS0+c2V0VGlsZUJvcmRlcnNWaXNpYmxlKHByZWZlcmVuY2Vz
LnNob3dEZWJ1Z0JvcmRlcnMpOworICAgICAgICAgICAgdGlsZUNhY2hlLT5zZXRUaWxlUGFpbnRD
b3VudGVyc1Zpc2libGUocHJlZmVyZW5jZXMuc2hvd1JlcGFpbnRDb3VudGVyKTsKKyAgICAgICAg
ICAgIHRpbGVDYWNoZS0+c2V0QWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZChwcmVmZXJlbmNlcy5h
Y2NlbGVyYXRlZERyYXdpbmdFbmFibGVkKTsKKyAgICAgICAgfQogI2VuZGlmCiAgICAgfQogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC01NjU0LDExICs1NjU3LDkgQEAgLSAodm9pZCl2aWV3
RGlkTW92ZVRvV2luZG93CiAgICAgICAgIFtfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXIg
cmVxdWVzdEhpZGVBbmRFeGl0RnVsbHNjcmVlbl07CiAjZW5kaWYKIAotI2lmICFQTEFURk9STShJ
T1NfRkFNSUxZKQorI2lmIFBMQVRGT1JNKE1BQykKICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0RGV2
aWNlU2NhbGVGYWN0b3IoW3NlbGYgX2RldmljZVNjYWxlRmFjdG9yXSk7Ci0jZW5kaWYKIAotI2lm
IFBMQVRGT1JNKE1BQykKICAgICBpZiAoX3ByaXZhdGUtPmltbWVkaWF0ZUFjdGlvbkNvbnRyb2xs
ZXIpIHsKICAgICAgICAgTlNJbW1lZGlhdGVBY3Rpb25HZXN0dXJlUmVjb2duaXplciAqcmVjb2du
aXplciA9IFtfcHJpdmF0ZS0+aW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlciBpbW1lZGlhdGVBY3Rp
b25SZWNvZ25pemVyXTsKICAgICAgICAgaWYgKFtzZWxmIHdpbmRvd10pIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421378</attachid>
            <date>2021-02-23 17:29:47 -0800</date>
            <delta_ts>2021-02-28 12:56:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222330-20210223172946.patch</filename>
            <type>text/plain</type>
            <size>24931</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMzU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjFhZWE2NTNlMTk5ZGEx
ZGFlZTE2ZDFkMDEzZWY3ZDQ3NmNiZWU1My4uZGYwN2E2NzlmYTVjOGZmNzcyYWQxMjZjNmM5OGFi
ZTY3NzRiMTJmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDIxLTAyLTIzICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBSZWR1Y2UgdXNlIG9m
IHJldGFpbi9yZWxlYXNlIGluIFdBS1dpbmRvdyBhbmQgcmVtb3ZlIHVubmVlZGVkIG1ldGhvZHMg
ZnJvbSB0aGF0IGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjIzMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUuaDogVXNlIHByYWdtYSBvbmNl
LCByZW1vdmUgdW5uZWVkZWQgaW5jbHVkZXMsCisgICAgICAgIHR3ZWFrIGNvZGluZyBzdHlsZSBh
IGJpdCB0byBtYXRjaCBXZWJLaXQgc3RhbmRhcmQuIFJlbW92ZWQgaGFzUGVuZGluZ0RyYXcuCisg
ICAgICAgIGFkZGVkIFdFQkNPUkVfRVhQT1JUIHRvIHNldFRpbGVCb3JkZXJzVmlzaWJsZSBhbmQg
c2V0VGlsZVBhaW50Q291bnRlcnNWaXNpYmxlCisgICAgICAgIHNvIHRoZXkgY2FuIGJlIHVzZWQg
aW4gV2ViS2l0TGVnYWN5LgorCisgICAgICAgICogcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNo
ZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVRpbGVDYWNoZTo6aGFzUGVuZGluZ0RyYXcg
Y29uc3QpOiBEZWxldGVkLgorCisgICAgICAgICogcGxhdGZvcm0vaW9zL3dhay9XQUtXaW5kb3cu
aDogVXNlIHByYWdtYSBvbmNlLCByZW1vdmUgdW5uZWVkZWQgaW5jbHVkZXMsCisgICAgICAgIHR3
ZWFrIGNvZGluZyBzdHlsZSBhIGJpdCB0byBtYXRjaCBXZWJLaXQgc3RhbmRhcmQuIFJlbW92ZWQg
aGFzUGVuZGluZ0RyYXcsCisgICAgICAgIHNldFRpbGVDb250cm9sbGVyU2hvdWxkVXNlTG93U2Nh
bGVUaWxlcywgc2V0VGlsZUJvcmRlcnNWaXNpYmxlLAorICAgICAgICBzZXRUaWxlUGFpbnRDb3Vu
dHNWaXNpYmxlLCBzZXRBY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkLCBmcmVlemVWaXNpYmxlUmVj
dCwKKyAgICAgICAgYW5kIHVuZnJlZXplVmlzaWJsZVJlY3QuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9pb3Mvd2FrL1dBS1dpbmRvdy5tbTogUmVtb3ZlZCAidXNpbmcgbmFtZXNwYWNlIFdlYkNvcmUi
LgorICAgICAgICBSZW1vdmVkIHVudXNlZCBfV0FLS2V5V2luZG93IGdsb2JhbC4gQ29udmVydGVk
IGN1cnJlbnRFdmVudCBhbmQKKyAgICAgICAgZ09yaWVudGF0aW9uUHJvdmlkZXIgZ2xvYmFscyB0
byBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Pj4uCisgICAgICAgIChvcmllbnRhdGlvblByb3Zp
ZGVyKTogQWRkZWQKKyAgICAgICAgKGN1cnJlbnRFdmVudCk6IEFkZGVkLgorICAgICAgICAoLVtX
QUtXaW5kb3cgaXNLZXlXaW5kb3ddKTogUmVtb3ZlIGRlYWQgY29kZTsgdGhpcyBtZXRob2QgYWxy
ZWFkeSBhbHdheXMKKyAgICAgICAgcmV0dXJucyBZRVMuCisgICAgICAgICgtW1dBS1dpbmRvdyBt
YWtlS2V5V2luZG93XSk6IFJlbW92ZSBkZWFkIGNvZGUuIFRoaXMgbWV0aG9kIHdyb3RlIHRvIGEK
KyAgICAgICAgZ2xvYmFsIHRoYXQgd2FzIG5ldmVyIHJlYWQgYW55d2hlcmUuCisgICAgICAgICgt
W1dBS1dpbmRvdyBzZW5kRXZlbnRTeW5jaHJvbm91c2x5Ol0pOiBVc2UgdGhlIGN1cnJlbnRFdmVu
dCBmdW5jdGlvbgorICAgICAgICBhbmQgdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIGZhY3QgdGhhdCBp
dCdzIGEgUmV0YWluUHRyIHNvIHdlIGRvbid0IG5lZWQgYQorICAgICAgICBhIGxvY2FsIHZhcmlh
YmxlIG5hbWVkIGN1cnJlbnRFdmVudFByb3RlY3Rvci4KKyAgICAgICAgKC1bV0FLV2luZG93IGhh
c1BlbmRpbmdEcmF3XSk6IERlbGV0ZWQuIE5vIGNhbGxlcnMgZGVwZW5kIG9uIHRoaXMuCisgICAg
ICAgICgtW1dBS1dpbmRvdyB3aWxsUm90YXRlXSk6IFNldCBfZnJvemVuVmlzaWJsZVJlY3QgaGVy
ZSBkaXJlY3RseSBpbnN0ZWFkCisgICAgICAgIG9mIGNhbGxpbmcgYW5vZXRoZXIgbWV0aG9kIHRv
IGRvIHRoYXQuCisgICAgICAgICgtW1dBS1dpbmRvdyBkaWRSb3RhdGVdKTogRGl0dG8uCisgICAg
ICAgICgtW1dBS1dpbmRvdyBmcmVlemVWaXNpYmxlUmVjdF0pOiBEZWxldGVkLiBUaGUgbWV0aG9k
IGFib3ZlIHdhcyB0aGUgb25seQorICAgICAgICBjYWxsZXIgZm9yIHRoaXMgbWV0aG9kLgorICAg
ICAgICAoLVtXQUtXaW5kb3cgdW5mcmVlemVWaXNpYmxlUmVjdF0pOiBEaXR0by4KKyAgICAgICAg
KCtbV0FLV2luZG93IHNldE9yaWVudGF0aW9uUHJvdmlkZXI6XSk6IFVzZSB0aGUgb3JpZW50YXRp
b25Qcm92aWRlciBmdW5jdGlvbi4KKyAgICAgICAgTm90ZSwgdGhpcyBub3cgcmV0YWlucyB0aGUg
cGFzc2VkLWluIG9iamVjdC4gVGhpcyBpcyBzYWZlOyB0aGUgb25seSBjYWxsZXIKKyAgICAgICAg
cGFzc2VzIGluIGEgY2xhc3MsIHNvIHRoZXJlJ3Mgbm8gcmlzayBvZiBhIHJldGFpbiBjeWNsZS4K
KyAgICAgICAgKCtbV0FLV2luZG93IGhhc0xhbmRzY2FwZU9yaWVudGF0aW9uXSk6IFVzZSB0aGUg
b3JpZW50YXRpb25Qcm92aWRlciBmdW5jdGlvbi4KKyAgICAgICAgKC1bV0FLV2luZG93IHNldFRp
bGVCb3JkZXJzVmlzaWJsZTpdKTogRGVsZXRlZC4gVGhlIG9ubHkgY2FsbGVyIGZvciB0aGlzCisg
ICAgICAgIHdhcyBpbiBXZWJLaXRMZWdhY3ksIGFuZCByZWZhY3RvcmVkIHRvIHVzZSB0aGUgdGls
ZSBjYWNoZSBkaXJlY3RseS4KKyAgICAgICAgKC1bV0FLV2luZG93IHNldFRpbGVQYWludENvdW50
c1Zpc2libGU6XSk6IERpdHRvLgorICAgICAgICAoLVtXQUtXaW5kb3cgc2V0QWNjZWxlcmF0ZWRE
cmF3aW5nRW5hYmxlZDpdKTogRGl0dG8uCisgICAgICAgICgtW1dBS1dpbmRvdyBzZXRUaWxlQ29u
dHJvbGxlclNob3VsZFVzZUxvd1NjYWxlVGlsZXM6XSk6IERlbGV0ZWQuIE5vCisgICAgICAgIGNh
bGxlcnMgZGVwZW5kIG9uIHRoaXMuCisgICAgICAgICgrW1dBS1dpbmRvdyBjdXJyZW50RXZlbnRd
KTogVXNlIHRoZSBjdXJyZW50RXZlbnQgZnVuY3Rpb24uCisKIDIwMjEtMDItMjMgIEZyZWRlcmlj
IFdhbmcgIDxmd2FuZ0BpZ2FsaWEuY29tPgogCiAgICAgICAgIE51bGxwdHIgY3Jhc2ggaW4gUmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnJlbW92ZVJlZHVuZGFudFN0eWxlc0FuZEtlZXBTdHlsZVNw
YW5JbmxpbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCAxZDRkZGQ0NWQwNTdkODc3
YzQ1YjlmYTU0NjM3ZGMwZTkzMGU4M2IyLi5lNGI2MDNkZDQzZGIyODhjNDk4ZmNlN2E2YzQ4MWMw
OGM1ZTg1NTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMjEtMDItMjMgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFtp
T1NdIFJlZHVjZSB1c2Ugb2YgcmV0YWluL3JlbGVhc2UgaW4gV0FLV2luZG93IGFuZCByZW1vdmUg
dW5uZWVkZWQgbWV0aG9kcyBmcm9tIHRoYXQgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjMzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAo
LVtXZWJWaWV3IF9wcmVmZXJlbmNlc0NoYW5nZWQ6XSk6IENhbGwgTGVnYWN5VGlsZUNhY2hlIGZ1
bmN0aW9ucyBkaXJlY3RseSByYXRoZXIKKyAgICAgICAgdGhhbiBpbmRpcmVjdGluZyB0aHJvdWdo
IFdBS1dpbmRvdyBtZXRob2RzLgorICAgICAgICAoLVtXZWJWaWV3IHZpZXdEaWRNb3ZlVG9XaW5k
b3ddKTogRGl0dG8uIEFsc28gdHdlYWtlZCBjb25kaXRpb25hbHMgYSBsaXR0bGUgZm9yIGNsYXJp
dHkuCisKIDIwMjEtMDItMjIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBVc2UgYWRvcHROUygpIGFzIHNvb24gYXMgd2UgW1tPYmpjQ2xhc3MgYWxsb2NdIGluaXRd
IHRvIGF2b2lkIGxlYWtzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
TGVnYWN5VGlsZUNhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGls
ZUNhY2hlLmgKaW5kZXggY2VjNDIwODZjMjk0MDUxZDUzMGE4MDk3N2YwYTRjMDBkOTQ5ZWQ5OC4u
OWEyYWRhYmZlMDA0ZGEzOWY1YzFjODJjMzE4YmRjODM1NGJiYzQ0OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUuaApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywxNSArMjMsMTIg
QEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIExl
Z2FjeVRpbGVDYWNoZV9oCi0jZGVmaW5lIExlZ2FjeVRpbGVDYWNoZV9oCisjcHJhZ21hIG9uY2UK
IAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKLSNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1
ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKLSNpbmNsdWRlICJJbnRTaXpl
LmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgpAQCAtNDAsMjYgKzM3LDIwIEBACiAjaW5jbHVkZSA8d3RmL1Ro
cmVhZGluZy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotI2lmZGVmIF9fT0JKQ19fCi1A
Y2xhc3MgQ0FMYXllcjsKLUBjbGFzcyBMZWdhY3lUaWxlQ2FjaGVUb21ic3RvbmU7Ci1AY2xhc3Mg
TGVnYWN5VGlsZUxheWVyOwotQGNsYXNzIFdBS1dpbmRvdzsKLSNlbHNlCi1jbGFzcyBDQUxheWVy
OwotY2xhc3MgTGVnYWN5VGlsZUNhY2hlVG9tYnN0b25lOwotY2xhc3MgTGVnYWN5VGlsZUxheWVy
OwotY2xhc3MgV0FLV2luZG93OwotI2VuZGlmCitPQkpDX0NMQVNTIENBTGF5ZXI7CitPQkpDX0NM
QVNTIExlZ2FjeVRpbGVDYWNoZVRvbWJzdG9uZTsKK09CSkNfQ0xBU1MgTGVnYWN5VGlsZUxheWVy
OworT0JKQ19DTEFTUyBXQUtXaW5kb3c7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3Mg
Q29sb3I7CiBjbGFzcyBMZWdhY3lUaWxlR3JpZDsKIAogY2xhc3MgTGVnYWN5VGlsZUNhY2hlIHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShMZWdhY3lUaWxlQ2FjaGUpOwogcHVibGljOgotICAg
IExlZ2FjeVRpbGVDYWNoZShXQUtXaW5kb3cqKTsKKyAgICBMZWdhY3lUaWxlQ2FjaGUoV0FLV2lu
ZG93ICopOwogICAgIH5MZWdhY3lUaWxlQ2FjaGUoKTsKIAogICAgIENHRmxvYXQgc2NyZWVuU2Nh
bGUoKSBjb25zdDsKQEAgLTgwLDEwICs3MSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDb250
ZW50UmVwbGFjZW1lbnRJbWFnZShSZXRhaW5QdHI8Q0dJbWFnZVJlZj4pOwogICAgIFJldGFpblB0
cjxDR0ltYWdlUmVmPiBjb250ZW50UmVwbGFjZW1lbnRJbWFnZSgpIGNvbnN0OwogCi0gICAgdm9p
ZCBzZXRUaWxlQm9yZGVyc1Zpc2libGUoYm9vbCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRUaWxlQm9yZGVyc1Zpc2libGUoYm9vbCk7CiAgICAgYm9vbCB0aWxlQm9yZGVyc1Zpc2libGUo
KSBjb25zdCB7IHJldHVybiBtX3RpbGVCb3JkZXJzVmlzaWJsZTsgfQogCi0gICAgdm9pZCBzZXRU
aWxlUGFpbnRDb3VudGVyc1Zpc2libGUoYm9vbCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRUaWxlUGFpbnRDb3VudGVyc1Zpc2libGUoYm9vbCk7CiAgICAgYm9vbCB0aWxlUGFpbnRDb3Vu
dGVyc1Zpc2libGUoKSBjb25zdCB7IHJldHVybiBtX3RpbGVQYWludENvdW50ZXJzVmlzaWJsZTsg
fQogCiAgICAgdm9pZCBzZXRBY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkg
eyBtX2FjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQgPSBlbmFibGVkOyB9CkBAIC0xMTIsMTcgKzEw
MywxNSBAQCBwdWJsaWM6CiAgICAgVGlsaW5nTW9kZSB0aWxpbmdNb2RlKCkgY29uc3QgeyByZXR1
cm4gbV90aWxpbmdNb2RlOyB9CiAgICAgdm9pZCBzZXRUaWxpbmdNb2RlKFRpbGluZ01vZGUpOwog
Ci0gICAgdHlwZWRlZiBlbnVtIHsKKyAgICBlbnVtIFRpbGluZ0RpcmVjdGlvbiB7CiAgICAgICAg
IFRpbGluZ0RpcmVjdGlvblVwLAogICAgICAgICBUaWxpbmdEaXJlY3Rpb25Eb3duLAogICAgICAg
ICBUaWxpbmdEaXJlY3Rpb25MZWZ0LAogICAgICAgICBUaWxpbmdEaXJlY3Rpb25SaWdodCwKLSAg
ICB9IFRpbGluZ0RpcmVjdGlvbjsKKyAgICB9OwogICAgIHZvaWQgc2V0VGlsaW5nRGlyZWN0aW9u
KFRpbGluZ0RpcmVjdGlvbik7CiAgICAgVGlsaW5nRGlyZWN0aW9uIHRpbGluZ0RpcmVjdGlvbigp
IGNvbnN0OwogCi0gICAgYm9vbCBoYXNQZW5kaW5nRHJhdygpIGNvbnN0OwotCiAgICAgdm9pZCBo
b3N0TGF5ZXJTaXplQ2hhbmdlZCgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQg
c2V0TGF5ZXJQb29sQ2FwYWNpdHkodW5zaWduZWQpOwpAQCAtMTM1LDcgKzEyNCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRvTGF5b3V0VGlsZXMoKTsKICAgICAKICAgICBlbnVtIGNsYXNzIERyYXdp
bmdGbGFncyB7IE5vbmUsIFNuYXBzaG90dGluZyB9OwotICAgIHZvaWQgZHJhd0xheWVyKExlZ2Fj
eVRpbGVMYXllciosIENHQ29udGV4dFJlZiwgRHJhd2luZ0ZsYWdzKTsKKyAgICB2b2lkIGRyYXdM
YXllcihMZWdhY3lUaWxlTGF5ZXIgKiwgQ0dDb250ZXh0UmVmLCBEcmF3aW5nRmxhZ3MpOwogICAg
IHZvaWQgcHJlcGFyZVRvRHJhdygpOwogICAgIHZvaWQgZmluaXNoZWRDcmVhdGluZ1RpbGVzKGJv
b2wgZGlkQ3JlYXRlVGlsZXMsIGJvb2wgY3JlYXRlTW9yZSk7CiAgICAgRmxvYXRSZWN0IHZpc2li
bGVSZWN0SW5MYXllcihDQUxheWVyICopIGNvbnN0OwpAQCAtMTc0LDEwICsxNjMsMTAgQEAgcHJp
dmF0ZToKIAogICAgIHZvaWQgdGlsZUNyZWF0aW9uVGltZXJGaXJlZCgpOwogCi0gICAgdm9pZCBk
cmF3UmVwbGFjZW1lbnRJbWFnZShMZWdhY3lUaWxlTGF5ZXIqLCBDR0NvbnRleHRSZWYsIENHSW1h
Z2VSZWYpOwotICAgIHZvaWQgZHJhd1dpbmRvd0NvbnRlbnQoTGVnYWN5VGlsZUxheWVyKiwgQ0dD
b250ZXh0UmVmLCBDR1JlY3QgZGlydHlSZWN0LCBEcmF3aW5nRmxhZ3MpOworICAgIHZvaWQgZHJh
d1JlcGxhY2VtZW50SW1hZ2UoTGVnYWN5VGlsZUxheWVyICosIENHQ29udGV4dFJlZiwgQ0dJbWFn
ZVJlZik7CisgICAgdm9pZCBkcmF3V2luZG93Q29udGVudChMZWdhY3lUaWxlTGF5ZXIgKiwgQ0dD
b250ZXh0UmVmLCBDR1JlY3QgZGlydHlSZWN0LCBEcmF3aW5nRmxhZ3MpOwogCi0gICAgV0FLV2lu
ZG93KiBtX3dpbmRvdyB7IG51bGxwdHIgfTsKKyAgICBXQUtXaW5kb3cgKm1fd2luZG93IHsgbnVs
bHB0ciB9OwogCiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fY29udGVudFJlcGxhY2VtZW50
SW1hZ2U7CiAKQEAgLTIyMiw1ICsyMTEsMyBAQCBwcml2YXRlOgogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKLQotI2VuZGlmIC8vIFRpbGVD
YWNoZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGls
ZUNhY2hlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5t
bQppbmRleCA1MTU1MjIyNWU2NGIxMjAyMmQzNzU4NDY4YzY3OWVmMDlhZWE1ZmJkLi5mMTExN2Zm
MjQ3MGNmYzI3ZjQ1OTEzYTc0ODI2MjVlMDllNzNlZWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0KQEAgLTQzLDExICs0MywxMSBAQAogI2lt
cG9ydCA8d3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5oPgogI2ltcG9ydCA8d3RmL1JBTVNpemUu
aD4KIAorLy8gRklYTUU6IFRoaXMgc2hvdWxkIGdvIGludG8gYSBXQUtWaWV3SW50ZXJuYWxzLmgg
aGVhZGVyLgogQGludGVyZmFjZSBXQUtWaWV3IChXZWJWaWV3RXh0cmFzKQotLSAodm9pZClfZGlz
cGF0Y2hUaWxlRGlkRHJhdzooQ0FMYXllciopdGlsZTsKKy0gKHZvaWQpX2Rpc3BhdGNoVGlsZURp
ZERyYXc6KENBTGF5ZXIgKil0aWxlOwogLSAodm9pZClfd2lsbFN0YXJ0U2Nyb2xsaW5nT3Jab29t
aW5nOwogLSAodm9pZClfZGlkRmluaXNoU2Nyb2xsaW5nT3Jab29taW5nOwotLSAodm9pZClfZGlz
cGF0Y2hUaWxlRGlkRHJhdzsKIC0gKHZvaWQpX3NjaGVkdWxlUmVuZGVyaW5nVXBkYXRlRm9yUGVu
ZGluZ1RpbGVDYWNoZVJlcGFpbnQ7CiBAZW5kCiAKQEAgLTU1LDEzICs1NSwxMCBAQCBAaW50ZXJm
YWNlIExlZ2FjeVRpbGVDYWNoZVRvbWJzdG9uZSA6IE5TT2JqZWN0IHsKICAgICBCT09MIGRlYWQ7
CiB9CiBAcHJvcGVydHkoZ2V0dGVyPWlzRGVhZCkgQk9PTCBkZWFkOwotCiBAZW5kCiAKIEBpbXBs
ZW1lbnRhdGlvbiBMZWdhY3lUaWxlQ2FjaGVUb21ic3RvbmUKLQogQHN5bnRoZXNpemUgZGVhZDsK
LQogQGVuZAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03NzUsMTEgKzc3Miw2IEBAIHZvaWQg
TGVnYWN5VGlsZUNhY2hlOjpzZXRTcGVjdWxhdGl2ZVRpbGVDcmVhdGlvbkVuYWJsZWQoYm9vbCBl
bmFibGVkKQogICAgICAgICBtX3RpbGVDcmVhdGlvblRpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOwog
fQogCi1ib29sIExlZ2FjeVRpbGVDYWNoZTo6aGFzUGVuZGluZ0RyYXcoKSBjb25zdAotewotICAg
IHJldHVybiAhbV9zYXZlZERpc3BsYXlSZWN0cy5pc0VtcHR5KCk7Ci19Ci0KIHZvaWQgTGVnYWN5
VGlsZUNhY2hlOjpwcmVwYXJlVG9EcmF3KCkKIHsKICAgICAvLyBUaGlzIHdpbGwgdHJpZ2dlciBk
b2N1bWVudCByZWxheW91dCBpZiBuZWVkZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3Mvd2FrL1dBS1dpbmRvdy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L3dhay9XQUtXaW5kb3cuaAppbmRleCA0YzhmNjFkOWUzYmU4ZmQ4Yjk3YjVkMDIyZTdiNjA1MmQ1
NzMzMDYyLi43MmJkN2E5ZTFkNzUwY2ZlOTY4MjY3Y2Q3YThhOGQ3YjEzMTUzODkwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dBS1dpbmRvdy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0FLV2luZG93LmgKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEw
LCAyMDExLCAyMDEyLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwNS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMTMgKzIzLDExIEBACiAgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXQUtXaW5kb3dfaAot
I2RlZmluZSBXQUtXaW5kb3dfaAorI3ByYWdtYSBvbmNlCiAKICNpZiBUQVJHRVRfT1NfSVBIT05F
CiAKICNpbXBvcnQgIldBS0FwcEtpdFN0dWJzLmgiCi0jaW1wb3J0ICJXQUtSZXNwb25kZXIuaCIK
ICNpbXBvcnQgIldBS1ZpZXcuaCIKICNpbXBvcnQgIldLQ29udGVudE9ic2VydmF0aW9uLmgiCiAj
aW1wb3J0IDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+CkBAIC02OCw3ICs2Niw3IEBAIGV4
dGVybiBOU1N0cmluZyAqIGNvbnN0IFdBS1dpbmRvd1Zpc2liaWxpdHlEaWRDaGFuZ2VOb3RpZmlj
YXRpb247CiAKIFdFQkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgV0FLV2luZG93IDogV0FLUmVzcG9u
ZGVyCiB7Ci0gICAgQ0FMYXllciogX2hvc3RMYXllcjsKKyAgICBDQUxheWVyICpfaG9zdExheWVy
OwogICAgIExlZ2FjeVRpbGVDYWNoZSogX3RpbGVDYWNoZTsKICAgICBDR1JlY3QgX2Zyb3plblZp
c2libGVSZWN0OwogICAgIENBTGF5ZXIgKl9yb290TGF5ZXI7CkBAIC0xMDEsMjEgKzk5LDIxIEBA
IFdFQkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgV0FLV2luZG93IDogV0FLUmVzcG9uZGVyCiAKIC0g
KENBTGF5ZXIqKWhvc3RMYXllcjsKIAotLSAodm9pZClzZXRDb250ZW50VmlldzooV0FLVmlldyAq
KWFWaWV3OworLSAodm9pZClzZXRDb250ZW50VmlldzooV0FLVmlldyAqKXZpZXc7CiAtIChXQUtW
aWV3ICopY29udGVudFZpZXc7CiAtICh2b2lkKWNsb3NlOwogLSAoV0FLVmlldyAqKWZpcnN0UmVz
cG9uZGVyOwogCi0tIChOU1BvaW50KWNvbnZlcnRCYXNlVG9TY3JlZW46KE5TUG9pbnQpYVBvaW50
OwotLSAoTlNQb2ludCljb252ZXJ0U2NyZWVuVG9CYXNlOihOU1BvaW50KWFQb2ludDsKLS0gKE5T
UmVjdCljb252ZXJ0UmVjdFRvU2NyZWVuOihOU1JlY3QpYVJlY3Q7Ci0tIChOU1JlY3QpY29udmVy
dFJlY3RGcm9tU2NyZWVuOihOU1JlY3QpYVJlY3Q7CistIChOU1BvaW50KWNvbnZlcnRCYXNlVG9T
Y3JlZW46KE5TUG9pbnQpcG9pbnQ7CistIChOU1BvaW50KWNvbnZlcnRTY3JlZW5Ub0Jhc2U6KE5T
UG9pbnQpcG9pbnQ7CistIChOU1JlY3QpY29udmVydFJlY3RUb1NjcmVlbjooTlNSZWN0KXJlY3Q7
CistIChOU1JlY3QpY29udmVydFJlY3RGcm9tU2NyZWVuOihOU1JlY3QpcmVjdDsKIC0gKEJPT0wp
aXNLZXlXaW5kb3c7CiAtICh2b2lkKW1ha2VLZXlXaW5kb3c7CiAtIChCT09MKWlzVmlzaWJsZTsK
IC0gKHZvaWQpc2V0VmlzaWJsZTooQk9PTCl2aXNpYmxlOwogLSAoTlNTZWxlY3Rpb25EaXJlY3Rp
b24pa2V5Vmlld1NlbGVjdGlvbkRpcmVjdGlvbjsKLS0gKEJPT0wpbWFrZUZpcnN0UmVzcG9uZGVy
OihOU1Jlc3BvbmRlciAqKWFSZXNwb25kZXI7CistIChCT09MKW1ha2VGaXJzdFJlc3BvbmRlcjoo
TlNSZXNwb25kZXIgKilyZXNwb25kZXI7CiAtIChXQUtWaWV3ICopX25ld0ZpcnN0UmVzcG9uZGVy
QWZ0ZXJSZXNpZ25pbmcgTlNfUkVUVVJOU19OT1RfUkVUQUlORUQ7CiAtICh2b2lkKXNldEZyYW1l
OihOU1JlY3QpZnJhbWVSZWN0IGRpc3BsYXk6KEJPT0wpZmxhZzsKIC0gKENHUmVjdClmcmFtZTsK
QEAgLTEyOCw5ICsxMjYsOSBAQCBXRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNlIFdBS1dpbmRvdyA6
IFdBS1Jlc3BvbmRlcgogLSAoQ0dGbG9hdClzY3JlZW5TY2FsZTsKIC0gKHZvaWQpc2V0Um9vdExh
eWVyOihDQUxheWVyICopbGF5ZXI7CiAtIChDQUxheWVyICopcm9vdExheWVyOwotLSAodm9pZClz
ZW5kRXZlbnQ6KFdlYkV2ZW50ICopYW5FdmVudDsKLS0gKHZvaWQpc2VuZEV2ZW50U3luY2hyb25v
dXNseTooV2ViRXZlbnQgKilhbkV2ZW50OwotLSAodm9pZClzZW5kTW91c2VNb3ZlRXZlbnQ6KFdl
YkV2ZW50ICopYW5FdmVudCBjb250ZW50Q2hhbmdlOihXS0NvbnRlbnRDaGFuZ2UgKilhQ29udGVu
dENoYW5nZTsKKy0gKHZvaWQpc2VuZEV2ZW50OihXZWJFdmVudCAqKWV2ZW50OworLSAodm9pZClz
ZW5kRXZlbnRTeW5jaHJvbm91c2x5OihXZWJFdmVudCAqKWV2ZW50OworLSAodm9pZClzZW5kTW91
c2VNb3ZlRXZlbnQ6KFdlYkV2ZW50ICopZXZlbnQgY29udGVudENoYW5nZTooV0tDb250ZW50Q2hh
bmdlICopY2hhbmdlOwogCiAtICh2b2lkKXNldElzSW5TbmFwc2hvdHRpbmdQYWludDooQk9PTClp
c0luU25hcHNob3R0aW5nUGFpbnQ7CiAtIChCT09MKWlzSW5TbmFwc2hvdHRpbmdQYWludDsKQEAg
LTE2MSw3ICsxNTksNiBAQCBXRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNlIFdBS1dpbmRvdyA6IFdB
S1Jlc3BvbmRlcgogLSAoV0FLV2luZG93VGlsaW5nTW9kZSl0aWxpbmdNb2RlOwogLSAodm9pZClz
ZXRUaWxpbmdEaXJlY3Rpb246KFdBS1RpbGluZ0RpcmVjdGlvbil0aWxpbmdEaXJlY3Rpb247CiAt
IChXQUtUaWxpbmdEaXJlY3Rpb24pdGlsaW5nRGlyZWN0aW9uOwotLSAoQk9PTCloYXNQZW5kaW5n
RHJhdzsKIC0gKHZvaWQpZGlzcGxheVJlY3Q6KE5TUmVjdClyZWN0OwogLSAodm9pZClzZXRab29t
ZWRPdXRUaWxlU2NhbGU6KGZsb2F0KXNjYWxlOwogLSAoZmxvYXQpem9vbWVkT3V0VGlsZVNjYWxl
OwpAQCAtMTY5LDE4ICsxNjYsMTAgQEAgV0VCQ09SRV9FWFBPUlQgQGludGVyZmFjZSBXQUtXaW5k
b3cgOiBXQUtSZXNwb25kZXIKIC0gKGZsb2F0KWN1cnJlbnRUaWxlU2NhbGU7CiAtICh2b2lkKXNl
dEtlZXBzWm9vbWVkT3V0VGlsZXM6KEJPT0wpa2VlcHNab29tZWRPdXRUaWxlczsKIC0gKEJPT0wp
a2VlcHNab29tZWRPdXRUaWxlczsKLS0gKExlZ2FjeVRpbGVDYWNoZSAqKXRpbGVDYWNoZTsKLQot
LSAodm9pZClzZXRUaWxlQ29udHJvbGxlclNob3VsZFVzZUxvd1NjYWxlVGlsZXM6KEJPT0wpbG93
U2NhbGVUaWxlczsKKy0gKExlZ2FjeVRpbGVDYWNoZSopdGlsZUNhY2hlOwogCiAtICh2b2lkKWR1
bXBUaWxlczsKIAotLSAodm9pZClzZXRUaWxlQm9yZGVyc1Zpc2libGU6KEJPT0wpdmlzaWJsZTsK
LS0gKHZvaWQpc2V0VGlsZVBhaW50Q291bnRzVmlzaWJsZTooQk9PTCl2aXNpYmxlOwotLSAodm9p
ZClzZXRBY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkOihCT09MKWVuYWJsZWQ7Ci0KLS0gKHZvaWQp
ZnJlZXplVmlzaWJsZVJlY3Q7Ci0tICh2b2lkKXVuZnJlZXplVmlzaWJsZVJlY3Q7CiAtICh2b2lk
KXdpbGxSb3RhdGU7CiAtICh2b2lkKWRpZFJvdGF0ZTsKIApAQCAtMTkyLDggKzE4MSw3IEBAIFdF
QkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgV0FLV2luZG93IDogV0FLUmVzcG9uZGVyCiArIChXZWJF
dmVudCAqKWN1cnJlbnRFdmVudDsKIAogLSAoTlNTdHJpbmcgKilyZWN1cnNpdmVEZXNjcmlwdGlv
bjsKKwogQGVuZAogCiAjZW5kaWYgLy8gVEFSR0VUX09TX0lQSE9ORQotCi0jZW5kaWYgLy8gV0FL
V2luZG93X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0FL
V2luZG93Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XQUtXaW5kb3cubW0K
aW5kZXggNzdhOTUwOWQwYTc0ZmFmYzFiMDI4Njg4NWQwYzM5YjEyY2VhYjdhMS4uNmNhZTA4YmEz
Yjk2M2QyNTk3MWRmYTNjNDNhYWRkMTExYzE1NTVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL3dhay9XQUtXaW5kb3cubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL3dhay9XQUtXaW5kb3cubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExLCAyMDEyLCAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
NS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMzcsMTkgKzM3LDI3IEBACiAjaW1wb3J0ICJXS1ZpZXdQcml2YXRl
LmgiCiAjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KICNpbXBvcnQgPHd0Zi9Mb2Nr
Lmg+CisjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5Q
dHIuaD4KIAogV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcgKiBjb25zdCBXQUtXaW5kb3dTY3JlZW5T
Y2FsZURpZENoYW5nZU5vdGlmaWNhdGlvbiA9IEAiV0FLV2luZG93U2NyZWVuU2NhbGVEaWRDaGFu
Z2VOb3RpZmljYXRpb24iOwogV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcgKiBjb25zdCBXQUtXaW5k
b3dWaXNpYmlsaXR5RGlkQ2hhbmdlTm90aWZpY2F0aW9uID0gQCJXQUtXaW5kb3dWaXNpYmlsaXR5
RGlkQ2hhbmdlTm90aWZpY2F0aW9uIjsKIAotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KIEBw
cm90b2NvbCBPcmllbnRhdGlvblByb3ZpZGVyCiAtIChCT09MKWhhc0xhbmRzY2FwZU9yaWVudGF0
aW9uOwogQGVuZAogCi1zdGF0aWMgV0FLV2luZG93ICpfV0FLS2V5V2luZG93ID0gbmlsOyAgICAg
ICAgLy8gd2Vhawotc3RhdGljIFdlYkV2ZW50ICpjdXJyZW50RXZlbnQgPSBuaWw7Ci1zdGF0aWMg
aWQ8T3JpZW50YXRpb25Qcm92aWRlcj4gZ09yaWVudGF0aW9uUHJvdmlkZXI7CitzdGF0aWMgUmV0
YWluUHRyPGlkPE9yaWVudGF0aW9uUHJvdmlkZXI+PiYgb3JpZW50YXRpb25Qcm92aWRlcigpCit7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxpZDxPcmllbnRhdGlvblByb3Zp
ZGVyPj4+IHByb3ZpZGVyOworICAgIHJldHVybiBwcm92aWRlcjsKK30KKworc3RhdGljIFJldGFp
blB0cjxXZWJFdmVudD4mIGN1cnJlbnRFdmVudCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFJldGFpblB0cjxXZWJFdmVudD4+IGV2ZW50OworICAgIHJldHVybiBldmVudDsKK30KIAog
QGltcGxlbWVudGF0aW9uIFdBS1dpbmRvdyB7CiAgICAgTG9jayBfZXhwb3NlZFNjcm9sbFZpZXdS
ZWN0TG9jazsKQEAgLTY3LDggKzc1LDggQEAgLSAoaWQpaW5pdFdpdGhMYXllcjooQ0FMYXllciAq
KWxheWVyCiAgICAgX2hvc3RMYXllciA9IFtsYXllciByZXRhaW5dOwogCiAgICAgX2ZyYW1lID0g
W19ob3N0TGF5ZXIgZnJhbWVdOwotICAgIF9zY3JlZW5TY2FsZSA9IHNjcmVlblNjYWxlRmFjdG9y
KCk7Ci0gICAgCisgICAgX3NjcmVlblNjYWxlID0gV2ViQ29yZTo6c2NyZWVuU2NhbGVGYWN0b3Io
KTsKKwogICAgIF90aWxlQ2FjaGUgPSBuZXcgTGVnYWN5VGlsZUNhY2hlKHNlbGYpOwogCiAgICAg
X2Zyb3plblZpc2libGVSZWN0ID0gQ0dSZWN0TnVsbDsKQEAgLTc4LDcgKzg2LDcgQEAgLSAoaWQp
aW5pdFdpdGhMYXllcjooQ0FMYXllciAqKWxheWVyCiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKLS8v
IFRoaXMgaXMgdXNlZCBmb3IgV2ViVmlld3MgdGhhdCBhcmUgbm90IGJhY2tlZCBieSB0aGUgdGls
ZSBjYWNoZS4gVGhlaXIgY29udGVudCBtdXN0IGJlIHBhaW50ZWQgbWFudWFsbHkuCisvLyBUaGlz
IGlzIHVzZWQgZm9yIFdlYlZpZXdzIHRoYXQgYXJlIG5vdCBiYWNrZWQgYnkgYSB0aWxlIGNhY2hl
LiBUaGVpciBjb250ZW50IG11c3QgYmUgcGFpbnRlZCBtYW51YWxseS4KIC0gKGlkKWluaXRXaXRo
RnJhbWU6KENHUmVjdClmcmFtZQogewogICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CkBAIC04Niw3
ICs5NCw3IEBAIC0gKGlkKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZQogICAgICAgICByZXR1
cm4gbmlsOwogCiAgICAgX2ZyYW1lID0gZnJhbWU7Ci0gICAgX3NjcmVlblNjYWxlID0gc2NyZWVu
U2NhbGVGYWN0b3IoKTsKKyAgICBfc2NyZWVuU2NhbGUgPSBXZWJDb3JlOjpzY3JlZW5TY2FsZUZh
Y3RvcigpOwogCiAgICAgX2V4cG9zZWRTY3JvbGxWaWV3UmVjdCA9IENHUmVjdE51bGw7CiAKQEAg
LTEwMSwxNCArMTA5LDE0IEBAIC0gKHZvaWQpZGVhbGxvYwogICAgIFtzdXBlciBkZWFsbG9jXTsK
IH0KIAotLSAodm9pZClzZXRDb250ZW50VmlldzooV0FLVmlldyAqKWFWaWV3CistICh2b2lkKXNl
dENvbnRlbnRWaWV3OihXQUtWaWV3ICopdmlldwogewotICAgIFthVmlldyByZXRhaW5dOworICAg
IFt2aWV3IHJldGFpbl07CiAgICAgW19jb250ZW50VmlldyByZWxlYXNlXTsKIAotICAgIGlmIChh
VmlldykKLSAgICAgICAgX1dLVmlld1NldFdpbmRvdyhbYVZpZXcgX3ZpZXdSZWZdLCBzZWxmKTsK
LSAgICBfY29udGVudFZpZXcgPSBhVmlldzsKKyAgICBpZiAodmlldykKKyAgICAgICAgX1dLVmll
d1NldFdpbmRvdyhbdmlldyBfdmlld1JlZl0sIHNlbGYpOworICAgIF9jb250ZW50VmlldyA9IHZp
ZXc7CiB9CiAKIC0gKFdBS1ZpZXcgKiljb250ZW50VmlldwpAQCAtMTc2LDE1ICsxODQsMTEgQEAg
LSAoTlNSZWN0KWNvbnZlcnRSZWN0RnJvbVNjcmVlbjooTlNSZWN0KXNjcmVlblJlY3QKIAogLSAo
Qk9PTClpc0tleVdpbmRvdwogewotICAgIHJldHVybiBZRVMgfHwgc2VsZiA9PSBfV0FLS2V5V2lu
ZG93OyAKKyAgICByZXR1cm4gWUVTOwogfQogCiAtICh2b2lkKW1ha2VLZXlXaW5kb3cKIHsKLSAg
ICBpZiAoW3NlbGYgaXNLZXlXaW5kb3ddKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgX1dB
S0tleVdpbmRvdyA9IHNlbGY7CiB9CiAKIC0gKEJPT0wpaXNWaXNpYmxlCkBAIC0yMjEsMTIgKzIy
NSwxMiBAQCAtIChCT09MKXJlc2lnbkZpcnN0UmVzcG9uZGVyCiAgICAgcmV0dXJuIE5POwogfQog
Ci0tIChCT09MKW1ha2VGaXJzdFJlc3BvbmRlcjooTlNSZXNwb25kZXIgKilhUmVzcG9uZGVyCist
IChCT09MKW1ha2VGaXJzdFJlc3BvbmRlcjooTlNSZXNwb25kZXIgKilyZXNwb25kZXIKIHsKLSAg
ICBpZiAoIVthUmVzcG9uZGVyIGlzS2luZE9mQ2xhc3M6W1dBS1ZpZXcgY2xhc3NdXSkKKyAgICBp
ZiAoIVtyZXNwb25kZXIgaXNLaW5kT2ZDbGFzczpbV0FLVmlldyBjbGFzc11dKQogICAgICAgICBy
ZXR1cm4gTk87CiAKLSAgICBXQUtWaWV3ICp2aWV3ID0gc3RhdGljX2Nhc3Q8V0FLVmlldyo+KGFS
ZXNwb25kZXIpOworICAgIFdBS1ZpZXcgKnZpZXcgPSBzdGF0aWNfY2FzdDxXQUtWaWV3Kj4ocmVz
cG9uZGVyKTsKICAgICBCT09MIHJlc3VsdCA9IFlFUzsKICAgICBpZiAodmlldyAhPSBfcmVzcG9u
ZGVyVmlldykgewogICAgICAgICAvLyBXZSBuZWVkIHRvIGhhbmRsZSB0aGUgY2FzZSBvZiB0aGUg
dmlldyBub3QgYWNjZXB0aW5nIHRvIGJlIGEgZmlyc3QgcmVzcG9uZGVyLApAQCAtMzI0LDU0ICsz
MjgsNTIgQEAgLSAoQ0FMYXllciAqKXJvb3RMYXllcgogICAgIHJldHVybiBfcm9vdExheWVyOwog
fQogCi0tICh2b2lkKXNlbmRFdmVudDooV2ViRXZlbnQgKilhbkV2ZW50CistICh2b2lkKXNlbmRF
dmVudDooV2ViRXZlbnQgKilldmVudAogewotICAgIEFTU0VSVChhbkV2ZW50KTsKKyAgICBBU1NF
UlQoZXZlbnQpOwogICAgIFdlYlRocmVhZFJ1biheewotICAgICAgICBbc2VsZiBzZW5kRXZlbnRT
eW5jaHJvbm91c2x5OmFuRXZlbnRdOworICAgICAgICBbc2VsZiBzZW5kRXZlbnRTeW5jaHJvbm91
c2x5OmV2ZW50XTsKICAgICB9KTsKIH0KIAotLSAodm9pZClzZW5kRXZlbnRTeW5jaHJvbm91c2x5
OihXZWJFdmVudCAqKWFuRXZlbnQKKy0gKHZvaWQpc2VuZEV2ZW50U3luY2hyb25vdXNseTooV2Vi
RXZlbnQgKilldmVudAogewotICAgIEFTU0VSVChhbkV2ZW50KTsKKyAgICBBU1NFUlQoZXZlbnQp
OwogICAgIEFTU0VSVChXZWJUaHJlYWRJc0xvY2tlZE9yRGlzYWJsZWQoKSk7Ci0gICAgV2ViRXZl
bnQgKmxhc3RFdmVudCA9IGN1cnJlbnRFdmVudDsKLSAgICBhdXRvIGN1cnJlbnRFdmVudFByb3Rl
Y3RvciA9IHJldGFpblB0cihhbkV2ZW50KTsKLSAgICBjdXJyZW50RXZlbnQgPSBhbkV2ZW50Owor
ICAgIGF1dG8gbGFzdEV2ZW50ID0gc3RkOjpleGNoYW5nZShjdXJyZW50RXZlbnQoKSwgZXZlbnQp
OwogCi0gICAgc3dpdGNoIChhbkV2ZW50LnR5cGUpIHsKKyAgICBzd2l0Y2ggKGV2ZW50LnR5cGUp
IHsKICAgICBjYXNlIFdlYkV2ZW50TW91c2VNb3ZlZDoKICAgICBjYXNlIFdlYkV2ZW50U2Nyb2xs
V2hlZWw6Ci0gICAgICAgIGlmIChXQUtWaWV3ICpoaXRWaWV3ID0gW19jb250ZW50VmlldyBoaXRU
ZXN0OihhbkV2ZW50LmxvY2F0aW9uSW5XaW5kb3cpXSkKLSAgICAgICAgICAgIFtoaXRWaWV3IGhh
bmRsZUV2ZW50OmFuRXZlbnRdOworICAgICAgICBpZiAoV0FLVmlldyAqaGl0VmlldyA9IFtfY29u
dGVudFZpZXcgaGl0VGVzdDpldmVudC5sb2NhdGlvbkluV2luZG93XSkKKyAgICAgICAgICAgIFto
aXRWaWV3IGhhbmRsZUV2ZW50OmV2ZW50XTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFdl
YkV2ZW50TW91c2VVcDoKICAgICBjYXNlIFdlYkV2ZW50S2V5RG93bjoKICAgICBjYXNlIFdlYkV2
ZW50S2V5VXA6CiAgICAgY2FzZSBXZWJFdmVudFRvdWNoQ2hhbmdlOgotICAgICAgICBbX3Jlc3Bv
bmRlclZpZXcgaGFuZGxlRXZlbnQ6YW5FdmVudF07CisgICAgICAgIFtfcmVzcG9uZGVyVmlldyBo
YW5kbGVFdmVudDpldmVudF07CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBXZWJFdmVudE1v
dXNlRG93bjoKICAgICBjYXNlIFdlYkV2ZW50VG91Y2hCZWdpbjoKICAgICBjYXNlIFdlYkV2ZW50
VG91Y2hFbmQ6CiAgICAgY2FzZSBXZWJFdmVudFRvdWNoQ2FuY2VsOgotICAgICAgICBpZiAoV0FL
VmlldyAqaGl0VmlldyA9IFtfY29udGVudFZpZXcgaGl0VGVzdDooYW5FdmVudC5sb2NhdGlvbklu
V2luZG93KV0pIHsKKyAgICAgICAgaWYgKFdBS1ZpZXcgKmhpdFZpZXcgPSBbX2NvbnRlbnRWaWV3
IGhpdFRlc3Q6ZXZlbnQubG9jYXRpb25JbldpbmRvd10pIHsKICAgICAgICAgICAgIFtzZWxmIG1h
a2VGaXJzdFJlc3BvbmRlcjpoaXRWaWV3XTsKLSAgICAgICAgICAgIFtoaXRWaWV3IGhhbmRsZUV2
ZW50OmFuRXZlbnRdOworICAgICAgICAgICAgW2hpdFZpZXcgaGFuZGxlRXZlbnQ6ZXZlbnRdOwog
ICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGN1cnJlbnRFdmVudCA9IGxh
c3RFdmVudDsKKyAgICBjdXJyZW50RXZlbnQoKSA9IFdURk1vdmUobGFzdEV2ZW50KTsKIH0KIAot
LSAodm9pZClzZW5kTW91c2VNb3ZlRXZlbnQ6KFdlYkV2ZW50ICopYW5FdmVudCBjb250ZW50Q2hh
bmdlOihXS0NvbnRlbnRDaGFuZ2UgKilhQ29udGVudENoYW5nZQorLSAodm9pZClzZW5kTW91c2VN
b3ZlRXZlbnQ6KFdlYkV2ZW50ICopZXZlbnQgY29udGVudENoYW5nZTooV0tDb250ZW50Q2hhbmdl
ICopYUNvbnRlbnRDaGFuZ2UKIHsKICAgICBXZWJUaHJlYWRSdW4oXnsKLSAgICAgICAgW3NlbGYg
c2VuZEV2ZW50OmFuRXZlbnRdOworICAgICAgICBbc2VsZiBzZW5kRXZlbnQ6ZXZlbnRdOwogCiAg
ICAgICAgIGlmIChhQ29udGVudENoYW5nZSkgewogICAgICAgICAgICAgLy8gV2UgYWx3YXlzIG1h
a2UgdGhlIGRlY2lzaW9uIGFzeW5jaHJvbm91c2x5LiBTZWUgRXZlbnRIYW5kbGVyOjptb3VzZU1v
dmVkLgpAQCAtNDE2LDcgKzQxOCw3IEBAIC0gKHZvaWQpbGF5b3V0VGlsZXNOb3dGb3JSZWN0OihD
R1JlY3QpcmVjdAogewogICAgIGlmICghX3RpbGVDYWNoZSkKICAgICAgICAgcmV0dXJuOwotICAg
IF90aWxlQ2FjaGUtPmxheW91dFRpbGVzTm93Rm9yUmVjdChlbmNsb3NpbmdJbnRSZWN0KHJlY3Qp
KTsKKyAgICBfdGlsZUNhY2hlLT5sYXlvdXRUaWxlc05vd0ZvclJlY3QoV2ViQ29yZTo6ZW5jbG9z
aW5nSW50UmVjdChyZWN0KSk7CiB9CiAKIC0gKHZvaWQpc2V0TmVlZHNEaXNwbGF5CkBAIC00MzAs
NyArNDMyLDcgQEAgLSAodm9pZClzZXROZWVkc0Rpc3BsYXlJblJlY3Q6KENHUmVjdClyZWN0CiB7
CiAgICAgaWYgKCFfdGlsZUNhY2hlKQogICAgICAgICByZXR1cm47Ci0gICAgX3RpbGVDYWNoZS0+
c2V0TmVlZHNEaXNwbGF5SW5SZWN0KGVuY2xvc2luZ0ludFJlY3QocmVjdCkpOworICAgIF90aWxl
Q2FjaGUtPnNldE5lZWRzRGlzcGxheUluUmVjdChXZWJDb3JlOjplbmNsb3NpbmdJbnRSZWN0KHJl
Y3QpKTsKIH0KIAogLSAoQk9PTCl0aWxlc09wYXF1ZQpAQCAtNjAwLDEzICs2MDIsNiBAQCAtIChM
ZWdhY3lUaWxlQ2FjaGUqKXRpbGVDYWNoZQogICAgIHJldHVybiBfdGlsZUNhY2hlOwogfQogCi0t
IChCT09MKWhhc1BlbmRpbmdEcmF3Ci17Ci0gICAgaWYgKCFfdGlsZUNhY2hlKQotICAgICAgICBy
ZXR1cm4gTk87Ci0gICAgIHJldHVybiBfdGlsZUNhY2hlLT5oYXNQZW5kaW5nRHJhdygpOwotfQot
CiAtICh2b2lkKXNldENvbnRlbnRSZXBsYWNlbWVudEltYWdlOihDR0ltYWdlUmVmKWNvbnRlbnRS
ZXBsYWNlbWVudEltYWdlCiB7CiAgICAgaWYgKCFfdGlsZUNhY2hlKQpAQCAtNjI3LDIxICs2MjIs
MTEgQEAgLSAodm9pZClkaXNwbGF5UmVjdDooTlNSZWN0KXJlY3QKIH0KIAogLSAodm9pZCl3aWxs
Um90YXRlCi17Ci0gICAgW3NlbGYgZnJlZXplVmlzaWJsZVJlY3RdOwotfQotCi0tICh2b2lkKWRp
ZFJvdGF0ZQotewotICAgIFtzZWxmIHVuZnJlZXplVmlzaWJsZVJlY3RdOwotfQotCi0tICh2b2lk
KWZyZWV6ZVZpc2libGVSZWN0CiB7CiAgICAgX2Zyb3plblZpc2libGVSZWN0ID0gW3NlbGYgdmlz
aWJsZVJlY3RdOwogfQogCi0tICh2b2lkKXVuZnJlZXplVmlzaWJsZVJlY3QKKy0gKHZvaWQpZGlk
Um90YXRlCiB7CiAgICAgX2Zyb3plblZpc2libGVSZWN0ID0gQ0dSZWN0TnVsbDsKIH0KQEAgLTY0
OSwxMyArNjM0LDEzIEBAIC0gKHZvaWQpdW5mcmVlemVWaXNpYmxlUmVjdAogKyAodm9pZClzZXRP
cmllbnRhdGlvblByb3ZpZGVyOihpZClwcm92aWRlcgogewogICAgIC8vIFRoaXMgaXMgcmVhbGx5
IHRoZSBVSVdlYkRvY3VtZW50VmlldyBjbGFzcyB0aGF0IGNhbGxzIGludG8gVUlBcHBsaWNhdGlv
biB0byBnZXQgdGhlIG9yaWVudGF0aW9uLgotICAgIGdPcmllbnRhdGlvblByb3ZpZGVyID0gcHJv
dmlkZXI7CisgICAgb3JpZW50YXRpb25Qcm92aWRlcigpID0gcHJvdmlkZXI7CiB9CiAKICsgKEJP
T0wpaGFzTGFuZHNjYXBlT3JpZW50YXRpb24KIHsKICAgICAvLyB0aGlzIHNob3VsZCBiZSBwZXJm
ZWN0bHkgdGhyZWFkIHNhZmUKLSAgICByZXR1cm4gW2dPcmllbnRhdGlvblByb3ZpZGVyIGhhc0xh
bmRzY2FwZU9yaWVudGF0aW9uXTsKKyAgICByZXR1cm4gW29yaWVudGF0aW9uUHJvdmlkZXIoKSBo
YXNMYW5kc2NhcGVPcmllbnRhdGlvbl07CiB9CiAKIC0gKENBTGF5ZXIqKWhvc3RMYXllcgpAQCAt
NjYzLDMwICs2NDgsNiBAQCAtIChDQUxheWVyKilob3N0TGF5ZXIKICAgICByZXR1cm4gX2hvc3RM
YXllcjsKIH0KIAotLSAodm9pZClzZXRUaWxlQm9yZGVyc1Zpc2libGU6KEJPT0wpdmlzaWJsZQot
ewotICAgIGlmICghX3RpbGVDYWNoZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgX3RpbGVDYWNo
ZS0+c2V0VGlsZUJvcmRlcnNWaXNpYmxlKHZpc2libGUpOwotfQotCi0tICh2b2lkKXNldFRpbGVQ
YWludENvdW50c1Zpc2libGU6KEJPT0wpdmlzaWJsZQotewotICAgIGlmICghX3RpbGVDYWNoZSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgX3RpbGVDYWNoZS0+c2V0VGlsZVBhaW50Q291bnRlcnNW
aXNpYmxlKHZpc2libGUpOwotfQotCi0tICh2b2lkKXNldEFjY2VsZXJhdGVkRHJhd2luZ0VuYWJs
ZWQ6KEJPT0wpZW5hYmxlZAotewotICAgIGlmICghX3RpbGVDYWNoZSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgX3RpbGVDYWNoZS0+c2V0QWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZChlbmFibGVk
KTsKLX0KLQogLSAodm9pZClkdW1wVGlsZXMKIHsKICAgICBDR1JlY3Qgc2F2ZWRGcm96ZW5WaXNp
YmxlUmVjdCA9IF9mcm96ZW5WaXNpYmxlUmVjdDsKQEAgLTcwMSwxNCArNjYyLDYgQEAgLSAodm9p
ZClkdW1wVGlsZXMKICAgICBfdGlsZUNhY2hlLT5kdW1wVGlsZXMoKTsKIH0KIAotLSAodm9pZClz
ZXRUaWxlQ29udHJvbGxlclNob3VsZFVzZUxvd1NjYWxlVGlsZXM6KEJPT0wpbG93U2NhbGVUaWxl
cyAKLXsgCi0gICAgaWYgKCFfdGlsZUNhY2hlKSAKLSAgICAgICAgcmV0dXJuOyAKLQotICAgIF90
aWxlQ2FjaGUtPnNldFRpbGVDb250cm9sbGVyU2hvdWxkVXNlTG93U2NhbGVUaWxlcyhsb3dTY2Fs
ZVRpbGVzKTsgCi19IAotCiAtIChOU1N0cmluZyAqKWRlc2NyaXB0aW9uCiB7CiAgICAgTlNNdXRh
YmxlU3RyaW5nICpkZXNjcmlwdGlvbiA9IFtOU011dGFibGVTdHJpbmcgc3RyaW5nV2l0aEZvcm1h
dDpAIjwlQDogV0FLOiAlcDsgIiwgW3NlbGYgY2xhc3NdLCBzZWxmXTsKQEAgLTcyNiw3ICs2Nzks
NyBAQCAtIChOU1N0cmluZyAqKWRlc2NyaXB0aW9uCiAKICsgKFdlYkV2ZW50ICopY3VycmVudEV2
ZW50CiB7Ci0gICAgcmV0dXJuIGN1cnJlbnRFdmVudDsKKyAgICByZXR1cm4gY3VycmVudEV2ZW50
KCkuZ2V0KCk7CiB9CiAKIC0gKE5TU3RyaW5nICopcmVjdXJzaXZlRGVzY3JpcHRpb24KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA5MTdhMDVkODkxMDcy
OWY0MmRhZTA2ZjU5ZmI1MWEzNmI3ODFlY2JhLi41NGRkNmRmYjg1OGVkMjY2N2NjMWJlMDAzMjU0
OWQ3NDg1MTBkZmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCkBAIC0yOTY2LDkgKzI5NjYsMTEgQEAgLSAodm9pZClfcHJlZmVyZW5jZXNDaGFuZ2VkOihX
ZWJQcmVmZXJlbmNlcyAqKXByZWZlcmVuY2VzCiAgICAgICAgIFtzZWxmIF9zZXRab29tTXVsdGlw
bGllcjpfcHJpdmF0ZS0+em9vbU11bHRpcGxpZXIgaXNUZXh0T25seTp6b29tc1RleHRPbmx5XTsK
IAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgW1tzZWxmIHdpbmRvd10gc2V0VGlsZUJv
cmRlcnNWaXNpYmxlOltwcmVmZXJlbmNlcyBzaG93RGVidWdCb3JkZXJzXV07Ci0gICAgW1tzZWxm
IHdpbmRvd10gc2V0VGlsZVBhaW50Q291bnRzVmlzaWJsZTpbcHJlZmVyZW5jZXMgc2hvd1JlcGFp
bnRDb3VudGVyXV07Ci0gICAgW1tzZWxmIHdpbmRvd10gc2V0QWNjZWxlcmF0ZWREcmF3aW5nRW5h
YmxlZDpbcHJlZmVyZW5jZXMgYWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZF1dOworICAgIGlmIChh
dXRvIHRpbGVDYWNoZSA9IHNlbGYud2luZG93LnRpbGVDYWNoZSkgeworICAgICAgICB0aWxlQ2Fj
aGUtPnNldFRpbGVCb3JkZXJzVmlzaWJsZShwcmVmZXJlbmNlcy5zaG93RGVidWdCb3JkZXJzKTsK
KyAgICAgICAgdGlsZUNhY2hlLT5zZXRUaWxlUGFpbnRDb3VudGVyc1Zpc2libGUocHJlZmVyZW5j
ZXMuc2hvd1JlcGFpbnRDb3VudGVyKTsKKyAgICAgICAgdGlsZUNhY2hlLT5zZXRBY2NlbGVyYXRl
ZERyYXdpbmdFbmFibGVkKHByZWZlcmVuY2VzLmFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQpOwor
ICAgIH0KICAgICBbV0FLVmlldyBfc2V0SW50ZXJwb2xhdGlvblF1YWxpdHk6W3ByZWZlcmVuY2Vz
IF9pbnRlcnBvbGF0aW9uUXVhbGl0eV1dOwogI2VuZGlmCiB9CkBAIC01NjQyLDExICs1NjQ0LDEy
IEBAIC0gKHZvaWQpdmlld0RpZE1vdmVUb1dpbmRvdwogICAgICAgICBfcHJpdmF0ZS0+cGFnZS0+
c2V0SXNJbldpbmRvdyh0cnVlKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgICAg
IFdlYlByZWZlcmVuY2VzICpwcmVmZXJlbmNlcyA9IFtzZWxmIHByZWZlcmVuY2VzXTsKLSAgICAg
ICAgTlNXaW5kb3cgKndpbmRvdyA9IFtzZWxmIHdpbmRvd107Ci0gICAgICAgIFt3aW5kb3cgc2V0
VGlsZUJvcmRlcnNWaXNpYmxlOltwcmVmZXJlbmNlcyBzaG93RGVidWdCb3JkZXJzXV07Ci0gICAg
ICAgIFt3aW5kb3cgc2V0VGlsZVBhaW50Q291bnRzVmlzaWJsZTpbcHJlZmVyZW5jZXMgc2hvd1Jl
cGFpbnRDb3VudGVyXV07Ci0gICAgICAgIFt3aW5kb3cgc2V0QWNjZWxlcmF0ZWREcmF3aW5nRW5h
YmxlZDpbcHJlZmVyZW5jZXMgYWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZF1dOworICAgICAgICBh
dXRvIHByZWZlcmVuY2VzID0gc2VsZi5wcmVmZXJlbmNlczsKKyAgICAgICAgaWYgKGF1dG8gdGls
ZUNhY2hlID0gc2VsZi53aW5kb3cudGlsZUNhY2hlKSB7CisgICAgICAgICAgICB0aWxlQ2FjaGUt
PnNldFRpbGVCb3JkZXJzVmlzaWJsZShwcmVmZXJlbmNlcy5zaG93RGVidWdCb3JkZXJzKTsKKyAg
ICAgICAgICAgIHRpbGVDYWNoZS0+c2V0VGlsZVBhaW50Q291bnRlcnNWaXNpYmxlKHByZWZlcmVu
Y2VzLnNob3dSZXBhaW50Q291bnRlcik7CisgICAgICAgICAgICB0aWxlQ2FjaGUtPnNldEFjY2Vs
ZXJhdGVkRHJhd2luZ0VuYWJsZWQocHJlZmVyZW5jZXMuYWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxl
ZCk7CisgICAgICAgIH0KICNlbmRpZgogICAgIH0KICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpA
QCAtNTY1NCwxMSArNTY1Nyw5IEBAIC0gKHZvaWQpdmlld0RpZE1vdmVUb1dpbmRvdwogICAgICAg
ICBbX3ByaXZhdGUtPmZ1bGxzY3JlZW5Db250cm9sbGVyIHJlcXVlc3RIaWRlQW5kRXhpdEZ1bGxz
Y3JlZW5dOwogI2VuZGlmCiAKLSNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpZiBQTEFURk9S
TShNQUMpCiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldERldmljZVNjYWxlRmFjdG9yKFtzZWxmIF9k
ZXZpY2VTY2FsZUZhY3Rvcl0pOwotI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpCiAgICAgaWYg
KF9wcml2YXRlLT5pbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyKSB7CiAgICAgICAgIE5TSW1tZWRp
YXRlQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIgKnJlY29nbml6ZXIgPSBbX3ByaXZhdGUtPmltbWVk
aWF0ZUFjdGlvbkNvbnRyb2xsZXIgaW1tZWRpYXRlQWN0aW9uUmVjb2duaXplcl07CiAgICAgICAg
IGlmIChbc2VsZiB3aW5kb3ddKSB7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>