<?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>118393</bug_id>
          
          <creation_ts>2013-07-04 07:43:59 -0700</creation_ts>
          <short_desc>Adopt is/toHTMLTableElement for code cleanup</short_desc>
          <delta_ts>2013-07-07 23:53:35 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kangil Han">kangil.han</reporter>
          <assigned_to name="Kangil Han">kangil.han</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>906166</commentid>
    <comment_count>0</comment_count>
    <who name="Kangil Han">kangil.han</who>
    <bug_when>2013-07-04 07:43:59 -0700</bug_when>
    <thetext>Adopt is/toHTMLTableElement for code cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906169</commentid>
    <comment_count>1</comment_count>
      <attachid>206087</attachid>
    <who name="Kangil Han">kangil.han</who>
    <bug_when>2013-07-04 07:47:23 -0700</bug_when>
    <thetext>Created attachment 206087
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906170</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-07-04 07:48:35 -0700</bug_when>
    <thetext>Attachment 206087 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/accessibility/AccessibilityRenderObject.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityTable.cpp&apos;, u&apos;Source/WebCore/accessibility/atk/WebKitAccessibleInterfaceTable.cpp&apos;, u&apos;Source/WebCore/accessibility/atk/WebKitAccessibleWrapperAtk.cpp&apos;, u&apos;Source/WebCore/css/StyleResolver.cpp&apos;, u&apos;Source/WebCore/dom/Position.cpp&apos;, u&apos;Source/WebCore/editing/DeleteSelectionCommand.cpp&apos;, u&apos;Source/WebCore/editing/InsertLineBreakCommand.cpp&apos;, u&apos;Source/WebCore/editing/htmlediting.cpp&apos;, u&apos;Source/WebCore/editing/markup.cpp&apos;, u&apos;Source/WebCore/html/FTPDirectoryDocument.cpp&apos;, u&apos;Source/WebCore/html/HTMLFormElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLTableElement.h&apos;, u&apos;Source/WebCore/html/HTMLTablePartElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLTableRowElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLTableRowsCollection.cpp&apos;, u&apos;Source/WebCore/html/parser/HTMLElementStack.cpp&apos;, u&apos;Source/WebCore/html/parser/HTMLTreeBuilder.cpp&apos;, u&apos;Source/WebCore/platform/mac/HTMLConverter.mm&apos;, u&apos;Source/WebCore/rendering/RenderObject.cpp&apos;, u&apos;Source/WebCore/rendering/RenderTable.cpp&apos;]&quot; exit_code: 1
Source/WebCore/editing/DeleteSelectionCommand.cpp:449:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 1 in 22 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>906171</commentid>
    <comment_count>3</comment_count>
    <who name="Kangil Han">kangil.han</who>
    <bug_when>2013-07-04 07:51:08 -0700</bug_when>
    <thetext>Style error is not related to this patch. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906342</commentid>
    <comment_count>4</comment_count>
      <attachid>206087</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-07-05 02:44:56 -0700</bug_when>
    <thetext>Comment on attachment 206087
Patch

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

r=me with some minor changes:

&gt; Source/WebCore/html/HTMLTableElement.h:103
&gt; +inline bool isHTMLTableElement(Node* node)

The argument should be const Node*, otherwise we can only call isHTMLTableElement on non-const Nodes.

&gt; Source/WebCore/html/HTMLTableElement.h:111
&gt; +inline bool isHTMLTableElement(Element* element)
&gt; +{
&gt; +    return element-&gt;hasTagName(HTMLNames::tableTag);
&gt; +}

This overload shouldn&apos;t be necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906662</commentid>
    <comment_count>5</comment_count>
      <attachid>206217</attachid>
    <who name="Kangil Han">kangil.han</who>
    <bug_when>2013-07-07 21:45:16 -0700</bug_when>
    <thetext>Created attachment 206217
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906666</commentid>
    <comment_count>6</comment_count>
    <who name="Kangil Han">kangil.han</who>
    <bug_when>2013-07-07 21:47:23 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 206087 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=206087&amp;action=review
&gt; 
&gt; r=me with some minor changes:
&gt; 
&gt; &gt; Source/WebCore/html/HTMLTableElement.h:103
&gt; &gt; +inline bool isHTMLTableElement(Node* node)
&gt; 
&gt; The argument should be const Node*, otherwise we can only call isHTMLTableElement on non-const Nodes.
&gt; 
&gt; &gt; Source/WebCore/html/HTMLTableElement.h:111
&gt; &gt; +inline bool isHTMLTableElement(Element* element)
&gt; &gt; +{
&gt; &gt; +    return element-&gt;hasTagName(HTMLNames::tableTag);
&gt; &gt; +}
&gt; 
&gt; This overload shouldn&apos;t be necessary.

Done, thx! :)
Took kling&apos;s comment into consideration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906677</commentid>
    <comment_count>7</comment_count>
      <attachid>206217</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-07-07 23:53:33 -0700</bug_when>
    <thetext>Comment on attachment 206217
Patch

Clearing flags on attachment: 206217

Committed r152440: &lt;http://trac.webkit.org/changeset/152440&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906678</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-07-07 23:53:35 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>206087</attachid>
            <date>2013-07-04 07:47:23 -0700</date>
            <delta_ts>2013-07-07 21:45:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-118393-20130704234529.patch</filename>
            <type>text/plain</type>
            <size>29833</size>
            <attacher name="Kangil Han">kangil.han</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUyMzg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjQyMDA5Y2U0YTVlNjI5
ODNhMWJmZjkzYTA2ZDYwZDY0MmVjY2M0ZS4uMTc1ODAxMjk5MzdjOTBhNDBlMDQwZGZkZmU4ZWI1
ZDdhMmNmNWM2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDEzLTA3LTA0ICBLYW5n
aWwgSGFuICA8a2FuZ2lsLmhhbkBzYW1zdW5nLmNvbT4KKworICAgICAgICBBZG9wdCBpcy90b0hU
TUxUYWJsZUVsZW1lbnQgZm9yIGNvZGUgY2xlYW51cAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4MzkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVG8gZW5oYW5jZSByZWFkYWJpbGl0eSwgdGhpcyBwYXRj
aCBhZG9wdHMgaXMvdG9IVE1MVGFibGVFbGVtZW50LgorICAgICAgICBUaGlzIGFsc28gaGVscHMg
b3V0IHRvIHJlZHVjZSBkdXBsaWNhdGVkIHVzZSBvZiBzdGF0aWNfY2FzdC4KKworICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5
Um9sZSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjppc0RhdGFUYWJsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmlzVGFibGVFeHBvc2FibGVUaHJvdWdo
QWNjZXNzaWJpbGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OnRp
dGxlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJm
YWNlVGFibGUuY3BwOgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZVRhYmxlR2V0Q2FwdGlvbik6
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVdyYXBwZXJBdGsu
Y3BwOgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUdldERlc2NyaXB0aW9uKToKKyAgICAgICAg
KiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVy
OjphZGp1c3RSZW5kZXJTdHlsZSk6CisgICAgICAgICogZG9tL1Bvc2l0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmVuZHNPZk5vZGVBcmVWaXN1YWxseURpc3RpbmN0UG9zaXRpb25zKToKKyAg
ICAgICAgKiBlZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6aGFuZGxlR2VuZXJhbERlbGV0ZSk6CisgICAg
ICAgICogZWRpdGluZy9JbnNlcnRMaW5lQnJlYWtDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc2VydExpbmVCcmVha0NvbW1hbmQ6OmRvQXBwbHkpOgorICAgICAgICAqIGVkaXRpbmcv
aHRtbGVkaXRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNOb25UYWJsZUNlbGxIVE1MQmxv
Y2tFbGVtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL21hcmt1cC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjphbmNlc3RvclRvUmV0YWluU3RydWN0dXJlQW5kQXBwZWFyYW5jZUZvckJsb2NrKToKKyAg
ICAgICAgKiBodG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRUZW1wbGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6Y3JlYXRlQmFzaWNEb2N1
bWVudCk6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEZvcm1FbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKToKKyAgICAgICAgKiBodG1s
L0hUTUxUYWJsZUVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OmlzSFRNTFRhYmxlRWxlbWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjp0b0hUTUxUYWJsZUVsZW1lbnQpOgorICAgICAgICAqIGh0
bWwvSFRNTFRhYmxlUGFydEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxl
UGFydEVsZW1lbnQ6OmZpbmRQYXJlbnRUYWJsZSk6CisgICAgICAgICogaHRtbC9IVE1MVGFibGVS
b3dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZVJvd0VsZW1lbnQ6OnJv
d0luZGV4KToKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uOjpIVE1MVGFibGVSb3dzQ29s
bGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFibGVSb3dzQ29sbGVjdGlvbjo6dmly
dHVhbEl0ZW1BZnRlcik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTEVsZW1lbnRTdGFjay5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTmFtZXM6OmlzU2NvcGVNYXJrZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE5hbWVzOjppc1RhYmxlU2NvcGVNYXJrZXIpOgorICAgICAgICAqIGh0
bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJl
ZUJ1aWxkZXI6OnJlc2V0SW5zZXJ0aW9uTW9kZUFwcHJvcHJpYXRlbHkpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQ2hhcmFjdGVyQnVmZmVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAgKC1bV2ViSFRNTENvbnZl
cnRlciBfY29tcHV0ZWRTdHJpbmdGb3JOb2RlOnByb3BlcnR5Ol0pOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojpv
ZmZzZXRQYXJlbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6Y29udmVydFN0eWxlTG9naWNhbFdpZHRoVG9Db21w
dXRlZFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjpjb252ZXJ0U3R5bGVM
b2dpY2FsSGVpZ2h0VG9Db21wdXRlZEhlaWdodCk6CisKIDIwMTMtMDctMDMgIEthbmdpbCBIYW4g
IDxrYW5naWwuaGFuQHNhbXN1bmcuY29tPgogCiAgICAgICAgIEFkb3B0IGlzL3RvSFRNTE1hcEVs
ZW1lbnQgZm9yIGNvZGUgY2xlYW51cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggMDVmZDIyOWFk
NjMyY2IxYTU5MThiYzFlZjU3OTkyODgxYjJlYzA5ZS4uZmQ4Y2I4YTVlMmE5NThmYWY2YjdiZGE1
MGM3YzYyOWI2ZGU5NWZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC01NCw2ICs1NCw3IEBA
CiAjaW5jbHVkZSAiSFRNTE9wdGlvbkVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MT3B0aW9uc0Nv
bGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MU2VsZWN0RWxlbWVudC5oIgorI2luY2x1ZGUgIkhU
TUxUYWJsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVGV4dEFyZWFFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSGl0VGVzdFJlcXVlc3QuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCkBAIC0y
NTM1LDcgKzI1MzYsNyBAQCBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0OjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSgpCiAgICAgaWYgKG5vZGUgJiYgbm9kZS0+
aGFzVGFnTmFtZSh0clRhZykpCiAgICAgICAgIHJldHVybiBSb3dSb2xlOwogCi0gICAgaWYgKG5v
ZGUgJiYgbm9kZS0+aGFzVGFnTmFtZSh0YWJsZVRhZykpCisgICAgaWYgKG5vZGUgJiYgaXNIVE1M
VGFibGVFbGVtZW50KG5vZGUpKQogICAgICAgICByZXR1cm4gVGFibGVSb2xlOwogI2VuZGlmCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRh
YmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxl
LmNwcAppbmRleCA1NmUyZTk0OTU3MWFlNDYxM2IxMzRkM2YzZGZmZmEyNTk1NzEyYjZhLi4yODYy
ZDQ4MDk4MzExODZjYzBiMTgzMDhhMGIzODdmMTJjYmMzMmI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCkBAIC0xMTEsMTEg
KzExMSwxMSBAQCBib29sIEFjY2Vzc2liaWxpdHlUYWJsZTo6aXNEYXRhVGFibGUoKSBjb25zdAog
ICAgIAogICAgIFJlbmRlclRhYmxlKiB0YWJsZSA9IHRvUmVuZGVyVGFibGUobV9yZW5kZXJlcik7
CiAgICAgTm9kZSogdGFibGVOb2RlID0gdGFibGUtPm5vZGUoKTsKLSAgICBpZiAoIXRhYmxlTm9k
ZSB8fCAhdGFibGVOb2RlLT5oYXNUYWdOYW1lKHRhYmxlVGFnKSkKKyAgICBpZiAoIXRhYmxlTm9k
ZSB8fCAhaXNIVE1MVGFibGVFbGVtZW50KHRhYmxlTm9kZSkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIC8vIGlmIHRoZXJlIGlzIGEgY2FwdGlvbiBlbGVtZW50LCBzdW1tYXJ5LCBUSEVB
RCwgb3IgVEZPT1Qgc2VjdGlvbiwgaXQncyBtb3N0IGNlcnRhaW5seSBhIGRhdGEgdGFibGUKLSAg
ICBIVE1MVGFibGVFbGVtZW50KiB0YWJsZUVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MVGFibGVF
bGVtZW50Kj4odGFibGVOb2RlKTsKKyAgICBIVE1MVGFibGVFbGVtZW50KiB0YWJsZUVsZW1lbnQg
PSB0b0hUTUxUYWJsZUVsZW1lbnQodGFibGVOb2RlKTsKICAgICBpZiAoIXRhYmxlRWxlbWVudC0+
c3VtbWFyeSgpLmlzRW1wdHkoKSB8fCB0YWJsZUVsZW1lbnQtPnRIZWFkKCkgfHwgdGFibGVFbGVt
ZW50LT50Rm9vdCgpIHx8IHRhYmxlRWxlbWVudC0+Y2FwdGlvbigpKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAKQEAgLTMxMCw3ICszMTAsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlUYWJsZTo6
aXNUYWJsZUV4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkgY29uc3QKICAgICAvLyBHdGsr
IEFUcyBleHBlY3QgYWxsIHRhYmxlcyB0byBiZSBleHBvc2VkIGFzIHRhYmxlcy4KICNpZiBQTEFU
Rk9STShHVEspCiAgICAgTm9kZSogdGFibGVOb2RlID0gdG9SZW5kZXJUYWJsZShtX3JlbmRlcmVy
KS0+bm9kZSgpOwotICAgIHJldHVybiB0YWJsZU5vZGUgJiYgdGFibGVOb2RlLT5oYXNUYWdOYW1l
KHRhYmxlVGFnKTsKKyAgICByZXR1cm4gdGFibGVOb2RlICYmIGlzSFRNTFRhYmxlRWxlbWVudCh0
YWJsZU5vZGUpOwogI2VuZGlmCiAKICAgICByZXR1cm4gaXNEYXRhVGFibGUoKTsKQEAgLTU2Miw4
ICs1NjIsOCBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eVRhYmxlOjp0aXRsZSgpIGNvbnN0CiAgICAg
CiAgICAgLy8gc2VlIGlmIHRoZXJlIGlzIGEgY2FwdGlvbgogICAgIE5vZGUqIHRhYmxlRWxlbWVu
dCA9IG1fcmVuZGVyZXItPm5vZGUoKTsKLSAgICBpZiAodGFibGVFbGVtZW50ICYmIHRhYmxlRWxl
bWVudC0+aGFzVGFnTmFtZSh0YWJsZVRhZykpIHsKLSAgICAgICAgSFRNTFRhYmxlQ2FwdGlvbkVs
ZW1lbnQqIGNhcHRpb24gPSBzdGF0aWNfY2FzdDxIVE1MVGFibGVFbGVtZW50Kj4odGFibGVFbGVt
ZW50KS0+Y2FwdGlvbigpOworICAgIGlmICh0YWJsZUVsZW1lbnQgJiYgaXNIVE1MVGFibGVFbGVt
ZW50KHRhYmxlRWxlbWVudCkpIHsKKyAgICAgICAgSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQqIGNh
cHRpb24gPSB0b0hUTUxUYWJsZUVsZW1lbnQodGFibGVFbGVtZW50KS0+Y2FwdGlvbigpOwogICAg
ICAgICBpZiAoY2FwdGlvbikKICAgICAgICAgICAgIHRpdGxlID0gY2FwdGlvbi0+aW5uZXJUZXh0
KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsv
V2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUYWJsZS5jcHAKaW5kZXggOWI2
NTEwMDJlNjMyYjY4YTFkY2Y1NTc1OGVmOGQ1Njk3OGVjM2RkMi4uNjY4NDc0NTc1MGQxMzVkOThh
Zjk5OTIzZmQyYmIxNzRhOGQ3Y2RiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRhYmxlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGFi
bGUuY3BwCkBAIC0yMTIsOCArMjEyLDggQEAgc3RhdGljIEF0a09iamVjdCogd2Via2l0QWNjZXNz
aWJsZVRhYmxlR2V0Q2FwdGlvbihBdGtUYWJsZSogdGFibGUpCiAgICAgQWNjZXNzaWJpbGl0eU9i
amVjdCogYWNjVGFibGUgPSBjb3JlKHRhYmxlKTsKICAgICBpZiAoYWNjVGFibGUtPmlzQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdCgpKSB7CiAgICAgICAgIE5vZGUqIG5vZGUgPSBhY2NUYWJsZS0+
bm9kZSgpOwotICAgICAgICBpZiAobm9kZSAmJiBub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6
dGFibGVUYWcpKSB7Ci0gICAgICAgICAgICBIVE1MVGFibGVDYXB0aW9uRWxlbWVudCogY2FwdGlv
biA9IHN0YXRpY19jYXN0PEhUTUxUYWJsZUVsZW1lbnQqPihub2RlKS0+Y2FwdGlvbigpOworICAg
ICAgICBpZiAobm9kZSAmJiBpc0hUTUxUYWJsZUVsZW1lbnQobm9kZSkpIHsKKyAgICAgICAgICAg
IEhUTUxUYWJsZUNhcHRpb25FbGVtZW50KiBjYXB0aW9uID0gdG9IVE1MVGFibGVFbGVtZW50KG5v
ZGUpLT5jYXB0aW9uKCk7CiAgICAgICAgICAgICBpZiAoY2FwdGlvbikKICAgICAgICAgICAgICAg
ICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdDo6Zmlyc3RBY2Nlc3NpYmxlT2JqZWN0RnJvbU5v
ZGUoY2FwdGlvbi0+cmVuZGVyZXIoKS0+bm9kZSgpKS0+d3JhcHBlcigpOwogICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3Np
YmxlV3JhcHBlckF0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJL
aXRBY2Nlc3NpYmxlV3JhcHBlckF0ay5jcHAKaW5kZXggYTNlN2MyM2MyZGZjMTBmMTA3ZmFhZTBm
MmEwMmFmYzY4N2U0M2MwZS4uOWJkZjI5NTgyOWY4YjdjNTNlNDdlZWM3OGE2MTRiYmE5MmNlYWNl
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNj
ZXNzaWJsZVdyYXBwZXJBdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRrL1dlYktpdEFjY2Vzc2libGVXcmFwcGVyQXRrLmNwcApAQCAtMTg1LDcgKzE4NSw3IEBAIHN0
YXRpYyBjb25zdCBnY2hhciogd2Via2l0QWNjZXNzaWJsZUdldERlc2NyaXB0aW9uKEF0a09iamVj
dCogb2JqZWN0KQogCiAgICAgLy8gYXRrX3RhYmxlX2dldF9zdW1tYXJ5IHJldHVybnMgYW4gQXRr
T2JqZWN0LiBXZSBoYXZlIG5vIHN1bW1hcnkgb2JqZWN0LCBzbyBleHBvc2Ugc3VtbWFyeSBoZXJl
LgogICAgIGlmIChjb3JlT2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBUYWJsZVJvbGUpIHsKLSAgICAg
ICAgU3RyaW5nIHN1bW1hcnkgPSBzdGF0aWNfY2FzdDxIVE1MVGFibGVFbGVtZW50Kj4obm9kZSkt
PnN1bW1hcnkoKTsKKyAgICAgICAgU3RyaW5nIHN1bW1hcnkgPSB0b0hUTUxUYWJsZUVsZW1lbnQo
bm9kZSktPnN1bW1hcnkoKTsKICAgICAgICAgaWYgKCFzdW1tYXJ5LmlzRW1wdHkoKSkKICAgICAg
ICAgICAgIHJldHVybiBjYWNoZUFuZFJldHVybkF0a1Byb3BlcnR5KG9iamVjdCwgQXRrQ2FjaGVk
QWNjZXNzaWJsZURlc2NyaXB0aW9uLCBzdW1tYXJ5KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSZXNvbHZlci5jcHAKaW5kZXggZDg0ZDgyN2FjN2IzZWE4MjkzZWRmYjVjNTJiZDc1MGVjOWE3
NzQ5NS4uNzAwZmUzZjM2N2Y1OGM4MjM2MDI1NTg5ZjQ3YmYyZWJhNDIyZDgzZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtNzIsNiArNzIsNyBAQAogI2luY2x1ZGUgIkhU
TUxPcHRpb25FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFByb2dyZXNzRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkhUTUxTdHlsZUVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MVGFibGVFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiSFRNTFRleHRBcmVhRWxlbWVudC5oIgogI2luY2x1ZGUgIkluc2VydGlvblBv
aW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCkBAIC0xMzc1LDcg
KzEzNzYsNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFkanVzdFJlbmRlclN0eWxlKFJlbmRlclN0
eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHBhcmVudFN0eQogICAgICAgICAgICAgaWYgKGUtPmhh
c1RhZ05hbWUodGRUYWcpKSB7CiAgICAgICAgICAgICAgICAgc3R5bGUtPnNldERpc3BsYXkoVEFC
TEVfQ0VMTCk7CiAgICAgICAgICAgICAgICAgc3R5bGUtPnNldEZsb2F0aW5nKE5vRmxvYXQpOwot
ICAgICAgICAgICAgfSBlbHNlIGlmIChlLT5oYXNUYWdOYW1lKHRhYmxlVGFnKSkKKyAgICAgICAg
ICAgIH0gZWxzZSBpZiAoaXNIVE1MVGFibGVFbGVtZW50KGUpKQogICAgICAgICAgICAgICAgIHN0
eWxlLT5zZXREaXNwbGF5KHN0eWxlLT5pc0Rpc3BsYXlJbmxpbmVUeXBlKCkgPyBJTkxJTkVfVEFC
TEUgOiBUQUJMRSk7CiAgICAgICAgIH0KIApAQCAtMTM5Miw3ICsxMzkzLDcgQEAgdm9pZCBTdHls
ZVJlc29sdmVyOjphZGp1c3RSZW5kZXJTdHlsZShSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0
eWxlKiBwYXJlbnRTdHkKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRhYmxlcyBuZXZlciBzdXBw
b3J0IHRoZSAtd2Via2l0LSogdmFsdWVzIGZvciB0ZXh0LWFsaWduIGFuZCB3aWxsIHJlc2V0IGJh
Y2sgdG8gdGhlIGRlZmF1bHQuCi0gICAgICAgIGlmIChlICYmIGUtPmhhc1RhZ05hbWUodGFibGVU
YWcpICYmIChzdHlsZS0+dGV4dEFsaWduKCkgPT0gV0VCS0lUX0xFRlQgfHwgc3R5bGUtPnRleHRB
bGlnbigpID09IFdFQktJVF9DRU5URVIgfHwgc3R5bGUtPnRleHRBbGlnbigpID09IFdFQktJVF9S
SUdIVCkpCisgICAgICAgIGlmIChlICYmIGlzSFRNTFRhYmxlRWxlbWVudChlKSAmJiAoc3R5bGUt
PnRleHRBbGlnbigpID09IFdFQktJVF9MRUZUIHx8IHN0eWxlLT50ZXh0QWxpZ24oKSA9PSBXRUJL
SVRfQ0VOVEVSIHx8IHN0eWxlLT50ZXh0QWxpZ24oKSA9PSBXRUJLSVRfUklHSFQpKQogICAgICAg
ICAgICAgc3R5bGUtPnNldFRleHRBbGlnbihUQVNUQVJUKTsKIAogICAgICAgICAvLyBGcmFtZXMg
YW5kIGZyYW1lc2V0cyBuZXZlciBob25vciBwb3NpdGlvbjpyZWxhdGl2ZSBvciBwb3NpdGlvbjph
YnNvbHV0ZS4gVGhpcyBpcyBuZWNlc3NhcnkgdG8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Qb3NpdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCmluZGV4
IDg0YmYwNDI1NDBhZmNiZThkZTIxMDM5OGQ2Y2U4NDI2ZmU3ZTc5NWQuLjZjYjAwNjExZmM3MGUy
MzhiODQ5NTUwM2I2NDQyOTc5NDZiZjY1MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Qb3NpdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcApAQCAt
MjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgi
CiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSFRNTFRhYmxlRWxlbWVudC5oIgog
I2luY2x1ZGUgIklubGluZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSW5saW5lVGV4dEJveC5oIgog
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKQEAgLTU2MSw3ICs1NjIsNyBAQCBzdGF0aWMgYm9vbCBlbmRz
T2ZOb2RlQXJlVmlzdWFsbHlEaXN0aW5jdFBvc2l0aW9ucyhOb2RlKiBub2RlKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgCiAgICAgLy8gRG9uJ3QgaW5jbHVkZSBpbmxpbmUgdGFibGVz
LgotICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKHRhYmxlVGFnKSkKKyAgICBpZiAoaXNIVE1MVGFi
bGVFbGVtZW50KG5vZGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgLy8gVGhl
cmUgaXMgYSBWaXNpYmxlUG9zaXRpb24gaW5zaWRlIGFuIGVtcHR5IGlubGluZS1ibG9jayBjb250
YWluZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlv
bkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21t
YW5kLmNwcAppbmRleCA1NzkyNmMzMDY4MDRhODUzYjEyYTc1MzVhNmUxOThhYThiYWExNGU0Li40
ZjhhMTRkZGY1YmRjZjRiMWJhZGNlOTY5ZDVkZDU5OWViMjkwN2QwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTM2LDYgKzM2
LDcgQEAKICNpbmNsdWRlICJodG1sZWRpdGluZy5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MVGFibGVFbGVtZW50
LmgiCiAjaW5jbHVkZSAiTm9kZVRyYXZlcnNhbC5oIgogI2luY2x1ZGUgIlJlbmRlclRhYmxlQ2Vs
bC5oIgogI2luY2x1ZGUgIlRleHQuaCIKQEAgLTQ0NSw3ICs0NDYsNyBAQCB2b2lkIERlbGV0ZVNl
bGVjdGlvbkNvbW1hbmQ6OmhhbmRsZUdlbmVyYWxEZWxldGUoKQogICAgIG1ha2VTdHlsaW5nRWxl
bWVudHNEaXJlY3RDaGlsZHJlbk9mRWRpdGFibGVSb290VG9QcmV2ZW50U3R5bGVMb3NzKCk7CiAK
ICAgICAvLyBOZXZlciByZW1vdmUgdGhlIHN0YXJ0IGJsb2NrIHVubGVzcyBpdCdzIGEgdGFibGUs
IGluIHdoaWNoIGNhc2Ugd2Ugd29uJ3QgbWVyZ2UgY29udGVudCBpbi4KLSAgICBpZiAoc3RhcnRO
b2RlID09IG1fc3RhcnRCbG9jayAmJiBzdGFydE9mZnNldCA9PSAwICYmIGNhbkhhdmVDaGlsZHJl
bkZvckVkaXRpbmcoc3RhcnROb2RlKSAmJiAhc3RhcnROb2RlLT5oYXNUYWdOYW1lKHRhYmxlVGFn
KSkgeworICAgIGlmIChzdGFydE5vZGUgPT0gbV9zdGFydEJsb2NrICYmIHN0YXJ0T2Zmc2V0ID09
IDAgJiYgY2FuSGF2ZUNoaWxkcmVuRm9yRWRpdGluZyhzdGFydE5vZGUpICYmICFpc0hUTUxUYWJs
ZUVsZW1lbnQoc3RhcnROb2RlKSkgewogICAgICAgICBzdGFydE9mZnNldCA9IDA7CiAgICAgICAg
IHN0YXJ0Tm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHQoc3RhcnROb2RlKTsKICAgICAgICAgaWYg
KCFzdGFydE5vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydExp
bmVCcmVha0NvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaW5lQnJl
YWtDb21tYW5kLmNwcAppbmRleCA5MmI0YWQyNWRhYzhmZTM3NzAxZmMyZDg0YTBhMjM4ZDNhOTgz
ZDcwLi4zNGI0NjIyMDdiODUyMTAyZWFlOGIyOGM3MWFjMTAxMTRlZjA0ZmZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydExpbmVCcmVha0NvbW1hbmQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHAKQEAgLTMy
LDYgKzMyLDcgQEAKICNpbmNsdWRlICJGcmFtZVNlbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxF
bGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSFRNTFRhYmxlRWxl
bWVudC5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAj
aW5jbHVkZSAiVGV4dC5oIgpAQCAtMTE1LDcgKzExNiw3IEBAIHZvaWQgSW5zZXJ0TGluZUJyZWFr
Q29tbWFuZDo6ZG9BcHBseSgpCiAgICAgLy8gRklYTUU6IE5lZWQgdG8gbWVyZ2UgdGV4dCBub2Rl
cyB3aGVuIGluc2VydGluZyBqdXN0IGFmdGVyIG9yIGJlZm9yZSB0ZXh0LgogICAgIAogICAgIGlm
IChpc0VuZE9mUGFyYWdyYXBoKGNhcmV0KSAmJiAhbGluZUJyZWFrRXhpc3RzQXRWaXNpYmxlUG9z
aXRpb24oY2FyZXQpKSB7Ci0gICAgICAgIGJvb2wgbmVlZEV4dHJhTGluZUJyZWFrID0gIXBvcy5k
ZXByZWNhdGVkTm9kZSgpLT5oYXNUYWdOYW1lKGhyVGFnKSAmJiAhcG9zLmRlcHJlY2F0ZWROb2Rl
KCktPmhhc1RhZ05hbWUodGFibGVUYWcpOworICAgICAgICBib29sIG5lZWRFeHRyYUxpbmVCcmVh
ayA9ICFwb3MuZGVwcmVjYXRlZE5vZGUoKS0+aGFzVGFnTmFtZShoclRhZykgJiYgIWlzSFRNTFRh
YmxlRWxlbWVudChwb3MuZGVwcmVjYXRlZE5vZGUoKSk7CiAgICAgICAgIAogICAgICAgICBpbnNl
cnROb2RlQXQobm9kZVRvSW5zZXJ0LmdldCgpLCBwb3MpOwogICAgICAgICAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9odG1sZWRpdGluZy5jcHAKaW5kZXggMjJjNDY2OTExNmRiNDYxMjQ0NDc5YjM4MTc2
MWRiNmE4NGE5ZThhMS4uZjNjNzBlMDZkM2IxOTJmZmFkOWE3MGViODVhYTg3OGE5NDE4Yjc3NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAKQEAgLTQwLDYgKzQwLDcgQEAK
ICNpbmNsdWRlICJIVE1MT0xpc3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE9iamVjdEVsZW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MUGFyYWdyYXBoRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxU
YWJsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oIgog
I2luY2x1ZGUgIkhUTUxVTGlzdEVsZW1lbnQuaCIKICNpbmNsdWRlICJOb2RlVHJhdmVyc2FsLmgi
CkBAIC0xMjE5LDE5ICsxMjIwLDIzIEBAIGJvb2wgYXJlSWRlbnRpY2FsRWxlbWVudHMoY29uc3Qg
Tm9kZSogZmlyc3QsIGNvbnN0IE5vZGUqIHNlY29uZCkKIAogYm9vbCBpc05vblRhYmxlQ2VsbEhU
TUxCbG9ja0VsZW1lbnQoY29uc3QgTm9kZSogbm9kZSkKIHsKLSAgICByZXR1cm4gbm9kZS0+aGFz
VGFnTmFtZShsaXN0aW5nVGFnKQotICAgICAgICB8fCBub2RlLT5oYXNUYWdOYW1lKG9sVGFnKQot
ICAgICAgICB8fCBub2RlLT5oYXNUYWdOYW1lKHByZVRhZykKLSAgICAgICAgfHwgbm9kZS0+aGFz
VGFnTmFtZSh0YWJsZVRhZykKLSAgICAgICAgfHwgbm9kZS0+aGFzVGFnTmFtZSh1bFRhZykKLSAg
ICAgICAgfHwgbm9kZS0+aGFzVGFnTmFtZSh4bXBUYWcpCi0gICAgICAgIHx8IG5vZGUtPmhhc1Rh
Z05hbWUoaDFUYWcpCi0gICAgICAgIHx8IG5vZGUtPmhhc1RhZ05hbWUoaDJUYWcpCi0gICAgICAg
IHx8IG5vZGUtPmhhc1RhZ05hbWUoaDNUYWcpCi0gICAgICAgIHx8IG5vZGUtPmhhc1RhZ05hbWUo
aDRUYWcpCi0gICAgICAgIHx8IG5vZGUtPmhhc1RhZ05hbWUoaDVUYWcpOworICAgIGlmICghbm9k
ZS0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBjb25zdCBF
bGVtZW50KiBlbGVtZW50ID0gdG9FbGVtZW50KG5vZGUpOworICAgIHJldHVybiBlbGVtZW50LT5o
YXNUYWdOYW1lKGxpc3RpbmdUYWcpCisgICAgICAgIHx8IGVsZW1lbnQtPmhhc1RhZ05hbWUob2xU
YWcpCisgICAgICAgIHx8IGVsZW1lbnQtPmhhc1RhZ05hbWUocHJlVGFnKQorICAgICAgICB8fCBp
c0hUTUxUYWJsZUVsZW1lbnQoZWxlbWVudCkKKyAgICAgICAgfHwgZWxlbWVudC0+aGFzVGFnTmFt
ZSh1bFRhZykKKyAgICAgICAgfHwgZWxlbWVudC0+aGFzVGFnTmFtZSh4bXBUYWcpCisgICAgICAg
IHx8IGVsZW1lbnQtPmhhc1RhZ05hbWUoaDFUYWcpCisgICAgICAgIHx8IGVsZW1lbnQtPmhhc1Rh
Z05hbWUoaDJUYWcpCisgICAgICAgIHx8IGVsZW1lbnQtPmhhc1RhZ05hbWUoaDNUYWcpCisgICAg
ICAgIHx8IGVsZW1lbnQtPmhhc1RhZ05hbWUoaDRUYWcpCisgICAgICAgIHx8IGVsZW1lbnQtPmhh
c1RhZ05hbWUoaDVUYWcpOwogfQotICAgIAorCiBQb3NpdGlvbiBhZGp1c3RlZFNlbGVjdGlvblN0
YXJ0Rm9yU3R5bGVDb21wdXRhdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24p
CiB7CiAgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIGJ5IHJhbmdlIHN0eWxlIGNvbXB1dGF0
aW9ucyB0byBhdm9pZCBidWdzIGxpa2U6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5kZXgg
NmIzMGY1MzI5OTU0MjRhMWJkYzJkNWEzYTgxODhhN2FlZTE2MDI3Yy4uMjIyMmE3MjZiZjFkZDdj
Y2RkZDM4NzI4ZDIwYjQ5MjcwOTE0MWRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApA
QCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIkhUTUxCb2R5RWxlbWVudC5oIgogI2luY2x1ZGUg
IkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSFRNTFRh
YmxlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxUZXh0QXJlYUVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oIgogI2luY2x1ZGUgIktVUkwuaCIKQEAgLTQz
Myw3ICs0MzQsNyBAQCBzdGF0aWMgTm9kZSogYW5jZXN0b3JUb1JldGFpblN0cnVjdHVyZUFuZEFw
cGVhcmFuY2VGb3JCbG9jayhOb2RlKiBjb21tb25BbmNlc3RvcgogCiAgICAgaWYgKGNvbW1vbkFu
Y2VzdG9yQmxvY2stPmhhc1RhZ05hbWUodGJvZHlUYWcpIHx8IGNvbW1vbkFuY2VzdG9yQmxvY2st
Pmhhc1RhZ05hbWUodHJUYWcpKSB7CiAgICAgICAgIENvbnRhaW5lck5vZGUqIHRhYmxlID0gY29t
bW9uQW5jZXN0b3JCbG9jay0+cGFyZW50Tm9kZSgpOwotICAgICAgICB3aGlsZSAodGFibGUgJiYg
IXRhYmxlLT5oYXNUYWdOYW1lKHRhYmxlVGFnKSkKKyAgICAgICAgd2hpbGUgKHRhYmxlICYmICFp
c0hUTUxUYWJsZUVsZW1lbnQodGFibGUpKQogICAgICAgICAgICAgdGFibGUgPSB0YWJsZS0+cGFy
ZW50Tm9kZSgpOwogCiAgICAgICAgIHJldHVybiB0YWJsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKaW5kZXggODc4ZmZiOTNiZDFjMTI3ODcxYjJjOGFl
MGJhM2QyYmMxOTQ4NDAyZi4uOGNlMTBkODVhZjQyZjcxYzNkYmYxNTVlZTAzNzVlZDczZGNiMTcx
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKQEAg
LTMwNCwxMCArMzA0LDEwIEBAIGJvb2wgRlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmxvYWRE
b2N1bWVudFRlbXBsYXRlKCkKICAgICBSZWZQdHI8RWxlbWVudD4gdGFibGVFbGVtZW50ID0gZG9j
dW1lbnQoKS0+Z2V0RWxlbWVudEJ5SWQoImZ0cERpcmVjdG9yeVRhYmxlIik7CiAgICAgaWYgKCF0
YWJsZUVsZW1lbnQpCiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGZpbmQgZWxlbWVudCBi
eSBpZCBcImZ0cERpcmVjdG9yeVRhYmxlXCIgaW4gdGhlIHRlbXBsYXRlIGRvY3VtZW50LiIpOwot
ICAgIGVsc2UgaWYgKCF0YWJsZUVsZW1lbnQtPmhhc1RhZ05hbWUodGFibGVUYWcpKQorICAgIGVs
c2UgaWYgKCFpc0hUTUxUYWJsZUVsZW1lbnQodGFibGVFbGVtZW50LmdldCgpKSkKICAgICAgICAg
TE9HX0VSUk9SKCJFbGVtZW50IG9mIGlkIFwiZnRwRGlyZWN0b3J5VGFibGVcIiBpcyBub3QgYSB0
YWJsZSBlbGVtZW50Iik7CiAgICAgZWxzZSAKLSAgICAgICAgbV90YWJsZUVsZW1lbnQgPSBzdGF0
aWNfY2FzdDxIVE1MVGFibGVFbGVtZW50Kj4odGFibGVFbGVtZW50LmdldCgpKTsKKyAgICAgICAg
bV90YWJsZUVsZW1lbnQgPSB0b0hUTUxUYWJsZUVsZW1lbnQodGFibGVFbGVtZW50LmdldCgpKTsK
IAogICAgIC8vIEJhaWwgaWYgd2UgZm91bmQgdGhlIHRhYmxlIGVsZW1lbnQKICAgICBpZiAobV90
YWJsZUVsZW1lbnQpCkBAIC0zMTUsNyArMzE1LDcgQEAgYm9vbCBGVFBEaXJlY3RvcnlEb2N1bWVu
dFBhcnNlcjo6bG9hZERvY3VtZW50VGVtcGxhdGUoKQogCiAgICAgLy8gT3RoZXJ3aXNlIGNyZWF0
ZSBvbmUgbWFudWFsbHkKICAgICB0YWJsZUVsZW1lbnQgPSBkb2N1bWVudCgpLT5jcmVhdGVFbGVt
ZW50KHRhYmxlVGFnLCBmYWxzZSk7Ci0gICAgbV90YWJsZUVsZW1lbnQgPSBzdGF0aWNfY2FzdDxI
VE1MVGFibGVFbGVtZW50Kj4odGFibGVFbGVtZW50LmdldCgpKTsKKyAgICBtX3RhYmxlRWxlbWVu
dCA9IHRvSFRNTFRhYmxlRWxlbWVudCh0YWJsZUVsZW1lbnQuZ2V0KCkpOwogICAgIG1fdGFibGVF
bGVtZW50LT5zZXRBdHRyaWJ1dGUoImlkIiwgImZ0cERpcmVjdG9yeVRhYmxlIiwgSUdOT1JFX0VY
Q0VQVElPTik7CiAKICAgICAvLyBJZiB3ZSBkaWRuJ3QgZmluZCB0aGUgdGFibGUgZWxlbWVudCwg
bGV0cyB0cnkgdG8gYXBwZW5kIG91ciBvd24gdG8gdGhlIGJvZHkKQEAgLTM0MCw3ICszNDAsNyBA
QCB2b2lkIEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpjcmVhdGVCYXNpY0RvY3VtZW50KCkK
ICAgICBkb2N1bWVudCgpLT5hcHBlbmRDaGlsZChib2R5RWxlbWVudCwgSUdOT1JFX0VYQ0VQVElP
Tik7CiAKICAgICBSZWZQdHI8RWxlbWVudD4gdGFibGVFbGVtZW50ID0gZG9jdW1lbnQoKS0+Y3Jl
YXRlRWxlbWVudCh0YWJsZVRhZywgZmFsc2UpOwotICAgIG1fdGFibGVFbGVtZW50ID0gc3RhdGlj
X2Nhc3Q8SFRNTFRhYmxlRWxlbWVudCo+KHRhYmxlRWxlbWVudC5nZXQoKSk7CisgICAgbV90YWJs
ZUVsZW1lbnQgPSB0b0hUTUxUYWJsZUVsZW1lbnQodGFibGVFbGVtZW50LmdldCgpKTsKICAgICBt
X3RhYmxlRWxlbWVudC0+c2V0QXR0cmlidXRlKCJpZCIsICJmdHBEaXJlY3RvcnlUYWJsZSIsIElH
Tk9SRV9FWENFUFRJT04pOwogCiAgICAgYm9keUVsZW1lbnQtPmFwcGVuZENoaWxkKG1fdGFibGVF
bGVtZW50LCBJR05PUkVfRVhDRVBUSU9OKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVt
ZW50LmNwcAppbmRleCAxZjJmN2MyNGEyMzYzYWJkNGE2NThiOTdmMzZkYmQxOTQ5NGI1NzU0Li41
YzAwNjY0ZDczZjUzYWQ1NDAyMjZmMTg5NTlhOTc1YWEzMDliNzY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiSFRN
TEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MVGFibGVFbGVtZW50LmgiCiAjaW5jbHVkZSAi
Tm9kZVJlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJOb2RlVHJhdmVyc2FsLmgiCiAjaW5j
bHVkZSAiUGFnZS5oIgpAQCAtMTAyLDcgKzEwMyw3IEBAIGJvb2wgSFRNTEZvcm1FbGVtZW50Ojpy
ZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0KQogICAg
IENvbnRhaW5lck5vZGUqIG5vZGUgPSBwYXJlbnROb2RlKCk7CiAgICAgUmVuZGVyT2JqZWN0KiBw
YXJlbnRSZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7CiAgICAgLy8gRklYTUU6IFNob3VsZG4n
dCB3ZSBhbHNvIGNoZWNrIGZvciB0YWJsZSBjYXB0aW9uIChzZWUgfGZvcm1Jc1RhYmxlUGFydHwg
YmVsb3cpLgotICAgIGJvb2wgcGFyZW50SXNUYWJsZUVsZW1lbnRQYXJ0ID0gKHBhcmVudFJlbmRl
cmVyLT5pc1RhYmxlKCkgJiYgbm9kZS0+aGFzVGFnTmFtZSh0YWJsZVRhZykpCisgICAgYm9vbCBw
YXJlbnRJc1RhYmxlRWxlbWVudFBhcnQgPSAocGFyZW50UmVuZGVyZXItPmlzVGFibGUoKSAmJiBp
c0hUTUxUYWJsZUVsZW1lbnQobm9kZSkpCiAgICAgICAgIHx8IChwYXJlbnRSZW5kZXJlci0+aXNU
YWJsZVJvdygpICYmIG5vZGUtPmhhc1RhZ05hbWUodHJUYWcpKQogICAgICAgICB8fCAocGFyZW50
UmVuZGVyZXItPmlzVGFibGVTZWN0aW9uKCkgJiYgbm9kZS0+aGFzVGFnTmFtZSh0Ym9keVRhZykp
CiAgICAgICAgIHx8IChwYXJlbnRSZW5kZXJlci0+aXNSZW5kZXJUYWJsZUNvbCgpICYmIG5vZGUt
Pmhhc1RhZ05hbWUoY29sVGFnKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRhYmxlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmgK
aW5kZXggYzQ3ZjE4MWViZWFhMTE1ZWE1ZTEzYzdmZDdiYmZkOWUyYmVjZWU5Yy4uNzEwNjQwMTQx
OWMzZWI3ODI3ZTQ2N2Q3ZGJlOWRlZGZmMzY2ZGFjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGFibGVFbGVtZW50LmgKQEAgLTEwMCw2ICsxMDAsMjcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8
U3R5bGVQcm9wZXJ0eVNldD4gbV9zaGFyZWRDZWxsU3R5bGU7CiB9OwogCitpbmxpbmUgYm9vbCBp
c0hUTUxUYWJsZUVsZW1lbnQoTm9kZSogbm9kZSkKK3sKKyAgICByZXR1cm4gbm9kZS0+aGFzVGFn
TmFtZShIVE1MTmFtZXM6OnRhYmxlVGFnKTsKK30KKworaW5saW5lIGJvb2wgaXNIVE1MVGFibGVF
bGVtZW50KEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgcmV0dXJuIGVsZW1lbnQtPmhhc1RhZ05h
bWUoSFRNTE5hbWVzOjp0YWJsZVRhZyk7Cit9CisKK2lubGluZSBib29sIGlzSFRNTFRhYmxlRWxl
bWVudChjb25zdCBFbGVtZW50KiBlbGVtZW50KQoreworICAgIHJldHVybiBlbGVtZW50LT5oYXNU
YWdOYW1lKEhUTUxOYW1lczo6dGFibGVUYWcpOworfQorCitpbmxpbmUgSFRNTFRhYmxlRWxlbWVu
dCogdG9IVE1MVGFibGVFbGVtZW50KE5vZGUqIG5vZGUpCit7CisgICAgQVNTRVJUX1dJVEhfU0VD
VVJJVFlfSU1QTElDQVRJT04oIW5vZGUgfHwgaXNIVE1MVGFibGVFbGVtZW50KG5vZGUpKTsKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTFRhYmxlRWxlbWVudCo+KG5vZGUpOworfQorCiB9IC8v
bmFtZXNwYWNlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGFibGVQYXJ0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVBhcnRF
bGVtZW50LmNwcAppbmRleCA1ZmNjYzMzMWM3YTkwMzc1ZjIxOWQ3ZjE5YjdiNDQ5ZjYwOTNhY2Y4
Li5lYzg1ZTBjMGVhNTc3ZjgxYTA3MmZiMWU2NzI5MzhhMzY3YjUzYjFhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVBhcnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUYWJsZVBhcnRFbGVtZW50LmNwcApAQCAtODYsOSArODYsOSBAQCB2
b2lkIEhUTUxUYWJsZVBhcnRFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTgogSFRNTFRhYmxlRWxlbWVudCogSFRNTFRhYmxlUGFydEVs
ZW1lbnQ6OmZpbmRQYXJlbnRUYWJsZSgpIGNvbnN0CiB7CiAgICAgQ29udGFpbmVyTm9kZSogcGFy
ZW50ID0gcGFyZW50Tm9kZSgpOwotICAgIHdoaWxlIChwYXJlbnQgJiYgIXBhcmVudC0+aGFzVGFn
TmFtZSh0YWJsZVRhZykpCisgICAgd2hpbGUgKHBhcmVudCAmJiAhaXNIVE1MVGFibGVFbGVtZW50
KHBhcmVudCkpCiAgICAgICAgIHBhcmVudCA9IHBhcmVudC0+cGFyZW50Tm9kZSgpOwotICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxIVE1MVGFibGVFbGVtZW50Kj4ocGFyZW50KTsKKyAgICByZXR1cm4g
dG9IVE1MVGFibGVFbGVtZW50KHBhcmVudCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUYWJsZVJvd0VsZW1lbnQuY3BwCmluZGV4IDVlYzNiY2UyYjA0NGUwNzk4ZjIzYzI5MzU1
MTFhYmI4NWE4MGUyMWIuLjJhNmVkMjRiYmZkMWVjZjNjZGM5YjZiNWRjZGVhYWJjOGQxNTI1ZjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dFbGVtZW50LmNwcApAQCAtNjAs
NyArNjAsNyBAQCBpbnQgSFRNTFRhYmxlUm93RWxlbWVudDo6cm93SW5kZXgoKSBjb25zdAogICAg
IGlmICghdGFibGUpCiAgICAgICAgIHJldHVybiAtMTsKICAgICB0YWJsZSA9IHRhYmxlLT5wYXJl
bnROb2RlKCk7Ci0gICAgaWYgKCF0YWJsZSB8fCAhdGFibGUtPmhhc1RhZ05hbWUodGFibGVUYWcp
KQorICAgIGlmICghdGFibGUgfHwgIWlzSFRNTFRhYmxlRWxlbWVudCh0YWJsZSkpCiAgICAgICAg
IHJldHVybiAtMTsKIAogICAgIC8vIFRvIG1hdGNoIEZpcmVmb3gsIHRoZSByb3cgaW5kaWNlcyB3
b3JrIGxpa2UgdGhpczoKQEAgLTcwLDcgKzcwLDcgQEAgaW50IEhUTUxUYWJsZVJvd0VsZW1lbnQ6
OnJvd0luZGV4KCkgY29uc3QKIAogICAgIGludCBySW5kZXggPSAwOwogCi0gICAgaWYgKEhUTUxU
YWJsZVNlY3Rpb25FbGVtZW50KiBoZWFkID0gc3RhdGljX2Nhc3Q8SFRNTFRhYmxlRWxlbWVudCo+
KHRhYmxlKS0+dEhlYWQoKSkgeworICAgIGlmIChIVE1MVGFibGVTZWN0aW9uRWxlbWVudCogaGVh
ZCA9IHRvSFRNTFRhYmxlRWxlbWVudCh0YWJsZSktPnRIZWFkKCkpIHsKICAgICAgICAgZm9yIChO
b2RlICpyb3cgPSBoZWFkLT5maXJzdENoaWxkKCk7IHJvdzsgcm93ID0gcm93LT5uZXh0U2libGlu
ZygpKSB7CiAgICAgICAgICAgICBpZiAocm93ID09IHRoaXMpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIHJJbmRleDsKQEAgLTkxLDcgKzkxLDcgQEAgaW50IEhUTUxUYWJsZVJvd0VsZW1lbnQ6OnJv
d0luZGV4KCkgY29uc3QKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChIVE1MVGFibGVTZWN0
aW9uRWxlbWVudCogZm9vdCA9IHN0YXRpY19jYXN0PEhUTUxUYWJsZUVsZW1lbnQqPih0YWJsZSkt
PnRGb290KCkpIHsKKyAgICBpZiAoSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQqIGZvb3QgPSB0b0hU
TUxUYWJsZUVsZW1lbnQodGFibGUpLT50Rm9vdCgpKSB7CiAgICAgICAgIGZvciAoTm9kZSAqcm93
ID0gZm9vdC0+Zmlyc3RDaGlsZCgpOyByb3c7IHJvdyA9IHJvdy0+bmV4dFNpYmxpbmcoKSkgewog
ICAgICAgICAgICAgaWYgKHJvdyA9PSB0aGlzKQogICAgICAgICAgICAgICAgIHJldHVybiBySW5k
ZXg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd3NDb2xsZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uY3Bw
CmluZGV4IDUyY2IwZWNiNWZkY2JkZmUxNzFkZDg2NmFhODYxODkyYTVlNTE2OWMuLjVlNmQ3Yzcz
MmM2MDkxYjc5ZjE5OTk3MmJlZTI4ZWFhZGZjMGNkNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uY3BwCkBAIC0xNTQsNyArMTU0LDcgQEAgSFRN
TFRhYmxlUm93RWxlbWVudCogSFRNTFRhYmxlUm93c0NvbGxlY3Rpb246Omxhc3RSb3coSFRNTFRh
YmxlRWxlbWVudCogdGFibGUpCiBIVE1MVGFibGVSb3dzQ29sbGVjdGlvbjo6SFRNTFRhYmxlUm93
c0NvbGxlY3Rpb24oTm9kZSogdGFibGUpCiAgICAgOiBIVE1MQ29sbGVjdGlvbih0YWJsZSwgVGFi
bGVSb3dzLCBPdmVycmlkZXNJdGVtQWZ0ZXIpCiB7Ci0gICAgQVNTRVJUKHRhYmxlLT5oYXNUYWdO
YW1lKHRhYmxlVGFnKSk7CisgICAgQVNTRVJUKGlzSFRNTFRhYmxlRWxlbWVudCh0YWJsZSkpOwog
fQogCiBQYXNzUmVmUHRyPEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uPiBIVE1MVGFibGVSb3dzQ29s
bGVjdGlvbjo6Y3JlYXRlKE5vZGUqIHRhYmxlLCBDb2xsZWN0aW9uVHlwZSkKQEAgLTE2Niw3ICsx
NjYsNyBAQCBFbGVtZW50KiBIVE1MVGFibGVSb3dzQ29sbGVjdGlvbjo6dmlydHVhbEl0ZW1BZnRl
cih1bnNpZ25lZCYgb2Zmc2V0SW5BcnJheSwgRWxlbQogewogICAgIEFTU0VSVF9VTlVTRUQob2Zm
c2V0SW5BcnJheSwgIW9mZnNldEluQXJyYXkpOwogICAgIEFTU0VSVCghcHJldmlvdXMgfHwgKHBy
ZXZpb3VzLT5pc0hUTUxFbGVtZW50KCkgJiYgdG9IVE1MRWxlbWVudChwcmV2aW91cyktPmhhc0xv
Y2FsTmFtZSh0clRhZykpKTsKLSAgICByZXR1cm4gcm93QWZ0ZXIoc3RhdGljX2Nhc3Q8SFRNTFRh
YmxlRWxlbWVudCo+KG93bmVyTm9kZSgpKSwgc3RhdGljX2Nhc3Q8SFRNTFRhYmxlUm93RWxlbWVu
dCo+KHByZXZpb3VzKSk7CisgICAgcmV0dXJuIHJvd0FmdGVyKHRvSFRNTFRhYmxlRWxlbWVudChv
d25lck5vZGUoKSksIHN0YXRpY19jYXN0PEhUTUxUYWJsZVJvd0VsZW1lbnQqPihwcmV2aW91cykp
OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxl
bWVudFN0YWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3Rh
Y2suY3BwCmluZGV4IDI2ZDMwNTBkNTZlNGYwZjExYTdmMzQ1MmY3NWNmNDA5N2JiYjMzMTYuLjBj
NzQxYTRlZjI2NWY2NjRjZmQ3NDJhYjNjYWNlNjU4YTMxNDVmNTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2suY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2suY3BwCkBAIC0zMiw2ICszMiw3IEBA
CiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTE9wdEdyb3VwRWxlbWVudC5o
IgogI2luY2x1ZGUgIkhUTUxPcHRpb25FbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTFRhYmxlRWxl
bWVudC5oIgogI2luY2x1ZGUgIk1hdGhNTE5hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIK
ICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgpAQCAtNTUsNyArNTYsNyBAQCBpbmxpbmUgYm9v
bCBpc1Njb3BlTWFya2VyKEhUTUxTdGFja0l0ZW0qIGl0ZW0pCiAgICAgICAgIHx8IGl0ZW0tPmhh
c1RhZ05hbWUoY2FwdGlvblRhZykKICAgICAgICAgfHwgaXRlbS0+aGFzVGFnTmFtZShtYXJxdWVl
VGFnKQogICAgICAgICB8fCBpdGVtLT5oYXNUYWdOYW1lKG9iamVjdFRhZykKLSAgICAgICAgfHwg
aXRlbS0+aGFzVGFnTmFtZSh0YWJsZVRhZykKKyAgICAgICAgfHwgaXNIVE1MVGFibGVFbGVtZW50
KGl0ZW0tPm5vZGUoKSkKICAgICAgICAgfHwgaXRlbS0+aGFzVGFnTmFtZSh0ZFRhZykKICAgICAg
ICAgfHwgaXRlbS0+aGFzVGFnTmFtZSh0aFRhZykKICAgICAgICAgfHwgaXRlbS0+aGFzVGFnTmFt
ZShNYXRoTUxOYW1lczo6bWlUYWcpCkBAIC04Miw3ICs4Myw3IEBAIGlubGluZSBib29sIGlzTGlz
dEl0ZW1TY29wZU1hcmtlcihIVE1MU3RhY2tJdGVtKiBpdGVtKQogCiBpbmxpbmUgYm9vbCBpc1Rh
YmxlU2NvcGVNYXJrZXIoSFRNTFN0YWNrSXRlbSogaXRlbSkKIHsKLSAgICByZXR1cm4gaXRlbS0+
aGFzVGFnTmFtZSh0YWJsZVRhZykKKyAgICByZXR1cm4gaXNIVE1MVGFibGVFbGVtZW50KGl0ZW0t
Pm5vZGUoKSkKICNpZiBFTkFCTEUoVEVNUExBVEVfRUxFTUVOVCkKICAgICAgICAgfHwgaXRlbS0+
aGFzVGFnTmFtZSh0ZW1wbGF0ZVRhZykKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKaW5kZXggY2Q2OWM3YWJmMTM1MzUxNzU2YjE3NGNl
M2U1ZDgyNDhhMzMyNmZjYS4uZGIxYWZjMTlmODEzZGNkOTJjM2MyYTJmODE3ZTc5YTg4Njc1Mjdi
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3Bw
CkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiSFRNTE9wdGlvbkVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiSFRNTFN0YWNrSXRlbS5oIgorI2lu
Y2x1ZGUgIkhUTUxUYWJsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVGVtcGxhdGVFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTFRva2VuLmgiCiAjaW5jbHVkZSAiSFRNTFRva2VuaXplci5oIgpA
QCAtMTY3OCw3ICsxNjc5LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnJlc2V0SW5zZXJ0aW9u
TW9kZUFwcHJvcHJpYXRlbHkoKQogICAgICAgICBpZiAoaXRlbS0+aGFzVGFnTmFtZShjb2xncm91
cFRhZykpIHsKICAgICAgICAgICAgIHJldHVybiBzZXRJbnNlcnRpb25Nb2RlKEluQ29sdW1uR3Jv
dXBNb2RlKTsKICAgICAgICAgfQotICAgICAgICBpZiAoaXRlbS0+aGFzVGFnTmFtZSh0YWJsZVRh
ZykpCisgICAgICAgIGlmIChpc0hUTUxUYWJsZUVsZW1lbnQoaXRlbS0+bm9kZSgpKSkKICAgICAg
ICAgICAgIHJldHVybiBzZXRJbnNlcnRpb25Nb2RlKEluVGFibGVNb2RlKTsKICAgICAgICAgaWYg
KGl0ZW0tPmhhc1RhZ05hbWUoaGVhZFRhZykpIHsKICNpZiBFTkFCTEUoVEVNUExBVEVfRUxFTUVO
VCkKQEAgLTI0MTksNyArMjQyMCw3IEBAIFJlcHJvY2Vzc0J1ZmZlcjoKICAgICAgICAgQVNTRVJU
KGluc2VydGlvbk1vZGUoKSA9PSBJblRhYmxlTW9kZSB8fCBpbnNlcnRpb25Nb2RlKCkgPT0gSW5U
YWJsZUJvZHlNb2RlIHx8IGluc2VydGlvbk1vZGUoKSA9PSBJblJvd01vZGUpOwogICAgICAgICBB
U1NFUlQobV9wZW5kaW5nVGFibGVDaGFyYWN0ZXJzLmlzRW1wdHkoKSk7CiAgICAgICAgIGlmICht
X3RyZWUuY3VycmVudFN0YWNrSXRlbSgpLT5pc0VsZW1lbnROb2RlKCkKLSAgICAgICAgICAgICYm
IChtX3RyZWUuY3VycmVudFN0YWNrSXRlbSgpLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6dGFibGVU
YWcpCisgICAgICAgICAgICAmJiAoaXNIVE1MVGFibGVFbGVtZW50KG1fdHJlZS5jdXJyZW50U3Rh
Y2tJdGVtKCktPm5vZGUoKSkKICAgICAgICAgICAgICAgICB8fCBtX3RyZWUuY3VycmVudFN0YWNr
SXRlbSgpLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6dGJvZHlUYWcpCiAgICAgICAgICAgICAgICAg
fHwgbV90cmVlLmN1cnJlbnRTdGFja0l0ZW0oKS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnRmb290
VGFnKQogICAgICAgICAgICAgICAgIHx8IG1fdHJlZS5jdXJyZW50U3RhY2tJdGVtKCktPmhhc1Rh
Z05hbWUoSFRNTE5hbWVzOjp0aGVhZFRhZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9IVE1MQ29udmVydGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L0hUTUxDb252ZXJ0ZXIubW0KaW5kZXggZDRjMDI5MTgyMmIwOTZiN2VmMzM5MDcwMGI0NTg1YTA0
ZjhiNWZlOC4uOWFjZjIxNzk3NTY1ZTMzZTI5ZTgwODNlYTIwMmZkYTdjYTlkZGZhNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0hUTUxDb252ZXJ0ZXIubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0hUTUxDb252ZXJ0ZXIubW0KQEAgLTQzLDYgKzQz
LDcgQEAKICNpbXBvcnQgIkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxOYW1lcy5o
IgogI2ltcG9ydCAiSFRNTFBhcnNlcklkaW9tcy5oIgorI2ltcG9ydCAiSFRNTFRhYmxlRWxlbWVu
dC5oIgogI2ltcG9ydCAiTG9hZGVyTlNVUkxFeHRyYXMuaCIKICNpbXBvcnQgIlJlbmRlckltYWdl
LmgiCiAjaW1wb3J0ICJUZXh0SXRlcmF0b3IuaCIKQEAgLTI2MSw3ICsyNjIsNyBAQCBzdGF0aWMg
TlNGb250ICpfZm9udEZvck5hbWVBbmRTaXplKE5TU3RyaW5nICpmb250TmFtZSwgQ0dGbG9hdCBz
aXplLCBOU011dGFibGVEaQogICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBAImJsb2NrIjsK
ICAgICAgICAgICAgICAgICBlbHNlIGlmIChjb3JlRWxlbWVudC0+aGFzVGFnTmFtZShsaVRhZykp
CiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IEAibGlzdC1pdGVtIjsKLSAgICAgICAgICAg
ICAgICBlbHNlIGlmIChjb3JlRWxlbWVudC0+aGFzVGFnTmFtZSh0YWJsZVRhZykpCisgICAgICAg
ICAgICAgICAgZWxzZSBpZiAoaXNIVE1MVGFibGVFbGVtZW50KGNvcmVFbGVtZW50KSkKICAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0ID0gQCJ0YWJsZSI7CiAgICAgICAgICAgICAgICAgZWxzZSBp
ZiAoY29yZUVsZW1lbnQtPmhhc1RhZ05hbWUodHJUYWcpKQogICAgICAgICAgICAgICAgICAgICBy
ZXN1bHQgPSBAInRhYmxlLXJvdyI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuY3BwCmluZGV4IDg4ZmQ3MTI5N2ZkOGJmMDdkM2U5NzUxMjQ0MGU2MDRhNTgzZjIxZjEuLmNk
YTY0MmRmYzIzZDUyYzI5MmUxM2EzYjhkOGMwZjEzNWI0MDEyYTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAi
SFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAi
SFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSFRNTFRhYmxlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhp
dFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJMb2dpY2FsU2VsZWN0aW9uT2Zmc2V0Q2FjaGVzLmgi
CiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtMzA5NSw3ICszMDk2LDcgQEAgUmVuZGVyQm94TW9kZWxP
YmplY3QqIFJlbmRlck9iamVjdDo6b2Zmc2V0UGFyZW50KCkgY29uc3QKICAgICBSZW5kZXJPYmpl
Y3QqIGN1cnIgPSBwYXJlbnQoKTsKICAgICB3aGlsZSAoY3VyciAmJiAoIWN1cnItPm5vZGUoKSB8
fCAoIWN1cnItPmlzUG9zaXRpb25lZCgpICYmICFjdXJyLT5pc0JvZHkoKSkpICYmICFjdXJyLT5p
c1JlbmRlck5hbWVkRmxvd1RocmVhZCgpKSB7CiAgICAgICAgIE5vZGUqIGVsZW1lbnQgPSBjdXJy
LT5ub2RlKCk7Ci0gICAgICAgIGlmICghc2tpcFRhYmxlcyAmJiBlbGVtZW50ICYmIChlbGVtZW50
LT5oYXNUYWdOYW1lKHRhYmxlVGFnKSB8fCBlbGVtZW50LT5oYXNUYWdOYW1lKHRkVGFnKSB8fCBl
bGVtZW50LT5oYXNUYWdOYW1lKHRoVGFnKSkpCisgICAgICAgIGlmICghc2tpcFRhYmxlcyAmJiBl
bGVtZW50ICYmIChpc0hUTUxUYWJsZUVsZW1lbnQoZWxlbWVudCkgfHwgZWxlbWVudC0+aGFzVGFn
TmFtZSh0ZFRhZykgfHwgZWxlbWVudC0+aGFzVGFnTmFtZSh0aFRhZykpKQogICAgICAgICAgICAg
YnJlYWs7CiAgCiAgICAgICAgIGZsb2F0IG5ld1pvb20gPSBjdXJyLT5zdHlsZSgpLT5lZmZlY3Rp
dmVab29tKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFi
bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAppbmRleCBl
ZTNmOThhNTMwMWFlYWE0NTI1OGZlYWU1ZmFjYjU1M2Q5MmYxOTYxLi5hMWM1NzJlZTk0MWNkZTAw
OTU5Y2YxZmM2Yzg4YmMzY2M0OGU0NjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUYWJsZS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNp
bmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVk
ZSAiSFRNTFRhYmxlRWxlbWVudC5oIgogI2luY2x1ZGUgIkxheW91dFJlcGFpbnRlci5oIgogI2lu
Y2x1ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGVDYXB0aW9uLmgiCkBA
IC0zMTksNyArMzIwLDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJUYWJsZTo6Y29udmVydFN0eWxlTG9n
aWNhbFdpZHRoVG9Db21wdXRlZFdpZHRoKGNvbnN0IExlbmd0aCYgc3QKIAogICAgIC8vIEhUTUwg
dGFibGVzJyB3aWR0aCBzdHlsZXMgYWxyZWFkeSBpbmNsdWRlIGJvcmRlcnMgYW5kIHBhZGRpbmdz
LCBidXQgQ1NTIHRhYmxlcycgd2lkdGggc3R5bGVzIGRvIG5vdC4KICAgICBMYXlvdXRVbml0IGJv
cmRlcnMgPSAwOwotICAgIGJvb2wgaXNDU1NUYWJsZSA9ICFub2RlKCkgfHwgIW5vZGUoKS0+aGFz
VGFnTmFtZSh0YWJsZVRhZyk7CisgICAgYm9vbCBpc0NTU1RhYmxlID0gIW5vZGUoKSB8fCAhaXNI
VE1MVGFibGVFbGVtZW50KG5vZGUoKSk7CiAgICAgaWYgKGlzQ1NTVGFibGUgJiYgc3R5bGVMb2dp
Y2FsV2lkdGguaXNTcGVjaWZpZWQoKSAmJiBzdHlsZUxvZ2ljYWxXaWR0aC5pc1Bvc2l0aXZlKCkg
JiYgc3R5bGUoKS0+Ym94U2l6aW5nKCkgPT0gQ09OVEVOVF9CT1gpCiAgICAgICAgIGJvcmRlcnMg
PSBib3JkZXJTdGFydCgpICsgYm9yZGVyRW5kKCkgKyAoY29sbGFwc2VCb3JkZXJzKCkgPyBMYXlv
dXRVbml0KCkgOiBwYWRkaW5nU3RhcnQoKSArIHBhZGRpbmdFbmQoKSk7CiAKQEAgLTMzMyw3ICsz
MzQsNyBAQCBMYXlvdXRVbml0IFJlbmRlclRhYmxlOjpjb252ZXJ0U3R5bGVMb2dpY2FsSGVpZ2h0
VG9Db21wdXRlZEhlaWdodChjb25zdCBMZW5ndGgmCiAgICAgICAgIC8vIEhUTUwgdGFibGVzIHNp
emUgYXMgdGhvdWdoIENTUyBoZWlnaHQgaW5jbHVkZXMgYm9yZGVyL3BhZGRpbmcsIENTUyB0YWJs
ZXMgZG8gbm90LgogICAgICAgICBMYXlvdXRVbml0IGJvcmRlcnMgPSBMYXlvdXRVbml0KCk7CiAg
ICAgICAgIC8vIEZJWE1FOiBXZSBjYW5ub3QgYXBwbHkgYm94LXNpemluZzogY29udGVudC1ib3gg
b24gPHRhYmxlPiB3aGljaCBvdGhlciBicm93c2VycyBhbGxvdy4KLSAgICAgICAgaWYgKChub2Rl
KCkgJiYgbm9kZSgpLT5oYXNUYWdOYW1lKHRhYmxlVGFnKSkgfHwgc3R5bGUoKS0+Ym94U2l6aW5n
KCkgPT0gQk9SREVSX0JPWCkgeworICAgICAgICBpZiAoKG5vZGUoKSAmJiBpc0hUTUxUYWJsZUVs
ZW1lbnQobm9kZSgpKSkgfHwgc3R5bGUoKS0+Ym94U2l6aW5nKCkgPT0gQk9SREVSX0JPWCkgewog
ICAgICAgICAgICAgTGF5b3V0VW5pdCBib3JkZXJBbmRQYWRkaW5nQmVmb3JlID0gYm9yZGVyQmVm
b3JlKCkgKyAoY29sbGFwc2VCb3JkZXJzKCkgPyBMYXlvdXRVbml0KCkgOiBwYWRkaW5nQmVmb3Jl
KCkpOwogICAgICAgICAgICAgTGF5b3V0VW5pdCBib3JkZXJBbmRQYWRkaW5nQWZ0ZXIgPSBib3Jk
ZXJBZnRlcigpICsgKGNvbGxhcHNlQm9yZGVycygpID8gTGF5b3V0VW5pdCgpIDogcGFkZGluZ0Fm
dGVyKCkpOwogICAgICAgICAgICAgYm9yZGVycyA9IGJvcmRlckFuZFBhZGRpbmdCZWZvcmUgKyBi
b3JkZXJBbmRQYWRkaW5nQWZ0ZXI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>206217</attachid>
            <date>2013-07-07 21:45:16 -0700</date>
            <delta_ts>2013-07-07 23:53:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-118393-20130708134303.patch</filename>
            <type>text/plain</type>
            <size>29771</size>
            <attacher name="Kangil Han">kangil.han</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUyNDM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTU3YTE5OWIyNzI0NzNl
ZDZjMjIxNGVmY2FjYzMzZTJkYjkyMWJlZi4uMmMzZTkwZTYzMGFlOGVmOGY1MjcyNTE3OWQ1YTE3
MWU5MGM2YmFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDEzLTA3LTA3ICBLYW5n
aWwgSGFuICA8a2FuZ2lsLmhhbkBzYW1zdW5nLmNvbT4KKworICAgICAgICBBZG9wdCBpcy90b0hU
TUxUYWJsZUVsZW1lbnQgZm9yIGNvZGUgY2xlYW51cAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4MzkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5k
cmVhcyBLbGluZy4KKworICAgICAgICBUbyBlbmhhbmNlIHJlYWRhYmlsaXR5LCB0aGlzIHBhdGNo
IGFkb3B0cyBpcy90b0hUTUxUYWJsZUVsZW1lbnQuCisgICAgICAgIFRoaXMgYWxzbyBoZWxwcyBv
dXQgdG8gcmVkdWNlIGR1cGxpY2F0ZWQgdXNlIG9mIHN0YXRpY19jYXN0LgorCisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmRldGVybWluZUFjY2Vzc2liaWxpdHlS
b2xlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmlzRGF0YVRhYmxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6aXNUYWJsZUV4cG9zYWJsZVRocm91Z2hB
Y2Nlc3NpYmlsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6dGl0
bGUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZh
Y2VUYWJsZS5jcHA6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlVGFibGVHZXRDYXB0aW9uKToK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlV3JhcHBlckF0ay5j
cHA6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlR2V0RGVzY3JpcHRpb24pOgorICAgICAgICAq
IGNzcy9TdHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6
OmFkanVzdFJlbmRlclN0eWxlKToKKyAgICAgICAgKiBkb20vUG9zaXRpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6ZW5kc09mTm9kZUFyZVZpc3VhbGx5RGlzdGluY3RQb3NpdGlvbnMpOgorICAg
ICAgICAqIGVkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEZWxldGVTZWxlY3Rpb25Db21tYW5kOjpoYW5kbGVHZW5lcmFsRGVsZXRlKToKKyAgICAg
ICAgKiBlZGl0aW5nL0luc2VydExpbmVCcmVha0NvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zZXJ0TGluZUJyZWFrQ29tbWFuZDo6ZG9BcHBseSk6CisgICAgICAgICogZWRpdGluZy9o
dG1sZWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc05vblRhYmxlQ2VsbEhUTUxCbG9j
a0VsZW1lbnQpOgorICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmFuY2VzdG9yVG9SZXRhaW5TdHJ1Y3R1cmVBbmRBcHBlYXJhbmNlRm9yQmxvY2spOgorICAg
ICAgICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmxvYWREb2N1bWVudFRlbXBsYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpjcmVhdGVCYXNpY0RvY3Vt
ZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MRm9ybUVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQpOgorICAgICAgICAqIGh0bWwv
SFRNTFRhYmxlRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6aXNIVE1MVGFibGVFbGVtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OnRvSFRNTFRhYmxlRWxlbWVudCk6CisgICAgICAgICogaHRt
bC9IVE1MVGFibGVQYXJ0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFibGVQ
YXJ0RWxlbWVudDo6ZmluZFBhcmVudFRhYmxlKToKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZVJv
d0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlUm93RWxlbWVudDo6cm93
SW5kZXgpOgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlUm93c0NvbGxlY3Rpb246OkhUTUxUYWJsZVJvd3NDb2xs
ZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uOjp2aXJ0
dWFsSXRlbUFmdGVyKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxOYW1lczo6aXNTY29wZU1hcmtlcik6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTmFtZXM6OmlzVGFibGVTY29wZU1hcmtlcik6CisgICAgICAgICogaHRt
bC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVl
QnVpbGRlcjo6cmVzZXRJbnNlcnRpb25Nb2RlQXBwcm9wcmlhdGVseSk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NDaGFyYWN0ZXJCdWZmZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9IVE1MQ29udmVydGVyLm1tOgorICAgICAgICAoLVtXZWJIVE1MQ29udmVy
dGVyIF9jb21wdXRlZFN0cmluZ0Zvck5vZGU6cHJvcGVydHk6XSk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6Om9m
ZnNldFBhcmVudCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjpjb252ZXJ0U3R5bGVMb2dpY2FsV2lkdGhUb0NvbXB1
dGVkV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OmNvbnZlcnRTdHlsZUxv
Z2ljYWxIZWlnaHRUb0NvbXB1dGVkSGVpZ2h0KToKKwogMjAxMy0wNy0wNiAgUm9iIEJ1aXMgIDxy
YnVpc0ByaW0uY29tPgogCiAgICAgICAgIGNyZWF0ZUVsZW1lbnQoImltYWdlIikgY3JlYXRlcyBh
biBIVE1MSW1hZ2VFbGVtZW50LCBhbHRob3VnaCB0aGlzIGhhY2sgc2hvdWxkIGV4aXN0IGluIHBh
cnNlciBvbmx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAppbmRleCAwNWZkMjI5YWQ2MzJjYjFhNTkxOGJj
MWVmNTc5OTI4ODFiMmVjMDllLi5mZDhjYjhhNWUyYTk1OGZhZjZiN2JkYTUwYzdjNjI5YjZkZTk1
ZmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKQEAgLTU0LDYgKzU0LDcgQEAKICNpbmNsdWRlICJI
VE1MT3B0aW9uRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxPcHRpb25zQ29sbGVjdGlvbi5oIgog
I2luY2x1ZGUgIkhUTUxTZWxlY3RFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTFRhYmxlRWxlbWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxUZXh0QXJlYUVsZW1lbnQuaCIKICNpbmNsdWRlICJIaXRUZXN0
UmVxdWVzdC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKQEAgLTI1MzUsNyArMjUzNiw3
IEBAIEFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmRldGVybWlu
ZUFjY2Vzc2liaWxpdHlSb2xlKCkKICAgICBpZiAobm9kZSAmJiBub2RlLT5oYXNUYWdOYW1lKHRy
VGFnKSkKICAgICAgICAgcmV0dXJuIFJvd1JvbGU7CiAKLSAgICBpZiAobm9kZSAmJiBub2RlLT5o
YXNUYWdOYW1lKHRhYmxlVGFnKSkKKyAgICBpZiAobm9kZSAmJiBpc0hUTUxUYWJsZUVsZW1lbnQo
bm9kZSkpCiAgICAgICAgIHJldHVybiBUYWJsZVJvbGU7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCmluZGV4IDU2
ZTJlOTQ5NTcxYWU0NjEzYjEzNGQzZjNkZmZmYTI1OTU3MTJiNmEuLjI4NjJkNDgwOTgzMTE4NmNj
MGIxODMwOGEwYjM4N2YxMmNiYzMyYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKQEAgLTExMSwxMSArMTExLDExIEBAIGJv
b2wgQWNjZXNzaWJpbGl0eVRhYmxlOjppc0RhdGFUYWJsZSgpIGNvbnN0CiAgICAgCiAgICAgUmVu
ZGVyVGFibGUqIHRhYmxlID0gdG9SZW5kZXJUYWJsZShtX3JlbmRlcmVyKTsKICAgICBOb2RlKiB0
YWJsZU5vZGUgPSB0YWJsZS0+bm9kZSgpOwotICAgIGlmICghdGFibGVOb2RlIHx8ICF0YWJsZU5v
ZGUtPmhhc1RhZ05hbWUodGFibGVUYWcpKQorICAgIGlmICghdGFibGVOb2RlIHx8ICFpc0hUTUxU
YWJsZUVsZW1lbnQodGFibGVOb2RlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8g
aWYgdGhlcmUgaXMgYSBjYXB0aW9uIGVsZW1lbnQsIHN1bW1hcnksIFRIRUFELCBvciBURk9PVCBz
ZWN0aW9uLCBpdCdzIG1vc3QgY2VydGFpbmx5IGEgZGF0YSB0YWJsZQotICAgIEhUTUxUYWJsZUVs
ZW1lbnQqIHRhYmxlRWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxUYWJsZUVsZW1lbnQqPih0YWJs
ZU5vZGUpOworICAgIEhUTUxUYWJsZUVsZW1lbnQqIHRhYmxlRWxlbWVudCA9IHRvSFRNTFRhYmxl
RWxlbWVudCh0YWJsZU5vZGUpOwogICAgIGlmICghdGFibGVFbGVtZW50LT5zdW1tYXJ5KCkuaXNF
bXB0eSgpIHx8IHRhYmxlRWxlbWVudC0+dEhlYWQoKSB8fCB0YWJsZUVsZW1lbnQtPnRGb290KCkg
fHwgdGFibGVFbGVtZW50LT5jYXB0aW9uKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIApA
QCAtMzEwLDcgKzMxMCw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVRhYmxlOjppc1RhYmxlRXhwb3Nh
YmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKSBjb25zdAogICAgIC8vIEd0aysgQVRzIGV4cGVjdCBh
bGwgdGFibGVzIHRvIGJlIGV4cG9zZWQgYXMgdGFibGVzLgogI2lmIFBMQVRGT1JNKEdUSykKICAg
ICBOb2RlKiB0YWJsZU5vZGUgPSB0b1JlbmRlclRhYmxlKG1fcmVuZGVyZXIpLT5ub2RlKCk7Ci0g
ICAgcmV0dXJuIHRhYmxlTm9kZSAmJiB0YWJsZU5vZGUtPmhhc1RhZ05hbWUodGFibGVUYWcpOwor
ICAgIHJldHVybiB0YWJsZU5vZGUgJiYgaXNIVE1MVGFibGVFbGVtZW50KHRhYmxlTm9kZSk7CiAj
ZW5kaWYKIAogICAgIHJldHVybiBpc0RhdGFUYWJsZSgpOwpAQCAtNTYyLDggKzU2Miw4IEBAIFN0
cmluZyBBY2Nlc3NpYmlsaXR5VGFibGU6OnRpdGxlKCkgY29uc3QKICAgICAKICAgICAvLyBzZWUg
aWYgdGhlcmUgaXMgYSBjYXB0aW9uCiAgICAgTm9kZSogdGFibGVFbGVtZW50ID0gbV9yZW5kZXJl
ci0+bm9kZSgpOwotICAgIGlmICh0YWJsZUVsZW1lbnQgJiYgdGFibGVFbGVtZW50LT5oYXNUYWdO
YW1lKHRhYmxlVGFnKSkgewotICAgICAgICBIVE1MVGFibGVDYXB0aW9uRWxlbWVudCogY2FwdGlv
biA9IHN0YXRpY19jYXN0PEhUTUxUYWJsZUVsZW1lbnQqPih0YWJsZUVsZW1lbnQpLT5jYXB0aW9u
KCk7CisgICAgaWYgKHRhYmxlRWxlbWVudCAmJiBpc0hUTUxUYWJsZUVsZW1lbnQodGFibGVFbGVt
ZW50KSkgeworICAgICAgICBIVE1MVGFibGVDYXB0aW9uRWxlbWVudCogY2FwdGlvbiA9IHRvSFRN
TFRhYmxlRWxlbWVudCh0YWJsZUVsZW1lbnQpLT5jYXB0aW9uKCk7CiAgICAgICAgIGlmIChjYXB0
aW9uKQogICAgICAgICAgICAgdGl0bGUgPSBjYXB0aW9uLT5pbm5lclRleHQoKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3Np
YmxlSW50ZXJmYWNlVGFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsv
V2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRhYmxlLmNwcAppbmRleCA5YjY1MTAwMmU2MzJiNjhh
MWRjZjU1NzU4ZWY4ZDU2OTc4ZWMzZGQyLi42Njg0NzQ1NzUwZDEzNWQ5OGFmOTk5MjNmZDJiYjE3
NGE4ZDdjZGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9X
ZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUYWJsZS5jcHAKQEAgLTIx
Miw4ICsyMTIsOCBAQCBzdGF0aWMgQXRrT2JqZWN0KiB3ZWJraXRBY2Nlc3NpYmxlVGFibGVHZXRD
YXB0aW9uKEF0a1RhYmxlKiB0YWJsZSkKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBhY2NUYWJs
ZSA9IGNvcmUodGFibGUpOwogICAgIGlmIChhY2NUYWJsZS0+aXNBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0KCkpIHsKICAgICAgICAgTm9kZSogbm9kZSA9IGFjY1RhYmxlLT5ub2RlKCk7Ci0gICAg
ICAgIGlmIChub2RlICYmIG5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjp0YWJsZVRhZykpIHsK
LSAgICAgICAgICAgIEhUTUxUYWJsZUNhcHRpb25FbGVtZW50KiBjYXB0aW9uID0gc3RhdGljX2Nh
c3Q8SFRNTFRhYmxlRWxlbWVudCo+KG5vZGUpLT5jYXB0aW9uKCk7CisgICAgICAgIGlmIChub2Rl
ICYmIGlzSFRNTFRhYmxlRWxlbWVudChub2RlKSkgeworICAgICAgICAgICAgSFRNTFRhYmxlQ2Fw
dGlvbkVsZW1lbnQqIGNhcHRpb24gPSB0b0hUTUxUYWJsZUVsZW1lbnQobm9kZSktPmNhcHRpb24o
KTsKICAgICAgICAgICAgIGlmIChjYXB0aW9uKQogICAgICAgICAgICAgICAgIHJldHVybiBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpmaXJzdEFjY2Vzc2libGVPYmplY3RGcm9tTm9kZShjYXB0aW9uLT5y
ZW5kZXJlcigpLT5ub2RlKCkpLT53cmFwcGVyKCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVXcmFwcGVyQXRr
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVX
cmFwcGVyQXRrLmNwcAppbmRleCBjNGIzMmEwZTM4ZjY5ZGMyMzJhZDVmYmFhMDViZGNlNmYzYzNm
MWEwLi4wNWQ1YzYxMmUwOGYxZGQ0YjQ4ZmZmYmZhZDBmOGY0OTZjNTQ2OWE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlV3JhcHBl
ckF0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNj
ZXNzaWJsZVdyYXBwZXJBdGsuY3BwCkBAIC0xODUsNyArMTg1LDcgQEAgc3RhdGljIGNvbnN0IGdj
aGFyKiB3ZWJraXRBY2Nlc3NpYmxlR2V0RGVzY3JpcHRpb24oQXRrT2JqZWN0KiBvYmplY3QpCiAK
ICAgICAvLyBhdGtfdGFibGVfZ2V0X3N1bW1hcnkgcmV0dXJucyBhbiBBdGtPYmplY3QuIFdlIGhh
dmUgbm8gc3VtbWFyeSBvYmplY3QsIHNvIGV4cG9zZSBzdW1tYXJ5IGhlcmUuCiAgICAgaWYgKGNv
cmVPYmplY3QtPnJvbGVWYWx1ZSgpID09IFRhYmxlUm9sZSkgewotICAgICAgICBTdHJpbmcgc3Vt
bWFyeSA9IHN0YXRpY19jYXN0PEhUTUxUYWJsZUVsZW1lbnQqPihub2RlKS0+c3VtbWFyeSgpOwor
ICAgICAgICBTdHJpbmcgc3VtbWFyeSA9IHRvSFRNTFRhYmxlRWxlbWVudChub2RlKS0+c3VtbWFy
eSgpOwogICAgICAgICBpZiAoIXN1bW1hcnkuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJu
IGNhY2hlQW5kUmV0dXJuQXRrUHJvcGVydHkob2JqZWN0LCBBdGtDYWNoZWRBY2Nlc3NpYmxlRGVz
Y3JpcHRpb24sIHN1bW1hcnkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNw
cAppbmRleCBkODRkODI3YWM3YjNlYTgyOTNlZGZiNWM1MmJkNzUwZWM5YTc3NDk1Li43MDBmZTNm
MzY3ZjU4YzgyMzYwMjU1ODlmNDdiZjJlYmE0MjJkODNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UmVzb2x2ZXIuY3BwCkBAIC03Miw2ICs3Miw3IEBACiAjaW5jbHVkZSAiSFRNTE9wdGlvbkVsZW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MUHJvZ3Jlc3NFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFN0
eWxlRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxUYWJsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJI
VE1MVGV4dEFyZWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW5zZXJ0aW9uUG9pbnQuaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKQEAgLTEzNzUsNyArMTM3Niw3IEBAIHZv
aWQgU3R5bGVSZXNvbHZlcjo6YWRqdXN0UmVuZGVyU3R5bGUoUmVuZGVyU3R5bGUqIHN0eWxlLCBS
ZW5kZXJTdHlsZSogcGFyZW50U3R5CiAgICAgICAgICAgICBpZiAoZS0+aGFzVGFnTmFtZSh0ZFRh
ZykpIHsKICAgICAgICAgICAgICAgICBzdHlsZS0+c2V0RGlzcGxheShUQUJMRV9DRUxMKTsKICAg
ICAgICAgICAgICAgICBzdHlsZS0+c2V0RmxvYXRpbmcoTm9GbG9hdCk7Ci0gICAgICAgICAgICB9
IGVsc2UgaWYgKGUtPmhhc1RhZ05hbWUodGFibGVUYWcpKQorICAgICAgICAgICAgfSBlbHNlIGlm
IChpc0hUTUxUYWJsZUVsZW1lbnQoZSkpCiAgICAgICAgICAgICAgICAgc3R5bGUtPnNldERpc3Bs
YXkoc3R5bGUtPmlzRGlzcGxheUlubGluZVR5cGUoKSA/IElOTElORV9UQUJMRSA6IFRBQkxFKTsK
ICAgICAgICAgfQogCkBAIC0xMzkyLDcgKzEzOTMsNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFk
anVzdFJlbmRlclN0eWxlKFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHBhcmVudFN0
eQogICAgICAgICB9CiAKICAgICAgICAgLy8gVGFibGVzIG5ldmVyIHN1cHBvcnQgdGhlIC13ZWJr
aXQtKiB2YWx1ZXMgZm9yIHRleHQtYWxpZ24gYW5kIHdpbGwgcmVzZXQgYmFjayB0byB0aGUgZGVm
YXVsdC4KLSAgICAgICAgaWYgKGUgJiYgZS0+aGFzVGFnTmFtZSh0YWJsZVRhZykgJiYgKHN0eWxl
LT50ZXh0QWxpZ24oKSA9PSBXRUJLSVRfTEVGVCB8fCBzdHlsZS0+dGV4dEFsaWduKCkgPT0gV0VC
S0lUX0NFTlRFUiB8fCBzdHlsZS0+dGV4dEFsaWduKCkgPT0gV0VCS0lUX1JJR0hUKSkKKyAgICAg
ICAgaWYgKGUgJiYgaXNIVE1MVGFibGVFbGVtZW50KGUpICYmIChzdHlsZS0+dGV4dEFsaWduKCkg
PT0gV0VCS0lUX0xFRlQgfHwgc3R5bGUtPnRleHRBbGlnbigpID09IFdFQktJVF9DRU5URVIgfHwg
c3R5bGUtPnRleHRBbGlnbigpID09IFdFQktJVF9SSUdIVCkpCiAgICAgICAgICAgICBzdHlsZS0+
c2V0VGV4dEFsaWduKFRBU1RBUlQpOwogCiAgICAgICAgIC8vIEZyYW1lcyBhbmQgZnJhbWVzZXRz
IG5ldmVyIGhvbm9yIHBvc2l0aW9uOnJlbGF0aXZlIG9yIHBvc2l0aW9uOmFic29sdXRlLiBUaGlz
IGlzIG5lY2Vzc2FyeSB0bwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKaW5kZXggODRiZjA0MjU0MGFm
Y2JlOGRlMjEwMzk4ZDZjZTg0MjZmZTdlNzk1ZC4uNmNiMDA2MTFmYzcwZTIzOGI4NDk1NTAzYjY0
NDI5Nzk0NmJmNjUxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCkBAIC0yOCw2ICsyOCw3IEBA
CiAKICNpbmNsdWRlICJDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaCIKICNpbmNsdWRlICJI
VE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MVGFibGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW5s
aW5lSXRlcmF0b3IuaCIKICNpbmNsdWRlICJJbmxpbmVUZXh0Qm94LmgiCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgpAQCAtNTYxLDcgKzU2Miw3IEBAIHN0YXRpYyBib29sIGVuZHNPZk5vZGVBcmVWaXN1
YWxseURpc3RpbmN0UG9zaXRpb25zKE5vZGUqIG5vZGUpCiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICAKICAgICAvLyBEb24ndCBpbmNsdWRlIGlubGluZSB0YWJsZXMuCi0gICAgaWYgKG5v
ZGUtPmhhc1RhZ05hbWUodGFibGVUYWcpKQorICAgIGlmIChpc0hUTUxUYWJsZUVsZW1lbnQobm9k
ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICAvLyBUaGVyZSBpcyBhIFZpc2li
bGVQb3NpdGlvbiBpbnNpZGUgYW4gZW1wdHkgaW5saW5lLWJsb2NrIGNvbnRhaW5lci4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4
IDU3OTI2YzMwNjgwNGE4NTNiMTJhNzUzNWE2ZTE5OGFhOGJhYTE0ZTQuLjRmOGExNGRkZjViZGNm
NGIxYmFkY2U5NjlkNWRkNTk5ZWIyOTA3ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1
ZGUgImh0bWxlZGl0aW5nLmgiCiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgogI2luY2x1
ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIkhUTUxUYWJsZUVsZW1lbnQuaCIKICNpbmNsdWRl
ICJOb2RlVHJhdmVyc2FsLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGVDZWxsLmgiCiAjaW5jbHVk
ZSAiVGV4dC5oIgpAQCAtNDQ1LDcgKzQ0Niw3IEBAIHZvaWQgRGVsZXRlU2VsZWN0aW9uQ29tbWFu
ZDo6aGFuZGxlR2VuZXJhbERlbGV0ZSgpCiAgICAgbWFrZVN0eWxpbmdFbGVtZW50c0RpcmVjdENo
aWxkcmVuT2ZFZGl0YWJsZVJvb3RUb1ByZXZlbnRTdHlsZUxvc3MoKTsKIAogICAgIC8vIE5ldmVy
IHJlbW92ZSB0aGUgc3RhcnQgYmxvY2sgdW5sZXNzIGl0J3MgYSB0YWJsZSwgaW4gd2hpY2ggY2Fz
ZSB3ZSB3b24ndCBtZXJnZSBjb250ZW50IGluLgotICAgIGlmIChzdGFydE5vZGUgPT0gbV9zdGFy
dEJsb2NrICYmIHN0YXJ0T2Zmc2V0ID09IDAgJiYgY2FuSGF2ZUNoaWxkcmVuRm9yRWRpdGluZyhz
dGFydE5vZGUpICYmICFzdGFydE5vZGUtPmhhc1RhZ05hbWUodGFibGVUYWcpKSB7CisgICAgaWYg
KHN0YXJ0Tm9kZSA9PSBtX3N0YXJ0QmxvY2sgJiYgc3RhcnRPZmZzZXQgPT0gMCAmJiBjYW5IYXZl
Q2hpbGRyZW5Gb3JFZGl0aW5nKHN0YXJ0Tm9kZSkgJiYgIWlzSFRNTFRhYmxlRWxlbWVudChzdGFy
dE5vZGUpKSB7CiAgICAgICAgIHN0YXJ0T2Zmc2V0ID0gMDsKICAgICAgICAgc3RhcnROb2RlID0g
Tm9kZVRyYXZlcnNhbDo6bmV4dChzdGFydE5vZGUpOwogICAgICAgICBpZiAoIXN0YXJ0Tm9kZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFu
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydExpbmVCcmVha0NvbW1hbmQuY3Bw
CmluZGV4IDkyYjRhZDI1ZGFjOGZlMzc3MDFmYzJkODRhMGEyMzhkM2E5ODNkNzAuLjM0YjQ2MjIw
N2I4NTIxMDJlYWU4YjI4YzcxYWMxMDExNGVmMDRmZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9JbnNlcnRMaW5lQnJlYWtDb21tYW5kLmNwcApAQCAtMzIsNiArMzIsNyBAQAog
I2luY2x1ZGUgIkZyYW1lU2VsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNp
bmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MVGFibGVFbGVtZW50LmgiCiAjaW5j
bHVkZSAiUmFuZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJUZXh0
LmgiCkBAIC0xMTUsNyArMTE2LDcgQEAgdm9pZCBJbnNlcnRMaW5lQnJlYWtDb21tYW5kOjpkb0Fw
cGx5KCkKICAgICAvLyBGSVhNRTogTmVlZCB0byBtZXJnZSB0ZXh0IG5vZGVzIHdoZW4gaW5zZXJ0
aW5nIGp1c3QgYWZ0ZXIgb3IgYmVmb3JlIHRleHQuCiAgICAgCiAgICAgaWYgKGlzRW5kT2ZQYXJh
Z3JhcGgoY2FyZXQpICYmICFsaW5lQnJlYWtFeGlzdHNBdFZpc2libGVQb3NpdGlvbihjYXJldCkp
IHsKLSAgICAgICAgYm9vbCBuZWVkRXh0cmFMaW5lQnJlYWsgPSAhcG9zLmRlcHJlY2F0ZWROb2Rl
KCktPmhhc1RhZ05hbWUoaHJUYWcpICYmICFwb3MuZGVwcmVjYXRlZE5vZGUoKS0+aGFzVGFnTmFt
ZSh0YWJsZVRhZyk7CisgICAgICAgIGJvb2wgbmVlZEV4dHJhTGluZUJyZWFrID0gIXBvcy5kZXBy
ZWNhdGVkTm9kZSgpLT5oYXNUYWdOYW1lKGhyVGFnKSAmJiAhaXNIVE1MVGFibGVFbGVtZW50KHBv
cy5kZXByZWNhdGVkTm9kZSgpKTsKICAgICAgICAgCiAgICAgICAgIGluc2VydE5vZGVBdChub2Rl
VG9JbnNlcnQuZ2V0KCksIHBvcyk7CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxl
ZGl0aW5nLmNwcAppbmRleCAyMmM0NjY5MTE2ZGI0NjEyNDQ0NzliMzgxNzYxZGI2YTg0YTllOGEx
Li5mM2M3MGUwNmQzYjE5MmZmYWQ5YTcwZWI4NWFhODc4YTk0MThiNzc1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkhU
TUxPTGlzdEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MT2JqZWN0RWxlbWVudC5oIgogI2luY2x1
ZGUgIkhUTUxQYXJhZ3JhcGhFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTFRhYmxlRWxlbWVudC5o
IgogI2luY2x1ZGUgIkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRN
TFVMaXN0RWxlbWVudC5oIgogI2luY2x1ZGUgIk5vZGVUcmF2ZXJzYWwuaCIKQEAgLTEyMTksMTkg
KzEyMjAsMjMgQEAgYm9vbCBhcmVJZGVudGljYWxFbGVtZW50cyhjb25zdCBOb2RlKiBmaXJzdCwg
Y29uc3QgTm9kZSogc2Vjb25kKQogCiBib29sIGlzTm9uVGFibGVDZWxsSFRNTEJsb2NrRWxlbWVu
dChjb25zdCBOb2RlKiBub2RlKQogewotICAgIHJldHVybiBub2RlLT5oYXNUYWdOYW1lKGxpc3Rp
bmdUYWcpCi0gICAgICAgIHx8IG5vZGUtPmhhc1RhZ05hbWUob2xUYWcpCi0gICAgICAgIHx8IG5v
ZGUtPmhhc1RhZ05hbWUocHJlVGFnKQotICAgICAgICB8fCBub2RlLT5oYXNUYWdOYW1lKHRhYmxl
VGFnKQotICAgICAgICB8fCBub2RlLT5oYXNUYWdOYW1lKHVsVGFnKQotICAgICAgICB8fCBub2Rl
LT5oYXNUYWdOYW1lKHhtcFRhZykKLSAgICAgICAgfHwgbm9kZS0+aGFzVGFnTmFtZShoMVRhZykK
LSAgICAgICAgfHwgbm9kZS0+aGFzVGFnTmFtZShoMlRhZykKLSAgICAgICAgfHwgbm9kZS0+aGFz
VGFnTmFtZShoM1RhZykKLSAgICAgICAgfHwgbm9kZS0+aGFzVGFnTmFtZShoNFRhZykKLSAgICAg
ICAgfHwgbm9kZS0+aGFzVGFnTmFtZShoNVRhZyk7CisgICAgaWYgKCFub2RlLT5pc0VsZW1lbnRO
b2RlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGNvbnN0IEVsZW1lbnQqIGVsZW1l
bnQgPSB0b0VsZW1lbnQobm9kZSk7CisgICAgcmV0dXJuIGVsZW1lbnQtPmhhc1RhZ05hbWUobGlz
dGluZ1RhZykKKyAgICAgICAgfHwgZWxlbWVudC0+aGFzVGFnTmFtZShvbFRhZykKKyAgICAgICAg
fHwgZWxlbWVudC0+aGFzVGFnTmFtZShwcmVUYWcpCisgICAgICAgIHx8IGlzSFRNTFRhYmxlRWxl
bWVudChlbGVtZW50KQorICAgICAgICB8fCBlbGVtZW50LT5oYXNUYWdOYW1lKHVsVGFnKQorICAg
ICAgICB8fCBlbGVtZW50LT5oYXNUYWdOYW1lKHhtcFRhZykKKyAgICAgICAgfHwgZWxlbWVudC0+
aGFzVGFnTmFtZShoMVRhZykKKyAgICAgICAgfHwgZWxlbWVudC0+aGFzVGFnTmFtZShoMlRhZykK
KyAgICAgICAgfHwgZWxlbWVudC0+aGFzVGFnTmFtZShoM1RhZykKKyAgICAgICAgfHwgZWxlbWVu
dC0+aGFzVGFnTmFtZShoNFRhZykKKyAgICAgICAgfHwgZWxlbWVudC0+aGFzVGFnTmFtZShoNVRh
Zyk7CiB9Ci0gICAgCisKIFBvc2l0aW9uIGFkanVzdGVkU2VsZWN0aW9uU3RhcnRGb3JTdHlsZUNv
bXB1dGF0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbikKIHsKICAgICAvLyBU
aGlzIGZ1bmN0aW9uIGlzIHVzZWQgYnkgcmFuZ2Ugc3R5bGUgY29tcHV0YXRpb25zIHRvIGF2b2lk
IGJ1Z3MgbGlrZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCA2YjMwZjUzMjk5NTQy
NGExYmRjMmQ1YTNhODE4OGE3YWVlMTYwMjdjLi4yMjIyYTcyNmJmMWRkN2NjZGRkMzg3MjhkMjBi
NDkyNzA5MTQxZGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC00Nyw2ICs0Nyw3
IEBACiAjaW5jbHVkZSAiSFRNTEJvZHlFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MVGFibGVFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiSFRNTFRleHRBcmVhRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxUZXh0Rm9y
bUNvbnRyb2xFbGVtZW50LmgiCiAjaW5jbHVkZSAiS1VSTC5oIgpAQCAtNDMzLDcgKzQzNCw3IEBA
IHN0YXRpYyBOb2RlKiBhbmNlc3RvclRvUmV0YWluU3RydWN0dXJlQW5kQXBwZWFyYW5jZUZvckJs
b2NrKE5vZGUqIGNvbW1vbkFuY2VzdG9yCiAKICAgICBpZiAoY29tbW9uQW5jZXN0b3JCbG9jay0+
aGFzVGFnTmFtZSh0Ym9keVRhZykgfHwgY29tbW9uQW5jZXN0b3JCbG9jay0+aGFzVGFnTmFtZSh0
clRhZykpIHsKICAgICAgICAgQ29udGFpbmVyTm9kZSogdGFibGUgPSBjb21tb25BbmNlc3RvckJs
b2NrLT5wYXJlbnROb2RlKCk7Ci0gICAgICAgIHdoaWxlICh0YWJsZSAmJiAhdGFibGUtPmhhc1Rh
Z05hbWUodGFibGVUYWcpKQorICAgICAgICB3aGlsZSAodGFibGUgJiYgIWlzSFRNTFRhYmxlRWxl
bWVudCh0YWJsZSkpCiAgICAgICAgICAgICB0YWJsZSA9IHRhYmxlLT5wYXJlbnROb2RlKCk7CiAK
ICAgICAgICAgcmV0dXJuIHRhYmxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9G
VFBEaXJlY3RvcnlEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9y
eURvY3VtZW50LmNwcAppbmRleCA4NzhmZmI5M2JkMWMxMjc4NzFiMmM4YWUwYmEzZDJiYzE5NDg0
MDJmLi44Y2UxMGQ4NWFmNDJmNzFjM2RiZjE1NWVlMDM3NWVkNzNkY2IxNzE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcApAQCAtMzA0LDEwICszMDQs
MTAgQEAgYm9vbCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6bG9hZERvY3VtZW50VGVtcGxh
dGUoKQogICAgIFJlZlB0cjxFbGVtZW50PiB0YWJsZUVsZW1lbnQgPSBkb2N1bWVudCgpLT5nZXRF
bGVtZW50QnlJZCgiZnRwRGlyZWN0b3J5VGFibGUiKTsKICAgICBpZiAoIXRhYmxlRWxlbWVudCkK
ICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZmluZCBlbGVtZW50IGJ5IGlkIFwiZnRwRGly
ZWN0b3J5VGFibGVcIiBpbiB0aGUgdGVtcGxhdGUgZG9jdW1lbnQuIik7Ci0gICAgZWxzZSBpZiAo
IXRhYmxlRWxlbWVudC0+aGFzVGFnTmFtZSh0YWJsZVRhZykpCisgICAgZWxzZSBpZiAoIWlzSFRN
TFRhYmxlRWxlbWVudCh0YWJsZUVsZW1lbnQuZ2V0KCkpKQogICAgICAgICBMT0dfRVJST1IoIkVs
ZW1lbnQgb2YgaWQgXCJmdHBEaXJlY3RvcnlUYWJsZVwiIGlzIG5vdCBhIHRhYmxlIGVsZW1lbnQi
KTsKICAgICBlbHNlIAotICAgICAgICBtX3RhYmxlRWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxU
YWJsZUVsZW1lbnQqPih0YWJsZUVsZW1lbnQuZ2V0KCkpOworICAgICAgICBtX3RhYmxlRWxlbWVu
dCA9IHRvSFRNTFRhYmxlRWxlbWVudCh0YWJsZUVsZW1lbnQuZ2V0KCkpOwogCiAgICAgLy8gQmFp
bCBpZiB3ZSBmb3VuZCB0aGUgdGFibGUgZWxlbWVudAogICAgIGlmIChtX3RhYmxlRWxlbWVudCkK
QEAgLTMxNSw3ICszMTUsNyBAQCBib29sIEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpsb2Fk
RG9jdW1lbnRUZW1wbGF0ZSgpCiAKICAgICAvLyBPdGhlcndpc2UgY3JlYXRlIG9uZSBtYW51YWxs
eQogICAgIHRhYmxlRWxlbWVudCA9IGRvY3VtZW50KCktPmNyZWF0ZUVsZW1lbnQodGFibGVUYWcs
IGZhbHNlKTsKLSAgICBtX3RhYmxlRWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxUYWJsZUVsZW1l
bnQqPih0YWJsZUVsZW1lbnQuZ2V0KCkpOworICAgIG1fdGFibGVFbGVtZW50ID0gdG9IVE1MVGFi
bGVFbGVtZW50KHRhYmxlRWxlbWVudC5nZXQoKSk7CiAgICAgbV90YWJsZUVsZW1lbnQtPnNldEF0
dHJpYnV0ZSgiaWQiLCAiZnRwRGlyZWN0b3J5VGFibGUiLCBJR05PUkVfRVhDRVBUSU9OKTsKIAog
ICAgIC8vIElmIHdlIGRpZG4ndCBmaW5kIHRoZSB0YWJsZSBlbGVtZW50LCBsZXRzIHRyeSB0byBh
cHBlbmQgb3VyIG93biB0byB0aGUgYm9keQpAQCAtMzQwLDcgKzM0MCw3IEBAIHZvaWQgRlRQRGly
ZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmNyZWF0ZUJhc2ljRG9jdW1lbnQoKQogICAgIGRvY3VtZW50
KCktPmFwcGVuZENoaWxkKGJvZHlFbGVtZW50LCBJR05PUkVfRVhDRVBUSU9OKTsKIAogICAgIFJl
ZlB0cjxFbGVtZW50PiB0YWJsZUVsZW1lbnQgPSBkb2N1bWVudCgpLT5jcmVhdGVFbGVtZW50KHRh
YmxlVGFnLCBmYWxzZSk7Ci0gICAgbV90YWJsZUVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MVGFi
bGVFbGVtZW50Kj4odGFibGVFbGVtZW50LmdldCgpKTsKKyAgICBtX3RhYmxlRWxlbWVudCA9IHRv
SFRNTFRhYmxlRWxlbWVudCh0YWJsZUVsZW1lbnQuZ2V0KCkpOwogICAgIG1fdGFibGVFbGVtZW50
LT5zZXRBdHRyaWJ1dGUoImlkIiwgImZ0cERpcmVjdG9yeVRhYmxlIiwgSUdOT1JFX0VYQ0VQVElP
Tik7CiAKICAgICBib2R5RWxlbWVudC0+YXBwZW5kQ2hpbGQobV90YWJsZUVsZW1lbnQsIElHTk9S
RV9FWENFUFRJT04pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCmluZGV4
IDFmMmY3YzI0YTIzNjNhYmQ0YTY1OGI5N2YzNmRiZDE5NDk0YjU3NTQuLjVjMDA2NjRkNzNmNTNh
ZDU0MDIyNmYxODk1OWE5NzVhYTMwOWI3NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
RWxlbWVudC5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5o
IgorI2luY2x1ZGUgIkhUTUxUYWJsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJOb2RlUmVuZGVyaW5n
Q29udGV4dC5oIgogI2luY2x1ZGUgIk5vZGVUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJQYWdlLmgi
CkBAIC0xMDIsNyArMTAzLDcgQEAgYm9vbCBIVE1MRm9ybUVsZW1lbnQ6OnJlbmRlcmVySXNOZWVk
ZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQpCiAgICAgQ29udGFpbmVyTm9k
ZSogbm9kZSA9IHBhcmVudE5vZGUoKTsKICAgICBSZW5kZXJPYmplY3QqIHBhcmVudFJlbmRlcmVy
ID0gbm9kZS0+cmVuZGVyZXIoKTsKICAgICAvLyBGSVhNRTogU2hvdWxkbid0IHdlIGFsc28gY2hl
Y2sgZm9yIHRhYmxlIGNhcHRpb24gKHNlZSB8Zm9ybUlzVGFibGVQYXJ0fCBiZWxvdykuCi0gICAg
Ym9vbCBwYXJlbnRJc1RhYmxlRWxlbWVudFBhcnQgPSAocGFyZW50UmVuZGVyZXItPmlzVGFibGUo
KSAmJiBub2RlLT5oYXNUYWdOYW1lKHRhYmxlVGFnKSkKKyAgICBib29sIHBhcmVudElzVGFibGVF
bGVtZW50UGFydCA9IChwYXJlbnRSZW5kZXJlci0+aXNUYWJsZSgpICYmIGlzSFRNTFRhYmxlRWxl
bWVudChub2RlKSkKICAgICAgICAgfHwgKHBhcmVudFJlbmRlcmVyLT5pc1RhYmxlUm93KCkgJiYg
bm9kZS0+aGFzVGFnTmFtZSh0clRhZykpCiAgICAgICAgIHx8IChwYXJlbnRSZW5kZXJlci0+aXNU
YWJsZVNlY3Rpb24oKSAmJiBub2RlLT5oYXNUYWdOYW1lKHRib2R5VGFnKSkKICAgICAgICAgfHwg
KHBhcmVudFJlbmRlcmVyLT5pc1JlbmRlclRhYmxlQ29sKCkgJiYgbm9kZS0+aGFzVGFnTmFtZShj
b2xUYWcpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuaAppbmRleCBjNDdmMTgx
ZWJlYWExMTVlYTVlMTNjN2ZkN2JiZmQ5ZTJiZWNlZTljLi5lYzIxNDAxYmZkZDVhNTBhZDAwNmU3
ZDRkMjQ3NDBjYTRhZGMxOWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
YWJsZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQu
aApAQCAtMTAwLDYgKzEwMCwyMiBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxTdHlsZVByb3BlcnR5
U2V0PiBtX3NoYXJlZENlbGxTdHlsZTsKIH07CiAKK2lubGluZSBib29sIGlzSFRNTFRhYmxlRWxl
bWVudChjb25zdCBOb2RlKiBub2RlKQoreworICAgIHJldHVybiBub2RlLT5oYXNUYWdOYW1lKEhU
TUxOYW1lczo6dGFibGVUYWcpOworfQorCitpbmxpbmUgYm9vbCBpc0hUTUxUYWJsZUVsZW1lbnQo
Y29uc3QgRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICByZXR1cm4gZWxlbWVudC0+aGFzVGFnTmFt
ZShIVE1MTmFtZXM6OnRhYmxlVGFnKTsKK30KKworaW5saW5lIEhUTUxUYWJsZUVsZW1lbnQqIHRv
SFRNTFRhYmxlRWxlbWVudChOb2RlKiBub2RlKQoreworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZ
X0lNUExJQ0FUSU9OKCFub2RlIHx8IGlzSFRNTFRhYmxlRWxlbWVudChub2RlKSk7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PEhUTUxUYWJsZUVsZW1lbnQqPihub2RlKTsKK30KKwogfSAvL25hbWVz
cGFjZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxl
UGFydEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVQYXJ0RWxlbWVu
dC5jcHAKaW5kZXggNWZjY2MzMzFjN2E5MDM3NWYyMTlkN2YxOWI3YjQ0OWY2MDkzYWNmOC4uZWM4
NWUwYzBlYTU3N2Y4MWEwNzJmYjFlNjcyOTM4YTM2N2I1M2IxYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGFibGVQYXJ0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGFibGVQYXJ0RWxlbWVudC5jcHAKQEAgLTg2LDkgKzg2LDkgQEAgdm9pZCBI
VE1MVGFibGVQYXJ0RWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE4KIEhUTUxUYWJsZUVsZW1lbnQqIEhUTUxUYWJsZVBhcnRFbGVtZW50
OjpmaW5kUGFyZW50VGFibGUoKSBjb25zdAogewogICAgIENvbnRhaW5lck5vZGUqIHBhcmVudCA9
IHBhcmVudE5vZGUoKTsKLSAgICB3aGlsZSAocGFyZW50ICYmICFwYXJlbnQtPmhhc1RhZ05hbWUo
dGFibGVUYWcpKQorICAgIHdoaWxlIChwYXJlbnQgJiYgIWlzSFRNTFRhYmxlRWxlbWVudChwYXJl
bnQpKQogICAgICAgICBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudE5vZGUoKTsKLSAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8SFRNTFRhYmxlRWxlbWVudCo+KHBhcmVudCk7CisgICAgcmV0dXJuIHRvSFRN
TFRhYmxlRWxlbWVudChwYXJlbnQpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUYWJsZVJvd0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGFibGVSb3dFbGVtZW50LmNwcAppbmRleCA1ZWMzYmNlMmIwNDRlMDc5OGYyM2MyOTM1NTExYWJi
ODVhODBlMjFiLi4yYTZlZDI0YmJmZDFlY2YzY2RjOWI2YjVkY2RlYWFiYzhkMTUyNWYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd0VsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5jcHAKQEAgLTYwLDcgKzYw
LDcgQEAgaW50IEhUTUxUYWJsZVJvd0VsZW1lbnQ6OnJvd0luZGV4KCkgY29uc3QKICAgICBpZiAo
IXRhYmxlKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgdGFibGUgPSB0YWJsZS0+cGFyZW50Tm9k
ZSgpOwotICAgIGlmICghdGFibGUgfHwgIXRhYmxlLT5oYXNUYWdOYW1lKHRhYmxlVGFnKSkKKyAg
ICBpZiAoIXRhYmxlIHx8ICFpc0hUTUxUYWJsZUVsZW1lbnQodGFibGUpKQogICAgICAgICByZXR1
cm4gLTE7CiAKICAgICAvLyBUbyBtYXRjaCBGaXJlZm94LCB0aGUgcm93IGluZGljZXMgd29yayBs
aWtlIHRoaXM6CkBAIC03MCw3ICs3MCw3IEBAIGludCBIVE1MVGFibGVSb3dFbGVtZW50Ojpyb3dJ
bmRleCgpIGNvbnN0CiAKICAgICBpbnQgckluZGV4ID0gMDsKIAotICAgIGlmIChIVE1MVGFibGVT
ZWN0aW9uRWxlbWVudCogaGVhZCA9IHN0YXRpY19jYXN0PEhUTUxUYWJsZUVsZW1lbnQqPih0YWJs
ZSktPnRIZWFkKCkpIHsKKyAgICBpZiAoSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQqIGhlYWQgPSB0
b0hUTUxUYWJsZUVsZW1lbnQodGFibGUpLT50SGVhZCgpKSB7CiAgICAgICAgIGZvciAoTm9kZSAq
cm93ID0gaGVhZC0+Zmlyc3RDaGlsZCgpOyByb3c7IHJvdyA9IHJvdy0+bmV4dFNpYmxpbmcoKSkg
ewogICAgICAgICAgICAgaWYgKHJvdyA9PSB0aGlzKQogICAgICAgICAgICAgICAgIHJldHVybiBy
SW5kZXg7CkBAIC05MSw3ICs5MSw3IEBAIGludCBIVE1MVGFibGVSb3dFbGVtZW50Ojpyb3dJbmRl
eCgpIGNvbnN0CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoSFRNTFRhYmxlU2VjdGlvbkVs
ZW1lbnQqIGZvb3QgPSBzdGF0aWNfY2FzdDxIVE1MVGFibGVFbGVtZW50Kj4odGFibGUpLT50Rm9v
dCgpKSB7CisgICAgaWYgKEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50KiBmb290ID0gdG9IVE1MVGFi
bGVFbGVtZW50KHRhYmxlKS0+dEZvb3QoKSkgewogICAgICAgICBmb3IgKE5vZGUgKnJvdyA9IGZv
b3QtPmZpcnN0Q2hpbGQoKTsgcm93OyByb3cgPSByb3ctPm5leHRTaWJsaW5nKCkpIHsKICAgICAg
ICAgICAgIGlmIChyb3cgPT0gdGhpcykKICAgICAgICAgICAgICAgICByZXR1cm4gckluZGV4Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmNwcAppbmRl
eCA1MmNiMGVjYjVmZGNiZGZlMTcxZGQ4NjZhYTg2MTg5MmE1ZTUxNjljLi41ZTZkN2M3MzJjNjA5
MWI3OWYxOTk5NzJiZWUyOGVhYWRmYzBjZDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmNwcApAQCAtMTU0LDcgKzE1NCw3IEBAIEhUTUxUYWJs
ZVJvd0VsZW1lbnQqIEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uOjpsYXN0Um93KEhUTUxUYWJsZUVs
ZW1lbnQqIHRhYmxlKQogSFRNTFRhYmxlUm93c0NvbGxlY3Rpb246OkhUTUxUYWJsZVJvd3NDb2xs
ZWN0aW9uKE5vZGUqIHRhYmxlKQogICAgIDogSFRNTENvbGxlY3Rpb24odGFibGUsIFRhYmxlUm93
cywgT3ZlcnJpZGVzSXRlbUFmdGVyKQogewotICAgIEFTU0VSVCh0YWJsZS0+aGFzVGFnTmFtZSh0
YWJsZVRhZykpOworICAgIEFTU0VSVChpc0hUTUxUYWJsZUVsZW1lbnQodGFibGUpKTsKIH0KIAog
UGFzc1JlZlB0cjxIVE1MVGFibGVSb3dzQ29sbGVjdGlvbj4gSFRNTFRhYmxlUm93c0NvbGxlY3Rp
b246OmNyZWF0ZShOb2RlKiB0YWJsZSwgQ29sbGVjdGlvblR5cGUpCkBAIC0xNjYsNyArMTY2LDcg
QEAgRWxlbWVudCogSFRNTFRhYmxlUm93c0NvbGxlY3Rpb246OnZpcnR1YWxJdGVtQWZ0ZXIodW5z
aWduZWQmIG9mZnNldEluQXJyYXksIEVsZW0KIHsKICAgICBBU1NFUlRfVU5VU0VEKG9mZnNldElu
QXJyYXksICFvZmZzZXRJbkFycmF5KTsKICAgICBBU1NFUlQoIXByZXZpb3VzIHx8IChwcmV2aW91
cy0+aXNIVE1MRWxlbWVudCgpICYmIHRvSFRNTEVsZW1lbnQocHJldmlvdXMpLT5oYXNMb2NhbE5h
bWUodHJUYWcpKSk7Ci0gICAgcmV0dXJuIHJvd0FmdGVyKHN0YXRpY19jYXN0PEhUTUxUYWJsZUVs
ZW1lbnQqPihvd25lck5vZGUoKSksIHN0YXRpY19jYXN0PEhUTUxUYWJsZVJvd0VsZW1lbnQqPihw
cmV2aW91cykpOworICAgIHJldHVybiByb3dBZnRlcih0b0hUTUxUYWJsZUVsZW1lbnQob3duZXJO
b2RlKCkpLCBzdGF0aWNfY2FzdDxIVE1MVGFibGVSb3dFbGVtZW50Kj4ocHJldmlvdXMpKTsKIH0K
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEVsZW1lbnRT
dGFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNw
cAppbmRleCAyNmQzMDUwZDU2ZTRmMGYxMWE3ZjM0NTJmNzVjZjQwOTdiYmIzMzE2Li4wYzc0MWE0
ZWYyNjVmNjY0Y2ZkNzQyYWIzY2FjZTY1OGEzMTQ1ZjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2lu
Y2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxPcHRHcm91cEVsZW1lbnQuaCIKICNp
bmNsdWRlICJIVE1MT3B0aW9uRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxUYWJsZUVsZW1lbnQu
aCIKICNpbmNsdWRlICJNYXRoTUxOYW1lcy5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5j
bHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KQEAgLTU1LDcgKzU2LDcgQEAgaW5saW5lIGJvb2wgaXNT
Y29wZU1hcmtlcihIVE1MU3RhY2tJdGVtKiBpdGVtKQogICAgICAgICB8fCBpdGVtLT5oYXNUYWdO
YW1lKGNhcHRpb25UYWcpCiAgICAgICAgIHx8IGl0ZW0tPmhhc1RhZ05hbWUobWFycXVlZVRhZykK
ICAgICAgICAgfHwgaXRlbS0+aGFzVGFnTmFtZShvYmplY3RUYWcpCi0gICAgICAgIHx8IGl0ZW0t
Pmhhc1RhZ05hbWUodGFibGVUYWcpCisgICAgICAgIHx8IGlzSFRNTFRhYmxlRWxlbWVudChpdGVt
LT5ub2RlKCkpCiAgICAgICAgIHx8IGl0ZW0tPmhhc1RhZ05hbWUodGRUYWcpCiAgICAgICAgIHx8
IGl0ZW0tPmhhc1RhZ05hbWUodGhUYWcpCiAgICAgICAgIHx8IGl0ZW0tPmhhc1RhZ05hbWUoTWF0
aE1MTmFtZXM6Om1pVGFnKQpAQCAtODIsNyArODMsNyBAQCBpbmxpbmUgYm9vbCBpc0xpc3RJdGVt
U2NvcGVNYXJrZXIoSFRNTFN0YWNrSXRlbSogaXRlbSkKIAogaW5saW5lIGJvb2wgaXNUYWJsZVNj
b3BlTWFya2VyKEhUTUxTdGFja0l0ZW0qIGl0ZW0pCiB7Ci0gICAgcmV0dXJuIGl0ZW0tPmhhc1Rh
Z05hbWUodGFibGVUYWcpCisgICAgcmV0dXJuIGlzSFRNTFRhYmxlRWxlbWVudChpdGVtLT5ub2Rl
KCkpCiAjaWYgRU5BQkxFKFRFTVBMQVRFX0VMRU1FTlQpCiAgICAgICAgIHx8IGl0ZW0tPmhhc1Rh
Z05hbWUodGVtcGxhdGVUYWcpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MVHJlZUJ1aWxkZXIuY3BwCmluZGV4IGNkNjljN2FiZjEzNTM1MTc1NmIxNzRjZTNlNWQ4
MjQ4YTMzMjZmY2EuLmRiMWFmYzE5ZjgxM2RjZDkyYzNjMmEyZjgxN2U3OWE4ODY3NTI3YmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcApAQCAt
MzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkhUTUxPcHRpb25FbGVtZW50LmgiCiAjaW5jbHVkZSAi
SFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIkhUTUxTdGFja0l0ZW0uaCIKKyNpbmNsdWRl
ICJIVE1MVGFibGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRlbXBsYXRlRWxlbWVudC5oIgog
I2luY2x1ZGUgIkhUTUxUb2tlbi5oIgogI2luY2x1ZGUgIkhUTUxUb2tlbml6ZXIuaCIKQEAgLTE2
NzgsNyArMTY3OSw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpyZXNldEluc2VydGlvbk1vZGVB
cHByb3ByaWF0ZWx5KCkKICAgICAgICAgaWYgKGl0ZW0tPmhhc1RhZ05hbWUoY29sZ3JvdXBUYWcp
KSB7CiAgICAgICAgICAgICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZShJbkNvbHVtbkdyb3VwTW9k
ZSk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGl0ZW0tPmhhc1RhZ05hbWUodGFibGVUYWcpKQor
ICAgICAgICBpZiAoaXNIVE1MVGFibGVFbGVtZW50KGl0ZW0tPm5vZGUoKSkpCiAgICAgICAgICAg
ICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZShJblRhYmxlTW9kZSk7CiAgICAgICAgIGlmIChpdGVt
LT5oYXNUYWdOYW1lKGhlYWRUYWcpKSB7CiAjaWYgRU5BQkxFKFRFTVBMQVRFX0VMRU1FTlQpCkBA
IC0yNDE5LDcgKzI0MjAsNyBAQCBSZXByb2Nlc3NCdWZmZXI6CiAgICAgICAgIEFTU0VSVChpbnNl
cnRpb25Nb2RlKCkgPT0gSW5UYWJsZU1vZGUgfHwgaW5zZXJ0aW9uTW9kZSgpID09IEluVGFibGVC
b2R5TW9kZSB8fCBpbnNlcnRpb25Nb2RlKCkgPT0gSW5Sb3dNb2RlKTsKICAgICAgICAgQVNTRVJU
KG1fcGVuZGluZ1RhYmxlQ2hhcmFjdGVycy5pc0VtcHR5KCkpOwogICAgICAgICBpZiAobV90cmVl
LmN1cnJlbnRTdGFja0l0ZW0oKS0+aXNFbGVtZW50Tm9kZSgpCi0gICAgICAgICAgICAmJiAobV90
cmVlLmN1cnJlbnRTdGFja0l0ZW0oKS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnRhYmxlVGFnKQor
ICAgICAgICAgICAgJiYgKGlzSFRNTFRhYmxlRWxlbWVudChtX3RyZWUuY3VycmVudFN0YWNrSXRl
bSgpLT5ub2RlKCkpCiAgICAgICAgICAgICAgICAgfHwgbV90cmVlLmN1cnJlbnRTdGFja0l0ZW0o
KS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnRib2R5VGFnKQogICAgICAgICAgICAgICAgIHx8IG1f
dHJlZS5jdXJyZW50U3RhY2tJdGVtKCktPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjp0Zm9vdFRhZykK
ICAgICAgICAgICAgICAgICB8fCBtX3RyZWUuY3VycmVudFN0YWNrSXRlbSgpLT5oYXNUYWdOYW1l
KEhUTUxOYW1lczo6dGhlYWRUYWcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvSFRNTENvbnZlcnRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9IVE1M
Q29udmVydGVyLm1tCmluZGV4IGQ0YzAyOTE4MjJiMDk2YjdlZjMzOTA3MDBiNDU4NWEwNGY4YjVm
ZTguLjlhY2YyMTc5NzU2NWUzM2UyOWU4MDgzZWEyMDJmZGE3Y2E5ZGRmYTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9IVE1MQ29udmVydGVyLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9IVE1MQ29udmVydGVyLm1tCkBAIC00Myw2ICs0Myw3IEBA
CiAjaW1wb3J0ICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MTmFtZXMuaCIKICNp
bXBvcnQgIkhUTUxQYXJzZXJJZGlvbXMuaCIKKyNpbXBvcnQgIkhUTUxUYWJsZUVsZW1lbnQuaCIK
ICNpbXBvcnQgIkxvYWRlck5TVVJMRXh0cmFzLmgiCiAjaW1wb3J0ICJSZW5kZXJJbWFnZS5oIgog
I2ltcG9ydCAiVGV4dEl0ZXJhdG9yLmgiCkBAIC0yNjEsNyArMjYyLDcgQEAgc3RhdGljIE5TRm9u
dCAqX2ZvbnRGb3JOYW1lQW5kU2l6ZShOU1N0cmluZyAqZm9udE5hbWUsIENHRmxvYXQgc2l6ZSwg
TlNNdXRhYmxlRGkKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gQCJibG9jayI7CiAgICAg
ICAgICAgICAgICAgZWxzZSBpZiAoY29yZUVsZW1lbnQtPmhhc1RhZ05hbWUobGlUYWcpKQogICAg
ICAgICAgICAgICAgICAgICByZXN1bHQgPSBAImxpc3QtaXRlbSI7Ci0gICAgICAgICAgICAgICAg
ZWxzZSBpZiAoY29yZUVsZW1lbnQtPmhhc1RhZ05hbWUodGFibGVUYWcpKQorICAgICAgICAgICAg
ICAgIGVsc2UgaWYgKGlzSFRNTFRhYmxlRWxlbWVudChjb3JlRWxlbWVudCkpCiAgICAgICAgICAg
ICAgICAgICAgIHJlc3VsdCA9IEAidGFibGUiOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNv
cmVFbGVtZW50LT5oYXNUYWdOYW1lKHRyVGFnKSkKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0
ID0gQCJ0YWJsZS1yb3ciOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNw
cAppbmRleCA4OGZkNzEyOTdmZDhiZjA3ZDNlOTc1MTI0NDBlNjA0YTU4M2YyMWYxLi5jZGE2NDJk
ZmMyM2Q1MmMyOTJlMTNhM2I4ZDhjMGYxMzViNDAxMmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIkhUTUxF
bGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxO
YW1lcy5oIgorI2luY2x1ZGUgIkhUTUxUYWJsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIaXRUZXN0
UmVzdWx0LmgiCiAjaW5jbHVkZSAiTG9naWNhbFNlbGVjdGlvbk9mZnNldENhY2hlcy5oIgogI2lu
Y2x1ZGUgIlBhZ2UuaCIKQEAgLTMwOTUsNyArMzA5Niw3IEBAIFJlbmRlckJveE1vZGVsT2JqZWN0
KiBSZW5kZXJPYmplY3Q6Om9mZnNldFBhcmVudCgpIGNvbnN0CiAgICAgUmVuZGVyT2JqZWN0KiBj
dXJyID0gcGFyZW50KCk7CiAgICAgd2hpbGUgKGN1cnIgJiYgKCFjdXJyLT5ub2RlKCkgfHwgKCFj
dXJyLT5pc1Bvc2l0aW9uZWQoKSAmJiAhY3Vyci0+aXNCb2R5KCkpKSAmJiAhY3Vyci0+aXNSZW5k
ZXJOYW1lZEZsb3dUaHJlYWQoKSkgewogICAgICAgICBOb2RlKiBlbGVtZW50ID0gY3Vyci0+bm9k
ZSgpOwotICAgICAgICBpZiAoIXNraXBUYWJsZXMgJiYgZWxlbWVudCAmJiAoZWxlbWVudC0+aGFz
VGFnTmFtZSh0YWJsZVRhZykgfHwgZWxlbWVudC0+aGFzVGFnTmFtZSh0ZFRhZykgfHwgZWxlbWVu
dC0+aGFzVGFnTmFtZSh0aFRhZykpKQorICAgICAgICBpZiAoIXNraXBUYWJsZXMgJiYgZWxlbWVu
dCAmJiAoaXNIVE1MVGFibGVFbGVtZW50KGVsZW1lbnQpIHx8IGVsZW1lbnQtPmhhc1RhZ05hbWUo
dGRUYWcpIHx8IGVsZW1lbnQtPmhhc1RhZ05hbWUodGhUYWcpKSkKICAgICAgICAgICAgIGJyZWFr
OwogIAogICAgICAgICBmbG9hdCBuZXdab29tID0gY3Vyci0+c3R5bGUoKS0+ZWZmZWN0aXZlWm9v
bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKaW5kZXggZWUzZjk4
YTUzMDFhZWFhNDUyNThmZWFlNWZhY2I1NTNkOTJmMTk2MS4uYTFjNTcyZWU5NDFjZGUwMDk1OWNm
MWZjNmM4OGJjM2NjNDhlNDYyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFi
bGUuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVk
ZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIkhU
TUxUYWJsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJMYXlvdXRSZXBhaW50ZXIuaCIKICNpbmNsdWRl
ICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlJlbmRlclRhYmxlQ2FwdGlvbi5oIgpAQCAtMzE5
LDcgKzMyMCw3IEBAIExheW91dFVuaXQgUmVuZGVyVGFibGU6OmNvbnZlcnRTdHlsZUxvZ2ljYWxX
aWR0aFRvQ29tcHV0ZWRXaWR0aChjb25zdCBMZW5ndGgmIHN0CiAKICAgICAvLyBIVE1MIHRhYmxl
cycgd2lkdGggc3R5bGVzIGFscmVhZHkgaW5jbHVkZSBib3JkZXJzIGFuZCBwYWRkaW5ncywgYnV0
IENTUyB0YWJsZXMnIHdpZHRoIHN0eWxlcyBkbyBub3QuCiAgICAgTGF5b3V0VW5pdCBib3JkZXJz
ID0gMDsKLSAgICBib29sIGlzQ1NTVGFibGUgPSAhbm9kZSgpIHx8ICFub2RlKCktPmhhc1RhZ05h
bWUodGFibGVUYWcpOworICAgIGJvb2wgaXNDU1NUYWJsZSA9ICFub2RlKCkgfHwgIWlzSFRNTFRh
YmxlRWxlbWVudChub2RlKCkpOwogICAgIGlmIChpc0NTU1RhYmxlICYmIHN0eWxlTG9naWNhbFdp
ZHRoLmlzU3BlY2lmaWVkKCkgJiYgc3R5bGVMb2dpY2FsV2lkdGguaXNQb3NpdGl2ZSgpICYmIHN0
eWxlKCktPmJveFNpemluZygpID09IENPTlRFTlRfQk9YKQogICAgICAgICBib3JkZXJzID0gYm9y
ZGVyU3RhcnQoKSArIGJvcmRlckVuZCgpICsgKGNvbGxhcHNlQm9yZGVycygpID8gTGF5b3V0VW5p
dCgpIDogcGFkZGluZ1N0YXJ0KCkgKyBwYWRkaW5nRW5kKCkpOwogCkBAIC0zMzMsNyArMzM0LDcg
QEAgTGF5b3V0VW5pdCBSZW5kZXJUYWJsZTo6Y29udmVydFN0eWxlTG9naWNhbEhlaWdodFRvQ29t
cHV0ZWRIZWlnaHQoY29uc3QgTGVuZ3RoJgogICAgICAgICAvLyBIVE1MIHRhYmxlcyBzaXplIGFz
IHRob3VnaCBDU1MgaGVpZ2h0IGluY2x1ZGVzIGJvcmRlci9wYWRkaW5nLCBDU1MgdGFibGVzIGRv
IG5vdC4KICAgICAgICAgTGF5b3V0VW5pdCBib3JkZXJzID0gTGF5b3V0VW5pdCgpOwogICAgICAg
ICAvLyBGSVhNRTogV2UgY2Fubm90IGFwcGx5IGJveC1zaXppbmc6IGNvbnRlbnQtYm94IG9uIDx0
YWJsZT4gd2hpY2ggb3RoZXIgYnJvd3NlcnMgYWxsb3cuCi0gICAgICAgIGlmICgobm9kZSgpICYm
IG5vZGUoKS0+aGFzVGFnTmFtZSh0YWJsZVRhZykpIHx8IHN0eWxlKCktPmJveFNpemluZygpID09
IEJPUkRFUl9CT1gpIHsKKyAgICAgICAgaWYgKChub2RlKCkgJiYgaXNIVE1MVGFibGVFbGVtZW50
KG5vZGUoKSkpIHx8IHN0eWxlKCktPmJveFNpemluZygpID09IEJPUkRFUl9CT1gpIHsKICAgICAg
ICAgICAgIExheW91dFVuaXQgYm9yZGVyQW5kUGFkZGluZ0JlZm9yZSA9IGJvcmRlckJlZm9yZSgp
ICsgKGNvbGxhcHNlQm9yZGVycygpID8gTGF5b3V0VW5pdCgpIDogcGFkZGluZ0JlZm9yZSgpKTsK
ICAgICAgICAgICAgIExheW91dFVuaXQgYm9yZGVyQW5kUGFkZGluZ0FmdGVyID0gYm9yZGVyQWZ0
ZXIoKSArIChjb2xsYXBzZUJvcmRlcnMoKSA/IExheW91dFVuaXQoKSA6IHBhZGRpbmdBZnRlcigp
KTsKICAgICAgICAgICAgIGJvcmRlcnMgPSBib3JkZXJBbmRQYWRkaW5nQmVmb3JlICsgYm9yZGVy
QW5kUGFkZGluZ0FmdGVyOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>