<?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>93706</bug_id>
          
          <creation_ts>2012-08-10 03:09:21 -0700</creation_ts>
          <short_desc>Support creating File object from FileSystem URL for files in FileSystem API</short_desc>
          <delta_ts>2012-08-12 23:21:57 -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>WebCore Misc.</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kinuko Yasuda">kinuko</reporter>
          <assigned_to name="Kinuko Yasuda">kinuko</assigned_to>
          <cc>abarth</cc>
    
    <cc>danw</cc>
    
    <cc>dglazkov</cc>
    
    <cc>ericbidelman</cc>
    
    <cc>fishd</cc>
    
    <cc>gustavo</cc>
    
    <cc>jamesr</cc>
    
    <cc>mifenton</cc>
    
    <cc>mrobinson</cc>
    
    <cc>philn</cc>
    
    <cc>rakuco</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>692411</commentid>
    <comment_count>0</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-08-10 03:09:21 -0700</bug_when>
    <thetext>Support creating File object from FileSystem URL for files in FileSystem API.

Current File code assumes the existence of local file (i.e. needs a platform local file path to work appropriately) but for FileSystem files it may not be always the case.
Some implementation may want to use in-memory filesystem to realize sandboxed filesystem, or the filesystem may exist in a remote server so that there may not be the local platform file.

We should support File object creation not only from file path but from FileSystem URL, and should make File object keep the information, so that the platform-specific code can handle file requests more appropriately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692419</commentid>
    <comment_count>1</comment_count>
      <attachid>157698</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-08-10 03:26:12 -0700</bug_when>
    <thetext>Created attachment 157698
wip</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692420</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-10 03:29:31 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692428</commentid>
    <comment_count>3</comment_count>
      <attachid>157698</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-08-10 03:40:15 -0700</bug_when>
    <thetext>Comment on attachment 157698
wip

Attachment 157698 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/13459920</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692430</commentid>
    <comment_count>4</comment_count>
      <attachid>157698</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-08-10 03:48:21 -0700</bug_when>
    <thetext>Comment on attachment 157698
wip

Attachment 157698 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/13477157</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692431</commentid>
    <comment_count>5</comment_count>
      <attachid>157698</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-08-10 03:49:06 -0700</bug_when>
    <thetext>Comment on attachment 157698
wip

Attachment 157698 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13470547</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692433</commentid>
    <comment_count>6</comment_count>
      <attachid>157698</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-10 03:57:26 -0700</bug_when>
    <thetext>Comment on attachment 157698
wip

Attachment 157698 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/13463662</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692509</commentid>
    <comment_count>7</comment_count>
      <attachid>157722</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-08-10 06:03:32 -0700</bug_when>
    <thetext>Created attachment 157722
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692523</commentid>
    <comment_count>8</comment_count>
      <attachid>157722</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-08-10 06:25:35 -0700</bug_when>
    <thetext>Comment on attachment 157722
Patch

Attachment 157722 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13477196</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692531</commentid>
    <comment_count>9</comment_count>
      <attachid>157729</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-08-10 06:31:51 -0700</bug_when>
    <thetext>Created attachment 157729
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692620</commentid>
    <comment_count>10</comment_count>
      <attachid>157729</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-08-10 09:43:40 -0700</bug_when>
    <thetext>Comment on attachment 157729
Patch

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

&gt; Source/Platform/chromium/public/WebBlobData.h:53
&gt; +        WebURL url; // For Blob or URL.

nit: &quot;For TypeBlob or TypeURL.&quot; just to make it really clear.

&gt; Source/Platform/chromium/public/WebHTTPBody.h:57
&gt; +        WebURL url; // For Blob or URL type.

nit: &quot;For TypeBlob or TypeURL.&quot; just to make it really clear.

&gt; Source/WebCore/platform/chromium/support/WebHTTPBody.cpp:157
&gt; +    ASSERT(KURL(blobURL).protocol() == &quot;blob&quot;);

nit: use KURL&apos;s protocolIs method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>693390</commentid>
    <comment_count>11</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-08-12 23:21:57 -0700</bug_when>
    <thetext>Committed r125391: &lt;http://trac.webkit.org/changeset/125391&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157698</attachid>
            <date>2012-08-10 03:26:12 -0700</date>
            <delta_ts>2012-08-10 06:03:26 -0700</delta_ts>
            <desc>wip</desc>
            <filename>bug-93706-20120810192543.patch</filename>
            <type>text/plain</type>
            <size>33978</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1MDc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA1NzFlMjk3MWRmYTYw
NjlkZGEzYTJkMmExMDE3ZDhiNGEzYjY2Yzg5Li5hZDIwNmRiMmNjYTFmZTE3Zjg3Yjk0ODY1Y2E1
MWRmMzRhMzEwZTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wOC0xMCAg
S2ludWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3VwcG9ydCBj
cmVhdGluZyBGaWxlIG9iamVjdCBmcm9tIEZpbGVTeXN0ZW0gVVJMIGZvciBmaWxlcyBpbiBGaWxl
U3lzdGVtIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTM3MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGNocm9taXVtL3B1YmxpYy9XZWJCbG9iRGF0YS5oOgorICAgICAgICAqIGNocm9taXVtL3B1
YmxpYy9XZWJIVFRQQm9keS5oOgorICAgICAgICAoV2ViSFRUUEJvZHkpOgorCiAyMDEyLTA4LTA4
ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVt
XSBVcHN0cmVhbSBhbmRyb2lkJ3MgRmxpbmdBbmltYXRvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGRmNzYyZDAz
ODAzZWFhNWE3ZWM4MTg0YTNkNDc3NDU5NTc5Y2Q3YzMuLjYwMmE4ZjEyMGU0ZDdjMzAwOTUzNTFi
MWU1NGE0YWIzODQ5MTM2MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBAQAorMjAxMi0wOC0x
MCAgS2ludWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3VwcG9y
dCBjcmVhdGluZyBGaWxlIG9iamVjdCBmcm9tIEZpbGVTeXN0ZW0gVVJMIGZvciBmaWxlcyBpbiBG
aWxlU3lzdGVtIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTM3MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBObyBuZXcgdGVzdHM6IHdpbGwgYWRkIHdoZW4gd2UgYWRkIHBsYXRmb3JtIGNvZGUuCisK
KyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpET01GaWxlU3lzdGVtOjpjcmVhdGVGaWxlKToKKyAgICAgICAgKiBNb2R1bGVz
L2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbVN5bmMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9N
RmlsZVN5c3RlbVN5bmM6OmNyZWF0ZUZpbGUpOgorICAgICAgICAqIGZpbGVhcGkvQmxvYi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpCbG9iOjpzbGljZUludGVybmFsKToKKyAgICAgICAgKiBmaWxl
YXBpL0ZpbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQmxvYkRhdGFGb3JGaWxlU3lz
dGVtVVJMKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpGaWxlOjpGaWxlKToKKyAgICAgICAg
KiBmaWxlYXBpL0ZpbGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGU6OmNyZWF0ZUZvckZpbGVT
eXN0ZW1GaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGU6OmZpbGVTeXN0ZW1VUkwpOiBBZGRl
ZC4KKyAgICAgICAgKiBmaWxlYXBpL1dlYktpdEJsb2JCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYktpdEJsb2JCdWlsZGVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL2No
cm9taXVtL3N1cHBvcnQvV2ViSFRUUEJvZHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJIVFRQ
Qm9keTo6ZWxlbWVudEF0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSFRUUEJvZHk6OmFwcGVuZFVS
TCk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJIVFRQQm9keTo6YXBwZW5kVVJMUmFuZ2Up
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViSFRUUEJvZHk6OmFwcGVuZEJsb2IpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QmxvYkRhdGE6OmFwcGVuZFVSTCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0
YS5oOgorICAgICAgICAoQmxvYkRhdGFJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JEYXRh
SXRlbTo6QmxvYkRhdGFJdGVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdp
c3RyeUltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5SW1wbDo6YXBwZW5k
U3RvcmFnZUl0ZW1zKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JSZWdpc3RyeUltcGw6OnJlZ2lz
dGVyQmxvYlVSTCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6ZGVlcENvcHkpOgorICAgICAgICAoV2ViQ29yZTo6
Rm9ybURhdGE6OmFwcGVuZFVSTCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6
OmFwcGVuZFVSTFJhbmdlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6YXBw
ZW5kS2V5VmFsdWVQYWlySXRlbXMpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURh
dGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhRWxlbWVudDo6Rm9ybURhdGFFbGVtZW50
KToKKyAgICAgICAgKEZvcm1EYXRhRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRv
cj09KToKKwogMjAxMi0wOC0wOCAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBSRUdSRVNTSU9OKHIxMjUwNDYpOiBCcmVha3MgZGVidWcgYnVpbGQgKGFz
c2VydGlvbiBpbiBwcm90b2NvbCB0eXBlIGNoZWNrcykgKFJlcXVlc3RlZCBieSBwZmVsZG1hbiBv
biAjd2Via2l0KS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggYWFkOTY2YjAyOTZlMmUz
OWY4NzdiMGIyZjRiZTJmM2IzYzQ1MGQyNC4uMzczNzI3N2FlMzUyMTI1YmFlMmFkZjE4ODM3ZjA1
YmE4OTEzYzE1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAor
MjAxMi0wOC0xMCAgS2ludWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgU3VwcG9ydCBjcmVhdGluZyBGaWxlIG9iamVjdCBmcm9tIEZpbGVTeXN0ZW0gVVJMIGZvciBm
aWxlcyBpbiBGaWxlU3lzdGVtIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTM3MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHNyYy9XZWJCbG9iRGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkJsb2JEYXRhOjppdGVtQXQpOgorCiAyMDEyLTA4LTA4ICBEYW5hIEphbnNlbnMgIDxkYW5ha2pA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gRW5hYmxlIG9jY2x1c2lvbiB0cmFj
a2VyIGluIHRoZSBvY2NsdXNpb24gdGVzdHMgZm9yIHN1cmZhY2UgY2FjaGVpbmcKZGlmZiAtLWdp
dCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQmxvYkRhdGEuaCBiL1NvdXJj
ZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQmxvYkRhdGEuaAppbmRleCA3ZmEzMmQzYjYy
Y2RmYzQ4MWQyNGQ4ZGFhYzMwZGI4YTkxNGIxMzQwLi5kMjk4ODNiY2Y4OTUwYTIzZTg1Y2NmOGZi
MTVhYzUxNzAzNTNlMGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVi
bGljL1dlYkJsb2JEYXRhLmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9X
ZWJCbG9iRGF0YS5oCkBAIC00NywxMyArNDcsMTYgQEAgY2xhc3MgV2ViQmxvYkRhdGFQcml2YXRl
OwogY2xhc3MgV2ViQmxvYkRhdGEgewogcHVibGljOgogICAgIHN0cnVjdCBJdGVtIHsKLSAgICAg
ICAgZW51bSB7IFR5cGVEYXRhLCBUeXBlRmlsZSwgVHlwZUJsb2IgfSB0eXBlOworICAgICAgICBl
bnVtIHsgVHlwZURhdGEsIFR5cGVGaWxlLCBUeXBlQmxvYiwgVHlwZVVSTCB9IHR5cGU7CiAgICAg
ICAgIFdlYlRocmVhZFNhZmVEYXRhIGRhdGE7CiAgICAgICAgIFdlYlN0cmluZyBmaWxlUGF0aDsK
LSAgICAgICAgV2ViVVJMIGJsb2JVUkw7CisgICAgICAgIFdlYlVSTCB1cmw7IC8vIEZvciBCbG9i
IG9yIFVSTC4KICAgICAgICAgbG9uZyBsb25nIG9mZnNldDsKICAgICAgICAgbG9uZyBsb25nIGxl
bmd0aDsgLy8gLTEgbWVhbnMgZ28gdG8gdGhlIGVuZCBvZiB0aGUgZmlsZS9ibG9iLgogICAgICAg
ICBkb3VibGUgZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lOyAvLyAwLjAgbWVhbnMgdGhhdCB0aGUg
dGltZSBpcyBub3Qgc2V0LgorCisgICAgICAgIC8vIEZJWE1FOiBkZXByZWNhdGUgdGhpcy4KKyAg
ICAgICAgV2ViVVJMIGJsb2JVUkw7CiAgICAgfTsKIAogICAgIH5XZWJCbG9iRGF0YSgpIHsgcmVz
ZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJI
VFRQQm9keS5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJIVFRQQm9keS5o
CmluZGV4IDVjNjM4NjAyYWUzODc5OTY2OWJiMmE1NzdhNGM3ZTFjNzc1MTQyYjIuLjQ0MDhkMTFk
NDNmOGVjODUxMmFlNjE3ZDQwZDRmNmMyMTIyNjRmMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0
Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViSFRUUEJvZHkuaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0v
Y2hyb21pdW0vcHVibGljL1dlYkhUVFBCb2R5LmgKQEAgLTQ4LDEyICs0OCwxNSBAQCBjbGFzcyBX
ZWJIVFRQQm9keVByaXZhdGU7CiBjbGFzcyBXZWJIVFRQQm9keSB7CiBwdWJsaWM6CiAgICAgc3Ry
dWN0IEVsZW1lbnQgewotICAgICAgICBlbnVtIFR5cGUgeyBUeXBlRGF0YSwgVHlwZUZpbGUsIFR5
cGVCbG9iIH0gdHlwZTsKKyAgICAgICAgZW51bSBUeXBlIHsgVHlwZURhdGEsIFR5cGVGaWxlLCBU
eXBlQmxvYiwgVHlwZVVSTCwgfSB0eXBlOwogICAgICAgICBXZWJEYXRhIGRhdGE7CiAgICAgICAg
IFdlYlN0cmluZyBmaWxlUGF0aDsKICAgICAgICAgbG9uZyBsb25nIGZpbGVTdGFydDsKICAgICAg
ICAgbG9uZyBsb25nIGZpbGVMZW5ndGg7IC8vIC0xIG1lYW5zIHRvIHRoZSBlbmQgb2YgdGhlIGZp
bGUuCiAgICAgICAgIGRvdWJsZSBtb2RpZmljYXRpb25UaW1lOworICAgICAgICBXZWJVUkwgdXJs
OyAvLyBGb3IgQmxvYiBvciBVUkwgdHlwZS4KKworICAgICAgICAvLyBGSVhNRTogZGVwcmVjYXRl
IHRoaXMuCiAgICAgICAgIFdlYlVSTCBibG9iVVJMOwogICAgIH07CiAKQEAgLTg3LDYgKzkwLDEw
IEBAIHB1YmxpYzoKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXBwZW5kRmlsZVJhbmdlKGNvbnN0
IFdlYlN0cmluZyYsIGxvbmcgbG9uZyBmaWxlU3RhcnQsIGxvbmcgbG9uZyBmaWxlTGVuZ3RoLCBk
b3VibGUgbW9kaWZpY2F0aW9uVGltZSk7CiAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFwcGVuZEJs
b2IoY29uc3QgV2ViVVJMJik7CiAKKyAgICAvLyBBcHBlbmQgYSByZXNvdXJjZSB3aGljaCBpcyBp
ZGVudGlmaWVkIGJ5IFVSTC4gQ3VycmVudGx5IHdlIG9ubHkgc3VwcG9ydCBGaWxlU3lzdGVtIFVS
TC4KKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXBwZW5kVVJMKGNvbnN0IFdlYlVSTCYpOworICAg
IFdFQktJVF9FWFBPUlQgdm9pZCBhcHBlbmRVUkxSYW5nZShjb25zdCBXZWJVUkwmLCBsb25nIGxv
bmcgc3RhcnQsIGxvbmcgbG9uZyBsZW5ndGgsIGRvdWJsZSBtb2RpZmljYXRpb25UaW1lKTsKKwog
ICAgIC8vIElkZW50aWZpZXMgYSBwYXJ0aWN1bGFyIGZvcm0gc3VibWlzc2lvbiBpbnN0YW5jZS4g
QSB2YWx1ZSBvZiAwIGlzCiAgICAgLy8gdXNlZCB0byBpbmRpY2F0ZSBhbiB1bnNwZWNpZmllZCBp
ZGVudGlmaWVyLgogICAgIFdFQktJVF9FWFBPUlQgbG9uZyBsb25nIGlkZW50aWZpZXIoKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxl
U3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lz
dGVtLmNwcAppbmRleCA1MGI1MTg1OWRkMDIzNjkyM2Q0NDc0YWU3N2EzMjA1MTE4N2Y2Y2U5Li40
ZThlZDRiNDE5MjQ2YzAyNTE5MGJlYTllYWVlNzcxYTBkMTE4NTk2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW0uY3BwCkBAIC0xNTAs
OSArMTUwLDkgQEAgbmFtZXNwYWNlIHsKIAogY2xhc3MgR2V0TWV0YWRhdGFDYWxsYmFjayA6IHB1
YmxpYyBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NP
d25QdHI8R2V0TWV0YWRhdGFDYWxsYmFjaz4gY3JlYXRlKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3Rl
bT4gZmlsZXN5c3RlbSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPEZpbGVDYWxsYmFj
az4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJh
Y2spCisgICAgc3RhdGljIFBhc3NPd25QdHI8R2V0TWV0YWRhdGFDYWxsYmFjaz4gY3JlYXRlKFBh
c3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4gZmlsZXN5c3RlbSwgY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBLVVJMJiB1cmwsIFBhc3NSZWZQdHI8RmlsZUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ss
IFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKICAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFB0cihuZXcgR2V0TWV0YWRhdGFDYWxsYmFjayhmaWxlc3lzdGVtLCBuYW1l
LCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBHZXRNZXRhZGF0YUNhbGxiYWNrKGZpbGVzeXN0ZW0sIG5hbWUsIHVybCwgc3VjY2Vz
c0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB2b2lkIGRp
ZFJlYWRNZXRhZGF0YShjb25zdCBGaWxlTWV0YWRhdGEmIG1ldGFkYXRhKQpAQCAtMTYzLDI1ICsx
NjMsMzQgQEAgcHVibGljOgogCiAgICAgICAgIC8vIEZvciByZWd1bGFyIGZpbGVzeXN0ZW0gdHlw
ZXMgKHRlbXBvcmFyeSBvciBwZXJzaXN0ZW50KSwgd2Ugc2hvdWxkIG5vdCBjYWNoZSBmaWxlIG1l
dGFkYXRhIGFzIGl0IGNvdWxkIGNoYW5nZSBGaWxlIHNlbWFudGljcy4KICAgICAgICAgLy8gRm9y
IG90aGVyIGZpbGVzeXN0ZW0gdHlwZXMgKHdoaWNoIGNvdWxkIGJlIHBsYXRmb3JtLXNwZWNpZmlj
IG9uZXMpLCB0aGVyZSdzIGEgY2hhbmNlIHRoYXQgdGhlIGZpbGVzIGFyZSBvbiByZW1vdGUgZmls
ZXN5c3RlbS4gSWYgdGhlIHBvcnQgaGFzIHJldHVybmVkIG1ldGFkYXRhIGp1c3QgcGFzcyBpdCB0
byBGaWxlIGNvbnN0cnVjdG9yIChzbyB3ZSBtYXkgY2FjaGUgdGhlIG1ldGFkYXRhKS4KLSAgICAg
ICAgaWYgKG1fZmlsZXN5c3RlbS0+dHlwZSgpID09IEZpbGVTeXN0ZW1UeXBlVGVtcG9yYXJ5IHx8
IG1fZmlsZXN5c3RlbS0+dHlwZSgpID09IEZpbGVTeXN0ZW1UeXBlUGVyc2lzdGVudCkKKyAgICAg
ICAgLy8gRklYTUU6IFdlIHNob3VsZCB1c2UgdGhlIHNuYXBzaG90IG1ldGFkYXRhIGZvciBhbGwg
ZmlsZXMuCisgICAgICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9CdWdzL1B1YmxpYy9zaG93X2J1
Zy5jZ2k/aWQ9MTc3NDYKKyAgICAgICAgaWYgKG1fZmlsZXN5c3RlbS0+dHlwZSgpID09IEZpbGVT
eXN0ZW1UeXBlVGVtcG9yYXJ5IHx8IG1fZmlsZXN5c3RlbS0+dHlwZSgpID09IEZpbGVTeXN0ZW1U
eXBlUGVyc2lzdGVudCkgewogICAgICAgICAgICAgbV9zdWNjZXNzQ2FsbGJhY2stPmhhbmRsZUV2
ZW50KEZpbGU6OmNyZWF0ZVdpdGhOYW1lKG1ldGFkYXRhLnBsYXRmb3JtUGF0aCwgbV9uYW1lKS5n
ZXQoKSk7Ci0gICAgICAgIGVsc2UKKyAgICAgICAgfSBlbHNlIGlmICghbWV0YWRhdGEucGxhdGZv
cm1QYXRoLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgLy8gSWYgdGhlIHBsYXRmb3JtUGF0aCBp
biB0aGUgcmV0dXJuZWQgbWV0YWRhdGEgaXMgZ2l2ZW4sIHdlIGNyZWF0ZSBhIEZpbGUgb2JqZWN0
IGZvciB0aGUgcGF0aC4KICAgICAgICAgICAgIG1fc3VjY2Vzc0NhbGxiYWNrLT5oYW5kbGVFdmVu
dChGaWxlOjpjcmVhdGVGb3JGaWxlU3lzdGVtRmlsZShtX25hbWUsIG1ldGFkYXRhKS5nZXQoKSk7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBPdGhlcndpc2UgY3JlYXRlIGEgRmls
ZSBmcm9tIHRoZSBGaWxlU3lzdGVtIFVSTC4KKyAgICAgICAgICAgIG1fc3VjY2Vzc0NhbGxiYWNr
LT5oYW5kbGVFdmVudChGaWxlOjpjcmVhdGVGb3JGaWxlU3lzdGVtRmlsZShtX3VybCwgbWV0YWRh
dGEpLmdldCgpKTsKKyAgICAgICAgfQogCiAgICAgICAgIG1fc3VjY2Vzc0NhbGxiYWNrLnJlbGVh
c2UoKTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgR2V0TWV0YWRhdGFDYWxsYmFjayhQYXNzUmVm
UHRyPERPTUZpbGVTeXN0ZW0+IGZpbGVzeXN0ZW0sIGNvbnN0IFN0cmluZyYgbmFtZSwgIFBhc3NS
ZWZQdHI8RmlsZUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxs
YmFjaz4gZXJyb3JDYWxsYmFjaykKKyAgICBHZXRNZXRhZGF0YUNhbGxiYWNrKFBhc3NSZWZQdHI8
RE9NRmlsZVN5c3RlbT4gZmlsZXN5c3RlbSwgY29uc3QgU3RyaW5nJiBuYW1lLCAgY29uc3QgS1VS
TCYgdXJsLCBQYXNzUmVmUHRyPEZpbGVDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVm
UHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCiAgICAgICAgIDogRmlsZVN5c3RlbUNh
bGxiYWNrc0Jhc2UoZXJyb3JDYWxsYmFjaykKICAgICAgICAgLCBtX2ZpbGVzeXN0ZW0oZmlsZXN5
c3RlbSkKICAgICAgICAgLCBtX25hbWUobmFtZSkKKyAgICAgICAgLCBtX3VybCh1cmwpCiAgICAg
ICAgICwgbV9zdWNjZXNzQ2FsbGJhY2soc3VjY2Vzc0NhbGxiYWNrKQogICAgIHsKICAgICB9CiAK
ICAgICBSZWZQdHI8RE9NRmlsZVN5c3RlbT4gbV9maWxlc3lzdGVtOwogICAgIFN0cmluZyBtX25h
bWU7CisgICAgS1VSTCBtX3VybDsKICAgICBSZWZQdHI8RmlsZUNhbGxiYWNrPiBtX3N1Y2Nlc3ND
YWxsYmFjazsKIH07CiAKQEAgLTE4OSw3ICsxOTgsOCBAQCBwcml2YXRlOgogCiB2b2lkIERPTUZp
bGVTeXN0ZW06OmNyZWF0ZUZpbGUoY29uc3QgRmlsZUVudHJ5KiBmaWxlRW50cnksIFBhc3NSZWZQ
dHI8RmlsZUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFj
az4gZXJyb3JDYWxsYmFjaykKIHsKLSAgICBtX2FzeW5jRmlsZVN5c3RlbS0+Y3JlYXRlU25hcHNo
b3RGaWxlQW5kUmVhZE1ldGFkYXRhKGNyZWF0ZUZpbGVTeXN0ZW1VUkwoZmlsZUVudHJ5KSwgR2V0
TWV0YWRhdGFDYWxsYmFjazo6Y3JlYXRlKHRoaXMsIGZpbGVFbnRyeS0+bmFtZSgpLCBzdWNjZXNz
Q2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKTsKKyAgICBLVVJMIGZpbGVTeXN0ZW1VUkwgPSBjcmVh
dGVGaWxlU3lzdGVtVVJMKGZpbGVFbnRyeSk7CisgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmNyZWF0
ZVNuYXBzaG90RmlsZUFuZFJlYWRNZXRhZGF0YShmaWxlU3lzdGVtVVJMLCBHZXRNZXRhZGF0YUNh
bGxiYWNrOjpjcmVhdGUodGhpcywgZmlsZUVudHJ5LT5uYW1lKCksIGZpbGVTeXN0ZW1VUkwsIHN1
Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmls
ZVN5c3RlbVN5bmMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZp
bGVTeXN0ZW1TeW5jLmNwcAppbmRleCBiYzM2Y2FlZGRjN2RmYTk2NzcxMTA5MmIwM2RlNTg0NjA3
MDY2MjhhLi5kYWQ0MzJmMjQ3YWY5YWRlMTQ5YjE2Y2MxNjRmODc2OTdiMGU1Y2JmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbVN5bmMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVt
U3luYy5jcHAKQEAgLTk4LDkgKzk4LDkgQEAgcHVibGljOgogICAgICAgICBmcmllbmQgY2xhc3Mg
V1RGOjpSZWZDb3VudGVkPENyZWF0ZUZpbGVSZXN1bHQ+OwogICAgIH07CiAKLSAgICBzdGF0aWMg
UGFzc093blB0cjxDcmVhdGVGaWxlSGVscGVyPiBjcmVhdGUoUGFzc1JlZlB0cjxDcmVhdGVGaWxl
UmVzdWx0PiByZXN1bHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgRmlsZVN5c3RlbVR5cGUgdHlwZSkK
KyAgICBzdGF0aWMgUGFzc093blB0cjxDcmVhdGVGaWxlSGVscGVyPiBjcmVhdGUoUGFzc1JlZlB0
cjxDcmVhdGVGaWxlUmVzdWx0PiByZXN1bHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgS1VS
TCYgdXJsLCBGaWxlU3lzdGVtVHlwZSB0eXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBDcmVhdGVGaWxlSGVscGVyKHJlc3VsdCwgbmFtZSwgdHlwZSkpOworICAgICAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IENyZWF0ZUZpbGVIZWxwZXIocmVzdWx0LCBuYW1lLCB1cmwsIHR5
cGUpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChpbnQgY29kZSkKQEAgLTEx
NywyMSArMTE3LDMwIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIC8vIEZvciByZWd1bGFyIGZp
bGVzeXN0ZW0gdHlwZXMgKHRlbXBvcmFyeSBvciBwZXJzaXN0ZW50KSwgd2Ugc2hvdWxkIG5vdCBj
YWNoZSBmaWxlIG1ldGFkYXRhIGFzIGl0IGNvdWxkIGNoYW5nZSBGaWxlIHNlbWFudGljcy4KICAg
ICAgICAgLy8gRm9yIG90aGVyIGZpbGVzeXN0ZW0gdHlwZXMgKHdoaWNoIGNvdWxkIGJlIHBsYXRm
b3JtLXNwZWNpZmljIG9uZXMpLCB0aGVyZSdzIGEgY2hhbmNlIHRoYXQgdGhlIGZpbGVzIGFyZSBv
biByZW1vdGUgZmlsZXN5c3RlbS4gSWYgdGhlIHBvcnQgaGFzIHJldHVybmVkIG1ldGFkYXRhIGp1
c3QgcGFzcyBpdCB0byBGaWxlIGNvbnN0cnVjdG9yIChzbyB3ZSBtYXkgY2FjaGUgdGhlIG1ldGFk
YXRhKS4KLSAgICAgICAgaWYgKG1fdHlwZSA9PSBGaWxlU3lzdGVtVHlwZVRlbXBvcmFyeSB8fCBt
X3R5cGUgPT0gRmlsZVN5c3RlbVR5cGVQZXJzaXN0ZW50KQorICAgICAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIHVzZSB0aGUgc25hcHNob3QgbWV0YWRhdGEgZm9yIGFsbCBmaWxlcy4KKyAgICAgICAg
Ly8gaHR0cHM6Ly93d3cudzMub3JnL0J1Z3MvUHVibGljL3Nob3dfYnVnLmNnaT9pZD0xNzc0Ngor
ICAgICAgICBpZiAobV90eXBlID09IEZpbGVTeXN0ZW1UeXBlVGVtcG9yYXJ5IHx8IG1fdHlwZSA9
PSBGaWxlU3lzdGVtVHlwZVBlcnNpc3RlbnQpIHsKICAgICAgICAgICAgIG1fcmVzdWx0LT5tX2Zp
bGUgPSBGaWxlOjpjcmVhdGVXaXRoTmFtZShtZXRhZGF0YS5wbGF0Zm9ybVBhdGgsIG1fbmFtZSk7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fcmVzdWx0LT5tX2ZpbGUgPSBGaWxlOjpjcmVh
dGVGb3JGaWxlU3lzdGVtRmlsZShtX25hbWUsIG1ldGFkYXRhKTsKKyAgICAgICAgfSBlbHNlIGlm
ICghbWV0YWRhdGEucGxhdGZvcm1QYXRoLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgLy8gSWYg
dGhlIHBsYXRmb3JtUGF0aCBpbiB0aGUgcmV0dXJuZWQgbWV0YWRhdGEgaXMgZ2l2ZW4sIHdlIGNy
ZWF0ZSBhIEZpbGUgb2JqZWN0IGZvciB0aGUgcGF0aC4KKyAgICAgICAgICAgIG1fcmVzdWx0LT5t
X2ZpbGUgPSBGaWxlOjpjcmVhdGVGb3JGaWxlU3lzdGVtRmlsZShtX25hbWUsIG1ldGFkYXRhKS5n
ZXQoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIE90aGVyd2lzZSBjcmVhdGUg
YSBGaWxlIGZyb20gdGhlIEZpbGVTeXN0ZW0gVVJMLgorICAgICAgICAgICAgbV9yZXN1bHQtPm1f
ZmlsZSA9IEZpbGU6OmNyZWF0ZUZvckZpbGVTeXN0ZW1GaWxlKG1fdXJsLCBtZXRhZGF0YSkuZ2V0
KCk7CisgICAgICAgIH0KICAgICB9CiBwcml2YXRlOgotICAgIENyZWF0ZUZpbGVIZWxwZXIoUGFz
c1JlZlB0cjxDcmVhdGVGaWxlUmVzdWx0PiByZXN1bHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgRmls
ZVN5c3RlbVR5cGUgdHlwZSkKKyAgICBDcmVhdGVGaWxlSGVscGVyKFBhc3NSZWZQdHI8Q3JlYXRl
RmlsZVJlc3VsdD4gcmVzdWx0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IEtVUkwmIHVybCwg
RmlsZVN5c3RlbVR5cGUgdHlwZSkKICAgICAgICAgOiBtX3Jlc3VsdChyZXN1bHQpCiAgICAgICAg
ICwgbV9uYW1lKG5hbWUpCisgICAgICAgICwgbV91cmwodXJsKQogICAgICAgICAsIG1fdHlwZSh0
eXBlKQogICAgIHsKICAgICB9CiAKICAgICBSZWZQdHI8Q3JlYXRlRmlsZVJlc3VsdD4gbV9yZXN1
bHQ7CiAgICAgU3RyaW5nIG1fbmFtZTsKKyAgICBLVVJMIG1fdXJsOwogICAgIEZpbGVTeXN0ZW1U
eXBlIG1fdHlwZTsKIH07CiAKQEAgLTE0MCw4ICsxNDksOSBAQCBwcml2YXRlOgogUGFzc1JlZlB0
cjxGaWxlPiBET01GaWxlU3lzdGVtU3luYzo6Y3JlYXRlRmlsZShjb25zdCBGaWxlRW50cnlTeW5j
KiBmaWxlRW50cnksIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGVjID0gMDsKKyAgICBLVVJM
IGZpbGVTeXN0ZW1VUkwgPSBjcmVhdGVGaWxlU3lzdGVtVVJMKGZpbGVFbnRyeSk7CiAgICAgUmVm
UHRyPENyZWF0ZUZpbGVIZWxwZXI6OkNyZWF0ZUZpbGVSZXN1bHQ+IHJlc3VsdChDcmVhdGVGaWxl
SGVscGVyOjpDcmVhdGVGaWxlUmVzdWx0OjpjcmVhdGUoKSk7Ci0gICAgbV9hc3luY0ZpbGVTeXN0
ZW0tPmNyZWF0ZVNuYXBzaG90RmlsZUFuZFJlYWRNZXRhZGF0YShjcmVhdGVGaWxlU3lzdGVtVVJM
KGZpbGVFbnRyeSksIENyZWF0ZUZpbGVIZWxwZXI6OmNyZWF0ZShyZXN1bHQsIGZpbGVFbnRyeS0+
bmFtZSgpLCB0eXBlKCkpKTsKKyAgICBtX2FzeW5jRmlsZVN5c3RlbS0+Y3JlYXRlU25hcHNob3RG
aWxlQW5kUmVhZE1ldGFkYXRhKGZpbGVTeXN0ZW1VUkwsIENyZWF0ZUZpbGVIZWxwZXI6OmNyZWF0
ZShyZXN1bHQsIGZpbGVFbnRyeS0+bmFtZSgpLCBmaWxlU3lzdGVtVVJMLCB0eXBlKCkpKTsKICAg
ICBpZiAoIW1fYXN5bmNGaWxlU3lzdGVtLT53YWl0Rm9yT3BlcmF0aW9uVG9Db21wbGV0ZSgpKSB7
CiAgICAgICAgIGVjID0gRmlsZUV4Y2VwdGlvbjo6QUJPUlRfRVJSOwogICAgICAgICByZXR1cm4g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwCmluZGV4IGQxZGNiNTFhYjAxNTZjZThmYTg5MGRmMzcw
YzU3ZjAzNTJjNDQwM2MuLjFiOTA3MTIyMjc4OTMzMGNiMmZmMmEwOGE4NTMwYzdmODUyM2MzOTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcApAQCAtMTM3LDkgKzEzNywxNCBAQCBQYXNzUmVmUHRy
PEJsb2I+IEJsb2I6OnNsaWNlSW50ZXJuYWwobG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5k
LCBjb25zdCBTdHJpbgogICAgIGxvbmcgbG9uZyBsZW5ndGggPSBlbmQgLSBzdGFydDsKICAgICBP
d25QdHI8QmxvYkRhdGE+IGJsb2JEYXRhID0gQmxvYkRhdGE6OmNyZWF0ZSgpOwogICAgIGJsb2JE
YXRhLT5zZXRDb250ZW50VHlwZShjb250ZW50VHlwZSk7Ci0gICAgaWYgKGlzRmlsZSgpKQorICAg
IGlmIChpc0ZpbGUoKSkgeworI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKKyAgICAgICAgaWYgKCF0
b0ZpbGUodGhpcyktPmZpbGVTeXN0ZW1VUkwoKS5pc0VtcHR5KCkpCisgICAgICAgICAgICBibG9i
RGF0YS0+YXBwZW5kVVJMKHRvRmlsZSh0aGlzKS0+ZmlsZVN5c3RlbVVSTCgpLCBzdGFydCwgbGVu
Z3RoLCBtb2RpZmljYXRpb25UaW1lKTsKKyAgICAgICAgZWxzZQorI2VuZGlmCiAgICAgICAgIGJs
b2JEYXRhLT5hcHBlbmRGaWxlKHRvRmlsZSh0aGlzKS0+cGF0aCgpLCBzdGFydCwgbGVuZ3RoLCBt
b2RpZmljYXRpb25UaW1lKTsKLSAgICBlbHNlCisgICAgfSBlbHNlCiAgICAgICAgIGJsb2JEYXRh
LT5hcHBlbmRCbG9iKG1faW50ZXJuYWxVUkwsIHN0YXJ0LCBsZW5ndGgpOwogCiAgICAgcmV0dXJu
IEJsb2I6OmNyZWF0ZShibG9iRGF0YS5yZWxlYXNlKCksIGxlbmd0aCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9G
aWxlLmNwcAppbmRleCAwODc4OTU3MTAwODNhMDZmMWQ4MWE5NDFlN2MyOWUyZmJmMjRiNzA5Li42
OTJiZGUxYWNhMGFkN2MxNjFjNGQzZjQ4ZWQyMTM2YTNhNTJhZGMwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
RmlsZS5jcHAKQEAgLTc1LDYgKzc1LDE0IEBAIHN0YXRpYyBQYXNzT3duUHRyPEJsb2JEYXRhPiBj
cmVhdGVCbG9iRGF0YUZvckZpbGVXaXRoTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBmaWxlCiAgICAg
YmxvYkRhdGEtPmFwcGVuZEZpbGUobWV0YWRhdGEucGxhdGZvcm1QYXRoLCAwLCBtZXRhZGF0YS5s
ZW5ndGgsIG1ldGFkYXRhLm1vZGlmaWNhdGlvblRpbWUpOwogICAgIHJldHVybiBibG9iRGF0YS5y
ZWxlYXNlKCk7CiB9CisKK3N0YXRpYyBQYXNzT3duUHRyPEJsb2JEYXRhPiBjcmVhdGVCbG9iRGF0
YUZvckZpbGVTeXN0ZW1VUkwoY29uc3QgS1VSTCYgZmlsZVN5c3RlbVVSTCwgY29uc3QgRmlsZU1l
dGFkYXRhJiBtZXRhZGF0YSkKK3sKKyAgICBPd25QdHI8QmxvYkRhdGE+IGJsb2JEYXRhID0gQmxv
YkRhdGE6OmNyZWF0ZSgpOworICAgIGJsb2JEYXRhLT5zZXRDb250ZW50VHlwZShnZXRDb250ZW50
VHlwZUZyb21GaWxlTmFtZShmaWxlU3lzdGVtVVJMLnBhdGgoKSwgRmlsZTo6V2VsbEtub3duQ29u
dGVudFR5cGVzKSk7CisgICAgYmxvYkRhdGEtPmFwcGVuZFVSTChmaWxlU3lzdGVtVVJMLCAwLCBt
ZXRhZGF0YS5sZW5ndGgsIG1ldGFkYXRhLm1vZGlmaWNhdGlvblRpbWUpOworICAgIHJldHVybiBi
bG9iRGF0YS5yZWxlYXNlKCk7Cit9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShESVJFQ1RPUllfVVBM
T0FEKQpAQCAtMTMxLDYgKzEzOSwxNCBAQCBGaWxlOjpGaWxlKGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgRmlsZU1ldGFkYXRhJiBtZXRhZGF0YSkKICAgICAsIG1fc25hcHNob3RNb2RpZmljYXRp
b25UaW1lKG1ldGFkYXRhLm1vZGlmaWNhdGlvblRpbWUpCiB7CiB9CisKK0ZpbGU6OkZpbGUoY29u
c3QgS1VSTCYgZmlsZVN5c3RlbVVSTCwgY29uc3QgRmlsZU1ldGFkYXRhJiBtZXRhZGF0YSkKKyAg
ICA6IEJsb2IoY3JlYXRlQmxvYkRhdGFGb3JGaWxlU3lzdGVtVVJMKGZpbGVTeXN0ZW1VUkwsIG1l
dGFkYXRhKSwgbWV0YWRhdGEubGVuZ3RoKQorICAgICwgbV9maWxlU3lzdGVtVVJMKGZpbGVTeXN0
ZW1VUkwpCisgICAgLCBtX3NuYXBzaG90U2l6ZShtZXRhZGF0YS5sZW5ndGgpCisgICAgLCBtX3Nu
YXBzaG90TW9kaWZpY2F0aW9uVGltZShtZXRhZGF0YS5tb2RpZmljYXRpb25UaW1lKQoreworfQog
I2VuZGlmCiAKIGRvdWJsZSBGaWxlOjpsYXN0TW9kaWZpZWREYXRlKCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9GaWxlLmgKaW5kZXggODY0YzQzODhhZTkzYzlkYjJiOTExYmM0Yzk4NDg2MDBkMWUyMzg3MS4u
YjkxNTkwMmQ0OWVlNzcwZDU4NjcxNmVmYWY1MTdkZjg1NTI2Y2IxOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9G
aWxlLmgKQEAgLTY4LDYgKzY4LDEzIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgRmlsZShuYW1lLCBtZXRhZGF0YSkpOwogICAgIH0KKworICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEZpbGU+IGNyZWF0ZUZvckZpbGVTeXN0ZW1GaWxlKGNvbnN0IEtVUkwmIHVybCwg
Y29uc3QgRmlsZU1ldGFkYXRhJiBtZXRhZGF0YSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgRmlsZSh1cmwsIG1ldGFkYXRhKSk7CisgICAgfQorCisgICAgS1VSTCBmaWxlU3lz
dGVtVVJMKCkgY29uc3QgeyByZXR1cm4gbV9maWxlU3lzdGVtVVJMOyB9CiAjZW5kaWYKIAogICAg
IC8vIENyZWF0ZSBhIGZpbGUgd2l0aCBhIG5hbWUgZXhwb3NlZCB0byB0aGUgYXV0aG9yICh2aWEg
RmlsZS5uYW1lIGFuZCBhc3NvY2lhdGVkIERPTSBwcm9wZXJ0aWVzKSB0aGF0IGRpZmZlcnMgZnJv
bSB0aGUgb25lIHByb3ZpZGVkIGluIHRoZSBwYXRoLgpAQCAtMTA0LDYgKzExMSw3IEBAIHByaXZh
dGU6CiAKICMgaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogICAgIEZpbGUoY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBGaWxlTWV0YWRhdGEmKTsKKyAgICBGaWxlKGNvbnN0IEtVUkwmIGZpbGVTeXN0
ZW1VUkwsIGNvbnN0IEZpbGVNZXRhZGF0YSYpOwogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRo
aXMgaGFzIGEgdmFsaWQgc25hcHNob3QgbWV0YWRhdGEgKGkuZS4gbV9zbmFwc2hvdFNpemUgPj0g
MCkuCiAgICAgYm9vbCBoYXNWYWxpZFNuYXBzaG90TWV0YWRhdGEoKSBjb25zdCB7IHJldHVybiBt
X3NuYXBzaG90U2l6ZSA+PSAwOyB9CkBAIC0xMTMsNiArMTIxLDggQEAgcHJpdmF0ZToKICAgICBT
dHJpbmcgbV9uYW1lOwogCiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQorICAgIEtVUkwgbV9maWxl
U3lzdGVtVVJMOworCiAgICAgLy8gSWYgbV9zbmFwc2hvdFNpemUgaXMgbmVnYXRpdmUgKGluaXRp
YWxpemVkIHRvIC0xIGJ5IGRlZmF1bHQpLCB0aGUgc25hcHNob3QgbWV0YWRhdGEgaXMgaW52YWxp
ZCBhbmQgd2UgcmV0cmlldmUgdGhlIGxhdGVzdCBtZXRhZGF0YSBzeW5jaHJvbm91c2x5IGluIHNp
emUoKSwgbGFzdE1vZGlmaWVkVGltZSgpIGFuZCB3ZWJraXRTbGljZSgpLgogICAgIC8vIE90aGVy
d2lzZSwgdGhlIHNuYXBzaG90IG1ldGFkYXRhIGFyZSB1c2VkIGRpcmVjdGx5IGluIHRob3NlIG1l
dGhvZHMuCiAgICAgY29uc3QgbG9uZyBsb25nIG1fc25hcHNob3RTaXplOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL1dlYktpdEJsb2JCdWlsZGVyLmNwcAppbmRleCA1YzU0YzRiNmYyYzIzYmU2
MWI4NzhjNzZkMWI4YzExOGFmYmU5YWM1Li5mYzI3MDVkZTg3YmFhODM4NzhiMDAwNDJlNTg1MjRl
ODg3ZmUzZGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dlYktpdEJsb2JC
dWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dlYktpdEJsb2JCdWlsZGVy
LmNwcApAQCAtMTQxLDYgKzE0MSwxMSBAQCB2b2lkIFdlYktpdEJsb2JCdWlsZGVyOjphcHBlbmQo
QmxvYiogYmxvYikKICAgICAgICAgZmlsZS0+Y2FwdHVyZVNuYXBzaG90KHNuYXBzaG90U2l6ZSwg
c25hcHNob3RNb2RpZmljYXRpb25UaW1lKTsKIAogICAgICAgICBtX3NpemUgKz0gc25hcHNob3RT
aXplOworI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKKyAgICAgICAgaWYgKCFmaWxlLT5maWxlU3lz
dGVtVVJMKCkuaXNFbXB0eSgpKQorICAgICAgICAgICAgbV9pdGVtcy5hcHBlbmQoQmxvYkRhdGFJ
dGVtKGZpbGUtPmZpbGVTeXN0ZW1VUkwoKSwgMCwgc25hcHNob3RTaXplLCBzbmFwc2hvdE1vZGlm
aWNhdGlvblRpbWUpKTsKKyAgICAgICAgZWxzZQorI2VuZGlmCiAgICAgICAgIG1faXRlbXMuYXBw
ZW5kKEJsb2JEYXRhSXRlbShmaWxlLT5wYXRoKCksIDAsIHNuYXBzaG90U2l6ZSwgc25hcHNob3RN
b2RpZmljYXRpb25UaW1lKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbG9uZyBsb25nIGJsb2JT
aXplID0gc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihibG9iLT5zaXplKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJIVFRQQm9keS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkhUVFBCb2R5LmNw
cAppbmRleCA0MGIwZmNkMjZiYzhjOGQ3YzhmOTlkODZjOTcwOTUzMWM5MjYzYWVkLi5mNDc2YzAx
NGE0YmRiMWQyZmZiYTI5NjgzY2QyZWM4NTNhZmY2N2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkhUVFBCb2R5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkhUVFBCb2R5LmNwcApAQCAt
NzksNiArNzksNyBAQCBib29sIFdlYkhUVFBCb2R5OjplbGVtZW50QXQoc2l6ZV90IGluZGV4LCBF
bGVtZW50JiByZXN1bHQpIGNvbnN0CiAgICAgcmVzdWx0LmZpbGVTdGFydCA9IDA7CiAgICAgcmVz
dWx0LmZpbGVMZW5ndGggPSAwOwogICAgIHJlc3VsdC5tb2RpZmljYXRpb25UaW1lID0gaW52YWxp
ZEZpbGVUaW1lKCk7CisgICAgcmVzdWx0LnVybCA9IEtVUkwoKTsKICAgICByZXN1bHQuYmxvYlVS
TCA9IEtVUkwoKTsKIAogICAgIHN3aXRjaCAoZWxlbWVudC5tX3R5cGUpIHsKQEAgLTk4LDcgKzk5
LDE3IEBAIGJvb2wgV2ViSFRUUEJvZHk6OmVsZW1lbnRBdChzaXplX3QgaW5kZXgsIEVsZW1lbnQm
IHJlc3VsdCkgY29uc3QKICNpZiBFTkFCTEUoQkxPQikKICAgICBjYXNlIEZvcm1EYXRhRWxlbWVu
dDo6ZW5jb2RlZEJsb2I6CiAgICAgICAgIHJlc3VsdC50eXBlID0gRWxlbWVudDo6VHlwZUJsb2I7
Ci0gICAgICAgIHJlc3VsdC5ibG9iVVJMID0gZWxlbWVudC5tX2Jsb2JVUkw7CisgICAgICAgIHJl
c3VsdC51cmwgPSBlbGVtZW50Lm1fdXJsOworICAgICAgICByZXN1bHQuYmxvYlVSTCA9IGVsZW1l
bnQubV91cmw7IC8vIEZJWE1FOiBkZXByZWNhdGUgdGhpcy4KKyAgICAgICAgYnJlYWs7CisjZW5k
aWYKKyNpZiBFTkFCTEUoRklMRV9TWVNURU0pCisgICAgY2FzZSBGb3JtRGF0YUVsZW1lbnQ6OmVu
Y29kZWRVUkw6CisgICAgICAgIHJlc3VsdC50eXBlID0gRWxlbWVudDo6VHlwZVVSTDsKKyAgICAg
ICAgcmVzdWx0LnVybCA9IGVsZW1lbnQubV91cmw7CisgICAgICAgIHJlc3VsdC5maWxlU3RhcnQg
PSBlbGVtZW50Lm1fZmlsZVN0YXJ0OworICAgICAgICByZXN1bHQuZmlsZUxlbmd0aCA9IGVsZW1l
bnQubV9maWxlTGVuZ3RoOworICAgICAgICByZXN1bHQubW9kaWZpY2F0aW9uVGltZSA9IGVsZW1l
bnQubV9leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lOwogICAgICAgICBicmVhazsKICNlbmRp
ZgogICAgIGRlZmF1bHQ6CkBAIC0xMzEsOSArMTQyLDI4IEBAIHZvaWQgV2ViSFRUUEJvZHk6OmFw
cGVuZEZpbGVSYW5nZShjb25zdCBXZWJTdHJpbmcmIGZpbGVQYXRoLCBsb25nIGxvbmcgZmlsZVN0
YXJ0CiAjZW5kaWYKIH0KIAordm9pZCBXZWJIVFRQQm9keTo6YXBwZW5kVVJMKGNvbnN0IFdlYlVS
TCYgdXJsKQoreworI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKKyAgICBBU1NFUlQoS1VSTCh1cmwp
LnByb3RvY29sKCkgPT0gImZpbGVzeXN0ZW0iKTsKKyAgICBlbnN1cmVNdXRhYmxlKCk7CisgICAg
bV9wcml2YXRlLT5hcHBlbmRVUkwodXJsKTsKKyNlbmRpZgorfQorCit2b2lkIFdlYkhUVFBCb2R5
OjphcHBlbmRVUkxSYW5nZShjb25zdCBXZWJVUkwmIHVybCwgbG9uZyBsb25nIHN0YXJ0LCBsb25n
IGxvbmcgbGVuZ3RoLCBkb3VibGUgbW9kaWZpY2F0aW9uVGltZSkKK3sKKyNpZiBFTkFCTEUoRklM
RV9TWVNURU0pCisgICAgQVNTRVJUKEtVUkwodXJsKS5wcm90b2NvbCgpID09ICJmaWxlc3lzdGVt
Iik7CisgICAgZW5zdXJlTXV0YWJsZSgpOworICAgIG1fcHJpdmF0ZS0+YXBwZW5kVVJMUmFuZ2Uo
dXJsLCBzdGFydCwgbGVuZ3RoLCBtb2RpZmljYXRpb25UaW1lKTsKKyNlbmRpZgorfQorCiB2b2lk
IFdlYkhUVFBCb2R5OjphcHBlbmRCbG9iKGNvbnN0IFdlYlVSTCYgYmxvYlVSTCkKIHsKICNpZiBF
TkFCTEUoQkxPQikKKyAgICBBU1NFUlQoS1VSTChibG9iVVJMKS5wcm90b2NvbCgpID09ICJibG9i
Iik7CiAgICAgZW5zdXJlTXV0YWJsZSgpOwogICAgIG1fcHJpdmF0ZS0+YXBwZW5kQmxvYihibG9i
VVJMKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9CbG9iRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRh
LmNwcAppbmRleCBhMWNjMzEzMGM4MGRjNjM3MDNhMThjNjBhOGRmNzYyNzY4MGMzYzZkLi5mMjA0
NGZiYTI4MTk4ODY2ZTA2MWYzZmFkOTVkZDNmYzYxN2QzNDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhLmNwcApAQCAtODksNiArODksMTMgQEAgdm9pZCBC
bG9iRGF0YTo6YXBwZW5kQmxvYihjb25zdCBLVVJMJiB1cmwsIGxvbmcgbG9uZyBvZmZzZXQsIGxv
bmcgbG9uZyBsZW5ndGgpCiAgICAgbV9pdGVtcy5hcHBlbmQoQmxvYkRhdGFJdGVtKHVybCwgb2Zm
c2V0LCBsZW5ndGgpKTsKIH0KIAorI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKK3ZvaWQgQmxvYkRh
dGE6OmFwcGVuZFVSTChjb25zdCBLVVJMJiB1cmwsIGxvbmcgbG9uZyBvZmZzZXQsIGxvbmcgbG9u
ZyBsZW5ndGgsIGRvdWJsZSBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpCit7CisgICAgbV9pdGVt
cy5hcHBlbmQoQmxvYkRhdGFJdGVtKHVybCwgb2Zmc2V0LCBsZW5ndGgsIGV4cGVjdGVkTW9kaWZp
Y2F0aW9uVGltZSkpOworfQorI2VuZGlmCisKIHZvaWQgQmxvYkRhdGE6OnN3YXBJdGVtcyhCbG9i
RGF0YUl0ZW1MaXN0JiBpdGVtcykKIHsKICAgICBtX2l0ZW1zLnN3YXAoaXRlbXMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YS5oCmluZGV4IDUxOTVjYzk1Y2U1MjA5
NzY1ODc1YmRjMmQyNDE0ZTY1NWU5N2U3MmIuLmIzNWQyNWNmNzU5NTYzOWU2MDJlY2FlMzIwZWMw
YjJmNzczOTlhOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
QmxvYkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRh
LmgKQEAgLTExMCwxMCArMTEwLDI5IEBAIHN0cnVjdCBCbG9iRGF0YUl0ZW0gewogICAgIHsKICAg
ICB9CiAKKyNpZiBFTkFCTEUoRklMRV9TWVNURU0pCisgICAgLy8gQ29uc3RydWN0b3IgZm9yIFVS
TCB0eXBlIChlLmcuIEZpbGVTeXN0ZW0gZmlsZXMpLgorICAgIEJsb2JEYXRhSXRlbShjb25zdCBL
VVJMJiB1cmwsIGxvbmcgbG9uZyBvZmZzZXQsIGxvbmcgbG9uZyBsZW5ndGgsIGRvdWJsZSBleHBl
Y3RlZE1vZGlmaWNhdGlvblRpbWUpCisgICAgICAgIDogdHlwZShVUkwpCisgICAgICAgICwgdXJs
KHVybCkKKyAgICAgICAgLCBvZmZzZXQob2Zmc2V0KQorICAgICAgICAsIGxlbmd0aChsZW5ndGgp
CisgICAgICAgICwgZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKGV4cGVjdGVkTW9kaWZpY2F0aW9u
VGltZSkKKyAgICB7CisgICAgfQorI2VuZGlmCisKICAgICAvLyBEZXRhY2hlcyBmcm9tIGN1cnJl
bnQgdGhyZWFkIHNvIHRoYXQgaXQgY2FuIGJlIHBhc3NlZCB0byBhbm90aGVyIHRocmVhZC4KICAg
ICB2b2lkIGRldGFjaEZyb21DdXJyZW50VGhyZWFkKCk7CiAKLSAgICBlbnVtIHsgRGF0YSwgRmls
ZSwgQmxvYiB9IHR5cGU7CisgICAgZW51bSB7CisgICAgICAgIERhdGEsCisgICAgICAgIEZpbGUs
CisgICAgICAgIEJsb2IKKyNpZiBFTkFCTEUoRklMRV9TWVNURU0pCisgICAgICAgICwgVVJMCisj
ZW5kaWYKKyAgICB9IHR5cGU7CiAKICAgICAvLyBGb3IgRGF0YSB0eXBlLgogICAgIFJlZlB0cjxS
YXdEYXRhPiBkYXRhOwpAQCAtMTIxLDcgKzE0MCw3IEBAIHN0cnVjdCBCbG9iRGF0YUl0ZW0gewog
ICAgIC8vIEZvciBGaWxlIHR5cGUuCiAgICAgU3RyaW5nIHBhdGg7CiAKLSAgICAvLyBGb3IgQmxv
YiB0eXBlLgorICAgIC8vIEZvciBCbG9iIG9yIFVSTCB0eXBlLgogICAgIEtVUkwgdXJsOwogCiAg
ICAgbG9uZyBsb25nIG9mZnNldDsKQEAgLTE2NSw2ICsxODQsOSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBhcHBlbmRGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCk7CiAgICAgdm9pZCBhcHBlbmRGaWxlKGNv
bnN0IFN0cmluZyYgcGF0aCwgbG9uZyBsb25nIG9mZnNldCwgbG9uZyBsb25nIGxlbmd0aCwgZG91
YmxlIGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSk7CiAgICAgdm9pZCBhcHBlbmRCbG9iKGNvbnN0
IEtVUkwmLCBsb25nIGxvbmcgb2Zmc2V0LCBsb25nIGxvbmcgbGVuZ3RoKTsKKyNpZiBFTkFCTEUo
RklMRV9TWVNURU0pCisgICAgdm9pZCBhcHBlbmRVUkwoY29uc3QgS1VSTCYsIGxvbmcgbG9uZyBv
ZmZzZXQsIGxvbmcgbG9uZyBsZW5ndGgsIGRvdWJsZSBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUp
OworI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEJsb2JSZWdpc3RyeUltcGw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3Ry
eUltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJ
bXBsLmNwcAppbmRleCA1OWE5YTljNjA5M2E1NTJiOGUxZDA5OGJjYTMzZGQyNzBmZDJkYzgxLi5j
MjU5MDE0OWUyNWFiMzlkNzE2MzUzZDc3YmI1ZWFkZjgwNjU0MjZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKQEAgLTEw
Nyw2ICsxMDcsMTAgQEAgdm9pZCBCbG9iUmVnaXN0cnlJbXBsOjphcHBlbmRTdG9yYWdlSXRlbXMo
QmxvYlN0b3JhZ2VEYXRhKiBibG9iU3RvcmFnZURhdGEsIGNvbnMKICAgICBmb3IgKEJsb2JEYXRh
SXRlbUxpc3Q6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBpdGVtcy5iZWdpbigpOyBpdGVyICE9IGl0
ZW1zLmVuZCgpOyArK2l0ZXIpIHsKICAgICAgICAgaWYgKGl0ZXItPnR5cGUgPT0gQmxvYkRhdGFJ
dGVtOjpEYXRhKQogICAgICAgICAgICAgYmxvYlN0b3JhZ2VEYXRhLT5tX2RhdGEuYXBwZW5kRGF0
YShpdGVyLT5kYXRhLCBpdGVyLT5vZmZzZXQsIGl0ZXItPmxlbmd0aCk7CisjaWYgRU5BQkxFKEZJ
TEVfU1lTVEVNKQorICAgICAgICBlbHNlIGlmIChpdGVyLT50eXBlID09IEJsb2JEYXRhSXRlbTo6
VVJMKQorICAgICAgICAgICAgYmxvYlN0b3JhZ2VEYXRhLT5tX2RhdGEuYXBwZW5kVVJMKGl0ZXIt
PnVybCwgaXRlci0+b2Zmc2V0LCBpdGVyLT5sZW5ndGgsIGl0ZXItPmV4cGVjdGVkTW9kaWZpY2F0
aW9uVGltZSk7CisjZW5kaWYKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQoaXRl
ci0+dHlwZSA9PSBCbG9iRGF0YUl0ZW06OkZpbGUpOwogICAgICAgICAgICAgYmxvYlN0b3JhZ2VE
YXRhLT5tX2RhdGEuYXBwZW5kRmlsZShpdGVyLT5wYXRoLCBpdGVyLT5vZmZzZXQsIGl0ZXItPmxl
bmd0aCwgaXRlci0+ZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKTsKQEAgLTEzMyw2ICsxMzcsMTAg
QEAgdm9pZCBCbG9iUmVnaXN0cnlJbXBsOjphcHBlbmRTdG9yYWdlSXRlbXMoQmxvYlN0b3JhZ2VE
YXRhKiBibG9iU3RvcmFnZURhdGEsIGNvbnMKICAgICAgICAgbG9uZyBsb25nIG5ld0xlbmd0aCA9
IGN1cnJlbnRMZW5ndGggPiBsZW5ndGggPyBsZW5ndGggOiBjdXJyZW50TGVuZ3RoOwogICAgICAg
ICBpZiAoaXRlci0+dHlwZSA9PSBCbG9iRGF0YUl0ZW06OkRhdGEpCiAgICAgICAgICAgICBibG9i
U3RvcmFnZURhdGEtPm1fZGF0YS5hcHBlbmREYXRhKGl0ZXItPmRhdGEsIGl0ZXItPm9mZnNldCAr
IG9mZnNldCwgbmV3TGVuZ3RoKTsKKyNpZiBFTkFCTEUoRklMRV9TWVNURU0pCisgICAgICAgIGVs
c2UgaWYgKGl0ZXItPnR5cGUgPT0gQmxvYkRhdGFJdGVtOjpVUkwpCisgICAgICAgICAgICBibG9i
U3RvcmFnZURhdGEtPm1fZGF0YS5hcHBlbmRVUkwoaXRlci0+dXJsLCBpdGVyLT5vZmZzZXQgKyBv
ZmZzZXQsIG5ld0xlbmd0aCwgaXRlci0+ZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKTsKKyNlbmRp
ZgogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVChpdGVyLT50eXBlID09IEJsb2JE
YXRhSXRlbTo6RmlsZSk7CiAgICAgICAgICAgICBibG9iU3RvcmFnZURhdGEtPm1fZGF0YS5hcHBl
bmRGaWxlKGl0ZXItPnBhdGgsIGl0ZXItPm9mZnNldCArIG9mZnNldCwgbmV3TGVuZ3RoLCBpdGVy
LT5leHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpOwpAQCAtMTUyLDYgKzE2MCw3IEBAIHZvaWQgQmxv
YlJlZ2lzdHJ5SW1wbDo6cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IEtVUkwmIHVybCwgUGFzc093blB0
cjxCbG9iRGF0YT4gYmxvCiAgICAgLy8gVGhlIGJsb2IgZGF0YSBpcyBzdG9yZWQgaW4gdGhlICJj
YW5vbmljYWwiIHdheS4gVGhhdCBpcywgaXQgb25seSBjb250YWlucyBhIGxpc3Qgb2YgRGF0YSBh
bmQgRmlsZSBpdGVtcy4KICAgICAvLyAxKSBUaGUgRGF0YSBpdGVtIGlzIGRlbm90ZWQgYnkgdGhl
IHJhdyBkYXRhIGFuZCB0aGUgcmFuZ2UuCiAgICAgLy8gMikgVGhlIEZpbGUgaXRlbSBpcyBkZW5v
dGVkIGJ5IHRoZSBmaWxlIHBhdGgsIHRoZSByYW5nZSBhbmQgdGhlIGV4cGVjdGVkIG1vZGlmaWNh
dGlvbiB0aW1lLgorICAgIC8vIDMpIFRoZSBVUkwgaXRlbSBpcyBkZW5vdGVkIGJ5IHRoZSBVUkws
IHRoZSByYW5nZSBhbmQgdGhlIGV4cGVjdGVkIG1vZGlmaWNhdGlvbiB0aW1lLgogICAgIC8vIEFs
bCB0aGUgQmxvYiBpdGVtcyBpbiB0aGUgcGFzc2luZyBibG9iIGRhdGEgYXJlIHJlc29sdmVkIGFu
ZCBleHBhbmRlZCBpbnRvIGEgc2V0IG9mIERhdGEgYW5kIEZpbGUgaXRlbXMuCiAKICAgICBmb3Ig
KEJsb2JEYXRhSXRlbUxpc3Q6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBibG9iRGF0YS0+aXRlbXMo
KS5iZWdpbigpOyBpdGVyICE9IGJsb2JEYXRhLT5pdGVtcygpLmVuZCgpOyArK2l0ZXIpIHsKQEAg
LTE2Miw2ICsxNzEsMTEgQEAgdm9pZCBCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JVUkwo
Y29uc3QgS1VSTCYgdXJsLCBQYXNzT3duUHRyPEJsb2JEYXRhPiBibG8KICAgICAgICAgY2FzZSBC
bG9iRGF0YUl0ZW06OkZpbGU6CiAgICAgICAgICAgICBibG9iU3RvcmFnZURhdGEtPm1fZGF0YS5h
cHBlbmRGaWxlKGl0ZXItPnBhdGgsIGl0ZXItPm9mZnNldCwgaXRlci0+bGVuZ3RoLCBpdGVyLT5l
eHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpOwogICAgICAgICAgICAgYnJlYWs7CisjaWYgRU5BQkxF
KEZJTEVfU1lTVEVNKQorICAgICAgICBjYXNlIEJsb2JEYXRhSXRlbTo6VVJMOgorICAgICAgICAg
ICAgYmxvYlN0b3JhZ2VEYXRhLT5tX2RhdGEuYXBwZW5kVVJMKGl0ZXItPnVybCwgaXRlci0+b2Zm
c2V0LCBpdGVyLT5sZW5ndGgsIGl0ZXItPmV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSk7CisgICAg
ICAgICAgICBicmVhazsKKyNlbmRpZgogICAgICAgICBjYXNlIEJsb2JEYXRhSXRlbTo6QmxvYjoK
ICAgICAgICAgICAgIGlmIChtX2Jsb2JzLmNvbnRhaW5zKGl0ZXItPnVybC5zdHJpbmcoKSkpCiAg
ICAgICAgICAgICAgICAgYXBwZW5kU3RvcmFnZUl0ZW1zKGJsb2JTdG9yYWdlRGF0YS5nZXQoKSwg
bV9ibG9icy5nZXQoaXRlci0+dXJsLnN0cmluZygpKS0+aXRlbXMoKSwgaXRlci0+b2Zmc2V0LCBp
dGVyLT5sZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9Gb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRh
LmNwcAppbmRleCA1ZjViNWRmZDQ2MzlmN2YzYzQ0Y2I0NTY4ZTM2MjJjYmFlYzg1MDNhLi43ODFm
YTdhYTFkZDY3Yjg0ZDQ2YjdkNTBlNDAwMTFkYWQ5YTdjZDM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcApAQCAtMTQzLDcgKzE0MywxMiBAQCBQYXNz
UmVmUHRyPEZvcm1EYXRhPiBGb3JtRGF0YTo6ZGVlcENvcHkoKSBjb25zdAogICAgICAgICAgICAg
YnJlYWs7CiAjaWYgRU5BQkxFKEJMT0IpCiAgICAgICAgIGNhc2UgRm9ybURhdGFFbGVtZW50Ojpl
bmNvZGVkQmxvYjoKLSAgICAgICAgICAgIGZvcm1EYXRhLT5tX2VsZW1lbnRzLmFwcGVuZChGb3Jt
RGF0YUVsZW1lbnQoZS5tX2Jsb2JVUkwpKTsKKyAgICAgICAgICAgIGZvcm1EYXRhLT5tX2VsZW1l
bnRzLmFwcGVuZChGb3JtRGF0YUVsZW1lbnQoZS5tX3VybCkpOworICAgICAgICAgICAgYnJlYWs7
CisjZW5kaWYKKyNpZiBFTkFCTEUoRklMRV9TWVNURU0pCisgICAgICAgIGNhc2UgRm9ybURhdGFF
bGVtZW50OjplbmNvZGVkVVJMOgorICAgICAgICAgICAgZm9ybURhdGEtPm1fZWxlbWVudHMuYXBw
ZW5kKEZvcm1EYXRhRWxlbWVudChlLm1fdXJsLCBlLm1fZmlsZVN0YXJ0LCBlLm1fZmlsZUxlbmd0
aCwgZS5tX2V4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUpKTsKICAgICAgICAgICAgIGJyZWFr
OwogI2VuZGlmCiAgICAgICAgIH0KQEAgLTE4MSw2ICsxODYsMTcgQEAgdm9pZCBGb3JtRGF0YTo6
YXBwZW5kQmxvYihjb25zdCBLVVJMJiBibG9iVVJMKQogICAgIG1fZWxlbWVudHMuYXBwZW5kKEZv
cm1EYXRhRWxlbWVudChibG9iVVJMKSk7CiB9CiAjZW5kaWYKKyNpZiBFTkFCTEUoRklMRV9TWVNU
RU0pCit2b2lkIEZvcm1EYXRhOjphcHBlbmRVUkwoY29uc3QgS1VSTCYgdXJsKQoreworICAgIG1f
ZWxlbWVudHMuYXBwZW5kKEZvcm1EYXRhRWxlbWVudCh1cmwsIDAsIEJsb2JEYXRhSXRlbTo6dG9F
bmRPZkZpbGUsIGludmFsaWRGaWxlVGltZSgpKSk7Cit9CisKK3ZvaWQgRm9ybURhdGE6OmFwcGVu
ZFVSTFJhbmdlKGNvbnN0IEtVUkwmIHVybCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgbGVu
Z3RoLCBkb3VibGUgZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKQoreworICAgIG1fZWxlbWVudHMu
YXBwZW5kKEZvcm1EYXRhRWxlbWVudCh1cmwsIHN0YXJ0LCBsZW5ndGgsIGV4cGVjdGVkTW9kaWZp
Y2F0aW9uVGltZSkpOworfQorI2VuZGlmCiAKIHZvaWQgRm9ybURhdGE6OmFwcGVuZEtleVZhbHVl
UGFpckl0ZW1zKGNvbnN0IEZvcm1EYXRhTGlzdCYgbGlzdCwgY29uc3QgVGV4dEVuY29kaW5nJiBl
bmNvZGluZywgYm9vbCBpc011bHRpUGFydEZvcm0sIERvY3VtZW50KiBkb2N1bWVudCwgRW5jb2Rp
bmdUeXBlIGVuY29kaW5nVHlwZSkKIHsKQEAgLTI1Miw2ICsyNjgsMTAgQEAgdm9pZCBGb3JtRGF0
YTo6YXBwZW5kS2V5VmFsdWVQYWlySXRlbXMoY29uc3QgRm9ybURhdGFMaXN0JiBsaXN0LCBjb25z
dCBUZXh0RW5jb2QKICAgICAgICAgICAgICAgICAgICAgLy8gRG8gbm90IGFkZCB0aGUgZmlsZSBp
ZiB0aGUgcGF0aCBpcyBlbXB0eS4KICAgICAgICAgICAgICAgICAgICAgaWYgKCFmaWxlLT5wYXRo
KCkuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kRmlsZShmaWxlLT5w
YXRoKCksIHNob3VsZEdlbmVyYXRlRmlsZSk7CisjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQorICAg
ICAgICAgICAgICAgICAgICBpZiAoIWZpbGUtPmZpbGVTeXN0ZW1VUkwoKS5pc0VtcHR5KCkpCisg
ICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRVUkwoZmlsZS0+ZmlsZVN5c3RlbVVSTCgpKTsK
KyNlbmRpZgogICAgICAgICAgICAgICAgIH0KICNpZiBFTkFCTEUoQkxPQikKICAgICAgICAgICAg
ICAgICBlbHNlCkBAIC0zNjEsNyArMzgxLDE2IEBAIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBGb3JtRGF0YUVsZW1lbnQmIGVsZW1lbnQpCiAKICNpZiBFTkFCTEUo
QkxPQikKICAgICBjYXNlIEZvcm1EYXRhRWxlbWVudDo6ZW5jb2RlZEJsb2I6Ci0gICAgICAgIGVu
Y29kZXIuZW5jb2RlU3RyaW5nKGVsZW1lbnQubV9ibG9iVVJMLnN0cmluZygpKTsKKyAgICAgICAg
ZW5jb2Rlci5lbmNvZGVTdHJpbmcoZWxlbWVudC5tX3VybC5zdHJpbmcoKSk7CisgICAgICAgIHJl
dHVybjsKKyNlbmRpZgorCisjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQorICAgIGNhc2UgRm9ybURh
dGFFbGVtZW50OjplbmNvZGVkVVJMOgorICAgICAgICBlbmNvZGVyLmVuY29kZVN0cmluZyhlbGVt
ZW50Lm1fdXJsLnN0cmluZygpKTsKKyAgICAgICAgZW5jb2Rlci5lbmNvZGVJbnQ2NChlbGVtZW50
Lm1fZmlsZVN0YXJ0KTsKKyAgICAgICAgZW5jb2Rlci5lbmNvZGVJbnQ2NChlbGVtZW50Lm1fZmls
ZUxlbmd0aCk7CisgICAgICAgIGVuY29kZXIuZW5jb2RlRG91YmxlKGVsZW1lbnQubV9leHBlY3Rl
ZEZpbGVNb2RpZmljYXRpb25UaW1lKTsKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCiAgICAgfQpA
QCAtMzg3LDExICs0MTYsMTYgQEAgc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImIGRlY29kZXIs
IEZvcm1EYXRhRWxlbWVudCYgZWxlbWVudCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
Ci0gICAgY2FzZSBGb3JtRGF0YUVsZW1lbnQ6OmVuY29kZWRGaWxlOiB7Ci0gICAgICAgIGVsZW1l
bnQubV90eXBlID0gRm9ybURhdGFFbGVtZW50OjplbmNvZGVkRmlsZTsKLSAgICAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZVN0cmluZyhlbGVtZW50Lm1fZmlsZW5hbWUpKQorICAgIGNhc2UgRm9ybURh
dGFFbGVtZW50OjplbmNvZGVkRmlsZToKKyNpZiBFTkFCTEUoRklMRV9TWVNURU0pCisgICAgY2Fz
ZSBGb3JtRGF0YUVsZW1lbnQ6OmVuY29kZWRVUkw6CisjZW5kaWYKKyAgICB7CisgICAgICAgIGVs
ZW1lbnQubV90eXBlID0gc3RhdGljX2Nhc3Q8Rm9ybURhdGFFbGVtZW50OjpUeXBlPih0eXBlKTsK
KyAgICAgICAgU3RyaW5nIGZpbGVuYW1lT3JVUkw7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNv
ZGVTdHJpbmcoZmlsZW5hbWVPclVSTCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGVCb29sKGVsZW1lbnQubV9zaG91bGRHZW5lcmF0ZUZpbGUp
KQorICAgICAgICBpZiAodHlwZSA9PSBGb3JtRGF0YUVsZW1lbnQ6OmVuY29kZWRGaWxlICYmICFk
ZWNvZGVyLmRlY29kZUJvb2woZWxlbWVudC5tX3Nob3VsZEdlbmVyYXRlRmlsZSkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGludDY0X3QgZmlsZVN0YXJ0OwogICAgICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlSW50NjQoZmlsZVN0YXJ0KSkKQEAgLTQwNiw2ICs0NDAsMTQgQEAg
c3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImIGRlY29kZXIsIEZvcm1EYXRhRWxlbWVudCYgZWxl
bWVudCkKICAgICAgICAgZG91YmxlIGV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWU7CiAgICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGVEb3VibGUoZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGlt
ZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyNpZiBFTkFCTEUoRklMRV9TWVNURU0p
CisgICAgICAgIGlmICh0eXBlID09IEZvcm1EYXRhRWxlbWVudDo6ZW5jb2RlZFVSTCkKKyAgICAg
ICAgICAgIGVsZW1lbnQubV91cmwgPSBLVVJMKEtVUkwoKSwgZmlsZW5hbWVPclVSTCk7CisgICAg
ICAgIGVsc2UKKyNlbmRpZgorICAgICAgICBlbGVtZW50Lm1fZmlsZW5hbWUgPSBmaWxlbmFtZU9y
VVJMOworCiAjaWYgRU5BQkxFKEJMT0IpCiAgICAgICAgIGVsZW1lbnQubV9maWxlU3RhcnQgPSBm
aWxlU3RhcnQ7CiAgICAgICAgIGVsZW1lbnQubV9maWxlTGVuZ3RoID0gZmlsZUxlbmd0aDsKQEAg
LTQyMCw5ICs0NjIsMTAgQEAgc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImIGRlY29kZXIsIEZv
cm1EYXRhRWxlbWVudCYgZWxlbWVudCkKICAgICAgICAgU3RyaW5nIGJsb2JVUkxTdHJpbmc7CiAg
ICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGVTdHJpbmcoYmxvYlVSTFN0cmluZykpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGVsZW1lbnQubV9ibG9iVVJMID0gS1VSTChLVVJM
KCksIGJsb2JVUkxTdHJpbmcpOworICAgICAgICBlbGVtZW50Lm1fdXJsID0gS1VSTChLVVJMKCks
IGJsb2JVUkxTdHJpbmcpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgorCiAgICAgfQog
CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9Gb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3Jt
RGF0YS5oCmluZGV4IDE0OTgxMzY2YjNlZDU1NzRhNjliMGIwMzlhZGQ0MDkyZjJlODlkY2YuLjc5
NmExYmNlZmMyZTNiOTlkMmQzOWVhOTA3NjYwY2Q2NDRkZjJmYmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKQEAgLTM5LDI1ICszOSwzMSBAQCBwdWJsaWM6
CiAKICNpZiBFTkFCTEUoQkxPQikKICAgICBGb3JtRGF0YUVsZW1lbnQoY29uc3QgU3RyaW5nJiBm
aWxlbmFtZSwgbG9uZyBsb25nIGZpbGVTdGFydCwgbG9uZyBsb25nIGZpbGVMZW5ndGgsIGRvdWJs
ZSBleHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lLCBib29sIHNob3VsZEdlbmVyYXRlRmlsZSkg
OiBtX3R5cGUoZW5jb2RlZEZpbGUpLCBtX2ZpbGVuYW1lKGZpbGVuYW1lKSwgbV9maWxlU3RhcnQo
ZmlsZVN0YXJ0KSwgbV9maWxlTGVuZ3RoKGZpbGVMZW5ndGgpLCBtX2V4cGVjdGVkRmlsZU1vZGlm
aWNhdGlvblRpbWUoZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSksIG1fc2hvdWxkR2VuZXJh
dGVGaWxlKHNob3VsZEdlbmVyYXRlRmlsZSkgeyB9Ci0gICAgZXhwbGljaXQgRm9ybURhdGFFbGVt
ZW50KGNvbnN0IEtVUkwmIGJsb2JVUkwpIDogbV90eXBlKGVuY29kZWRCbG9iKSwgbV9ibG9iVVJM
KGJsb2JVUkwpIHsgfQorICAgIGV4cGxpY2l0IEZvcm1EYXRhRWxlbWVudChjb25zdCBLVVJMJiBi
bG9iVVJMKSA6IG1fdHlwZShlbmNvZGVkQmxvYiksIG1fdXJsKGJsb2JVUkwpIHsgfQogI2Vsc2UK
ICAgICBGb3JtRGF0YUVsZW1lbnQoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgYm9vbCBzaG91bGRH
ZW5lcmF0ZUZpbGUpIDogbV90eXBlKGVuY29kZWRGaWxlKSwgbV9maWxlbmFtZShmaWxlbmFtZSks
IG1fc2hvdWxkR2VuZXJhdGVGaWxlKHNob3VsZEdlbmVyYXRlRmlsZSkgeyB9CiAjZW5kaWYKKyNp
ZiBFTkFCTEUoRklMRV9TWVNURU0pCisgICAgRm9ybURhdGFFbGVtZW50KGNvbnN0IEtVUkwmIHVy
bCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgbGVuZ3RoLCBkb3VibGUgZXhwZWN0ZWRGaWxl
TW9kaWZpY2F0aW9uVGltZSkgOiBtX3R5cGUoZW5jb2RlZFVSTCksIG1fdXJsKHVybCksIG1fZmls
ZVN0YXJ0KHN0YXJ0KSwgbV9maWxlTGVuZ3RoKGxlbmd0aCksIG1fZXhwZWN0ZWRGaWxlTW9kaWZp
Y2F0aW9uVGltZShleHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lKSwgbV9zaG91bGRHZW5lcmF0
ZUZpbGUoZmFsc2UpIHsgfQorI2VuZGlmCiAKLSAgICBlbnVtIHsKKyAgICBlbnVtIFR5cGUgewog
ICAgICAgICBkYXRhLAogICAgICAgICBlbmNvZGVkRmlsZQogI2lmIEVOQUJMRShCTE9CKQogICAg
ICAgICAsIGVuY29kZWRCbG9iCiAjZW5kaWYKKyNpZiBFTkFCTEUoRklMRV9TWVNURU0pCisgICAg
ICAgICwgZW5jb2RlZFVSTAorI2VuZGlmCiAgICAgfSBtX3R5cGU7CiAgICAgVmVjdG9yPGNoYXI+
IG1fZGF0YTsKICAgICBTdHJpbmcgbV9maWxlbmFtZTsKICNpZiBFTkFCTEUoQkxPQikKKyAgICBL
VVJMIG1fdXJsOyAvLyBGb3IgQmxvYiBvciBVUkwuCiAgICAgbG9uZyBsb25nIG1fZmlsZVN0YXJ0
OwogICAgIGxvbmcgbG9uZyBtX2ZpbGVMZW5ndGg7CiAgICAgZG91YmxlIG1fZXhwZWN0ZWRGaWxl
TW9kaWZpY2F0aW9uVGltZTsKLSAgICBLVVJMIG1fYmxvYlVSTDsKICNlbmRpZgogICAgIFN0cmlu
ZyBtX2dlbmVyYXRlZEZpbGVuYW1lOwogICAgIGJvb2wgbV9zaG91bGRHZW5lcmF0ZUZpbGU7CkBA
IC03NSw4ICs4MSw4IEBAIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgRm9ybURhdGFFbGVt
ZW50JiBhLCBjb25zdCBGb3JtRGF0YUVsZW1lbnQmIGIpCiAgICAgaWYgKGEubV90eXBlID09IEZv
cm1EYXRhRWxlbWVudDo6ZW5jb2RlZEZpbGUpCiAjaWYgRU5BQkxFKEJMT0IpCiAgICAgICAgIHJl
dHVybiBhLm1fZmlsZW5hbWUgPT0gYi5tX2ZpbGVuYW1lICYmIGEubV9maWxlU3RhcnQgPT0gYi5t
X2ZpbGVTdGFydCAmJiBhLm1fZmlsZUxlbmd0aCA9PSBiLm1fZmlsZUxlbmd0aCAmJiBhLm1fZXhw
ZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSA9PSBiLm1fZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9u
VGltZTsKLSAgICBpZiAoYS5tX3R5cGUgPT0gRm9ybURhdGFFbGVtZW50OjplbmNvZGVkQmxvYikK
LSAgICAgICAgcmV0dXJuIGEubV9ibG9iVVJMID09IGIubV9ibG9iVVJMOworICAgIGlmIChhLm1f
dHlwZSA9PSBGb3JtRGF0YUVsZW1lbnQ6OmVuY29kZWRCbG9iIHx8IGEubV90eXBlID09IEZvcm1E
YXRhRWxlbWVudDo6ZW5jb2RlZFVSTCkKKyAgICAgICAgcmV0dXJuIGEubV91cmwgPT0gYi5tX3Vy
bDsKICNlbHNlCiAgICAgICAgIHJldHVybiBhLm1fZmlsZW5hbWUgPT0gYi5tX2ZpbGVuYW1lOwog
I2VuZGlmCkBAIC0xMTUsNiArMTIxLDggQEAgcHVibGljOgogI2lmIEVOQUJMRShCTE9CKQogICAg
IHZvaWQgYXBwZW5kRmlsZVJhbmdlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGxvbmcgbG9uZyBz
dGFydCwgbG9uZyBsb25nIGxlbmd0aCwgZG91YmxlIGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSwg
Ym9vbCBzaG91bGRHZW5lcmF0ZUZpbGUgPSBmYWxzZSk7CiAgICAgdm9pZCBhcHBlbmRCbG9iKGNv
bnN0IEtVUkwmIGJsb2JVUkwpOworICAgIHZvaWQgYXBwZW5kVVJMKGNvbnN0IEtVUkwmKTsKKyAg
ICB2b2lkIGFwcGVuZFVSTFJhbmdlKGNvbnN0IEtVUkwmLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcg
bG9uZyBsZW5ndGgsIGRvdWJsZSBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpOwogI2VuZGlmCiAK
ICAgICB2b2lkIGZsYXR0ZW4oVmVjdG9yPGNoYXI+JikgY29uc3Q7IC8vIG9taXRzIGZpbGVzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJCbG9iRGF0YS5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJCbG9iRGF0YS5jcHAKaW5kZXggYzc2N2QxYmRk
MzUxNzhmODZmYzU4YTZjZTA4MGExMmEyNzAyZDNmYi4uNWY1NjQ5YjdjN2YwZGMyMDI5NDlkODFj
MzllMjY5M2Q4NWEyNDdlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViQmxvYkRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkJsb2JE
YXRhLmNwcApAQCAtODMsNyArODMsMTEgQEAgYm9vbCBXZWJCbG9iRGF0YTo6aXRlbUF0KHNpemVf
dCBpbmRleCwgSXRlbSYgcmVzdWx0KSBjb25zdAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBj
YXNlIEJsb2JEYXRhSXRlbTo6QmxvYjoKICAgICAgICAgcmVzdWx0LnR5cGUgPSBJdGVtOjpUeXBl
QmxvYjsKLSAgICAgICAgcmVzdWx0LmJsb2JVUkwgPSBpdGVtLnVybDsKKyAgICAgICAgcmVzdWx0
LmJsb2JVUkwgPSBpdGVtLnVybDsgLy8gRklYTUU6IGRlcHJlY2F0ZSB0aGlzLgorICAgICAgICBy
ZXN1bHQudXJsID0gaXRlbS51cmw7CisgICAgY2FzZSBCbG9iRGF0YUl0ZW06OlVSTDoKKyAgICAg
ICAgcmVzdWx0LnR5cGUgPSBJdGVtOjpUeXBlVVJMOworICAgICAgICByZXN1bHQudXJsID0gaXRl
bS51cmw7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157722</attachid>
            <date>2012-08-10 06:03:32 -0700</date>
            <delta_ts>2012-08-10 06:31:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93706-20120810220304.patch</filename>
            <type>text/plain</type>
            <size>34484</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1MDc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA1NzFlMjk3MWRmYTYw
NjlkZGEzYTJkMmExMDE3ZDhiNGEzYjY2Yzg5Li5hZDIwNmRiMmNjYTFmZTE3Zjg3Yjk0ODY1Y2E1
MWRmMzRhMzEwZTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wOC0xMCAg
S2ludWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3VwcG9ydCBj
cmVhdGluZyBGaWxlIG9iamVjdCBmcm9tIEZpbGVTeXN0ZW0gVVJMIGZvciBmaWxlcyBpbiBGaWxl
U3lzdGVtIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTM3MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGNocm9taXVtL3B1YmxpYy9XZWJCbG9iRGF0YS5oOgorICAgICAgICAqIGNocm9taXVtL3B1
YmxpYy9XZWJIVFRQQm9keS5oOgorICAgICAgICAoV2ViSFRUUEJvZHkpOgorCiAyMDEyLTA4LTA4
ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVt
XSBVcHN0cmVhbSBhbmRyb2lkJ3MgRmxpbmdBbmltYXRvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGRmNzYyZDAz
ODAzZWFhNWE3ZWM4MTg0YTNkNDc3NDU5NTc5Y2Q3YzMuLjJkN2YxOTE0YTE5YWUwN2E4MTQ1N2Mx
YTI2ZjQwNDI0ZDE0OTZlMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1OCBAQAorMjAxMi0wOC0x
MCAgS2ludWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3VwcG9y
dCBjcmVhdGluZyBGaWxlIG9iamVjdCBmcm9tIEZpbGVTeXN0ZW0gVVJMIGZvciBmaWxlcyBpbiBG
aWxlU3lzdGVtIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTM3MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBDdXJyZW50IEZpbGUgY29kZSBhc3N1bWVzIHRoZSBleGlzdGVuY2Ugb2YgbG9jYWwgZmls
ZSAoaS5lLiByZXF1aXJlcyBhIHBsYXRmb3JtIGxvY2FsIGZpbGUgcGF0aCkgYnV0IGZvciBGaWxl
U3lzdGVtCisgICAgICAgIGZpbGVzIGl0IG1heSBub3QgYmUgYWx3YXlzIHRoZSBjYXNlLiBGb3Ig
ZXhhbXBsZSBzb21lIGltcGxlbWVudGF0aW9uIG1heSB3YW50IHRvIHVzZSBpbi1tZW1vcnkgZmls
ZXN5c3RlbSB0byByZWFsaXplCisgICAgICAgIHNhbmRib3hlZCBmaWxlc3lzdGVtLCBvciBvdGhl
cnMgbWF5IGhhdmUgdGhlIGZpbGVzeXN0ZW0gaW4gcmVtb3RlIHNlcnZlcnMuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBhZGRzIGJhc2ljIHN1cHBvcnQgZm9yIG1ha2luZyBGaWxlIG9iamVjdCBjb25z
dHJ1Y3RpYmxlIG5vdCBvbmx5IGZyb20gYSBmaWxlIHBhdGggYnV0IGZyb20gYSBGaWxlU3lzdGVt
IFVSTC4KKyAgICAgICAgU2luY2UgRmlsZSBjYW4gYmUgYXBwZW5kZWQgdG8gRm9ybURhdGEgb3Ig
aW5jbHVkZWQgaW4gYW5vdGhlciBCbG9iIHRoaXMgcGF0Y2ggYWxzbyBleHRlbmRzIEJsb2JEYXRh
IGFuZCBGb3JtRGF0YSB0byBzdXBwb3J0IFVSTC4KKworICAgICAgICBGaWxlQ2hvb3NlciBhbmQg
RHJhZy1hbmQtZHJvcCBjaGFuZ2VzIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhpcyBwYXRjaC4KKwor
ICAgICAgICBObyBuZXcgdGVzdHM6IHdpbGwgYWRkIHRlc3RzIHdoZW4gd2UgaW1wbGVtZW50IHRo
ZSBwbGF0Zm9ybSBzaWRlIGNoYW5nZXMgdG8gd2lyZSB0aGlzIGNoYW5nZS4KKworICAgICAgICAq
IE1vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRPTUZpbGVTeXN0ZW06OmNyZWF0ZUZpbGUpOgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3Rl
bS9ET01GaWxlU3lzdGVtU3luYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lzdGVt
U3luYzo6Y3JlYXRlRmlsZSk6CisgICAgICAgICogZmlsZWFwaS9CbG9iLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkJsb2I6OnNsaWNlSW50ZXJuYWwpOgorICAgICAgICAqIGZpbGVhcGkvRmlsZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVCbG9iRGF0YUZvckZpbGVTeXN0ZW1VUkwpOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZpbGU6OkZpbGUpOgorICAgICAgICAqIGZpbGVhcGkv
RmlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsZTo6Y3JlYXRlRm9yRmlsZVN5c3RlbUZpbGUp
OgorICAgICAgICAoV2ViQ29yZTo6RmlsZTo6ZmlsZVN5c3RlbVVSTCk6IEFkZGVkLgorICAgICAg
ICAqIGZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
S2l0QmxvYkJ1aWxkZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vc3Vw
cG9ydC9XZWJIVFRQQm9keS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkhUVFBCb2R5OjplbGVt
ZW50QXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJIVFRQQm9keTo6YXBwZW5kVVJMKTogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OldlYkhUVFBCb2R5OjphcHBlbmRVUkxSYW5nZSk6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJIVFRQQm9keTo6YXBwZW5kQmxvYik6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9CbG9iRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCbG9iRGF0YTo6
YXBwZW5kVVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhLmg6CisgICAg
ICAgIChCbG9iRGF0YUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6QmxvYkRhdGFJdGVtOjpCbG9i
RGF0YUl0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsOjphcHBlbmRTdG9yYWdlSXRl
bXMpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5SW1wbDo6cmVnaXN0ZXJCbG9iVVJM
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZvcm1EYXRhOjpkZWVwQ29weSk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6
YXBwZW5kVVJMKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6YXBwZW5kVVJM
UmFuZ2UpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhOjphcHBlbmRLZXlWYWx1
ZVBhaXJJdGVtcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9ybURhdGFFbGVtZW50OjpGb3JtRGF0YUVsZW1lbnQpOgorICAgICAg
ICAoRm9ybURhdGFFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPT0pOgorCiAy
MDEyLTA4LTA4ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFJFR1JFU1NJT04ocjEyNTA0Nik6IEJyZWFrcyBkZWJ1ZyBidWlsZCAoYXNzZXJ0aW9uIGlu
IHByb3RvY29sIHR5cGUgY2hlY2tzKSAoUmVxdWVzdGVkIGJ5IHBmZWxkbWFuIG9uICN3ZWJraXQp
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBhYWQ5NjZiMDI5NmUyZTM5Zjg3N2IwYjJm
NGJlMmYzYjNjNDUwZDI0Li4zNzM3Mjc3YWUzNTIxMjViYWUyYWRmMTg4MzdmMDViYTg5MTNjMTUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEyLTA4LTEw
ICBLaW51a28gWWFzdWRhICA8a2ludWtvQGNocm9taXVtLm9yZz4KKworICAgICAgICBTdXBwb3J0
IGNyZWF0aW5nIEZpbGUgb2JqZWN0IGZyb20gRmlsZVN5c3RlbSBVUkwgZm9yIGZpbGVzIGluIEZp
bGVTeXN0ZW0gQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05MzcwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogc3JjL1dlYkJsb2JEYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQmxvYkRhdGE6
Oml0ZW1BdCk6CisKIDIwMTItMDgtMDggIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBFbmFibGUgb2NjbHVzaW9uIHRyYWNrZXIgaW4gdGhl
IG9jY2x1c2lvbiB0ZXN0cyBmb3Igc3VyZmFjZSBjYWNoZWluZwpkaWZmIC0tZ2l0IGEvU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJCbG9iRGF0YS5oIGIvU291cmNlL1BsYXRmb3Jt
L2Nocm9taXVtL3B1YmxpYy9XZWJCbG9iRGF0YS5oCmluZGV4IDdmYTMyZDNiNjJjZGZjNDgxZDI0
ZDhkYWFjMzBkYjhhOTE0YjEzNDAuLmQyOTg4M2JjZjg5NTBhMjNlODVjY2Y4ZmIxNWFjNTE3MDM1
M2UwZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQmxv
YkRhdGEuaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkJsb2JEYXRh
LmgKQEAgLTQ3LDEzICs0NywxNiBAQCBjbGFzcyBXZWJCbG9iRGF0YVByaXZhdGU7CiBjbGFzcyBX
ZWJCbG9iRGF0YSB7CiBwdWJsaWM6CiAgICAgc3RydWN0IEl0ZW0gewotICAgICAgICBlbnVtIHsg
VHlwZURhdGEsIFR5cGVGaWxlLCBUeXBlQmxvYiB9IHR5cGU7CisgICAgICAgIGVudW0geyBUeXBl
RGF0YSwgVHlwZUZpbGUsIFR5cGVCbG9iLCBUeXBlVVJMIH0gdHlwZTsKICAgICAgICAgV2ViVGhy
ZWFkU2FmZURhdGEgZGF0YTsKICAgICAgICAgV2ViU3RyaW5nIGZpbGVQYXRoOwotICAgICAgICBX
ZWJVUkwgYmxvYlVSTDsKKyAgICAgICAgV2ViVVJMIHVybDsgLy8gRm9yIEJsb2Igb3IgVVJMLgog
ICAgICAgICBsb25nIGxvbmcgb2Zmc2V0OwogICAgICAgICBsb25nIGxvbmcgbGVuZ3RoOyAvLyAt
MSBtZWFucyBnbyB0byB0aGUgZW5kIG9mIHRoZSBmaWxlL2Jsb2IuCiAgICAgICAgIGRvdWJsZSBl
eHBlY3RlZE1vZGlmaWNhdGlvblRpbWU7IC8vIDAuMCBtZWFucyB0aGF0IHRoZSB0aW1lIGlzIG5v
dCBzZXQuCisKKyAgICAgICAgLy8gRklYTUU6IGRlcHJlY2F0ZSB0aGlzLgorICAgICAgICBXZWJV
UkwgYmxvYlVSTDsKICAgICB9OwogCiAgICAgfldlYkJsb2JEYXRhKCkgeyByZXNldCgpOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkhUVFBCb2R5Lmgg
Yi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkhUVFBCb2R5LmgKaW5kZXggNWM2
Mzg2MDJhZTM4Nzk5NjY5YmIyYTU3N2E0YzdlMWM3NzUxNDJiMi4uOGRhNGY1NmQ3NDc5YjNmZDhj
OWY5MDViMDNhMjVlNjIzY2ZkNWM1NiAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9t
aXVtL3B1YmxpYy9XZWJIVFRQQm9keS5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViSFRUUEJvZHkuaApAQCAtNDgsMTIgKzQ4LDE1IEBAIGNsYXNzIFdlYkhUVFBCb2R5
UHJpdmF0ZTsKIGNsYXNzIFdlYkhUVFBCb2R5IHsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgRWxlbWVu
dCB7Ci0gICAgICAgIGVudW0gVHlwZSB7IFR5cGVEYXRhLCBUeXBlRmlsZSwgVHlwZUJsb2IgfSB0
eXBlOworICAgICAgICBlbnVtIFR5cGUgeyBUeXBlRGF0YSwgVHlwZUZpbGUsIFR5cGVCbG9iLCBU
eXBlVVJMIH0gdHlwZTsKICAgICAgICAgV2ViRGF0YSBkYXRhOwogICAgICAgICBXZWJTdHJpbmcg
ZmlsZVBhdGg7CiAgICAgICAgIGxvbmcgbG9uZyBmaWxlU3RhcnQ7CiAgICAgICAgIGxvbmcgbG9u
ZyBmaWxlTGVuZ3RoOyAvLyAtMSBtZWFucyB0byB0aGUgZW5kIG9mIHRoZSBmaWxlLgogICAgICAg
ICBkb3VibGUgbW9kaWZpY2F0aW9uVGltZTsKKyAgICAgICAgV2ViVVJMIHVybDsgLy8gRm9yIEJs
b2Igb3IgVVJMIHR5cGUuCisKKyAgICAgICAgLy8gRklYTUU6IGRlcHJlY2F0ZSB0aGlzLgogICAg
ICAgICBXZWJVUkwgYmxvYlVSTDsKICAgICB9OwogCkBAIC04Nyw2ICs5MCw5IEBAIHB1YmxpYzoK
ICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXBwZW5kRmlsZVJhbmdlKGNvbnN0IFdlYlN0cmluZyYs
IGxvbmcgbG9uZyBmaWxlU3RhcnQsIGxvbmcgbG9uZyBmaWxlTGVuZ3RoLCBkb3VibGUgbW9kaWZp
Y2F0aW9uVGltZSk7CiAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFwcGVuZEJsb2IoY29uc3QgV2Vi
VVJMJik7CiAKKyAgICAvLyBBcHBlbmQgYSByZXNvdXJjZSB3aGljaCBpcyBpZGVudGlmaWVkIGJ5
IFVSTC4gQ3VycmVudGx5IHdlIG9ubHkgc3VwcG9ydCBGaWxlU3lzdGVtIFVSTC4KKyAgICBXRUJL
SVRfRVhQT1JUIHZvaWQgYXBwZW5kVVJMUmFuZ2UoY29uc3QgV2ViVVJMJiwgbG9uZyBsb25nIHN0
YXJ0LCBsb25nIGxvbmcgbGVuZ3RoLCBkb3VibGUgbW9kaWZpY2F0aW9uVGltZSk7CisKICAgICAv
LyBJZGVudGlmaWVzIGEgcGFydGljdWxhciBmb3JtIHN1Ym1pc3Npb24gaW5zdGFuY2UuIEEgdmFs
dWUgb2YgMCBpcwogICAgIC8vIHVzZWQgdG8gaW5kaWNhdGUgYW4gdW5zcGVjaWZpZWQgaWRlbnRp
Zmllci4KICAgICBXRUJLSVRfRVhQT1JUIGxvbmcgbG9uZyBpZGVudGlmaWVyKCkgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3Rl
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbS5j
cHAKaW5kZXggNTBiNTE4NTlkZDAyMzY5MjNkNDQ3NGFlNzdhMzIwNTExODdmNmNlOS4uNGU4ZWQ0
YjQxOTI0NmMwMjUxOTBiZWE5ZWFlZTc3MWEwZDExODU5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtLmNwcApAQCAtMTUwLDkgKzE1
MCw5IEBAIG5hbWVzcGFjZSB7CiAKIGNsYXNzIEdldE1ldGFkYXRhQ2FsbGJhY2sgOiBwdWJsaWMg
RmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2UgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRy
PEdldE1ldGFkYXRhQ2FsbGJhY2s+IGNyZWF0ZShQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IGZp
bGVzeXN0ZW0sIGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxGaWxlQ2FsbGJhY2s+IHN1
Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPEdldE1ldGFkYXRhQ2FsbGJhY2s+IGNyZWF0ZShQYXNzUmVm
UHRyPERPTUZpbGVTeXN0ZW0+IGZpbGVzeXN0ZW0sIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
S1VSTCYgdXJsLCBQYXNzUmVmUHRyPEZpbGVDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNz
UmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRQdHIobmV3IEdldE1ldGFkYXRhQ2FsbGJhY2soZmlsZXN5c3RlbSwgbmFtZSwgc3Vj
Y2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSk7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgR2V0TWV0YWRhdGFDYWxsYmFjayhmaWxlc3lzdGVtLCBuYW1lLCB1cmwsIHN1Y2Nlc3NDYWxs
YmFjaywgZXJyb3JDYWxsYmFjaykpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFk
TWV0YWRhdGEoY29uc3QgRmlsZU1ldGFkYXRhJiBtZXRhZGF0YSkKQEAgLTE2MywyNSArMTYzLDM0
IEBAIHB1YmxpYzoKIAogICAgICAgICAvLyBGb3IgcmVndWxhciBmaWxlc3lzdGVtIHR5cGVzICh0
ZW1wb3Jhcnkgb3IgcGVyc2lzdGVudCksIHdlIHNob3VsZCBub3QgY2FjaGUgZmlsZSBtZXRhZGF0
YSBhcyBpdCBjb3VsZCBjaGFuZ2UgRmlsZSBzZW1hbnRpY3MuCiAgICAgICAgIC8vIEZvciBvdGhl
ciBmaWxlc3lzdGVtIHR5cGVzICh3aGljaCBjb3VsZCBiZSBwbGF0Zm9ybS1zcGVjaWZpYyBvbmVz
KSwgdGhlcmUncyBhIGNoYW5jZSB0aGF0IHRoZSBmaWxlcyBhcmUgb24gcmVtb3RlIGZpbGVzeXN0
ZW0uIElmIHRoZSBwb3J0IGhhcyByZXR1cm5lZCBtZXRhZGF0YSBqdXN0IHBhc3MgaXQgdG8gRmls
ZSBjb25zdHJ1Y3RvciAoc28gd2UgbWF5IGNhY2hlIHRoZSBtZXRhZGF0YSkuCi0gICAgICAgIGlm
IChtX2ZpbGVzeXN0ZW0tPnR5cGUoKSA9PSBGaWxlU3lzdGVtVHlwZVRlbXBvcmFyeSB8fCBtX2Zp
bGVzeXN0ZW0tPnR5cGUoKSA9PSBGaWxlU3lzdGVtVHlwZVBlcnNpc3RlbnQpCisgICAgICAgIC8v
IEZJWE1FOiBXZSBzaG91bGQgdXNlIHRoZSBzbmFwc2hvdCBtZXRhZGF0YSBmb3IgYWxsIGZpbGVz
LgorICAgICAgICAvLyBodHRwczovL3d3dy53My5vcmcvQnVncy9QdWJsaWMvc2hvd19idWcuY2dp
P2lkPTE3NzQ2CisgICAgICAgIGlmIChtX2ZpbGVzeXN0ZW0tPnR5cGUoKSA9PSBGaWxlU3lzdGVt
VHlwZVRlbXBvcmFyeSB8fCBtX2ZpbGVzeXN0ZW0tPnR5cGUoKSA9PSBGaWxlU3lzdGVtVHlwZVBl
cnNpc3RlbnQpIHsKICAgICAgICAgICAgIG1fc3VjY2Vzc0NhbGxiYWNrLT5oYW5kbGVFdmVudChG
aWxlOjpjcmVhdGVXaXRoTmFtZShtZXRhZGF0YS5wbGF0Zm9ybVBhdGgsIG1fbmFtZSkuZ2V0KCkp
OwotICAgICAgICBlbHNlCisgICAgICAgIH0gZWxzZSBpZiAoIW1ldGFkYXRhLnBsYXRmb3JtUGF0
aC5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIC8vIElmIHRoZSBwbGF0Zm9ybVBhdGggaW4gdGhl
IHJldHVybmVkIG1ldGFkYXRhIGlzIGdpdmVuLCB3ZSBjcmVhdGUgYSBGaWxlIG9iamVjdCBmb3Ig
dGhlIHBhdGguCiAgICAgICAgICAgICBtX3N1Y2Nlc3NDYWxsYmFjay0+aGFuZGxlRXZlbnQoRmls
ZTo6Y3JlYXRlRm9yRmlsZVN5c3RlbUZpbGUobV9uYW1lLCBtZXRhZGF0YSkuZ2V0KCkpOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gT3RoZXJ3aXNlIGNyZWF0ZSBhIEZpbGUgZnJv
bSB0aGUgRmlsZVN5c3RlbSBVUkwuCisgICAgICAgICAgICBtX3N1Y2Nlc3NDYWxsYmFjay0+aGFu
ZGxlRXZlbnQoRmlsZTo6Y3JlYXRlRm9yRmlsZVN5c3RlbUZpbGUobV91cmwsIG1ldGFkYXRhKS5n
ZXQoKSk7CisgICAgICAgIH0KIAogICAgICAgICBtX3N1Y2Nlc3NDYWxsYmFjay5yZWxlYXNlKCk7
CiAgICAgfQogCiBwcml2YXRlOgotICAgIEdldE1ldGFkYXRhQ2FsbGJhY2soUGFzc1JlZlB0cjxE
T01GaWxlU3lzdGVtPiBmaWxlc3lzdGVtLCBjb25zdCBTdHJpbmcmIG5hbWUsICBQYXNzUmVmUHRy
PEZpbGVDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+
IGVycm9yQ2FsbGJhY2spCisgICAgR2V0TWV0YWRhdGFDYWxsYmFjayhQYXNzUmVmUHRyPERPTUZp
bGVTeXN0ZW0+IGZpbGVzeXN0ZW0sIGNvbnN0IFN0cmluZyYgbmFtZSwgIGNvbnN0IEtVUkwmIHVy
bCwgUGFzc1JlZlB0cjxGaWxlQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxF
cnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQogICAgICAgICA6IEZpbGVTeXN0ZW1DYWxsYmFj
a3NCYXNlKGVycm9yQ2FsbGJhY2spCiAgICAgICAgICwgbV9maWxlc3lzdGVtKGZpbGVzeXN0ZW0p
CiAgICAgICAgICwgbV9uYW1lKG5hbWUpCisgICAgICAgICwgbV91cmwodXJsKQogICAgICAgICAs
IG1fc3VjY2Vzc0NhbGxiYWNrKHN1Y2Nlc3NDYWxsYmFjaykKICAgICB7CiAgICAgfQogCiAgICAg
UmVmUHRyPERPTUZpbGVTeXN0ZW0+IG1fZmlsZXN5c3RlbTsKICAgICBTdHJpbmcgbV9uYW1lOwor
ICAgIEtVUkwgbV91cmw7CiAgICAgUmVmUHRyPEZpbGVDYWxsYmFjaz4gbV9zdWNjZXNzQ2FsbGJh
Y2s7CiB9OwogCkBAIC0xODksNyArMTk4LDggQEAgcHJpdmF0ZToKIAogdm9pZCBET01GaWxlU3lz
dGVtOjpjcmVhdGVGaWxlKGNvbnN0IEZpbGVFbnRyeSogZmlsZUVudHJ5LCBQYXNzUmVmUHRyPEZp
bGVDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVy
cm9yQ2FsbGJhY2spCiB7Ci0gICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmNyZWF0ZVNuYXBzaG90Rmls
ZUFuZFJlYWRNZXRhZGF0YShjcmVhdGVGaWxlU3lzdGVtVVJMKGZpbGVFbnRyeSksIEdldE1ldGFk
YXRhQ2FsbGJhY2s6OmNyZWF0ZSh0aGlzLCBmaWxlRW50cnktPm5hbWUoKSwgc3VjY2Vzc0NhbGxi
YWNrLCBlcnJvckNhbGxiYWNrKSk7CisgICAgS1VSTCBmaWxlU3lzdGVtVVJMID0gY3JlYXRlRmls
ZVN5c3RlbVVSTChmaWxlRW50cnkpOworICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5jcmVhdGVTbmFw
c2hvdEZpbGVBbmRSZWFkTWV0YWRhdGEoZmlsZVN5c3RlbVVSTCwgR2V0TWV0YWRhdGFDYWxsYmFj
azo6Y3JlYXRlKHRoaXMsIGZpbGVFbnRyeS0+bmFtZSgpLCBmaWxlU3lzdGVtVVJMLCBzdWNjZXNz
Q2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0
ZW1TeW5jLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lz
dGVtU3luYy5jcHAKaW5kZXggYmMzNmNhZWRkYzdkZmE5Njc3MTEwOTJiMDNkZTU4NDYwNzA2NjI4
YS4uZGFkNDMyZjI0N2FmOWFkZTE0OWIxNmNjMTY0Zjg3Njk3YjBlNWNiZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1TeW5jLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbVN5bmMu
Y3BwCkBAIC05OCw5ICs5OCw5IEBAIHB1YmxpYzoKICAgICAgICAgZnJpZW5kIGNsYXNzIFdURjo6
UmVmQ291bnRlZDxDcmVhdGVGaWxlUmVzdWx0PjsKICAgICB9OwogCi0gICAgc3RhdGljIFBhc3NP
d25QdHI8Q3JlYXRlRmlsZUhlbHBlcj4gY3JlYXRlKFBhc3NSZWZQdHI8Q3JlYXRlRmlsZVJlc3Vs
dD4gcmVzdWx0LCBjb25zdCBTdHJpbmcmIG5hbWUsIEZpbGVTeXN0ZW1UeXBlIHR5cGUpCisgICAg
c3RhdGljIFBhc3NPd25QdHI8Q3JlYXRlRmlsZUhlbHBlcj4gY3JlYXRlKFBhc3NSZWZQdHI8Q3Jl
YXRlRmlsZVJlc3VsdD4gcmVzdWx0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IEtVUkwmIHVy
bCwgRmlsZVN5c3RlbVR5cGUgdHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgQ3JlYXRlRmlsZUhlbHBlcihyZXN1bHQsIG5hbWUsIHR5cGUpKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBDcmVhdGVGaWxlSGVscGVyKHJlc3VsdCwgbmFtZSwgdXJsLCB0eXBlKSk7
CiAgICAgfQogCiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoaW50IGNvZGUpCkBAIC0xMTcsMjEg
KzExNywzMCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICAvLyBGb3IgcmVndWxhciBmaWxlc3lz
dGVtIHR5cGVzICh0ZW1wb3Jhcnkgb3IgcGVyc2lzdGVudCksIHdlIHNob3VsZCBub3QgY2FjaGUg
ZmlsZSBtZXRhZGF0YSBhcyBpdCBjb3VsZCBjaGFuZ2UgRmlsZSBzZW1hbnRpY3MuCiAgICAgICAg
IC8vIEZvciBvdGhlciBmaWxlc3lzdGVtIHR5cGVzICh3aGljaCBjb3VsZCBiZSBwbGF0Zm9ybS1z
cGVjaWZpYyBvbmVzKSwgdGhlcmUncyBhIGNoYW5jZSB0aGF0IHRoZSBmaWxlcyBhcmUgb24gcmVt
b3RlIGZpbGVzeXN0ZW0uIElmIHRoZSBwb3J0IGhhcyByZXR1cm5lZCBtZXRhZGF0YSBqdXN0IHBh
c3MgaXQgdG8gRmlsZSBjb25zdHJ1Y3RvciAoc28gd2UgbWF5IGNhY2hlIHRoZSBtZXRhZGF0YSku
Ci0gICAgICAgIGlmIChtX3R5cGUgPT0gRmlsZVN5c3RlbVR5cGVUZW1wb3JhcnkgfHwgbV90eXBl
ID09IEZpbGVTeXN0ZW1UeXBlUGVyc2lzdGVudCkKKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3Vs
ZCB1c2UgdGhlIHNuYXBzaG90IG1ldGFkYXRhIGZvciBhbGwgZmlsZXMuCisgICAgICAgIC8vIGh0
dHBzOi8vd3d3LnczLm9yZy9CdWdzL1B1YmxpYy9zaG93X2J1Zy5jZ2k/aWQ9MTc3NDYKKyAgICAg
ICAgaWYgKG1fdHlwZSA9PSBGaWxlU3lzdGVtVHlwZVRlbXBvcmFyeSB8fCBtX3R5cGUgPT0gRmls
ZVN5c3RlbVR5cGVQZXJzaXN0ZW50KSB7CiAgICAgICAgICAgICBtX3Jlc3VsdC0+bV9maWxlID0g
RmlsZTo6Y3JlYXRlV2l0aE5hbWUobWV0YWRhdGEucGxhdGZvcm1QYXRoLCBtX25hbWUpOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jlc3VsdC0+bV9maWxlID0gRmlsZTo6Y3JlYXRlRm9y
RmlsZVN5c3RlbUZpbGUobV9uYW1lLCBtZXRhZGF0YSk7CisgICAgICAgIH0gZWxzZSBpZiAoIW1l
dGFkYXRhLnBsYXRmb3JtUGF0aC5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIC8vIElmIHRoZSBw
bGF0Zm9ybVBhdGggaW4gdGhlIHJldHVybmVkIG1ldGFkYXRhIGlzIGdpdmVuLCB3ZSBjcmVhdGUg
YSBGaWxlIG9iamVjdCBmb3IgdGhlIHBhdGguCisgICAgICAgICAgICBtX3Jlc3VsdC0+bV9maWxl
ID0gRmlsZTo6Y3JlYXRlRm9yRmlsZVN5c3RlbUZpbGUobV9uYW1lLCBtZXRhZGF0YSkuZ2V0KCk7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBPdGhlcndpc2UgY3JlYXRlIGEgRmls
ZSBmcm9tIHRoZSBGaWxlU3lzdGVtIFVSTC4KKyAgICAgICAgICAgIG1fcmVzdWx0LT5tX2ZpbGUg
PSBGaWxlOjpjcmVhdGVGb3JGaWxlU3lzdGVtRmlsZShtX3VybCwgbWV0YWRhdGEpLmdldCgpOwor
ICAgICAgICB9CiAgICAgfQogcHJpdmF0ZToKLSAgICBDcmVhdGVGaWxlSGVscGVyKFBhc3NSZWZQ
dHI8Q3JlYXRlRmlsZVJlc3VsdD4gcmVzdWx0LCBjb25zdCBTdHJpbmcmIG5hbWUsIEZpbGVTeXN0
ZW1UeXBlIHR5cGUpCisgICAgQ3JlYXRlRmlsZUhlbHBlcihQYXNzUmVmUHRyPENyZWF0ZUZpbGVS
ZXN1bHQ+IHJlc3VsdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBLVVJMJiB1cmwsIEZpbGVT
eXN0ZW1UeXBlIHR5cGUpCiAgICAgICAgIDogbV9yZXN1bHQocmVzdWx0KQogICAgICAgICAsIG1f
bmFtZShuYW1lKQorICAgICAgICAsIG1fdXJsKHVybCkKICAgICAgICAgLCBtX3R5cGUodHlwZSkK
ICAgICB7CiAgICAgfQogCiAgICAgUmVmUHRyPENyZWF0ZUZpbGVSZXN1bHQ+IG1fcmVzdWx0Owog
ICAgIFN0cmluZyBtX25hbWU7CisgICAgS1VSTCBtX3VybDsKICAgICBGaWxlU3lzdGVtVHlwZSBt
X3R5cGU7CiB9OwogCkBAIC0xNDAsOCArMTQ5LDkgQEAgcHJpdmF0ZToKIFBhc3NSZWZQdHI8Rmls
ZT4gRE9NRmlsZVN5c3RlbVN5bmM6OmNyZWF0ZUZpbGUoY29uc3QgRmlsZUVudHJ5U3luYyogZmls
ZUVudHJ5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBlYyA9IDA7CisgICAgS1VSTCBmaWxl
U3lzdGVtVVJMID0gY3JlYXRlRmlsZVN5c3RlbVVSTChmaWxlRW50cnkpOwogICAgIFJlZlB0cjxD
cmVhdGVGaWxlSGVscGVyOjpDcmVhdGVGaWxlUmVzdWx0PiByZXN1bHQoQ3JlYXRlRmlsZUhlbHBl
cjo6Q3JlYXRlRmlsZVJlc3VsdDo6Y3JlYXRlKCkpOwotICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5j
cmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRhdGEoY3JlYXRlRmlsZVN5c3RlbVVSTChmaWxl
RW50cnkpLCBDcmVhdGVGaWxlSGVscGVyOjpjcmVhdGUocmVzdWx0LCBmaWxlRW50cnktPm5hbWUo
KSwgdHlwZSgpKSk7CisgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmNyZWF0ZVNuYXBzaG90RmlsZUFu
ZFJlYWRNZXRhZGF0YShmaWxlU3lzdGVtVVJMLCBDcmVhdGVGaWxlSGVscGVyOjpjcmVhdGUocmVz
dWx0LCBmaWxlRW50cnktPm5hbWUoKSwgZmlsZVN5c3RlbVVSTCwgdHlwZSgpKSk7CiAgICAgaWYg
KCFtX2FzeW5jRmlsZVN5c3RlbS0+d2FpdEZvck9wZXJhdGlvblRvQ29tcGxldGUoKSkgewogICAg
ICAgICBlYyA9IEZpbGVFeGNlcHRpb246OkFCT1JUX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9CbG9iLmNwcAppbmRleCBkMWRjYjUxYWIwMTU2Y2U4ZmE4OTBkZjM3MGM1N2Yw
MzUyYzQ0MDNjLi4xYjkwNzEyMjI3ODkzMzBjYjJmZjJhMDhhODUzMGM3Zjg1MjNjMzk3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvQmxvYi5jcHAKQEAgLTEzNyw5ICsxMzcsMTQgQEAgUGFzc1JlZlB0cjxCbG9i
PiBCbG9iOjpzbGljZUludGVybmFsKGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCwgY29u
c3QgU3RyaW4KICAgICBsb25nIGxvbmcgbGVuZ3RoID0gZW5kIC0gc3RhcnQ7CiAgICAgT3duUHRy
PEJsb2JEYXRhPiBibG9iRGF0YSA9IEJsb2JEYXRhOjpjcmVhdGUoKTsKICAgICBibG9iRGF0YS0+
c2V0Q29udGVudFR5cGUoY29udGVudFR5cGUpOwotICAgIGlmIChpc0ZpbGUoKSkKKyAgICBpZiAo
aXNGaWxlKCkpIHsKKyNpZiBFTkFCTEUoRklMRV9TWVNURU0pCisgICAgICAgIGlmICghdG9GaWxl
KHRoaXMpLT5maWxlU3lzdGVtVVJMKCkuaXNFbXB0eSgpKQorICAgICAgICAgICAgYmxvYkRhdGEt
PmFwcGVuZFVSTCh0b0ZpbGUodGhpcyktPmZpbGVTeXN0ZW1VUkwoKSwgc3RhcnQsIGxlbmd0aCwg
bW9kaWZpY2F0aW9uVGltZSk7CisgICAgICAgIGVsc2UKKyNlbmRpZgogICAgICAgICBibG9iRGF0
YS0+YXBwZW5kRmlsZSh0b0ZpbGUodGhpcyktPnBhdGgoKSwgc3RhcnQsIGxlbmd0aCwgbW9kaWZp
Y2F0aW9uVGltZSk7Ci0gICAgZWxzZQorICAgIH0gZWxzZQogICAgICAgICBibG9iRGF0YS0+YXBw
ZW5kQmxvYihtX2ludGVybmFsVVJMLCBzdGFydCwgbGVuZ3RoKTsKIAogICAgIHJldHVybiBCbG9i
OjpjcmVhdGUoYmxvYkRhdGEucmVsZWFzZSgpLCBsZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5j
cHAKaW5kZXggMDg3ODk1NzEwMDgzYTA2ZjFkODFhOTQxZTdjMjllMmZiZjI0YjcwOS4uNjkyYmRl
MWFjYTBhZDdjMTYxYzRkM2Y0OGVkMjEzNmEzYTUyYWRjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9GaWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUu
Y3BwCkBAIC03NSw2ICs3NSwxNCBAQCBzdGF0aWMgUGFzc093blB0cjxCbG9iRGF0YT4gY3JlYXRl
QmxvYkRhdGFGb3JGaWxlV2l0aE1ldGFkYXRhKGNvbnN0IFN0cmluZyYgZmlsZQogICAgIGJsb2JE
YXRhLT5hcHBlbmRGaWxlKG1ldGFkYXRhLnBsYXRmb3JtUGF0aCwgMCwgbWV0YWRhdGEubGVuZ3Ro
LCBtZXRhZGF0YS5tb2RpZmljYXRpb25UaW1lKTsKICAgICByZXR1cm4gYmxvYkRhdGEucmVsZWFz
ZSgpOwogfQorCitzdGF0aWMgUGFzc093blB0cjxCbG9iRGF0YT4gY3JlYXRlQmxvYkRhdGFGb3JG
aWxlU3lzdGVtVVJMKGNvbnN0IEtVUkwmIGZpbGVTeXN0ZW1VUkwsIGNvbnN0IEZpbGVNZXRhZGF0
YSYgbWV0YWRhdGEpCit7CisgICAgT3duUHRyPEJsb2JEYXRhPiBibG9iRGF0YSA9IEJsb2JEYXRh
OjpjcmVhdGUoKTsKKyAgICBibG9iRGF0YS0+c2V0Q29udGVudFR5cGUoZ2V0Q29udGVudFR5cGVG
cm9tRmlsZU5hbWUoZmlsZVN5c3RlbVVSTC5wYXRoKCksIEZpbGU6OldlbGxLbm93bkNvbnRlbnRU
eXBlcykpOworICAgIGJsb2JEYXRhLT5hcHBlbmRVUkwoZmlsZVN5c3RlbVVSTCwgMCwgbWV0YWRh
dGEubGVuZ3RoLCBtZXRhZGF0YS5tb2RpZmljYXRpb25UaW1lKTsKKyAgICByZXR1cm4gYmxvYkRh
dGEucmVsZWFzZSgpOworfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoRElSRUNUT1JZX1VQTE9BRCkK
QEAgLTEzMSw2ICsxMzksMTQgQEAgRmlsZTo6RmlsZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IEZpbGVNZXRhZGF0YSYgbWV0YWRhdGEpCiAgICAgLCBtX3NuYXBzaG90TW9kaWZpY2F0aW9uVGlt
ZShtZXRhZGF0YS5tb2RpZmljYXRpb25UaW1lKQogewogfQorCitGaWxlOjpGaWxlKGNvbnN0IEtV
UkwmIGZpbGVTeXN0ZW1VUkwsIGNvbnN0IEZpbGVNZXRhZGF0YSYgbWV0YWRhdGEpCisgICAgOiBC
bG9iKGNyZWF0ZUJsb2JEYXRhRm9yRmlsZVN5c3RlbVVSTChmaWxlU3lzdGVtVVJMLCBtZXRhZGF0
YSksIG1ldGFkYXRhLmxlbmd0aCkKKyAgICAsIG1fZmlsZVN5c3RlbVVSTChmaWxlU3lzdGVtVVJM
KQorICAgICwgbV9zbmFwc2hvdFNpemUobWV0YWRhdGEubGVuZ3RoKQorICAgICwgbV9zbmFwc2hv
dE1vZGlmaWNhdGlvblRpbWUobWV0YWRhdGEubW9kaWZpY2F0aW9uVGltZSkKK3sKK30KICNlbmRp
ZgogCiBkb3VibGUgRmlsZTo6bGFzdE1vZGlmaWVkRGF0ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmls
ZS5oCmluZGV4IDg2NGM0Mzg4YWU5M2M5ZGIyYjkxMWJjNGM5ODQ4NjAwZDFlMjM4NzEuLmI5MTU5
MDJkNDllZTc3MGQ1ODY3MTZlZmFmNTE3ZGY4NTUyNmNiMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5o
CkBAIC02OCw2ICs2OCwxMyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEZpbGUobmFtZSwgbWV0YWRhdGEpKTsKICAgICB9CisKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxGaWxlPiBjcmVhdGVGb3JGaWxlU3lzdGVtRmlsZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0
IEZpbGVNZXRhZGF0YSYgbWV0YWRhdGEpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEZpbGUodXJsLCBtZXRhZGF0YSkpOworICAgIH0KKworICAgIEtVUkwgZmlsZVN5c3RlbVVS
TCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsZVN5c3RlbVVSTDsgfQogI2VuZGlmCiAKICAgICAvLyBD
cmVhdGUgYSBmaWxlIHdpdGggYSBuYW1lIGV4cG9zZWQgdG8gdGhlIGF1dGhvciAodmlhIEZpbGUu
bmFtZSBhbmQgYXNzb2NpYXRlZCBET00gcHJvcGVydGllcykgdGhhdCBkaWZmZXJzIGZyb20gdGhl
IG9uZSBwcm92aWRlZCBpbiB0aGUgcGF0aC4KQEAgLTEwNCw2ICsxMTEsNyBAQCBwcml2YXRlOgog
CiAjIGlmIEVOQUJMRShGSUxFX1NZU1RFTSkKICAgICBGaWxlKGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgRmlsZU1ldGFkYXRhJik7CisgICAgRmlsZShjb25zdCBLVVJMJiBmaWxlU3lzdGVtVVJM
LCBjb25zdCBGaWxlTWV0YWRhdGEmKTsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIGhh
cyBhIHZhbGlkIHNuYXBzaG90IG1ldGFkYXRhIChpLmUuIG1fc25hcHNob3RTaXplID49IDApLgog
ICAgIGJvb2wgaGFzVmFsaWRTbmFwc2hvdE1ldGFkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9zbmFw
c2hvdFNpemUgPj0gMDsgfQpAQCAtMTEzLDYgKzEyMSw4IEBAIHByaXZhdGU6CiAgICAgU3RyaW5n
IG1fbmFtZTsKIAogI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKKyAgICBLVVJMIG1fZmlsZVN5c3Rl
bVVSTDsKKwogICAgIC8vIElmIG1fc25hcHNob3RTaXplIGlzIG5lZ2F0aXZlIChpbml0aWFsaXpl
ZCB0byAtMSBieSBkZWZhdWx0KSwgdGhlIHNuYXBzaG90IG1ldGFkYXRhIGlzIGludmFsaWQgYW5k
IHdlIHJldHJpZXZlIHRoZSBsYXRlc3QgbWV0YWRhdGEgc3luY2hyb25vdXNseSBpbiBzaXplKCks
IGxhc3RNb2RpZmllZFRpbWUoKSBhbmQgd2Via2l0U2xpY2UoKS4KICAgICAvLyBPdGhlcndpc2Us
IHRoZSBzbmFwc2hvdCBtZXRhZGF0YSBhcmUgdXNlZCBkaXJlY3RseSBpbiB0aG9zZSBtZXRob2Rz
LgogICAgIGNvbnN0IGxvbmcgbG9uZyBtX3NuYXBzaG90U2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRlci5jcHAKaW5kZXggNWM1NGM0YjZmMmMyM2JlNjFiODc4
Yzc2ZDFiOGMxMThhZmJlOWFjNS4uZmMyNzA1ZGU4N2JhYTgzODc4YjAwMDQyZTU4NTI0ZTg4N2Zl
M2RjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRlci5jcHAK
QEAgLTE0MSw2ICsxNDEsMTEgQEAgdm9pZCBXZWJLaXRCbG9iQnVpbGRlcjo6YXBwZW5kKEJsb2Iq
IGJsb2IpCiAgICAgICAgIGZpbGUtPmNhcHR1cmVTbmFwc2hvdChzbmFwc2hvdFNpemUsIHNuYXBz
aG90TW9kaWZpY2F0aW9uVGltZSk7CiAKICAgICAgICAgbV9zaXplICs9IHNuYXBzaG90U2l6ZTsK
KyNpZiBFTkFCTEUoRklMRV9TWVNURU0pCisgICAgICAgIGlmICghZmlsZS0+ZmlsZVN5c3RlbVVS
TCgpLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIG1faXRlbXMuYXBwZW5kKEJsb2JEYXRhSXRlbShm
aWxlLT5maWxlU3lzdGVtVVJMKCksIDAsIHNuYXBzaG90U2l6ZSwgc25hcHNob3RNb2RpZmljYXRp
b25UaW1lKSk7CisgICAgICAgIGVsc2UKKyNlbmRpZgogICAgICAgICBtX2l0ZW1zLmFwcGVuZChC
bG9iRGF0YUl0ZW0oZmlsZS0+cGF0aCgpLCAwLCBzbmFwc2hvdFNpemUsIHNuYXBzaG90TW9kaWZp
Y2F0aW9uVGltZSkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGxvbmcgbG9uZyBibG9iU2l6ZSA9
IHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oYmxvYi0+c2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViSFRUUEJvZHkuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJIVFRQQm9keS5jcHAKaW5k
ZXggNDBiMGZjZDI2YmM4YzhkN2M4Zjk5ZDg2Yzk3MDk1MzFjOTI2M2FlZC4uMTAyNDU5Y2ViMTQ1
YmMzNDc5ODJjNjVmNDc1MjIzMjBkYjE2ODE2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJIVFRQQm9keS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJIVFRQQm9keS5jcHAKQEAgLTc5LDYg
Kzc5LDcgQEAgYm9vbCBXZWJIVFRQQm9keTo6ZWxlbWVudEF0KHNpemVfdCBpbmRleCwgRWxlbWVu
dCYgcmVzdWx0KSBjb25zdAogICAgIHJlc3VsdC5maWxlU3RhcnQgPSAwOwogICAgIHJlc3VsdC5m
aWxlTGVuZ3RoID0gMDsKICAgICByZXN1bHQubW9kaWZpY2F0aW9uVGltZSA9IGludmFsaWRGaWxl
VGltZSgpOworICAgIHJlc3VsdC51cmwgPSBLVVJMKCk7CiAgICAgcmVzdWx0LmJsb2JVUkwgPSBL
VVJMKCk7CiAKICAgICBzd2l0Y2ggKGVsZW1lbnQubV90eXBlKSB7CkBAIC05OCw3ICs5OSwxNyBA
QCBib29sIFdlYkhUVFBCb2R5OjplbGVtZW50QXQoc2l6ZV90IGluZGV4LCBFbGVtZW50JiByZXN1
bHQpIGNvbnN0CiAjaWYgRU5BQkxFKEJMT0IpCiAgICAgY2FzZSBGb3JtRGF0YUVsZW1lbnQ6OmVu
Y29kZWRCbG9iOgogICAgICAgICByZXN1bHQudHlwZSA9IEVsZW1lbnQ6OlR5cGVCbG9iOwotICAg
ICAgICByZXN1bHQuYmxvYlVSTCA9IGVsZW1lbnQubV9ibG9iVVJMOworICAgICAgICByZXN1bHQu
dXJsID0gZWxlbWVudC5tX3VybDsKKyAgICAgICAgcmVzdWx0LmJsb2JVUkwgPSBlbGVtZW50Lm1f
dXJsOyAvLyBGSVhNRTogZGVwcmVjYXRlIHRoaXMuCisgICAgICAgIGJyZWFrOworI2VuZGlmCisj
aWYgRU5BQkxFKEZJTEVfU1lTVEVNKQorICAgIGNhc2UgRm9ybURhdGFFbGVtZW50OjplbmNvZGVk
VVJMOgorICAgICAgICByZXN1bHQudHlwZSA9IEVsZW1lbnQ6OlR5cGVVUkw7CisgICAgICAgIHJl
c3VsdC51cmwgPSBlbGVtZW50Lm1fdXJsOworICAgICAgICByZXN1bHQuZmlsZVN0YXJ0ID0gZWxl
bWVudC5tX2ZpbGVTdGFydDsKKyAgICAgICAgcmVzdWx0LmZpbGVMZW5ndGggPSBlbGVtZW50Lm1f
ZmlsZUxlbmd0aDsKKyAgICAgICAgcmVzdWx0Lm1vZGlmaWNhdGlvblRpbWUgPSBlbGVtZW50Lm1f
ZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZTsKICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAg
ICBkZWZhdWx0OgpAQCAtMTMxLDkgKzE0MiwxOSBAQCB2b2lkIFdlYkhUVFBCb2R5OjphcHBlbmRG
aWxlUmFuZ2UoY29uc3QgV2ViU3RyaW5nJiBmaWxlUGF0aCwgbG9uZyBsb25nIGZpbGVTdGFydAog
I2VuZGlmCiB9CiAKK3ZvaWQgV2ViSFRUUEJvZHk6OmFwcGVuZFVSTFJhbmdlKGNvbnN0IFdlYlVS
TCYgdXJsLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBsZW5ndGgsIGRvdWJsZSBtb2RpZmlj
YXRpb25UaW1lKQoreworI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKKyAgICBBU1NFUlQoS1VSTCh1
cmwpLnByb3RvY29sKCkgPT0gImZpbGVzeXN0ZW0iKTsKKyAgICBlbnN1cmVNdXRhYmxlKCk7Cisg
ICAgbV9wcml2YXRlLT5hcHBlbmRVUkxSYW5nZSh1cmwsIHN0YXJ0LCBsZW5ndGgsIG1vZGlmaWNh
dGlvblRpbWUpOworI2VuZGlmCit9CisKIHZvaWQgV2ViSFRUUEJvZHk6OmFwcGVuZEJsb2IoY29u
c3QgV2ViVVJMJiBibG9iVVJMKQogewogI2lmIEVOQUJMRShCTE9CKQorICAgIEFTU0VSVChLVVJM
KGJsb2JVUkwpLnByb3RvY29sKCkgPT0gImJsb2IiKTsKICAgICBlbnN1cmVNdXRhYmxlKCk7CiAg
ICAgbV9wcml2YXRlLT5hcHBlbmRCbG9iKGJsb2JVUkwpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGEuY3BwCmluZGV4IGExY2MzMTMwYzgwZGM2Mzcw
M2ExOGM2MGE4ZGY3NjI3NjgwYzNjNmQuLmYyMDQ0ZmJhMjgxOTg4NjZlMDYxZjNmYWQ5NWRkM2Zj
NjE3ZDM0NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxv
YkRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGEu
Y3BwCkBAIC04OSw2ICs4OSwxMyBAQCB2b2lkIEJsb2JEYXRhOjphcHBlbmRCbG9iKGNvbnN0IEtV
UkwmIHVybCwgbG9uZyBsb25nIG9mZnNldCwgbG9uZyBsb25nIGxlbmd0aCkKICAgICBtX2l0ZW1z
LmFwcGVuZChCbG9iRGF0YUl0ZW0odXJsLCBvZmZzZXQsIGxlbmd0aCkpOwogfQogCisjaWYgRU5B
QkxFKEZJTEVfU1lTVEVNKQordm9pZCBCbG9iRGF0YTo6YXBwZW5kVVJMKGNvbnN0IEtVUkwmIHVy
bCwgbG9uZyBsb25nIG9mZnNldCwgbG9uZyBsb25nIGxlbmd0aCwgZG91YmxlIGV4cGVjdGVkTW9k
aWZpY2F0aW9uVGltZSkKK3sKKyAgICBtX2l0ZW1zLmFwcGVuZChCbG9iRGF0YUl0ZW0odXJsLCBv
ZmZzZXQsIGxlbmd0aCwgZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKSk7Cit9CisjZW5kaWYKKwog
dm9pZCBCbG9iRGF0YTo6c3dhcEl0ZW1zKEJsb2JEYXRhSXRlbUxpc3QmIGl0ZW1zKQogewogICAg
IG1faXRlbXMuc3dhcChpdGVtcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Jsb2JEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Js
b2JEYXRhLmgKaW5kZXggNTE5NWNjOTVjZTUyMDk3NjU4NzViZGMyZDI0MTRlNjU1ZTk3ZTcyYi4u
YjM1ZDI1Y2Y3NTk1NjM5ZTYwMmVjYWUzMjBlYzBiMmY3NzM5OWE5NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGEuaApAQCAtMTEwLDEwICsxMTAsMjkgQEAgc3Ry
dWN0IEJsb2JEYXRhSXRlbSB7CiAgICAgewogICAgIH0KIAorI2lmIEVOQUJMRShGSUxFX1NZU1RF
TSkKKyAgICAvLyBDb25zdHJ1Y3RvciBmb3IgVVJMIHR5cGUgKGUuZy4gRmlsZVN5c3RlbSBmaWxl
cykuCisgICAgQmxvYkRhdGFJdGVtKGNvbnN0IEtVUkwmIHVybCwgbG9uZyBsb25nIG9mZnNldCwg
bG9uZyBsb25nIGxlbmd0aCwgZG91YmxlIGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSkKKyAgICAg
ICAgOiB0eXBlKFVSTCkKKyAgICAgICAgLCB1cmwodXJsKQorICAgICAgICAsIG9mZnNldChvZmZz
ZXQpCisgICAgICAgICwgbGVuZ3RoKGxlbmd0aCkKKyAgICAgICAgLCBleHBlY3RlZE1vZGlmaWNh
dGlvblRpbWUoZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKQorICAgIHsKKyAgICB9CisjZW5kaWYK
KwogICAgIC8vIERldGFjaGVzIGZyb20gY3VycmVudCB0aHJlYWQgc28gdGhhdCBpdCBjYW4gYmUg
cGFzc2VkIHRvIGFub3RoZXIgdGhyZWFkLgogICAgIHZvaWQgZGV0YWNoRnJvbUN1cnJlbnRUaHJl
YWQoKTsKIAotICAgIGVudW0geyBEYXRhLCBGaWxlLCBCbG9iIH0gdHlwZTsKKyAgICBlbnVtIHsK
KyAgICAgICAgRGF0YSwKKyAgICAgICAgRmlsZSwKKyAgICAgICAgQmxvYgorI2lmIEVOQUJMRShG
SUxFX1NZU1RFTSkKKyAgICAgICAgLCBVUkwKKyNlbmRpZgorICAgIH0gdHlwZTsKIAogICAgIC8v
IEZvciBEYXRhIHR5cGUuCiAgICAgUmVmUHRyPFJhd0RhdGE+IGRhdGE7CkBAIC0xMjEsNyArMTQw
LDcgQEAgc3RydWN0IEJsb2JEYXRhSXRlbSB7CiAgICAgLy8gRm9yIEZpbGUgdHlwZS4KICAgICBT
dHJpbmcgcGF0aDsKIAotICAgIC8vIEZvciBCbG9iIHR5cGUuCisgICAgLy8gRm9yIEJsb2Igb3Ig
VVJMIHR5cGUuCiAgICAgS1VSTCB1cmw7CiAKICAgICBsb25nIGxvbmcgb2Zmc2V0OwpAQCAtMTY1
LDYgKzE4NCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZEZpbGUoY29uc3QgU3RyaW5nJiBw
YXRoKTsKICAgICB2b2lkIGFwcGVuZEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBsb25nIGxvbmcg
b2Zmc2V0LCBsb25nIGxvbmcgbGVuZ3RoLCBkb3VibGUgZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1l
KTsKICAgICB2b2lkIGFwcGVuZEJsb2IoY29uc3QgS1VSTCYsIGxvbmcgbG9uZyBvZmZzZXQsIGxv
bmcgbG9uZyBsZW5ndGgpOworI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKKyAgICB2b2lkIGFwcGVu
ZFVSTChjb25zdCBLVVJMJiwgbG9uZyBsb25nIG9mZnNldCwgbG9uZyBsb25nIGxlbmd0aCwgZG91
YmxlIGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSk7CisjZW5kaWYKIAogcHJpdmF0ZToKICAgICBm
cmllbmQgY2xhc3MgQmxvYlJlZ2lzdHJ5SW1wbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCmluZGV4IDU5YTlhOWM2MDkzYTU1
MmI4ZTFkMDk4YmNhMzNkZDI3MGZkMmRjODEuLmMyNTkwMTQ5ZTI1YWIzOWQ3MTYzNTNkNzdiYjVl
YWRmODA2NTQyNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
QmxvYlJlZ2lzdHJ5SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9CbG9iUmVnaXN0cnlJbXBsLmNwcApAQCAtMTA3LDYgKzEwNywxMCBAQCB2b2lkIEJsb2JSZWdp
c3RyeUltcGw6OmFwcGVuZFN0b3JhZ2VJdGVtcyhCbG9iU3RvcmFnZURhdGEqIGJsb2JTdG9yYWdl
RGF0YSwgY29ucwogICAgIGZvciAoQmxvYkRhdGFJdGVtTGlzdDo6Y29uc3RfaXRlcmF0b3IgaXRl
ciA9IGl0ZW1zLmJlZ2luKCk7IGl0ZXIgIT0gaXRlbXMuZW5kKCk7ICsraXRlcikgewogICAgICAg
ICBpZiAoaXRlci0+dHlwZSA9PSBCbG9iRGF0YUl0ZW06OkRhdGEpCiAgICAgICAgICAgICBibG9i
U3RvcmFnZURhdGEtPm1fZGF0YS5hcHBlbmREYXRhKGl0ZXItPmRhdGEsIGl0ZXItPm9mZnNldCwg
aXRlci0+bGVuZ3RoKTsKKyNpZiBFTkFCTEUoRklMRV9TWVNURU0pCisgICAgICAgIGVsc2UgaWYg
KGl0ZXItPnR5cGUgPT0gQmxvYkRhdGFJdGVtOjpVUkwpCisgICAgICAgICAgICBibG9iU3RvcmFn
ZURhdGEtPm1fZGF0YS5hcHBlbmRVUkwoaXRlci0+dXJsLCBpdGVyLT5vZmZzZXQsIGl0ZXItPmxl
bmd0aCwgaXRlci0+ZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKTsKKyNlbmRpZgogICAgICAgICBl
bHNlIHsKICAgICAgICAgICAgIEFTU0VSVChpdGVyLT50eXBlID09IEJsb2JEYXRhSXRlbTo6Rmls
ZSk7CiAgICAgICAgICAgICBibG9iU3RvcmFnZURhdGEtPm1fZGF0YS5hcHBlbmRGaWxlKGl0ZXIt
PnBhdGgsIGl0ZXItPm9mZnNldCwgaXRlci0+bGVuZ3RoLCBpdGVyLT5leHBlY3RlZE1vZGlmaWNh
dGlvblRpbWUpOwpAQCAtMTMzLDYgKzEzNywxMCBAQCB2b2lkIEJsb2JSZWdpc3RyeUltcGw6OmFw
cGVuZFN0b3JhZ2VJdGVtcyhCbG9iU3RvcmFnZURhdGEqIGJsb2JTdG9yYWdlRGF0YSwgY29ucwog
ICAgICAgICBsb25nIGxvbmcgbmV3TGVuZ3RoID0gY3VycmVudExlbmd0aCA+IGxlbmd0aCA/IGxl
bmd0aCA6IGN1cnJlbnRMZW5ndGg7CiAgICAgICAgIGlmIChpdGVyLT50eXBlID09IEJsb2JEYXRh
SXRlbTo6RGF0YSkKICAgICAgICAgICAgIGJsb2JTdG9yYWdlRGF0YS0+bV9kYXRhLmFwcGVuZERh
dGEoaXRlci0+ZGF0YSwgaXRlci0+b2Zmc2V0ICsgb2Zmc2V0LCBuZXdMZW5ndGgpOworI2lmIEVO
QUJMRShGSUxFX1NZU1RFTSkKKyAgICAgICAgZWxzZSBpZiAoaXRlci0+dHlwZSA9PSBCbG9iRGF0
YUl0ZW06OlVSTCkKKyAgICAgICAgICAgIGJsb2JTdG9yYWdlRGF0YS0+bV9kYXRhLmFwcGVuZFVS
TChpdGVyLT51cmwsIGl0ZXItPm9mZnNldCArIG9mZnNldCwgbmV3TGVuZ3RoLCBpdGVyLT5leHBl
Y3RlZE1vZGlmaWNhdGlvblRpbWUpOworI2VuZGlmCiAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgQVNTRVJUKGl0ZXItPnR5cGUgPT0gQmxvYkRhdGFJdGVtOjpGaWxlKTsKICAgICAgICAgICAg
IGJsb2JTdG9yYWdlRGF0YS0+bV9kYXRhLmFwcGVuZEZpbGUoaXRlci0+cGF0aCwgaXRlci0+b2Zm
c2V0ICsgb2Zmc2V0LCBuZXdMZW5ndGgsIGl0ZXItPmV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSk7
CkBAIC0xNTIsNiArMTYwLDcgQEAgdm9pZCBCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JV
UkwoY29uc3QgS1VSTCYgdXJsLCBQYXNzT3duUHRyPEJsb2JEYXRhPiBibG8KICAgICAvLyBUaGUg
YmxvYiBkYXRhIGlzIHN0b3JlZCBpbiB0aGUgImNhbm9uaWNhbCIgd2F5LiBUaGF0IGlzLCBpdCBv
bmx5IGNvbnRhaW5zIGEgbGlzdCBvZiBEYXRhIGFuZCBGaWxlIGl0ZW1zLgogICAgIC8vIDEpIFRo
ZSBEYXRhIGl0ZW0gaXMgZGVub3RlZCBieSB0aGUgcmF3IGRhdGEgYW5kIHRoZSByYW5nZS4KICAg
ICAvLyAyKSBUaGUgRmlsZSBpdGVtIGlzIGRlbm90ZWQgYnkgdGhlIGZpbGUgcGF0aCwgdGhlIHJh
bmdlIGFuZCB0aGUgZXhwZWN0ZWQgbW9kaWZpY2F0aW9uIHRpbWUuCisgICAgLy8gMykgVGhlIFVS
TCBpdGVtIGlzIGRlbm90ZWQgYnkgdGhlIFVSTCwgdGhlIHJhbmdlIGFuZCB0aGUgZXhwZWN0ZWQg
bW9kaWZpY2F0aW9uIHRpbWUuCiAgICAgLy8gQWxsIHRoZSBCbG9iIGl0ZW1zIGluIHRoZSBwYXNz
aW5nIGJsb2IgZGF0YSBhcmUgcmVzb2x2ZWQgYW5kIGV4cGFuZGVkIGludG8gYSBzZXQgb2YgRGF0
YSBhbmQgRmlsZSBpdGVtcy4KIAogICAgIGZvciAoQmxvYkRhdGFJdGVtTGlzdDo6Y29uc3RfaXRl
cmF0b3IgaXRlciA9IGJsb2JEYXRhLT5pdGVtcygpLmJlZ2luKCk7IGl0ZXIgIT0gYmxvYkRhdGEt
Pml0ZW1zKCkuZW5kKCk7ICsraXRlcikgewpAQCAtMTYyLDYgKzE3MSwxMSBAQCB2b2lkIEJsb2JS
ZWdpc3RyeUltcGw6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBLVVJMJiB1cmwsIFBhc3NPd25QdHI8
QmxvYkRhdGE+IGJsbwogICAgICAgICBjYXNlIEJsb2JEYXRhSXRlbTo6RmlsZToKICAgICAgICAg
ICAgIGJsb2JTdG9yYWdlRGF0YS0+bV9kYXRhLmFwcGVuZEZpbGUoaXRlci0+cGF0aCwgaXRlci0+
b2Zmc2V0LCBpdGVyLT5sZW5ndGgsIGl0ZXItPmV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSk7CiAg
ICAgICAgICAgICBicmVhazsKKyNpZiBFTkFCTEUoRklMRV9TWVNURU0pCisgICAgICAgIGNhc2Ug
QmxvYkRhdGFJdGVtOjpVUkw6CisgICAgICAgICAgICBibG9iU3RvcmFnZURhdGEtPm1fZGF0YS5h
cHBlbmRVUkwoaXRlci0+dXJsLCBpdGVyLT5vZmZzZXQsIGl0ZXItPmxlbmd0aCwgaXRlci0+ZXhw
ZWN0ZWRNb2RpZmljYXRpb25UaW1lKTsKKyAgICAgICAgICAgIGJyZWFrOworI2VuZGlmCiAgICAg
ICAgIGNhc2UgQmxvYkRhdGFJdGVtOjpCbG9iOgogICAgICAgICAgICAgaWYgKG1fYmxvYnMuY29u
dGFpbnMoaXRlci0+dXJsLnN0cmluZygpKSkKICAgICAgICAgICAgICAgICBhcHBlbmRTdG9yYWdl
SXRlbXMoYmxvYlN0b3JhZ2VEYXRhLmdldCgpLCBtX2Jsb2JzLmdldChpdGVyLT51cmwuc3RyaW5n
KCkpLT5pdGVtcygpLCBpdGVyLT5vZmZzZXQsIGl0ZXItPmxlbmd0aCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCmluZGV4IDVmNWI1ZGZkNDYzOWY3ZjNj
NDRjYjQ1NjhlMzYyMmNiYWVjODUwM2EuLjc4MWZhN2FhMWRkNjdiODRkNDZiN2Q1MGU0MDAxMWRh
ZDlhN2NkMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9y
bURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEu
Y3BwCkBAIC0xNDMsNyArMTQzLDEyIEBAIFBhc3NSZWZQdHI8Rm9ybURhdGE+IEZvcm1EYXRhOjpk
ZWVwQ29weSgpIGNvbnN0CiAgICAgICAgICAgICBicmVhazsKICNpZiBFTkFCTEUoQkxPQikKICAg
ICAgICAgY2FzZSBGb3JtRGF0YUVsZW1lbnQ6OmVuY29kZWRCbG9iOgotICAgICAgICAgICAgZm9y
bURhdGEtPm1fZWxlbWVudHMuYXBwZW5kKEZvcm1EYXRhRWxlbWVudChlLm1fYmxvYlVSTCkpOwor
ICAgICAgICAgICAgZm9ybURhdGEtPm1fZWxlbWVudHMuYXBwZW5kKEZvcm1EYXRhRWxlbWVudChl
Lm1fdXJsKSk7CisgICAgICAgICAgICBicmVhazsKKyNlbmRpZgorI2lmIEVOQUJMRShGSUxFX1NZ
U1RFTSkKKyAgICAgICAgY2FzZSBGb3JtRGF0YUVsZW1lbnQ6OmVuY29kZWRVUkw6CisgICAgICAg
ICAgICBmb3JtRGF0YS0+bV9lbGVtZW50cy5hcHBlbmQoRm9ybURhdGFFbGVtZW50KGUubV91cmws
IGUubV9maWxlU3RhcnQsIGUubV9maWxlTGVuZ3RoLCBlLm1fZXhwZWN0ZWRGaWxlTW9kaWZpY2F0
aW9uVGltZSkpOwogICAgICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICAgICAgfQpAQCAtMTgx
LDYgKzE4NiwxNyBAQCB2b2lkIEZvcm1EYXRhOjphcHBlbmRCbG9iKGNvbnN0IEtVUkwmIGJsb2JV
UkwpCiAgICAgbV9lbGVtZW50cy5hcHBlbmQoRm9ybURhdGFFbGVtZW50KGJsb2JVUkwpKTsKIH0K
ICNlbmRpZgorI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKK3ZvaWQgRm9ybURhdGE6OmFwcGVuZFVS
TChjb25zdCBLVVJMJiB1cmwpCit7CisgICAgbV9lbGVtZW50cy5hcHBlbmQoRm9ybURhdGFFbGVt
ZW50KHVybCwgMCwgQmxvYkRhdGFJdGVtOjp0b0VuZE9mRmlsZSwgaW52YWxpZEZpbGVUaW1lKCkp
KTsKK30KKwordm9pZCBGb3JtRGF0YTo6YXBwZW5kVVJMUmFuZ2UoY29uc3QgS1VSTCYgdXJsLCBs
b25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBsZW5ndGgsIGRvdWJsZSBleHBlY3RlZE1vZGlmaWNh
dGlvblRpbWUpCit7CisgICAgbV9lbGVtZW50cy5hcHBlbmQoRm9ybURhdGFFbGVtZW50KHVybCwg
c3RhcnQsIGxlbmd0aCwgZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKSk7Cit9CisjZW5kaWYKIAog
dm9pZCBGb3JtRGF0YTo6YXBwZW5kS2V5VmFsdWVQYWlySXRlbXMoY29uc3QgRm9ybURhdGFMaXN0
JiBsaXN0LCBjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nLCBib29sIGlzTXVsdGlQYXJ0Rm9y
bSwgRG9jdW1lbnQqIGRvY3VtZW50LCBFbmNvZGluZ1R5cGUgZW5jb2RpbmdUeXBlKQogewpAQCAt
MjUyLDYgKzI2OCwxMCBAQCB2b2lkIEZvcm1EYXRhOjphcHBlbmRLZXlWYWx1ZVBhaXJJdGVtcyhj
b25zdCBGb3JtRGF0YUxpc3QmIGxpc3QsIGNvbnN0IFRleHRFbmNvZAogICAgICAgICAgICAgICAg
ICAgICAvLyBEbyBub3QgYWRkIHRoZSBmaWxlIGlmIHRoZSBwYXRoIGlzIGVtcHR5LgogICAgICAg
ICAgICAgICAgICAgICBpZiAoIWZpbGUtPnBhdGgoKS5pc0VtcHR5KCkpCiAgICAgICAgICAgICAg
ICAgICAgICAgICBhcHBlbmRGaWxlKGZpbGUtPnBhdGgoKSwgc2hvdWxkR2VuZXJhdGVGaWxlKTsK
KyNpZiBFTkFCTEUoRklMRV9TWVNURU0pCisgICAgICAgICAgICAgICAgICAgIGlmICghZmlsZS0+
ZmlsZVN5c3RlbVVSTCgpLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVu
ZFVSTChmaWxlLT5maWxlU3lzdGVtVVJMKCkpOworI2VuZGlmCiAgICAgICAgICAgICAgICAgfQog
I2lmIEVOQUJMRShCTE9CKQogICAgICAgICAgICAgICAgIGVsc2UKQEAgLTM2MSw3ICszODEsMTYg
QEAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEZvcm1EYXRhRWxl
bWVudCYgZWxlbWVudCkKIAogI2lmIEVOQUJMRShCTE9CKQogICAgIGNhc2UgRm9ybURhdGFFbGVt
ZW50OjplbmNvZGVkQmxvYjoKLSAgICAgICAgZW5jb2Rlci5lbmNvZGVTdHJpbmcoZWxlbWVudC5t
X2Jsb2JVUkwuc3RyaW5nKCkpOworICAgICAgICBlbmNvZGVyLmVuY29kZVN0cmluZyhlbGVtZW50
Lm1fdXJsLnN0cmluZygpKTsKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCisKKyNpZiBFTkFCTEUo
RklMRV9TWVNURU0pCisgICAgY2FzZSBGb3JtRGF0YUVsZW1lbnQ6OmVuY29kZWRVUkw6CisgICAg
ICAgIGVuY29kZXIuZW5jb2RlU3RyaW5nKGVsZW1lbnQubV91cmwuc3RyaW5nKCkpOworICAgICAg
ICBlbmNvZGVyLmVuY29kZUludDY0KGVsZW1lbnQubV9maWxlU3RhcnQpOworICAgICAgICBlbmNv
ZGVyLmVuY29kZUludDY0KGVsZW1lbnQubV9maWxlTGVuZ3RoKTsKKyAgICAgICAgZW5jb2Rlci5l
bmNvZGVEb3VibGUoZWxlbWVudC5tX2V4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUpOwogICAg
ICAgICByZXR1cm47CiAjZW5kaWYKICAgICB9CkBAIC0zODcsMTEgKzQxNiwxNiBAQCBzdGF0aWMg
Ym9vbCBkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgRm9ybURhdGFFbGVtZW50JiBlbGVtZW50KQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBjYXNlIEZvcm1EYXRhRWxlbWVudDo6
ZW5jb2RlZEZpbGU6IHsKLSAgICAgICAgZWxlbWVudC5tX3R5cGUgPSBGb3JtRGF0YUVsZW1lbnQ6
OmVuY29kZWRGaWxlOwotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlU3RyaW5nKGVsZW1lbnQu
bV9maWxlbmFtZSkpCisgICAgY2FzZSBGb3JtRGF0YUVsZW1lbnQ6OmVuY29kZWRGaWxlOgorI2lm
IEVOQUJMRShGSUxFX1NZU1RFTSkKKyAgICBjYXNlIEZvcm1EYXRhRWxlbWVudDo6ZW5jb2RlZFVS
TDoKKyNlbmRpZgorICAgIHsKKyAgICAgICAgZWxlbWVudC5tX3R5cGUgPSBzdGF0aWNfY2FzdDxG
b3JtRGF0YUVsZW1lbnQ6OlR5cGU+KHR5cGUpOworICAgICAgICBTdHJpbmcgZmlsZW5hbWVPclVS
TDsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZVN0cmluZyhmaWxlbmFtZU9yVVJMKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUJvb2wo
ZWxlbWVudC5tX3Nob3VsZEdlbmVyYXRlRmlsZSkpCisgICAgICAgIGlmICh0eXBlID09IEZvcm1E
YXRhRWxlbWVudDo6ZW5jb2RlZEZpbGUgJiYgIWRlY29kZXIuZGVjb2RlQm9vbChlbGVtZW50Lm1f
c2hvdWxkR2VuZXJhdGVGaWxlKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
aW50NjRfdCBmaWxlU3RhcnQ7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGVJbnQ2NChmaWxl
U3RhcnQpKQpAQCAtNDA2LDYgKzQ0MCwxNCBAQCBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlciwgRm9ybURhdGFFbGVtZW50JiBlbGVtZW50KQogICAgICAgICBkb3VibGUgZXhwZWN0
ZWRGaWxlTW9kaWZpY2F0aW9uVGltZTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZURvdWJs
ZShleHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lKSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKworI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKKyAgICAgICAgaWYgKHR5cGUgPT0gRm9ybURh
dGFFbGVtZW50OjplbmNvZGVkVVJMKQorICAgICAgICAgICAgZWxlbWVudC5tX3VybCA9IEtVUkwo
S1VSTCgpLCBmaWxlbmFtZU9yVVJMKTsKKyAgICAgICAgZWxzZQorI2VuZGlmCisgICAgICAgIGVs
ZW1lbnQubV9maWxlbmFtZSA9IGZpbGVuYW1lT3JVUkw7CisKICNpZiBFTkFCTEUoQkxPQikKICAg
ICAgICAgZWxlbWVudC5tX2ZpbGVTdGFydCA9IGZpbGVTdGFydDsKICAgICAgICAgZWxlbWVudC5t
X2ZpbGVMZW5ndGggPSBmaWxlTGVuZ3RoOwpAQCAtNDIwLDkgKzQ2MiwxMCBAQCBzdGF0aWMgYm9v
bCBkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgRm9ybURhdGFFbGVtZW50JiBlbGVtZW50KQogICAg
ICAgICBTdHJpbmcgYmxvYlVSTFN0cmluZzsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZVN0
cmluZyhibG9iVVJMU3RyaW5nKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
ZWxlbWVudC5tX2Jsb2JVUkwgPSBLVVJMKEtVUkwoKSwgYmxvYlVSTFN0cmluZyk7CisgICAgICAg
IGVsZW1lbnQubV91cmwgPSBLVVJMKEtVUkwoKSwgYmxvYlVSTFN0cmluZyk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogI2VuZGlmCisKICAgICB9CiAKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKaW5kZXggMTQ5ODEzNjZiM2VkNTU3
NGE2OWIwYjAzOWFkZDQwOTJmMmU4OWRjZi4uYTcwY2E3MGY4NmY3YzVlODljN2ViOWRmZTY4MWQ3
ZDY5OTNmMTk3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9G
b3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEu
aApAQCAtMzksMjUgKzM5LDMxIEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShCTE9CKQogICAgIEZv
cm1EYXRhRWxlbWVudChjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBsb25nIGxvbmcgZmlsZVN0YXJ0
LCBsb25nIGxvbmcgZmlsZUxlbmd0aCwgZG91YmxlIGV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRp
bWUsIGJvb2wgc2hvdWxkR2VuZXJhdGVGaWxlKSA6IG1fdHlwZShlbmNvZGVkRmlsZSksIG1fZmls
ZW5hbWUoZmlsZW5hbWUpLCBtX2ZpbGVTdGFydChmaWxlU3RhcnQpLCBtX2ZpbGVMZW5ndGgoZmls
ZUxlbmd0aCksIG1fZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZShleHBlY3RlZEZpbGVNb2Rp
ZmljYXRpb25UaW1lKSwgbV9zaG91bGRHZW5lcmF0ZUZpbGUoc2hvdWxkR2VuZXJhdGVGaWxlKSB7
IH0KLSAgICBleHBsaWNpdCBGb3JtRGF0YUVsZW1lbnQoY29uc3QgS1VSTCYgYmxvYlVSTCkgOiBt
X3R5cGUoZW5jb2RlZEJsb2IpLCBtX2Jsb2JVUkwoYmxvYlVSTCkgeyB9CisgICAgZXhwbGljaXQg
Rm9ybURhdGFFbGVtZW50KGNvbnN0IEtVUkwmIGJsb2JVUkwpIDogbV90eXBlKGVuY29kZWRCbG9i
KSwgbV91cmwoYmxvYlVSTCkgeyB9CiAjZWxzZQogICAgIEZvcm1EYXRhRWxlbWVudChjb25zdCBT
dHJpbmcmIGZpbGVuYW1lLCBib29sIHNob3VsZEdlbmVyYXRlRmlsZSkgOiBtX3R5cGUoZW5jb2Rl
ZEZpbGUpLCBtX2ZpbGVuYW1lKGZpbGVuYW1lKSwgbV9zaG91bGRHZW5lcmF0ZUZpbGUoc2hvdWxk
R2VuZXJhdGVGaWxlKSB7IH0KICNlbmRpZgorI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKKyAgICBG
b3JtRGF0YUVsZW1lbnQoY29uc3QgS1VSTCYgdXJsLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9u
ZyBsZW5ndGgsIGRvdWJsZSBleHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lKSA6IG1fdHlwZShl
bmNvZGVkVVJMKSwgbV91cmwodXJsKSwgbV9maWxlU3RhcnQoc3RhcnQpLCBtX2ZpbGVMZW5ndGgo
bGVuZ3RoKSwgbV9leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lKGV4cGVjdGVkRmlsZU1vZGlm
aWNhdGlvblRpbWUpLCBtX3Nob3VsZEdlbmVyYXRlRmlsZShmYWxzZSkgeyB9CisjZW5kaWYKIAot
ICAgIGVudW0geworICAgIGVudW0gVHlwZSB7CiAgICAgICAgIGRhdGEsCiAgICAgICAgIGVuY29k
ZWRGaWxlCiAjaWYgRU5BQkxFKEJMT0IpCiAgICAgICAgICwgZW5jb2RlZEJsb2IKICNlbmRpZgor
I2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKKyAgICAgICAgLCBlbmNvZGVkVVJMCisjZW5kaWYKICAg
ICB9IG1fdHlwZTsKICAgICBWZWN0b3I8Y2hhcj4gbV9kYXRhOwogICAgIFN0cmluZyBtX2ZpbGVu
YW1lOwogI2lmIEVOQUJMRShCTE9CKQorICAgIEtVUkwgbV91cmw7IC8vIEZvciBCbG9iIG9yIFVS
TC4KICAgICBsb25nIGxvbmcgbV9maWxlU3RhcnQ7CiAgICAgbG9uZyBsb25nIG1fZmlsZUxlbmd0
aDsKICAgICBkb3VibGUgbV9leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lOwotICAgIEtVUkwg
bV9ibG9iVVJMOwogI2VuZGlmCiAgICAgU3RyaW5nIG1fZ2VuZXJhdGVkRmlsZW5hbWU7CiAgICAg
Ym9vbCBtX3Nob3VsZEdlbmVyYXRlRmlsZTsKQEAgLTc2LDEwICs4MiwxNCBAQCBpbmxpbmUgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IEZvcm1EYXRhRWxlbWVudCYgYSwgY29uc3QgRm9ybURhdGFFbGVt
ZW50JiBiKQogI2lmIEVOQUJMRShCTE9CKQogICAgICAgICByZXR1cm4gYS5tX2ZpbGVuYW1lID09
IGIubV9maWxlbmFtZSAmJiBhLm1fZmlsZVN0YXJ0ID09IGIubV9maWxlU3RhcnQgJiYgYS5tX2Zp
bGVMZW5ndGggPT0gYi5tX2ZpbGVMZW5ndGggJiYgYS5tX2V4cGVjdGVkRmlsZU1vZGlmaWNhdGlv
blRpbWUgPT0gYi5tX2V4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWU7CiAgICAgaWYgKGEubV90
eXBlID09IEZvcm1EYXRhRWxlbWVudDo6ZW5jb2RlZEJsb2IpCi0gICAgICAgIHJldHVybiBhLm1f
YmxvYlVSTCA9PSBiLm1fYmxvYlVSTDsKKyAgICAgICAgcmV0dXJuIGEubV91cmwgPT0gYi5tX3Vy
bDsKICNlbHNlCiAgICAgICAgIHJldHVybiBhLm1fZmlsZW5hbWUgPT0gYi5tX2ZpbGVuYW1lOwog
I2VuZGlmCisjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQorICAgIGlmIChhLm1fdHlwZSA9PSBGb3Jt
RGF0YUVsZW1lbnQ6OmVuY29kZWRVUkwpCisgICAgICAgIHJldHVybiBhLm1fdXJsID09IGIubV91
cmw7CisjZW5kaWYKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTE1LDYgKzEyNSw4IEBAIHB1
YmxpYzoKICNpZiBFTkFCTEUoQkxPQikKICAgICB2b2lkIGFwcGVuZEZpbGVSYW5nZShjb25zdCBT
dHJpbmcmIGZpbGVuYW1lLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBsZW5ndGgsIGRvdWJs
ZSBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUsIGJvb2wgc2hvdWxkR2VuZXJhdGVGaWxlID0gZmFs
c2UpOwogICAgIHZvaWQgYXBwZW5kQmxvYihjb25zdCBLVVJMJiBibG9iVVJMKTsKKyAgICB2b2lk
IGFwcGVuZFVSTChjb25zdCBLVVJMJik7CisgICAgdm9pZCBhcHBlbmRVUkxSYW5nZShjb25zdCBL
VVJMJiwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgbGVuZ3RoLCBkb3VibGUgZXhwZWN0ZWRN
b2RpZmljYXRpb25UaW1lKTsKICNlbmRpZgogCiAgICAgdm9pZCBmbGF0dGVuKFZlY3RvcjxjaGFy
PiYpIGNvbnN0OyAvLyBvbWl0cyBmaWxlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViQmxvYkRhdGEuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
QmxvYkRhdGEuY3BwCmluZGV4IGM3NjdkMWJkZDM1MTc4Zjg2ZmM1OGE2Y2UwODBhMTJhMjcwMmQz
ZmIuLjA5NGZmODAxMzkxODczM2FjYjQyMmQ0ZTk4MDQyZTExYTY1MjM3ZDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkJsb2JEYXRhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJCbG9iRGF0YS5jcHAKQEAgLTgzLDcgKzgzLDEyIEBAIGJv
b2wgV2ViQmxvYkRhdGE6Oml0ZW1BdChzaXplX3QgaW5kZXgsIEl0ZW0mIHJlc3VsdCkgY29uc3QK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgY2FzZSBCbG9iRGF0YUl0ZW06OkJsb2I6CiAgICAg
ICAgIHJlc3VsdC50eXBlID0gSXRlbTo6VHlwZUJsb2I7Ci0gICAgICAgIHJlc3VsdC5ibG9iVVJM
ID0gaXRlbS51cmw7CisgICAgICAgIHJlc3VsdC5ibG9iVVJMID0gaXRlbS51cmw7IC8vIEZJWE1F
OiBkZXByZWNhdGUgdGhpcy4KKyAgICAgICAgcmVzdWx0LnVybCA9IGl0ZW0udXJsOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIEJsb2JEYXRhSXRlbTo6VVJMOgorICAgICAgICByZXN1
bHQudHlwZSA9IEl0ZW06OlR5cGVVUkw7CisgICAgICAgIHJlc3VsdC51cmwgPSBpdGVtLnVybDsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157729</attachid>
            <date>2012-08-10 06:31:51 -0700</date>
            <delta_ts>2012-08-10 09:43:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93706-20120810223123.patch</filename>
            <type>text/plain</type>
            <size>37851</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1MDc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA1NzFlMjk3MWRmYTYw
NjlkZGEzYTJkMmExMDE3ZDhiNGEzYjY2Yzg5Li5hZDIwNmRiMmNjYTFmZTE3Zjg3Yjk0ODY1Y2E1
MWRmMzRhMzEwZTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wOC0xMCAg
S2ludWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3VwcG9ydCBj
cmVhdGluZyBGaWxlIG9iamVjdCBmcm9tIEZpbGVTeXN0ZW0gVVJMIGZvciBmaWxlcyBpbiBGaWxl
U3lzdGVtIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTM3MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGNocm9taXVtL3B1YmxpYy9XZWJCbG9iRGF0YS5oOgorICAgICAgICAqIGNocm9taXVtL3B1
YmxpYy9XZWJIVFRQQm9keS5oOgorICAgICAgICAoV2ViSFRUUEJvZHkpOgorCiAyMDEyLTA4LTA4
ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVt
XSBVcHN0cmVhbSBhbmRyb2lkJ3MgRmxpbmdBbmltYXRvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGRmNzYyZDAz
ODAzZWFhNWE3ZWM4MTg0YTNkNDc3NDU5NTc5Y2Q3YzMuLjJkN2YxOTE0YTE5YWUwN2E4MTQ1N2Mx
YTI2ZjQwNDI0ZDE0OTZlMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1OCBAQAorMjAxMi0wOC0x
MCAgS2ludWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3VwcG9y
dCBjcmVhdGluZyBGaWxlIG9iamVjdCBmcm9tIEZpbGVTeXN0ZW0gVVJMIGZvciBmaWxlcyBpbiBG
aWxlU3lzdGVtIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTM3MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBDdXJyZW50IEZpbGUgY29kZSBhc3N1bWVzIHRoZSBleGlzdGVuY2Ugb2YgbG9jYWwgZmls
ZSAoaS5lLiByZXF1aXJlcyBhIHBsYXRmb3JtIGxvY2FsIGZpbGUgcGF0aCkgYnV0IGZvciBGaWxl
U3lzdGVtCisgICAgICAgIGZpbGVzIGl0IG1heSBub3QgYmUgYWx3YXlzIHRoZSBjYXNlLiBGb3Ig
ZXhhbXBsZSBzb21lIGltcGxlbWVudGF0aW9uIG1heSB3YW50IHRvIHVzZSBpbi1tZW1vcnkgZmls
ZXN5c3RlbSB0byByZWFsaXplCisgICAgICAgIHNhbmRib3hlZCBmaWxlc3lzdGVtLCBvciBvdGhl
cnMgbWF5IGhhdmUgdGhlIGZpbGVzeXN0ZW0gaW4gcmVtb3RlIHNlcnZlcnMuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBhZGRzIGJhc2ljIHN1cHBvcnQgZm9yIG1ha2luZyBGaWxlIG9iamVjdCBjb25z
dHJ1Y3RpYmxlIG5vdCBvbmx5IGZyb20gYSBmaWxlIHBhdGggYnV0IGZyb20gYSBGaWxlU3lzdGVt
IFVSTC4KKyAgICAgICAgU2luY2UgRmlsZSBjYW4gYmUgYXBwZW5kZWQgdG8gRm9ybURhdGEgb3Ig
aW5jbHVkZWQgaW4gYW5vdGhlciBCbG9iIHRoaXMgcGF0Y2ggYWxzbyBleHRlbmRzIEJsb2JEYXRh
IGFuZCBGb3JtRGF0YSB0byBzdXBwb3J0IFVSTC4KKworICAgICAgICBGaWxlQ2hvb3NlciBhbmQg
RHJhZy1hbmQtZHJvcCBjaGFuZ2VzIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhpcyBwYXRjaC4KKwor
ICAgICAgICBObyBuZXcgdGVzdHM6IHdpbGwgYWRkIHRlc3RzIHdoZW4gd2UgaW1wbGVtZW50IHRo
ZSBwbGF0Zm9ybSBzaWRlIGNoYW5nZXMgdG8gd2lyZSB0aGlzIGNoYW5nZS4KKworICAgICAgICAq
IE1vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRPTUZpbGVTeXN0ZW06OmNyZWF0ZUZpbGUpOgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3Rl
bS9ET01GaWxlU3lzdGVtU3luYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lzdGVt
U3luYzo6Y3JlYXRlRmlsZSk6CisgICAgICAgICogZmlsZWFwaS9CbG9iLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkJsb2I6OnNsaWNlSW50ZXJuYWwpOgorICAgICAgICAqIGZpbGVhcGkvRmlsZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVCbG9iRGF0YUZvckZpbGVTeXN0ZW1VUkwpOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZpbGU6OkZpbGUpOgorICAgICAgICAqIGZpbGVhcGkv
RmlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsZTo6Y3JlYXRlRm9yRmlsZVN5c3RlbUZpbGUp
OgorICAgICAgICAoV2ViQ29yZTo6RmlsZTo6ZmlsZVN5c3RlbVVSTCk6IEFkZGVkLgorICAgICAg
ICAqIGZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
S2l0QmxvYkJ1aWxkZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vc3Vw
cG9ydC9XZWJIVFRQQm9keS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkhUVFBCb2R5OjplbGVt
ZW50QXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJIVFRQQm9keTo6YXBwZW5kVVJMKTogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OldlYkhUVFBCb2R5OjphcHBlbmRVUkxSYW5nZSk6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJIVFRQQm9keTo6YXBwZW5kQmxvYik6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9CbG9iRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCbG9iRGF0YTo6
YXBwZW5kVVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhLmg6CisgICAg
ICAgIChCbG9iRGF0YUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6QmxvYkRhdGFJdGVtOjpCbG9i
RGF0YUl0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsOjphcHBlbmRTdG9yYWdlSXRl
bXMpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5SW1wbDo6cmVnaXN0ZXJCbG9iVVJM
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZvcm1EYXRhOjpkZWVwQ29weSk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6
YXBwZW5kVVJMKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6YXBwZW5kVVJM
UmFuZ2UpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhOjphcHBlbmRLZXlWYWx1
ZVBhaXJJdGVtcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9ybURhdGFFbGVtZW50OjpGb3JtRGF0YUVsZW1lbnQpOgorICAgICAg
ICAoRm9ybURhdGFFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPT0pOgorCiAy
MDEyLTA4LTA4ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFJFR1JFU1NJT04ocjEyNTA0Nik6IEJyZWFrcyBkZWJ1ZyBidWlsZCAoYXNzZXJ0aW9uIGlu
IHByb3RvY29sIHR5cGUgY2hlY2tzKSAoUmVxdWVzdGVkIGJ5IHBmZWxkbWFuIG9uICN3ZWJraXQp
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBhYWQ5NjZiMDI5NmUyZTM5Zjg3N2IwYjJm
NGJlMmYzYjNjNDUwZDI0Li4zNzM3Mjc3YWUzNTIxMjViYWUyYWRmMTg4MzdmMDViYTg5MTNjMTUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEyLTA4LTEw
ICBLaW51a28gWWFzdWRhICA8a2ludWtvQGNocm9taXVtLm9yZz4KKworICAgICAgICBTdXBwb3J0
IGNyZWF0aW5nIEZpbGUgb2JqZWN0IGZyb20gRmlsZVN5c3RlbSBVUkwgZm9yIGZpbGVzIGluIEZp
bGVTeXN0ZW0gQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05MzcwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogc3JjL1dlYkJsb2JEYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQmxvYkRhdGE6
Oml0ZW1BdCk6CisKIDIwMTItMDgtMDggIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBFbmFibGUgb2NjbHVzaW9uIHRyYWNrZXIgaW4gdGhl
IG9jY2x1c2lvbiB0ZXN0cyBmb3Igc3VyZmFjZSBjYWNoZWluZwpkaWZmIC0tZ2l0IGEvU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJCbG9iRGF0YS5oIGIvU291cmNlL1BsYXRmb3Jt
L2Nocm9taXVtL3B1YmxpYy9XZWJCbG9iRGF0YS5oCmluZGV4IDdmYTMyZDNiNjJjZGZjNDgxZDI0
ZDhkYWFjMzBkYjhhOTE0YjEzNDAuLmQyOTg4M2JjZjg5NTBhMjNlODVjY2Y4ZmIxNWFjNTE3MDM1
M2UwZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQmxv
YkRhdGEuaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkJsb2JEYXRh
LmgKQEAgLTQ3LDEzICs0NywxNiBAQCBjbGFzcyBXZWJCbG9iRGF0YVByaXZhdGU7CiBjbGFzcyBX
ZWJCbG9iRGF0YSB7CiBwdWJsaWM6CiAgICAgc3RydWN0IEl0ZW0gewotICAgICAgICBlbnVtIHsg
VHlwZURhdGEsIFR5cGVGaWxlLCBUeXBlQmxvYiB9IHR5cGU7CisgICAgICAgIGVudW0geyBUeXBl
RGF0YSwgVHlwZUZpbGUsIFR5cGVCbG9iLCBUeXBlVVJMIH0gdHlwZTsKICAgICAgICAgV2ViVGhy
ZWFkU2FmZURhdGEgZGF0YTsKICAgICAgICAgV2ViU3RyaW5nIGZpbGVQYXRoOwotICAgICAgICBX
ZWJVUkwgYmxvYlVSTDsKKyAgICAgICAgV2ViVVJMIHVybDsgLy8gRm9yIEJsb2Igb3IgVVJMLgog
ICAgICAgICBsb25nIGxvbmcgb2Zmc2V0OwogICAgICAgICBsb25nIGxvbmcgbGVuZ3RoOyAvLyAt
MSBtZWFucyBnbyB0byB0aGUgZW5kIG9mIHRoZSBmaWxlL2Jsb2IuCiAgICAgICAgIGRvdWJsZSBl
eHBlY3RlZE1vZGlmaWNhdGlvblRpbWU7IC8vIDAuMCBtZWFucyB0aGF0IHRoZSB0aW1lIGlzIG5v
dCBzZXQuCisKKyAgICAgICAgLy8gRklYTUU6IGRlcHJlY2F0ZSB0aGlzLgorICAgICAgICBXZWJV
UkwgYmxvYlVSTDsKICAgICB9OwogCiAgICAgfldlYkJsb2JEYXRhKCkgeyByZXNldCgpOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkhUVFBCb2R5Lmgg
Yi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkhUVFBCb2R5LmgKaW5kZXggNWM2
Mzg2MDJhZTM4Nzk5NjY5YmIyYTU3N2E0YzdlMWM3NzUxNDJiMi4uOGRhNGY1NmQ3NDc5YjNmZDhj
OWY5MDViMDNhMjVlNjIzY2ZkNWM1NiAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9t
aXVtL3B1YmxpYy9XZWJIVFRQQm9keS5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViSFRUUEJvZHkuaApAQCAtNDgsMTIgKzQ4LDE1IEBAIGNsYXNzIFdlYkhUVFBCb2R5
UHJpdmF0ZTsKIGNsYXNzIFdlYkhUVFBCb2R5IHsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgRWxlbWVu
dCB7Ci0gICAgICAgIGVudW0gVHlwZSB7IFR5cGVEYXRhLCBUeXBlRmlsZSwgVHlwZUJsb2IgfSB0
eXBlOworICAgICAgICBlbnVtIFR5cGUgeyBUeXBlRGF0YSwgVHlwZUZpbGUsIFR5cGVCbG9iLCBU
eXBlVVJMIH0gdHlwZTsKICAgICAgICAgV2ViRGF0YSBkYXRhOwogICAgICAgICBXZWJTdHJpbmcg
ZmlsZVBhdGg7CiAgICAgICAgIGxvbmcgbG9uZyBmaWxlU3RhcnQ7CiAgICAgICAgIGxvbmcgbG9u
ZyBmaWxlTGVuZ3RoOyAvLyAtMSBtZWFucyB0byB0aGUgZW5kIG9mIHRoZSBmaWxlLgogICAgICAg
ICBkb3VibGUgbW9kaWZpY2F0aW9uVGltZTsKKyAgICAgICAgV2ViVVJMIHVybDsgLy8gRm9yIEJs
b2Igb3IgVVJMIHR5cGUuCisKKyAgICAgICAgLy8gRklYTUU6IGRlcHJlY2F0ZSB0aGlzLgogICAg
ICAgICBXZWJVUkwgYmxvYlVSTDsKICAgICB9OwogCkBAIC04Nyw2ICs5MCw5IEBAIHB1YmxpYzoK
ICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXBwZW5kRmlsZVJhbmdlKGNvbnN0IFdlYlN0cmluZyYs
IGxvbmcgbG9uZyBmaWxlU3RhcnQsIGxvbmcgbG9uZyBmaWxlTGVuZ3RoLCBkb3VibGUgbW9kaWZp
Y2F0aW9uVGltZSk7CiAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFwcGVuZEJsb2IoY29uc3QgV2Vi
VVJMJik7CiAKKyAgICAvLyBBcHBlbmQgYSByZXNvdXJjZSB3aGljaCBpcyBpZGVudGlmaWVkIGJ5
IFVSTC4gQ3VycmVudGx5IHdlIG9ubHkgc3VwcG9ydCBGaWxlU3lzdGVtIFVSTC4KKyAgICBXRUJL
SVRfRVhQT1JUIHZvaWQgYXBwZW5kVVJMUmFuZ2UoY29uc3QgV2ViVVJMJiwgbG9uZyBsb25nIHN0
YXJ0LCBsb25nIGxvbmcgbGVuZ3RoLCBkb3VibGUgbW9kaWZpY2F0aW9uVGltZSk7CisKICAgICAv
LyBJZGVudGlmaWVzIGEgcGFydGljdWxhciBmb3JtIHN1Ym1pc3Npb24gaW5zdGFuY2UuIEEgdmFs
dWUgb2YgMCBpcwogICAgIC8vIHVzZWQgdG8gaW5kaWNhdGUgYW4gdW5zcGVjaWZpZWQgaWRlbnRp
Zmllci4KICAgICBXRUJLSVRfRVhQT1JUIGxvbmcgbG9uZyBpZGVudGlmaWVyKCkgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3Rl
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbS5j
cHAKaW5kZXggNTBiNTE4NTlkZDAyMzY5MjNkNDQ3NGFlNzdhMzIwNTExODdmNmNlOS4uNGU4ZWQ0
YjQxOTI0NmMwMjUxOTBiZWE5ZWFlZTc3MWEwZDExODU5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtLmNwcApAQCAtMTUwLDkgKzE1
MCw5IEBAIG5hbWVzcGFjZSB7CiAKIGNsYXNzIEdldE1ldGFkYXRhQ2FsbGJhY2sgOiBwdWJsaWMg
RmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2UgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRy
PEdldE1ldGFkYXRhQ2FsbGJhY2s+IGNyZWF0ZShQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IGZp
bGVzeXN0ZW0sIGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxGaWxlQ2FsbGJhY2s+IHN1
Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPEdldE1ldGFkYXRhQ2FsbGJhY2s+IGNyZWF0ZShQYXNzUmVm
UHRyPERPTUZpbGVTeXN0ZW0+IGZpbGVzeXN0ZW0sIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
S1VSTCYgdXJsLCBQYXNzUmVmUHRyPEZpbGVDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNz
UmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRQdHIobmV3IEdldE1ldGFkYXRhQ2FsbGJhY2soZmlsZXN5c3RlbSwgbmFtZSwgc3Vj
Y2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSk7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgR2V0TWV0YWRhdGFDYWxsYmFjayhmaWxlc3lzdGVtLCBuYW1lLCB1cmwsIHN1Y2Nlc3NDYWxs
YmFjaywgZXJyb3JDYWxsYmFjaykpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFk
TWV0YWRhdGEoY29uc3QgRmlsZU1ldGFkYXRhJiBtZXRhZGF0YSkKQEAgLTE2MywyNSArMTYzLDM0
IEBAIHB1YmxpYzoKIAogICAgICAgICAvLyBGb3IgcmVndWxhciBmaWxlc3lzdGVtIHR5cGVzICh0
ZW1wb3Jhcnkgb3IgcGVyc2lzdGVudCksIHdlIHNob3VsZCBub3QgY2FjaGUgZmlsZSBtZXRhZGF0
YSBhcyBpdCBjb3VsZCBjaGFuZ2UgRmlsZSBzZW1hbnRpY3MuCiAgICAgICAgIC8vIEZvciBvdGhl
ciBmaWxlc3lzdGVtIHR5cGVzICh3aGljaCBjb3VsZCBiZSBwbGF0Zm9ybS1zcGVjaWZpYyBvbmVz
KSwgdGhlcmUncyBhIGNoYW5jZSB0aGF0IHRoZSBmaWxlcyBhcmUgb24gcmVtb3RlIGZpbGVzeXN0
ZW0uIElmIHRoZSBwb3J0IGhhcyByZXR1cm5lZCBtZXRhZGF0YSBqdXN0IHBhc3MgaXQgdG8gRmls
ZSBjb25zdHJ1Y3RvciAoc28gd2UgbWF5IGNhY2hlIHRoZSBtZXRhZGF0YSkuCi0gICAgICAgIGlm
IChtX2ZpbGVzeXN0ZW0tPnR5cGUoKSA9PSBGaWxlU3lzdGVtVHlwZVRlbXBvcmFyeSB8fCBtX2Zp
bGVzeXN0ZW0tPnR5cGUoKSA9PSBGaWxlU3lzdGVtVHlwZVBlcnNpc3RlbnQpCisgICAgICAgIC8v
IEZJWE1FOiBXZSBzaG91bGQgdXNlIHRoZSBzbmFwc2hvdCBtZXRhZGF0YSBmb3IgYWxsIGZpbGVz
LgorICAgICAgICAvLyBodHRwczovL3d3dy53My5vcmcvQnVncy9QdWJsaWMvc2hvd19idWcuY2dp
P2lkPTE3NzQ2CisgICAgICAgIGlmIChtX2ZpbGVzeXN0ZW0tPnR5cGUoKSA9PSBGaWxlU3lzdGVt
VHlwZVRlbXBvcmFyeSB8fCBtX2ZpbGVzeXN0ZW0tPnR5cGUoKSA9PSBGaWxlU3lzdGVtVHlwZVBl
cnNpc3RlbnQpIHsKICAgICAgICAgICAgIG1fc3VjY2Vzc0NhbGxiYWNrLT5oYW5kbGVFdmVudChG
aWxlOjpjcmVhdGVXaXRoTmFtZShtZXRhZGF0YS5wbGF0Zm9ybVBhdGgsIG1fbmFtZSkuZ2V0KCkp
OwotICAgICAgICBlbHNlCisgICAgICAgIH0gZWxzZSBpZiAoIW1ldGFkYXRhLnBsYXRmb3JtUGF0
aC5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIC8vIElmIHRoZSBwbGF0Zm9ybVBhdGggaW4gdGhl
IHJldHVybmVkIG1ldGFkYXRhIGlzIGdpdmVuLCB3ZSBjcmVhdGUgYSBGaWxlIG9iamVjdCBmb3Ig
dGhlIHBhdGguCiAgICAgICAgICAgICBtX3N1Y2Nlc3NDYWxsYmFjay0+aGFuZGxlRXZlbnQoRmls
ZTo6Y3JlYXRlRm9yRmlsZVN5c3RlbUZpbGUobV9uYW1lLCBtZXRhZGF0YSkuZ2V0KCkpOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gT3RoZXJ3aXNlIGNyZWF0ZSBhIEZpbGUgZnJv
bSB0aGUgRmlsZVN5c3RlbSBVUkwuCisgICAgICAgICAgICBtX3N1Y2Nlc3NDYWxsYmFjay0+aGFu
ZGxlRXZlbnQoRmlsZTo6Y3JlYXRlRm9yRmlsZVN5c3RlbUZpbGUobV91cmwsIG1ldGFkYXRhKS5n
ZXQoKSk7CisgICAgICAgIH0KIAogICAgICAgICBtX3N1Y2Nlc3NDYWxsYmFjay5yZWxlYXNlKCk7
CiAgICAgfQogCiBwcml2YXRlOgotICAgIEdldE1ldGFkYXRhQ2FsbGJhY2soUGFzc1JlZlB0cjxE
T01GaWxlU3lzdGVtPiBmaWxlc3lzdGVtLCBjb25zdCBTdHJpbmcmIG5hbWUsICBQYXNzUmVmUHRy
PEZpbGVDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+
IGVycm9yQ2FsbGJhY2spCisgICAgR2V0TWV0YWRhdGFDYWxsYmFjayhQYXNzUmVmUHRyPERPTUZp
bGVTeXN0ZW0+IGZpbGVzeXN0ZW0sIGNvbnN0IFN0cmluZyYgbmFtZSwgIGNvbnN0IEtVUkwmIHVy
bCwgUGFzc1JlZlB0cjxGaWxlQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxF
cnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQogICAgICAgICA6IEZpbGVTeXN0ZW1DYWxsYmFj
a3NCYXNlKGVycm9yQ2FsbGJhY2spCiAgICAgICAgICwgbV9maWxlc3lzdGVtKGZpbGVzeXN0ZW0p
CiAgICAgICAgICwgbV9uYW1lKG5hbWUpCisgICAgICAgICwgbV91cmwodXJsKQogICAgICAgICAs
IG1fc3VjY2Vzc0NhbGxiYWNrKHN1Y2Nlc3NDYWxsYmFjaykKICAgICB7CiAgICAgfQogCiAgICAg
UmVmUHRyPERPTUZpbGVTeXN0ZW0+IG1fZmlsZXN5c3RlbTsKICAgICBTdHJpbmcgbV9uYW1lOwor
ICAgIEtVUkwgbV91cmw7CiAgICAgUmVmUHRyPEZpbGVDYWxsYmFjaz4gbV9zdWNjZXNzQ2FsbGJh
Y2s7CiB9OwogCkBAIC0xODksNyArMTk4LDggQEAgcHJpdmF0ZToKIAogdm9pZCBET01GaWxlU3lz
dGVtOjpjcmVhdGVGaWxlKGNvbnN0IEZpbGVFbnRyeSogZmlsZUVudHJ5LCBQYXNzUmVmUHRyPEZp
bGVDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVy
cm9yQ2FsbGJhY2spCiB7Ci0gICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmNyZWF0ZVNuYXBzaG90Rmls
ZUFuZFJlYWRNZXRhZGF0YShjcmVhdGVGaWxlU3lzdGVtVVJMKGZpbGVFbnRyeSksIEdldE1ldGFk
YXRhQ2FsbGJhY2s6OmNyZWF0ZSh0aGlzLCBmaWxlRW50cnktPm5hbWUoKSwgc3VjY2Vzc0NhbGxi
YWNrLCBlcnJvckNhbGxiYWNrKSk7CisgICAgS1VSTCBmaWxlU3lzdGVtVVJMID0gY3JlYXRlRmls
ZVN5c3RlbVVSTChmaWxlRW50cnkpOworICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5jcmVhdGVTbmFw
c2hvdEZpbGVBbmRSZWFkTWV0YWRhdGEoZmlsZVN5c3RlbVVSTCwgR2V0TWV0YWRhdGFDYWxsYmFj
azo6Y3JlYXRlKHRoaXMsIGZpbGVFbnRyeS0+bmFtZSgpLCBmaWxlU3lzdGVtVVJMLCBzdWNjZXNz
Q2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0
ZW1TeW5jLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lz
dGVtU3luYy5jcHAKaW5kZXggYmMzNmNhZWRkYzdkZmE5Njc3MTEwOTJiMDNkZTU4NDYwNzA2NjI4
YS4uZGFkNDMyZjI0N2FmOWFkZTE0OWIxNmNjMTY0Zjg3Njk3YjBlNWNiZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1TeW5jLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbVN5bmMu
Y3BwCkBAIC05OCw5ICs5OCw5IEBAIHB1YmxpYzoKICAgICAgICAgZnJpZW5kIGNsYXNzIFdURjo6
UmVmQ291bnRlZDxDcmVhdGVGaWxlUmVzdWx0PjsKICAgICB9OwogCi0gICAgc3RhdGljIFBhc3NP
d25QdHI8Q3JlYXRlRmlsZUhlbHBlcj4gY3JlYXRlKFBhc3NSZWZQdHI8Q3JlYXRlRmlsZVJlc3Vs
dD4gcmVzdWx0LCBjb25zdCBTdHJpbmcmIG5hbWUsIEZpbGVTeXN0ZW1UeXBlIHR5cGUpCisgICAg
c3RhdGljIFBhc3NPd25QdHI8Q3JlYXRlRmlsZUhlbHBlcj4gY3JlYXRlKFBhc3NSZWZQdHI8Q3Jl
YXRlRmlsZVJlc3VsdD4gcmVzdWx0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IEtVUkwmIHVy
bCwgRmlsZVN5c3RlbVR5cGUgdHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgQ3JlYXRlRmlsZUhlbHBlcihyZXN1bHQsIG5hbWUsIHR5cGUpKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBDcmVhdGVGaWxlSGVscGVyKHJlc3VsdCwgbmFtZSwgdXJsLCB0eXBlKSk7
CiAgICAgfQogCiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoaW50IGNvZGUpCkBAIC0xMTcsMjEg
KzExNywzMCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICAvLyBGb3IgcmVndWxhciBmaWxlc3lz
dGVtIHR5cGVzICh0ZW1wb3Jhcnkgb3IgcGVyc2lzdGVudCksIHdlIHNob3VsZCBub3QgY2FjaGUg
ZmlsZSBtZXRhZGF0YSBhcyBpdCBjb3VsZCBjaGFuZ2UgRmlsZSBzZW1hbnRpY3MuCiAgICAgICAg
IC8vIEZvciBvdGhlciBmaWxlc3lzdGVtIHR5cGVzICh3aGljaCBjb3VsZCBiZSBwbGF0Zm9ybS1z
cGVjaWZpYyBvbmVzKSwgdGhlcmUncyBhIGNoYW5jZSB0aGF0IHRoZSBmaWxlcyBhcmUgb24gcmVt
b3RlIGZpbGVzeXN0ZW0uIElmIHRoZSBwb3J0IGhhcyByZXR1cm5lZCBtZXRhZGF0YSBqdXN0IHBh
c3MgaXQgdG8gRmlsZSBjb25zdHJ1Y3RvciAoc28gd2UgbWF5IGNhY2hlIHRoZSBtZXRhZGF0YSku
Ci0gICAgICAgIGlmIChtX3R5cGUgPT0gRmlsZVN5c3RlbVR5cGVUZW1wb3JhcnkgfHwgbV90eXBl
ID09IEZpbGVTeXN0ZW1UeXBlUGVyc2lzdGVudCkKKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3Vs
ZCB1c2UgdGhlIHNuYXBzaG90IG1ldGFkYXRhIGZvciBhbGwgZmlsZXMuCisgICAgICAgIC8vIGh0
dHBzOi8vd3d3LnczLm9yZy9CdWdzL1B1YmxpYy9zaG93X2J1Zy5jZ2k/aWQ9MTc3NDYKKyAgICAg
ICAgaWYgKG1fdHlwZSA9PSBGaWxlU3lzdGVtVHlwZVRlbXBvcmFyeSB8fCBtX3R5cGUgPT0gRmls
ZVN5c3RlbVR5cGVQZXJzaXN0ZW50KSB7CiAgICAgICAgICAgICBtX3Jlc3VsdC0+bV9maWxlID0g
RmlsZTo6Y3JlYXRlV2l0aE5hbWUobWV0YWRhdGEucGxhdGZvcm1QYXRoLCBtX25hbWUpOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jlc3VsdC0+bV9maWxlID0gRmlsZTo6Y3JlYXRlRm9y
RmlsZVN5c3RlbUZpbGUobV9uYW1lLCBtZXRhZGF0YSk7CisgICAgICAgIH0gZWxzZSBpZiAoIW1l
dGFkYXRhLnBsYXRmb3JtUGF0aC5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIC8vIElmIHRoZSBw
bGF0Zm9ybVBhdGggaW4gdGhlIHJldHVybmVkIG1ldGFkYXRhIGlzIGdpdmVuLCB3ZSBjcmVhdGUg
YSBGaWxlIG9iamVjdCBmb3IgdGhlIHBhdGguCisgICAgICAgICAgICBtX3Jlc3VsdC0+bV9maWxl
ID0gRmlsZTo6Y3JlYXRlRm9yRmlsZVN5c3RlbUZpbGUobV9uYW1lLCBtZXRhZGF0YSkuZ2V0KCk7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBPdGhlcndpc2UgY3JlYXRlIGEgRmls
ZSBmcm9tIHRoZSBGaWxlU3lzdGVtIFVSTC4KKyAgICAgICAgICAgIG1fcmVzdWx0LT5tX2ZpbGUg
PSBGaWxlOjpjcmVhdGVGb3JGaWxlU3lzdGVtRmlsZShtX3VybCwgbWV0YWRhdGEpLmdldCgpOwor
ICAgICAgICB9CiAgICAgfQogcHJpdmF0ZToKLSAgICBDcmVhdGVGaWxlSGVscGVyKFBhc3NSZWZQ
dHI8Q3JlYXRlRmlsZVJlc3VsdD4gcmVzdWx0LCBjb25zdCBTdHJpbmcmIG5hbWUsIEZpbGVTeXN0
ZW1UeXBlIHR5cGUpCisgICAgQ3JlYXRlRmlsZUhlbHBlcihQYXNzUmVmUHRyPENyZWF0ZUZpbGVS
ZXN1bHQ+IHJlc3VsdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBLVVJMJiB1cmwsIEZpbGVT
eXN0ZW1UeXBlIHR5cGUpCiAgICAgICAgIDogbV9yZXN1bHQocmVzdWx0KQogICAgICAgICAsIG1f
bmFtZShuYW1lKQorICAgICAgICAsIG1fdXJsKHVybCkKICAgICAgICAgLCBtX3R5cGUodHlwZSkK
ICAgICB7CiAgICAgfQogCiAgICAgUmVmUHRyPENyZWF0ZUZpbGVSZXN1bHQ+IG1fcmVzdWx0Owog
ICAgIFN0cmluZyBtX25hbWU7CisgICAgS1VSTCBtX3VybDsKICAgICBGaWxlU3lzdGVtVHlwZSBt
X3R5cGU7CiB9OwogCkBAIC0xNDAsOCArMTQ5LDkgQEAgcHJpdmF0ZToKIFBhc3NSZWZQdHI8Rmls
ZT4gRE9NRmlsZVN5c3RlbVN5bmM6OmNyZWF0ZUZpbGUoY29uc3QgRmlsZUVudHJ5U3luYyogZmls
ZUVudHJ5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBlYyA9IDA7CisgICAgS1VSTCBmaWxl
U3lzdGVtVVJMID0gY3JlYXRlRmlsZVN5c3RlbVVSTChmaWxlRW50cnkpOwogICAgIFJlZlB0cjxD
cmVhdGVGaWxlSGVscGVyOjpDcmVhdGVGaWxlUmVzdWx0PiByZXN1bHQoQ3JlYXRlRmlsZUhlbHBl
cjo6Q3JlYXRlRmlsZVJlc3VsdDo6Y3JlYXRlKCkpOwotICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5j
cmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRhdGEoY3JlYXRlRmlsZVN5c3RlbVVSTChmaWxl
RW50cnkpLCBDcmVhdGVGaWxlSGVscGVyOjpjcmVhdGUocmVzdWx0LCBmaWxlRW50cnktPm5hbWUo
KSwgdHlwZSgpKSk7CisgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmNyZWF0ZVNuYXBzaG90RmlsZUFu
ZFJlYWRNZXRhZGF0YShmaWxlU3lzdGVtVVJMLCBDcmVhdGVGaWxlSGVscGVyOjpjcmVhdGUocmVz
dWx0LCBmaWxlRW50cnktPm5hbWUoKSwgZmlsZVN5c3RlbVVSTCwgdHlwZSgpKSk7CiAgICAgaWYg
KCFtX2FzeW5jRmlsZVN5c3RlbS0+d2FpdEZvck9wZXJhdGlvblRvQ29tcGxldGUoKSkgewogICAg
ICAgICBlYyA9IEZpbGVFeGNlcHRpb246OkFCT1JUX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9CbG9iLmNwcAppbmRleCBkMWRjYjUxYWIwMTU2Y2U4ZmE4OTBkZjM3MGM1N2Yw
MzUyYzQ0MDNjLi4xYjkwNzEyMjI3ODkzMzBjYjJmZjJhMDhhODUzMGM3Zjg1MjNjMzk3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvQmxvYi5jcHAKQEAgLTEzNyw5ICsxMzcsMTQgQEAgUGFzc1JlZlB0cjxCbG9i
PiBCbG9iOjpzbGljZUludGVybmFsKGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCwgY29u
c3QgU3RyaW4KICAgICBsb25nIGxvbmcgbGVuZ3RoID0gZW5kIC0gc3RhcnQ7CiAgICAgT3duUHRy
PEJsb2JEYXRhPiBibG9iRGF0YSA9IEJsb2JEYXRhOjpjcmVhdGUoKTsKICAgICBibG9iRGF0YS0+
c2V0Q29udGVudFR5cGUoY29udGVudFR5cGUpOwotICAgIGlmIChpc0ZpbGUoKSkKKyAgICBpZiAo
aXNGaWxlKCkpIHsKKyNpZiBFTkFCTEUoRklMRV9TWVNURU0pCisgICAgICAgIGlmICghdG9GaWxl
KHRoaXMpLT5maWxlU3lzdGVtVVJMKCkuaXNFbXB0eSgpKQorICAgICAgICAgICAgYmxvYkRhdGEt
PmFwcGVuZFVSTCh0b0ZpbGUodGhpcyktPmZpbGVTeXN0ZW1VUkwoKSwgc3RhcnQsIGxlbmd0aCwg
bW9kaWZpY2F0aW9uVGltZSk7CisgICAgICAgIGVsc2UKKyNlbmRpZgogICAgICAgICBibG9iRGF0
YS0+YXBwZW5kRmlsZSh0b0ZpbGUodGhpcyktPnBhdGgoKSwgc3RhcnQsIGxlbmd0aCwgbW9kaWZp
Y2F0aW9uVGltZSk7Ci0gICAgZWxzZQorICAgIH0gZWxzZQogICAgICAgICBibG9iRGF0YS0+YXBw
ZW5kQmxvYihtX2ludGVybmFsVVJMLCBzdGFydCwgbGVuZ3RoKTsKIAogICAgIHJldHVybiBCbG9i
OjpjcmVhdGUoYmxvYkRhdGEucmVsZWFzZSgpLCBsZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5j
cHAKaW5kZXggMDg3ODk1NzEwMDgzYTA2ZjFkODFhOTQxZTdjMjllMmZiZjI0YjcwOS4uNjkyYmRl
MWFjYTBhZDdjMTYxYzRkM2Y0OGVkMjEzNmEzYTUyYWRjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9GaWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUu
Y3BwCkBAIC03NSw2ICs3NSwxNCBAQCBzdGF0aWMgUGFzc093blB0cjxCbG9iRGF0YT4gY3JlYXRl
QmxvYkRhdGFGb3JGaWxlV2l0aE1ldGFkYXRhKGNvbnN0IFN0cmluZyYgZmlsZQogICAgIGJsb2JE
YXRhLT5hcHBlbmRGaWxlKG1ldGFkYXRhLnBsYXRmb3JtUGF0aCwgMCwgbWV0YWRhdGEubGVuZ3Ro
LCBtZXRhZGF0YS5tb2RpZmljYXRpb25UaW1lKTsKICAgICByZXR1cm4gYmxvYkRhdGEucmVsZWFz
ZSgpOwogfQorCitzdGF0aWMgUGFzc093blB0cjxCbG9iRGF0YT4gY3JlYXRlQmxvYkRhdGFGb3JG
aWxlU3lzdGVtVVJMKGNvbnN0IEtVUkwmIGZpbGVTeXN0ZW1VUkwsIGNvbnN0IEZpbGVNZXRhZGF0
YSYgbWV0YWRhdGEpCit7CisgICAgT3duUHRyPEJsb2JEYXRhPiBibG9iRGF0YSA9IEJsb2JEYXRh
OjpjcmVhdGUoKTsKKyAgICBibG9iRGF0YS0+c2V0Q29udGVudFR5cGUoZ2V0Q29udGVudFR5cGVG
cm9tRmlsZU5hbWUoZmlsZVN5c3RlbVVSTC5wYXRoKCksIEZpbGU6OldlbGxLbm93bkNvbnRlbnRU
eXBlcykpOworICAgIGJsb2JEYXRhLT5hcHBlbmRVUkwoZmlsZVN5c3RlbVVSTCwgMCwgbWV0YWRh
dGEubGVuZ3RoLCBtZXRhZGF0YS5tb2RpZmljYXRpb25UaW1lKTsKKyAgICByZXR1cm4gYmxvYkRh
dGEucmVsZWFzZSgpOworfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoRElSRUNUT1JZX1VQTE9BRCkK
QEAgLTEzMSw2ICsxMzksMTQgQEAgRmlsZTo6RmlsZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IEZpbGVNZXRhZGF0YSYgbWV0YWRhdGEpCiAgICAgLCBtX3NuYXBzaG90TW9kaWZpY2F0aW9uVGlt
ZShtZXRhZGF0YS5tb2RpZmljYXRpb25UaW1lKQogewogfQorCitGaWxlOjpGaWxlKGNvbnN0IEtV
UkwmIGZpbGVTeXN0ZW1VUkwsIGNvbnN0IEZpbGVNZXRhZGF0YSYgbWV0YWRhdGEpCisgICAgOiBC
bG9iKGNyZWF0ZUJsb2JEYXRhRm9yRmlsZVN5c3RlbVVSTChmaWxlU3lzdGVtVVJMLCBtZXRhZGF0
YSksIG1ldGFkYXRhLmxlbmd0aCkKKyAgICAsIG1fZmlsZVN5c3RlbVVSTChmaWxlU3lzdGVtVVJM
KQorICAgICwgbV9zbmFwc2hvdFNpemUobWV0YWRhdGEubGVuZ3RoKQorICAgICwgbV9zbmFwc2hv
dE1vZGlmaWNhdGlvblRpbWUobWV0YWRhdGEubW9kaWZpY2F0aW9uVGltZSkKK3sKK30KICNlbmRp
ZgogCiBkb3VibGUgRmlsZTo6bGFzdE1vZGlmaWVkRGF0ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmls
ZS5oCmluZGV4IDg2NGM0Mzg4YWU5M2M5ZGIyYjkxMWJjNGM5ODQ4NjAwZDFlMjM4NzEuLmI5MTU5
MDJkNDllZTc3MGQ1ODY3MTZlZmFmNTE3ZGY4NTUyNmNiMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5o
CkBAIC02OCw2ICs2OCwxMyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEZpbGUobmFtZSwgbWV0YWRhdGEpKTsKICAgICB9CisKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxGaWxlPiBjcmVhdGVGb3JGaWxlU3lzdGVtRmlsZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0
IEZpbGVNZXRhZGF0YSYgbWV0YWRhdGEpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEZpbGUodXJsLCBtZXRhZGF0YSkpOworICAgIH0KKworICAgIEtVUkwgZmlsZVN5c3RlbVVS
TCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsZVN5c3RlbVVSTDsgfQogI2VuZGlmCiAKICAgICAvLyBD
cmVhdGUgYSBmaWxlIHdpdGggYSBuYW1lIGV4cG9zZWQgdG8gdGhlIGF1dGhvciAodmlhIEZpbGUu
bmFtZSBhbmQgYXNzb2NpYXRlZCBET00gcHJvcGVydGllcykgdGhhdCBkaWZmZXJzIGZyb20gdGhl
IG9uZSBwcm92aWRlZCBpbiB0aGUgcGF0aC4KQEAgLTEwNCw2ICsxMTEsNyBAQCBwcml2YXRlOgog
CiAjIGlmIEVOQUJMRShGSUxFX1NZU1RFTSkKICAgICBGaWxlKGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgRmlsZU1ldGFkYXRhJik7CisgICAgRmlsZShjb25zdCBLVVJMJiBmaWxlU3lzdGVtVVJM
LCBjb25zdCBGaWxlTWV0YWRhdGEmKTsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIGhh
cyBhIHZhbGlkIHNuYXBzaG90IG1ldGFkYXRhIChpLmUuIG1fc25hcHNob3RTaXplID49IDApLgog
ICAgIGJvb2wgaGFzVmFsaWRTbmFwc2hvdE1ldGFkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9zbmFw
c2hvdFNpemUgPj0gMDsgfQpAQCAtMTEzLDYgKzEyMSw4IEBAIHByaXZhdGU6CiAgICAgU3RyaW5n
IG1fbmFtZTsKIAogI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKKyAgICBLVVJMIG1fZmlsZVN5c3Rl
bVVSTDsKKwogICAgIC8vIElmIG1fc25hcHNob3RTaXplIGlzIG5lZ2F0aXZlIChpbml0aWFsaXpl
ZCB0byAtMSBieSBkZWZhdWx0KSwgdGhlIHNuYXBzaG90IG1ldGFkYXRhIGlzIGludmFsaWQgYW5k
IHdlIHJldHJpZXZlIHRoZSBsYXRlc3QgbWV0YWRhdGEgc3luY2hyb25vdXNseSBpbiBzaXplKCks
IGxhc3RNb2RpZmllZFRpbWUoKSBhbmQgd2Via2l0U2xpY2UoKS4KICAgICAvLyBPdGhlcndpc2Us
IHRoZSBzbmFwc2hvdCBtZXRhZGF0YSBhcmUgdXNlZCBkaXJlY3RseSBpbiB0aG9zZSBtZXRob2Rz
LgogICAgIGNvbnN0IGxvbmcgbG9uZyBtX3NuYXBzaG90U2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRlci5jcHAKaW5kZXggNWM1NGM0YjZmMmMyM2JlNjFiODc4
Yzc2ZDFiOGMxMThhZmJlOWFjNS4uZmMyNzA1ZGU4N2JhYTgzODc4YjAwMDQyZTU4NTI0ZTg4N2Zl
M2RjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRlci5jcHAK
QEAgLTE0MSw2ICsxNDEsMTEgQEAgdm9pZCBXZWJLaXRCbG9iQnVpbGRlcjo6YXBwZW5kKEJsb2Iq
IGJsb2IpCiAgICAgICAgIGZpbGUtPmNhcHR1cmVTbmFwc2hvdChzbmFwc2hvdFNpemUsIHNuYXBz
aG90TW9kaWZpY2F0aW9uVGltZSk7CiAKICAgICAgICAgbV9zaXplICs9IHNuYXBzaG90U2l6ZTsK
KyNpZiBFTkFCTEUoRklMRV9TWVNURU0pCisgICAgICAgIGlmICghZmlsZS0+ZmlsZVN5c3RlbVVS
TCgpLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIG1faXRlbXMuYXBwZW5kKEJsb2JEYXRhSXRlbShm
aWxlLT5maWxlU3lzdGVtVVJMKCksIDAsIHNuYXBzaG90U2l6ZSwgc25hcHNob3RNb2RpZmljYXRp
b25UaW1lKSk7CisgICAgICAgIGVsc2UKKyNlbmRpZgogICAgICAgICBtX2l0ZW1zLmFwcGVuZChC
bG9iRGF0YUl0ZW0oZmlsZS0+cGF0aCgpLCAwLCBzbmFwc2hvdFNpemUsIHNuYXBzaG90TW9kaWZp
Y2F0aW9uVGltZSkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGxvbmcgbG9uZyBibG9iU2l6ZSA9
IHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oYmxvYi0+c2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViSFRUUEJvZHkuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJIVFRQQm9keS5jcHAKaW5k
ZXggNDBiMGZjZDI2YmM4YzhkN2M4Zjk5ZDg2Yzk3MDk1MzFjOTI2M2FlZC4uMTAyNDU5Y2ViMTQ1
YmMzNDc5ODJjNjVmNDc1MjIzMjBkYjE2ODE2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJIVFRQQm9keS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJIVFRQQm9keS5jcHAKQEAgLTc5LDYg
Kzc5LDcgQEAgYm9vbCBXZWJIVFRQQm9keTo6ZWxlbWVudEF0KHNpemVfdCBpbmRleCwgRWxlbWVu
dCYgcmVzdWx0KSBjb25zdAogICAgIHJlc3VsdC5maWxlU3RhcnQgPSAwOwogICAgIHJlc3VsdC5m
aWxlTGVuZ3RoID0gMDsKICAgICByZXN1bHQubW9kaWZpY2F0aW9uVGltZSA9IGludmFsaWRGaWxl
VGltZSgpOworICAgIHJlc3VsdC51cmwgPSBLVVJMKCk7CiAgICAgcmVzdWx0LmJsb2JVUkwgPSBL
VVJMKCk7CiAKICAgICBzd2l0Y2ggKGVsZW1lbnQubV90eXBlKSB7CkBAIC05OCw3ICs5OSwxNyBA
QCBib29sIFdlYkhUVFBCb2R5OjplbGVtZW50QXQoc2l6ZV90IGluZGV4LCBFbGVtZW50JiByZXN1
bHQpIGNvbnN0CiAjaWYgRU5BQkxFKEJMT0IpCiAgICAgY2FzZSBGb3JtRGF0YUVsZW1lbnQ6OmVu
Y29kZWRCbG9iOgogICAgICAgICByZXN1bHQudHlwZSA9IEVsZW1lbnQ6OlR5cGVCbG9iOwotICAg
ICAgICByZXN1bHQuYmxvYlVSTCA9IGVsZW1lbnQubV9ibG9iVVJMOworICAgICAgICByZXN1bHQu
dXJsID0gZWxlbWVudC5tX3VybDsKKyAgICAgICAgcmVzdWx0LmJsb2JVUkwgPSBlbGVtZW50Lm1f
dXJsOyAvLyBGSVhNRTogZGVwcmVjYXRlIHRoaXMuCisgICAgICAgIGJyZWFrOworI2VuZGlmCisj
aWYgRU5BQkxFKEZJTEVfU1lTVEVNKQorICAgIGNhc2UgRm9ybURhdGFFbGVtZW50OjplbmNvZGVk
VVJMOgorICAgICAgICByZXN1bHQudHlwZSA9IEVsZW1lbnQ6OlR5cGVVUkw7CisgICAgICAgIHJl
c3VsdC51cmwgPSBlbGVtZW50Lm1fdXJsOworICAgICAgICByZXN1bHQuZmlsZVN0YXJ0ID0gZWxl
bWVudC5tX2ZpbGVTdGFydDsKKyAgICAgICAgcmVzdWx0LmZpbGVMZW5ndGggPSBlbGVtZW50Lm1f
ZmlsZUxlbmd0aDsKKyAgICAgICAgcmVzdWx0Lm1vZGlmaWNhdGlvblRpbWUgPSBlbGVtZW50Lm1f
ZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZTsKICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAg
ICBkZWZhdWx0OgpAQCAtMTMxLDkgKzE0MiwxOSBAQCB2b2lkIFdlYkhUVFBCb2R5OjphcHBlbmRG
aWxlUmFuZ2UoY29uc3QgV2ViU3RyaW5nJiBmaWxlUGF0aCwgbG9uZyBsb25nIGZpbGVTdGFydAog
I2VuZGlmCiB9CiAKK3ZvaWQgV2ViSFRUUEJvZHk6OmFwcGVuZFVSTFJhbmdlKGNvbnN0IFdlYlVS
TCYgdXJsLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBsZW5ndGgsIGRvdWJsZSBtb2RpZmlj
YXRpb25UaW1lKQoreworI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKKyAgICBBU1NFUlQoS1VSTCh1
cmwpLnByb3RvY29sKCkgPT0gImZpbGVzeXN0ZW0iKTsKKyAgICBlbnN1cmVNdXRhYmxlKCk7Cisg
ICAgbV9wcml2YXRlLT5hcHBlbmRVUkxSYW5nZSh1cmwsIHN0YXJ0LCBsZW5ndGgsIG1vZGlmaWNh
dGlvblRpbWUpOworI2VuZGlmCit9CisKIHZvaWQgV2ViSFRUUEJvZHk6OmFwcGVuZEJsb2IoY29u
c3QgV2ViVVJMJiBibG9iVVJMKQogewogI2lmIEVOQUJMRShCTE9CKQorICAgIEFTU0VSVChLVVJM
KGJsb2JVUkwpLnByb3RvY29sKCkgPT0gImJsb2IiKTsKICAgICBlbnN1cmVNdXRhYmxlKCk7CiAg
ICAgbV9wcml2YXRlLT5hcHBlbmRCbG9iKGJsb2JVUkwpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGEuY3BwCmluZGV4IGExY2MzMTMwYzgwZGM2Mzcw
M2ExOGM2MGE4ZGY3NjI3NjgwYzNjNmQuLmYyMDQ0ZmJhMjgxOTg4NjZlMDYxZjNmYWQ5NWRkM2Zj
NjE3ZDM0NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxv
YkRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGEu
Y3BwCkBAIC04OSw2ICs4OSwxMyBAQCB2b2lkIEJsb2JEYXRhOjphcHBlbmRCbG9iKGNvbnN0IEtV
UkwmIHVybCwgbG9uZyBsb25nIG9mZnNldCwgbG9uZyBsb25nIGxlbmd0aCkKICAgICBtX2l0ZW1z
LmFwcGVuZChCbG9iRGF0YUl0ZW0odXJsLCBvZmZzZXQsIGxlbmd0aCkpOwogfQogCisjaWYgRU5B
QkxFKEZJTEVfU1lTVEVNKQordm9pZCBCbG9iRGF0YTo6YXBwZW5kVVJMKGNvbnN0IEtVUkwmIHVy
bCwgbG9uZyBsb25nIG9mZnNldCwgbG9uZyBsb25nIGxlbmd0aCwgZG91YmxlIGV4cGVjdGVkTW9k
aWZpY2F0aW9uVGltZSkKK3sKKyAgICBtX2l0ZW1zLmFwcGVuZChCbG9iRGF0YUl0ZW0odXJsLCBv
ZmZzZXQsIGxlbmd0aCwgZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKSk7Cit9CisjZW5kaWYKKwog
dm9pZCBCbG9iRGF0YTo6c3dhcEl0ZW1zKEJsb2JEYXRhSXRlbUxpc3QmIGl0ZW1zKQogewogICAg
IG1faXRlbXMuc3dhcChpdGVtcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Jsb2JEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Js
b2JEYXRhLmgKaW5kZXggNTE5NWNjOTVjZTUyMDk3NjU4NzViZGMyZDI0MTRlNjU1ZTk3ZTcyYi4u
YjM1ZDI1Y2Y3NTk1NjM5ZTYwMmVjYWUzMjBlYzBiMmY3NzM5OWE5NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGEuaApAQCAtMTEwLDEwICsxMTAsMjkgQEAgc3Ry
dWN0IEJsb2JEYXRhSXRlbSB7CiAgICAgewogICAgIH0KIAorI2lmIEVOQUJMRShGSUxFX1NZU1RF
TSkKKyAgICAvLyBDb25zdHJ1Y3RvciBmb3IgVVJMIHR5cGUgKGUuZy4gRmlsZVN5c3RlbSBmaWxl
cykuCisgICAgQmxvYkRhdGFJdGVtKGNvbnN0IEtVUkwmIHVybCwgbG9uZyBsb25nIG9mZnNldCwg
bG9uZyBsb25nIGxlbmd0aCwgZG91YmxlIGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSkKKyAgICAg
ICAgOiB0eXBlKFVSTCkKKyAgICAgICAgLCB1cmwodXJsKQorICAgICAgICAsIG9mZnNldChvZmZz
ZXQpCisgICAgICAgICwgbGVuZ3RoKGxlbmd0aCkKKyAgICAgICAgLCBleHBlY3RlZE1vZGlmaWNh
dGlvblRpbWUoZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKQorICAgIHsKKyAgICB9CisjZW5kaWYK
KwogICAgIC8vIERldGFjaGVzIGZyb20gY3VycmVudCB0aHJlYWQgc28gdGhhdCBpdCBjYW4gYmUg
cGFzc2VkIHRvIGFub3RoZXIgdGhyZWFkLgogICAgIHZvaWQgZGV0YWNoRnJvbUN1cnJlbnRUaHJl
YWQoKTsKIAotICAgIGVudW0geyBEYXRhLCBGaWxlLCBCbG9iIH0gdHlwZTsKKyAgICBlbnVtIHsK
KyAgICAgICAgRGF0YSwKKyAgICAgICAgRmlsZSwKKyAgICAgICAgQmxvYgorI2lmIEVOQUJMRShG
SUxFX1NZU1RFTSkKKyAgICAgICAgLCBVUkwKKyNlbmRpZgorICAgIH0gdHlwZTsKIAogICAgIC8v
IEZvciBEYXRhIHR5cGUuCiAgICAgUmVmUHRyPFJhd0RhdGE+IGRhdGE7CkBAIC0xMjEsNyArMTQw
LDcgQEAgc3RydWN0IEJsb2JEYXRhSXRlbSB7CiAgICAgLy8gRm9yIEZpbGUgdHlwZS4KICAgICBT
dHJpbmcgcGF0aDsKIAotICAgIC8vIEZvciBCbG9iIHR5cGUuCisgICAgLy8gRm9yIEJsb2Igb3Ig
VVJMIHR5cGUuCiAgICAgS1VSTCB1cmw7CiAKICAgICBsb25nIGxvbmcgb2Zmc2V0OwpAQCAtMTY1
LDYgKzE4NCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZEZpbGUoY29uc3QgU3RyaW5nJiBw
YXRoKTsKICAgICB2b2lkIGFwcGVuZEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBsb25nIGxvbmcg
b2Zmc2V0LCBsb25nIGxvbmcgbGVuZ3RoLCBkb3VibGUgZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1l
KTsKICAgICB2b2lkIGFwcGVuZEJsb2IoY29uc3QgS1VSTCYsIGxvbmcgbG9uZyBvZmZzZXQsIGxv
bmcgbG9uZyBsZW5ndGgpOworI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKKyAgICB2b2lkIGFwcGVu
ZFVSTChjb25zdCBLVVJMJiwgbG9uZyBsb25nIG9mZnNldCwgbG9uZyBsb25nIGxlbmd0aCwgZG91
YmxlIGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSk7CisjZW5kaWYKIAogcHJpdmF0ZToKICAgICBm
cmllbmQgY2xhc3MgQmxvYlJlZ2lzdHJ5SW1wbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCmluZGV4IDU5YTlhOWM2MDkzYTU1
MmI4ZTFkMDk4YmNhMzNkZDI3MGZkMmRjODEuLmMyNTkwMTQ5ZTI1YWIzOWQ3MTYzNTNkNzdiYjVl
YWRmODA2NTQyNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
QmxvYlJlZ2lzdHJ5SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9CbG9iUmVnaXN0cnlJbXBsLmNwcApAQCAtMTA3LDYgKzEwNywxMCBAQCB2b2lkIEJsb2JSZWdp
c3RyeUltcGw6OmFwcGVuZFN0b3JhZ2VJdGVtcyhCbG9iU3RvcmFnZURhdGEqIGJsb2JTdG9yYWdl
RGF0YSwgY29ucwogICAgIGZvciAoQmxvYkRhdGFJdGVtTGlzdDo6Y29uc3RfaXRlcmF0b3IgaXRl
ciA9IGl0ZW1zLmJlZ2luKCk7IGl0ZXIgIT0gaXRlbXMuZW5kKCk7ICsraXRlcikgewogICAgICAg
ICBpZiAoaXRlci0+dHlwZSA9PSBCbG9iRGF0YUl0ZW06OkRhdGEpCiAgICAgICAgICAgICBibG9i
U3RvcmFnZURhdGEtPm1fZGF0YS5hcHBlbmREYXRhKGl0ZXItPmRhdGEsIGl0ZXItPm9mZnNldCwg
aXRlci0+bGVuZ3RoKTsKKyNpZiBFTkFCTEUoRklMRV9TWVNURU0pCisgICAgICAgIGVsc2UgaWYg
KGl0ZXItPnR5cGUgPT0gQmxvYkRhdGFJdGVtOjpVUkwpCisgICAgICAgICAgICBibG9iU3RvcmFn
ZURhdGEtPm1fZGF0YS5hcHBlbmRVUkwoaXRlci0+dXJsLCBpdGVyLT5vZmZzZXQsIGl0ZXItPmxl
bmd0aCwgaXRlci0+ZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKTsKKyNlbmRpZgogICAgICAgICBl
bHNlIHsKICAgICAgICAgICAgIEFTU0VSVChpdGVyLT50eXBlID09IEJsb2JEYXRhSXRlbTo6Rmls
ZSk7CiAgICAgICAgICAgICBibG9iU3RvcmFnZURhdGEtPm1fZGF0YS5hcHBlbmRGaWxlKGl0ZXIt
PnBhdGgsIGl0ZXItPm9mZnNldCwgaXRlci0+bGVuZ3RoLCBpdGVyLT5leHBlY3RlZE1vZGlmaWNh
dGlvblRpbWUpOwpAQCAtMTMzLDYgKzEzNywxMCBAQCB2b2lkIEJsb2JSZWdpc3RyeUltcGw6OmFw
cGVuZFN0b3JhZ2VJdGVtcyhCbG9iU3RvcmFnZURhdGEqIGJsb2JTdG9yYWdlRGF0YSwgY29ucwog
ICAgICAgICBsb25nIGxvbmcgbmV3TGVuZ3RoID0gY3VycmVudExlbmd0aCA+IGxlbmd0aCA/IGxl
bmd0aCA6IGN1cnJlbnRMZW5ndGg7CiAgICAgICAgIGlmIChpdGVyLT50eXBlID09IEJsb2JEYXRh
SXRlbTo6RGF0YSkKICAgICAgICAgICAgIGJsb2JTdG9yYWdlRGF0YS0+bV9kYXRhLmFwcGVuZERh
dGEoaXRlci0+ZGF0YSwgaXRlci0+b2Zmc2V0ICsgb2Zmc2V0LCBuZXdMZW5ndGgpOworI2lmIEVO
QUJMRShGSUxFX1NZU1RFTSkKKyAgICAgICAgZWxzZSBpZiAoaXRlci0+dHlwZSA9PSBCbG9iRGF0
YUl0ZW06OlVSTCkKKyAgICAgICAgICAgIGJsb2JTdG9yYWdlRGF0YS0+bV9kYXRhLmFwcGVuZFVS
TChpdGVyLT51cmwsIGl0ZXItPm9mZnNldCArIG9mZnNldCwgbmV3TGVuZ3RoLCBpdGVyLT5leHBl
Y3RlZE1vZGlmaWNhdGlvblRpbWUpOworI2VuZGlmCiAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgQVNTRVJUKGl0ZXItPnR5cGUgPT0gQmxvYkRhdGFJdGVtOjpGaWxlKTsKICAgICAgICAgICAg
IGJsb2JTdG9yYWdlRGF0YS0+bV9kYXRhLmFwcGVuZEZpbGUoaXRlci0+cGF0aCwgaXRlci0+b2Zm
c2V0ICsgb2Zmc2V0LCBuZXdMZW5ndGgsIGl0ZXItPmV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSk7
CkBAIC0xNTIsNiArMTYwLDcgQEAgdm9pZCBCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JV
UkwoY29uc3QgS1VSTCYgdXJsLCBQYXNzT3duUHRyPEJsb2JEYXRhPiBibG8KICAgICAvLyBUaGUg
YmxvYiBkYXRhIGlzIHN0b3JlZCBpbiB0aGUgImNhbm9uaWNhbCIgd2F5LiBUaGF0IGlzLCBpdCBv
bmx5IGNvbnRhaW5zIGEgbGlzdCBvZiBEYXRhIGFuZCBGaWxlIGl0ZW1zLgogICAgIC8vIDEpIFRo
ZSBEYXRhIGl0ZW0gaXMgZGVub3RlZCBieSB0aGUgcmF3IGRhdGEgYW5kIHRoZSByYW5nZS4KICAg
ICAvLyAyKSBUaGUgRmlsZSBpdGVtIGlzIGRlbm90ZWQgYnkgdGhlIGZpbGUgcGF0aCwgdGhlIHJh
bmdlIGFuZCB0aGUgZXhwZWN0ZWQgbW9kaWZpY2F0aW9uIHRpbWUuCisgICAgLy8gMykgVGhlIFVS
TCBpdGVtIGlzIGRlbm90ZWQgYnkgdGhlIFVSTCwgdGhlIHJhbmdlIGFuZCB0aGUgZXhwZWN0ZWQg
bW9kaWZpY2F0aW9uIHRpbWUuCiAgICAgLy8gQWxsIHRoZSBCbG9iIGl0ZW1zIGluIHRoZSBwYXNz
aW5nIGJsb2IgZGF0YSBhcmUgcmVzb2x2ZWQgYW5kIGV4cGFuZGVkIGludG8gYSBzZXQgb2YgRGF0
YSBhbmQgRmlsZSBpdGVtcy4KIAogICAgIGZvciAoQmxvYkRhdGFJdGVtTGlzdDo6Y29uc3RfaXRl
cmF0b3IgaXRlciA9IGJsb2JEYXRhLT5pdGVtcygpLmJlZ2luKCk7IGl0ZXIgIT0gYmxvYkRhdGEt
Pml0ZW1zKCkuZW5kKCk7ICsraXRlcikgewpAQCAtMTYyLDYgKzE3MSwxMSBAQCB2b2lkIEJsb2JS
ZWdpc3RyeUltcGw6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBLVVJMJiB1cmwsIFBhc3NPd25QdHI8
QmxvYkRhdGE+IGJsbwogICAgICAgICBjYXNlIEJsb2JEYXRhSXRlbTo6RmlsZToKICAgICAgICAg
ICAgIGJsb2JTdG9yYWdlRGF0YS0+bV9kYXRhLmFwcGVuZEZpbGUoaXRlci0+cGF0aCwgaXRlci0+
b2Zmc2V0LCBpdGVyLT5sZW5ndGgsIGl0ZXItPmV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSk7CiAg
ICAgICAgICAgICBicmVhazsKKyNpZiBFTkFCTEUoRklMRV9TWVNURU0pCisgICAgICAgIGNhc2Ug
QmxvYkRhdGFJdGVtOjpVUkw6CisgICAgICAgICAgICBibG9iU3RvcmFnZURhdGEtPm1fZGF0YS5h
cHBlbmRVUkwoaXRlci0+dXJsLCBpdGVyLT5vZmZzZXQsIGl0ZXItPmxlbmd0aCwgaXRlci0+ZXhw
ZWN0ZWRNb2RpZmljYXRpb25UaW1lKTsKKyAgICAgICAgICAgIGJyZWFrOworI2VuZGlmCiAgICAg
ICAgIGNhc2UgQmxvYkRhdGFJdGVtOjpCbG9iOgogICAgICAgICAgICAgaWYgKG1fYmxvYnMuY29u
dGFpbnMoaXRlci0+dXJsLnN0cmluZygpKSkKICAgICAgICAgICAgICAgICBhcHBlbmRTdG9yYWdl
SXRlbXMoYmxvYlN0b3JhZ2VEYXRhLmdldCgpLCBtX2Jsb2JzLmdldChpdGVyLT51cmwuc3RyaW5n
KCkpLT5pdGVtcygpLCBpdGVyLT5vZmZzZXQsIGl0ZXItPmxlbmd0aCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCmluZGV4IDVmNWI1ZGZkNDYzOWY3ZjNj
NDRjYjQ1NjhlMzYyMmNiYWVjODUwM2EuLjc4MWZhN2FhMWRkNjdiODRkNDZiN2Q1MGU0MDAxMWRh
ZDlhN2NkMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9y
bURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEu
Y3BwCkBAIC0xNDMsNyArMTQzLDEyIEBAIFBhc3NSZWZQdHI8Rm9ybURhdGE+IEZvcm1EYXRhOjpk
ZWVwQ29weSgpIGNvbnN0CiAgICAgICAgICAgICBicmVhazsKICNpZiBFTkFCTEUoQkxPQikKICAg
ICAgICAgY2FzZSBGb3JtRGF0YUVsZW1lbnQ6OmVuY29kZWRCbG9iOgotICAgICAgICAgICAgZm9y
bURhdGEtPm1fZWxlbWVudHMuYXBwZW5kKEZvcm1EYXRhRWxlbWVudChlLm1fYmxvYlVSTCkpOwor
ICAgICAgICAgICAgZm9ybURhdGEtPm1fZWxlbWVudHMuYXBwZW5kKEZvcm1EYXRhRWxlbWVudChl
Lm1fdXJsKSk7CisgICAgICAgICAgICBicmVhazsKKyNlbmRpZgorI2lmIEVOQUJMRShGSUxFX1NZ
U1RFTSkKKyAgICAgICAgY2FzZSBGb3JtRGF0YUVsZW1lbnQ6OmVuY29kZWRVUkw6CisgICAgICAg
ICAgICBmb3JtRGF0YS0+bV9lbGVtZW50cy5hcHBlbmQoRm9ybURhdGFFbGVtZW50KGUubV91cmws
IGUubV9maWxlU3RhcnQsIGUubV9maWxlTGVuZ3RoLCBlLm1fZXhwZWN0ZWRGaWxlTW9kaWZpY2F0
aW9uVGltZSkpOwogICAgICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICAgICAgfQpAQCAtMTgx
LDYgKzE4NiwxNyBAQCB2b2lkIEZvcm1EYXRhOjphcHBlbmRCbG9iKGNvbnN0IEtVUkwmIGJsb2JV
UkwpCiAgICAgbV9lbGVtZW50cy5hcHBlbmQoRm9ybURhdGFFbGVtZW50KGJsb2JVUkwpKTsKIH0K
ICNlbmRpZgorI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKK3ZvaWQgRm9ybURhdGE6OmFwcGVuZFVS
TChjb25zdCBLVVJMJiB1cmwpCit7CisgICAgbV9lbGVtZW50cy5hcHBlbmQoRm9ybURhdGFFbGVt
ZW50KHVybCwgMCwgQmxvYkRhdGFJdGVtOjp0b0VuZE9mRmlsZSwgaW52YWxpZEZpbGVUaW1lKCkp
KTsKK30KKwordm9pZCBGb3JtRGF0YTo6YXBwZW5kVVJMUmFuZ2UoY29uc3QgS1VSTCYgdXJsLCBs
b25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBsZW5ndGgsIGRvdWJsZSBleHBlY3RlZE1vZGlmaWNh
dGlvblRpbWUpCit7CisgICAgbV9lbGVtZW50cy5hcHBlbmQoRm9ybURhdGFFbGVtZW50KHVybCwg
c3RhcnQsIGxlbmd0aCwgZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKSk7Cit9CisjZW5kaWYKIAog
dm9pZCBGb3JtRGF0YTo6YXBwZW5kS2V5VmFsdWVQYWlySXRlbXMoY29uc3QgRm9ybURhdGFMaXN0
JiBsaXN0LCBjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nLCBib29sIGlzTXVsdGlQYXJ0Rm9y
bSwgRG9jdW1lbnQqIGRvY3VtZW50LCBFbmNvZGluZ1R5cGUgZW5jb2RpbmdUeXBlKQogewpAQCAt
MjUyLDYgKzI2OCwxMCBAQCB2b2lkIEZvcm1EYXRhOjphcHBlbmRLZXlWYWx1ZVBhaXJJdGVtcyhj
b25zdCBGb3JtRGF0YUxpc3QmIGxpc3QsIGNvbnN0IFRleHRFbmNvZAogICAgICAgICAgICAgICAg
ICAgICAvLyBEbyBub3QgYWRkIHRoZSBmaWxlIGlmIHRoZSBwYXRoIGlzIGVtcHR5LgogICAgICAg
ICAgICAgICAgICAgICBpZiAoIWZpbGUtPnBhdGgoKS5pc0VtcHR5KCkpCiAgICAgICAgICAgICAg
ICAgICAgICAgICBhcHBlbmRGaWxlKGZpbGUtPnBhdGgoKSwgc2hvdWxkR2VuZXJhdGVGaWxlKTsK
KyNpZiBFTkFCTEUoRklMRV9TWVNURU0pCisgICAgICAgICAgICAgICAgICAgIGlmICghZmlsZS0+
ZmlsZVN5c3RlbVVSTCgpLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVu
ZFVSTChmaWxlLT5maWxlU3lzdGVtVVJMKCkpOworI2VuZGlmCiAgICAgICAgICAgICAgICAgfQog
I2lmIEVOQUJMRShCTE9CKQogICAgICAgICAgICAgICAgIGVsc2UKQEAgLTM2MSw3ICszODEsMTYg
QEAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEZvcm1EYXRhRWxl
bWVudCYgZWxlbWVudCkKIAogI2lmIEVOQUJMRShCTE9CKQogICAgIGNhc2UgRm9ybURhdGFFbGVt
ZW50OjplbmNvZGVkQmxvYjoKLSAgICAgICAgZW5jb2Rlci5lbmNvZGVTdHJpbmcoZWxlbWVudC5t
X2Jsb2JVUkwuc3RyaW5nKCkpOworICAgICAgICBlbmNvZGVyLmVuY29kZVN0cmluZyhlbGVtZW50
Lm1fdXJsLnN0cmluZygpKTsKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCisKKyNpZiBFTkFCTEUo
RklMRV9TWVNURU0pCisgICAgY2FzZSBGb3JtRGF0YUVsZW1lbnQ6OmVuY29kZWRVUkw6CisgICAg
ICAgIGVuY29kZXIuZW5jb2RlU3RyaW5nKGVsZW1lbnQubV91cmwuc3RyaW5nKCkpOworICAgICAg
ICBlbmNvZGVyLmVuY29kZUludDY0KGVsZW1lbnQubV9maWxlU3RhcnQpOworICAgICAgICBlbmNv
ZGVyLmVuY29kZUludDY0KGVsZW1lbnQubV9maWxlTGVuZ3RoKTsKKyAgICAgICAgZW5jb2Rlci5l
bmNvZGVEb3VibGUoZWxlbWVudC5tX2V4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUpOwogICAg
ICAgICByZXR1cm47CiAjZW5kaWYKICAgICB9CkBAIC0zODcsMTEgKzQxNiwxNiBAQCBzdGF0aWMg
Ym9vbCBkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgRm9ybURhdGFFbGVtZW50JiBlbGVtZW50KQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBjYXNlIEZvcm1EYXRhRWxlbWVudDo6
ZW5jb2RlZEZpbGU6IHsKLSAgICAgICAgZWxlbWVudC5tX3R5cGUgPSBGb3JtRGF0YUVsZW1lbnQ6
OmVuY29kZWRGaWxlOwotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlU3RyaW5nKGVsZW1lbnQu
bV9maWxlbmFtZSkpCisgICAgY2FzZSBGb3JtRGF0YUVsZW1lbnQ6OmVuY29kZWRGaWxlOgorI2lm
IEVOQUJMRShGSUxFX1NZU1RFTSkKKyAgICBjYXNlIEZvcm1EYXRhRWxlbWVudDo6ZW5jb2RlZFVS
TDoKKyNlbmRpZgorICAgIHsKKyAgICAgICAgZWxlbWVudC5tX3R5cGUgPSBzdGF0aWNfY2FzdDxG
b3JtRGF0YUVsZW1lbnQ6OlR5cGU+KHR5cGUpOworICAgICAgICBTdHJpbmcgZmlsZW5hbWVPclVS
TDsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZVN0cmluZyhmaWxlbmFtZU9yVVJMKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUJvb2wo
ZWxlbWVudC5tX3Nob3VsZEdlbmVyYXRlRmlsZSkpCisgICAgICAgIGlmICh0eXBlID09IEZvcm1E
YXRhRWxlbWVudDo6ZW5jb2RlZEZpbGUgJiYgIWRlY29kZXIuZGVjb2RlQm9vbChlbGVtZW50Lm1f
c2hvdWxkR2VuZXJhdGVGaWxlKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
aW50NjRfdCBmaWxlU3RhcnQ7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGVJbnQ2NChmaWxl
U3RhcnQpKQpAQCAtNDA2LDYgKzQ0MCwxNCBAQCBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlciwgRm9ybURhdGFFbGVtZW50JiBlbGVtZW50KQogICAgICAgICBkb3VibGUgZXhwZWN0
ZWRGaWxlTW9kaWZpY2F0aW9uVGltZTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZURvdWJs
ZShleHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lKSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKworI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKKyAgICAgICAgaWYgKHR5cGUgPT0gRm9ybURh
dGFFbGVtZW50OjplbmNvZGVkVVJMKQorICAgICAgICAgICAgZWxlbWVudC5tX3VybCA9IEtVUkwo
S1VSTCgpLCBmaWxlbmFtZU9yVVJMKTsKKyAgICAgICAgZWxzZQorI2VuZGlmCisgICAgICAgIGVs
ZW1lbnQubV9maWxlbmFtZSA9IGZpbGVuYW1lT3JVUkw7CisKICNpZiBFTkFCTEUoQkxPQikKICAg
ICAgICAgZWxlbWVudC5tX2ZpbGVTdGFydCA9IGZpbGVTdGFydDsKICAgICAgICAgZWxlbWVudC5t
X2ZpbGVMZW5ndGggPSBmaWxlTGVuZ3RoOwpAQCAtNDIwLDkgKzQ2MiwxMCBAQCBzdGF0aWMgYm9v
bCBkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgRm9ybURhdGFFbGVtZW50JiBlbGVtZW50KQogICAg
ICAgICBTdHJpbmcgYmxvYlVSTFN0cmluZzsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZVN0
cmluZyhibG9iVVJMU3RyaW5nKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
ZWxlbWVudC5tX2Jsb2JVUkwgPSBLVVJMKEtVUkwoKSwgYmxvYlVSTFN0cmluZyk7CisgICAgICAg
IGVsZW1lbnQubV91cmwgPSBLVVJMKEtVUkwoKSwgYmxvYlVSTFN0cmluZyk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogI2VuZGlmCisKICAgICB9CiAKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKaW5kZXggMTQ5ODEzNjZiM2VkNTU3
NGE2OWIwYjAzOWFkZDQwOTJmMmU4OWRjZi4uYTcwY2E3MGY4NmY3YzVlODljN2ViOWRmZTY4MWQ3
ZDY5OTNmMTk3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9G
b3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEu
aApAQCAtMzksMjUgKzM5LDMxIEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShCTE9CKQogICAgIEZv
cm1EYXRhRWxlbWVudChjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBsb25nIGxvbmcgZmlsZVN0YXJ0
LCBsb25nIGxvbmcgZmlsZUxlbmd0aCwgZG91YmxlIGV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRp
bWUsIGJvb2wgc2hvdWxkR2VuZXJhdGVGaWxlKSA6IG1fdHlwZShlbmNvZGVkRmlsZSksIG1fZmls
ZW5hbWUoZmlsZW5hbWUpLCBtX2ZpbGVTdGFydChmaWxlU3RhcnQpLCBtX2ZpbGVMZW5ndGgoZmls
ZUxlbmd0aCksIG1fZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZShleHBlY3RlZEZpbGVNb2Rp
ZmljYXRpb25UaW1lKSwgbV9zaG91bGRHZW5lcmF0ZUZpbGUoc2hvdWxkR2VuZXJhdGVGaWxlKSB7
IH0KLSAgICBleHBsaWNpdCBGb3JtRGF0YUVsZW1lbnQoY29uc3QgS1VSTCYgYmxvYlVSTCkgOiBt
X3R5cGUoZW5jb2RlZEJsb2IpLCBtX2Jsb2JVUkwoYmxvYlVSTCkgeyB9CisgICAgZXhwbGljaXQg
Rm9ybURhdGFFbGVtZW50KGNvbnN0IEtVUkwmIGJsb2JVUkwpIDogbV90eXBlKGVuY29kZWRCbG9i
KSwgbV91cmwoYmxvYlVSTCkgeyB9CiAjZWxzZQogICAgIEZvcm1EYXRhRWxlbWVudChjb25zdCBT
dHJpbmcmIGZpbGVuYW1lLCBib29sIHNob3VsZEdlbmVyYXRlRmlsZSkgOiBtX3R5cGUoZW5jb2Rl
ZEZpbGUpLCBtX2ZpbGVuYW1lKGZpbGVuYW1lKSwgbV9zaG91bGRHZW5lcmF0ZUZpbGUoc2hvdWxk
R2VuZXJhdGVGaWxlKSB7IH0KICNlbmRpZgorI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKKyAgICBG
b3JtRGF0YUVsZW1lbnQoY29uc3QgS1VSTCYgdXJsLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9u
ZyBsZW5ndGgsIGRvdWJsZSBleHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lKSA6IG1fdHlwZShl
bmNvZGVkVVJMKSwgbV91cmwodXJsKSwgbV9maWxlU3RhcnQoc3RhcnQpLCBtX2ZpbGVMZW5ndGgo
bGVuZ3RoKSwgbV9leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lKGV4cGVjdGVkRmlsZU1vZGlm
aWNhdGlvblRpbWUpLCBtX3Nob3VsZEdlbmVyYXRlRmlsZShmYWxzZSkgeyB9CisjZW5kaWYKIAot
ICAgIGVudW0geworICAgIGVudW0gVHlwZSB7CiAgICAgICAgIGRhdGEsCiAgICAgICAgIGVuY29k
ZWRGaWxlCiAjaWYgRU5BQkxFKEJMT0IpCiAgICAgICAgICwgZW5jb2RlZEJsb2IKICNlbmRpZgor
I2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKKyAgICAgICAgLCBlbmNvZGVkVVJMCisjZW5kaWYKICAg
ICB9IG1fdHlwZTsKICAgICBWZWN0b3I8Y2hhcj4gbV9kYXRhOwogICAgIFN0cmluZyBtX2ZpbGVu
YW1lOwogI2lmIEVOQUJMRShCTE9CKQorICAgIEtVUkwgbV91cmw7IC8vIEZvciBCbG9iIG9yIFVS
TC4KICAgICBsb25nIGxvbmcgbV9maWxlU3RhcnQ7CiAgICAgbG9uZyBsb25nIG1fZmlsZUxlbmd0
aDsKICAgICBkb3VibGUgbV9leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lOwotICAgIEtVUkwg
bV9ibG9iVVJMOwogI2VuZGlmCiAgICAgU3RyaW5nIG1fZ2VuZXJhdGVkRmlsZW5hbWU7CiAgICAg
Ym9vbCBtX3Nob3VsZEdlbmVyYXRlRmlsZTsKQEAgLTc2LDEwICs4MiwxNCBAQCBpbmxpbmUgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IEZvcm1EYXRhRWxlbWVudCYgYSwgY29uc3QgRm9ybURhdGFFbGVt
ZW50JiBiKQogI2lmIEVOQUJMRShCTE9CKQogICAgICAgICByZXR1cm4gYS5tX2ZpbGVuYW1lID09
IGIubV9maWxlbmFtZSAmJiBhLm1fZmlsZVN0YXJ0ID09IGIubV9maWxlU3RhcnQgJiYgYS5tX2Zp
bGVMZW5ndGggPT0gYi5tX2ZpbGVMZW5ndGggJiYgYS5tX2V4cGVjdGVkRmlsZU1vZGlmaWNhdGlv
blRpbWUgPT0gYi5tX2V4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWU7CiAgICAgaWYgKGEubV90
eXBlID09IEZvcm1EYXRhRWxlbWVudDo6ZW5jb2RlZEJsb2IpCi0gICAgICAgIHJldHVybiBhLm1f
YmxvYlVSTCA9PSBiLm1fYmxvYlVSTDsKKyAgICAgICAgcmV0dXJuIGEubV91cmwgPT0gYi5tX3Vy
bDsKICNlbHNlCiAgICAgICAgIHJldHVybiBhLm1fZmlsZW5hbWUgPT0gYi5tX2ZpbGVuYW1lOwog
I2VuZGlmCisjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQorICAgIGlmIChhLm1fdHlwZSA9PSBGb3Jt
RGF0YUVsZW1lbnQ6OmVuY29kZWRVUkwpCisgICAgICAgIHJldHVybiBhLm1fdXJsID09IGIubV91
cmw7CisjZW5kaWYKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTE1LDYgKzEyNSw4IEBAIHB1
YmxpYzoKICNpZiBFTkFCTEUoQkxPQikKICAgICB2b2lkIGFwcGVuZEZpbGVSYW5nZShjb25zdCBT
dHJpbmcmIGZpbGVuYW1lLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBsZW5ndGgsIGRvdWJs
ZSBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUsIGJvb2wgc2hvdWxkR2VuZXJhdGVGaWxlID0gZmFs
c2UpOwogICAgIHZvaWQgYXBwZW5kQmxvYihjb25zdCBLVVJMJiBibG9iVVJMKTsKKyAgICB2b2lk
IGFwcGVuZFVSTChjb25zdCBLVVJMJik7CisgICAgdm9pZCBhcHBlbmRVUkxSYW5nZShjb25zdCBL
VVJMJiwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgbGVuZ3RoLCBkb3VibGUgZXhwZWN0ZWRN
b2RpZmljYXRpb25UaW1lKTsKICNlbmRpZgogCiAgICAgdm9pZCBmbGF0dGVuKFZlY3RvcjxjaGFy
PiYpIGNvbnN0OyAvLyBvbWl0cyBmaWxlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L1Jlc291cmNlUmVxdWVzdEJsYWNrQmVycnkuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L1Jlc291cmNlUmVxdWVz
dEJsYWNrQmVycnkuY3BwCmluZGV4IDNkOGQ0YzY5MTA1ZDIxODViMmNmN2RiYjgzYzczNTMwODEw
OTEyOTQuLjk4MWYzNDJjNzczY2I0YjRjNWVjMTUzY2Y4ZTcyMmU5YjU5ODUwZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9SZXNvdXJjZVJl
cXVlc3RCbGFja0JlcnJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2JsYWNrYmVycnkvUmVzb3VyY2VSZXF1ZXN0QmxhY2tCZXJyeS5jcHAKQEAgLTE3MSw3ICsxNzEs
NyBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6aW5pdGlhbGl6ZVBsYXRmb3JtUmVxdWVzdChOZXR3
b3JrUmVxdWVzdCYgcGxhdGZvcm1SZXF1ZXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgcGxh
dGZvcm1SZXF1ZXN0LmFkZE11bHRpcGFydEZpbGVuYW1lKGVsZW1lbnQubV9maWxlbmFtZS5jaGFy
YWN0ZXJzKCksIGVsZW1lbnQubV9maWxlbmFtZS5sZW5ndGgoKSk7CiAjaWYgRU5BQkxFKEJMT0Ip
CiAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGVsZW1lbnQubV90eXBlID09IEZvcm1EYXRh
RWxlbWVudDo6ZW5jb2RlZEJsb2IpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxC
bG9iU3RvcmFnZURhdGE+IGJsb2JEYXRhID0gc3RhdGljX2Nhc3Q8QmxvYlJlZ2lzdHJ5SW1wbCY+
KGJsb2JSZWdpc3RyeSgpKS5nZXRCbG9iRGF0YUZyb21VUkwoS1VSTChQYXJzZWRVUkxTdHJpbmcs
IGVsZW1lbnQubV9ibG9iVVJMKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8Qmxv
YlN0b3JhZ2VEYXRhPiBibG9iRGF0YSA9IHN0YXRpY19jYXN0PEJsb2JSZWdpc3RyeUltcGwmPihi
bG9iUmVnaXN0cnkoKSkuZ2V0QmxvYkRhdGFGcm9tVVJMKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBl
bGVtZW50Lm1fdXJsKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYmxvYkRhdGEpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IGJsb2JE
YXRhLT5pdGVtcygpLnNpemUoKTsgKytqKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEJsb2JEYXRhSXRlbSYgYmxvYkl0ZW0gPSBibG9iRGF0YS0+aXRlbXMoKVtqXTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFT
dHJlYW1DRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1E
YXRhU3RyZWFtQ0ZOZXQuY3BwCmluZGV4IDY4ZjA2MzM0NmMxMzc1NGMxYjBiZGRkZmI3NmE2ZGE5
NzVmODQ3YzQuLjNkM2U4YTNlZGE3OTk0ODljOWI2MDYwMDI2Nzk3OWJiY2ExMjg1ZTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1D
Rk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0
YVN0cmVhbUNGTmV0LmNwcApAQCAtNDE4LDcgKzQxOCw3IEBAIHZvaWQgc2V0SFRUUEJvZHkoQ0ZN
dXRhYmxlVVJMUmVxdWVzdFJlZiByZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1EYXRhPiBwcnBGb3Jt
RGF0CiAgICAgICAgICAgICAgICAgbmV3Rm9ybURhdGEtPmFwcGVuZEZpbGUoZWxlbWVudC5tX2Zp
bGVuYW1lLCBlbGVtZW50Lm1fc2hvdWxkR2VuZXJhdGVGaWxlKTsKICAgICAgICAgICAgIGVsc2Ug
ewogICAgICAgICAgICAgICAgIEFTU0VSVChlbGVtZW50Lm1fdHlwZSA9PSBGb3JtRGF0YUVsZW1l
bnQ6OmVuY29kZWRCbG9iKTsKLSAgICAgICAgICAgICAgICBSZWZQdHI8QmxvYlN0b3JhZ2VEYXRh
PiBibG9iRGF0YSA9IHN0YXRpY19jYXN0PEJsb2JSZWdpc3RyeUltcGwmPihibG9iUmVnaXN0cnko
KSkuZ2V0QmxvYkRhdGFGcm9tVVJMKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBlbGVtZW50Lm1fYmxv
YlVSTCkpOworICAgICAgICAgICAgICAgIFJlZlB0cjxCbG9iU3RvcmFnZURhdGE+IGJsb2JEYXRh
ID0gc3RhdGljX2Nhc3Q8QmxvYlJlZ2lzdHJ5SW1wbCY+KGJsb2JSZWdpc3RyeSgpKS5nZXRCbG9i
RGF0YUZyb21VUkwoS1VSTChQYXJzZWRVUkxTdHJpbmcsIGVsZW1lbnQubV91cmwpKTsKICAgICAg
ICAgICAgICAgICBpZiAoYmxvYkRhdGEpIHsKICAgICAgICAgICAgICAgICAgICAgZm9yIChzaXpl
X3QgaiA9IDA7IGogPCBibG9iRGF0YS0+aXRlbXMoKS5zaXplKCk7ICsraikgewogICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgQmxvYkRhdGFJdGVtJiBibG9iSXRlbSA9IGJsb2JEYXRhLT5p
dGVtcygpW2pdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAppbmRleCAzNWQ0MWFiZmI1MDQ3ZmY4Y2Y2
OTM4OTllMWNjNzExNDkwNmY1NjMyLi5kMWY4ZDgyMTEzZTU4ZDIwNGMwZGNlMjExM2IwMDlhZjRi
NDkxOTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
UmVzb3VyY2VIYW5kbGVTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcApAQCAtNDYxLDcgKzQ2MSw3IEBAIHN0YXRp
YyB2b2lkIGFkZEVuY29kZWRCbG9iSXRlbVRvU291cE1lc3NhZ2VCb2R5KFNvdXBNZXNzYWdlKiBt
ZXNzYWdlLCBjb25zdCBCbG9iCiAKIHN0YXRpYyB2b2lkIGFkZEVuY29kZWRCbG9iVG9Tb3VwTWVz
c2FnZUJvZHkoU291cE1lc3NhZ2UqIG1lc3NhZ2UsIGNvbnN0IEZvcm1EYXRhRWxlbWVudCYgZWxl
bWVudCwgdW5zaWduZWQgbG9uZyYgdG90YWxCb2R5U2l6ZSkKIHsKLSAgICBSZWZQdHI8QmxvYlN0
b3JhZ2VEYXRhPiBibG9iRGF0YSA9IHN0YXRpY19jYXN0PEJsb2JSZWdpc3RyeUltcGwmPihibG9i
UmVnaXN0cnkoKSkuZ2V0QmxvYkRhdGFGcm9tVVJMKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBlbGVt
ZW50Lm1fYmxvYlVSTCkpOworICAgIFJlZlB0cjxCbG9iU3RvcmFnZURhdGE+IGJsb2JEYXRhID0g
c3RhdGljX2Nhc3Q8QmxvYlJlZ2lzdHJ5SW1wbCY+KGJsb2JSZWdpc3RyeSgpKS5nZXRCbG9iRGF0
YUZyb21VUkwoS1VSTChQYXJzZWRVUkxTdHJpbmcsIGVsZW1lbnQubV91cmwpKTsKICAgICBpZiAo
IWJsb2JEYXRhKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkJsb2JEYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkJsb2JEYXRhLmNwcAppbmRleCBjNzY3ZDFiZGQzNTE3OGY4NmZjNThhNmNlMDgwYTEyYTI3
MDJkM2ZiLi4wOTRmZjgwMTM5MTg3MzNhY2I0MjJkNGU5ODA0MmUxMWE2NTIzN2QwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJCbG9iRGF0YS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQmxvYkRhdGEuY3BwCkBAIC04Myw3ICs4MywxMiBA
QCBib29sIFdlYkJsb2JEYXRhOjppdGVtQXQoc2l6ZV90IGluZGV4LCBJdGVtJiByZXN1bHQpIGNv
bnN0CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGNhc2UgQmxvYkRhdGFJdGVtOjpCbG9iOgog
ICAgICAgICByZXN1bHQudHlwZSA9IEl0ZW06OlR5cGVCbG9iOwotICAgICAgICByZXN1bHQuYmxv
YlVSTCA9IGl0ZW0udXJsOworICAgICAgICByZXN1bHQuYmxvYlVSTCA9IGl0ZW0udXJsOyAvLyBG
SVhNRTogZGVwcmVjYXRlIHRoaXMuCisgICAgICAgIHJlc3VsdC51cmwgPSBpdGVtLnVybDsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgY2FzZSBCbG9iRGF0YUl0ZW06OlVSTDoKKyAgICAgICAg
cmVzdWx0LnR5cGUgPSBJdGVtOjpUeXBlVVJMOworICAgICAgICByZXN1bHQudXJsID0gaXRlbS51
cmw7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsK
</data>
<flag name="review"
          id="167677"
          type_id="1"
          status="+"
          setter="fishd"
    />
    <flag name="commit-queue"
          id="167709"
          type_id="3"
          status="-"
          setter="fishd"
    />
          </attachment>
      

    </bug>

</bugzilla>