<?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>99982</bug_id>
          
          <creation_ts>2012-10-22 05:22:18 -0700</creation_ts>
          <short_desc>[EFL][WK2] Make the resource load client a C++ class</short_desc>
          <delta_ts>2012-10-22 12:53:22 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>99992</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>gyuyoung.kim</cc>
    
    <cc>kenneth</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>mikhail.pozdnyakov</cc>
    
    <cc>rakuco</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>747449</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-10-22 05:22:18 -0700</bug_when>
    <thetext>The Resource load client is currently tightly integrated to the view and uses C style.

We should move all the resource load client code to its own C++ class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747513</commentid>
    <comment_count>1</comment_count>
      <attachid>169904</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-10-22 07:08:57 -0700</bug_when>
    <thetext>Created attachment 169904
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747586</commentid>
    <comment_count>2</comment_count>
      <attachid>169904</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-10-22 09:03:23 -0700</bug_when>
    <thetext>Comment on attachment 169904
Patch

Will move the class to WebKit namespace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747635</commentid>
    <comment_count>3</comment_count>
      <attachid>169929</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-10-22 09:50:50 -0700</bug_when>
    <thetext>Created attachment 169929
Patch

Move client to WebKit namespace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747782</commentid>
    <comment_count>4</comment_count>
      <attachid>169929</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-10-22 12:37:02 -0700</bug_when>
    <thetext>Comment on attachment 169929
Patch

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

r=me

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:839
&gt; +    priv-&gt;resourceLoadClient = ResourceLoadClientEfl::create(ewkView);

why not call it ResourceLoaderClientEfl to show the relation to FrameLoaderClient

&gt; Source/WebKit2/UIProcess/efl/ResourceLoadClientEfl.cpp:131
&gt; +    WKPageResourceLoadClient wkResourceLoadClient;

Ah I see now...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747787</commentid>
    <comment_count>5</comment_count>
      <attachid>169929</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-22 12:53:18 -0700</bug_when>
    <thetext>Comment on attachment 169929
Patch

Clearing flags on attachment: 169929

Committed r132122: &lt;http://trac.webkit.org/changeset/132122&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747788</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-22 12:53:22 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169904</attachid>
            <date>2012-10-22 07:08:57 -0700</date>
            <delta_ts>2012-10-22 09:50:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>99982_resourceLoadClient_cpp.patch</filename>
            <type>text/plain</type>
            <size>30899</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBlMzQxNDNlLi4xZjM2MzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcg
QEAKKzIwMTItMTAtMjIgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIE1ha2UgdGhlIHJlc291cmNlIGxvYWQgY2xpZW50
IGEgQysrIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05OTk4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIENyZWF0ZSBhIEMrKyBjbGFzcyBmb3IgdGhlIHJlc291cmNlIGxvYWQgY2xpZW50IGFuZAor
ICAgICAgICBtb3ZlIHRoZSBpZCA8LT4gcmVzb3VyY2UgbWFwcGluZyBmcm9tIHRoZSBFd2tfVmll
dworICAgICAgICB0byBSZXNvdXJjZUxvYWRDbGllbnRFZmwgZm9yIGJldHRlciBhIGNsZWFuZXIK
KyAgICAgICAgc2VwYXJhdGlvbi4KKworICAgICAgICBUaGUgcmVzb3VyY2UgbG9hZCBjbGllbnQg
Y29kZSB3YXMgYWxzbyBtb3ZlZCBvdXQgb2YKKyAgICAgICAgVUlQcm9jZXNzL0FQSS9lZmwgdG8g
VUlQcm9jZXNzL2VmbCBzaW5jZSB0aGlzIGlzIG5vdAorICAgICAgICBwYXJ0IG9mIHRoZSBXSzIg
RUZMIEFQSS4KKworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcDoKKyAgICAgICAgKEV3a19WaWV3X1ByaXZhdGVfRGF0
YSk6CisgICAgICAgIChfZXdrX3ZpZXdfaW5pdGlhbGl6ZSk6CisgICAgICAgIChld2tfdmlld193
a3BhZ2VfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X3Jlc291cmNlX2xvYWRfaW5pdGlhdGVkKToK
KyAgICAgICAgKGV3a192aWV3X3Jlc291cmNlX2xvYWRfcmVzcG9uc2UpOgorICAgICAgICAoZXdr
X3ZpZXdfcmVzb3VyY2VfbG9hZF9mYWlsZWQpOgorICAgICAgICAoZXdrX3ZpZXdfcmVzb3VyY2Vf
bG9hZF9maW5pc2hlZCk6CisgICAgICAgIChld2tfdmlld19yZXNvdXJjZV9yZXF1ZXN0X3NlbnQp
OgorICAgICAgICAoZXdrX3ZpZXdfbG9hZF9wcm92aXNpb25hbF9zdGFydGVkKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9jbGllbnQuY3BwOiBSZW1vdmVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3Jlc291cmNlX2xvYWRfY2xpZW50
X3ByaXZhdGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1Jlc291cmNlTG9h
ZENsaWVudEVmbC5jcHA6IEFkZGVkLgorICAgICAgICAodG9SZXNvdXJjZUxvYWRDbGllbnRFZmwp
OgorICAgICAgICAoUmVzb3VyY2VMb2FkQ2xpZW50RWZsOjpkaWRJbml0aWF0ZUxvYWRGb3JSZXNv
dXJjZSk6CisgICAgICAgIChSZXNvdXJjZUxvYWRDbGllbnRFZmw6OmRpZFNlbmRSZXF1ZXN0Rm9y
UmVzb3VyY2UpOgorICAgICAgICAoUmVzb3VyY2VMb2FkQ2xpZW50RWZsOjpkaWRSZWNlaXZlUmVz
cG9uc2VGb3JSZXNvdXJjZSk6CisgICAgICAgIChSZXNvdXJjZUxvYWRDbGllbnRFZmw6OmRpZEZp
bmlzaExvYWRGb3JSZXNvdXJjZSk6CisgICAgICAgIChSZXNvdXJjZUxvYWRDbGllbnRFZmw6OmRp
ZEZhaWxMb2FkRm9yUmVzb3VyY2UpOgorICAgICAgICAoUmVzb3VyY2VMb2FkQ2xpZW50RWZsOjpv
blZpZXdQcm92aXNpb25hbExvYWRTdGFydGVkKToKKyAgICAgICAgKFJlc291cmNlTG9hZENsaWVu
dEVmbDo6UmVzb3VyY2VMb2FkQ2xpZW50RWZsKToKKyAgICAgICAgKFJlc291cmNlTG9hZENsaWVu
dEVmbDo6flJlc291cmNlTG9hZENsaWVudEVmbCk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9S
ZXNvdXJjZUxvYWRDbGllbnRFZmwuaDogQWRkZWQuCisgICAgICAgIChSZXNvdXJjZUxvYWRDbGll
bnRFZmwpOgorICAgICAgICAoUmVzb3VyY2VMb2FkQ2xpZW50RWZsOjpjcmVhdGUpOgorCiAyMDEy
LTEwLTIyICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQGRpZ2lhLmNvbT4KIAogICAg
ICAgICBbUXRdIEZpeCBidWlsZCB3aXRob3V0IFF0V2lkZ2V0cwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5j
bWFrZQppbmRleCA1MTlhZGZiLi4xNjM4NTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpA
QCAtNzUsMTEgKzc1LDExIEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJv
Y2Vzcy9BUEkvZWZsL2V3a192aWV3X2Zvcm1fY2xpZW50LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkv
ZWZsL2V3a192aWV3X2xvYWRlcl9jbGllbnQuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3ZpZXdfcG9saWN5X2NsaWVudC5jcHAKLSAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19y
ZXNvdXJjZV9sb2FkX2NsaWVudC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld191
aV9jbGllbnQuY3BwCiAKICAgICBVSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3Bw
CiAKKyAgICBVSVByb2Nlc3MvZWZsL1Jlc291cmNlTG9hZENsaWVudEVmbC5jcHAKICAgICBVSVBy
b2Nlc3MvZWZsL1RleHRDaGVja2VyRWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2ViQ29udGV4
dEVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlFZmwu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmll
dy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKaW5k
ZXggZDg2MDhhYS4uZGQ1YWMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a192aWV3LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIk5hdGl2ZVdlYldo
ZWVsRXZlbnQuaCIKICNpbmNsdWRlICJQYWdlQ2xpZW50SW1wbC5oIgogI2luY2x1ZGUgIlJlZlB0
ckVmbC5oIgorI2luY2x1ZGUgIlJlc291cmNlTG9hZENsaWVudEVmbC5oIgogI2luY2x1ZGUgIldL
QVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lci5oIgogI2lu
Y2x1ZGUgIldLRWluYVNoYXJlZFN0cmluZy5oIgpAQCAtNTQsNyArNTUsNiBAQAogI2luY2x1ZGUg
ImV3a192aWV3X2xvYWRlcl9jbGllbnRfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a192aWV3X3Bv
bGljeV9jbGllbnRfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a192aWV3X3ByaXZhdGUuaCIKLSNp
bmNsdWRlICJld2tfdmlld19yZXNvdXJjZV9sb2FkX2NsaWVudF9wcml2YXRlLmgiCiAjaW5jbHVk
ZSAiZXdrX3ZpZXdfdWlfY2xpZW50X3ByaXZhdGUuaCIKICNpbmNsdWRlIDxFY29yZV9FdmFzLmg+
CiAjaW5jbHVkZSA8RWRqZS5oPgpAQCAtODYsNyArODYsNiBAQCBzdGF0aWMgY29uc3QgY2hhciBF
V0tfVklFV19UWVBFX1NUUltdID0gIkVXSzJfVmlldyI7CiAKIHN0YXRpYyBjb25zdCBpbnQgZGVm
YXVsdEN1cnNvclNpemUgPSAxNjsKIAotdHlwZWRlZiBIYXNoTWFwPCB1aW50NjRfdCwgUmVmUHRy
PEV3a19SZXNvdXJjZT4gPiBMb2FkaW5nUmVzb3VyY2VzTWFwOwogc3RhdGljIHZvaWQgX2V3a192
aWV3X29uX2Zhdmljb25fY2hhbmdlZChjb25zdCBjaGFyKiBwYWdlVVJMLCB2b2lkKiBldmVudElu
Zm8pOwogCiB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgV2ViUGFnZVByb3h5KiwgY29uc3QgRXZhc19P
YmplY3QqPiBQYWdlVmlld01hcDsKQEAgLTExOSw2ICsxMTgsNyBAQCBzdHJ1Y3QgRXdrX1ZpZXdf
UHJpdmF0ZV9EYXRhIHsKICAgICBPd25QdHI8UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVm
bD4gcGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudDsKICNlbmRpZgogICAgIFJlZlB0cjxXZWJQ
YWdlUHJveHk+IHBhZ2VQcm94eTsKKyAgICBPd25QdHI8UmVzb3VyY2VMb2FkQ2xpZW50RWZsPiBy
ZXNvdXJjZUxvYWRDbGllbnQ7CiAKICAgICBXS0VpbmFTaGFyZWRTdHJpbmcgdXJsOwogICAgIFdL
RWluYVNoYXJlZFN0cmluZyB0aXRsZTsKQEAgLTEyNyw3ICsxMjcsNiBAQCBzdHJ1Y3QgRXdrX1Zp
ZXdfUHJpdmF0ZV9EYXRhIHsKICAgICBXS0VpbmFTaGFyZWRTdHJpbmcgY3Vyc29yR3JvdXA7CiAg
ICAgV0tFaW5hU2hhcmVkU3RyaW5nIGZhdmljb25VUkw7CiAgICAgUmVmUHRyPEV2YXNfT2JqZWN0
PiBjdXJzb3JPYmplY3Q7Ci0gICAgTG9hZGluZ1Jlc291cmNlc01hcCBsb2FkaW5nUmVzb3VyY2Vz
TWFwOwogICAgIE93blB0cjxFd2tfQmFja19Gb3J3YXJkX0xpc3Q+IGJhY2tGb3J3YXJkTGlzdDsK
ICAgICBPd25QdHI8RXdrX1NldHRpbmdzPiBzZXR0aW5nczsKICAgICBib29sIGFyZU1vdXNlRXZl
bnRzRW5hYmxlZDsKQEAgLTgyOCwxNyArODI3LDE4IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19p
bml0aWFsaXplKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfQ29udGV4dCogY29udGV4dCwgV0tQ
CiAgICAgcHJpdi0+cGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudCA9IFBhZ2VWaWV3cG9ydENv
bnRyb2xsZXJDbGllbnRFZmw6OmNyZWF0ZShld2tWaWV3KTsKICNlbmRpZgogCisgICAgLy8gSW5p
dGlhbGl6ZSBwYWdlIGNsaWVudHMuCiAgICAgV0tQYWdlUmVmIHdrUGFnZSA9IHRvQVBJKHByaXYt
PnBhZ2VQcm94eS5nZXQoKSk7CiAgICAgZXdrX3ZpZXdfZmluZF9jbGllbnRfYXR0YWNoKHdrUGFn
ZSwgZXdrVmlldyk7CiAgICAgZXdrX3ZpZXdfZm9ybV9jbGllbnRfYXR0YWNoKHdrUGFnZSwgZXdr
Vmlldyk7CiAgICAgZXdrX3ZpZXdfbG9hZGVyX2NsaWVudF9hdHRhY2god2tQYWdlLCBld2tWaWV3
KTsKICAgICBld2tfdmlld19wb2xpY3lfY2xpZW50X2F0dGFjaCh3a1BhZ2UsIGV3a1ZpZXcpOwot
ICAgIGV3a192aWV3X3Jlc291cmNlX2xvYWRfY2xpZW50X2F0dGFjaCh3a1BhZ2UsIGV3a1ZpZXcp
OwogICAgIGV3a192aWV3X3VpX2NsaWVudF9hdHRhY2god2tQYWdlLCBld2tWaWV3KTsKICNpZiBF
TkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgcHJpdi0+cGFnZVByb3h5LT5mdWxsU2NyZWVuTWFu
YWdlcigpLT5zZXRXZWJWaWV3KGV3a1ZpZXcpOwogICAgIGV3a19zZXR0aW5nc19mdWxsc2NyZWVu
X2VuYWJsZWRfc2V0KHByaXYtPnNldHRpbmdzLmdldCgpLCB0cnVlKTsKICNlbmRpZgorICAgIHBy
aXYtPnJlc291cmNlTG9hZENsaWVudCA9IFJlc291cmNlTG9hZENsaWVudEVmbDo6Y3JlYXRlKGV3
a1ZpZXcpOwogCiAgICAgLyogTGlzdGVuIGZvciBmYXZpY29uIGNoYW5nZXMgKi8KICAgICBFd2tf
RmF2aWNvbl9EYXRhYmFzZSogaWNvbkRhdGFiYXNlID0gZXdrX2NvbnRleHRfZmF2aWNvbl9kYXRh
YmFzZV9nZXQocHJpdi0+Y29udGV4dCk7CkBAIC0xMDE1LDIwICsxMDE1LDI2IEBAIEV3a19TZXR0
aW5ncyogZXdrX3ZpZXdfc2V0dGluZ3NfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQog
CiAvKioKICAqIEBpbnRlcm5hbAorICogUmV0cmlldmVzIHRoZSBpbnRlcm5hbCBXS1BhZ2UgZm9y
IHRoaXMgdmlldy4KKyAqLworV0tQYWdlUmVmIGV3a192aWV3X3drcGFnZV9nZXQoY29uc3QgRXZh
c19PYmplY3QqIGV3a1ZpZXcpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tW
aWV3LCBzbWFydERhdGEsIDApOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFy
dERhdGEsIHByaXYsIDApOworCisgICAgcmV0dXJuIHRvQVBJKHByaXYtPnBhZ2VQcm94eS5nZXQo
KSk7Cit9CisKKy8qKgorICogQGludGVybmFsCiAgKiBMb2FkIHdhcyBpbml0aWF0ZWQgZm9yIGEg
cmVzb3VyY2UgaW4gdGhlIHZpZXcuCiAgKgogICogRW1pdHMgc2lnbmFsOiAicmVzb3VyY2UscmVx
dWVzdCxuZXciIHdpdGggcG9pbnRlciB0byByZXNvdXJjZSByZXF1ZXN0LgogICovCi12b2lkIGV3
a192aWV3X3Jlc291cmNlX2xvYWRfaW5pdGlhdGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCB1aW50
NjRfdCByZXNvdXJjZUlkZW50aWZpZXIsIEV3a19SZXNvdXJjZSogcmVzb3VyY2UsIEV3a19Vcmxf
UmVxdWVzdCogcmVxdWVzdCkKK3ZvaWQgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9pbml0aWF0ZWQo
RXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19SZXNvdXJjZSogcmVzb3VyY2UsIEV3a19VcmxfUmVx
dWVzdCogcmVxdWVzdCkKIHsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcs
IHNtYXJ0RGF0YSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwg
cHJpdik7Ci0KICAgICBFd2tfUmVzb3VyY2VfUmVxdWVzdCByZXNvdXJjZVJlcXVlc3QgPSB7cmVz
b3VyY2UsIHJlcXVlc3QsIDB9OwogCi0gICAgLy8gS2VlcCB0aGUgcmVzb3VyY2UgaW50ZXJuYWxs
eSB0byByZXVzZSBpdCBsYXRlci4KLSAgICBwcml2LT5sb2FkaW5nUmVzb3VyY2VzTWFwLmFkZChy
ZXNvdXJjZUlkZW50aWZpZXIsIHJlc291cmNlKTsKLQogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2Nh
bGxiYWNrX2NhbGwoZXdrVmlldywgInJlc291cmNlLHJlcXVlc3QsbmV3IiwgJnJlc291cmNlUmVx
dWVzdCk7CiB9CiAKQEAgLTEwMzgsMTYgKzEwNDQsOSBAQCB2b2lkIGV3a192aWV3X3Jlc291cmNl
X2xvYWRfaW5pdGlhdGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCB1aW50NjRfdCByZXNvdXJjZUlk
ZQogICoKICAqIEVtaXRzIHNpZ25hbDogInJlc291cmNlLHJlcXVlc3QscmVzcG9uc2UiIHdpdGgg
cG9pbnRlciB0byByZXNvdXJjZSByZXNwb25zZS4KICAqLwotdm9pZCBld2tfdmlld19yZXNvdXJj
ZV9sb2FkX3Jlc3BvbnNlKEV2YXNfT2JqZWN0KiBld2tWaWV3LCB1aW50NjRfdCByZXNvdXJjZUlk
ZW50aWZpZXIsIEV3a19VcmxfUmVzcG9uc2UqIHJlc3BvbnNlKQordm9pZCBld2tfdmlld19yZXNv
dXJjZV9sb2FkX3Jlc3BvbnNlKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfUmVzb3VyY2UqIHJl
c291cmNlLCBFd2tfVXJsX1Jlc3BvbnNlKiByZXNwb25zZSkKIHsKLSAgICBFV0tfVklFV19TRF9H
RVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRf
T1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdik7Ci0KLSAgICBpZiAoIXByaXYtPmxvYWRpbmdSZXNv
dXJjZXNNYXAuY29udGFpbnMocmVzb3VyY2VJZGVudGlmaWVyKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgUmVmUHRyPEV3a19SZXNvdXJjZT4gcmVzb3VyY2UgPSBwcml2LT5sb2FkaW5nUmVzb3Vy
Y2VzTWFwLmdldChyZXNvdXJjZUlkZW50aWZpZXIpOwotICAgIEV3a19SZXNvdXJjZV9Mb2FkX1Jl
c3BvbnNlIHJlc291cmNlTG9hZFJlc3BvbnNlID0ge3Jlc291cmNlLmdldCgpLCByZXNwb25zZX07
CisgICAgRXdrX1Jlc291cmNlX0xvYWRfUmVzcG9uc2UgcmVzb3VyY2VMb2FkUmVzcG9uc2UgPSB7
cmVzb3VyY2UsIHJlc3BvbnNlfTsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxs
KGV3a1ZpZXcsICJyZXNvdXJjZSxyZXF1ZXN0LHJlc3BvbnNlIiwgJnJlc291cmNlTG9hZFJlc3Bv
bnNlKTsKIH0KIApAQCAtMTA1NywxNiArMTA1Niw5IEBAIHZvaWQgZXdrX3ZpZXdfcmVzb3VyY2Vf
bG9hZF9yZXNwb25zZShFdmFzX09iamVjdCogZXdrVmlldywgdWludDY0X3QgcmVzb3VyY2VJZGVu
CiAgKgogICogRW1pdHMgc2lnbmFsOiAicmVzb3VyY2UscmVxdWVzdCxmaW5pc2hlZCIgd2l0aCBw
b2ludGVyIHRvIHRoZSByZXNvdXJjZSBsb2FkIGVycm9yLgogICovCi12b2lkIGV3a192aWV3X3Jl
c291cmNlX2xvYWRfZmFpbGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCB1aW50NjRfdCByZXNvdXJj
ZUlkZW50aWZpZXIsIEV3a19FcnJvciogZXJyb3IpCit2b2lkIGV3a192aWV3X3Jlc291cmNlX2xv
YWRfZmFpbGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfUmVzb3VyY2UqIHJlc291cmNlLCBF
d2tfRXJyb3IqIGVycm9yKQogewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmll
dywgc21hcnREYXRhKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRh
LCBwcml2KTsKLQotICAgIGlmICghcHJpdi0+bG9hZGluZ1Jlc291cmNlc01hcC5jb250YWlucyhy
ZXNvdXJjZUlkZW50aWZpZXIpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBSZWZQdHI8RXdrX1Jl
c291cmNlPiByZXNvdXJjZSA9IHByaXYtPmxvYWRpbmdSZXNvdXJjZXNNYXAuZ2V0KHJlc291cmNl
SWRlbnRpZmllcik7Ci0gICAgRXdrX1Jlc291cmNlX0xvYWRfRXJyb3IgcmVzb3VyY2VMb2FkRXJy
b3IgPSB7cmVzb3VyY2UuZ2V0KCksIGVycm9yfTsKKyAgICBFd2tfUmVzb3VyY2VfTG9hZF9FcnJv
ciByZXNvdXJjZUxvYWRFcnJvciA9IHtyZXNvdXJjZSwgZXJyb3J9OwogICAgIGV2YXNfb2JqZWN0
X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgInJlc291cmNlLHJlcXVlc3QsZmFpbGVkIiwg
JnJlc291cmNlTG9hZEVycm9yKTsKIH0KIApAQCAtMTA3NiwxNiArMTA2OCw5IEBAIHZvaWQgZXdr
X3ZpZXdfcmVzb3VyY2VfbG9hZF9mYWlsZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIHVpbnQ2NF90
IHJlc291cmNlSWRlbnRpCiAgKgogICogRW1pdHMgc2lnbmFsOiAicmVzb3VyY2UscmVxdWVzdCxm
aW5pc2hlZCIgd2l0aCBwb2ludGVyIHRvIHRoZSByZXNvdXJjZS4KICAqLwotdm9pZCBld2tfdmll
d19yZXNvdXJjZV9sb2FkX2ZpbmlzaGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCB1aW50NjRfdCBy
ZXNvdXJjZUlkZW50aWZpZXIpCit2b2lkIGV3a192aWV3X3Jlc291cmNlX2xvYWRfZmluaXNoZWQo
RXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19SZXNvdXJjZSogcmVzb3VyY2UpCiB7Ci0gICAgRVdL
X1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEpOwotICAgIEVXS19WSUVX
X1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYpOwotCi0gICAgaWYgKCFwcml2LT5s
b2FkaW5nUmVzb3VyY2VzTWFwLmNvbnRhaW5zKHJlc291cmNlSWRlbnRpZmllcikpCi0gICAgICAg
IHJldHVybjsKLQotICAgIFJlZlB0cjxFd2tfUmVzb3VyY2U+IHJlc291cmNlID0gcHJpdi0+bG9h
ZGluZ1Jlc291cmNlc01hcC50YWtlKHJlc291cmNlSWRlbnRpZmllcik7Ci0gICAgZXZhc19vYmpl
Y3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tWaWV3LCAicmVzb3VyY2UscmVxdWVzdCxmaW5pc2hl
ZCIsIHJlc291cmNlLmdldCgpKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxs
KGV3a1ZpZXcsICJyZXNvdXJjZSxyZXF1ZXN0LGZpbmlzaGVkIiwgcmVzb3VyY2UpOwogfQogCiAv
KioKQEAgLTEwOTQsMTcgKzEwNzksOSBAQCB2b2lkIGV3a192aWV3X3Jlc291cmNlX2xvYWRfZmlu
aXNoZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIHVpbnQ2NF90IHJlc291cmNlSWRlbgogICoKICAq
IEVtaXRzIHNpZ25hbDogInJlc291cmNlLHJlcXVlc3Qsc2VudCIgd2l0aCBwb2ludGVyIHRvIHJl
c291cmNlIHJlcXVlc3QgYW5kIHBvc3NpYmxlIHJlZGlyZWN0IHJlc3BvbnNlLgogICovCi12b2lk
IGV3a192aWV3X3Jlc291cmNlX3JlcXVlc3Rfc2VudChFdmFzX09iamVjdCogZXdrVmlldywgdWlu
dDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBFd2tfVXJsX1JlcXVlc3QqIHJlcXVlc3QsIEV3a19V
cmxfUmVzcG9uc2UqIHJlZGlyZWN0UmVzcG9uc2UpCit2b2lkIGV3a192aWV3X3Jlc291cmNlX3Jl
cXVlc3Rfc2VudChFdmFzX09iamVjdCogZXdrVmlldywgRXdrX1Jlc291cmNlKiByZXNvdXJjZSwg
RXdrX1VybF9SZXF1ZXN0KiByZXF1ZXN0LCBFd2tfVXJsX1Jlc3BvbnNlKiByZWRpcmVjdFJlc3Bv
bnNlKQogewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRh
KTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2KTsKLQot
ICAgIGlmICghcHJpdi0+bG9hZGluZ1Jlc291cmNlc01hcC5jb250YWlucyhyZXNvdXJjZUlkZW50
aWZpZXIpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBSZWZQdHI8RXdrX1Jlc291cmNlPiByZXNv
dXJjZSA9IHByaXYtPmxvYWRpbmdSZXNvdXJjZXNNYXAuZ2V0KHJlc291cmNlSWRlbnRpZmllcik7
Ci0gICAgRXdrX1Jlc291cmNlX1JlcXVlc3QgcmVzb3VyY2VSZXF1ZXN0ID0ge3Jlc291cmNlLmdl
dCgpLCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlfTsKLQorICAgIEV3a19SZXNvdXJjZV9SZXF1
ZXN0IHJlc291cmNlUmVxdWVzdCA9IHtyZXNvdXJjZSwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25z
ZX07CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tWaWV3LCAicmVzb3Vy
Y2UscmVxdWVzdCxzZW50IiwgJnJlc291cmNlUmVxdWVzdCk7CiB9CiAKQEAgLTE1MzgsMTMgKzE1
MTUsNiBAQCB2b2lkIGV3a192aWV3X2xvYWRfcHJvdmlzaW9uYWxfcmVkaXJlY3QoRXZhc19PYmpl
Y3QqIGV3a1ZpZXcpCiAgKi8KIHZvaWQgZXdrX3ZpZXdfbG9hZF9wcm92aXNpb25hbF9zdGFydGVk
KEV2YXNfT2JqZWN0KiBld2tWaWV3KQogewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4o
ZXdrVmlldywgc21hcnREYXRhKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21h
cnREYXRhLCBwcml2KTsKLQotICAgIC8vIFRoZSBtYWluIGZyYW1lIHN0YXJ0ZWQgcHJvdmlzaW9u
YWwgbG9hZCwgd2Ugc2hvdWxkIGNsZWFyCi0gICAgLy8gdGhlIGxvYWRpbmdSZXNvdXJjZXMgSGFz
aE1hcCB0byBzdGFydCBjbGVhbi4KLSAgICBwcml2LT5sb2FkaW5nUmVzb3VyY2VzTWFwLmNsZWFy
KCk7Ci0KICAgICBld2tfdmlld191cmxfdXBkYXRlKGV3a1ZpZXcpOwogICAgIGV2YXNfb2JqZWN0
X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgImxvYWQscHJvdmlzaW9uYWwsc3RhcnRlZCIs
IDApOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3ZpZXdfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Zp
ZXdfcHJpdmF0ZS5oCmluZGV4IDYxYzdiZDQuLjIwNjZmOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmgKQEAgLTc3LDE3ICs3
NywxOSBAQCB2b2lkIGV3a192aWV3X3BhZ2VfY2xvc2UoRXZhc19PYmplY3QqIGV3a1ZpZXcpOwog
V0tQYWdlUmVmIGV3a192aWV3X3BhZ2VfY3JlYXRlKEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKIHZv
aWQgZXdrX3ZpZXdfdGl0bGVfY2hhbmdlZChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgY2hh
ciogdGl0bGUpOwogdm9pZCBld2tfdmlld190b29sdGlwX3RleHRfc2V0KEV2YXNfT2JqZWN0KiBl
d2tWaWV3LCBjb25zdCBjaGFyKiB0ZXh0KTsKLXZvaWQgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9m
YWlsZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwg
RXdrX0Vycm9yKiBlcnJvcik7Ci12b2lkIGV3a192aWV3X3Jlc291cmNlX2xvYWRfZmluaXNoZWQo
RXZhc19PYmplY3QqIGV3a1ZpZXcsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllcik7Ci12b2lk
IGV3a192aWV3X3Jlc291cmNlX2xvYWRfaW5pdGlhdGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCB1
aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIsIEV3a19SZXNvdXJjZSogcmVzb3VyY2UsIEV3a19V
cmxfUmVxdWVzdCogcmVxdWVzdCk7Ci12b2lkIGV3a192aWV3X3Jlc291cmNlX2xvYWRfcmVzcG9u
c2UoRXZhc19PYmplY3QqIGV3a1ZpZXcsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgRXdr
X1VybF9SZXNwb25zZSogcmVzcG9uc2UpOwotdm9pZCBld2tfdmlld19yZXNvdXJjZV9yZXF1ZXN0
X3NlbnQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwg
RXdrX1VybF9SZXF1ZXN0KiByZXF1ZXN0LCBFd2tfVXJsX1Jlc3BvbnNlKiByZWRpcmVjdFJlc3Bv
bnNlKTsKK3ZvaWQgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9mYWlsZWQoRXZhc19PYmplY3QqIGV3
a1ZpZXcsIEV3a19SZXNvdXJjZSogcmVzb3VyY2UsIEV3a19FcnJvciogZXJyb3IpOwordm9pZCBl
d2tfdmlld19yZXNvdXJjZV9sb2FkX2ZpbmlzaGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tf
UmVzb3VyY2UqIHJlc291cmNlKTsKK3ZvaWQgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9pbml0aWF0
ZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19SZXNvdXJjZSogcmVzb3VyY2UsIEV3a19Vcmxf
UmVxdWVzdCogcmVxdWVzdCk7Cit2b2lkIGV3a192aWV3X3Jlc291cmNlX2xvYWRfcmVzcG9uc2Uo
RXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19SZXNvdXJjZSogcmVzb3VyY2UsIEV3a19VcmxfUmVz
cG9uc2UqIHJlc3BvbnNlKTsKK3ZvaWQgZXdrX3ZpZXdfcmVzb3VyY2VfcmVxdWVzdF9zZW50KEV2
YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfUmVzb3VyY2UqIHJlc291cmNlLCBFd2tfVXJsX1JlcXVl
c3QqIHJlcXVlc3QsIEV3a19VcmxfUmVzcG9uc2UqIHJlZGlyZWN0UmVzcG9uc2UpOwogdm9pZCBl
d2tfdmlld190ZXh0X2ZvdW5kKEV2YXNfT2JqZWN0KiBld2tWaWV3LCB1bnNpZ25lZCBpbnQgbWF0
Y2hDb3VudCk7CiB2b2lkIGV3a192aWV3X3VybF91cGRhdGUoRXZhc19PYmplY3QqIGV3a1ZpZXcp
Owogdm9pZCBld2tfdmlld19jb250ZW50c19zaXplX2NoYW5nZWQoY29uc3QgRXZhc19PYmplY3Qq
IGV3a1ZpZXcsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKIHZvaWQgZXdrX3ZpZXdfYmFja19m
b3J3YXJkX2xpc3RfY2hhbmdlZChFdmFzX09iamVjdCogZXdrVmlldyk7CiB2b2lkIGV3a192aWV3
X3VwZGF0ZV9pY29uKEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKIAorV0tQYWdlUmVmIGV3a192aWV3
X3drcGFnZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpOworCiBFdmFzX09iamVjdCog
ZXdrX3ZpZXdfYmFzZV9hZGQoRXZhcyogY2FudmFzLCBXS0NvbnRleHRSZWYsIFdLUGFnZUdyb3Vw
UmVmKTsKIAogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3Jlc291cmNlX2xvYWRfY2xpZW50LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3Jlc291cmNlX2xvYWRf
Y2xpZW50LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2U2MjUzOS4uMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19yZXNvdXJj
ZV9sb2FkX2NsaWVudC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDMgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSAiV0tBUElDYXN0
LmgiCi0jaW5jbHVkZSAiV0tGcmFtZS5oIgotI2luY2x1ZGUgIldLUGFnZS5oIgotI2luY2x1ZGUg
IldLUmV0YWluUHRyLmgiCi0jaW5jbHVkZSAiV0tVUkwuaCIKLSNpbmNsdWRlICJXS1VSTFJlcXVl
c3QuaCIKLSNpbmNsdWRlICJXS1VSTFJlc3BvbnNlLmgiCi0jaW5jbHVkZSAiZXdrX2Vycm9yX3By
aXZhdGUuaCIKLSNpbmNsdWRlICJld2tfcmVzb3VyY2UuaCIKLSNpbmNsdWRlICJld2tfcmVzb3Vy
Y2VfcHJpdmF0ZS5oIgotI2luY2x1ZGUgImV3a191cmxfcmVxdWVzdC5oIgotI2luY2x1ZGUgImV3
a191cmxfcmVxdWVzdF9wcml2YXRlLmgiCi0jaW5jbHVkZSAiZXdrX3VybF9yZXNwb25zZS5oIgot
I2luY2x1ZGUgImV3a191cmxfcmVzcG9uc2VfcHJpdmF0ZS5oIgotI2luY2x1ZGUgImV3a192aWV3
X3ByaXZhdGUuaCIKLSNpbmNsdWRlICJld2tfdmlld19yZXNvdXJjZV9sb2FkX2NsaWVudF9wcml2
YXRlLmgiCi0jaW5jbHVkZSA8d3RmL093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci11c2luZyBuYW1lc3BhY2UgV2ViS2l0
OwotCi1zdGF0aWMgaW5saW5lIEV2YXNfT2JqZWN0KiB0b0V3a1ZpZXcoY29uc3Qgdm9pZCogY2xp
ZW50SW5mbykKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RXZhc19PYmplY3QqPihjb25zdF9j
YXN0PHZvaWQqPihjbGllbnRJbmZvKSk7Ci19Ci0KLXN0YXRpYyB2b2lkIGRpZEluaXRpYXRlTG9h
ZEZvclJlc291cmNlKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiB3a0ZyYW1lLCB1aW50NjRfdCByZXNv
dXJjZUlkZW50aWZpZXIsIFdLVVJMUmVxdWVzdFJlZiB3a1JlcXVlc3QsIGJvb2wgcGFnZUlzUHJv
dmlzaW9uYWxseUxvYWRpbmcsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAgYm9vbCBp
c01haW5SZXNvdXJjZSA9IChXS0ZyYW1lSXNNYWluRnJhbWUod2tGcmFtZSkgJiYgcGFnZUlzUHJv
dmlzaW9uYWxseUxvYWRpbmcpOwotICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiB3a1VybChBZG9w
dFdLLCBXS1VSTFJlcXVlc3RDb3B5VVJMKHdrUmVxdWVzdCkpOwotCi0gICAgUmVmUHRyPEV3a19S
ZXNvdXJjZT4gcmVzb3VyY2UgPSBFd2tfUmVzb3VyY2U6OmNyZWF0ZSh3a1VybC5nZXQoKSwgaXNN
YWluUmVzb3VyY2UpOwotICAgIFJlZlB0cjxFd2tfVXJsX1JlcXVlc3Q+IHJlcXVlc3QgPSBFd2tf
VXJsX1JlcXVlc3Q6OmNyZWF0ZSh3a1JlcXVlc3QpOwotICAgIGV3a192aWV3X3Jlc291cmNlX2xv
YWRfaW5pdGlhdGVkKHRvRXdrVmlldyhjbGllbnRJbmZvKSwgcmVzb3VyY2VJZGVudGlmaWVyLCBy
ZXNvdXJjZS5nZXQoKSwgcmVxdWVzdC5nZXQoKSk7Ci19Ci0KLXN0YXRpYyB2b2lkIGRpZFNlbmRS
ZXF1ZXN0Rm9yUmVzb3VyY2UoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCB1aW50NjRfdCByZXNvdXJj
ZUlkZW50aWZpZXIsIFdLVVJMUmVxdWVzdFJlZiB3a1JlcXVlc3QsIFdLVVJMUmVzcG9uc2VSZWYg
d2tSZWRpcmVjdFJlc3BvbnNlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQotewotICAgIFJlZlB0
cjxFd2tfVXJsX1JlcXVlc3Q+IHJlcXVlc3QgPSBFd2tfVXJsX1JlcXVlc3Q6OmNyZWF0ZSh3a1Jl
cXVlc3QpOwotICAgIFJlZlB0cjxFd2tfVXJsX1Jlc3BvbnNlPiByZWRpcmVjdFJlc3BvbnNlID0g
RXdrX1VybF9SZXNwb25zZTo6Y3JlYXRlKHdrUmVkaXJlY3RSZXNwb25zZSk7Ci0gICAgZXdrX3Zp
ZXdfcmVzb3VyY2VfcmVxdWVzdF9zZW50KHRvRXdrVmlldyhjbGllbnRJbmZvKSwgcmVzb3VyY2VJ
ZGVudGlmaWVyLCByZXF1ZXN0LmdldCgpLCByZWRpcmVjdFJlc3BvbnNlLmdldCgpKTsKLX0KLQot
c3RhdGljIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlRm9yUmVzb3VyY2UoV0tQYWdlUmVmLCBXS0Zy
YW1lUmVmLCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIsIFdLVVJMUmVzcG9uc2VSZWYgd2tS
ZXNwb25zZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSAgICBSZWZQdHI8RXdrX1VybF9S
ZXNwb25zZT4gcmVzcG9uc2UgPSBFd2tfVXJsX1Jlc3BvbnNlOjpjcmVhdGUod2tSZXNwb25zZSk7
Ci0gICAgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9yZXNwb25zZSh0b0V3a1ZpZXcoY2xpZW50SW5m
byksIHJlc291cmNlSWRlbnRpZmllciwgcmVzcG9uc2UuZ2V0KCkpOwotfQotCi1zdGF0aWMgdm9p
ZCBkaWRGaW5pc2hMb2FkRm9yUmVzb3VyY2UoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCB1aW50NjRf
dCByZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAgZXdr
X3ZpZXdfcmVzb3VyY2VfbG9hZF9maW5pc2hlZCh0b0V3a1ZpZXcoY2xpZW50SW5mbyksIHJlc291
cmNlSWRlbnRpZmllcik7Ci19Ci0KLXN0YXRpYyB2b2lkIGRpZEZhaWxMb2FkRm9yUmVzb3VyY2Uo
V0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIsIFdLRXJy
b3JSZWYgd2tFcnJvciwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSAgICBPd25QdHI8RXdr
X0Vycm9yPiBld2tFcnJvciA9IEV3a19FcnJvcjo6Y3JlYXRlKHdrRXJyb3IpOwotICAgIGV3a192
aWV3X3Jlc291cmNlX2xvYWRfZmFpbGVkKHRvRXdrVmlldyhjbGllbnRJbmZvKSwgcmVzb3VyY2VJ
ZGVudGlmaWVyLCBld2tFcnJvci5nZXQoKSk7Ci0gICAgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9m
aW5pc2hlZCh0b0V3a1ZpZXcoY2xpZW50SW5mbyksIHJlc291cmNlSWRlbnRpZmllcik7Ci19Ci0K
LXZvaWQgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9jbGllbnRfYXR0YWNoKFdLUGFnZVJlZiBwYWdl
UmVmLCBFdmFzX09iamVjdCogZXdrVmlldykKLXsKLSAgICBXS1BhZ2VSZXNvdXJjZUxvYWRDbGll
bnQgd2tSZXNvdXJjZUxvYWRDbGllbnQ7Ci0gICAgbWVtc2V0KCZ3a1Jlc291cmNlTG9hZENsaWVu
dCwgMCwgc2l6ZW9mKFdLUGFnZVJlc291cmNlTG9hZENsaWVudCkpOwotICAgIHdrUmVzb3VyY2VM
b2FkQ2xpZW50LnZlcnNpb24gPSBrV0tQYWdlUmVzb3VyY2VMb2FkQ2xpZW50Q3VycmVudFZlcnNp
b247Ci0gICAgd2tSZXNvdXJjZUxvYWRDbGllbnQuY2xpZW50SW5mbyA9IGV3a1ZpZXc7Ci0gICAg
d2tSZXNvdXJjZUxvYWRDbGllbnQuZGlkSW5pdGlhdGVMb2FkRm9yUmVzb3VyY2UgPSBkaWRJbml0
aWF0ZUxvYWRGb3JSZXNvdXJjZTsKLSAgICB3a1Jlc291cmNlTG9hZENsaWVudC5kaWRTZW5kUmVx
dWVzdEZvclJlc291cmNlID0gZGlkU2VuZFJlcXVlc3RGb3JSZXNvdXJjZTsKLSAgICB3a1Jlc291
cmNlTG9hZENsaWVudC5kaWRSZWNlaXZlUmVzcG9uc2VGb3JSZXNvdXJjZSA9IGRpZFJlY2VpdmVS
ZXNwb25zZUZvclJlc291cmNlOwotICAgIHdrUmVzb3VyY2VMb2FkQ2xpZW50LmRpZEZpbmlzaExv
YWRGb3JSZXNvdXJjZSA9IGRpZEZpbmlzaExvYWRGb3JSZXNvdXJjZTsKLSAgICB3a1Jlc291cmNl
TG9hZENsaWVudC5kaWRGYWlsTG9hZEZvclJlc291cmNlID0gZGlkRmFpbExvYWRGb3JSZXNvdXJj
ZTsKLQotICAgIFdLUGFnZVNldFBhZ2VSZXNvdXJjZUxvYWRDbGllbnQocGFnZVJlZiwgJndrUmVz
b3VyY2VMb2FkQ2xpZW50KTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a192aWV3X3Jlc291cmNlX2xvYWRfY2xpZW50X3ByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3Jlc291cmNlX2xvYWRfY2xpZW50
X3ByaXZhdGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWY0MDRiOS4uMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19yZXNvdXJj
ZV9sb2FkX2NsaWVudF9wcml2YXRlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIGV3a192aWV3X3Jlc291cmNlX2xvYWRfY2xpZW50
X3ByaXZhdGVfaAotI2RlZmluZSBld2tfdmlld19yZXNvdXJjZV9sb2FkX2NsaWVudF9wcml2YXRl
X2gKLQotI2luY2x1ZGUgPEV2YXMuaD4KLSNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgotCi12
b2lkIGV3a192aWV3X3Jlc291cmNlX2xvYWRfY2xpZW50X2F0dGFjaChXS1BhZ2VSZWYgcGFnZVJl
ZiwgRXZhc19PYmplY3QqIGV3a1ZpZXcpOwotCi0jZW5kaWYgLy8gZXdrX3ZpZXdfcmVzb3VyY2Vf
bG9hZF9jbGllbnRfcHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZWZsL1Jlc291cmNlTG9hZENsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZWZsL1Jlc291cmNlTG9hZENsaWVudEVmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uYjJkZmEyMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvUmVzb3VyY2VMb2FkQ2xpZW50RWZsLmNwcApAQCAtMCwwICsxLDE0NiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlc291
cmNlTG9hZENsaWVudEVmbC5oIgorCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAi
V0tGcmFtZS5oIgorI2luY2x1ZGUgIldLUGFnZS5oIgorI2luY2x1ZGUgIldLUmV0YWluUHRyLmgi
CisjaW5jbHVkZSAiZXdrX2Vycm9yX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfdXJsX3JlcXVl
c3RfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a191cmxfcmVzcG9uc2VfcHJpdmF0ZS5oIgorCit1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK3N0YXRp
YyBpbmxpbmUgUmVzb3VyY2VMb2FkQ2xpZW50RWZsKiB0b1Jlc291cmNlTG9hZENsaWVudEVmbChj
b25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxSZXNvdXJj
ZUxvYWRDbGllbnRFZmwqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7Cit9CisKK3Zv
aWQgUmVzb3VyY2VMb2FkQ2xpZW50RWZsOjpkaWRJbml0aWF0ZUxvYWRGb3JSZXNvdXJjZShXS1Bh
Z2VSZWYsIFdLRnJhbWVSZWYgd2tGcmFtZSwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBX
S1VSTFJlcXVlc3RSZWYgd2tSZXF1ZXN0LCBib29sIHBhZ2VJc1Byb3Zpc2lvbmFsbHlMb2FkaW5n
LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIFJlc291cmNlTG9hZENsaWVudEVmbCog
cmVzb3VyY2VMb2FkQ2xpZW50ID0gdG9SZXNvdXJjZUxvYWRDbGllbnRFZmwoY2xpZW50SW5mbyk7
CisgICAgYm9vbCBpc01haW5SZXNvdXJjZSA9IChXS0ZyYW1lSXNNYWluRnJhbWUod2tGcmFtZSkg
JiYgcGFnZUlzUHJvdmlzaW9uYWxseUxvYWRpbmcpOworICAgIFdLUmV0YWluUHRyPFdLVVJMUmVm
PiB3a1VybChBZG9wdFdLLCBXS1VSTFJlcXVlc3RDb3B5VVJMKHdrUmVxdWVzdCkpOworCisgICAg
UmVmUHRyPEV3a19SZXNvdXJjZT4gcmVzb3VyY2UgPSBFd2tfUmVzb3VyY2U6OmNyZWF0ZSh3a1Vy
bC5nZXQoKSwgaXNNYWluUmVzb3VyY2UpOworCisgICAgLy8gS2VlcCB0aGUgcmVzb3VyY2UgaW50
ZXJuYWxseSB0byByZXVzZSBpdCBsYXRlci4KKyAgICByZXNvdXJjZUxvYWRDbGllbnQtPm1fbG9h
ZGluZ1Jlc291cmNlc01hcC5hZGQocmVzb3VyY2VJZGVudGlmaWVyLCByZXNvdXJjZSk7CisKKyAg
ICBSZWZQdHI8RXdrX1VybF9SZXF1ZXN0PiByZXF1ZXN0ID0gRXdrX1VybF9SZXF1ZXN0OjpjcmVh
dGUod2tSZXF1ZXN0KTsKKyAgICBld2tfdmlld19yZXNvdXJjZV9sb2FkX2luaXRpYXRlZChyZXNv
dXJjZUxvYWRDbGllbnQtPm1fdmlldywgcmVzb3VyY2UuZ2V0KCksIHJlcXVlc3QuZ2V0KCkpOwor
fQorCit2b2lkIFJlc291cmNlTG9hZENsaWVudEVmbDo6ZGlkU2VuZFJlcXVlc3RGb3JSZXNvdXJj
ZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgV0tV
UkxSZXF1ZXN0UmVmIHdrUmVxdWVzdCwgV0tVUkxSZXNwb25zZVJlZiB3a1JlZGlyZWN0UmVzcG9u
c2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgUmVzb3VyY2VMb2FkQ2xpZW50RWZs
KiByZXNvdXJjZUxvYWRDbGllbnQgPSB0b1Jlc291cmNlTG9hZENsaWVudEVmbChjbGllbnRJbmZv
KTsKKworICAgIFJlZlB0cjxFd2tfUmVzb3VyY2U+IHJlc291cmNlID0gcmVzb3VyY2VMb2FkQ2xp
ZW50LT5tX2xvYWRpbmdSZXNvdXJjZXNNYXAuZ2V0KHJlc291cmNlSWRlbnRpZmllcik7CisgICAg
Ly8gT25seSBwcm9jZXNzIGlmIHdlIGtub3cgYWJvdXQgdGhpcyByZXNvdXJjZS4KKyAgICBpZiAo
IXJlc291cmNlKQorICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8RXdrX1VybF9SZXF1ZXN0
PiByZXF1ZXN0ID0gRXdrX1VybF9SZXF1ZXN0OjpjcmVhdGUod2tSZXF1ZXN0KTsKKyAgICBSZWZQ
dHI8RXdrX1VybF9SZXNwb25zZT4gcmVkaXJlY3RSZXNwb25zZSA9IEV3a19VcmxfUmVzcG9uc2U6
OmNyZWF0ZSh3a1JlZGlyZWN0UmVzcG9uc2UpOworICAgIGV3a192aWV3X3Jlc291cmNlX3JlcXVl
c3Rfc2VudChyZXNvdXJjZUxvYWRDbGllbnQtPm1fdmlldywgcmVzb3VyY2UuZ2V0KCksIHJlcXVl
c3QuZ2V0KCksIHJlZGlyZWN0UmVzcG9uc2UuZ2V0KCkpOworfQorCit2b2lkIFJlc291cmNlTG9h
ZENsaWVudEVmbDo6ZGlkUmVjZWl2ZVJlc3BvbnNlRm9yUmVzb3VyY2UoV0tQYWdlUmVmLCBXS0Zy
YW1lUmVmLCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIsIFdLVVJMUmVzcG9uc2VSZWYgd2tS
ZXNwb25zZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBSZXNvdXJjZUxvYWRDbGll
bnRFZmwqIHJlc291cmNlTG9hZENsaWVudCA9IHRvUmVzb3VyY2VMb2FkQ2xpZW50RWZsKGNsaWVu
dEluZm8pOworCisgICAgUmVmUHRyPEV3a19SZXNvdXJjZT4gcmVzb3VyY2UgPSByZXNvdXJjZUxv
YWRDbGllbnQtPm1fbG9hZGluZ1Jlc291cmNlc01hcC5nZXQocmVzb3VyY2VJZGVudGlmaWVyKTsK
KyAgICAvLyBPbmx5IHByb2Nlc3MgaWYgd2Uga25vdyBhYm91dCB0aGlzIHJlc291cmNlLgorICAg
IGlmICghcmVzb3VyY2UpCisgICAgICAgIHJldHVybjsKKworICAgIFJlZlB0cjxFd2tfVXJsX1Jl
c3BvbnNlPiByZXNwb25zZSA9IEV3a19VcmxfUmVzcG9uc2U6OmNyZWF0ZSh3a1Jlc3BvbnNlKTsK
KyAgICBld2tfdmlld19yZXNvdXJjZV9sb2FkX3Jlc3BvbnNlKHJlc291cmNlTG9hZENsaWVudC0+
bV92aWV3LCByZXNvdXJjZS5nZXQoKSwgcmVzcG9uc2UuZ2V0KCkpOworfQorCit2b2lkIFJlc291
cmNlTG9hZENsaWVudEVmbDo6ZGlkRmluaXNoTG9hZEZvclJlc291cmNlKFdLUGFnZVJlZiwgV0tG
cmFtZVJlZiwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBjb25zdCB2b2lkKiBjbGllbnRJ
bmZvKQoreworICAgIFJlc291cmNlTG9hZENsaWVudEVmbCogcmVzb3VyY2VMb2FkQ2xpZW50ID0g
dG9SZXNvdXJjZUxvYWRDbGllbnRFZmwoY2xpZW50SW5mbyk7CisKKyAgICBSZWZQdHI8RXdrX1Jl
c291cmNlPiByZXNvdXJjZSA9IHJlc291cmNlTG9hZENsaWVudC0+bV9sb2FkaW5nUmVzb3VyY2Vz
TWFwLmdldChyZXNvdXJjZUlkZW50aWZpZXIpOworICAgIC8vIE9ubHkgcHJvY2VzcyBpZiB3ZSBr
bm93IGFib3V0IHRoaXMgcmVzb3VyY2UuCisgICAgaWYgKCFyZXNvdXJjZSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9maW5pc2hlZChyZXNvdXJjZUxvYWRD
bGllbnQtPm1fdmlldywgcmVzb3VyY2UuZ2V0KCkpOworfQorCit2b2lkIFJlc291cmNlTG9hZENs
aWVudEVmbDo6ZGlkRmFpbExvYWRGb3JSZXNvdXJjZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIHVp
bnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgV0tFcnJvclJlZiB3a0Vycm9yLCBjb25zdCB2b2lk
KiBjbGllbnRJbmZvKQoreworICAgIFJlc291cmNlTG9hZENsaWVudEVmbCogcmVzb3VyY2VMb2Fk
Q2xpZW50ID0gdG9SZXNvdXJjZUxvYWRDbGllbnRFZmwoY2xpZW50SW5mbyk7CisKKyAgICBSZWZQ
dHI8RXdrX1Jlc291cmNlPiByZXNvdXJjZSA9IHJlc291cmNlTG9hZENsaWVudC0+bV9sb2FkaW5n
UmVzb3VyY2VzTWFwLnRha2UocmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICAvLyBPbmx5IHByb2Nl
c3MgaWYgd2Uga25vdyBhYm91dCB0aGlzIHJlc291cmNlLgorICAgIGlmICghcmVzb3VyY2UpCisg
ICAgICAgIHJldHVybjsKKworICAgIE93blB0cjxFd2tfRXJyb3I+IGV3a0Vycm9yID0gRXdrX0Vy
cm9yOjpjcmVhdGUod2tFcnJvcik7CisgICAgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9mYWlsZWQo
cmVzb3VyY2VMb2FkQ2xpZW50LT5tX3ZpZXcsIHJlc291cmNlLmdldCgpLCBld2tFcnJvci5nZXQo
KSk7CisgICAgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9maW5pc2hlZChyZXNvdXJjZUxvYWRDbGll
bnQtPm1fdmlldywgcmVzb3VyY2UuZ2V0KCkpOworfQorCit2b2lkIFJlc291cmNlTG9hZENsaWVu
dEVmbDo6b25WaWV3UHJvdmlzaW9uYWxMb2FkU3RhcnRlZCh2b2lkKiB1c2VyRGF0YSwgRXZhc19P
YmplY3QqLCB2b2lkKikKK3sKKyAgICBSZXNvdXJjZUxvYWRDbGllbnRFZmwqIHJlc291cmNlTG9h
ZENsaWVudCA9IHRvUmVzb3VyY2VMb2FkQ2xpZW50RWZsKHVzZXJEYXRhKTsKKworICAgIC8vIFRo
ZSB2aWV3IHN0YXJ0ZWQgYSBuZXcgbG9hZCwgY2xlYXIgaW50ZXJuYWwgcmVzb3VyY2UgbWFwLgor
ICAgIHJlc291cmNlTG9hZENsaWVudC0+bV9sb2FkaW5nUmVzb3VyY2VzTWFwLmNsZWFyKCk7Cit9
CisKK1Jlc291cmNlTG9hZENsaWVudEVmbDo6UmVzb3VyY2VMb2FkQ2xpZW50RWZsKEV2YXNfT2Jq
ZWN0KiB2aWV3KQorICAgIDogbV92aWV3KHZpZXcpCit7CisgICAgLy8gTGlzdGVuIGZvciAibG9h
ZCxwcm92aXNpb25hbCxzdGFydGVkIiBvbiB0aGUgdmlldyB0byBjbGVhciBpbnRlcm5hbCByZXNv
dXJjZXMgbWFwLgorICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChtX3ZpZXcsICJs
b2FkLHByb3Zpc2lvbmFsLHN0YXJ0ZWQiLCBvblZpZXdQcm92aXNpb25hbExvYWRTdGFydGVkLCB0
aGlzKTsKKworICAgIFdLUGFnZVJlZiBwYWdlUmVmID0gZXdrX3ZpZXdfd2twYWdlX2dldChtX3Zp
ZXcpOworICAgIEFTU0VSVChwYWdlUmVmKTsKKworICAgIFdLUGFnZVJlc291cmNlTG9hZENsaWVu
dCB3a1Jlc291cmNlTG9hZENsaWVudDsKKyAgICBtZW1zZXQoJndrUmVzb3VyY2VMb2FkQ2xpZW50
LCAwLCBzaXplb2YoV0tQYWdlUmVzb3VyY2VMb2FkQ2xpZW50KSk7CisgICAgd2tSZXNvdXJjZUxv
YWRDbGllbnQudmVyc2lvbiA9IGtXS1BhZ2VSZXNvdXJjZUxvYWRDbGllbnRDdXJyZW50VmVyc2lv
bjsKKyAgICB3a1Jlc291cmNlTG9hZENsaWVudC5jbGllbnRJbmZvID0gdGhpczsKKyAgICB3a1Jl
c291cmNlTG9hZENsaWVudC5kaWRJbml0aWF0ZUxvYWRGb3JSZXNvdXJjZSA9IGRpZEluaXRpYXRl
TG9hZEZvclJlc291cmNlOworICAgIHdrUmVzb3VyY2VMb2FkQ2xpZW50LmRpZFNlbmRSZXF1ZXN0
Rm9yUmVzb3VyY2UgPSBkaWRTZW5kUmVxdWVzdEZvclJlc291cmNlOworICAgIHdrUmVzb3VyY2VM
b2FkQ2xpZW50LmRpZFJlY2VpdmVSZXNwb25zZUZvclJlc291cmNlID0gZGlkUmVjZWl2ZVJlc3Bv
bnNlRm9yUmVzb3VyY2U7CisgICAgd2tSZXNvdXJjZUxvYWRDbGllbnQuZGlkRmluaXNoTG9hZEZv
clJlc291cmNlID0gZGlkRmluaXNoTG9hZEZvclJlc291cmNlOworICAgIHdrUmVzb3VyY2VMb2Fk
Q2xpZW50LmRpZEZhaWxMb2FkRm9yUmVzb3VyY2UgPSBkaWRGYWlsTG9hZEZvclJlc291cmNlOwor
CisgICAgV0tQYWdlU2V0UGFnZVJlc291cmNlTG9hZENsaWVudChwYWdlUmVmLCAmd2tSZXNvdXJj
ZUxvYWRDbGllbnQpOworfQorCitSZXNvdXJjZUxvYWRDbGllbnRFZmw6On5SZXNvdXJjZUxvYWRD
bGllbnRFZmwoKQoreworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2RlbChtX3ZpZXcs
ICJsb2FkLHByb3Zpc2lvbmFsLHN0YXJ0ZWQiLCBvblZpZXdQcm92aXNpb25hbExvYWRTdGFydGVk
KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUmVzb3VyY2VM
b2FkQ2xpZW50RWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1Jlc291cmNlTG9h
ZENsaWVudEVmbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmMDExZmQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1Jlc291cmNl
TG9hZENsaWVudEVmbC5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgUmVzb3VyY2VMb2FkQ2xpZW50RWZsX2gKKyNkZWZpbmUgUmVzb3VyY2VMb2FkQ2xpZW50
RWZsX2gKKworI2luY2x1ZGUgImV3a19yZXNvdXJjZV9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdr
X3ZpZXdfcHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3Rm
L1Bhc3NPd25QdHIuaD4KKworY2xhc3MgUmVzb3VyY2VMb2FkQ2xpZW50RWZsIHsKK3B1YmxpYzoK
KyAgICB+UmVzb3VyY2VMb2FkQ2xpZW50RWZsKCk7CisKKyAgICBzdGF0aWMgUGFzc093blB0cjxS
ZXNvdXJjZUxvYWRDbGllbnRFZmw+IGNyZWF0ZShFdmFzX09iamVjdCogdmlldykKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgUmVzb3VyY2VMb2FkQ2xpZW50RWZsKHZpZXcpKTsK
KyAgICB9CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgUmVzb3VyY2VMb2FkQ2xpZW50RWZsKEV2
YXNfT2JqZWN0KiB2aWV3KTsKKworICAgIHN0YXRpYyB2b2lkIGRpZEluaXRpYXRlTG9hZEZvclJl
c291cmNlKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVy
LCBXS1VSTFJlcXVlc3RSZWYsIGJvb2wgcGFnZUlzUHJvdmlzaW9uYWxseUxvYWRpbmcsIGNvbnN0
IHZvaWQqIGNsaWVudEluZm8pOworICAgIHN0YXRpYyB2b2lkIGRpZFNlbmRSZXF1ZXN0Rm9yUmVz
b3VyY2UoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIs
IFdLVVJMUmVxdWVzdFJlZiwgV0tVUkxSZXNwb25zZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5m
byk7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlRm9yUmVzb3VyY2UoV0tQYWdl
UmVmLCBXS0ZyYW1lUmVmLCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIsIFdLVVJMUmVzcG9u
c2VSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlz
aExvYWRGb3JSZXNvdXJjZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIHVpbnQ2NF90IHJlc291cmNl
SWRlbnRpZmllciwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisgICAgc3RhdGljIHZvaWQgZGlk
RmFpbExvYWRGb3JSZXNvdXJjZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIHVpbnQ2NF90IHJlc291
cmNlSWRlbnRpZmllciwgV0tFcnJvclJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisKKyAg
ICBzdGF0aWMgdm9pZCBvblZpZXdQcm92aXNpb25hbExvYWRTdGFydGVkKHZvaWQqIHVzZXJEYXRh
LCBFdmFzX09iamVjdCogdmlldywgdm9pZCogY2xpZW50SW5mbyk7CisKKyAgICBFdmFzX09iamVj
dCogbV92aWV3OworICAgIHR5cGVkZWYgSGFzaE1hcDwgdWludDY0X3QsIFJlZlB0cjxFd2tfUmVz
b3VyY2U+ID4gTG9hZGluZ1Jlc291cmNlc01hcDsKKyAgICBMb2FkaW5nUmVzb3VyY2VzTWFwIG1f
bG9hZGluZ1Jlc291cmNlc01hcDsKK307CisKKyNlbmRpZiAvLyBSZXNvdXJjZUxvYWRDbGllbnRF
ZmxfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169929</attachid>
            <date>2012-10-22 09:50:50 -0700</date>
            <delta_ts>2012-10-22 12:53:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>99982_resourceLoadClient_cpp.patch</filename>
            <type>text/plain</type>
            <size>31113</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBhYzRhNWJkLi4zMzRmMjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNTEg
QEAKIDIwMTItMTAtMjIgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KIAorICAgICAgICBbRUZMXVtXSzJdIE1ha2UgdGhlIHJlc291cmNlIGxvYWQgY2xpZW50
IGEgQysrIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05OTk4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIENyZWF0ZSBhIEMrKyBjbGFzcyBmb3IgdGhlIHJlc291cmNlIGxvYWQgY2xpZW50IGFuZAor
ICAgICAgICBtb3ZlIHRoZSBpZCA8LT4gcmVzb3VyY2UgbWFwcGluZyBmcm9tIHRoZSBFd2tfVmll
dworICAgICAgICB0byBSZXNvdXJjZUxvYWRDbGllbnRFZmwgZm9yIGJldHRlciBhIGNsZWFuZXIK
KyAgICAgICAgc2VwYXJhdGlvbi4KKworICAgICAgICBUaGUgcmVzb3VyY2UgbG9hZCBjbGllbnQg
Y29kZSB3YXMgYWxzbyBtb3ZlZCBvdXQgb2YKKyAgICAgICAgVUlQcm9jZXNzL0FQSS9lZmwgdG8g
VUlQcm9jZXNzL2VmbCBzaW5jZSB0aGlzIGlzIG5vdAorICAgICAgICBwYXJ0IG9mIHRoZSBXSzIg
RUZMIEFQSS4KKworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcDoKKyAgICAgICAgKEV3a19WaWV3X1ByaXZhdGVfRGF0
YSk6CisgICAgICAgIChfZXdrX3ZpZXdfaW5pdGlhbGl6ZSk6CisgICAgICAgIChld2tfdmlld193
a3BhZ2VfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X3Jlc291cmNlX2xvYWRfaW5pdGlhdGVkKToK
KyAgICAgICAgKGV3a192aWV3X3Jlc291cmNlX2xvYWRfcmVzcG9uc2UpOgorICAgICAgICAoZXdr
X3ZpZXdfcmVzb3VyY2VfbG9hZF9mYWlsZWQpOgorICAgICAgICAoZXdrX3ZpZXdfcmVzb3VyY2Vf
bG9hZF9maW5pc2hlZCk6CisgICAgICAgIChld2tfdmlld19yZXNvdXJjZV9yZXF1ZXN0X3NlbnQp
OgorICAgICAgICAoZXdrX3ZpZXdfbG9hZF9wcm92aXNpb25hbF9zdGFydGVkKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9jbGllbnQuY3BwOiBSZW1vdmVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3Jlc291cmNlX2xvYWRfY2xpZW50
X3ByaXZhdGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1Jlc291cmNlTG9h
ZENsaWVudEVmbC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktp
dDo6dG9SZXNvdXJjZUxvYWRDbGllbnRFZmwpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxv
YWRDbGllbnRFZmw6OmRpZEluaXRpYXRlTG9hZEZvclJlc291cmNlKToKKyAgICAgICAgKFdlYktp
dDo6UmVzb3VyY2VMb2FkQ2xpZW50RWZsOjpkaWRTZW5kUmVxdWVzdEZvclJlc291cmNlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkQ2xpZW50RWZsOjpkaWRSZWNlaXZlUmVzcG9uc2VG
b3JSZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZENsaWVudEVmbDo6ZGlk
RmluaXNoTG9hZEZvclJlc291cmNlKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkQ2xp
ZW50RWZsOjpkaWRGYWlsTG9hZEZvclJlc291cmNlKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3Vy
Y2VMb2FkQ2xpZW50RWZsOjpvblZpZXdQcm92aXNpb25hbExvYWRTdGFydGVkKToKKyAgICAgICAg
KFdlYktpdDo6UmVzb3VyY2VMb2FkQ2xpZW50RWZsOjpSZXNvdXJjZUxvYWRDbGllbnRFZmwpOgor
ICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRDbGllbnRFZmw6On5SZXNvdXJjZUxvYWRDbGll
bnRFZmwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvUmVzb3VyY2VMb2FkQ2xpZW50RWZsLmg6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFJlc291cmNlTG9hZENsaWVudEVm
bCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZENsaWVudEVmbDo6Y3JlYXRlKToKKwor
MjAxMi0xMC0yMiAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29t
PgorCiAgICAgICAgIFtFRkxdW1dLMl0gTWVtb3J5IGxlYWsgaW4gRXdrX0Zvcm1fU3VibWlzc2lv
bl9SZXF1ZXN0OjpmaWVsZFZhbHVlKCkKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTk5OTkzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggNTE5
YWRmYi4uMTYzODU3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21h
a2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTc1LDExICs3NSwx
MSBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9l
d2tfdmlld19mb3JtX2NsaWVudC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19s
b2FkZXJfY2xpZW50LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3BvbGljeV9j
bGllbnQuY3BwCi0gICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9j
bGllbnQuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfdWlfY2xpZW50LmNwcAog
CiAgICAgVUlQcm9jZXNzL2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNwcAogCisgICAgVUlQcm9j
ZXNzL2VmbC9SZXNvdXJjZUxvYWRDbGllbnRFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9UZXh0
Q2hlY2tlckVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRFZmwuY3BwCiAgICAg
VUlQcm9jZXNzL2VmbC9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5RWZsLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCmluZGV4IDI0NmEyNGQuLjcz
MDk4NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5j
cHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJOYXRpdmVXZWJXaGVlbEV2ZW50LmgiCiAj
aW5jbHVkZSAiUGFnZUNsaWVudEltcGwuaCIKICNpbmNsdWRlICJSZWZQdHJFZmwuaCIKKyNpbmNs
dWRlICJSZXNvdXJjZUxvYWRDbGllbnRFZmwuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNp
bmNsdWRlICJXS0NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXIuaCIKICNpbmNsdWRlICJXS0VpbmFT
aGFyZWRTdHJpbmcuaCIKQEAgLTU0LDcgKzU1LDYgQEAKICNpbmNsdWRlICJld2tfdmlld19sb2Fk
ZXJfY2xpZW50X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfdmlld19wb2xpY3lfY2xpZW50X3By
aXZhdGUuaCIKICNpbmNsdWRlICJld2tfdmlld19wcml2YXRlLmgiCi0jaW5jbHVkZSAiZXdrX3Zp
ZXdfcmVzb3VyY2VfbG9hZF9jbGllbnRfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a192aWV3X3Vp
X2NsaWVudF9wcml2YXRlLmgiCiAjaW5jbHVkZSA8RWNvcmVfRXZhcy5oPgogI2luY2x1ZGUgPEVk
amUuaD4KQEAgLTg2LDcgKzg2LDYgQEAgc3RhdGljIGNvbnN0IGNoYXIgRVdLX1ZJRVdfVFlQRV9T
VFJbXSA9ICJFV0syX1ZpZXciOwogCiBzdGF0aWMgY29uc3QgaW50IGRlZmF1bHRDdXJzb3JTaXpl
ID0gMTY7CiAKLXR5cGVkZWYgSGFzaE1hcDwgdWludDY0X3QsIFJlZlB0cjxFd2tfUmVzb3VyY2U+
ID4gTG9hZGluZ1Jlc291cmNlc01hcDsKIHN0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9mYXZpY29u
X2NoYW5nZWQoY29uc3QgY2hhciogcGFnZVVSTCwgdm9pZCogZXZlbnRJbmZvKTsKIAogdHlwZWRl
ZiBIYXNoTWFwPGNvbnN0IFdlYlBhZ2VQcm94eSosIGNvbnN0IEV2YXNfT2JqZWN0Kj4gUGFnZVZp
ZXdNYXA7CkBAIC0xMTksNiArMTE4LDcgQEAgc3RydWN0IEV3a19WaWV3X1ByaXZhdGVfRGF0YSB7
CiAgICAgT3duUHRyPFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw+IHBhZ2VWaWV3cG9y
dENvbnRyb2xsZXJDbGllbnQ7CiAjZW5kaWYKICAgICBSZWZQdHI8V2ViUGFnZVByb3h5PiBwYWdl
UHJveHk7CisgICAgT3duUHRyPFJlc291cmNlTG9hZENsaWVudEVmbD4gcmVzb3VyY2VMb2FkQ2xp
ZW50OwogCiAgICAgV0tFaW5hU2hhcmVkU3RyaW5nIHVybDsKICAgICBXS0VpbmFTaGFyZWRTdHJp
bmcgdGl0bGU7CkBAIC0xMjcsNyArMTI3LDYgQEAgc3RydWN0IEV3a19WaWV3X1ByaXZhdGVfRGF0
YSB7CiAgICAgV0tFaW5hU2hhcmVkU3RyaW5nIGN1cnNvckdyb3VwOwogICAgIFdLRWluYVNoYXJl
ZFN0cmluZyBmYXZpY29uVVJMOwogICAgIFJlZlB0cjxFdmFzX09iamVjdD4gY3Vyc29yT2JqZWN0
OwotICAgIExvYWRpbmdSZXNvdXJjZXNNYXAgbG9hZGluZ1Jlc291cmNlc01hcDsKICAgICBPd25Q
dHI8RXdrX0JhY2tfRm9yd2FyZF9MaXN0PiBiYWNrRm9yd2FyZExpc3Q7CiAgICAgT3duUHRyPEV3
a19TZXR0aW5ncz4gc2V0dGluZ3M7CiAgICAgYm9vbCBhcmVNb3VzZUV2ZW50c0VuYWJsZWQ7CkBA
IC04MjYsMTcgKzgyNSwxOCBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfaW5pdGlhbGl6ZShFdmFz
X09iamVjdCogZXdrVmlldywgUGFzc1JlZlB0cjxFd2tfQ29udGV4dD4gYwogICAgIHByaXYtPnBh
Z2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQgPSBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50
RWZsOjpjcmVhdGUoZXdrVmlldyk7CiAjZW5kaWYKIAorICAgIC8vIEluaXRpYWxpemUgcGFnZSBj
bGllbnRzLgogICAgIFdLUGFnZVJlZiB3a1BhZ2UgPSB0b0FQSShwcml2LT5wYWdlUHJveHkuZ2V0
KCkpOwogICAgIGV3a192aWV3X2ZpbmRfY2xpZW50X2F0dGFjaCh3a1BhZ2UsIGV3a1ZpZXcpOwog
ICAgIGV3a192aWV3X2Zvcm1fY2xpZW50X2F0dGFjaCh3a1BhZ2UsIGV3a1ZpZXcpOwogICAgIGV3
a192aWV3X2xvYWRlcl9jbGllbnRfYXR0YWNoKHdrUGFnZSwgZXdrVmlldyk7CiAgICAgZXdrX3Zp
ZXdfcG9saWN5X2NsaWVudF9hdHRhY2god2tQYWdlLCBld2tWaWV3KTsKLSAgICBld2tfdmlld19y
ZXNvdXJjZV9sb2FkX2NsaWVudF9hdHRhY2god2tQYWdlLCBld2tWaWV3KTsKICAgICBld2tfdmll
d191aV9jbGllbnRfYXR0YWNoKHdrUGFnZSwgZXdrVmlldyk7CiAjaWYgRU5BQkxFKEZVTExTQ1JF
RU5fQVBJKQogICAgIHByaXYtPnBhZ2VQcm94eS0+ZnVsbFNjcmVlbk1hbmFnZXIoKS0+c2V0V2Vi
Vmlldyhld2tWaWV3KTsKICAgICBld2tfc2V0dGluZ3NfZnVsbHNjcmVlbl9lbmFibGVkX3NldChw
cml2LT5zZXR0aW5ncy5nZXQoKSwgdHJ1ZSk7CiAjZW5kaWYKKyAgICBwcml2LT5yZXNvdXJjZUxv
YWRDbGllbnQgPSBSZXNvdXJjZUxvYWRDbGllbnRFZmw6OmNyZWF0ZShld2tWaWV3KTsKIAogICAg
IC8qIExpc3RlbiBmb3IgZmF2aWNvbiBjaGFuZ2VzICovCiAgICAgRXdrX0Zhdmljb25fRGF0YWJh
c2UqIGljb25EYXRhYmFzZSA9IHByaXYtPmNvbnRleHQtPmZhdmljb25EYXRhYmFzZSgpOwpAQCAt
MTAxNCwyMCArMTAxNCwyNiBAQCBFd2tfU2V0dGluZ3MqIGV3a192aWV3X3NldHRpbmdzX2dldChj
b25zdCBFdmFzX09iamVjdCogZXdrVmlldykKIAogLyoqCiAgKiBAaW50ZXJuYWwKKyAqIFJldHJp
ZXZlcyB0aGUgaW50ZXJuYWwgV0tQYWdlIGZvciB0aGlzIHZpZXcuCisgKi8KK1dLUGFnZVJlZiBl
d2tfdmlld193a3BhZ2VfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQoreworICAgIEVX
S19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCAwKTsKKyAgICBFV0tf
VklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCAwKTsKKworICAgIHJldHVy
biB0b0FQSShwcml2LT5wYWdlUHJveHkuZ2V0KCkpOworfQorCisvKioKKyAqIEBpbnRlcm5hbAog
ICogTG9hZCB3YXMgaW5pdGlhdGVkIGZvciBhIHJlc291cmNlIGluIHRoZSB2aWV3LgogICoKICAq
IEVtaXRzIHNpZ25hbDogInJlc291cmNlLHJlcXVlc3QsbmV3IiB3aXRoIHBvaW50ZXIgdG8gcmVz
b3VyY2UgcmVxdWVzdC4KICAqLwotdm9pZCBld2tfdmlld19yZXNvdXJjZV9sb2FkX2luaXRpYXRl
ZChFdmFzX09iamVjdCogZXdrVmlldywgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBFd2tf
UmVzb3VyY2UqIHJlc291cmNlLCBFd2tfVXJsX1JlcXVlc3QqIHJlcXVlc3QpCit2b2lkIGV3a192
aWV3X3Jlc291cmNlX2xvYWRfaW5pdGlhdGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfUmVz
b3VyY2UqIHJlc291cmNlLCBFd2tfVXJsX1JlcXVlc3QqIHJlcXVlc3QpCiB7Ci0gICAgRVdLX1ZJ
RVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEpOwotICAgIEVXS19WSUVXX1BS
SVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYpOwotCiAgICAgRXdrX1Jlc291cmNlX1Jl
cXVlc3QgcmVzb3VyY2VSZXF1ZXN0ID0ge3Jlc291cmNlLCByZXF1ZXN0LCAwfTsKIAotICAgIC8v
IEtlZXAgdGhlIHJlc291cmNlIGludGVybmFsbHkgdG8gcmV1c2UgaXQgbGF0ZXIuCi0gICAgcHJp
di0+bG9hZGluZ1Jlc291cmNlc01hcC5hZGQocmVzb3VyY2VJZGVudGlmaWVyLCByZXNvdXJjZSk7
Ci0KICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJyZXNvdXJj
ZSxyZXF1ZXN0LG5ldyIsICZyZXNvdXJjZVJlcXVlc3QpOwogfQogCkBAIC0xMDM3LDE2ICsxMDQz
LDkgQEAgdm9pZCBld2tfdmlld19yZXNvdXJjZV9sb2FkX2luaXRpYXRlZChFdmFzX09iamVjdCog
ZXdrVmlldywgdWludDY0X3QgcmVzb3VyY2VJZGUKICAqCiAgKiBFbWl0cyBzaWduYWw6ICJyZXNv
dXJjZSxyZXF1ZXN0LHJlc3BvbnNlIiB3aXRoIHBvaW50ZXIgdG8gcmVzb3VyY2UgcmVzcG9uc2Uu
CiAgKi8KLXZvaWQgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9yZXNwb25zZShFdmFzX09iamVjdCog
ZXdrVmlldywgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBFd2tfVXJsX1Jlc3BvbnNlKiBy
ZXNwb25zZSkKK3ZvaWQgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9yZXNwb25zZShFdmFzX09iamVj
dCogZXdrVmlldywgRXdrX1Jlc291cmNlKiByZXNvdXJjZSwgRXdrX1VybF9SZXNwb25zZSogcmVz
cG9uc2UpCiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERh
dGEpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYpOwot
Ci0gICAgaWYgKCFwcml2LT5sb2FkaW5nUmVzb3VyY2VzTWFwLmNvbnRhaW5zKHJlc291cmNlSWRl
bnRpZmllcikpCi0gICAgICAgIHJldHVybjsKLQotICAgIFJlZlB0cjxFd2tfUmVzb3VyY2U+IHJl
c291cmNlID0gcHJpdi0+bG9hZGluZ1Jlc291cmNlc01hcC5nZXQocmVzb3VyY2VJZGVudGlmaWVy
KTsKLSAgICBFd2tfUmVzb3VyY2VfTG9hZF9SZXNwb25zZSByZXNvdXJjZUxvYWRSZXNwb25zZSA9
IHtyZXNvdXJjZS5nZXQoKSwgcmVzcG9uc2V9OworICAgIEV3a19SZXNvdXJjZV9Mb2FkX1Jlc3Bv
bnNlIHJlc291cmNlTG9hZFJlc3BvbnNlID0ge3Jlc291cmNlLCByZXNwb25zZX07CiAgICAgZXZh
c19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tWaWV3LCAicmVzb3VyY2UscmVxdWVzdCxy
ZXNwb25zZSIsICZyZXNvdXJjZUxvYWRSZXNwb25zZSk7CiB9CiAKQEAgLTEwNTYsMTYgKzEwNTUs
OSBAQCB2b2lkIGV3a192aWV3X3Jlc291cmNlX2xvYWRfcmVzcG9uc2UoRXZhc19PYmplY3QqIGV3
a1ZpZXcsIHVpbnQ2NF90IHJlc291cmNlSWRlbgogICoKICAqIEVtaXRzIHNpZ25hbDogInJlc291
cmNlLHJlcXVlc3QsZmluaXNoZWQiIHdpdGggcG9pbnRlciB0byB0aGUgcmVzb3VyY2UgbG9hZCBl
cnJvci4KICAqLwotdm9pZCBld2tfdmlld19yZXNvdXJjZV9sb2FkX2ZhaWxlZChFdmFzX09iamVj
dCogZXdrVmlldywgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBFd2tfRXJyb3IqIGVycm9y
KQordm9pZCBld2tfdmlld19yZXNvdXJjZV9sb2FkX2ZhaWxlZChFdmFzX09iamVjdCogZXdrVmll
dywgRXdrX1Jlc291cmNlKiByZXNvdXJjZSwgRXdrX0Vycm9yKiBlcnJvcikKIHsKLSAgICBFV0tf
VklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7Ci0gICAgRVdLX1ZJRVdf
UFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdik7Ci0KLSAgICBpZiAoIXByaXYtPmxv
YWRpbmdSZXNvdXJjZXNNYXAuY29udGFpbnMocmVzb3VyY2VJZGVudGlmaWVyKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgUmVmUHRyPEV3a19SZXNvdXJjZT4gcmVzb3VyY2UgPSBwcml2LT5sb2Fk
aW5nUmVzb3VyY2VzTWFwLmdldChyZXNvdXJjZUlkZW50aWZpZXIpOwotICAgIEV3a19SZXNvdXJj
ZV9Mb2FkX0Vycm9yIHJlc291cmNlTG9hZEVycm9yID0ge3Jlc291cmNlLmdldCgpLCBlcnJvcn07
CisgICAgRXdrX1Jlc291cmNlX0xvYWRfRXJyb3IgcmVzb3VyY2VMb2FkRXJyb3IgPSB7cmVzb3Vy
Y2UsIGVycm9yfTsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcs
ICJyZXNvdXJjZSxyZXF1ZXN0LGZhaWxlZCIsICZyZXNvdXJjZUxvYWRFcnJvcik7CiB9CiAKQEAg
LTEwNzUsMTYgKzEwNjcsOSBAQCB2b2lkIGV3a192aWV3X3Jlc291cmNlX2xvYWRfZmFpbGVkKEV2
YXNfT2JqZWN0KiBld2tWaWV3LCB1aW50NjRfdCByZXNvdXJjZUlkZW50aQogICoKICAqIEVtaXRz
IHNpZ25hbDogInJlc291cmNlLHJlcXVlc3QsZmluaXNoZWQiIHdpdGggcG9pbnRlciB0byB0aGUg
cmVzb3VyY2UuCiAgKi8KLXZvaWQgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9maW5pc2hlZChFdmFz
X09iamVjdCogZXdrVmlldywgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyKQordm9pZCBld2tf
dmlld19yZXNvdXJjZV9sb2FkX2ZpbmlzaGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfUmVz
b3VyY2UqIHJlc291cmNlKQogewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmll
dywgc21hcnREYXRhKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRh
LCBwcml2KTsKLQotICAgIGlmICghcHJpdi0+bG9hZGluZ1Jlc291cmNlc01hcC5jb250YWlucyhy
ZXNvdXJjZUlkZW50aWZpZXIpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBSZWZQdHI8RXdrX1Jl
c291cmNlPiByZXNvdXJjZSA9IHByaXYtPmxvYWRpbmdSZXNvdXJjZXNNYXAudGFrZShyZXNvdXJj
ZUlkZW50aWZpZXIpOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmll
dywgInJlc291cmNlLHJlcXVlc3QsZmluaXNoZWQiLCByZXNvdXJjZS5nZXQoKSk7CisgICAgZXZh
c19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tWaWV3LCAicmVzb3VyY2UscmVxdWVzdCxm
aW5pc2hlZCIsIHJlc291cmNlKTsKIH0KIAogLyoqCkBAIC0xMDkzLDE3ICsxMDc4LDkgQEAgdm9p
ZCBld2tfdmlld19yZXNvdXJjZV9sb2FkX2ZpbmlzaGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCB1
aW50NjRfdCByZXNvdXJjZUlkZW4KICAqCiAgKiBFbWl0cyBzaWduYWw6ICJyZXNvdXJjZSxyZXF1
ZXN0LHNlbnQiIHdpdGggcG9pbnRlciB0byByZXNvdXJjZSByZXF1ZXN0IGFuZCBwb3NzaWJsZSBy
ZWRpcmVjdCByZXNwb25zZS4KICAqLwotdm9pZCBld2tfdmlld19yZXNvdXJjZV9yZXF1ZXN0X3Nl
bnQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgRXdr
X1VybF9SZXF1ZXN0KiByZXF1ZXN0LCBFd2tfVXJsX1Jlc3BvbnNlKiByZWRpcmVjdFJlc3BvbnNl
KQordm9pZCBld2tfdmlld19yZXNvdXJjZV9yZXF1ZXN0X3NlbnQoRXZhc19PYmplY3QqIGV3a1Zp
ZXcsIEV3a19SZXNvdXJjZSogcmVzb3VyY2UsIEV3a19VcmxfUmVxdWVzdCogcmVxdWVzdCwgRXdr
X1VybF9SZXNwb25zZSogcmVkaXJlY3RSZXNwb25zZSkKIHsKLSAgICBFV0tfVklFV19TRF9HRVRf
T1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1Jf
UkVUVVJOKHNtYXJ0RGF0YSwgcHJpdik7Ci0KLSAgICBpZiAoIXByaXYtPmxvYWRpbmdSZXNvdXJj
ZXNNYXAuY29udGFpbnMocmVzb3VyY2VJZGVudGlmaWVyKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgUmVmUHRyPEV3a19SZXNvdXJjZT4gcmVzb3VyY2UgPSBwcml2LT5sb2FkaW5nUmVzb3VyY2Vz
TWFwLmdldChyZXNvdXJjZUlkZW50aWZpZXIpOwotICAgIEV3a19SZXNvdXJjZV9SZXF1ZXN0IHJl
c291cmNlUmVxdWVzdCA9IHtyZXNvdXJjZS5nZXQoKSwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25z
ZX07Ci0KKyAgICBFd2tfUmVzb3VyY2VfUmVxdWVzdCByZXNvdXJjZVJlcXVlc3QgPSB7cmVzb3Vy
Y2UsIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2V9OwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2Nh
bGxiYWNrX2NhbGwoZXdrVmlldywgInJlc291cmNlLHJlcXVlc3Qsc2VudCIsICZyZXNvdXJjZVJl
cXVlc3QpOwogfQogCkBAIC0xNTM3LDEzICsxNTE0LDYgQEAgdm9pZCBld2tfdmlld19sb2FkX3By
b3Zpc2lvbmFsX3JlZGlyZWN0KEV2YXNfT2JqZWN0KiBld2tWaWV3KQogICovCiB2b2lkIGV3a192
aWV3X2xvYWRfcHJvdmlzaW9uYWxfc3RhcnRlZChFdmFzX09iamVjdCogZXdrVmlldykKIHsKLSAg
ICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7Ci0gICAgRVdL
X1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdik7Ci0KLSAgICAvLyBUaGUg
bWFpbiBmcmFtZSBzdGFydGVkIHByb3Zpc2lvbmFsIGxvYWQsIHdlIHNob3VsZCBjbGVhcgotICAg
IC8vIHRoZSBsb2FkaW5nUmVzb3VyY2VzIEhhc2hNYXAgdG8gc3RhcnQgY2xlYW4uCi0gICAgcHJp
di0+bG9hZGluZ1Jlc291cmNlc01hcC5jbGVhcigpOwotCiAgICAgZXdrX3ZpZXdfdXJsX3VwZGF0
ZShld2tWaWV3KTsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcs
ICJsb2FkLHByb3Zpc2lvbmFsLHN0YXJ0ZWQiLCAwKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaAppbmRleCA2MWM3YmQ0Li4y
MDY2ZjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
dmlld19wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3ZpZXdfcHJpdmF0ZS5oCkBAIC03NywxNyArNzcsMTkgQEAgdm9pZCBld2tfdmlld19wYWdlX2Ns
b3NlKEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKIFdLUGFnZVJlZiBld2tfdmlld19wYWdlX2NyZWF0
ZShFdmFzX09iamVjdCogZXdrVmlldyk7CiB2b2lkIGV3a192aWV3X3RpdGxlX2NoYW5nZWQoRXZh
c19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqIHRpdGxlKTsKIHZvaWQgZXdrX3ZpZXdfdG9v
bHRpcF90ZXh0X3NldChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgY2hhciogdGV4dCk7Ci12
b2lkIGV3a192aWV3X3Jlc291cmNlX2xvYWRfZmFpbGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCB1
aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIsIEV3a19FcnJvciogZXJyb3IpOwotdm9pZCBld2tf
dmlld19yZXNvdXJjZV9sb2FkX2ZpbmlzaGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCB1aW50NjRf
dCByZXNvdXJjZUlkZW50aWZpZXIpOwotdm9pZCBld2tfdmlld19yZXNvdXJjZV9sb2FkX2luaXRp
YXRlZChFdmFzX09iamVjdCogZXdrVmlldywgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBF
d2tfUmVzb3VyY2UqIHJlc291cmNlLCBFd2tfVXJsX1JlcXVlc3QqIHJlcXVlc3QpOwotdm9pZCBl
d2tfdmlld19yZXNvdXJjZV9sb2FkX3Jlc3BvbnNlKEV2YXNfT2JqZWN0KiBld2tWaWV3LCB1aW50
NjRfdCByZXNvdXJjZUlkZW50aWZpZXIsIEV3a19VcmxfUmVzcG9uc2UqIHJlc3BvbnNlKTsKLXZv
aWQgZXdrX3ZpZXdfcmVzb3VyY2VfcmVxdWVzdF9zZW50KEV2YXNfT2JqZWN0KiBld2tWaWV3LCB1
aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIsIEV3a19VcmxfUmVxdWVzdCogcmVxdWVzdCwgRXdr
X1VybF9SZXNwb25zZSogcmVkaXJlY3RSZXNwb25zZSk7Cit2b2lkIGV3a192aWV3X3Jlc291cmNl
X2xvYWRfZmFpbGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfUmVzb3VyY2UqIHJlc291cmNl
LCBFd2tfRXJyb3IqIGVycm9yKTsKK3ZvaWQgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9maW5pc2hl
ZChFdmFzX09iamVjdCogZXdrVmlldywgRXdrX1Jlc291cmNlKiByZXNvdXJjZSk7Cit2b2lkIGV3
a192aWV3X3Jlc291cmNlX2xvYWRfaW5pdGlhdGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tf
UmVzb3VyY2UqIHJlc291cmNlLCBFd2tfVXJsX1JlcXVlc3QqIHJlcXVlc3QpOwordm9pZCBld2tf
dmlld19yZXNvdXJjZV9sb2FkX3Jlc3BvbnNlKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfUmVz
b3VyY2UqIHJlc291cmNlLCBFd2tfVXJsX1Jlc3BvbnNlKiByZXNwb25zZSk7Cit2b2lkIGV3a192
aWV3X3Jlc291cmNlX3JlcXVlc3Rfc2VudChFdmFzX09iamVjdCogZXdrVmlldywgRXdrX1Jlc291
cmNlKiByZXNvdXJjZSwgRXdrX1VybF9SZXF1ZXN0KiByZXF1ZXN0LCBFd2tfVXJsX1Jlc3BvbnNl
KiByZWRpcmVjdFJlc3BvbnNlKTsKIHZvaWQgZXdrX3ZpZXdfdGV4dF9mb3VuZChFdmFzX09iamVj
dCogZXdrVmlldywgdW5zaWduZWQgaW50IG1hdGNoQ291bnQpOwogdm9pZCBld2tfdmlld191cmxf
dXBkYXRlKEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKIHZvaWQgZXdrX3ZpZXdfY29udGVudHNfc2l6
ZV9jaGFuZ2VkKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBXZWJDb3JlOjpJbnRT
aXplJik7CiB2b2lkIGV3a192aWV3X2JhY2tfZm9yd2FyZF9saXN0X2NoYW5nZWQoRXZhc19PYmpl
Y3QqIGV3a1ZpZXcpOwogdm9pZCBld2tfdmlld191cGRhdGVfaWNvbihFdmFzX09iamVjdCogZXdr
Vmlldyk7CiAKK1dLUGFnZVJlZiBld2tfdmlld193a3BhZ2VfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0
KiBld2tWaWV3KTsKKwogRXZhc19PYmplY3QqIGV3a192aWV3X2Jhc2VfYWRkKEV2YXMqIGNhbnZh
cywgV0tDb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZik7CiAKICNpZiBFTkFCTEUoV0VCX0lOVEVO
VFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmll
d19yZXNvdXJjZV9sb2FkX2NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfdmlld19yZXNvdXJjZV9sb2FkX2NsaWVudC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGNlNjI1MzkuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9jbGllbnQuY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsMTAzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29y
cG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLQotI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgotI2luY2x1ZGUgIldLRnJhbWUuaCIKLSNp
bmNsdWRlICJXS1BhZ2UuaCIKLSNpbmNsdWRlICJXS1JldGFpblB0ci5oIgotI2luY2x1ZGUgIldL
VVJMLmgiCi0jaW5jbHVkZSAiV0tVUkxSZXF1ZXN0LmgiCi0jaW5jbHVkZSAiV0tVUkxSZXNwb25z
ZS5oIgotI2luY2x1ZGUgImV3a19lcnJvcl9wcml2YXRlLmgiCi0jaW5jbHVkZSAiZXdrX3Jlc291
cmNlLmgiCi0jaW5jbHVkZSAiZXdrX3Jlc291cmNlX3ByaXZhdGUuaCIKLSNpbmNsdWRlICJld2tf
dXJsX3JlcXVlc3QuaCIKLSNpbmNsdWRlICJld2tfdXJsX3JlcXVlc3RfcHJpdmF0ZS5oIgotI2lu
Y2x1ZGUgImV3a191cmxfcmVzcG9uc2UuaCIKLSNpbmNsdWRlICJld2tfdXJsX3Jlc3BvbnNlX3By
aXZhdGUuaCIKLSNpbmNsdWRlICJld2tfdmlld19wcml2YXRlLmgiCi0jaW5jbHVkZSAiZXdrX3Zp
ZXdfcmVzb3VyY2VfbG9hZF9jbGllbnRfcHJpdmF0ZS5oIgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIu
aD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQotc3RhdGljIGlubGluZSBFdmFzX09iamVj
dCogdG9Fd2tWaWV3KGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEV2YXNfT2JqZWN0Kj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOwotfQot
Ci1zdGF0aWMgdm9pZCBkaWRJbml0aWF0ZUxvYWRGb3JSZXNvdXJjZShXS1BhZ2VSZWYsIFdLRnJh
bWVSZWYgd2tGcmFtZSwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBXS1VSTFJlcXVlc3RS
ZWYgd2tSZXF1ZXN0LCBib29sIHBhZ2VJc1Byb3Zpc2lvbmFsbHlMb2FkaW5nLCBjb25zdCB2b2lk
KiBjbGllbnRJbmZvKQotewotICAgIGJvb2wgaXNNYWluUmVzb3VyY2UgPSAoV0tGcmFtZUlzTWFp
bkZyYW1lKHdrRnJhbWUpICYmIHBhZ2VJc1Byb3Zpc2lvbmFsbHlMb2FkaW5nKTsKLSAgICBXS1Jl
dGFpblB0cjxXS1VSTFJlZj4gd2tVcmwoQWRvcHRXSywgV0tVUkxSZXF1ZXN0Q29weVVSTCh3a1Jl
cXVlc3QpKTsKLQotICAgIFJlZlB0cjxFd2tfUmVzb3VyY2U+IHJlc291cmNlID0gRXdrX1Jlc291
cmNlOjpjcmVhdGUod2tVcmwuZ2V0KCksIGlzTWFpblJlc291cmNlKTsKLSAgICBSZWZQdHI8RXdr
X1VybF9SZXF1ZXN0PiByZXF1ZXN0ID0gRXdrX1VybF9SZXF1ZXN0OjpjcmVhdGUod2tSZXF1ZXN0
KTsKLSAgICBld2tfdmlld19yZXNvdXJjZV9sb2FkX2luaXRpYXRlZCh0b0V3a1ZpZXcoY2xpZW50
SW5mbyksIHJlc291cmNlSWRlbnRpZmllciwgcmVzb3VyY2UuZ2V0KCksIHJlcXVlc3QuZ2V0KCkp
OwotfQotCi1zdGF0aWMgdm9pZCBkaWRTZW5kUmVxdWVzdEZvclJlc291cmNlKFdLUGFnZVJlZiwg
V0tGcmFtZVJlZiwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBXS1VSTFJlcXVlc3RSZWYg
d2tSZXF1ZXN0LCBXS1VSTFJlc3BvbnNlUmVmIHdrUmVkaXJlY3RSZXNwb25zZSwgY29uc3Qgdm9p
ZCogY2xpZW50SW5mbykKLXsKLSAgICBSZWZQdHI8RXdrX1VybF9SZXF1ZXN0PiByZXF1ZXN0ID0g
RXdrX1VybF9SZXF1ZXN0OjpjcmVhdGUod2tSZXF1ZXN0KTsKLSAgICBSZWZQdHI8RXdrX1VybF9S
ZXNwb25zZT4gcmVkaXJlY3RSZXNwb25zZSA9IEV3a19VcmxfUmVzcG9uc2U6OmNyZWF0ZSh3a1Jl
ZGlyZWN0UmVzcG9uc2UpOwotICAgIGV3a192aWV3X3Jlc291cmNlX3JlcXVlc3Rfc2VudCh0b0V3
a1ZpZXcoY2xpZW50SW5mbyksIHJlc291cmNlSWRlbnRpZmllciwgcmVxdWVzdC5nZXQoKSwgcmVk
aXJlY3RSZXNwb25zZS5nZXQoKSk7Ci19Ci0KLXN0YXRpYyB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZUZvclJlc291cmNlKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgdWludDY0X3QgcmVzb3VyY2VJZGVu
dGlmaWVyLCBXS1VSTFJlc3BvbnNlUmVmIHdrUmVzcG9uc2UsIGNvbnN0IHZvaWQqIGNsaWVudElu
Zm8pCi17Ci0gICAgUmVmUHRyPEV3a19VcmxfUmVzcG9uc2U+IHJlc3BvbnNlID0gRXdrX1VybF9S
ZXNwb25zZTo6Y3JlYXRlKHdrUmVzcG9uc2UpOwotICAgIGV3a192aWV3X3Jlc291cmNlX2xvYWRf
cmVzcG9uc2UodG9Fd2tWaWV3KGNsaWVudEluZm8pLCByZXNvdXJjZUlkZW50aWZpZXIsIHJlc3Bv
bnNlLmdldCgpKTsKLX0KLQotc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZEZvclJlc291cmNlKFdL
UGFnZVJlZiwgV0tGcmFtZVJlZiwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKQotewotICAgIGV3a192aWV3X3Jlc291cmNlX2xvYWRfZmluaXNoZWQo
dG9Fd2tWaWV3KGNsaWVudEluZm8pLCByZXNvdXJjZUlkZW50aWZpZXIpOwotfQotCi1zdGF0aWMg
dm9pZCBkaWRGYWlsTG9hZEZvclJlc291cmNlKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgdWludDY0
X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBXS0Vycm9yUmVmIHdrRXJyb3IsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pCi17Ci0gICAgT3duUHRyPEV3a19FcnJvcj4gZXdrRXJyb3IgPSBFd2tfRXJyb3I6
OmNyZWF0ZSh3a0Vycm9yKTsKLSAgICBld2tfdmlld19yZXNvdXJjZV9sb2FkX2ZhaWxlZCh0b0V3
a1ZpZXcoY2xpZW50SW5mbyksIHJlc291cmNlSWRlbnRpZmllciwgZXdrRXJyb3IuZ2V0KCkpOwot
ICAgIGV3a192aWV3X3Jlc291cmNlX2xvYWRfZmluaXNoZWQodG9Fd2tWaWV3KGNsaWVudEluZm8p
LCByZXNvdXJjZUlkZW50aWZpZXIpOwotfQotCi12b2lkIGV3a192aWV3X3Jlc291cmNlX2xvYWRf
Y2xpZW50X2F0dGFjaChXS1BhZ2VSZWYgcGFnZVJlZiwgRXZhc19PYmplY3QqIGV3a1ZpZXcpCi17
Ci0gICAgV0tQYWdlUmVzb3VyY2VMb2FkQ2xpZW50IHdrUmVzb3VyY2VMb2FkQ2xpZW50OwotICAg
IG1lbXNldCgmd2tSZXNvdXJjZUxvYWRDbGllbnQsIDAsIHNpemVvZihXS1BhZ2VSZXNvdXJjZUxv
YWRDbGllbnQpKTsKLSAgICB3a1Jlc291cmNlTG9hZENsaWVudC52ZXJzaW9uID0ga1dLUGFnZVJl
c291cmNlTG9hZENsaWVudEN1cnJlbnRWZXJzaW9uOwotICAgIHdrUmVzb3VyY2VMb2FkQ2xpZW50
LmNsaWVudEluZm8gPSBld2tWaWV3OwotICAgIHdrUmVzb3VyY2VMb2FkQ2xpZW50LmRpZEluaXRp
YXRlTG9hZEZvclJlc291cmNlID0gZGlkSW5pdGlhdGVMb2FkRm9yUmVzb3VyY2U7Ci0gICAgd2tS
ZXNvdXJjZUxvYWRDbGllbnQuZGlkU2VuZFJlcXVlc3RGb3JSZXNvdXJjZSA9IGRpZFNlbmRSZXF1
ZXN0Rm9yUmVzb3VyY2U7Ci0gICAgd2tSZXNvdXJjZUxvYWRDbGllbnQuZGlkUmVjZWl2ZVJlc3Bv
bnNlRm9yUmVzb3VyY2UgPSBkaWRSZWNlaXZlUmVzcG9uc2VGb3JSZXNvdXJjZTsKLSAgICB3a1Jl
c291cmNlTG9hZENsaWVudC5kaWRGaW5pc2hMb2FkRm9yUmVzb3VyY2UgPSBkaWRGaW5pc2hMb2Fk
Rm9yUmVzb3VyY2U7Ci0gICAgd2tSZXNvdXJjZUxvYWRDbGllbnQuZGlkRmFpbExvYWRGb3JSZXNv
dXJjZSA9IGRpZEZhaWxMb2FkRm9yUmVzb3VyY2U7Ci0KLSAgICBXS1BhZ2VTZXRQYWdlUmVzb3Vy
Y2VMb2FkQ2xpZW50KHBhZ2VSZWYsICZ3a1Jlc291cmNlTG9hZENsaWVudCk7Ci19CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19yZXNvdXJjZV9s
b2FkX2NsaWVudF9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfdmlld19yZXNvdXJjZV9sb2FkX2NsaWVudF9wcml2YXRlLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDFmNDA0YjkuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9jbGllbnRfcHJpdmF0ZS5oCisrKyAv
ZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRl
bCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBl
d2tfdmlld19yZXNvdXJjZV9sb2FkX2NsaWVudF9wcml2YXRlX2gKLSNkZWZpbmUgZXdrX3ZpZXdf
cmVzb3VyY2VfbG9hZF9jbGllbnRfcHJpdmF0ZV9oCi0KLSNpbmNsdWRlIDxFdmFzLmg+Ci0jaW5j
bHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KLQotdm9pZCBld2tfdmlld19yZXNvdXJjZV9sb2FkX2Ns
aWVudF9hdHRhY2goV0tQYWdlUmVmIHBhZ2VSZWYsIEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKLQot
I2VuZGlmIC8vIGV3a192aWV3X3Jlc291cmNlX2xvYWRfY2xpZW50X3ByaXZhdGVfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9SZXNvdXJjZUxvYWRDbGllbnRFZmwu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9SZXNvdXJjZUxvYWRDbGllbnRFZmwu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1MzljY2UKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1Jlc291cmNlTG9hZENsaWVu
dEVmbC5jcHAKQEAgLTAsMCArMSwxNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50
ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUxvYWRDbGllbnRFZmwuaCIKKworI2luY2x1
ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldLRnJhbWUuaCIKKyNpbmNsdWRlICJXS1BhZ2Uu
aCIKKyNpbmNsdWRlICJXS1JldGFpblB0ci5oIgorI2luY2x1ZGUgImV3a19lcnJvcl9wcml2YXRl
LmgiCisjaW5jbHVkZSAiZXdrX3VybF9yZXF1ZXN0X3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tf
dXJsX3Jlc3BvbnNlX3ByaXZhdGUuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgaW5saW5lIFJlc291cmNlTG9hZENsaWVudEVmbCog
dG9SZXNvdXJjZUxvYWRDbGllbnRFZmwoY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8UmVzb3VyY2VMb2FkQ2xpZW50RWZsKj4oY29uc3RfY2FzdDx2b2lk
Kj4oY2xpZW50SW5mbykpOworfQorCit2b2lkIFJlc291cmNlTG9hZENsaWVudEVmbDo6ZGlkSW5p
dGlhdGVMb2FkRm9yUmVzb3VyY2UoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmIHdrRnJhbWUsIHVpbnQ2
NF90IHJlc291cmNlSWRlbnRpZmllciwgV0tVUkxSZXF1ZXN0UmVmIHdrUmVxdWVzdCwgYm9vbCBw
YWdlSXNQcm92aXNpb25hbGx5TG9hZGluZywgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAg
ICBSZXNvdXJjZUxvYWRDbGllbnRFZmwqIHJlc291cmNlTG9hZENsaWVudCA9IHRvUmVzb3VyY2VM
b2FkQ2xpZW50RWZsKGNsaWVudEluZm8pOworICAgIGJvb2wgaXNNYWluUmVzb3VyY2UgPSAoV0tG
cmFtZUlzTWFpbkZyYW1lKHdrRnJhbWUpICYmIHBhZ2VJc1Byb3Zpc2lvbmFsbHlMb2FkaW5nKTsK
KyAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gd2tVcmwoQWRvcHRXSywgV0tVUkxSZXF1ZXN0Q29w
eVVSTCh3a1JlcXVlc3QpKTsKKworICAgIFJlZlB0cjxFd2tfUmVzb3VyY2U+IHJlc291cmNlID0g
RXdrX1Jlc291cmNlOjpjcmVhdGUod2tVcmwuZ2V0KCksIGlzTWFpblJlc291cmNlKTsKKworICAg
IC8vIEtlZXAgdGhlIHJlc291cmNlIGludGVybmFsbHkgdG8gcmV1c2UgaXQgbGF0ZXIuCisgICAg
cmVzb3VyY2VMb2FkQ2xpZW50LT5tX2xvYWRpbmdSZXNvdXJjZXNNYXAuYWRkKHJlc291cmNlSWRl
bnRpZmllciwgcmVzb3VyY2UpOworCisgICAgUmVmUHRyPEV3a19VcmxfUmVxdWVzdD4gcmVxdWVz
dCA9IEV3a19VcmxfUmVxdWVzdDo6Y3JlYXRlKHdrUmVxdWVzdCk7CisgICAgZXdrX3ZpZXdfcmVz
b3VyY2VfbG9hZF9pbml0aWF0ZWQocmVzb3VyY2VMb2FkQ2xpZW50LT5tX3ZpZXcsIHJlc291cmNl
LmdldCgpLCByZXF1ZXN0LmdldCgpKTsKK30KKwordm9pZCBSZXNvdXJjZUxvYWRDbGllbnRFZmw6
OmRpZFNlbmRSZXF1ZXN0Rm9yUmVzb3VyY2UoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCB1aW50NjRf
dCByZXNvdXJjZUlkZW50aWZpZXIsIFdLVVJMUmVxdWVzdFJlZiB3a1JlcXVlc3QsIFdLVVJMUmVz
cG9uc2VSZWYgd2tSZWRpcmVjdFJlc3BvbnNlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQorewor
ICAgIFJlc291cmNlTG9hZENsaWVudEVmbCogcmVzb3VyY2VMb2FkQ2xpZW50ID0gdG9SZXNvdXJj
ZUxvYWRDbGllbnRFZmwoY2xpZW50SW5mbyk7CisKKyAgICBSZWZQdHI8RXdrX1Jlc291cmNlPiBy
ZXNvdXJjZSA9IHJlc291cmNlTG9hZENsaWVudC0+bV9sb2FkaW5nUmVzb3VyY2VzTWFwLmdldChy
ZXNvdXJjZUlkZW50aWZpZXIpOworICAgIC8vIE9ubHkgcHJvY2VzcyBpZiB3ZSBrbm93IGFib3V0
IHRoaXMgcmVzb3VyY2UuCisgICAgaWYgKCFyZXNvdXJjZSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgUmVmUHRyPEV3a19VcmxfUmVxdWVzdD4gcmVxdWVzdCA9IEV3a19VcmxfUmVxdWVzdDo6Y3Jl
YXRlKHdrUmVxdWVzdCk7CisgICAgUmVmUHRyPEV3a19VcmxfUmVzcG9uc2U+IHJlZGlyZWN0UmVz
cG9uc2UgPSBFd2tfVXJsX1Jlc3BvbnNlOjpjcmVhdGUod2tSZWRpcmVjdFJlc3BvbnNlKTsKKyAg
ICBld2tfdmlld19yZXNvdXJjZV9yZXF1ZXN0X3NlbnQocmVzb3VyY2VMb2FkQ2xpZW50LT5tX3Zp
ZXcsIHJlc291cmNlLmdldCgpLCByZXF1ZXN0LmdldCgpLCByZWRpcmVjdFJlc3BvbnNlLmdldCgp
KTsKK30KKwordm9pZCBSZXNvdXJjZUxvYWRDbGllbnRFZmw6OmRpZFJlY2VpdmVSZXNwb25zZUZv
clJlc291cmNlKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlm
aWVyLCBXS1VSTFJlc3BvbnNlUmVmIHdrUmVzcG9uc2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
Cit7CisgICAgUmVzb3VyY2VMb2FkQ2xpZW50RWZsKiByZXNvdXJjZUxvYWRDbGllbnQgPSB0b1Jl
c291cmNlTG9hZENsaWVudEVmbChjbGllbnRJbmZvKTsKKworICAgIFJlZlB0cjxFd2tfUmVzb3Vy
Y2U+IHJlc291cmNlID0gcmVzb3VyY2VMb2FkQ2xpZW50LT5tX2xvYWRpbmdSZXNvdXJjZXNNYXAu
Z2V0KHJlc291cmNlSWRlbnRpZmllcik7CisgICAgLy8gT25seSBwcm9jZXNzIGlmIHdlIGtub3cg
YWJvdXQgdGhpcyByZXNvdXJjZS4KKyAgICBpZiAoIXJlc291cmNlKQorICAgICAgICByZXR1cm47
CisKKyAgICBSZWZQdHI8RXdrX1VybF9SZXNwb25zZT4gcmVzcG9uc2UgPSBFd2tfVXJsX1Jlc3Bv
bnNlOjpjcmVhdGUod2tSZXNwb25zZSk7CisgICAgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9yZXNw
b25zZShyZXNvdXJjZUxvYWRDbGllbnQtPm1fdmlldywgcmVzb3VyY2UuZ2V0KCksIHJlc3BvbnNl
LmdldCgpKTsKK30KKwordm9pZCBSZXNvdXJjZUxvYWRDbGllbnRFZmw6OmRpZEZpbmlzaExvYWRG
b3JSZXNvdXJjZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRp
ZmllciwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBSZXNvdXJjZUxvYWRDbGllbnRF
ZmwqIHJlc291cmNlTG9hZENsaWVudCA9IHRvUmVzb3VyY2VMb2FkQ2xpZW50RWZsKGNsaWVudElu
Zm8pOworCisgICAgUmVmUHRyPEV3a19SZXNvdXJjZT4gcmVzb3VyY2UgPSByZXNvdXJjZUxvYWRD
bGllbnQtPm1fbG9hZGluZ1Jlc291cmNlc01hcC5nZXQocmVzb3VyY2VJZGVudGlmaWVyKTsKKyAg
ICAvLyBPbmx5IHByb2Nlc3MgaWYgd2Uga25vdyBhYm91dCB0aGlzIHJlc291cmNlLgorICAgIGlm
ICghcmVzb3VyY2UpCisgICAgICAgIHJldHVybjsKKworICAgIGV3a192aWV3X3Jlc291cmNlX2xv
YWRfZmluaXNoZWQocmVzb3VyY2VMb2FkQ2xpZW50LT5tX3ZpZXcsIHJlc291cmNlLmdldCgpKTsK
K30KKwordm9pZCBSZXNvdXJjZUxvYWRDbGllbnRFZmw6OmRpZEZhaWxMb2FkRm9yUmVzb3VyY2Uo
V0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIsIFdLRXJy
b3JSZWYgd2tFcnJvciwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBSZXNvdXJjZUxv
YWRDbGllbnRFZmwqIHJlc291cmNlTG9hZENsaWVudCA9IHRvUmVzb3VyY2VMb2FkQ2xpZW50RWZs
KGNsaWVudEluZm8pOworCisgICAgUmVmUHRyPEV3a19SZXNvdXJjZT4gcmVzb3VyY2UgPSByZXNv
dXJjZUxvYWRDbGllbnQtPm1fbG9hZGluZ1Jlc291cmNlc01hcC50YWtlKHJlc291cmNlSWRlbnRp
Zmllcik7CisgICAgLy8gT25seSBwcm9jZXNzIGlmIHdlIGtub3cgYWJvdXQgdGhpcyByZXNvdXJj
ZS4KKyAgICBpZiAoIXJlc291cmNlKQorICAgICAgICByZXR1cm47CisKKyAgICBPd25QdHI8RXdr
X0Vycm9yPiBld2tFcnJvciA9IEV3a19FcnJvcjo6Y3JlYXRlKHdrRXJyb3IpOworICAgIGV3a192
aWV3X3Jlc291cmNlX2xvYWRfZmFpbGVkKHJlc291cmNlTG9hZENsaWVudC0+bV92aWV3LCByZXNv
dXJjZS5nZXQoKSwgZXdrRXJyb3IuZ2V0KCkpOworICAgIGV3a192aWV3X3Jlc291cmNlX2xvYWRf
ZmluaXNoZWQocmVzb3VyY2VMb2FkQ2xpZW50LT5tX3ZpZXcsIHJlc291cmNlLmdldCgpKTsKK30K
Kwordm9pZCBSZXNvdXJjZUxvYWRDbGllbnRFZmw6Om9uVmlld1Byb3Zpc2lvbmFsTG9hZFN0YXJ0
ZWQodm9pZCogdXNlckRhdGEsIEV2YXNfT2JqZWN0Kiwgdm9pZCopCit7CisgICAgUmVzb3VyY2VM
b2FkQ2xpZW50RWZsKiByZXNvdXJjZUxvYWRDbGllbnQgPSB0b1Jlc291cmNlTG9hZENsaWVudEVm
bCh1c2VyRGF0YSk7CisKKyAgICAvLyBUaGUgdmlldyBzdGFydGVkIGEgbmV3IGxvYWQsIGNsZWFy
IGludGVybmFsIHJlc291cmNlIG1hcC4KKyAgICByZXNvdXJjZUxvYWRDbGllbnQtPm1fbG9hZGlu
Z1Jlc291cmNlc01hcC5jbGVhcigpOworfQorCitSZXNvdXJjZUxvYWRDbGllbnRFZmw6OlJlc291
cmNlTG9hZENsaWVudEVmbChFdmFzX09iamVjdCogdmlldykKKyAgICA6IG1fdmlldyh2aWV3KQor
eworICAgIC8vIExpc3RlbiBmb3IgImxvYWQscHJvdmlzaW9uYWwsc3RhcnRlZCIgb24gdGhlIHZp
ZXcgdG8gY2xlYXIgaW50ZXJuYWwgcmVzb3VyY2VzIG1hcC4KKyAgICBldmFzX29iamVjdF9zbWFy
dF9jYWxsYmFja19hZGQobV92aWV3LCAibG9hZCxwcm92aXNpb25hbCxzdGFydGVkIiwgb25WaWV3
UHJvdmlzaW9uYWxMb2FkU3RhcnRlZCwgdGhpcyk7CisKKyAgICBXS1BhZ2VSZWYgcGFnZVJlZiA9
IGV3a192aWV3X3drcGFnZV9nZXQobV92aWV3KTsKKyAgICBBU1NFUlQocGFnZVJlZik7CisKKyAg
ICBXS1BhZ2VSZXNvdXJjZUxvYWRDbGllbnQgd2tSZXNvdXJjZUxvYWRDbGllbnQ7CisgICAgbWVt
c2V0KCZ3a1Jlc291cmNlTG9hZENsaWVudCwgMCwgc2l6ZW9mKFdLUGFnZVJlc291cmNlTG9hZENs
aWVudCkpOworICAgIHdrUmVzb3VyY2VMb2FkQ2xpZW50LnZlcnNpb24gPSBrV0tQYWdlUmVzb3Vy
Y2VMb2FkQ2xpZW50Q3VycmVudFZlcnNpb247CisgICAgd2tSZXNvdXJjZUxvYWRDbGllbnQuY2xp
ZW50SW5mbyA9IHRoaXM7CisgICAgd2tSZXNvdXJjZUxvYWRDbGllbnQuZGlkSW5pdGlhdGVMb2Fk
Rm9yUmVzb3VyY2UgPSBkaWRJbml0aWF0ZUxvYWRGb3JSZXNvdXJjZTsKKyAgICB3a1Jlc291cmNl
TG9hZENsaWVudC5kaWRTZW5kUmVxdWVzdEZvclJlc291cmNlID0gZGlkU2VuZFJlcXVlc3RGb3JS
ZXNvdXJjZTsKKyAgICB3a1Jlc291cmNlTG9hZENsaWVudC5kaWRSZWNlaXZlUmVzcG9uc2VGb3JS
ZXNvdXJjZSA9IGRpZFJlY2VpdmVSZXNwb25zZUZvclJlc291cmNlOworICAgIHdrUmVzb3VyY2VM
b2FkQ2xpZW50LmRpZEZpbmlzaExvYWRGb3JSZXNvdXJjZSA9IGRpZEZpbmlzaExvYWRGb3JSZXNv
dXJjZTsKKyAgICB3a1Jlc291cmNlTG9hZENsaWVudC5kaWRGYWlsTG9hZEZvclJlc291cmNlID0g
ZGlkRmFpbExvYWRGb3JSZXNvdXJjZTsKKworICAgIFdLUGFnZVNldFBhZ2VSZXNvdXJjZUxvYWRD
bGllbnQocGFnZVJlZiwgJndrUmVzb3VyY2VMb2FkQ2xpZW50KTsKK30KKworUmVzb3VyY2VMb2Fk
Q2xpZW50RWZsOjp+UmVzb3VyY2VMb2FkQ2xpZW50RWZsKCkKK3sKKyAgICBldmFzX29iamVjdF9z
bWFydF9jYWxsYmFja19kZWwobV92aWV3LCAibG9hZCxwcm92aXNpb25hbCxzdGFydGVkIiwgb25W
aWV3UHJvdmlzaW9uYWxMb2FkU3RhcnRlZCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9SZXNvdXJjZUxvYWRDbGll
bnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUmVzb3VyY2VMb2FkQ2xpZW50
RWZsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNThmNTJiNAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUmVzb3VyY2VMb2FkQ2xp
ZW50RWZsLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRl
bCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBS
ZXNvdXJjZUxvYWRDbGllbnRFZmxfaAorI2RlZmluZSBSZXNvdXJjZUxvYWRDbGllbnRFZmxfaAor
CisjaW5jbHVkZSAiZXdrX3Jlc291cmNlX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfdmlld19w
cml2YXRlLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUmVzb3VyY2VMb2FkQ2xpZW50
RWZsIHsKK3B1YmxpYzoKKyAgICB+UmVzb3VyY2VMb2FkQ2xpZW50RWZsKCk7CisKKyAgICBzdGF0
aWMgUGFzc093blB0cjxSZXNvdXJjZUxvYWRDbGllbnRFZmw+IGNyZWF0ZShFdmFzX09iamVjdCog
dmlldykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgUmVzb3VyY2VMb2FkQ2xp
ZW50RWZsKHZpZXcpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgUmVzb3VyY2VM
b2FkQ2xpZW50RWZsKEV2YXNfT2JqZWN0KiB2aWV3KTsKKworICAgIHN0YXRpYyB2b2lkIGRpZElu
aXRpYXRlTG9hZEZvclJlc291cmNlKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgdWludDY0X3QgcmVz
b3VyY2VJZGVudGlmaWVyLCBXS1VSTFJlcXVlc3RSZWYsIGJvb2wgcGFnZUlzUHJvdmlzaW9uYWxs
eUxvYWRpbmcsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworICAgIHN0YXRpYyB2b2lkIGRpZFNl
bmRSZXF1ZXN0Rm9yUmVzb3VyY2UoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCB1aW50NjRfdCByZXNv
dXJjZUlkZW50aWZpZXIsIFdLVVJMUmVxdWVzdFJlZiwgV0tVUkxSZXNwb25zZVJlZiwgY29uc3Qg
dm9pZCogY2xpZW50SW5mbyk7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlRm9y
UmVzb3VyY2UoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZp
ZXIsIFdLVVJMUmVzcG9uc2VSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworICAgIHN0YXRp
YyB2b2lkIGRpZEZpbmlzaExvYWRGb3JSZXNvdXJjZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIHVp
bnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisgICAg
c3RhdGljIHZvaWQgZGlkRmFpbExvYWRGb3JSZXNvdXJjZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYs
IHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgV0tFcnJvclJlZiwgY29uc3Qgdm9pZCogY2xp
ZW50SW5mbyk7CisKKyAgICBzdGF0aWMgdm9pZCBvblZpZXdQcm92aXNpb25hbExvYWRTdGFydGVk
KHZvaWQqIHVzZXJEYXRhLCBFdmFzX09iamVjdCogdmlldywgdm9pZCogY2xpZW50SW5mbyk7CisK
KyAgICBFdmFzX09iamVjdCogbV92aWV3OworICAgIEhhc2hNYXA8IHVpbnQ2NF90LCBSZWZQdHI8
RXdrX1Jlc291cmNlPiA+IG1fbG9hZGluZ1Jlc291cmNlc01hcDsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYgLy8gUmVzb3VyY2VMb2FkQ2xpZW50RWZsX2gK
</data>

          </attachment>
      

    </bug>

</bugzilla>