<?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>47415</bug_id>
          
          <creation_ts>2010-10-08 06:58:35 -0700</creation_ts>
          <short_desc>Web Inspector: extract content-related methods into InspectorResourceAgent.</short_desc>
          <delta_ts>2010-10-14 05:45:08 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>47663</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>abarth</cc>
    
    <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>eric</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>291620</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-10-08 06:58:35 -0700</bug_when>
    <thetext>This is needed for resource-tracking-less operation of resources panel.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291625</commentid>
    <comment_count>1</comment_count>
      <attachid>70244</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-10-08 07:02:38 -0700</bug_when>
    <thetext>Created attachment 70244
[PATCH] Proposed change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291629</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-08 07:04:07 -0700</bug_when>
    <thetext>Attachment 70244 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/inspector/InspectorResourceAgent.cpp:137:  One or more unexpected \r (^M) found; better to use only a \n  [whitespace/carriage_return] [1]
Suppressing further [whitespace/carriage_return] reports for this file.
WebCore/inspector/InspectorResourceAgent.cpp:121:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Total errors found: 10 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291631</commentid>
    <comment_count>3</comment_count>
      <attachid>70246</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-10-08 07:09:37 -0700</bug_when>
    <thetext>Created attachment 70246
[PATCH] With good style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291632</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-08 07:10:29 -0700</bug_when>
    <thetext>Attachment 70244 did not build on mac:
Build output: http://queues.webkit.org/results/4228136</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291633</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-08 07:11:24 -0700</bug_when>
    <thetext>Attachment 70246 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/inspector/InspectorResourceAgent.cpp:121:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Total errors found: 1 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291636</commentid>
    <comment_count>6</comment_count>
      <attachid>70247</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-10-08 07:15:51 -0700</bug_when>
    <thetext>Created attachment 70247
[PATCH] With project files too!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291637</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-08 07:17:40 -0700</bug_when>
    <thetext>Attachment 70246 did not build on mac:
Build output: http://queues.webkit.org/results/4179134</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291641</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-08 07:24:53 -0700</bug_when>
    <thetext>Attachment 70247 did not build on mac:
Build output: http://queues.webkit.org/results/4143136</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291656</commentid>
    <comment_count>9</comment_count>
      <attachid>70246</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-10-08 07:54:36 -0700</bug_when>
    <thetext>Comment on attachment 70246
[PATCH] With good style.

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

&gt; WebCore/inspector/InspectorResource.cpp:-457
&gt; -    if (m_loader &amp;&amp; equalIgnoringFragmentIdentifier(m_requestURL, m_loader-&gt;requestURL())) {

The m_loader field should go away completely.

&gt; WebCore/inspector/InspectorResourceAgent.cpp:90
&gt; +    if (equalIgnoringFragmentIdentifier(url, loader-&gt;url())) {

Should this be assert? We seem to prune resource when the document loader changes.

&gt; WebCore/inspector/InspectorResourceAgent.h:2
&gt; + * Copyright (C) 2009 Google Inc. All rights reserved.

2010</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291657</commentid>
    <comment_count>10</comment_count>
      <attachid>70247</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-10-08 07:56:01 -0700</bug_when>
    <thetext>Comment on attachment 70247
[PATCH] With project files too!

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

&gt; WebCore/WebCore.xcodeproj/project.pbxproj:12213
&gt; +				82AB1771125C826700C5069D /* InspectorResourceAgent.cpp */,

Mind alphabetic order here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294050</commentid>
    <comment_count>11</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-10-14 04:39:22 -0700</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
        R       WebCore/inspector/InspectorUtilities.h =&gt; WebCore/inspector/InspectorResourceAgent.h
        D       WebCore/inspector/InspectorUtilities.cpp
        M       WebCore/CMakeLists.txt
        M       WebCore/ChangeLog
        M       WebCore/GNUmakefile.am
        M       WebCore/WebCore.gypi
        M       WebCore/WebCore.pro
        M       WebCore/WebCore.vcproj/WebCore.vcproj
        M       WebCore/WebCore.xcodeproj/project.pbxproj
        M       WebCore/inspector/InspectorCSSAgent.cpp
        M       WebCore/inspector/InspectorResource.cpp
        M       WebCore/inspector/InspectorResource.h
        A       WebCore/inspector/InspectorResourceAgent.cpp
        M       WebCore/inspector/InspectorStyleSheet.cpp
Committed r69757</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294073</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-14 05:45:08 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/69757 might have broken Chromium Mac Release</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70244</attachid>
            <date>2010-10-08 07:02:38 -0700</date>
            <delta_ts>2010-10-08 07:09:37 -0700</delta_ts>
            <desc>[PATCH] Proposed change.</desc>
            <filename>resource_agent</filename>
            <type>text/plain</type>
            <size>27407</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CmluZGV4IDUzMzFlYWUuLjdmMTZiZmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTExMSw4ICsxMTExLDggQEAg
U0VUKFdlYkNvcmVfU09VUkNFUwogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uY3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwCiAgICAgaW5z
cGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcAorICAgIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNv
dXJjZUFnZW50LmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAotICAg
IGluc3BlY3Rvci9JbnNwZWN0b3JVdGlsaXRpZXMuY3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3Rv
clZhbHVlcy5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yU3RvcmFnZUFnZW50LmNwcAogICAg
IGluc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwNzgzYjEzLi5mYzZkNDNiIDEw
MDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDM0IEBACisyMDEwLTEwLTA4ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFdlYiBJbnNwZWN0b3I6IGV4dHJhY3QgY29udGVudC1yZWxhdGVkIG1ldGhvZHMgaW50byBJbnNw
ZWN0b3JSZXNvdXJjZUFnZW50LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDc0MTUKKworICAgICAgICBUaGlzIGlzIG5lZWRlZCBmb3IgcmVzb3VyY2Ut
dHJhY2tpbmctbGVzcyBvcGVyYXRpb24gb2YgcmVzb3VyY2VzIHBhbmVsLgorCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2Vi
Q29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291
cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlOjp0eXBlKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlOjpzb3VyY2VTdHJpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2U6OnNvdXJjZUJ5dGVzKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
UmVzb3VyY2VBZ2VudDo6cmVzb3VyY2VDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvclJlc291cmNlQWdlbnQ6OnJlc291cmNlQ29udGVudEJhc2U2NCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpyZXNvdXJjZURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6Y2FjaGVkUmVzb3VyY2VUeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmNhY2hlZFJlc291cmNlKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oOiBBZGRlZC4KKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JTdHlsZVNoZWV0OjpyZXNvdXJjZVN0eWxlU2hlZXRUZXh0KToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yVXRpbGl0aWVzLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yVXRpbGl0aWVzLmg6IFJlbW92ZWQuCisKIDIwMTAtMTAtMDggIENh
cmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IFhhbiBMb3Blei4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDRhMjU0N2IuLjk0NzYyMmYgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAt
MTgyOSwxNCArMTgyOSwxNCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaCBcCiAJV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yUmVzb3VyY2UuY3BwIFwKIAlXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5o
IFwKKwlXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcCBcCisJV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oIFwKIAlXZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JTdG9yYWdlQWdlbnQuY3BwIFwKIAlXZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JTdG9yYWdlQWdlbnQuaCBcCiAJV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVT
aGVldC5jcHAgXAogCVdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuaCBcCiAJ
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgXAogCVdlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaCBcCi0JV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yVXRpbGl0aWVzLmNwcCBcCi0JV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVXRp
bGl0aWVzLmggXAogCVdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAgXAogCVdl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oIFwKIAlXZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JXb3JrZXJSZXNvdXJjZS5oIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5n
eXBpIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMzM2N2NlZS4uY2U1MTJkNCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAg
LTE5MzcsMTQgKzE5MzcsMTQgQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yUHJv
ZmlsZXJBZ2VudC5oJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2Uu
Y3BwJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuaCcsCisgICAg
ICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwJywKKyAgICAgICAg
ICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oJywKICAgICAgICAgICAgICdp
bnNwZWN0b3IvSW5zcGVjdG9yU3RvcmFnZUFnZW50LmNwcCcsCiAgICAgICAgICAgICAnaW5zcGVj
dG9yL0luc3BlY3RvclN0b3JhZ2VBZ2VudC5oJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5z
cGVjdG9yU3R5bGVTaGVldC5jcHAnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JT
dHlsZVNoZWV0LmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFn
ZW50LmNwcCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQu
aCcsCi0gICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvclV0aWxpdGllcy5jcHAnLAotICAg
ICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JVdGlsaXRpZXMuaCcsCiAgICAgICAgICAgICAn
aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9J
bnNwZWN0b3JWYWx1ZXMuaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3Rvcldvcmtl
clJlc291cmNlLmgnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUv
V2ViQ29yZS5wcm8KaW5kZXggNmJjZmVlZi4uMjFlN2MyMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9X
ZWJDb3JlLnBybworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0xMDAyLDEwICsxMDAyLDEw
IEBAIFNPVVJDRVMgKz0gXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
Y3BwIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAgXAogICAgIGlu
c3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5jcHAgXAorICAgIGluc3BlY3Rvci9JbnNwZWN0b3JS
ZXNvdXJjZUFnZW50LmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvclN0b3JhZ2VBZ2VudC5j
cHAgXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCBcCiAgICAgaW5zcGVj
dG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIFwKLSAgICBpbnNwZWN0b3IvSW5zcGVjdG9y
VXRpbGl0aWVzLmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAgXAogICAg
IGluc3BlY3Rvci9TY3JpcHRCcmVha3BvaW50LmNwcCBcCiAgICAgaW5zcGVjdG9yL1RpbWVsaW5l
UmVjb3JkRmFjdG9yeS5jcHAgXApAQCAtMTg4MiwxMCArMTg4MiwxMCBAQCBIRUFERVJTICs9IFwK
ICAgICBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggXAogICAgIGluc3BlY3Rv
ci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmggXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNv
dXJjZS5oIFwKKyAgICBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oIFwKICAgICBp
bnNwZWN0b3IvSW5zcGVjdG9yU3RvcmFnZUFnZW50LmggXAogICAgIGluc3BlY3Rvci9JbnNwZWN0
b3JTdHlsZVNoZWV0LmggXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50Lmgg
XAotICAgIGluc3BlY3Rvci9JbnNwZWN0b3JVdGlsaXRpZXMuaCBcCiAgICAgaW5zcGVjdG9yL1Nj
cmlwdEdDRXZlbnRMaXN0ZW5lci5oIFwKICAgICBpbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0
b3J5LmggXAogICAgIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaCBcCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAgYi9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggYTZiZTg5Ni4uZTBmYWI4
NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCisr
KyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAtNDAsNyArNDAs
NiBAQAogI2luY2x1ZGUgIkhUTUxIZWFkRWxlbWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRP
TUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKLSNpbmNsdWRlICJJbnNw
ZWN0b3JVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRl
ICJOb2RlLmgiCiAjaW5jbHVkZSAiU3R5bGVTaGVldExpc3QuaCIKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclJlc291cmNlLmNwcAppbmRleCA1NzBhNGZiLi5jYjgxNDJkIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5jcHAKKysrIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAi
RG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkluc3BlY3Rv
ckZyb250ZW5kLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oIgogI2luY2x1
ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFRpbWluZy5oIgog
I2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgpAQCAtMzQ4LDQ0ICszNDksNiBAQCB2b2lkIElu
c3BlY3RvclJlc291cmNlOjpyZWxlYXNlU2NyaXB0T2JqZWN0KEluc3BlY3RvckZyb250ZW5kKiBm
cm9udGVuZCkKICAgICAgICAgZnJvbnRlbmQtPnJlbW92ZVJlc291cmNlKG1faWRlbnRpZmllcik7
CiB9CiAKLUNhY2hlZFJlc291cmNlKiBJbnNwZWN0b3JSZXNvdXJjZTo6Y2FjaGVkUmVzb3VyY2Uo
KSBjb25zdAotewotICAgIC8vIFRyeSBoYXJkIHRvIGZpbmQgYSBjb3JyZXNwb25kaW5nIENhY2hl
ZFJlc291cmNlLiBEdXJpbmcgcHJlbG9hZGluZywgQ2FjaGVkUmVzb3VyY2VMb2FkZXIgbWF5IG5v
dCBoYXZlIHRoZSByZXNvdXJjZSBpbiBkb2N1bWVudCByZXNvdXJjZXMgc2V0IHlldCwKLSAgICAv
LyBidXQgSW5zcGVjdG9yIHdpbGwgYWxyZWFkeSB0cnkgdG8gZmV0Y2ggZGF0YSB0aGF0IGlzIG9u
bHkgYXZhaWxhYmxlIHZpYSBDYWNoZWRSZXNvdXJjZSAoYW5kIGl0IHdvbid0IHVwZGF0ZSBvbmNl
IHRoZSByZXNvdXJjZSBpcyBhZGRlZCwKLSAgICAvLyBiZWNhdXNlIG1fY2hhbmdlcyB3aWxsIG5v
dCBoYXZlIHRoZSBhcHByb3ByaWF0ZSBiaXRzIHNldCkuCi0gICAgaWYgKCFtX2ZyYW1lKQotICAg
ICAgICByZXR1cm4gMDsKLSAgICBjb25zdCBTdHJpbmcmIHVybCA9IG1fcmVxdWVzdFVSTC5zdHJp
bmcoKTsKLSAgICBDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UgPSBtX2ZyYW1lLT5kb2N1
bWVudCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5jYWNoZWRSZXNvdXJjZSh1cmwpOwotICAg
IGlmICghY2FjaGVkUmVzb3VyY2UpCi0gICAgICAgIGNhY2hlZFJlc291cmNlID0gY2FjaGUoKS0+
cmVzb3VyY2VGb3JVUkwodXJsKTsKLSAgICByZXR1cm4gY2FjaGVkUmVzb3VyY2U7Ci19Ci0KLUlu
c3BlY3RvclJlc291cmNlOjpUeXBlIEluc3BlY3RvclJlc291cmNlOjpjYWNoZWRSZXNvdXJjZVR5
cGUoKSBjb25zdAotewotICAgIENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSA9IHRoaXMt
PmNhY2hlZFJlc291cmNlKCk7Ci0KLSAgICBpZiAoIWNhY2hlZFJlc291cmNlKQotICAgICAgICBy
ZXR1cm4gT3RoZXI7Ci0KLSAgICBzd2l0Y2ggKGNhY2hlZFJlc291cmNlLT50eXBlKCkpIHsKLSAg
ICAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZToKLSAgICAgICAgICAgIHJl
dHVybiBJbWFnZTsKLSAgICAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6Rm9udFJlc291cmNlOgot
ICAgICAgICAgICAgcmV0dXJuIEZvbnQ7Ci0gICAgICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkNT
U1N0eWxlU2hlZXQ6Ci0jaWYgRU5BQkxFKFhTTFQpCi0gICAgICAgIGNhc2UgQ2FjaGVkUmVzb3Vy
Y2U6OlhTTFN0eWxlU2hlZXQ6Ci0jZW5kaWYKLSAgICAgICAgICAgIHJldHVybiBTdHlsZXNoZWV0
OwotICAgICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpTY3JpcHQ6Ci0gICAgICAgICAgICByZXR1
cm4gU2NyaXB0OwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIE90aGVyOwot
ICAgIH0KLX0KLQogSW5zcGVjdG9yUmVzb3VyY2U6OlR5cGUgSW5zcGVjdG9yUmVzb3VyY2U6OnR5
cGUoKSBjb25zdAogewogICAgIGlmICghbV9vdmVycmlkZUNvbnRlbnQuaXNOdWxsKCkpCkBAIC0z
OTcsMTggKzM2MCwxOCBAQCBJbnNwZWN0b3JSZXNvdXJjZTo6VHlwZSBJbnNwZWN0b3JSZXNvdXJj
ZTo6dHlwZSgpIGNvbnN0CiAjZW5kaWYKIAogICAgIEFTU0VSVChtX2xvYWRlcik7Ci0gICAgaWYg
KGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIobV9yZXF1ZXN0VVJMLCBtX2xvYWRlci0+
cmVxdWVzdFVSTCgpKSkgewotICAgICAgICBJbnNwZWN0b3JSZXNvdXJjZTo6VHlwZSByZXNvdXJj
ZVR5cGUgPSBjYWNoZWRSZXNvdXJjZVR5cGUoKTsKLSAgICAgICAgaWYgKHJlc291cmNlVHlwZSA9
PSBPdGhlcikKLSAgICAgICAgICAgIHJldHVybiBEb2M7Ci0KLSAgICAgICAgcmV0dXJuIHJlc291
cmNlVHlwZTsKLSAgICB9CiAKICAgICBpZiAobV9sb2FkZXItPmZyYW1lTG9hZGVyKCkgJiYgZXF1
YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihtX3JlcXVlc3RVUkwsIG1fbG9hZGVyLT5mcmFt
ZUxvYWRlcigpLT5pY29uVVJMKCkpKQogICAgICAgICByZXR1cm4gSW1hZ2U7CiAKLSAgICByZXR1
cm4gY2FjaGVkUmVzb3VyY2VUeXBlKCk7CisgICAgaWYgKCFtX2ZyYW1lKQorICAgICAgICByZXR1
cm4gT3RoZXI7CisKKyAgICBJbnNwZWN0b3JSZXNvdXJjZTo6VHlwZSByZXNvdXJjZVR5cGUgPSBJ
bnNwZWN0b3JSZXNvdXJjZUFnZW50OjpjYWNoZWRSZXNvdXJjZVR5cGUobV9mcmFtZS0+ZG9jdW1l
bnQoKSwgbV9yZXF1ZXN0VVJMKTsKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRp
ZmllcihtX3JlcXVlc3RVUkwsIG1fbG9hZGVyLT5yZXF1ZXN0VVJMKCkpICYmIHJlc291cmNlVHlw
ZSA9PSBPdGhlcikKKyAgICAgICAgcmV0dXJuIERvYzsKKworICAgIHJldHVybiByZXNvdXJjZVR5
cGU7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2U6OnNldE92ZXJyaWRlQ29udGVudChjb25z
dCBTY3JpcHRTdHJpbmcmIGRhdGEsIFR5cGUgdHlwZSkKQEAgLTQyMywxNSArMzg2LDEwIEBAIFN0
cmluZyBJbnNwZWN0b3JSZXNvdXJjZTo6c291cmNlU3RyaW5nKCkgY29uc3QKICAgICBpZiAoIW1f
b3ZlcnJpZGVDb250ZW50LmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKG1fb3ZlcnJp
ZGVDb250ZW50KTsKIAotICAgIFN0cmluZyB0ZXh0RW5jb2RpbmdOYW1lOwotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHJlc291cmNlRGF0YSgmdGV4dEVuY29kaW5nTmFtZSk7Ci0g
ICAgaWYgKCFidWZmZXIpCisgICAgU3RyaW5nIHJlc3VsdDsKKyAgICBpZiAoIUluc3BlY3RvclJl
c291cmNlQWdlbnQ6OnJlc291cmNlQ29udGVudChtX2ZyYW1lLT5kb2N1bWVudCgpLCBtX3JlcXVl
c3RVUkwsICZyZXN1bHQpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICBUZXh0RW5j
b2RpbmcgZW5jb2RpbmcodGV4dEVuY29kaW5nTmFtZSk7Ci0gICAgaWYgKCFlbmNvZGluZy5pc1Zh
bGlkKCkpCi0gICAgICAgIGVuY29kaW5nID0gV2luZG93c0xhdGluMUVuY29kaW5nKCk7Ci0gICAg
cmV0dXJuIGVuY29kaW5nLmRlY29kZShidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwor
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIFN0cmluZyBJbnNwZWN0b3JSZXNvdXJjZTo6c291cmNl
Qnl0ZXMoKSBjb25zdApAQCAtNDQyLDQwICs0MDAsMTMgQEAgU3RyaW5nIEluc3BlY3RvclJlc291
cmNlOjpzb3VyY2VCeXRlcygpIGNvbnN0CiAgICAgICAgIFN0cmluZyBvdmVycmlkZUNvbnRlbnQg
PSBtX292ZXJyaWRlQ29udGVudDsKICAgICAgICAgZGF0YS5hcHBlbmQob3ZlcnJpZGVDb250ZW50
LmNoYXJhY3RlcnMoKSwgb3ZlcnJpZGVDb250ZW50Lmxlbmd0aCgpKTsKICAgICAgICAgYmFzZTY0
RW5jb2RlKGRhdGEsIG91dCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgU3RyaW5nIHRleHRFbmNv
ZGluZ05hbWU7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEgPSByZXNvdXJjZURh
dGEoJnRleHRFbmNvZGluZ05hbWUpOwotICAgICAgICBpZiAoIWRhdGEpCi0gICAgICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7Ci0gICAgICAgIGJhc2U2NEVuY29kZShkYXRhLT5idWZmZXIoKSwgb3V0
KTsKKyAgICAgICAgcmV0dXJuIFN0cmluZyhvdXQuZGF0YSgpLCBvdXQuc2l6ZSgpKTsKICAgICB9
Ci0gICAgcmV0dXJuIFN0cmluZyhvdXQuZGF0YSgpLCBvdXQuc2l6ZSgpKTsKLX0KIAotUGFzc1Jl
ZlB0cjxTaGFyZWRCdWZmZXI+IEluc3BlY3RvclJlc291cmNlOjpyZXNvdXJjZURhdGEoU3RyaW5n
KiB0ZXh0RW5jb2RpbmdOYW1lKSBjb25zdAotewotICAgIGlmIChtX2xvYWRlciAmJiBlcXVhbEln
bm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKG1fcmVxdWVzdFVSTCwgbV9sb2FkZXItPnJlcXVlc3RV
UkwoKSkpIHsKLSAgICAgICAgKnRleHRFbmNvZGluZ05hbWUgPSBtX2ZyYW1lLT5kb2N1bWVudCgp
LT5pbnB1dEVuY29kaW5nKCk7Ci0gICAgICAgIHJldHVybiBtX2xvYWRlci0+bWFpblJlc291cmNl
RGF0YSgpOwotICAgIH0KLQotICAgIENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSA9IHRo
aXMtPmNhY2hlZFJlc291cmNlKCk7Ci0gICAgaWYgKCFjYWNoZWRSZXNvdXJjZSkKLSAgICAgICAg
cmV0dXJuIDA7Ci0KLSAgICBpZiAoY2FjaGVkUmVzb3VyY2UtPmlzUHVyZ2VhYmxlKCkpIHsKLSAg
ICAgICAgLy8gSWYgdGhlIHJlc291cmNlIGlzIHB1cmdlYWJsZSB0aGVuIG1ha2UgaXQgdW5wdXJn
ZWFibGUgdG8gZ2V0Ci0gICAgICAgIC8vIGdldCBpdHMgZGF0YS4gVGhpcyBtaWdodCBmYWlsLCBp
biB3aGljaCBjYXNlIHdlIHJldHVybiBhbgotICAgICAgICAvLyBlbXB0eSBTdHJpbmcuCi0gICAg
ICAgIC8vIEZJWE1FOiBzaG91bGQgd2UgZG8gc29tZXRoaW5nIGVsc2UgaW4gdGhlIGNhc2Ugb2Yg
YSBwdXJnZWQKLSAgICAgICAgLy8gcmVzb3VyY2UgdGhhdCBpbmZvcm1zIHRoZSB1c2VyIHdoeSB0
aGVyZSBpcyBubyBkYXRhIGluIHRoZQotICAgICAgICAvLyBpbnNwZWN0b3I/Ci0gICAgICAgIGlm
ICghY2FjaGVkUmVzb3VyY2UtPm1ha2VQdXJnZWFibGUoZmFsc2UpKQotICAgICAgICAgICAgcmV0
dXJuIDA7Ci0gICAgfQotCi0gICAgKnRleHRFbmNvZGluZ05hbWUgPSBjYWNoZWRSZXNvdXJjZS0+
ZW5jb2RpbmcoKTsKLSAgICByZXR1cm4gY2FjaGVkUmVzb3VyY2UtPmRhdGEoKTsKKyAgICBTdHJp
bmcgcmVzdWx0OworICAgIGlmICghSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6cmVzb3VyY2VDb250
ZW50QmFzZTY0KG1fZnJhbWUtPmRvY3VtZW50KCksIG1fcmVxdWVzdFVSTCwgJnJlc3VsdCkpCisg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB2b2lkIElu
c3BlY3RvclJlc291cmNlOjpzdGFydFRpbWluZygpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVz
b3VyY2UuaAppbmRleCA3ZjcxZTZhLi45MDE5ZTZjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clJlc291cmNlLmgKQEAgLTk5LDEwICs5OSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRp
ZgogCiAgICAgICAgIHZvaWQgc2V0T3ZlcnJpZGVDb250ZW50KGNvbnN0IFNjcmlwdFN0cmluZyYg
ZGF0YSwgVHlwZSk7Ci0KICAgICAgICAgU3RyaW5nIHNvdXJjZVN0cmluZygpIGNvbnN0OwogICAg
ICAgICBTdHJpbmcgc291cmNlQnl0ZXMoKSBjb25zdDsKLSAgICAgICAgUGFzc1JlZlB0cjxTaGFy
ZWRCdWZmZXI+IHJlc291cmNlRGF0YShTdHJpbmcqIHRleHRFbmNvZGluZ05hbWUpIGNvbnN0Owog
CiAgICAgICAgIGJvb2wgaXNTYW1lTG9hZGVyKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpIGNvbnN0
IHsgcmV0dXJuIGxvYWRlciA9PSBtX2xvYWRlcjsgfQogICAgICAgICB2b2lkIG1hcmtNYWluUmVz
b3VyY2UoKSB7IG1faXNNYWluUmVzb3VyY2UgPSB0cnVlOyB9CkBAIC0xNjMsOSArMTYxLDYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBJbnNwZWN0b3JSZXNvdXJjZSh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgS1VSTCYgcmVxdWVzdFVSTCk7
CiAgICAgICAgIFR5cGUgdHlwZSgpIGNvbnN0OwogCi0gICAgICAgIFR5cGUgY2FjaGVkUmVzb3Vy
Y2VUeXBlKCkgY29uc3Q7Ci0gICAgICAgIENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSgp
IGNvbnN0OwotCiAjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQogICAgICAgICB2b2lkIG1hcmtXZWJT
b2NrZXQoKSB7IG1faXNXZWJTb2NrZXQgPSB0cnVlOyB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uNDgxMDc2OAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCkBAIC0wLDAgKzEsMTQ4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkluc3BlY3RvclJlc291cmNlQWdlbnQuaCIKKworI2luY2x1ZGUg
IkJhc2U2NC5oIgorI2luY2x1ZGUgIkNhY2hlLmgiCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2Uu
aCIKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgorI2luY2x1ZGUgIkRvY3VtZW50
LmgiCisjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2lu
Y2x1ZGUgIkZyYW1lTG9hZGVyLmgiCisjaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlNoYXJl
ZEJ1ZmZlci5oIgorI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgorCisjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgorCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
Citib29sIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OnJlc291cmNlQ29udGVudChEb2N1bWVudCog
ZG9jdW1lbnQsIGNvbnN0IEtVUkwmIHVybCwgU3RyaW5nKiByZXN1bHQpCit7CisgICAgaWYgKCFk
b2N1bWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgU3RyaW5nIHRleHRFbmNvZGlu
Z05hbWU7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudDo6cmVzb3VyY2VEYXRhKGRvY3VtZW50LCB1cmwsICZ0ZXh0RW5jb2RpbmdOYW1lKTsK
KworICAgIGlmIChidWZmZXIpIHsKKyAgICAgICAgVGV4dEVuY29kaW5nIGVuY29kaW5nKHRleHRF
bmNvZGluZ05hbWUpOworICAgICAgICBpZiAoIWVuY29kaW5nLmlzVmFsaWQoKSkKKyAgICAgICAg
ICAgIGVuY29kaW5nID0gV2luZG93c0xhdGluMUVuY29kaW5nKCk7CisgICAgICAgICpyZXN1bHQg
PSBlbmNvZGluZy5kZWNvZGUoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIElu
c3BlY3RvclJlc291cmNlQWdlbnQ6OnJlc291cmNlQ29udGVudEJhc2U2NChEb2N1bWVudCogZG9j
dW1lbnQsIGNvbnN0IEtVUkwmIHVybCwgU3RyaW5nKiByZXN1bHQpCit7CisgICAgVmVjdG9yPGNo
YXI+IG91dDsKKyAgICBTdHJpbmcgdGV4dEVuY29kaW5nTmFtZTsKKyAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBkYXRhID0gSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6cmVzb3VyY2VEYXRhKGRvY3Vt
ZW50LCB1cmwsICZ0ZXh0RW5jb2RpbmdOYW1lKTsKKyAgICBpZiAoIWRhdGEpIHsKKyAgICAgICAg
KnJlc3VsdCA9IFN0cmluZygpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
YmFzZTY0RW5jb2RlKGRhdGEtPmJ1ZmZlcigpLCBvdXQpOworICAgICpyZXN1bHQgPSBTdHJpbmco
b3V0LmRhdGEoKSwgb3V0LnNpemUoKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK1Bhc3NSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpyZXNvdXJjZURhdGEoRG9j
dW1lbnQqIGRvY3VtZW50LCBjb25zdCBLVVJMJiB1cmwsIFN0cmluZyogdGV4dEVuY29kaW5nTmFt
ZSkKK3sKKyAgICBGcmFtZUxvYWRlciogZnJhbWVMb2FkZXIgPSBkb2N1bWVudC0+ZnJhbWUoKS0+
bG9hZGVyKCk7CisgICAgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciA9IGZyYW1lTG9hZGVyLT5kb2N1
bWVudExvYWRlcigpOworICAgIGlmIChlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKHVy
bCwgbG9hZGVyLT51cmwoKSkpIHsKKyAgICAgICAgKnRleHRFbmNvZGluZ05hbWUgPSBkb2N1bWVu
dC0+aW5wdXRFbmNvZGluZygpOworICAgICAgICByZXR1cm4gZnJhbWVMb2FkZXItPmRvY3VtZW50
TG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKTsKKyAgICB9CisKKyAgICBDYWNoZWRSZXNvdXJj
ZSogY2FjaGVkUmVzb3VyY2UgPSBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpjYWNoZWRSZXNvdXJj
ZShkb2N1bWVudCwgdXJsKTsKKyAgICBpZiAoIWNhY2hlZFJlc291cmNlKQorICAgICAgICByZXR1
cm4gMDsKKworICAgIGlmIChjYWNoZWRSZXNvdXJjZS0+aXNQdXJnZWFibGUoKSkgeworICAgICAg
ICAvLyBJZiB0aGUgcmVzb3VyY2UgaXMgcHVyZ2VhYmxlIHRoZW4gbWFrZSBpdCB1bnB1cmdlYWJs
ZSB0byBnZXQKKyAgICAgICAgLy8gZ2V0IGl0cyBkYXRhLiBUaGlzIG1pZ2h0IGZhaWwsIGluIHdo
aWNoIGNhc2Ugd2UgcmV0dXJuIGFuCisgICAgICAgIC8vIGVtcHR5IFN0cmluZy4KKyAgICAgICAg
Ly8gRklYTUU6IHNob3VsZCB3ZSBkbyBzb21ldGhpbmcgZWxzZSBpbiB0aGUgY2FzZSBvZiBhIHB1
cmdlZAorICAgICAgICAvLyByZXNvdXJjZSB0aGF0IGluZm9ybXMgdGhlIHVzZXIgd2h5IHRoZXJl
IGlzIG5vIGRhdGEgaW4gdGhlCisgICAgICAgIC8vIGluc3BlY3Rvcj8KKyAgICAgICAgaWYgKCFj
YWNoZWRSZXNvdXJjZS0+bWFrZVB1cmdlYWJsZShmYWxzZSkpCisgICAgICAgICAgICByZXR1cm4g
MDsKKyAgICB9CisKKyAgICAqdGV4dEVuY29kaW5nTmFtZSA9IGNhY2hlZFJlc291cmNlLT5lbmNv
ZGluZygpOworICAgIHJldHVybiBjYWNoZWRSZXNvdXJjZS0+ZGF0YSgpOworfQorCitJbnNwZWN0
b3JSZXNvdXJjZTo6VHlwZSBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpjYWNoZWRSZXNvdXJjZVR5
cGUoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBLVVJMJiB1cmwpCit7CisgICAgQ2FjaGVkUmVz
b3VyY2UqIGNhY2hlZFJlc291cmNlID0gSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6Y2FjaGVkUmVz
b3VyY2UoZG9jdW1lbnQsIHVybCk7CisgICAgaWYgKCFjYWNoZWRSZXNvdXJjZSkKKyAgICAgICAg
cmV0dXJuIEluc3BlY3RvclJlc291cmNlOjpPdGhlcjsKKworICAgIHN3aXRjaCAoY2FjaGVkUmVz
b3VyY2UtPnR5cGUoKSkgeworICAgICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpJbWFnZVJlc291
cmNlOgorICAgICAgICAgICAgcmV0dXJuIEluc3BlY3RvclJlc291cmNlOjpJbWFnZTsKKyAgICAg
ICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6Rm9udFJlc291cmNlOgorICAgICAgICAgICAgcmV0dXJu
IEluc3BlY3RvclJlc291cmNlOjpGb250OworICAgICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpD
U1NTdHlsZVNoZWV0OgorI2lmIEVOQUJMRShYU0xUKQorICAgICAgICBjYXNlIENhY2hlZFJlc291
cmNlOjpYU0xTdHlsZVNoZWV0OgorI2VuZGlmCisgICAgICAgICAgICByZXR1cm4gSW5zcGVjdG9y
UmVzb3VyY2U6OlN0eWxlc2hlZXQ7CisgICAgICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlNjcmlw
dDoKKyAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3JSZXNvdXJjZTo6U2NyaXB0OworICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIEluc3BlY3RvclJlc291cmNlOjpPdGhlcjsK
KyAgICB9Cit9CisKK0NhY2hlZFJlc291cmNlKiBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpjYWNo
ZWRSZXNvdXJjZShEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEtVUkwmIHVybCkNCit7DQorICAg
IGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nID0gdXJsLnN0cmluZygpOw0KKyAgICBDYWNoZWRSZXNv
dXJjZSogY2FjaGVkUmVzb3VyY2UgPSBkb2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+
Y2FjaGVkUmVzb3VyY2UodXJsU3RyaW5nKTsNCisgICAgaWYgKCFjYWNoZWRSZXNvdXJjZSkNCisg
ICAgICAgIGNhY2hlZFJlc291cmNlID0gY2FjaGUoKS0+cmVzb3VyY2VGb3JVUkwodXJsU3RyaW5n
KTsNCisgICAgcmV0dXJuIGNhY2hlZFJlc291cmNlOw0KK30NCisNCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmJkNTc4NTAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JSZXNvdXJjZUFnZW50LmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudF9oCisjZGVmaW5lIEluc3BlY3RvclJlc291cmNlQWdlbnRfaAorCisjaW5jbHVkZSAi
SW5zcGVjdG9yUmVzb3VyY2UuaCIKKworI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKKyNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQorCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIFN0cmluZzsKK30K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDYWNoZWRSZXNvdXJjZTsKK2NsYXNzIERv
Y3VtZW50OworY2xhc3MgS1VSTDsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKKworY2xhc3MgSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudCB7CitwdWJsaWM6CisgICAgc3RhdGljIGJvb2wgcmVzb3VyY2VDb250
ZW50KERvY3VtZW50KiwgY29uc3QgS1VSTCYsIFN0cmluZyogcmVzdWx0KTsKKyAgICBzdGF0aWMg
Ym9vbCByZXNvdXJjZUNvbnRlbnRCYXNlNjQoRG9jdW1lbnQqLCBjb25zdCBLVVJMJiwgU3RyaW5n
KiByZXN1bHQpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VE
YXRhKERvY3VtZW50KiwgY29uc3QgS1VSTCYsIFN0cmluZyogdGV4dEVuY29kaW5nTmFtZSk7Cisg
ICAgc3RhdGljIEluc3BlY3RvclJlc291cmNlOjpUeXBlIGNhY2hlZFJlc291cmNlVHlwZShEb2N1
bWVudCosIGNvbnN0IEtVUkwmKTsKKyAgICBzdGF0aWMgQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJl
c291cmNlKERvY3VtZW50KiwgY29uc3QgS1VSTCYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKKworI2VuZGlmIC8vICFkZWZpbmVk
KEluc3BlY3RvclJlc291cmNlQWdlbnRfaCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclN0eWxlU2hlZXQuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5
bGVTaGVldC5jcHAKaW5kZXggZWIyNWZjNC4uOWVlMWY1MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlICJFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTEhlYWRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9y
Q1NTQWdlbnQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JVdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJJ
bnNwZWN0b3JSZXNvdXJjZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAj
aW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIlN0eWxlU2hlZXRMaXN0LmgiCkBAIC00NjgsNyAr
NDY4LDcgQEAgYm9vbCBJbnNwZWN0b3JTdHlsZVNoZWV0OjpyZXNvdXJjZVN0eWxlU2hlZXRUZXh0
KFN0cmluZyogcmVzdWx0KSBjb25zdAogICAgIGlmICghbV9wYWdlU3R5bGVTaGVldCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIEluc3BlY3RvclV0aWxpdGllczo6cmVzb3Vy
Y2VDb250ZW50Rm9yVVJMKG1fcGFnZVN0eWxlU2hlZXQtPmZpbmFsVVJMKCksIG93bmVyRG9jdW1l
bnQoKSwgcmVzdWx0KTsKKyAgICByZXR1cm4gSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6cmVzb3Vy
Y2VDb250ZW50KG93bmVyRG9jdW1lbnQoKSwgbV9wYWdlU3R5bGVTaGVldC0+ZmluYWxVUkwoKSwg
cmVzdWx0KTsKIH0KIAogYm9vbCBJbnNwZWN0b3JTdHlsZVNoZWV0OjppbmxpbmVTdHlsZVNoZWV0
VGV4dChTdHJpbmcqIHJlc3VsdCkgY29uc3QKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclV0aWxpdGllcy5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JVdGls
aXRpZXMuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZDZiMGQ3Li4wMDAwMDAw
Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclV0aWxpdGllcy5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSw5NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
LSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkluc3Bl
Y3RvclV0aWxpdGllcy5oIgotCi0jaW5jbHVkZSAiQ2FjaGUuaCIKLSNpbmNsdWRlICJDYWNoZWRS
ZXNvdXJjZS5oIgotI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCi0jaW5jbHVkZSAi
RG9jdW1lbnQuaCIKLSNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgotI2luY2x1ZGUgIkZyYW1l
LmgiCi0jaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKLSNpbmNsdWRlICJLVVJMLmgiCi0jaW5jbHVk
ZSAiU2hhcmVkQnVmZmVyLmgiCi0jaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCi0KLSNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+Ci0KLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLS8vIHN0YXRpYwotYm9vbCBJbnNwZWN0b3JVdGlsaXRpZXM6OnJlc291cmNlQ29u
dGVudEZvclVSTChjb25zdCBLVVJMJiB1cmwsIERvY3VtZW50KiBmcmFtZURvY3VtZW50LCBTdHJp
bmcqIHJlc3VsdCkKLXsKLSAgICBpZiAoIWZyYW1lRG9jdW1lbnQpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIFN0cmluZyB0ZXh0RW5jb2RpbmdOYW1lOwotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlcjsKLSAgICBpZiAoZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcih1
cmwsIGZyYW1lRG9jdW1lbnQtPmZyYW1lKCktPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5y
ZXF1ZXN0VVJMKCkpKSB7Ci0gICAgICAgIHRleHRFbmNvZGluZ05hbWUgPSBmcmFtZURvY3VtZW50
LT5pbnB1dEVuY29kaW5nKCk7Ci0gICAgICAgIGJ1ZmZlciA9IGZyYW1lRG9jdW1lbnQtPmZyYW1l
KCktPmxvYWRlcigpLT5wcm92aXNpb25hbERvY3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZURh
dGEoKTsKLSAgICB9IGVsc2UgewotICAgICAgICBjb25zdCBTdHJpbmcmIHVybFN0cmluZyA9IHVy
bC5zdHJpbmcoKTsKLSAgICAgICAgQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlID0gZnJh
bWVEb2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+Y2FjaGVkUmVzb3VyY2UodXJsU3Ry
aW5nKTsKLSAgICAgICAgaWYgKCFjYWNoZWRSZXNvdXJjZSkKLSAgICAgICAgICAgIGNhY2hlZFJl
c291cmNlID0gY2FjaGUoKS0+cmVzb3VyY2VGb3JVUkwodXJsU3RyaW5nKTsKLQotICAgICAgICBB
U1NFUlQoY2FjaGVkUmVzb3VyY2UpOyAvLyBGSVhNRShhcGF2bG92KTogVGhpcyBtaWdodCBiZSB0
b28gYWdncmVzc2l2ZS4KLQotICAgICAgICBib29sIGlzVW5wdXJnZWFibGUgPSB0cnVlOwotICAg
ICAgICBpZiAoY2FjaGVkUmVzb3VyY2UtPmlzUHVyZ2VhYmxlKCkpIHsKLSAgICAgICAgICAgIC8v
IElmIHRoZSByZXNvdXJjZSBpcyBwdXJnZWFibGUgdGhlbiBtYWtlIGl0IHVucHVyZ2VhYmxlIHRv
IGdldAotICAgICAgICAgICAgLy8gaXRzIGRhdGEuIFRoaXMgbWlnaHQgZmFpbCwgaW4gd2hpY2gg
Y2FzZSB3ZSByZXR1cm4gYW4KLSAgICAgICAgICAgIC8vIGVtcHR5IFN0cmluZy4KLSAgICAgICAg
ICAgIGlmICghY2FjaGVkUmVzb3VyY2UtPm1ha2VQdXJnZWFibGUoZmFsc2UpKQotICAgICAgICAg
ICAgICAgIGlzVW5wdXJnZWFibGUgPSBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBpZiAoaXNV
bnB1cmdlYWJsZSkgewotICAgICAgICAgICAgdGV4dEVuY29kaW5nTmFtZSA9IGNhY2hlZFJlc291
cmNlLT5lbmNvZGluZygpOwotICAgICAgICAgICAgYnVmZmVyID0gY2FjaGVkUmVzb3VyY2UtPmRh
dGEoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChidWZmZXIpIHsKLSAgICAgICAgVGV4
dEVuY29kaW5nIGVuY29kaW5nKHRleHRFbmNvZGluZ05hbWUpOwotICAgICAgICBpZiAoIWVuY29k
aW5nLmlzVmFsaWQoKSkKLSAgICAgICAgICAgIGVuY29kaW5nID0gV2luZG93c0xhdGluMUVuY29k
aW5nKCk7Ci0gICAgICAgICpyZXN1bHQgPSBlbmNvZGluZy5kZWNvZGUoYnVmZmVyLT5kYXRhKCks
IGJ1ZmZlci0+c2l6ZSgpKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgcmV0
dXJuIGZhbHNlOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFC
TEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVXRp
bGl0aWVzLmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JVdGlsaXRpZXMuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjgzNzQyNi4uMDAwMDAwMAotLS0gYS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JVdGlsaXRpZXMuaAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0g
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaWZuZGVmIEluc3BlY3RvclV0aWxpdGllc19oCi0jZGVmaW5lIEluc3BlY3RvclV0aWxpdGll
c19oCi0KLSNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgotCi0jaWYgRU5BQkxFKElOU1BFQ1RP
UikKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uOwot
Y2xhc3MgQ1NTU3R5bGVSdWxlOwotY2xhc3MgQ1NTU3R5bGVTaGVldDsKLWNsYXNzIERvY3VtZW50
OwotY2xhc3MgS1VSTDsKLWNsYXNzIFN0eWxlQmFzZTsKLQotY2xhc3MgSW5zcGVjdG9yVXRpbGl0
aWVzIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgYm9vbCByZXNvdXJjZUNvbnRlbnRGb3JVUkwoY29u
c3QgS1VSTCYgdXJsLCBEb2N1bWVudCogZnJhbWVEb2N1bWVudCwgU3RyaW5nKiByZXN1bHQpOwot
fTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RP
UikKLQotI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvclV0aWxpdGllc19oKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70246</attachid>
            <date>2010-10-08 07:09:37 -0700</date>
            <delta_ts>2010-10-08 07:54:36 -0700</delta_ts>
            <desc>[PATCH] With good style.</desc>
            <filename>resource_agent</filename>
            <type>text/plain</type>
            <size>27419</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CmluZGV4IDUzMzFlYWUuLjdmMTZiZmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTExMSw4ICsxMTExLDggQEAg
U0VUKFdlYkNvcmVfU09VUkNFUwogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uY3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwCiAgICAgaW5z
cGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcAorICAgIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNv
dXJjZUFnZW50LmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAotICAg
IGluc3BlY3Rvci9JbnNwZWN0b3JVdGlsaXRpZXMuY3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3Rv
clZhbHVlcy5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yU3RvcmFnZUFnZW50LmNwcAogICAg
IGluc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1ZmE5YTYxLi5mNGIyN2VlIDEw
MDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDM0IEBACisyMDEwLTEwLTA4ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFdlYiBJbnNwZWN0b3I6IGV4dHJhY3QgY29udGVudC1yZWxhdGVkIG1ldGhvZHMgaW50byBJbnNw
ZWN0b3JSZXNvdXJjZUFnZW50LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDc0MTUKKworICAgICAgICBUaGlzIGlzIG5lZWRlZCBmb3IgcmVzb3VyY2Ut
dHJhY2tpbmctbGVzcyBvcGVyYXRpb24gb2YgcmVzb3VyY2VzIHBhbmVsLgorCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2Vi
Q29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291
cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlOjp0eXBlKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlOjpzb3VyY2VTdHJpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2U6OnNvdXJjZUJ5dGVzKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
UmVzb3VyY2VBZ2VudDo6cmVzb3VyY2VDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvclJlc291cmNlQWdlbnQ6OnJlc291cmNlQ29udGVudEJhc2U2NCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpyZXNvdXJjZURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6Y2FjaGVkUmVzb3VyY2VUeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmNhY2hlZFJlc291cmNlKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oOiBBZGRlZC4KKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JTdHlsZVNoZWV0OjpyZXNvdXJjZVN0eWxlU2hlZXRUZXh0KToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yVXRpbGl0aWVzLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yVXRpbGl0aWVzLmg6IFJlbW92ZWQuCisKIDIwMTAtMTAtMDggIEpv
Y2VseW4gVHVyY290dGUgIDxqb2NlbHluLnR1cmNvdHRlQG5va2lhLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDRhMjU0N2Iu
Ljk0NzYyMmYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5hbQpAQCAtMTgyOSwxNCArMTgyOSwxNCBAQCB3ZWJjb3JlX3NvdXJjZXMg
Kz0gXAogCVdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaCBcCiAJV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuY3BwIFwKIAlXZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JSZXNvdXJjZS5oIFwKKwlXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNv
dXJjZUFnZW50LmNwcCBcCisJV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dC5oIFwKIAlXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdG9yYWdlQWdlbnQuY3BwIFwKIAlX
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdG9yYWdlQWdlbnQuaCBcCiAJV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAgXAogCVdlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclN0eWxlU2hlZXQuaCBcCiAJV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVB
Z2VudC5jcHAgXAogCVdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaCBc
Ci0JV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVXRpbGl0aWVzLmNwcCBcCi0JV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yVXRpbGl0aWVzLmggXAogCVdlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclZhbHVlcy5jcHAgXAogCVdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oIFwK
IAlXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJSZXNvdXJjZS5oIFwKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMzM2
N2NlZS4uY2U1MTJkNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKQEAgLTE5MzcsMTQgKzE5MzcsMTQgQEAKICAgICAgICAgICAgICdp
bnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oJywKICAgICAgICAgICAgICdpbnNwZWN0
b3IvSW5zcGVjdG9yUmVzb3VyY2UuY3BwJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVj
dG9yUmVzb3VyY2UuaCcsCisgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNl
QWdlbnQuY3BwJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dC5oJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yU3RvcmFnZUFnZW50LmNwcCcs
CiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvclN0b3JhZ2VBZ2VudC5oJywKICAgICAg
ICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAnLAogICAgICAgICAgICAg
J2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rv
ci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0lu
c3BlY3RvclRpbWVsaW5lQWdlbnQuaCcsCi0gICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3Rv
clV0aWxpdGllcy5jcHAnLAotICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JVdGlsaXRp
ZXMuaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAnLAogICAg
ICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaCcsCiAgICAgICAgICAgICAnaW5z
cGVjdG9yL0luc3BlY3RvcldvcmtlclJlc291cmNlLmgnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9X
ZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggOWIxYzUzNC4uN2ExM2U5OCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJv
CkBAIC0xMDAyLDEwICsxMDAyLDEwIEBAIFNPVVJDRVMgKz0gXAogICAgIGluc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmls
ZXJBZ2VudC5jcHAgXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5jcHAgXAorICAg
IGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcCBcCiAgICAgaW5zcGVjdG9yL0lu
c3BlY3RvclN0b3JhZ2VBZ2VudC5jcHAgXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNo
ZWV0LmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIFwKLSAg
ICBpbnNwZWN0b3IvSW5zcGVjdG9yVXRpbGl0aWVzLmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3Bl
Y3RvclZhbHVlcy5jcHAgXAogICAgIGluc3BlY3Rvci9TY3JpcHRCcmVha3BvaW50LmNwcCBcCiAg
ICAgaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAgXApAQCAtMTg4MiwxMCArMTg4
MiwxMCBAQCBIRUFERVJTICs9IFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmggXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmggXAogICAgIGlu
c3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5oIFwKKyAgICBpbnNwZWN0b3IvSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudC5oIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yU3RvcmFnZUFnZW50LmggXAog
ICAgIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmggXAogICAgIGluc3BlY3Rvci9JbnNw
ZWN0b3JUaW1lbGluZUFnZW50LmggXAotICAgIGluc3BlY3Rvci9JbnNwZWN0b3JVdGlsaXRpZXMu
aCBcCiAgICAgaW5zcGVjdG9yL1NjcmlwdEdDRXZlbnRMaXN0ZW5lci5oIFwKICAgICBpbnNwZWN0
b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmggXAogICAgIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlR3JvdXAuaCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDU1NBZ2VudC5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAK
aW5kZXggYTZiZTg5Ni4uZTBmYWI4NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ1NTQWdlbnQuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0Fn
ZW50LmNwcApAQCAtNDAsNyArNDAsNiBAQAogI2luY2x1ZGUgIkhUTUxIZWFkRWxlbWVudC5oIgog
I2luY2x1ZGUgIkluc3BlY3RvckRPTUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRl
bmQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiU3R5bGVTaGVldExpc3Qu
aCIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcCBi
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcAppbmRleCA1NzBhNGZiLi5j
YjgxNDJkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5j
cHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuY3BwCkBAIC00MCw2
ICs0MCw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZS5o
IgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIlJl
c291cmNlTG9hZFRpbWluZy5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgpAQCAtMzQ4
LDQ0ICszNDksNiBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlOjpyZWxlYXNlU2NyaXB0T2JqZWN0
KEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkKICAgICAgICAgZnJvbnRlbmQtPnJlbW92ZVJl
c291cmNlKG1faWRlbnRpZmllcik7CiB9CiAKLUNhY2hlZFJlc291cmNlKiBJbnNwZWN0b3JSZXNv
dXJjZTo6Y2FjaGVkUmVzb3VyY2UoKSBjb25zdAotewotICAgIC8vIFRyeSBoYXJkIHRvIGZpbmQg
YSBjb3JyZXNwb25kaW5nIENhY2hlZFJlc291cmNlLiBEdXJpbmcgcHJlbG9hZGluZywgQ2FjaGVk
UmVzb3VyY2VMb2FkZXIgbWF5IG5vdCBoYXZlIHRoZSByZXNvdXJjZSBpbiBkb2N1bWVudCByZXNv
dXJjZXMgc2V0IHlldCwKLSAgICAvLyBidXQgSW5zcGVjdG9yIHdpbGwgYWxyZWFkeSB0cnkgdG8g
ZmV0Y2ggZGF0YSB0aGF0IGlzIG9ubHkgYXZhaWxhYmxlIHZpYSBDYWNoZWRSZXNvdXJjZSAoYW5k
IGl0IHdvbid0IHVwZGF0ZSBvbmNlIHRoZSByZXNvdXJjZSBpcyBhZGRlZCwKLSAgICAvLyBiZWNh
dXNlIG1fY2hhbmdlcyB3aWxsIG5vdCBoYXZlIHRoZSBhcHByb3ByaWF0ZSBiaXRzIHNldCkuCi0g
ICAgaWYgKCFtX2ZyYW1lKQotICAgICAgICByZXR1cm4gMDsKLSAgICBjb25zdCBTdHJpbmcmIHVy
bCA9IG1fcmVxdWVzdFVSTC5zdHJpbmcoKTsKLSAgICBDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVz
b3VyY2UgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5jYWNo
ZWRSZXNvdXJjZSh1cmwpOwotICAgIGlmICghY2FjaGVkUmVzb3VyY2UpCi0gICAgICAgIGNhY2hl
ZFJlc291cmNlID0gY2FjaGUoKS0+cmVzb3VyY2VGb3JVUkwodXJsKTsKLSAgICByZXR1cm4gY2Fj
aGVkUmVzb3VyY2U7Ci19Ci0KLUluc3BlY3RvclJlc291cmNlOjpUeXBlIEluc3BlY3RvclJlc291
cmNlOjpjYWNoZWRSZXNvdXJjZVR5cGUoKSBjb25zdAotewotICAgIENhY2hlZFJlc291cmNlKiBj
YWNoZWRSZXNvdXJjZSA9IHRoaXMtPmNhY2hlZFJlc291cmNlKCk7Ci0KLSAgICBpZiAoIWNhY2hl
ZFJlc291cmNlKQotICAgICAgICByZXR1cm4gT3RoZXI7Ci0KLSAgICBzd2l0Y2ggKGNhY2hlZFJl
c291cmNlLT50eXBlKCkpIHsKLSAgICAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNv
dXJjZToKLSAgICAgICAgICAgIHJldHVybiBJbWFnZTsKLSAgICAgICAgY2FzZSBDYWNoZWRSZXNv
dXJjZTo6Rm9udFJlc291cmNlOgotICAgICAgICAgICAgcmV0dXJuIEZvbnQ7Ci0gICAgICAgIGNh
c2UgQ2FjaGVkUmVzb3VyY2U6OkNTU1N0eWxlU2hlZXQ6Ci0jaWYgRU5BQkxFKFhTTFQpCi0gICAg
ICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlhTTFN0eWxlU2hlZXQ6Ci0jZW5kaWYKLSAgICAgICAg
ICAgIHJldHVybiBTdHlsZXNoZWV0OwotICAgICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpTY3Jp
cHQ6Ci0gICAgICAgICAgICByZXR1cm4gU2NyaXB0OwotICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgcmV0dXJuIE90aGVyOwotICAgIH0KLX0KLQogSW5zcGVjdG9yUmVzb3VyY2U6OlR5cGUg
SW5zcGVjdG9yUmVzb3VyY2U6OnR5cGUoKSBjb25zdAogewogICAgIGlmICghbV9vdmVycmlkZUNv
bnRlbnQuaXNOdWxsKCkpCkBAIC0zOTcsMTggKzM2MCwxOCBAQCBJbnNwZWN0b3JSZXNvdXJjZTo6
VHlwZSBJbnNwZWN0b3JSZXNvdXJjZTo6dHlwZSgpIGNvbnN0CiAjZW5kaWYKIAogICAgIEFTU0VS
VChtX2xvYWRlcik7Ci0gICAgaWYgKGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIobV9y
ZXF1ZXN0VVJMLCBtX2xvYWRlci0+cmVxdWVzdFVSTCgpKSkgewotICAgICAgICBJbnNwZWN0b3JS
ZXNvdXJjZTo6VHlwZSByZXNvdXJjZVR5cGUgPSBjYWNoZWRSZXNvdXJjZVR5cGUoKTsKLSAgICAg
ICAgaWYgKHJlc291cmNlVHlwZSA9PSBPdGhlcikKLSAgICAgICAgICAgIHJldHVybiBEb2M7Ci0K
LSAgICAgICAgcmV0dXJuIHJlc291cmNlVHlwZTsKLSAgICB9CiAKICAgICBpZiAobV9sb2FkZXIt
PmZyYW1lTG9hZGVyKCkgJiYgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihtX3JlcXVl
c3RVUkwsIG1fbG9hZGVyLT5mcmFtZUxvYWRlcigpLT5pY29uVVJMKCkpKQogICAgICAgICByZXR1
cm4gSW1hZ2U7CiAKLSAgICByZXR1cm4gY2FjaGVkUmVzb3VyY2VUeXBlKCk7CisgICAgaWYgKCFt
X2ZyYW1lKQorICAgICAgICByZXR1cm4gT3RoZXI7CisKKyAgICBJbnNwZWN0b3JSZXNvdXJjZTo6
VHlwZSByZXNvdXJjZVR5cGUgPSBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpjYWNoZWRSZXNvdXJj
ZVR5cGUobV9mcmFtZS0+ZG9jdW1lbnQoKSwgbV9yZXF1ZXN0VVJMKTsKKyAgICBpZiAoZXF1YWxJ
Z25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihtX3JlcXVlc3RVUkwsIG1fbG9hZGVyLT5yZXF1ZXN0
VVJMKCkpICYmIHJlc291cmNlVHlwZSA9PSBPdGhlcikKKyAgICAgICAgcmV0dXJuIERvYzsKKwor
ICAgIHJldHVybiByZXNvdXJjZVR5cGU7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2U6OnNl
dE92ZXJyaWRlQ29udGVudChjb25zdCBTY3JpcHRTdHJpbmcmIGRhdGEsIFR5cGUgdHlwZSkKQEAg
LTQyMywxNSArMzg2LDEwIEBAIFN0cmluZyBJbnNwZWN0b3JSZXNvdXJjZTo6c291cmNlU3RyaW5n
KCkgY29uc3QKICAgICBpZiAoIW1fb3ZlcnJpZGVDb250ZW50LmlzTnVsbCgpKQogICAgICAgICBy
ZXR1cm4gU3RyaW5nKG1fb3ZlcnJpZGVDb250ZW50KTsKIAotICAgIFN0cmluZyB0ZXh0RW5jb2Rp
bmdOYW1lOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHJlc291cmNlRGF0YSgm
dGV4dEVuY29kaW5nTmFtZSk7Ci0gICAgaWYgKCFidWZmZXIpCisgICAgU3RyaW5nIHJlc3VsdDsK
KyAgICBpZiAoIUluc3BlY3RvclJlc291cmNlQWdlbnQ6OnJlc291cmNlQ29udGVudChtX2ZyYW1l
LT5kb2N1bWVudCgpLCBtX3JlcXVlc3RVUkwsICZyZXN1bHQpKQogICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7Ci0KLSAgICBUZXh0RW5jb2RpbmcgZW5jb2RpbmcodGV4dEVuY29kaW5nTmFtZSk7Ci0g
ICAgaWYgKCFlbmNvZGluZy5pc1ZhbGlkKCkpCi0gICAgICAgIGVuY29kaW5nID0gV2luZG93c0xh
dGluMUVuY29kaW5nKCk7Ci0gICAgcmV0dXJuIGVuY29kaW5nLmRlY29kZShidWZmZXItPmRhdGEo
KSwgYnVmZmVyLT5zaXplKCkpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIFN0cmluZyBJbnNw
ZWN0b3JSZXNvdXJjZTo6c291cmNlQnl0ZXMoKSBjb25zdApAQCAtNDQyLDQwICs0MDAsMTMgQEAg
U3RyaW5nIEluc3BlY3RvclJlc291cmNlOjpzb3VyY2VCeXRlcygpIGNvbnN0CiAgICAgICAgIFN0
cmluZyBvdmVycmlkZUNvbnRlbnQgPSBtX292ZXJyaWRlQ29udGVudDsKICAgICAgICAgZGF0YS5h
cHBlbmQob3ZlcnJpZGVDb250ZW50LmNoYXJhY3RlcnMoKSwgb3ZlcnJpZGVDb250ZW50Lmxlbmd0
aCgpKTsKICAgICAgICAgYmFzZTY0RW5jb2RlKGRhdGEsIG91dCk7Ci0gICAgfSBlbHNlIHsKLSAg
ICAgICAgU3RyaW5nIHRleHRFbmNvZGluZ05hbWU7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGRhdGEgPSByZXNvdXJjZURhdGEoJnRleHRFbmNvZGluZ05hbWUpOwotICAgICAgICBpZiAo
IWRhdGEpCi0gICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgICAgIGJhc2U2NEVuY29k
ZShkYXRhLT5idWZmZXIoKSwgb3V0KTsKKyAgICAgICAgcmV0dXJuIFN0cmluZyhvdXQuZGF0YSgp
LCBvdXQuc2l6ZSgpKTsKICAgICB9Ci0gICAgcmV0dXJuIFN0cmluZyhvdXQuZGF0YSgpLCBvdXQu
c2l6ZSgpKTsKLX0KIAotUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IEluc3BlY3RvclJlc291cmNl
OjpyZXNvdXJjZURhdGEoU3RyaW5nKiB0ZXh0RW5jb2RpbmdOYW1lKSBjb25zdAotewotICAgIGlm
IChtX2xvYWRlciAmJiBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKG1fcmVxdWVzdFVS
TCwgbV9sb2FkZXItPnJlcXVlc3RVUkwoKSkpIHsKLSAgICAgICAgKnRleHRFbmNvZGluZ05hbWUg
PSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5pbnB1dEVuY29kaW5nKCk7Ci0gICAgICAgIHJldHVybiBt
X2xvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOwotICAgIH0KLQotICAgIENhY2hlZFJlc291cmNl
KiBjYWNoZWRSZXNvdXJjZSA9IHRoaXMtPmNhY2hlZFJlc291cmNlKCk7Ci0gICAgaWYgKCFjYWNo
ZWRSZXNvdXJjZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBpZiAoY2FjaGVkUmVzb3VyY2Ut
PmlzUHVyZ2VhYmxlKCkpIHsKLSAgICAgICAgLy8gSWYgdGhlIHJlc291cmNlIGlzIHB1cmdlYWJs
ZSB0aGVuIG1ha2UgaXQgdW5wdXJnZWFibGUgdG8gZ2V0Ci0gICAgICAgIC8vIGdldCBpdHMgZGF0
YS4gVGhpcyBtaWdodCBmYWlsLCBpbiB3aGljaCBjYXNlIHdlIHJldHVybiBhbgotICAgICAgICAv
LyBlbXB0eSBTdHJpbmcuCi0gICAgICAgIC8vIEZJWE1FOiBzaG91bGQgd2UgZG8gc29tZXRoaW5n
IGVsc2UgaW4gdGhlIGNhc2Ugb2YgYSBwdXJnZWQKLSAgICAgICAgLy8gcmVzb3VyY2UgdGhhdCBp
bmZvcm1zIHRoZSB1c2VyIHdoeSB0aGVyZSBpcyBubyBkYXRhIGluIHRoZQotICAgICAgICAvLyBp
bnNwZWN0b3I/Ci0gICAgICAgIGlmICghY2FjaGVkUmVzb3VyY2UtPm1ha2VQdXJnZWFibGUoZmFs
c2UpKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgKnRleHRFbmNvZGluZ05h
bWUgPSBjYWNoZWRSZXNvdXJjZS0+ZW5jb2RpbmcoKTsKLSAgICByZXR1cm4gY2FjaGVkUmVzb3Vy
Y2UtPmRhdGEoKTsKKyAgICBTdHJpbmcgcmVzdWx0OworICAgIGlmICghSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudDo6cmVzb3VyY2VDb250ZW50QmFzZTY0KG1fZnJhbWUtPmRvY3VtZW50KCksIG1fcmVx
dWVzdFVSTCwgJnJlc3VsdCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4g
cmVzdWx0OwogfQogCiB2b2lkIEluc3BlY3RvclJlc291cmNlOjpzdGFydFRpbWluZygpCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5oIGIvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuaAppbmRleCA3ZjcxZTZhLi45MDE5ZTZjIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5oCisrKyBiL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmgKQEAgLTk5LDEwICs5OSw4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICNlbmRpZgogCiAgICAgICAgIHZvaWQgc2V0T3ZlcnJpZGVDb250ZW50
KGNvbnN0IFNjcmlwdFN0cmluZyYgZGF0YSwgVHlwZSk7Ci0KICAgICAgICAgU3RyaW5nIHNvdXJj
ZVN0cmluZygpIGNvbnN0OwogICAgICAgICBTdHJpbmcgc291cmNlQnl0ZXMoKSBjb25zdDsKLSAg
ICAgICAgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YShTdHJpbmcqIHRleHRF
bmNvZGluZ05hbWUpIGNvbnN0OwogCiAgICAgICAgIGJvb2wgaXNTYW1lTG9hZGVyKERvY3VtZW50
TG9hZGVyKiBsb2FkZXIpIGNvbnN0IHsgcmV0dXJuIGxvYWRlciA9PSBtX2xvYWRlcjsgfQogICAg
ICAgICB2b2lkIG1hcmtNYWluUmVzb3VyY2UoKSB7IG1faXNNYWluUmVzb3VyY2UgPSB0cnVlOyB9
CkBAIC0xNjMsOSArMTYxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBJbnNwZWN0
b3JSZXNvdXJjZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29u
c3QgS1VSTCYgcmVxdWVzdFVSTCk7CiAgICAgICAgIFR5cGUgdHlwZSgpIGNvbnN0OwogCi0gICAg
ICAgIFR5cGUgY2FjaGVkUmVzb3VyY2VUeXBlKCkgY29uc3Q7Ci0gICAgICAgIENhY2hlZFJlc291
cmNlKiBjYWNoZWRSZXNvdXJjZSgpIGNvbnN0OwotCiAjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQog
ICAgICAgICB2b2lkIG1hcmtXZWJTb2NrZXQoKSB7IG1faXNXZWJTb2NrZXQgPSB0cnVlOyB9CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdl
bnQuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGM0ODJkYgotLS0gL2Rldi9udWxsCisr
KyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCkBAIC0wLDAg
KzEsMTQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkluc3BlY3RvclJlc291cmNl
QWdlbnQuaCIKKworI2luY2x1ZGUgIkJhc2U2NC5oIgorI2luY2x1ZGUgIkNhY2hlLmgiCisjaW5j
bHVkZSAiQ2FjaGVkUmVzb3VyY2UuaCIKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5o
IgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKKyNp
bmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCisjaW5jbHVkZSAiS1VS
TC5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgIlRleHRFbmNvZGluZy5o
IgorCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitib29sIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OnJlc291
cmNlQ29udGVudChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEtVUkwmIHVybCwgU3RyaW5nKiBy
ZXN1bHQpCit7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgU3RyaW5nIHRleHRFbmNvZGluZ05hbWU7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6cmVzb3VyY2VEYXRhKGRvY3VtZW50LCB1cmws
ICZ0ZXh0RW5jb2RpbmdOYW1lKTsKKworICAgIGlmIChidWZmZXIpIHsKKyAgICAgICAgVGV4dEVu
Y29kaW5nIGVuY29kaW5nKHRleHRFbmNvZGluZ05hbWUpOworICAgICAgICBpZiAoIWVuY29kaW5n
LmlzVmFsaWQoKSkKKyAgICAgICAgICAgIGVuY29kaW5nID0gV2luZG93c0xhdGluMUVuY29kaW5n
KCk7CisgICAgICAgICpyZXN1bHQgPSBlbmNvZGluZy5kZWNvZGUoYnVmZmVyLT5kYXRhKCksIGJ1
ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJu
IGZhbHNlOworfQorCitib29sIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OnJlc291cmNlQ29udGVu
dEJhc2U2NChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEtVUkwmIHVybCwgU3RyaW5nKiByZXN1
bHQpCit7CisgICAgVmVjdG9yPGNoYXI+IG91dDsKKyAgICBTdHJpbmcgdGV4dEVuY29kaW5nTmFt
ZTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhID0gSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dDo6cmVzb3VyY2VEYXRhKGRvY3VtZW50LCB1cmwsICZ0ZXh0RW5jb2RpbmdOYW1lKTsKKyAgICBp
ZiAoIWRhdGEpIHsKKyAgICAgICAgKnJlc3VsdCA9IFN0cmluZygpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgYmFzZTY0RW5jb2RlKGRhdGEtPmJ1ZmZlcigpLCBvdXQpOwor
ICAgICpyZXN1bHQgPSBTdHJpbmcob3V0LmRhdGEoKSwgb3V0LnNpemUoKSk7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK1Bhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBJbnNwZWN0b3JSZXNvdXJjZUFn
ZW50OjpyZXNvdXJjZURhdGEoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBLVVJMJiB1cmwsIFN0
cmluZyogdGV4dEVuY29kaW5nTmFtZSkKK3sKKyAgICBGcmFtZUxvYWRlciogZnJhbWVMb2FkZXIg
PSBkb2N1bWVudC0+ZnJhbWUoKS0+bG9hZGVyKCk7CisgICAgRG9jdW1lbnRMb2FkZXIqIGxvYWRl
ciA9IGZyYW1lTG9hZGVyLT5kb2N1bWVudExvYWRlcigpOworICAgIGlmIChlcXVhbElnbm9yaW5n
RnJhZ21lbnRJZGVudGlmaWVyKHVybCwgbG9hZGVyLT51cmwoKSkpIHsKKyAgICAgICAgKnRleHRF
bmNvZGluZ05hbWUgPSBkb2N1bWVudC0+aW5wdXRFbmNvZGluZygpOworICAgICAgICByZXR1cm4g
ZnJhbWVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKTsKKyAgICB9
CisKKyAgICBDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UgPSBJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50OjpjYWNoZWRSZXNvdXJjZShkb2N1bWVudCwgdXJsKTsKKyAgICBpZiAoIWNhY2hlZFJl
c291cmNlKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmIChjYWNoZWRSZXNvdXJjZS0+aXNQ
dXJnZWFibGUoKSkgeworICAgICAgICAvLyBJZiB0aGUgcmVzb3VyY2UgaXMgcHVyZ2VhYmxlIHRo
ZW4gbWFrZSBpdCB1bnB1cmdlYWJsZSB0byBnZXQKKyAgICAgICAgLy8gZ2V0IGl0cyBkYXRhLiBU
aGlzIG1pZ2h0IGZhaWwsIGluIHdoaWNoIGNhc2Ugd2UgcmV0dXJuIGFuCisgICAgICAgIC8vIGVt
cHR5IFN0cmluZy4KKyAgICAgICAgLy8gRklYTUU6IHNob3VsZCB3ZSBkbyBzb21ldGhpbmcgZWxz
ZSBpbiB0aGUgY2FzZSBvZiBhIHB1cmdlZAorICAgICAgICAvLyByZXNvdXJjZSB0aGF0IGluZm9y
bXMgdGhlIHVzZXIgd2h5IHRoZXJlIGlzIG5vIGRhdGEgaW4gdGhlCisgICAgICAgIC8vIGluc3Bl
Y3Rvcj8KKyAgICAgICAgaWYgKCFjYWNoZWRSZXNvdXJjZS0+bWFrZVB1cmdlYWJsZShmYWxzZSkp
CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAqdGV4dEVuY29kaW5nTmFtZSA9
IGNhY2hlZFJlc291cmNlLT5lbmNvZGluZygpOworICAgIHJldHVybiBjYWNoZWRSZXNvdXJjZS0+
ZGF0YSgpOworfQorCitJbnNwZWN0b3JSZXNvdXJjZTo6VHlwZSBJbnNwZWN0b3JSZXNvdXJjZUFn
ZW50OjpjYWNoZWRSZXNvdXJjZVR5cGUoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBLVVJMJiB1
cmwpCit7CisgICAgQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlID0gSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudDo6Y2FjaGVkUmVzb3VyY2UoZG9jdW1lbnQsIHVybCk7CisgICAgaWYgKCFjYWNo
ZWRSZXNvdXJjZSkKKyAgICAgICAgcmV0dXJuIEluc3BlY3RvclJlc291cmNlOjpPdGhlcjsKKwor
ICAgIHN3aXRjaCAoY2FjaGVkUmVzb3VyY2UtPnR5cGUoKSkgeworICAgICAgICBjYXNlIENhY2hl
ZFJlc291cmNlOjpJbWFnZVJlc291cmNlOgorICAgICAgICAgICAgcmV0dXJuIEluc3BlY3RvclJl
c291cmNlOjpJbWFnZTsKKyAgICAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6Rm9udFJlc291cmNl
OgorICAgICAgICAgICAgcmV0dXJuIEluc3BlY3RvclJlc291cmNlOjpGb250OworICAgICAgICBj
YXNlIENhY2hlZFJlc291cmNlOjpDU1NTdHlsZVNoZWV0OgorI2lmIEVOQUJMRShYU0xUKQorICAg
ICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpYU0xTdHlsZVNoZWV0OgorI2VuZGlmCisgICAgICAg
ICAgICByZXR1cm4gSW5zcGVjdG9yUmVzb3VyY2U6OlN0eWxlc2hlZXQ7CisgICAgICAgIGNhc2Ug
Q2FjaGVkUmVzb3VyY2U6OlNjcmlwdDoKKyAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3JSZXNv
dXJjZTo6U2NyaXB0OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIEluc3Bl
Y3RvclJlc291cmNlOjpPdGhlcjsKKyAgICB9Cit9CisKK0NhY2hlZFJlc291cmNlKiBJbnNwZWN0
b3JSZXNvdXJjZUFnZW50OjpjYWNoZWRSZXNvdXJjZShEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0
IEtVUkwmIHVybCkKK3sKKyAgICBjb25zdCBTdHJpbmcmIHVybFN0cmluZyA9IHVybC5zdHJpbmco
KTsKKyAgICBDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UgPSBkb2N1bWVudC0+Y2FjaGVk
UmVzb3VyY2VMb2FkZXIoKS0+Y2FjaGVkUmVzb3VyY2UodXJsU3RyaW5nKTsKKyAgICBpZiAoIWNh
Y2hlZFJlc291cmNlKQorICAgICAgICBjYWNoZWRSZXNvdXJjZSA9IGNhY2hlKCktPnJlc291cmNl
Rm9yVVJMKHVybFN0cmluZyk7CisgICAgcmV0dXJuIGNhY2hlZFJlc291cmNlOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmJkNTc4NTAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSW5z
cGVjdG9yUmVzb3VyY2VBZ2VudF9oCisjZGVmaW5lIEluc3BlY3RvclJlc291cmNlQWdlbnRfaAor
CisjaW5jbHVkZSAiSW5zcGVjdG9yUmVzb3VyY2UuaCIKKworI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorCituYW1lc3BhY2UgV1RGIHsKK2NsYXNz
IFN0cmluZzsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDYWNoZWRSZXNvdXJj
ZTsKK2NsYXNzIERvY3VtZW50OworY2xhc3MgS1VSTDsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKKwor
Y2xhc3MgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCB7CitwdWJsaWM6CisgICAgc3RhdGljIGJvb2wg
cmVzb3VyY2VDb250ZW50KERvY3VtZW50KiwgY29uc3QgS1VSTCYsIFN0cmluZyogcmVzdWx0KTsK
KyAgICBzdGF0aWMgYm9vbCByZXNvdXJjZUNvbnRlbnRCYXNlNjQoRG9jdW1lbnQqLCBjb25zdCBL
VVJMJiwgU3RyaW5nKiByZXN1bHQpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gcmVzb3VyY2VEYXRhKERvY3VtZW50KiwgY29uc3QgS1VSTCYsIFN0cmluZyogdGV4dEVuY29k
aW5nTmFtZSk7CisgICAgc3RhdGljIEluc3BlY3RvclJlc291cmNlOjpUeXBlIGNhY2hlZFJlc291
cmNlVHlwZShEb2N1bWVudCosIGNvbnN0IEtVUkwmKTsKKyAgICBzdGF0aWMgQ2FjaGVkUmVzb3Vy
Y2UqIGNhY2hlZFJlc291cmNlKERvY3VtZW50KiwgY29uc3QgS1VSTCYpOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKKworI2VuZGlm
IC8vICFkZWZpbmVkKEluc3BlY3RvclJlc291cmNlQWdlbnRfaCkKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKaW5kZXggZWIyNWZjNC4uOWVlMWY1MSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKKysrIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKQEAgLTM4LDcgKzM4LDcgQEAKICNp
bmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEhlYWRFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSW5zcGVjdG9yQ1NTQWdlbnQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JVdGlsaXRpZXMuaCIK
KyNpbmNsdWRlICJJbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9y
VmFsdWVzLmgiCiAjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIlN0eWxlU2hlZXRMaXN0Lmgi
CkBAIC00NjgsNyArNDY4LDcgQEAgYm9vbCBJbnNwZWN0b3JTdHlsZVNoZWV0OjpyZXNvdXJjZVN0
eWxlU2hlZXRUZXh0KFN0cmluZyogcmVzdWx0KSBjb25zdAogICAgIGlmICghbV9wYWdlU3R5bGVT
aGVldCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIEluc3BlY3RvclV0aWxp
dGllczo6cmVzb3VyY2VDb250ZW50Rm9yVVJMKG1fcGFnZVN0eWxlU2hlZXQtPmZpbmFsVVJMKCks
IG93bmVyRG9jdW1lbnQoKSwgcmVzdWx0KTsKKyAgICByZXR1cm4gSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudDo6cmVzb3VyY2VDb250ZW50KG93bmVyRG9jdW1lbnQoKSwgbV9wYWdlU3R5bGVTaGVldC0+
ZmluYWxVUkwoKSwgcmVzdWx0KTsKIH0KIAogYm9vbCBJbnNwZWN0b3JTdHlsZVNoZWV0Ojppbmxp
bmVTdHlsZVNoZWV0VGV4dChTdHJpbmcqIHJlc3VsdCkgY29uc3QKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclV0aWxpdGllcy5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JVdGlsaXRpZXMuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZDZi
MGQ3Li4wMDAwMDAwCi0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclV0aWxpdGllcy5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
LSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
LSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIkluc3BlY3RvclV0aWxpdGllcy5oIgotCi0jaW5jbHVkZSAiQ2FjaGUuaCIKLSNpbmNs
dWRlICJDYWNoZWRSZXNvdXJjZS5oIgotI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgi
Ci0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgotI2lu
Y2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKLSNpbmNsdWRlICJLVVJM
LmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCi0jaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgi
Ci0KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIHN0YXRpYwotYm9vbCBJbnNwZWN0b3JVdGlsaXRpZXM6
OnJlc291cmNlQ29udGVudEZvclVSTChjb25zdCBLVVJMJiB1cmwsIERvY3VtZW50KiBmcmFtZURv
Y3VtZW50LCBTdHJpbmcqIHJlc3VsdCkKLXsKLSAgICBpZiAoIWZyYW1lRG9jdW1lbnQpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIFN0cmluZyB0ZXh0RW5jb2RpbmdOYW1lOwotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKLSAgICBpZiAoZXF1YWxJZ25vcmluZ0ZyYWdtZW50
SWRlbnRpZmllcih1cmwsIGZyYW1lRG9jdW1lbnQtPmZyYW1lKCktPmxvYWRlcigpLT5kb2N1bWVu
dExvYWRlcigpLT5yZXF1ZXN0VVJMKCkpKSB7Ci0gICAgICAgIHRleHRFbmNvZGluZ05hbWUgPSBm
cmFtZURvY3VtZW50LT5pbnB1dEVuY29kaW5nKCk7Ci0gICAgICAgIGJ1ZmZlciA9IGZyYW1lRG9j
dW1lbnQtPmZyYW1lKCktPmxvYWRlcigpLT5wcm92aXNpb25hbERvY3VtZW50TG9hZGVyKCktPm1h
aW5SZXNvdXJjZURhdGEoKTsKLSAgICB9IGVsc2UgewotICAgICAgICBjb25zdCBTdHJpbmcmIHVy
bFN0cmluZyA9IHVybC5zdHJpbmcoKTsKLSAgICAgICAgQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJl
c291cmNlID0gZnJhbWVEb2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+Y2FjaGVkUmVz
b3VyY2UodXJsU3RyaW5nKTsKLSAgICAgICAgaWYgKCFjYWNoZWRSZXNvdXJjZSkKLSAgICAgICAg
ICAgIGNhY2hlZFJlc291cmNlID0gY2FjaGUoKS0+cmVzb3VyY2VGb3JVUkwodXJsU3RyaW5nKTsK
LQotICAgICAgICBBU1NFUlQoY2FjaGVkUmVzb3VyY2UpOyAvLyBGSVhNRShhcGF2bG92KTogVGhp
cyBtaWdodCBiZSB0b28gYWdncmVzc2l2ZS4KLQotICAgICAgICBib29sIGlzVW5wdXJnZWFibGUg
PSB0cnVlOwotICAgICAgICBpZiAoY2FjaGVkUmVzb3VyY2UtPmlzUHVyZ2VhYmxlKCkpIHsKLSAg
ICAgICAgICAgIC8vIElmIHRoZSByZXNvdXJjZSBpcyBwdXJnZWFibGUgdGhlbiBtYWtlIGl0IHVu
cHVyZ2VhYmxlIHRvIGdldAotICAgICAgICAgICAgLy8gaXRzIGRhdGEuIFRoaXMgbWlnaHQgZmFp
bCwgaW4gd2hpY2ggY2FzZSB3ZSByZXR1cm4gYW4KLSAgICAgICAgICAgIC8vIGVtcHR5IFN0cmlu
Zy4KLSAgICAgICAgICAgIGlmICghY2FjaGVkUmVzb3VyY2UtPm1ha2VQdXJnZWFibGUoZmFsc2Up
KQotICAgICAgICAgICAgICAgIGlzVW5wdXJnZWFibGUgPSBmYWxzZTsKLSAgICAgICAgfQotICAg
ICAgICBpZiAoaXNVbnB1cmdlYWJsZSkgewotICAgICAgICAgICAgdGV4dEVuY29kaW5nTmFtZSA9
IGNhY2hlZFJlc291cmNlLT5lbmNvZGluZygpOwotICAgICAgICAgICAgYnVmZmVyID0gY2FjaGVk
UmVzb3VyY2UtPmRhdGEoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChidWZmZXIpIHsK
LSAgICAgICAgVGV4dEVuY29kaW5nIGVuY29kaW5nKHRleHRFbmNvZGluZ05hbWUpOwotICAgICAg
ICBpZiAoIWVuY29kaW5nLmlzVmFsaWQoKSkKLSAgICAgICAgICAgIGVuY29kaW5nID0gV2luZG93
c0xhdGluMUVuY29kaW5nKCk7Ci0gICAgICAgICpyZXN1bHQgPSBlbmNvZGluZy5kZWNvZGUoYnVm
ZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
fQotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yVXRpbGl0aWVzLmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JVdGlsaXRp
ZXMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjgzNzQyNi4uMDAwMDAwMAotLS0g
YS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JVdGlsaXRpZXMuaAorKysgL2Rldi9udWxsCkBA
IC0xLDU2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAq
IG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0g
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaWZuZGVmIEluc3BlY3RvclV0aWxpdGllc19oCi0jZGVmaW5lIEluc3Bl
Y3RvclV0aWxpdGllc19oCi0KLSNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgotCi0jaWYgRU5B
QkxFKElOU1BFQ1RPUikKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBDU1NTdHlsZURl
Y2xhcmF0aW9uOwotY2xhc3MgQ1NTU3R5bGVSdWxlOwotY2xhc3MgQ1NTU3R5bGVTaGVldDsKLWNs
YXNzIERvY3VtZW50OwotY2xhc3MgS1VSTDsKLWNsYXNzIFN0eWxlQmFzZTsKLQotY2xhc3MgSW5z
cGVjdG9yVXRpbGl0aWVzIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgYm9vbCByZXNvdXJjZUNvbnRl
bnRGb3JVUkwoY29uc3QgS1VSTCYgdXJsLCBEb2N1bWVudCogZnJhbWVEb2N1bWVudCwgU3RyaW5n
KiByZXN1bHQpOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5B
QkxFKElOU1BFQ1RPUikKLQotI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvclV0aWxpdGllc19o
KQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70247</attachid>
            <date>2010-10-08 07:15:51 -0700</date>
            <delta_ts>2010-10-13 06:59:41 -0700</delta_ts>
            <desc>[PATCH] With project files too!</desc>
            <filename>resource_agent</filename>
            <type>text/plain</type>
            <size>34192</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CmluZGV4IDUzMzFlYWUuLjdmMTZiZmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTExMSw4ICsxMTExLDggQEAg
U0VUKFdlYkNvcmVfU09VUkNFUwogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uY3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwCiAgICAgaW5z
cGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcAorICAgIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNv
dXJjZUFnZW50LmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAotICAg
IGluc3BlY3Rvci9JbnNwZWN0b3JVdGlsaXRpZXMuY3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3Rv
clZhbHVlcy5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yU3RvcmFnZUFnZW50LmNwcAogICAg
IGluc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1ZmE5YTYxLi5mNGIyN2VlIDEw
MDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDM0IEBACisyMDEwLTEwLTA4ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFdlYiBJbnNwZWN0b3I6IGV4dHJhY3QgY29udGVudC1yZWxhdGVkIG1ldGhvZHMgaW50byBJbnNw
ZWN0b3JSZXNvdXJjZUFnZW50LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDc0MTUKKworICAgICAgICBUaGlzIGlzIG5lZWRlZCBmb3IgcmVzb3VyY2Ut
dHJhY2tpbmctbGVzcyBvcGVyYXRpb24gb2YgcmVzb3VyY2VzIHBhbmVsLgorCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2Vi
Q29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291
cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlOjp0eXBlKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlOjpzb3VyY2VTdHJpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2U6OnNvdXJjZUJ5dGVzKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
UmVzb3VyY2VBZ2VudDo6cmVzb3VyY2VDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvclJlc291cmNlQWdlbnQ6OnJlc291cmNlQ29udGVudEJhc2U2NCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpyZXNvdXJjZURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6Y2FjaGVkUmVzb3VyY2VUeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmNhY2hlZFJlc291cmNlKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oOiBBZGRlZC4KKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JTdHlsZVNoZWV0OjpyZXNvdXJjZVN0eWxlU2hlZXRUZXh0KToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yVXRpbGl0aWVzLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yVXRpbGl0aWVzLmg6IFJlbW92ZWQuCisKIDIwMTAtMTAtMDggIEpv
Y2VseW4gVHVyY290dGUgIDxqb2NlbHluLnR1cmNvdHRlQG5va2lhLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDRhMjU0N2Iu
Ljk0NzYyMmYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5hbQpAQCAtMTgyOSwxNCArMTgyOSwxNCBAQCB3ZWJjb3JlX3NvdXJjZXMg
Kz0gXAogCVdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaCBcCiAJV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuY3BwIFwKIAlXZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JSZXNvdXJjZS5oIFwKKwlXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNv
dXJjZUFnZW50LmNwcCBcCisJV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dC5oIFwKIAlXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdG9yYWdlQWdlbnQuY3BwIFwKIAlX
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdG9yYWdlQWdlbnQuaCBcCiAJV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAgXAogCVdlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclN0eWxlU2hlZXQuaCBcCiAJV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVB
Z2VudC5jcHAgXAogCVdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaCBc
Ci0JV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVXRpbGl0aWVzLmNwcCBcCi0JV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yVXRpbGl0aWVzLmggXAogCVdlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclZhbHVlcy5jcHAgXAogCVdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oIFwK
IAlXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJSZXNvdXJjZS5oIFwKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMzM2
N2NlZS4uY2U1MTJkNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKQEAgLTE5MzcsMTQgKzE5MzcsMTQgQEAKICAgICAgICAgICAgICdp
bnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oJywKICAgICAgICAgICAgICdpbnNwZWN0
b3IvSW5zcGVjdG9yUmVzb3VyY2UuY3BwJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVj
dG9yUmVzb3VyY2UuaCcsCisgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNl
QWdlbnQuY3BwJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dC5oJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yU3RvcmFnZUFnZW50LmNwcCcs
CiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvclN0b3JhZ2VBZ2VudC5oJywKICAgICAg
ICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAnLAogICAgICAgICAgICAg
J2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rv
ci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0lu
c3BlY3RvclRpbWVsaW5lQWdlbnQuaCcsCi0gICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3Rv
clV0aWxpdGllcy5jcHAnLAotICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JVdGlsaXRp
ZXMuaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAnLAogICAg
ICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaCcsCiAgICAgICAgICAgICAnaW5z
cGVjdG9yL0luc3BlY3RvcldvcmtlclJlc291cmNlLmgnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9X
ZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggOWIxYzUzNC4uN2ExM2U5OCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJv
CkBAIC0xMDAyLDEwICsxMDAyLDEwIEBAIFNPVVJDRVMgKz0gXAogICAgIGluc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmls
ZXJBZ2VudC5jcHAgXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5jcHAgXAorICAg
IGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcCBcCiAgICAgaW5zcGVjdG9yL0lu
c3BlY3RvclN0b3JhZ2VBZ2VudC5jcHAgXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNo
ZWV0LmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIFwKLSAg
ICBpbnNwZWN0b3IvSW5zcGVjdG9yVXRpbGl0aWVzLmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3Bl
Y3RvclZhbHVlcy5jcHAgXAogICAgIGluc3BlY3Rvci9TY3JpcHRCcmVha3BvaW50LmNwcCBcCiAg
ICAgaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAgXApAQCAtMTg4MiwxMCArMTg4
MiwxMCBAQCBIRUFERVJTICs9IFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmggXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmggXAogICAgIGlu
c3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5oIFwKKyAgICBpbnNwZWN0b3IvSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudC5oIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yU3RvcmFnZUFnZW50LmggXAog
ICAgIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmggXAogICAgIGluc3BlY3Rvci9JbnNw
ZWN0b3JUaW1lbGluZUFnZW50LmggXAotICAgIGluc3BlY3Rvci9JbnNwZWN0b3JVdGlsaXRpZXMu
aCBcCiAgICAgaW5zcGVjdG9yL1NjcmlwdEdDRXZlbnRMaXN0ZW5lci5oIFwKICAgICBpbnNwZWN0
b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmggXAogICAgIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlR3JvdXAuaCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRl
eCBmNTQ2YTA5Li5jMjc4NTMyIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oK
QEAgLTUyODM1LDM1ICs1MjgzNSwzNSBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUN
Ci0JCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yU3RvcmFnZUFnZW50LmNw
cCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dC5jcHAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRo
PSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yU3RvcmFnZUFnZW50LmgiDQorCQkJCVJlbGF0aXZlUGF0
aD0iLi5caW5zcGVjdG9yXEluc3BlY3RvclJlc291cmNlQWdlbnQuaCINCiAJCQkJPg0KIAkJCTwv
RmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxJbnNwZWN0
b3JTdHlsZVNoZWV0LmNwcCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSW5zcGVj
dG9yU3RvcmFnZUFnZW50LmNwcCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JTdHlsZVNoZWV0LmgiDQorCQkJ
CVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXEluc3BlY3RvclN0b3JhZ2VBZ2VudC5oIg0KIAkJ
CQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVj
dG9yXEluc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGlu
c3BlY3RvclxJbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJ
CQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXEluc3BlY3RvclN0eWxl
U2hlZXQuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JVdGlsaXRpZXMuY3BwIg0KKwkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCINCiAJCQkJPg0KIAkJ
CTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxJbnNw
ZWN0b3JVdGlsaXRpZXMuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSW5zcGVj
dG9yVGltZWxpbmVBZ2VudC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5NGIzY2EyLi44MjY2
MzAyIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTUy
Myw4ICsxNTIzLDggQEAKIAkJODJBQjE3NDQxMjRCOTlFQzAwQzUwNjlEIC8qIEluc3BlY3RvckNT
U0FnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
MkFCMTc0MjEyNEI5OUVDMDBDNTA2OUQgLyogSW5zcGVjdG9yQ1NTQWdlbnQuaCAqLzsgfTsKIAkJ
ODJBQjE3NzMxMjVDODI2NzAwQzUwNjlEIC8qIEluc3BlY3RvclN0eWxlU2hlZXQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODJBQjE3NkYxMjVDODI2
NzAwQzUwNjlEIC8qIEluc3BlY3RvclN0eWxlU2hlZXQuY3BwICovOyB9OwogCQk4MkFCMTc3NDEy
NUM4MjY3MDBDNTA2OUQgLyogSW5zcGVjdG9yU3R5bGVTaGVldC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODJBQjE3NzAxMjVDODI2NzAwQzUwNjlEIC8q
IEluc3BlY3RvclN0eWxlU2hlZXQuaCAqLzsgfTsKLQkJODJBQjE3NzUxMjVDODI2NzAwQzUwNjlE
IC8qIEluc3BlY3RvclV0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4MkFCMTc3MTEyNUM4MjY3MDBDNTA2OUQgLyogSW5zcGVjdG9yVXRp
bGl0aWVzLmNwcCAqLzsgfTsKLQkJODJBQjE3NzYxMjVDODI2NzAwQzUwNjlEIC8qIEluc3BlY3Rv
clV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODJBQjE3NzIxMjVDODI2NzAwQzUwNjlEIC8qIEluc3BlY3RvclV0aWxpdGllcy5oICovOyB9
OworCQk4MkFCMTc3NTEyNUM4MjY3MDBDNTA2OUQgLyogSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MkFCMTc3
MTEyNUM4MjY3MDBDNTA2OUQgLyogSW5zcGVjdG9yVXRpbGl0aWVzLmNwcCAqLzsgfTsKKwkJODJB
QjE3NzYxMjVDODI2NzAwQzUwNjlEIC8qIEluc3BlY3RvclJlc291cmNlQWdlbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgyQUIxNzcyMTI1QzgyNjcw
MEM1MDY5RCAvKiBJbnNwZWN0b3JVdGlsaXRpZXMuaCAqLzsgfTsKIAkJODJCNjU4OTgxMTg5RTM5
MjAwRTA1MkExIC8qIEluc3BlY3RvckNTU1N0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MkI2NTg5NzExODlFMzkyMDBFMDUyQTEgLyogSW5zcGVj
dG9yQ1NTU3RvcmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk4MkI2NTg5QTExODlFNDc2MDBFMDUyQTEgLyogSW5zcGVjdG9yQ1NTU3RvcmUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODJCNjU4OTkx
MTg5RTQ3NjAwRTA1MkExIC8qIEluc3BlY3RvckNTU1N0b3JlLmNwcCAqLzsgfTsKIAkJODJFM0Q4
REUxMjJFQTBEMTAwM0FFNUJDIC8qIENTU1Byb3BlcnR5U291cmNlRGF0YS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MkUzRDhEQzEyMkVBMEQxMDAz
QUU1QkMgLyogQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmNwcCAqLzsgfTsKQEAgLTc2MjQsOCArNzYy
NCw4IEBACiAJCTgyQUIxNzQyMTI0Qjk5RUMwMEM1MDY5RCAvKiBJbnNwZWN0b3JDU1NBZ2VudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JDU1NBZ2VudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MkFCMTc2RjEyNUM4MjY3MDBDNTA2OUQgLyog
SW5zcGVjdG9yU3R5bGVTaGVldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBJbnNwZWN0b3JTdHlsZVNoZWV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJODJBQjE3NzAxMjVDODI2NzAwQzUwNjlEIC8qIEluc3BlY3RvclN0eWxlU2hlZXQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yU3R5bGVTaGVldC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4MkFCMTc3MTEyNUM4MjY3MDBDNTA2OUQgLyogSW5z
cGVjdG9yVXRpbGl0aWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEluc3BlY3RvclV0aWxpdGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTgy
QUIxNzcyMTI1QzgyNjcwMEM1MDY5RCAvKiBJbnNwZWN0b3JVdGlsaXRpZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTgyQUIxNzcxMTI1QzgyNjcwMEM1MDY5RCAvKiBJbnNwZWN0b3JS
ZXNvdXJjZUFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElu
c3BlY3RvclV0aWxpdGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgyQUIx
NzcyMTI1QzgyNjcwMEM1MDY5RCAvKiBJbnNwZWN0b3JSZXNvdXJjZUFnZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvclV0aWxpdGllcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk4MkI2NTg5NzExODlFMzkyMDBFMDUyQTEgLyogSW5zcGVjdG9y
Q1NTU3RvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yQ1NT
U3RvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODJCNjU4OTkxMTg5RTQ3NjAw
RTA1MkExIC8qIEluc3BlY3RvckNTU1N0b3JlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEluc3BlY3RvckNTU1N0b3JlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODJFM0Q4REMxMjJFQTBEMTAwM0FFNUJDIC8qIENTU1Byb3BlcnR5U291cmNlRGF0
YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NQcm9wZXJ0eVNv
dXJjZURhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTIyMTAsOCArMTIy
MTAsOCBAQAogCQkJCTgyQUIxNzcwMTI1QzgyNjcwMEM1MDY5RCAvKiBJbnNwZWN0b3JTdHlsZVNo
ZWV0LmggKi8sCiAJCQkJNzU0MTMzQTkxMDJFMDBGNDAwMDc1RDAwIC8qIEluc3BlY3RvclRpbWVs
aW5lQWdlbnQuY3BwICovLAogCQkJCTc1NDEzM0E3MTAyRTAwRTgwMDA3NUQwMCAvKiBJbnNwZWN0
b3JUaW1lbGluZUFnZW50LmggKi8sCi0JCQkJODJBQjE3NzExMjVDODI2NzAwQzUwNjlEIC8qIElu
c3BlY3RvclV0aWxpdGllcy5jcHAgKi8sCi0JCQkJODJBQjE3NzIxMjVDODI2NzAwQzUwNjlEIC8q
IEluc3BlY3RvclV0aWxpdGllcy5oICovLAorCQkJCTgyQUIxNzcxMTI1QzgyNjcwMEM1MDY5RCAv
KiBJbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcCAqLywKKwkJCQk4MkFCMTc3MjEyNUM4MjY3MDBD
NTA2OUQgLyogSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oICovLAogCQkJCTRGMzI4OUIzMTFBNDJB
QUIwMDVBQkU3RSAvKiBJbnNwZWN0b3JWYWx1ZXMuY3BwICovLAogCQkJCTRGMzI4OUI0MTFBNDJB
QUIwMDVBQkU3RSAvKiBJbnNwZWN0b3JWYWx1ZXMuaCAqLywKIAkJCQlGMzc1Q0MwNjExNTBEMzAw
MDA4RERCODEgLyogSW5zcGVjdG9yV29ya2VyUmVzb3VyY2UuaCAqLywKQEAgLTIxMDkwLDcgKzIx
MDkwLDcgQEAKIAkJCQk4OTNDNDgzRDEyNDk1NDcyMDAyQjNEODYgLyogSlNGaWxlRW50cnlTeW5j
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4OTBBRTBFMTEyNTZBMDc5MDBGNTk2OEMgLyogRGlyZWN0
b3J5UmVhZGVyQmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODJBQjE3NzQxMjVDODI2NzAwQzUw
NjlEIC8qIEluc3BlY3RvclN0eWxlU2hlZXQuaCBpbiBIZWFkZXJzICovLAotCQkJCTgyQUIxNzc2
MTI1QzgyNjcwMEM1MDY5RCAvKiBJbnNwZWN0b3JVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAor
CQkJCTgyQUIxNzc2MTI1QzgyNjcwMEM1MDY5RCAvKiBJbnNwZWN0b3JSZXNvdXJjZUFnZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKIAkJfTsKQEAgLTIzNjM5LDcgKzIzNjM5LDcgQEAKIAkJCQk4OTNDNDgzQzEyNDk1
NDcyMDAyQjNEODYgLyogSlNGaWxlRW50cnlTeW5jLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg5
M0M0ODUzMTI0OTlCMDYwMDJCM0Q4NiAvKiBKU0VudHJ5U3luY0N1c3RvbS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk4MkFCMTc3MzEyNUM4MjY3MDBDNTA2OUQgLyogSW5zcGVjdG9yU3R5bGVTaGVl
dC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk4MkFCMTc3NTEyNUM4MjY3MDBDNTA2OUQgLyogSW5z
cGVjdG9yVXRpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTgyQUIxNzc1MTI1QzgyNjcw
MEM1MDY5RCAvKiBJbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
KTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCmluZGV4IGE2YmU4OTYuLmUwZmFiODUg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAorKysg
Yi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKQEAgLTQwLDcgKzQwLDYg
QEAKICNpbmNsdWRlICJIVE1MSGVhZEVsZW1lbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JET01B
Z2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCi0jaW5jbHVkZSAiSW5zcGVj
dG9yVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAi
Tm9kZS5oIgogI2luY2x1ZGUgIlN0eWxlU2hlZXRMaXN0LmgiCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JSZXNvdXJjZS5jcHAKaW5kZXggNTcwYTRmYi4uY2I4MTQyZCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclJlc291cmNlLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkRv
Y3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JG
cm9udGVuZC5oIgorI2luY2x1ZGUgIkluc3BlY3RvclJlc291cmNlQWdlbnQuaCIKICNpbmNsdWRl
ICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRUaW1pbmcuaCIKICNp
bmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKQEAgLTM0OCw0NCArMzQ5LDYgQEAgdm9pZCBJbnNw
ZWN0b3JSZXNvdXJjZTo6cmVsZWFzZVNjcmlwdE9iamVjdChJbnNwZWN0b3JGcm9udGVuZCogZnJv
bnRlbmQpCiAgICAgICAgIGZyb250ZW5kLT5yZW1vdmVSZXNvdXJjZShtX2lkZW50aWZpZXIpOwog
fQogCi1DYWNoZWRSZXNvdXJjZSogSW5zcGVjdG9yUmVzb3VyY2U6OmNhY2hlZFJlc291cmNlKCkg
Y29uc3QKLXsKLSAgICAvLyBUcnkgaGFyZCB0byBmaW5kIGEgY29ycmVzcG9uZGluZyBDYWNoZWRS
ZXNvdXJjZS4gRHVyaW5nIHByZWxvYWRpbmcsIENhY2hlZFJlc291cmNlTG9hZGVyIG1heSBub3Qg
aGF2ZSB0aGUgcmVzb3VyY2UgaW4gZG9jdW1lbnQgcmVzb3VyY2VzIHNldCB5ZXQsCi0gICAgLy8g
YnV0IEluc3BlY3RvciB3aWxsIGFscmVhZHkgdHJ5IHRvIGZldGNoIGRhdGEgdGhhdCBpcyBvbmx5
IGF2YWlsYWJsZSB2aWEgQ2FjaGVkUmVzb3VyY2UgKGFuZCBpdCB3b24ndCB1cGRhdGUgb25jZSB0
aGUgcmVzb3VyY2UgaXMgYWRkZWQsCi0gICAgLy8gYmVjYXVzZSBtX2NoYW5nZXMgd2lsbCBub3Qg
aGF2ZSB0aGUgYXBwcm9wcmlhdGUgYml0cyBzZXQpLgotICAgIGlmICghbV9mcmFtZSkKLSAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgY29uc3QgU3RyaW5nJiB1cmwgPSBtX3JlcXVlc3RVUkwuc3RyaW5n
KCk7Ci0gICAgQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlID0gbV9mcmFtZS0+ZG9jdW1l
bnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+Y2FjaGVkUmVzb3VyY2UodXJsKTsKLSAgICBp
ZiAoIWNhY2hlZFJlc291cmNlKQotICAgICAgICBjYWNoZWRSZXNvdXJjZSA9IGNhY2hlKCktPnJl
c291cmNlRm9yVVJMKHVybCk7Ci0gICAgcmV0dXJuIGNhY2hlZFJlc291cmNlOwotfQotCi1JbnNw
ZWN0b3JSZXNvdXJjZTo6VHlwZSBJbnNwZWN0b3JSZXNvdXJjZTo6Y2FjaGVkUmVzb3VyY2VUeXBl
KCkgY29uc3QKLXsKLSAgICBDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UgPSB0aGlzLT5j
YWNoZWRSZXNvdXJjZSgpOwotCi0gICAgaWYgKCFjYWNoZWRSZXNvdXJjZSkKLSAgICAgICAgcmV0
dXJuIE90aGVyOwotCi0gICAgc3dpdGNoIChjYWNoZWRSZXNvdXJjZS0+dHlwZSgpKSB7Ci0gICAg
ICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3VyY2U6Ci0gICAgICAgICAgICByZXR1
cm4gSW1hZ2U7Ci0gICAgICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkZvbnRSZXNvdXJjZToKLSAg
ICAgICAgICAgIHJldHVybiBGb250OwotICAgICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpDU1NT
dHlsZVNoZWV0OgotI2lmIEVOQUJMRShYU0xUKQotICAgICAgICBjYXNlIENhY2hlZFJlc291cmNl
OjpYU0xTdHlsZVNoZWV0OgotI2VuZGlmCi0gICAgICAgICAgICByZXR1cm4gU3R5bGVzaGVldDsK
LSAgICAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6U2NyaXB0OgotICAgICAgICAgICAgcmV0dXJu
IFNjcmlwdDsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBPdGhlcjsKLSAg
ICB9Ci19Ci0KIEluc3BlY3RvclJlc291cmNlOjpUeXBlIEluc3BlY3RvclJlc291cmNlOjp0eXBl
KCkgY29uc3QKIHsKICAgICBpZiAoIW1fb3ZlcnJpZGVDb250ZW50LmlzTnVsbCgpKQpAQCAtMzk3
LDE4ICszNjAsMTggQEAgSW5zcGVjdG9yUmVzb3VyY2U6OlR5cGUgSW5zcGVjdG9yUmVzb3VyY2U6
OnR5cGUoKSBjb25zdAogI2VuZGlmCiAKICAgICBBU1NFUlQobV9sb2FkZXIpOwotICAgIGlmIChl
cXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKG1fcmVxdWVzdFVSTCwgbV9sb2FkZXItPnJl
cXVlc3RVUkwoKSkpIHsKLSAgICAgICAgSW5zcGVjdG9yUmVzb3VyY2U6OlR5cGUgcmVzb3VyY2VU
eXBlID0gY2FjaGVkUmVzb3VyY2VUeXBlKCk7Ci0gICAgICAgIGlmIChyZXNvdXJjZVR5cGUgPT0g
T3RoZXIpCi0gICAgICAgICAgICByZXR1cm4gRG9jOwotCi0gICAgICAgIHJldHVybiByZXNvdXJj
ZVR5cGU7Ci0gICAgfQogCiAgICAgaWYgKG1fbG9hZGVyLT5mcmFtZUxvYWRlcigpICYmIGVxdWFs
SWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIobV9yZXF1ZXN0VVJMLCBtX2xvYWRlci0+ZnJhbWVM
b2FkZXIoKS0+aWNvblVSTCgpKSkKICAgICAgICAgcmV0dXJuIEltYWdlOwogCi0gICAgcmV0dXJu
IGNhY2hlZFJlc291cmNlVHlwZSgpOworICAgIGlmICghbV9mcmFtZSkKKyAgICAgICAgcmV0dXJu
IE90aGVyOworCisgICAgSW5zcGVjdG9yUmVzb3VyY2U6OlR5cGUgcmVzb3VyY2VUeXBlID0gSW5z
cGVjdG9yUmVzb3VyY2VBZ2VudDo6Y2FjaGVkUmVzb3VyY2VUeXBlKG1fZnJhbWUtPmRvY3VtZW50
KCksIG1fcmVxdWVzdFVSTCk7CisgICAgaWYgKGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZp
ZXIobV9yZXF1ZXN0VVJMLCBtX2xvYWRlci0+cmVxdWVzdFVSTCgpKSAmJiByZXNvdXJjZVR5cGUg
PT0gT3RoZXIpCisgICAgICAgIHJldHVybiBEb2M7CisKKyAgICByZXR1cm4gcmVzb3VyY2VUeXBl
OwogfQogCiB2b2lkIEluc3BlY3RvclJlc291cmNlOjpzZXRPdmVycmlkZUNvbnRlbnQoY29uc3Qg
U2NyaXB0U3RyaW5nJiBkYXRhLCBUeXBlIHR5cGUpCkBAIC00MjMsMTUgKzM4NiwxMCBAQCBTdHJp
bmcgSW5zcGVjdG9yUmVzb3VyY2U6OnNvdXJjZVN0cmluZygpIGNvbnN0CiAgICAgaWYgKCFtX292
ZXJyaWRlQ29udGVudC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZyhtX292ZXJyaWRl
Q29udGVudCk7CiAKLSAgICBTdHJpbmcgdGV4dEVuY29kaW5nTmFtZTsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXIgPSByZXNvdXJjZURhdGEoJnRleHRFbmNvZGluZ05hbWUpOwotICAg
IGlmICghYnVmZmVyKQorICAgIFN0cmluZyByZXN1bHQ7CisgICAgaWYgKCFJbnNwZWN0b3JSZXNv
dXJjZUFnZW50OjpyZXNvdXJjZUNvbnRlbnQobV9mcmFtZS0+ZG9jdW1lbnQoKSwgbV9yZXF1ZXN0
VVJMLCAmcmVzdWx0KSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgVGV4dEVuY29k
aW5nIGVuY29kaW5nKHRleHRFbmNvZGluZ05hbWUpOwotICAgIGlmICghZW5jb2RpbmcuaXNWYWxp
ZCgpKQotICAgICAgICBlbmNvZGluZyA9IFdpbmRvd3NMYXRpbjFFbmNvZGluZygpOwotICAgIHJl
dHVybiBlbmNvZGluZy5kZWNvZGUoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAg
ICByZXR1cm4gcmVzdWx0OwogfQogCiBTdHJpbmcgSW5zcGVjdG9yUmVzb3VyY2U6OnNvdXJjZUJ5
dGVzKCkgY29uc3QKQEAgLTQ0Miw0MCArNDAwLDEzIEBAIFN0cmluZyBJbnNwZWN0b3JSZXNvdXJj
ZTo6c291cmNlQnl0ZXMoKSBjb25zdAogICAgICAgICBTdHJpbmcgb3ZlcnJpZGVDb250ZW50ID0g
bV9vdmVycmlkZUNvbnRlbnQ7CiAgICAgICAgIGRhdGEuYXBwZW5kKG92ZXJyaWRlQ29udGVudC5j
aGFyYWN0ZXJzKCksIG92ZXJyaWRlQ29udGVudC5sZW5ndGgoKSk7CiAgICAgICAgIGJhc2U2NEVu
Y29kZShkYXRhLCBvdXQpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIFN0cmluZyB0ZXh0RW5jb2Rp
bmdOYW1lOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhID0gcmVzb3VyY2VEYXRh
KCZ0ZXh0RW5jb2RpbmdOYW1lKTsKLSAgICAgICAgaWYgKCFkYXRhKQotICAgICAgICAgICAgcmV0
dXJuIFN0cmluZygpOwotICAgICAgICBiYXNlNjRFbmNvZGUoZGF0YS0+YnVmZmVyKCksIG91dCk7
CisgICAgICAgIHJldHVybiBTdHJpbmcob3V0LmRhdGEoKSwgb3V0LnNpemUoKSk7CiAgICAgfQot
ICAgIHJldHVybiBTdHJpbmcob3V0LmRhdGEoKSwgb3V0LnNpemUoKSk7Ci19CiAKLVBhc3NSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBJbnNwZWN0b3JSZXNvdXJjZTo6cmVzb3VyY2VEYXRhKFN0cmluZyog
dGV4dEVuY29kaW5nTmFtZSkgY29uc3QKLXsKLSAgICBpZiAobV9sb2FkZXIgJiYgZXF1YWxJZ25v
cmluZ0ZyYWdtZW50SWRlbnRpZmllcihtX3JlcXVlc3RVUkwsIG1fbG9hZGVyLT5yZXF1ZXN0VVJM
KCkpKSB7Ci0gICAgICAgICp0ZXh0RW5jb2RpbmdOYW1lID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+
aW5wdXRFbmNvZGluZygpOwotICAgICAgICByZXR1cm4gbV9sb2FkZXItPm1haW5SZXNvdXJjZURh
dGEoKTsKLSAgICB9Ci0KLSAgICBDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UgPSB0aGlz
LT5jYWNoZWRSZXNvdXJjZSgpOwotICAgIGlmICghY2FjaGVkUmVzb3VyY2UpCi0gICAgICAgIHJl
dHVybiAwOwotCi0gICAgaWYgKGNhY2hlZFJlc291cmNlLT5pc1B1cmdlYWJsZSgpKSB7Ci0gICAg
ICAgIC8vIElmIHRoZSByZXNvdXJjZSBpcyBwdXJnZWFibGUgdGhlbiBtYWtlIGl0IHVucHVyZ2Vh
YmxlIHRvIGdldAotICAgICAgICAvLyBnZXQgaXRzIGRhdGEuIFRoaXMgbWlnaHQgZmFpbCwgaW4g
d2hpY2ggY2FzZSB3ZSByZXR1cm4gYW4KLSAgICAgICAgLy8gZW1wdHkgU3RyaW5nLgotICAgICAg
ICAvLyBGSVhNRTogc2hvdWxkIHdlIGRvIHNvbWV0aGluZyBlbHNlIGluIHRoZSBjYXNlIG9mIGEg
cHVyZ2VkCi0gICAgICAgIC8vIHJlc291cmNlIHRoYXQgaW5mb3JtcyB0aGUgdXNlciB3aHkgdGhl
cmUgaXMgbm8gZGF0YSBpbiB0aGUKLSAgICAgICAgLy8gaW5zcGVjdG9yPwotICAgICAgICBpZiAo
IWNhY2hlZFJlc291cmNlLT5tYWtlUHVyZ2VhYmxlKGZhbHNlKSkKLSAgICAgICAgICAgIHJldHVy
biAwOwotICAgIH0KLQotICAgICp0ZXh0RW5jb2RpbmdOYW1lID0gY2FjaGVkUmVzb3VyY2UtPmVu
Y29kaW5nKCk7Ci0gICAgcmV0dXJuIGNhY2hlZFJlc291cmNlLT5kYXRhKCk7CisgICAgU3RyaW5n
IHJlc3VsdDsKKyAgICBpZiAoIUluc3BlY3RvclJlc291cmNlQWdlbnQ6OnJlc291cmNlQ29udGVu
dEJhc2U2NChtX2ZyYW1lLT5kb2N1bWVudCgpLCBtX3JlcXVlc3RVUkwsICZyZXN1bHQpKQorICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogdm9pZCBJbnNw
ZWN0b3JSZXNvdXJjZTo6c3RhcnRUaW1pbmcoKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUmVzb3VyY2UuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291
cmNlLmgKaW5kZXggN2Y3MWU2YS4uOTAxOWU2YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUmVzb3VyY2UuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JS
ZXNvdXJjZS5oCkBAIC05OSwxMCArOTksOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYK
IAogICAgICAgICB2b2lkIHNldE92ZXJyaWRlQ29udGVudChjb25zdCBTY3JpcHRTdHJpbmcmIGRh
dGEsIFR5cGUpOwotCiAgICAgICAgIFN0cmluZyBzb3VyY2VTdHJpbmcoKSBjb25zdDsKICAgICAg
ICAgU3RyaW5nIHNvdXJjZUJ5dGVzKCkgY29uc3Q7Ci0gICAgICAgIFBhc3NSZWZQdHI8U2hhcmVk
QnVmZmVyPiByZXNvdXJjZURhdGEoU3RyaW5nKiB0ZXh0RW5jb2RpbmdOYW1lKSBjb25zdDsKIAog
ICAgICAgICBib29sIGlzU2FtZUxvYWRlcihEb2N1bWVudExvYWRlciogbG9hZGVyKSBjb25zdCB7
IHJldHVybiBsb2FkZXIgPT0gbV9sb2FkZXI7IH0KICAgICAgICAgdm9pZCBtYXJrTWFpblJlc291
cmNlKCkgeyBtX2lzTWFpblJlc291cmNlID0gdHJ1ZTsgfQpAQCAtMTYzLDkgKzE2MSw2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgSW5zcGVjdG9yUmVzb3VyY2UodW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0IEtVUkwmIHJlcXVlc3RVUkwpOwog
ICAgICAgICBUeXBlIHR5cGUoKSBjb25zdDsKIAotICAgICAgICBUeXBlIGNhY2hlZFJlc291cmNl
VHlwZSgpIGNvbnN0OwotICAgICAgICBDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UoKSBj
b25zdDsKLQogI2lmIEVOQUJMRShXRUJfU09DS0VUUykKICAgICAgICAgdm9pZCBtYXJrV2ViU29j
a2V0KCkgeyBtX2lzV2ViU29ja2V0ID0gdHJ1ZTsgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcCBiL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmUzOWM1MTgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcApAQCAtMCwwICsxLDE0OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRp
b24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgiCisKKyNpbmNsdWRlICJC
YXNlNjQuaCIKKyNpbmNsdWRlICJDYWNoZS5oIgorI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlLmgi
CisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5o
IgorI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNs
dWRlICJGcmFtZUxvYWRlci5oIgorI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJTaGFyZWRC
dWZmZXIuaCIKKyNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKKworI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KKworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Ym9vbCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpyZXNvdXJjZUNvbnRlbnQoRG9jdW1lbnQqIGRv
Y3VtZW50LCBjb25zdCBLVVJMJiB1cmwsIFN0cmluZyogcmVzdWx0KQoreworICAgIGlmICghZG9j
dW1lbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFN0cmluZyB0ZXh0RW5jb2RpbmdO
YW1lOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IEluc3BlY3RvclJlc291cmNl
QWdlbnQ6OnJlc291cmNlRGF0YShkb2N1bWVudCwgdXJsLCAmdGV4dEVuY29kaW5nTmFtZSk7CisK
KyAgICBpZiAoYnVmZmVyKSB7CisgICAgICAgIFRleHRFbmNvZGluZyBlbmNvZGluZyh0ZXh0RW5j
b2RpbmdOYW1lKTsKKyAgICAgICAgaWYgKCFlbmNvZGluZy5pc1ZhbGlkKCkpCisgICAgICAgICAg
ICBlbmNvZGluZyA9IFdpbmRvd3NMYXRpbjFFbmNvZGluZygpOworICAgICAgICAqcmVzdWx0ID0g
ZW5jb2RpbmcuZGVjb2RlKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBJbnNw
ZWN0b3JSZXNvdXJjZUFnZW50OjpyZXNvdXJjZUNvbnRlbnRCYXNlNjQoRG9jdW1lbnQqIGRvY3Vt
ZW50LCBjb25zdCBLVVJMJiB1cmwsIFN0cmluZyogcmVzdWx0KQoreworICAgIFZlY3RvcjxjaGFy
PiBvdXQ7CisgICAgU3RyaW5nIHRleHRFbmNvZGluZ05hbWU7CisgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZGF0YSA9IEluc3BlY3RvclJlc291cmNlQWdlbnQ6OnJlc291cmNlRGF0YShkb2N1bWVu
dCwgdXJsLCAmdGV4dEVuY29kaW5nTmFtZSk7CisgICAgaWYgKCFkYXRhKSB7CisgICAgICAgICpy
ZXN1bHQgPSBTdHJpbmcoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGJh
c2U2NEVuY29kZShkYXRhLT5idWZmZXIoKSwgb3V0KTsKKyAgICAqcmVzdWx0ID0gU3RyaW5nKG91
dC5kYXRhKCksIG91dC5zaXplKCkpOworICAgIHJldHVybiB0cnVlOworfQorCitQYXNzUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6cmVzb3VyY2VEYXRhKERvY3Vt
ZW50KiBkb2N1bWVudCwgY29uc3QgS1VSTCYgdXJsLCBTdHJpbmcqIHRleHRFbmNvZGluZ05hbWUp
Cit7CisgICAgRnJhbWVMb2FkZXIqIGZyYW1lTG9hZGVyID0gZG9jdW1lbnQtPmZyYW1lKCktPmxv
YWRlcigpOworICAgIERvY3VtZW50TG9hZGVyKiBsb2FkZXIgPSBmcmFtZUxvYWRlci0+ZG9jdW1l
bnRMb2FkZXIoKTsKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcih1cmws
IGxvYWRlci0+dXJsKCkpKSB7CisgICAgICAgICp0ZXh0RW5jb2RpbmdOYW1lID0gZG9jdW1lbnQt
PmlucHV0RW5jb2RpbmcoKTsKKyAgICAgICAgcmV0dXJuIGZyYW1lTG9hZGVyLT5kb2N1bWVudExv
YWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCk7CisgICAgfQorCisgICAgQ2FjaGVkUmVzb3VyY2Uq
IGNhY2hlZFJlc291cmNlID0gSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6Y2FjaGVkUmVzb3VyY2Uo
ZG9jdW1lbnQsIHVybCk7CisgICAgaWYgKCFjYWNoZWRSZXNvdXJjZSkKKyAgICAgICAgcmV0dXJu
IDA7CisKKyAgICBpZiAoY2FjaGVkUmVzb3VyY2UtPmlzUHVyZ2VhYmxlKCkpIHsKKyAgICAgICAg
Ly8gSWYgdGhlIHJlc291cmNlIGlzIHB1cmdlYWJsZSB0aGVuIG1ha2UgaXQgdW5wdXJnZWFibGUg
dG8gZ2V0CisgICAgICAgIC8vIGdldCBpdHMgZGF0YS4gVGhpcyBtaWdodCBmYWlsLCBpbiB3aGlj
aCBjYXNlIHdlIHJldHVybiBhbgorICAgICAgICAvLyBlbXB0eSBTdHJpbmcuCisgICAgICAgIC8v
IEZJWE1FOiBzaG91bGQgd2UgZG8gc29tZXRoaW5nIGVsc2UgaW4gdGhlIGNhc2Ugb2YgYSBwdXJn
ZWQKKyAgICAgICAgLy8gcmVzb3VyY2UgdGhhdCBpbmZvcm1zIHRoZSB1c2VyIHdoeSB0aGVyZSBp
cyBubyBkYXRhIGluIHRoZQorICAgICAgICAvLyBpbnNwZWN0b3I/CisgICAgICAgIGlmICghY2Fj
aGVkUmVzb3VyY2UtPm1ha2VQdXJnZWFibGUoZmFsc2UpKQorICAgICAgICAgICAgcmV0dXJuIDA7
CisgICAgfQorCisgICAgKnRleHRFbmNvZGluZ05hbWUgPSBjYWNoZWRSZXNvdXJjZS0+ZW5jb2Rp
bmcoKTsKKyAgICByZXR1cm4gY2FjaGVkUmVzb3VyY2UtPmRhdGEoKTsKK30KKworSW5zcGVjdG9y
UmVzb3VyY2U6OlR5cGUgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6Y2FjaGVkUmVzb3VyY2VUeXBl
KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgS1VSTCYgdXJsKQoreworICAgIENhY2hlZFJlc291
cmNlKiBjYWNoZWRSZXNvdXJjZSA9IEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmNhY2hlZFJlc291
cmNlKGRvY3VtZW50LCB1cmwpOworICAgIGlmICghY2FjaGVkUmVzb3VyY2UpCisgICAgICAgIHJl
dHVybiBJbnNwZWN0b3JSZXNvdXJjZTo6T3RoZXI7CisKKyAgICBzd2l0Y2ggKGNhY2hlZFJlc291
cmNlLT50eXBlKCkpIHsKKyAgICBjYXNlIENhY2hlZFJlc291cmNlOjpJbWFnZVJlc291cmNlOgor
ICAgICAgICByZXR1cm4gSW5zcGVjdG9yUmVzb3VyY2U6OkltYWdlOworICAgIGNhc2UgQ2FjaGVk
UmVzb3VyY2U6OkZvbnRSZXNvdXJjZToKKyAgICAgICAgcmV0dXJuIEluc3BlY3RvclJlc291cmNl
OjpGb250OworICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkNTU1N0eWxlU2hlZXQ6CisjaWYgRU5B
QkxFKFhTTFQpCisgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6WFNMU3R5bGVTaGVldDoKKyNlbmRp
ZgorICAgICAgICByZXR1cm4gSW5zcGVjdG9yUmVzb3VyY2U6OlN0eWxlc2hlZXQ7CisgICAgY2Fz
ZSBDYWNoZWRSZXNvdXJjZTo6U2NyaXB0OgorICAgICAgICByZXR1cm4gSW5zcGVjdG9yUmVzb3Vy
Y2U6OlNjcmlwdDsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gSW5zcGVjdG9yUmVzb3Vy
Y2U6Ok90aGVyOworICAgIH0KK30KKworQ2FjaGVkUmVzb3VyY2UqIEluc3BlY3RvclJlc291cmNl
QWdlbnQ6OmNhY2hlZFJlc291cmNlKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgS1VSTCYgdXJs
KQoreworICAgIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nID0gdXJsLnN0cmluZygpOworICAgIENh
Y2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSA9IGRvY3VtZW50LT5jYWNoZWRSZXNvdXJjZUxv
YWRlcigpLT5jYWNoZWRSZXNvdXJjZSh1cmxTdHJpbmcpOworICAgIGlmICghY2FjaGVkUmVzb3Vy
Y2UpCisgICAgICAgIGNhY2hlZFJlc291cmNlID0gY2FjaGUoKS0+cmVzb3VyY2VGb3JVUkwodXJs
U3RyaW5nKTsKKyAgICByZXR1cm4gY2FjaGVkUmVzb3VyY2U7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmggYi9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uYmQ1Nzg1MAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclJlc291cmNlQWdlbnQuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbnNwZWN0b3JSZXNv
dXJjZUFnZW50X2gKKyNkZWZpbmUgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudF9oCisKKyNpbmNsdWRl
ICJJbnNwZWN0b3JSZXNvdXJjZS5oIgorCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKwor
I2lmIEVOQUJMRShJTlNQRUNUT1IpCisKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgU3RyaW5nOwor
fQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENhY2hlZFJlc291cmNlOworY2xhc3Mg
RG9jdW1lbnQ7CitjbGFzcyBLVVJMOworY2xhc3MgU2hhcmVkQnVmZmVyOworCitjbGFzcyBJbnNw
ZWN0b3JSZXNvdXJjZUFnZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgYm9vbCByZXNvdXJjZUNv
bnRlbnQoRG9jdW1lbnQqLCBjb25zdCBLVVJMJiwgU3RyaW5nKiByZXN1bHQpOworICAgIHN0YXRp
YyBib29sIHJlc291cmNlQ29udGVudEJhc2U2NChEb2N1bWVudCosIGNvbnN0IEtVUkwmLCBTdHJp
bmcqIHJlc3VsdCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJj
ZURhdGEoRG9jdW1lbnQqLCBjb25zdCBLVVJMJiwgU3RyaW5nKiB0ZXh0RW5jb2RpbmdOYW1lKTsK
KyAgICBzdGF0aWMgSW5zcGVjdG9yUmVzb3VyY2U6OlR5cGUgY2FjaGVkUmVzb3VyY2VUeXBlKERv
Y3VtZW50KiwgY29uc3QgS1VSTCYpOworICAgIHN0YXRpYyBDYWNoZWRSZXNvdXJjZSogY2FjaGVk
UmVzb3VyY2UoRG9jdW1lbnQqLCBjb25zdCBLVVJMJik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQorCisjZW5kaWYgLy8gIWRlZmlu
ZWQoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudF9oKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JT
dHlsZVNoZWV0LmNwcAppbmRleCBlYjI1ZmM0Li45ZWUxZjUxIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcApAQCAtMzgsNyArMzgsNyBAQAogI2luY2x1ZGUgIkVs
ZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSGVhZEVsZW1lbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JDU1NBZ2VudC5oIgotI2luY2x1ZGUgIkluc3BlY3RvclV0aWxpdGllcy5oIgorI2luY2x1ZGUg
Ikluc3BlY3RvclJlc291cmNlQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIK
ICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiU3R5bGVTaGVldExpc3QuaCIKQEAgLTQ2OCw3
ICs0NjgsNyBAQCBib29sIEluc3BlY3RvclN0eWxlU2hlZXQ6OnJlc291cmNlU3R5bGVTaGVldFRl
eHQoU3RyaW5nKiByZXN1bHQpIGNvbnN0CiAgICAgaWYgKCFtX3BhZ2VTdHlsZVNoZWV0KQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gSW5zcGVjdG9yVXRpbGl0aWVzOjpyZXNv
dXJjZUNvbnRlbnRGb3JVUkwobV9wYWdlU3R5bGVTaGVldC0+ZmluYWxVUkwoKSwgb3duZXJEb2N1
bWVudCgpLCByZXN1bHQpOworICAgIHJldHVybiBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpyZXNv
dXJjZUNvbnRlbnQob3duZXJEb2N1bWVudCgpLCBtX3BhZ2VTdHlsZVNoZWV0LT5maW5hbFVSTCgp
LCByZXN1bHQpOwogfQogCiBib29sIEluc3BlY3RvclN0eWxlU2hlZXQ6OmlubGluZVN0eWxlU2hl
ZXRUZXh0KFN0cmluZyogcmVzdWx0KSBjb25zdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yVXRpbGl0aWVzLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclV0
aWxpdGllcy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkNmIwZDcuLjAwMDAw
MDAKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVXRpbGl0aWVzLmNwcAorKysgL2Rl
di9udWxsCkBAIC0xLDk3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSW5z
cGVjdG9yVXRpbGl0aWVzLmgiCi0KLSNpbmNsdWRlICJDYWNoZS5oIgotI2luY2x1ZGUgIkNhY2hl
ZFJlc291cmNlLmgiCi0jaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKLSNpbmNsdWRl
ICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCi0jaW5jbHVkZSAiRnJh
bWUuaCIKLSNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgotI2luY2x1ZGUgIktVUkwuaCIKLSNpbmNs
dWRlICJTaGFyZWRCdWZmZXIuaCIKLSNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKLQotI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KLQotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotLy8gc3RhdGljCi1ib29sIEluc3BlY3RvclV0aWxpdGllczo6cmVzb3VyY2VD
b250ZW50Rm9yVVJMKGNvbnN0IEtVUkwmIHVybCwgRG9jdW1lbnQqIGZyYW1lRG9jdW1lbnQsIFN0
cmluZyogcmVzdWx0KQotewotICAgIGlmICghZnJhbWVEb2N1bWVudCkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgU3RyaW5nIHRleHRFbmNvZGluZ05hbWU7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyOwotICAgIGlmIChlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVy
KHVybCwgZnJhbWVEb2N1bWVudC0+ZnJhbWUoKS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCkt
PnJlcXVlc3RVUkwoKSkpIHsKLSAgICAgICAgdGV4dEVuY29kaW5nTmFtZSA9IGZyYW1lRG9jdW1l
bnQtPmlucHV0RW5jb2RpbmcoKTsKLSAgICAgICAgYnVmZmVyID0gZnJhbWVEb2N1bWVudC0+ZnJh
bWUoKS0+bG9hZGVyKCktPnByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNl
RGF0YSgpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nID0g
dXJsLnN0cmluZygpOwotICAgICAgICBDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UgPSBm
cmFtZURvY3VtZW50LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5jYWNoZWRSZXNvdXJjZSh1cmxT
dHJpbmcpOwotICAgICAgICBpZiAoIWNhY2hlZFJlc291cmNlKQotICAgICAgICAgICAgY2FjaGVk
UmVzb3VyY2UgPSBjYWNoZSgpLT5yZXNvdXJjZUZvclVSTCh1cmxTdHJpbmcpOwotCi0gICAgICAg
IEFTU0VSVChjYWNoZWRSZXNvdXJjZSk7IC8vIEZJWE1FKGFwYXZsb3YpOiBUaGlzIG1pZ2h0IGJl
IHRvbyBhZ2dyZXNzaXZlLgotCi0gICAgICAgIGJvb2wgaXNVbnB1cmdlYWJsZSA9IHRydWU7Ci0g
ICAgICAgIGlmIChjYWNoZWRSZXNvdXJjZS0+aXNQdXJnZWFibGUoKSkgewotICAgICAgICAgICAg
Ly8gSWYgdGhlIHJlc291cmNlIGlzIHB1cmdlYWJsZSB0aGVuIG1ha2UgaXQgdW5wdXJnZWFibGUg
dG8gZ2V0Ci0gICAgICAgICAgICAvLyBpdHMgZGF0YS4gVGhpcyBtaWdodCBmYWlsLCBpbiB3aGlj
aCBjYXNlIHdlIHJldHVybiBhbgotICAgICAgICAgICAgLy8gZW1wdHkgU3RyaW5nLgotICAgICAg
ICAgICAgaWYgKCFjYWNoZWRSZXNvdXJjZS0+bWFrZVB1cmdlYWJsZShmYWxzZSkpCi0gICAgICAg
ICAgICAgICAgaXNVbnB1cmdlYWJsZSA9IGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGlmIChp
c1VucHVyZ2VhYmxlKSB7Ci0gICAgICAgICAgICB0ZXh0RW5jb2RpbmdOYW1lID0gY2FjaGVkUmVz
b3VyY2UtPmVuY29kaW5nKCk7Ci0gICAgICAgICAgICBidWZmZXIgPSBjYWNoZWRSZXNvdXJjZS0+
ZGF0YSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKGJ1ZmZlcikgewotICAgICAgICBU
ZXh0RW5jb2RpbmcgZW5jb2RpbmcodGV4dEVuY29kaW5nTmFtZSk7Ci0gICAgICAgIGlmICghZW5j
b2RpbmcuaXNWYWxpZCgpKQotICAgICAgICAgICAgZW5jb2RpbmcgPSBXaW5kb3dzTGF0aW4xRW5j
b2RpbmcoKTsKLSAgICAgICAgKnJlc3VsdCA9IGVuY29kaW5nLmRlY29kZShidWZmZXItPmRhdGEo
KSwgYnVmZmVyLT5zaXplKCkpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gZmFsc2U7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVO
QUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JV
dGlsaXRpZXMuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclV0aWxpdGllcy5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyODM3NDI2Li4wMDAwMDAwCi0tLSBhL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclV0aWxpdGllcy5oCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoK
LSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpZm5kZWYgSW5zcGVjdG9yVXRpbGl0aWVzX2gKLSNkZWZpbmUgSW5zcGVjdG9yVXRpbGl0
aWVzX2gKLQotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0KLSNpZiBFTkFCTEUoSU5TUEVD
VE9SKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIENTU1N0eWxlRGVjbGFyYXRpb247
Ci1jbGFzcyBDU1NTdHlsZVJ1bGU7Ci1jbGFzcyBDU1NTdHlsZVNoZWV0OwotY2xhc3MgRG9jdW1l
bnQ7Ci1jbGFzcyBLVVJMOwotY2xhc3MgU3R5bGVCYXNlOwotCi1jbGFzcyBJbnNwZWN0b3JVdGls
aXRpZXMgewotcHVibGljOgotICAgIHN0YXRpYyBib29sIHJlc291cmNlQ29udGVudEZvclVSTChj
b25zdCBLVVJMJiB1cmwsIERvY3VtZW50KiBmcmFtZURvY3VtZW50LCBTdHJpbmcqIHJlc3VsdCk7
Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoSU5TUEVD
VE9SKQotCi0jZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yVXRpbGl0aWVzX2gpCg==
</data>
<flag name="review"
          id="60064"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>