<?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>60503</bug_id>
          
          <creation_ts>2011-05-09 14:16:10 -0700</creation_ts>
          <short_desc>Refactor RenderObject::draggableNode</short_desc>
          <delta_ts>2011-05-09 21:33:34 -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>HTML Editing</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="Daniel Cheng">dcheng</reporter>
          <assigned_to name="Daniel Cheng">dcheng</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>hyatt</cc>
    
    <cc>jamesr</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>400748</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-05-09 14:16:10 -0700</bug_when>
    <thetext>RenderObject::draggableNode is in an awkward location. I&apos;m trying to refactor the drag start handling, and if I keep the existing structure, I have to add three new functions to EventHandler whose only purpose is to forward calls to three new functions in DragController. Given that, it seems much more sense to move the determination of the node to drag into DragController. I&apos;m also pulling DragState out into its own header so I can share the drag state between EventHandler and DragController in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400755</commentid>
    <comment_count>1</comment_count>
      <attachid>92851</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-05-09 14:28:32 -0700</bug_when>
    <thetext>Created attachment 92851
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400759</commentid>
    <comment_count>2</comment_count>
      <attachid>92852</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-05-09 14:36:14 -0700</bug_when>
    <thetext>Created attachment 92852
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400793</commentid>
    <comment_count>3</comment_count>
      <attachid>92852</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-05-09 15:12:03 -0700</bug_when>
    <thetext>Comment on attachment 92852
Patch

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

I mentioned to dcheng that the previous code walked up RenderObjects and this code walks up DOM nodes.  I think this is equivalent because anonymous RenderObjects don&apos;t influence drag behavior, but I&apos;m not sure about things like absolute or fixed position element.

&gt; Source/WebCore/page/DragController.cpp:572
&gt; +Node* DragController::draggableNode(const Frame* src, Node* node, bool dhtmlOK, bool uaOK, int x, int y, bool&amp; dhtmlWillDrag) const

src -&gt; source or sourceFrame or frame.

&gt; Source/WebCore/page/DragController.cpp:599
&gt; +            if (uaOK &amp;&amp; dragMode == DRAG_AUTO
&gt; +                    &amp;&amp; mayStartDragAtEventLocation(src, IntPoint(x, y), node)) {

Nit: This indention looks off.  Maybe just put it on a single line.

&gt; Source/WebCore/page/DragController.h:78
&gt; +        Node* draggableNode(const Frame*, Node*, bool dhtmlOK, bool uaOK, int x, int y, bool&amp; dhtmlWillDrag) const;

Can we rename uaOK to userAgentOK?

&gt; Source/WebCore/page/EventHandler.h:-149
&gt; -    bool shouldDragAutoNode(Node*, const IntPoint&amp;) const; // -webkit-user-drag == auto

Which layout tests cover -webkit-user-drag == auto?  They still pass, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400794</commentid>
    <comment_count>4</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-05-09 15:12:43 -0700</bug_when>
    <thetext>Adding some people to provide feedback about climbing the render tree vs climbing the dom tree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400801</commentid>
    <comment_count>5</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-05-09 15:19:34 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 92852 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=92852&amp;action=review
&gt; 
&gt; I mentioned to dcheng that the previous code walked up RenderObjects and this code walks up DOM nodes.  I think this is equivalent because anonymous RenderObjects don&apos;t influence drag behavior, but I&apos;m not sure about things like absolute or fixed position element.
&gt; 
&gt; &gt; Source/WebCore/page/DragController.cpp:572
&gt; &gt; +Node* DragController::draggableNode(const Frame* src, Node* node, bool dhtmlOK, bool uaOK, int x, int y, bool&amp; dhtmlWillDrag) const
&gt; 
&gt; src -&gt; source or sourceFrame or frame.
&gt; 

There is a mixed convention between using src and source in DragController. I opted to use src for consistency since all references to source Frames use the identifier src in DragController.

&gt; &gt; Source/WebCore/page/DragController.cpp:599
&gt; &gt; +            if (uaOK &amp;&amp; dragMode == DRAG_AUTO
&gt; &gt; +                    &amp;&amp; mayStartDragAtEventLocation(src, IntPoint(x, y), node)) {
&gt; 
&gt; Nit: This indention looks off.  Maybe just put it on a single line.
&gt; 
&gt; &gt; Source/WebCore/page/DragController.h:78
&gt; &gt; +        Node* draggableNode(const Frame*, Node*, bool dhtmlOK, bool uaOK, int x, int y, bool&amp; dhtmlWillDrag) const;
&gt; 
&gt; Can we rename uaOK to userAgentOK?
&gt; 

I opted for a straight copy and paste from RenderObject with only fixes as necessary to prevent check-webkit-style from complaining. I am planning on rewriting most of this block anyway. If you feel strongly about it, I will update this patch.

&gt; &gt; Source/WebCore/page/EventHandler.h:-149
&gt; &gt; -    bool shouldDragAutoNode(Node*, const IntPoint&amp;) const; // -webkit-user-drag == auto
&gt; 
&gt; Which layout tests cover -webkit-user-drag == auto?  They still pass, right?

Yes. There&apos;s a couple. user-drag-none is the primary one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400871</commentid>
    <comment_count>6</comment_count>
      <attachid>92852</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-05-09 16:15:53 -0700</bug_when>
    <thetext>Comment on attachment 92852
Patch

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

Do you need to refactor and change the implementation at the same time?

&gt; Source/WebCore/page/DragState.h:45
&gt; +    bool m_dragSrcIsLink;
&gt; +    bool m_dragSrcIsImage;
&gt; +    bool m_dragSrcInSelection;
&gt; +    bool m_dragSrcMayBeDHTML;
&gt; +    bool m_dragSrcMayBeUA; // Are DHTML and/or the UserAgent allowed to drag out?
&gt; +    bool m_dragSrcIsDHTML;

this looks a lot like it should be an enum</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400944</commentid>
    <comment_count>7</comment_count>
      <attachid>92894</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-05-09 17:50:38 -0700</bug_when>
    <thetext>Created attachment 92894
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400947</commentid>
    <comment_count>8</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-05-09 17:51:35 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 92852 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=92852&amp;action=review
&gt; 
&gt; Do you need to refactor and change the implementation at the same time?
&gt; 
&gt; &gt; Source/WebCore/page/DragState.h:45
&gt; &gt; +    bool m_dragSrcIsLink;
&gt; &gt; +    bool m_dragSrcIsImage;
&gt; &gt; +    bool m_dragSrcInSelection;
&gt; &gt; +    bool m_dragSrcMayBeDHTML;
&gt; &gt; +    bool m_dragSrcMayBeUA; // Are DHTML and/or the UserAgent allowed to drag out?
&gt; &gt; +    bool m_dragSrcIsDHTML;
&gt; 
&gt; this looks a lot like it should be an enum

Probably. In my refactored version, it has been changed. As I mentioned though, this is a straight move of the code from RenderObject with fixes as necessary for compile/stylechecker reasons.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401004</commentid>
    <comment_count>9</comment_count>
      <attachid>92894</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-05-09 19:42:06 -0700</bug_when>
    <thetext>Comment on attachment 92894
Patch

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

Yes, this looks just like a refactor.

&gt; Source/WebCore/page/DragController.cpp:598
&gt; +            if (uaOK &amp;&amp; dragMode == DRAG_AUTO
&gt; +                    &amp;&amp; mayStartDragAtEventLocation(src, IntPoint(x, y), node)) {

I think it&apos;s ok to do indention fixes when refactoring.  I mean, you do that when you pull out functions, etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401037</commentid>
    <comment_count>10</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-05-09 21:33:34 -0700</bug_when>
    <thetext>Committed r86128: &lt;http://trac.webkit.org/changeset/86128&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92851</attachid>
            <date>2011-05-09 14:28:32 -0700</date>
            <delta_ts>2011-05-09 14:36:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60503-20110509142831.patch</filename>
            <type>text/plain</type>
            <size>19499</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODYwNDQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1NTZkOTJlZTQ0ZDRiODNj
ZDQ4N2IwNDAxNTdlMTc4MzZlYmMwZTI4Li5hMWI1ODhiNzI3ZGJmZDhiNDE3YTJjMzY5ODg0MmJj
ZTY4NTkwMTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTEtMDUtMDkgIERhbmll
bCBDaGVuZyAgPGRjaGVuZ0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3IgUmVuZGVyT2JqZWN0OjpkcmFnZ2FibGVO
b2RlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjA1
MDMKKworICAgICAgICBUaGlzIHBhdGNoIGxheXMgdGhlIGdyb3VuZCBmb3IgcmVmYWN0b3Jpbmcg
dGhlIGRyYWcgc3RhcnQgbG9naWMuIEl0IG1vdmVzIGRyYWdnYWJsZU5vZGUgdG8KKyAgICAgICAg
RHJhZ0NvbnRyb2xsZXIgdG8gYXZvaWQgdGhlIGF3a3dhcmQgcGx1bWJpbmcgb2YgY2FsbGluZyBE
cmFnQ29udHJvbGxlciBmcm9tIFJlbmRlck9iamVjdCBhbmQKKyAgICAgICAgYWxzbyBtb3ZlcyBF
dmVudEhhbmRsZXJEcmFnU3RhdGUgb3V0IGZyb20gRXZlbnRIYW5kbGVyIHNvIGl0IGNhbiBiZSBz
aGFyZWQgYmV0d2VlbgorICAgICAgICBFdmVudEhhbmRsZXIgYW5kIERyYWdDb250cm9sbGVyIHdo
ZXJlIGFwcHJvcHJpYXRlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBzaW5jZSB0aGVyZSBzaG91
bGQgYmUgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5h
bToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAg
ICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRyYWdnYWJsZU5vZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6Om1heVN0YXJ0RHJhZ0F0RXZlbnRMb2Nh
dGlvbik6CisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5oOgorICAgICAgICAqIHBhZ2Uv
RHJhZ1N0YXRlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RHJhZ1N0YXRlOjpEcmFnU3Rh
dGUpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkV2ZW50SGFuZGxlcjo6ZHJhZ1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxl
cjo6ZXZlbnRNYXlTdGFydERyYWcpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpo
YW5kbGVEcmFnKToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuaDoKKwogMjAxMS0wNS0wOSAgTHVrZSBNYWNwaGVyc29uICAgPG1hY3BoZXJzb25AY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0KaW5kZXggNGRkNzY1NTE3MTE5OTFkZWFmYzAzZTlkZDI4YTQ5OTQyODQ3
NTIxZS4uYTA1MzY4MTA3ZWVjMTM4NDE4NTNlMmM2MTNhZjE4ZGViZmFlZmY2OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0yMTU3LDYgKzIxNTcsNyBAQCB3ZWJjb3JlX3NvdXJj
ZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NsaWVudC5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9EcmFn
Q29udHJvbGxlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdTdGF0ZS5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmggXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCmluZGV4IDlhZmZjNTI3YTZmNThiYzljY2I0MTk4Y2M3OTBlMzZmMWE1Zjdh
YTUuLmRiNGVjMzQ3MTMxNGMxOTFkZjU5MWM5MGYxN2ZiNWU4ZTUzOWM3N2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKQEAgLTY4OCw2ICs2ODgsNyBAQAogICAgICAgICAgICAgJ3BhZ2UvRHJhZ0FjdGlvbnMu
aCcsCiAgICAgICAgICAgICAncGFnZS9EcmFnQ2xpZW50LmgnLAogICAgICAgICAgICAgJ3BhZ2Uv
RHJhZ0NvbnRyb2xsZXIuaCcsCisgICAgICAgICAgICAncGFnZS9EcmFnU3RhdGUuaCcsCiAgICAg
ICAgICAgICAncGFnZS9FZGl0b3JDbGllbnQuaCcsCiAgICAgICAgICAgICAncGFnZS9FdmVudEhh
bmRsZXIuaCcsCiAgICAgICAgICAgICAncGFnZS9Gb2N1c0NvbnRyb2xsZXIuaCcsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
cHJvCmluZGV4IGQ2ZmIyNTE5NGU1ZWViNzU0ZDA2NzFhNzM2MDQwZTRkZDNlMjI0NDguLmIwNGU5
YzgxY2VlZTc3ZjY1M2UyMGYwMmJjYWFmMmU3NWZlMGJlYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0x
ODQwLDYgKzE4NDAsNyBAQCBIRUFERVJTICs9IFwKICAgICBwYWdlL0RPTVRpbWVyLmggXAogICAg
IHBhZ2UvRE9NV2luZG93LmggXAogICAgIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuaCBcCisgICAgcGFn
ZS9EcmFnU3RhdGUuaCBcCiAgICAgcGFnZS9FdmVudEhhbmRsZXIuaCBcCiAgICAgcGFnZS9FdmVu
dFNvdXJjZS5oIFwKICAgICBwYWdlL0VkaXRvckNsaWVudC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggYzMzZjhjMjBmYmNmNTNjMDZjNzNm
YjdmMDFjYmZhY2QwMTEzMTFiYS4uMThjOGNkZDA3MmU1NjkzZWRhMTBiODFjZmY5ZDRiZjEyZmNl
Y2ViZCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oK
QEAgLTI0NDk4LDYgKzI0NDk4LDEwIEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcRHJhZ1N0YXRlLmgiCisJCQkJPgorCQkJPC9GaWxlPgor
CQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2Vcd2luXERyYWdDb250cm9sbGVyV2lu
LmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTJmZDc5YjM2NDVkMzAwN2UxODEyY2NiN2Ni
OGQwMWNkZmU5OGJlZi4uM2I1NWYzY2IxZmFjMjRkYWZhZTM2MTI3MmNiYjE1ZTllOWFjMjRjMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTY3Miw2ICsxNjcyLDcgQEAKIAkJODFCRTIwOTkxMUY0QUI4RDAwOTE1REZBIC8qIElE
QkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDgxQkUyMDk0MTFGNEFCOEQwMDkxNURGQSAvKiBJREJDdXJzb3JCYWNr
ZW5kSW50ZXJmYWNlLmggKi87IH07CiAJCTgxQkUyMEQyMTFGNEJDMzIwMDkxNURGQSAvKiBKU0lE
QkN1cnNvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4MUJFMjBBNzExRjRCNjZGMDA5MTVERkEgLyogSlNJREJDdXJzb3IuY3BwICovOyB9OwogCQk4
MUJFMjBEMzExRjRCQzMyMDA5MTVERkEgLyogSlNJREJDdXJzb3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgxQkUyMEE4MTFGNEI2NkYwMDkxNURGQSAv
KiBKU0lEQkN1cnNvci5oICovOyB9OworCQk4MUY2NUZGNjEzNzg4RkFBMDBGRjZGMkQgLyogRHJh
Z1N0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
MUY2NUZGNTEzNzg4RkFBMDBGRjZGMkQgLyogRHJhZ1N0YXRlLmggKi87IH07CiAJCTgyQUIxNzQz
MTI0Qjk5RUMwMEM1MDY5RCAvKiBJbnNwZWN0b3JDU1NBZ2VudC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MkFCMTc0MTEyNEI5OUVDMDBDNTA2OUQg
LyogSW5zcGVjdG9yQ1NTQWdlbnQuY3BwICovOyB9OwogCQk4MkFCMTc0NDEyNEI5OUVDMDBDNTA2
OUQgLyogSW5zcGVjdG9yQ1NTQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDgyQUIxNzQyMTI0Qjk5RUMwMEM1MDY5RCAvKiBJbnNwZWN0b3JDU1NB
Z2VudC5oICovOyB9OwogCQk4MkFCMTc3MzEyNUM4MjY3MDBDNTA2OUQgLyogSW5zcGVjdG9yU3R5
bGVTaGVldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4MkFCMTc2RjEyNUM4MjY3MDBDNTA2OUQgLyogSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAgKi87
IH07CkBAIC04MjE1LDYgKzgyMTYsNyBAQAogCQk4MUJFMjA5QzExRjRBQkJEMDA5MTVERkEgLyog
SURCQ3Vyc29yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBJREJDdXJzb3IuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MUJFMjBBNzExRjRCNjZGMDA5MTVERkEgLyogSlNJ
REJDdXJzb3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJREJD
dXJzb3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MUJFMjBBODExRjRCNjZG
MDA5MTVERkEgLyogSlNJREJDdXJzb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNJREJDdXJzb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODFGNjVGRjUx
Mzc4OEZBQTAwRkY2RjJEIC8qIERyYWdTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBEcmFnU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODJBQjE3
NDExMjRCOTlFQzAwQzUwNjlEIC8qIEluc3BlY3RvckNTU0FnZW50LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckNTU0FnZW50LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODJBQjE3NDIxMjRCOTlFQzAwQzUwNjlEIC8qIEluc3BlY3Rv
ckNTU0FnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckNT
U0FnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgyQUIxNzZGMTI1QzgyNjcw
MEM1MDY5RCAvKiBJbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvclN0eWxlU2hlZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTQxMDEsNiArMTQxMDMsNyBAQAogCQkJCUE3Q0E1OTYyMEIyN0MxRjIw
MEZBMDIxRCAvKiBEcmFnQ2xpZW50LmggKi8sCiAJCQkJQTdDQTU5NUMwQjI3QkQ5RTAwRkEwMjFE
IC8qIERyYWdDb250cm9sbGVyLmNwcCAqLywKIAkJCQlBN0NBNTk1QjBCMjdCRDlFMDBGQTAyMUQg
LyogRHJhZ0NvbnRyb2xsZXIuaCAqLywKKwkJCQk4MUY2NUZGNTEzNzg4RkFBMDBGRjZGMkQgLyog
RHJhZ1N0YXRlLmggKi8sCiAJCQkJMUFGMzI2NzcwRDc4Qjk0NDAwNjhGMEM0IC8qIEVkaXRvckNs
aWVudC5oICovLAogCQkJCTkzQzA5QTgwMEIwNjRGMDAwMDVBQkQ0RCAvKiBFdmVudEhhbmRsZXIu
Y3BwICovLAogCQkJCTkzQzA5QTUyMEIwNjREQjMwMDVBQkQ0RCAvKiBFdmVudEhhbmRsZXIuaCAq
LywKQEAgLTIwNzgwLDYgKzIwNzgzLDcgQEAKIAkJCQlBN0NBNTk1RDBCMjdCRDlFMDBGQTAyMUQg
LyogRHJhZ0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QjZFNjlGMEIyOTFBOTYw
MEQwNTI5RiAvKiBEcmFnRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdDRkIzRDIwQjdFRDEw
QTAwNzBDMzJEIC8qIERyYWdJbWFnZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJODFGNjVGRjYxMzc4
OEZBQTAwRkY2RjJEIC8qIERyYWdTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDk4NzcwREMx
MjQyQzUzNTAwMjIyNkJBIC8qIERyYXdpbmdCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
N0ZBNjIxMEQxRjBDQkQwMERCMjJBOSAvKiBEeW5hbWljTm9kZUxpc3QuaCBpbiBIZWFkZXJzICov
LAogCQkJCTkzMzA5REUyMDk5RTY0OTIwMDU2RTU4MSAvKiBFZGl0QWN0aW9uLmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggYTY1NWUyZGVl
NDExZWFlMTliZDhmZTUyMzllMTI0MTQ3MjYyOWEyYi4uOTNhOTNjN2E0ZDU2MmU0NWYwNjg4NDkz
M2RjNzM4N2JmMmU1ZTU3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAK
QEAgLTU2OSw3ICs1NjksNDMgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6dHJ5REhUTUxEcmFnKERy
YWdEYXRhKiBkcmFnRGF0YSwgRHJhZ09wZXJhdGlvbiYgb3BlcmF0aW9uKQogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIERyYWdDb250cm9sbGVyOjptYXlTdGFydERyYWdBdEV2ZW50TG9jYXRp
b24oY29uc3QgRnJhbWUqIGZyYW1lLCBjb25zdCBJbnRQb2ludCYgZnJhbWVQb3MsIE5vZGUqIG5v
ZGUpCitOb2RlKiBEcmFnQ29udHJvbGxlcjo6ZHJhZ2dhYmxlTm9kZShjb25zdCBGcmFtZSogc3Jj
LCBOb2RlKiBub2RlLCBib29sIGRodG1sT0ssIGJvb2wgdWFPSywgaW50IHgsIGludCB5LCBib29s
JiBkaHRtbFdpbGxEcmFnKSBjb25zdAoreworICAgIGlmICghZGh0bWxPSyAmJiAhdWFPSykKKyAg
ICAgICAgcmV0dXJuIDA7CisKKyAgICBmb3IgKDsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE5v
ZGUoKSkgeworICAgICAgICBpZiAobm9kZSAmJiBub2RlLT5ub2RlVHlwZSgpID09IE5vZGU6OlRF
WFRfTk9ERSkgeworICAgICAgICAgICAgLy8gU2luY2UgdGhlcmUncyBubyB3YXkgZm9yIHRoZSBh
dXRob3IgdG8gYWRkcmVzcyB0aGUgLXdlYmtpdC11c2VyLWRyYWcgc3R5bGUgZm9yIGEgdGV4dCBu
b2RlLAorICAgICAgICAgICAgLy8gd2UgdXNlIG91ciBvd24ganVkZ2VtZW50LgorICAgICAgICAg
ICAgaWYgKHVhT0sgJiYgbWF5U3RhcnREcmFnQXRFdmVudExvY2F0aW9uKHNyYywgSW50UG9pbnQo
eCwgeSksIG5vZGUpKSB7CisgICAgICAgICAgICAgICAgZGh0bWxXaWxsRHJhZyA9IGZhbHNlOwor
ICAgICAgICAgICAgICAgIHJldHVybiBub2RlOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
aWYgKG5vZGUtPmNhblN0YXJ0U2VsZWN0aW9uKCkpCisgICAgICAgICAgICAgICAgLy8gSW4gdGhp
cyBjYXNlIHdlIGhhdmUgYSBjbGljayBpbiB0aGUgdW5zZWxlY3RlZCBwb3J0aW9uIG9mIHRleHQu
IElmIHRoaXMgdGV4dCBpcworICAgICAgICAgICAgICAgIC8vIHNlbGVjdGFibGUsIHdlIHdhbnQg
dG8gc3RhcnQgdGhlIHNlbGVjdGlvbiBwcm9jZXNzIGluc3RlYWQgb2YgbG9va2luZyBmb3IgYSBw
YXJlbnQKKyAgICAgICAgICAgICAgICAvLyB0byB0cnkgdG8gZHJhZy4KKyAgICAgICAgICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmICghbm9kZS0+cmVu
ZGVyZXIoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIEVVc2VyRHJh
ZyBkcmFnTW9kZSA9IG5vZGUtPnJlbmRlcmVyKCktPnN0eWxlKCktPnVzZXJEcmFnKCk7CisgICAg
ICAgICAgICBpZiAoZGh0bWxPSyAmJiBkcmFnTW9kZSA9PSBEUkFHX0VMRU1FTlQpIHsKKyAgICAg
ICAgICAgICAgICBkaHRtbFdpbGxEcmFnID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
bm9kZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh1YU9LICYmIGRyYWdNb2RlID09
IERSQUdfQVVUTworICAgICAgICAgICAgICAgICAgICAmJiBtYXlTdGFydERyYWdBdEV2ZW50TG9j
YXRpb24oc3JjLCBJbnRQb2ludCh4LCB5KSwgbm9kZSkpIHsKKyAgICAgICAgICAgICAgICBkaHRt
bFdpbGxEcmFnID0gZmFsc2U7CisgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGU7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK2Jvb2wgRHJhZ0Nv
bnRyb2xsZXI6Om1heVN0YXJ0RHJhZ0F0RXZlbnRMb2NhdGlvbihjb25zdCBGcmFtZSogZnJhbWUs
IGNvbnN0IEludFBvaW50JiBmcmFtZVBvcywgTm9kZSogbm9kZSkgY29uc3QKIHsKICAgICBBU1NF
UlQoZnJhbWUpOwogICAgIEFTU0VSVChmcmFtZS0+c2V0dGluZ3MoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RyYWdDb250cm9sbGVyLmgKaW5kZXggYmUxZTQ1Njk1YzY2YTg1Mzg5ZDViY2VjMzg3NTY0Y2Q0
N2Y2MjFmMi4uYmU4YzgzNGFlZTYxNTY5YmRlMjFjOGI5MGZhZTljMDRmYTM1YTBiYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaApAQCAtNzUsNyArNzUsOCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIERyYWdEZXN0aW5hdGlvbkFjdGlvbiBkcmFnRGVzdGluYXRpb25B
Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2RyYWdEZXN0aW5hdGlvbkFjdGlvbjsgfQogICAgICAg
ICBEcmFnU291cmNlQWN0aW9uIGRlbGVnYXRlRHJhZ1NvdXJjZUFjdGlvbihjb25zdCBJbnRQb2lu
dCYgcGFnZVBvaW50KTsKICAgICAgICAgCi0gICAgICAgIGJvb2wgbWF5U3RhcnREcmFnQXRFdmVu
dExvY2F0aW9uKGNvbnN0IEZyYW1lKiwgY29uc3QgSW50UG9pbnQmIGZyYW1lUG9zLCBOb2RlKik7
CisgICAgICAgIE5vZGUqIGRyYWdnYWJsZU5vZGUoY29uc3QgRnJhbWUqLCBOb2RlKiwgYm9vbCBk
aHRtbE9LLCBib29sIHVhT0ssIGludCB4LCBpbnQgeSwgYm9vbCYgZGh0bWxXaWxsRHJhZykgY29u
c3Q7CisgICAgICAgIGJvb2wgbWF5U3RhcnREcmFnQXRFdmVudExvY2F0aW9uKGNvbnN0IEZyYW1l
KiwgY29uc3QgSW50UG9pbnQmIGZyYW1lUG9zLCBOb2RlKikgY29uc3Q7CiAgICAgICAgIHZvaWQg
ZHJhZ0VuZGVkKCk7CiAgICAgICAgIAogICAgICAgICB2b2lkIHBsYWNlRHJhZ0NhcmV0KGNvbnN0
IEludFBvaW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdTdGF0ZS5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnU3RhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YjFmNjc1NmUz
ZDIxZTc3ZmIxOWIwYjk4N2IyNDAzMWQ3MGVkMGZhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9EcmFnU3RhdGUuaApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgRHJhZ1N0YXRlX2gKKyNk
ZWZpbmUgRHJhZ1N0YXRlX2gKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBEcmFnU3RhdGUg
eworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERyYWdTdGF0ZSk7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgRHJhZ1N0YXRlKCkgeyB9CisgICAgUmVmUHRyPE5v
ZGU+IG1fZHJhZ1NyYzsgLy8gZWxlbWVudCB0aGF0IG1heSBiZSBhIGRyYWcgc291cmNlLCBmb3Ig
dGhlIGN1cnJlbnQgbW91c2UgZ2VzdHVyZQorICAgIGJvb2wgbV9kcmFnU3JjSXNMaW5rOworICAg
IGJvb2wgbV9kcmFnU3JjSXNJbWFnZTsKKyAgICBib29sIG1fZHJhZ1NyY0luU2VsZWN0aW9uOwor
ICAgIGJvb2wgbV9kcmFnU3JjTWF5QmVESFRNTDsKKyAgICBib29sIG1fZHJhZ1NyY01heUJlVUE7
IC8vIEFyZSBESFRNTCBhbmQvb3IgdGhlIFVzZXJBZ2VudCBhbGxvd2VkIHRvIGRyYWcgb3V0Pwor
ICAgIGJvb2wgbV9kcmFnU3JjSXNESFRNTDsKKyAgICBSZWZQdHI8Q2xpcGJvYXJkPiBtX2RyYWdD
bGlwYm9hcmQ7IC8vIHVzZWQgb24gb25seSB0aGUgc291cmNlIHNpZGUgb2YgZHJhZ2dpbmcKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIERyYWdTdGF0ZV9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggYTcxMmI3YzY4MTUwZDhlODJmOWQ2MDIz
NmJjOGY1NmY0NmExNTA0Zi4uZTRmYTNiZTE0MjA2NWUxZTI2NzUxZGQxOWIxMDA5YTYwNTcwZDE4
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMzUsNiArMzUsNyBAQAog
I2luY2x1ZGUgIkN1cnNvckxpc3QuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUg
IkRyYWdDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiRHJhZ1N0YXRlLmgiCiAjaW5jbHVkZSAiRWRp
dG9yLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkV2ZW50UXVldWUuaCIK
QEAgLTIxNyw5ICsyMTgsOSBAQCBFdmVudEhhbmRsZXI6On5FdmVudEhhbmRsZXIoKQogfQogICAg
IAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi1FdmVudEhhbmRsZXI6OkV2ZW50SGFuZGxlckRy
YWdTdGF0ZSYgRXZlbnRIYW5kbGVyOjpkcmFnU3RhdGUoKQorRHJhZ1N0YXRlJiBFdmVudEhhbmRs
ZXI6OmRyYWdTdGF0ZSgpCiB7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChFdmVudEhhbmRsZXJE
cmFnU3RhdGUsIHN0YXRlLCAoKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChEcmFnU3RhdGUs
IHN0YXRlLCAoKSk7CiAgICAgcmV0dXJuIHN0YXRlOwogfQogI2VuZGlmIC8vIEVOQUJMRShEUkFH
X1NVUFBPUlQpCkBAIC01OTUsMTEgKzU5NiwxNSBAQCBib29sIEV2ZW50SGFuZGxlcjo6ZXZlbnRN
YXlTdGFydERyYWcoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkgY29uc3QKICAgICBp
ZiAoIXZpZXcpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIFBhZ2UqIHBhZ2UgPSBtX2Zy
YW1lLT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAg
ICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSk7CiAgICAg
SGl0VGVzdFJlc3VsdCByZXN1bHQodmlldy0+d2luZG93VG9Db250ZW50cyhldmVudC5wb3MoKSkp
OwogICAgIG1fZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpLT5sYXllcigpLT5oaXRUZXN0KHJlcXVl
c3QsIHJlc3VsdCk7CiAgICAgYm9vbCBzcmNJc0RIVE1MOwotICAgIHJldHVybiByZXN1bHQuaW5u
ZXJOb2RlKCkgJiYgcmVzdWx0LmlubmVyTm9kZSgpLT5yZW5kZXJlcigpLT5kcmFnZ2FibGVOb2Rl
KERIVE1MRmxhZywgVUFGbGFnLCByZXN1bHQucG9pbnQoKS54KCksIHJlc3VsdC5wb2ludCgpLnko
KSwgc3JjSXNESFRNTCk7CisgICAgcmV0dXJuIHJlc3VsdC5pbm5lck5vZGUoKSAmJiBwYWdlLT5k
cmFnQ29udHJvbGxlcigpLT5kcmFnZ2FibGVOb2RlKG1fZnJhbWUsIHJlc3VsdC5pbm5lck5vZGUo
KSwgREhUTUxGbGFnLCBVQUZsYWcsIHJlc3VsdC5wb2ludCgpLngoKSwgcmVzdWx0LnBvaW50KCku
eSgpLCBzcmNJc0RIVE1MKTsKIH0KIAogdm9pZCBFdmVudEhhbmRsZXI6OnVwZGF0ZVNlbGVjdGlv
bkZvck1vdXNlRHJhZygpCkBAIC0yNjk1LDkgKzI3MDAsOSBAQCBib29sIEV2ZW50SGFuZGxlcjo6
aGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCkKICAg
ICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQobV9tb3VzZURvd25Qb3MpOwogICAgICAgICBtX2Zy
YW1lLT5jb250ZW50UmVuZGVyZXIoKS0+bGF5ZXIoKS0+aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQp
OwogICAgICAgICBOb2RlKiBub2RlID0gcmVzdWx0LmlubmVyTm9kZSgpOwotICAgICAgICBpZiAo
bm9kZSAmJiBub2RlLT5yZW5kZXJlcigpKQotICAgICAgICAgICAgZHJhZ1N0YXRlKCkubV9kcmFn
U3JjID0gbm9kZS0+cmVuZGVyZXIoKS0+ZHJhZ2dhYmxlTm9kZShkcmFnU3RhdGUoKS5tX2RyYWdT
cmNNYXlCZURIVE1MLCBkcmFnU3RhdGUoKS5tX2RyYWdTcmNNYXlCZVVBLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
X21vdXNlRG93blBvcy54KCksIG1fbW91c2VEb3duUG9zLnkoKSwgZHJhZ1N0YXRlKCkubV9kcmFn
U3JjSXNESFRNTCk7CisgICAgICAgIGlmIChub2RlICYmIG1fZnJhbWUtPnBhZ2UoKSkKKyAgICAg
ICAgICAgIGRyYWdTdGF0ZSgpLm1fZHJhZ1NyYyA9IG1fZnJhbWUtPnBhZ2UoKS0+ZHJhZ0NvbnRy
b2xsZXIoKS0+ZHJhZ2dhYmxlTm9kZShtX2ZyYW1lLCBub2RlLCBkcmFnU3RhdGUoKS5tX2RyYWdT
cmNNYXlCZURIVE1MLCBkcmFnU3RhdGUoKS5tX2RyYWdTcmNNYXlCZVVBLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1fbW91c2VEb3duUG9zLngoKSwgbV9tb3VzZURvd25Qb3MueSgpLCBk
cmFnU3RhdGUoKS5tX2RyYWdTcmNJc0RIVE1MKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ZHJhZ1N0YXRlKCkubV9kcmFnU3JjID0gMDsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuaAppbmRleCAyYmVmYWYzNTU4NGM1MDUzNDZmNDI4MmFlYzA0NjUyYjIwMzYyMTJhLi5i
MmQ1MzhiN2FjOTMyNWQ1ODQ4NzdjMzEzMDExZTAwOGYxZDJiYTg5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRIYW5kbGVyLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBDbGlwYm9hcmQ7CiBjbGFzcyBDdXJzb3I7CitjbGFzcyBEcmFnU3RhdGU7CiBjbGFzcyBF
dmVudDsKIGNsYXNzIEV2ZW50VGFyZ2V0OwogY2xhc3MgRmxvYXRQb2ludDsKQEAgLTIyMywyMCAr
MjI0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgUGVyZm9ybURyYWdBbmREcm9wCiAgICAgfTsKIAot
ICAgIHN0cnVjdCBFdmVudEhhbmRsZXJEcmFnU3RhdGUgewotICAgICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShFdmVudEhhbmRsZXJEcmFnU3RhdGUpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
LSAgICBwdWJsaWM6Ci0gICAgICAgIEV2ZW50SGFuZGxlckRyYWdTdGF0ZSgpIHsgfQotICAgICAg
ICBSZWZQdHI8Tm9kZT4gbV9kcmFnU3JjOyAvLyBlbGVtZW50IHRoYXQgbWF5IGJlIGEgZHJhZyBz
b3VyY2UsIGZvciB0aGUgY3VycmVudCBtb3VzZSBnZXN0dXJlCi0gICAgICAgIGJvb2wgbV9kcmFn
U3JjSXNMaW5rOwotICAgICAgICBib29sIG1fZHJhZ1NyY0lzSW1hZ2U7Ci0gICAgICAgIGJvb2wg
bV9kcmFnU3JjSW5TZWxlY3Rpb247Ci0gICAgICAgIGJvb2wgbV9kcmFnU3JjTWF5QmVESFRNTDsK
LSAgICAgICAgYm9vbCBtX2RyYWdTcmNNYXlCZVVBOyAvLyBBcmUgREhUTUwgYW5kL29yIHRoZSBV
c2VyQWdlbnQgYWxsb3dlZCB0byBkcmFnIG91dD8KLSAgICAgICAgYm9vbCBtX2RyYWdTcmNJc0RI
VE1MOwotICAgICAgICBSZWZQdHI8Q2xpcGJvYXJkPiBtX2RyYWdDbGlwYm9hcmQ7IC8vIHVzZWQg
b24gb25seSB0aGUgc291cmNlIHNpZGUgb2YgZHJhZ2dpbmcKLSAgICB9OwotICAgIHN0YXRpYyBF
dmVudEhhbmRsZXJEcmFnU3RhdGUmIGRyYWdTdGF0ZSgpOworICAgIHN0YXRpYyBEcmFnU3RhdGUm
IGRyYWdTdGF0ZSgpOwogICAgIHN0YXRpYyBjb25zdCBkb3VibGUgVGV4dERyYWdEZWxheTsKIAog
ICAgIGJvb2wgY2FuSGFuZGxlRHJhZ0FuZERyb3BGb3JUYXJnZXQoRHJhZ0FuZERyb3BIYW5kbGVU
eXBlLCBOb2RlKiB0YXJnZXQsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIENsaXBib2FyZCos
IGJvb2wqIGFjY2VwdGVkID0gMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuY3BwCmluZGV4IDhkNmU0MzgzMjA1ZDQ3OWViZTUyYjg4NTRmYTIwNDkzYWFjMTdlNjUuLjBk
NDk4NTY1ZjliOTYzMDMwMmVhNTBkNTZhMjZkMDAzNjNjMmM1ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC0xNDk4LDQzICsxNDk4LDYgQEAgQ29sb3Ig
UmVuZGVyT2JqZWN0OjpzZWxlY3Rpb25FbXBoYXNpc01hcmtDb2xvcigpIGNvbnN0CiAgICAgcmV0
dXJuIHNlbGVjdGlvbkNvbG9yKENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzQ29sb3IpOwog
fQogCi0jaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKLU5vZGUqIFJlbmRlck9iamVjdDo6ZHJhZ2dh
YmxlTm9kZShib29sIGRodG1sT0ssIGJvb2wgdWFPSywgaW50IHgsIGludCB5LCBib29sJiBkaHRt
bFdpbGxEcmFnKSBjb25zdAotewotICAgIGlmICghZGh0bWxPSyAmJiAhdWFPSykKLSAgICAgICAg
cmV0dXJuIDA7Ci0KLSAgICBmb3IgKGNvbnN0IFJlbmRlck9iamVjdCogY3VyciA9IHRoaXM7IGN1
cnI7IGN1cnIgPSBjdXJyLT5wYXJlbnQoKSkgewotICAgICAgICBOb2RlKiBlbHQgPSBjdXJyLT5u
b2RlKCk7Ci0gICAgICAgIGlmIChlbHQgJiYgZWx0LT5ub2RlVHlwZSgpID09IE5vZGU6OlRFWFRf
Tk9ERSkgewotICAgICAgICAgICAgLy8gU2luY2UgdGhlcmUncyBubyB3YXkgZm9yIHRoZSBhdXRo
b3IgdG8gYWRkcmVzcyB0aGUgLXdlYmtpdC11c2VyLWRyYWcgc3R5bGUgZm9yIGEgdGV4dCBub2Rl
LAotICAgICAgICAgICAgLy8gd2UgdXNlIG91ciBvd24ganVkZ2VtZW50LgotICAgICAgICAgICAg
aWYgKHVhT0sgJiYgdmlldygpLT5mcmFtZVZpZXcoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCkt
PnNob3VsZERyYWdBdXRvTm9kZShjdXJyLT5ub2RlKCksIEludFBvaW50KHgsIHkpKSkgewotICAg
ICAgICAgICAgICAgIGRodG1sV2lsbERyYWcgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICByZXR1
cm4gY3Vyci0+bm9kZSgpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGVsdC0+Y2Fu
U3RhcnRTZWxlY3Rpb24oKSkKLSAgICAgICAgICAgICAgICAvLyBJbiB0aGlzIGNhc2Ugd2UgaGF2
ZSBhIGNsaWNrIGluIHRoZSB1bnNlbGVjdGVkIHBvcnRpb24gb2YgdGV4dC4gIElmIHRoaXMgdGV4
dCBpcwotICAgICAgICAgICAgICAgIC8vIHNlbGVjdGFibGUsIHdlIHdhbnQgdG8gc3RhcnQgdGhl
IHNlbGVjdGlvbiBwcm9jZXNzIGluc3RlYWQgb2YgbG9va2luZyBmb3IgYSBwYXJlbnQKLSAgICAg
ICAgICAgICAgICAvLyB0byB0cnkgdG8gZHJhZy4KLSAgICAgICAgICAgICAgICByZXR1cm4gMDsK
LSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIEVVc2VyRHJhZyBkcmFnTW9kZSA9IGN1cnIt
PnN0eWxlKCktPnVzZXJEcmFnKCk7Ci0gICAgICAgICAgICBpZiAoZGh0bWxPSyAmJiBkcmFnTW9k
ZSA9PSBEUkFHX0VMRU1FTlQpIHsKLSAgICAgICAgICAgICAgICBkaHRtbFdpbGxEcmFnID0gdHJ1
ZTsKLSAgICAgICAgICAgICAgICByZXR1cm4gY3Vyci0+bm9kZSgpOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgaWYgKHVhT0sgJiYgZHJhZ01vZGUgPT0gRFJBR19BVVRPCi0gICAgICAgICAg
ICAgICAgICAgICYmIHZpZXcoKS0+ZnJhbWVWaWV3KCktPmZyYW1lKCktPmV2ZW50SGFuZGxlcigp
LT5zaG91bGREcmFnQXV0b05vZGUoY3Vyci0+bm9kZSgpLCBJbnRQb2ludCh4LCB5KSkpIHsKLSAg
ICAgICAgICAgICAgICBkaHRtbFdpbGxEcmFnID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIGN1cnItPm5vZGUoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICBy
ZXR1cm4gMDsKLX0KLSNlbmRpZiAvLyBFTkFCTEUoRFJBR19TVVBQT1JUKQotCiB2b2lkIFJlbmRl
ck9iamVjdDo6c2VsZWN0aW9uU3RhcnRFbmQoaW50JiBzcG9zLCBpbnQmIGVwb3MpIGNvbnN0CiB7
CiAgICAgdmlldygpLT5zZWxlY3Rpb25TdGFydEVuZChzcG9zLCBlcG9zKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAppbmRleCBiMmYxYmRkZWM2Mzc3YThmMDlhMDkwMDIw
OTY0ZDdjMDI4NzdiMzU4Li44ZmM4ZWNlMThhMTg1YTkxZGZlYmQ3M2RmNDc3Mzg2YmNkYjRhZTdj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC03MTQsMTAgKzcx
NCw2IEBAIHB1YmxpYzoKICAgICAvLyBXaGV0aGVyIG9yIG5vdCBhIGdpdmVuIGJsb2NrIG5lZWRz
IHRvIHBhaW50IHNlbGVjdGlvbiBnYXBzLgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRQYWludFNl
bGVjdGlvbkdhcHMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCi0jaWYgRU5BQkxFKERSQUdf
U1VQUE9SVCkKLSAgICBOb2RlKiBkcmFnZ2FibGVOb2RlKGJvb2wgZGh0bWxPSywgYm9vbCB1YU9L
LCBpbnQgeCwgaW50IHksIGJvb2wmIGRodG1sV2lsbERyYWcpIGNvbnN0OwotI2VuZGlmCi0KICAg
ICAvKioKICAgICAgKiBSZXR1cm5zIHRoZSBsb2NhbCBjb29yZGluYXRlcyBvZiB0aGUgY2FyZXQg
d2l0aGluIHRoaXMgcmVuZGVyIG9iamVjdC4KICAgICAgKiBAcGFyYW0gY2FyZXRPZmZzZXQgemVy
by1iYXNlZCBvZmZzZXQgZGV0ZXJtaW5pbmcgcG9zaXRpb24gd2l0aGluIHRoZSByZW5kZXIgb2Jq
ZWN0Lgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92852</attachid>
            <date>2011-05-09 14:36:14 -0700</date>
            <delta_ts>2011-05-09 17:50:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60503-20110509143613.patch</filename>
            <type>text/plain</type>
            <size>20527</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODYwNDQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1NTZkOTJlZTQ0ZDRiODNj
ZDQ4N2IwNDAxNTdlMTc4MzZlYmMwZTI4Li5hMWI1ODhiNzI3ZGJmZDhiNDE3YTJjMzY5ODg0MmJj
ZTY4NTkwMTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTEtMDUtMDkgIERhbmll
bCBDaGVuZyAgPGRjaGVuZ0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3IgUmVuZGVyT2JqZWN0OjpkcmFnZ2FibGVO
b2RlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjA1
MDMKKworICAgICAgICBUaGlzIHBhdGNoIGxheXMgdGhlIGdyb3VuZCBmb3IgcmVmYWN0b3Jpbmcg
dGhlIGRyYWcgc3RhcnQgbG9naWMuIEl0IG1vdmVzIGRyYWdnYWJsZU5vZGUgdG8KKyAgICAgICAg
RHJhZ0NvbnRyb2xsZXIgdG8gYXZvaWQgdGhlIGF3a3dhcmQgcGx1bWJpbmcgb2YgY2FsbGluZyBE
cmFnQ29udHJvbGxlciBmcm9tIFJlbmRlck9iamVjdCBhbmQKKyAgICAgICAgYWxzbyBtb3ZlcyBF
dmVudEhhbmRsZXJEcmFnU3RhdGUgb3V0IGZyb20gRXZlbnRIYW5kbGVyIHNvIGl0IGNhbiBiZSBz
aGFyZWQgYmV0d2VlbgorICAgICAgICBFdmVudEhhbmRsZXIgYW5kIERyYWdDb250cm9sbGVyIHdo
ZXJlIGFwcHJvcHJpYXRlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBzaW5jZSB0aGVyZSBzaG91
bGQgYmUgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5h
bToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAg
ICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRyYWdnYWJsZU5vZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6Om1heVN0YXJ0RHJhZ0F0RXZlbnRMb2Nh
dGlvbik6CisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5oOgorICAgICAgICAqIHBhZ2Uv
RHJhZ1N0YXRlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RHJhZ1N0YXRlOjpEcmFnU3Rh
dGUpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkV2ZW50SGFuZGxlcjo6ZHJhZ1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxl
cjo6ZXZlbnRNYXlTdGFydERyYWcpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpo
YW5kbGVEcmFnKToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuaDoKKwogMjAxMS0wNS0wOSAgTHVrZSBNYWNwaGVyc29uICAgPG1hY3BoZXJzb25AY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0KaW5kZXggNGRkNzY1NTE3MTE5OTFkZWFmYzAzZTlkZDI4YTQ5OTQyODQ3
NTIxZS4uYTA1MzY4MTA3ZWVjMTM4NDE4NTNlMmM2MTNhZjE4ZGViZmFlZmY2OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0yMTU3LDYgKzIxNTcsNyBAQCB3ZWJjb3JlX3NvdXJj
ZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NsaWVudC5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9EcmFn
Q29udHJvbGxlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdTdGF0ZS5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmggXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCmluZGV4IDlhZmZjNTI3YTZmNThiYzljY2I0MTk4Y2M3OTBlMzZmMWE1Zjdh
YTUuLmRiNGVjMzQ3MTMxNGMxOTFkZjU5MWM5MGYxN2ZiNWU4ZTUzOWM3N2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKQEAgLTY4OCw2ICs2ODgsNyBAQAogICAgICAgICAgICAgJ3BhZ2UvRHJhZ0FjdGlvbnMu
aCcsCiAgICAgICAgICAgICAncGFnZS9EcmFnQ2xpZW50LmgnLAogICAgICAgICAgICAgJ3BhZ2Uv
RHJhZ0NvbnRyb2xsZXIuaCcsCisgICAgICAgICAgICAncGFnZS9EcmFnU3RhdGUuaCcsCiAgICAg
ICAgICAgICAncGFnZS9FZGl0b3JDbGllbnQuaCcsCiAgICAgICAgICAgICAncGFnZS9FdmVudEhh
bmRsZXIuaCcsCiAgICAgICAgICAgICAncGFnZS9Gb2N1c0NvbnRyb2xsZXIuaCcsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
cHJvCmluZGV4IGQ2ZmIyNTE5NGU1ZWViNzU0ZDA2NzFhNzM2MDQwZTRkZDNlMjI0NDguLmIwNGU5
YzgxY2VlZTc3ZjY1M2UyMGYwMmJjYWFmMmU3NWZlMGJlYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0x
ODQwLDYgKzE4NDAsNyBAQCBIRUFERVJTICs9IFwKICAgICBwYWdlL0RPTVRpbWVyLmggXAogICAg
IHBhZ2UvRE9NV2luZG93LmggXAogICAgIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuaCBcCisgICAgcGFn
ZS9EcmFnU3RhdGUuaCBcCiAgICAgcGFnZS9FdmVudEhhbmRsZXIuaCBcCiAgICAgcGFnZS9FdmVu
dFNvdXJjZS5oIFwKICAgICBwYWdlL0VkaXRvckNsaWVudC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggYzMzZjhjMjBmYmNmNTNjMDZjNzNm
YjdmMDFjYmZhY2QwMTEzMTFiYS4uMThjOGNkZDA3MmU1NjkzZWRhMTBiODFjZmY5ZDRiZjEyZmNl
Y2ViZCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oK
QEAgLTI0NDk4LDYgKzI0NDk4LDEwIEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcRHJhZ1N0YXRlLmgiCisJCQkJPgorCQkJPC9GaWxlPgor
CQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2Vcd2luXERyYWdDb250cm9sbGVyV2lu
LmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTJmZDc5YjM2NDVkMzAwN2UxODEyY2NiN2Ni
OGQwMWNkZmU5OGJlZi4uM2I1NWYzY2IxZmFjMjRkYWZhZTM2MTI3MmNiYjE1ZTllOWFjMjRjMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTY3Miw2ICsxNjcyLDcgQEAKIAkJODFCRTIwOTkxMUY0QUI4RDAwOTE1REZBIC8qIElE
QkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDgxQkUyMDk0MTFGNEFCOEQwMDkxNURGQSAvKiBJREJDdXJzb3JCYWNr
ZW5kSW50ZXJmYWNlLmggKi87IH07CiAJCTgxQkUyMEQyMTFGNEJDMzIwMDkxNURGQSAvKiBKU0lE
QkN1cnNvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4MUJFMjBBNzExRjRCNjZGMDA5MTVERkEgLyogSlNJREJDdXJzb3IuY3BwICovOyB9OwogCQk4
MUJFMjBEMzExRjRCQzMyMDA5MTVERkEgLyogSlNJREJDdXJzb3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgxQkUyMEE4MTFGNEI2NkYwMDkxNURGQSAv
KiBKU0lEQkN1cnNvci5oICovOyB9OworCQk4MUY2NUZGNjEzNzg4RkFBMDBGRjZGMkQgLyogRHJh
Z1N0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
MUY2NUZGNTEzNzg4RkFBMDBGRjZGMkQgLyogRHJhZ1N0YXRlLmggKi87IH07CiAJCTgyQUIxNzQz
MTI0Qjk5RUMwMEM1MDY5RCAvKiBJbnNwZWN0b3JDU1NBZ2VudC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MkFCMTc0MTEyNEI5OUVDMDBDNTA2OUQg
LyogSW5zcGVjdG9yQ1NTQWdlbnQuY3BwICovOyB9OwogCQk4MkFCMTc0NDEyNEI5OUVDMDBDNTA2
OUQgLyogSW5zcGVjdG9yQ1NTQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDgyQUIxNzQyMTI0Qjk5RUMwMEM1MDY5RCAvKiBJbnNwZWN0b3JDU1NB
Z2VudC5oICovOyB9OwogCQk4MkFCMTc3MzEyNUM4MjY3MDBDNTA2OUQgLyogSW5zcGVjdG9yU3R5
bGVTaGVldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4MkFCMTc2RjEyNUM4MjY3MDBDNTA2OUQgLyogSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAgKi87
IH07CkBAIC04MjE1LDYgKzgyMTYsNyBAQAogCQk4MUJFMjA5QzExRjRBQkJEMDA5MTVERkEgLyog
SURCQ3Vyc29yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBJREJDdXJzb3IuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MUJFMjBBNzExRjRCNjZGMDA5MTVERkEgLyogSlNJ
REJDdXJzb3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJREJD
dXJzb3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MUJFMjBBODExRjRCNjZG
MDA5MTVERkEgLyogSlNJREJDdXJzb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNJREJDdXJzb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODFGNjVGRjUx
Mzc4OEZBQTAwRkY2RjJEIC8qIERyYWdTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBEcmFnU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODJBQjE3
NDExMjRCOTlFQzAwQzUwNjlEIC8qIEluc3BlY3RvckNTU0FnZW50LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckNTU0FnZW50LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODJBQjE3NDIxMjRCOTlFQzAwQzUwNjlEIC8qIEluc3BlY3Rv
ckNTU0FnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckNT
U0FnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgyQUIxNzZGMTI1QzgyNjcw
MEM1MDY5RCAvKiBJbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvclN0eWxlU2hlZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTQxMDEsNiArMTQxMDMsNyBAQAogCQkJCUE3Q0E1OTYyMEIyN0MxRjIw
MEZBMDIxRCAvKiBEcmFnQ2xpZW50LmggKi8sCiAJCQkJQTdDQTU5NUMwQjI3QkQ5RTAwRkEwMjFE
IC8qIERyYWdDb250cm9sbGVyLmNwcCAqLywKIAkJCQlBN0NBNTk1QjBCMjdCRDlFMDBGQTAyMUQg
LyogRHJhZ0NvbnRyb2xsZXIuaCAqLywKKwkJCQk4MUY2NUZGNTEzNzg4RkFBMDBGRjZGMkQgLyog
RHJhZ1N0YXRlLmggKi8sCiAJCQkJMUFGMzI2NzcwRDc4Qjk0NDAwNjhGMEM0IC8qIEVkaXRvckNs
aWVudC5oICovLAogCQkJCTkzQzA5QTgwMEIwNjRGMDAwMDVBQkQ0RCAvKiBFdmVudEhhbmRsZXIu
Y3BwICovLAogCQkJCTkzQzA5QTUyMEIwNjREQjMwMDVBQkQ0RCAvKiBFdmVudEhhbmRsZXIuaCAq
LywKQEAgLTIwNzgwLDYgKzIwNzgzLDcgQEAKIAkJCQlBN0NBNTk1RDBCMjdCRDlFMDBGQTAyMUQg
LyogRHJhZ0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QjZFNjlGMEIyOTFBOTYw
MEQwNTI5RiAvKiBEcmFnRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdDRkIzRDIwQjdFRDEw
QTAwNzBDMzJEIC8qIERyYWdJbWFnZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJODFGNjVGRjYxMzc4
OEZBQTAwRkY2RjJEIC8qIERyYWdTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDk4NzcwREMx
MjQyQzUzNTAwMjIyNkJBIC8qIERyYXdpbmdCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
N0ZBNjIxMEQxRjBDQkQwMERCMjJBOSAvKiBEeW5hbWljTm9kZUxpc3QuaCBpbiBIZWFkZXJzICov
LAogCQkJCTkzMzA5REUyMDk5RTY0OTIwMDU2RTU4MSAvKiBFZGl0QWN0aW9uLmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggYTY1NWUyZGVl
NDExZWFlMTliZDhmZTUyMzllMTI0MTQ3MjYyOWEyYi4uOTNhOTNjN2E0ZDU2MmU0NWYwNjg4NDkz
M2RjNzM4N2JmMmU1ZTU3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAK
QEAgLTU2OSw3ICs1NjksNDMgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6dHJ5REhUTUxEcmFnKERy
YWdEYXRhKiBkcmFnRGF0YSwgRHJhZ09wZXJhdGlvbiYgb3BlcmF0aW9uKQogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIERyYWdDb250cm9sbGVyOjptYXlTdGFydERyYWdBdEV2ZW50TG9jYXRp
b24oY29uc3QgRnJhbWUqIGZyYW1lLCBjb25zdCBJbnRQb2ludCYgZnJhbWVQb3MsIE5vZGUqIG5v
ZGUpCitOb2RlKiBEcmFnQ29udHJvbGxlcjo6ZHJhZ2dhYmxlTm9kZShjb25zdCBGcmFtZSogc3Jj
LCBOb2RlKiBub2RlLCBib29sIGRodG1sT0ssIGJvb2wgdWFPSywgaW50IHgsIGludCB5LCBib29s
JiBkaHRtbFdpbGxEcmFnKSBjb25zdAoreworICAgIGlmICghZGh0bWxPSyAmJiAhdWFPSykKKyAg
ICAgICAgcmV0dXJuIDA7CisKKyAgICBmb3IgKDsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE5v
ZGUoKSkgeworICAgICAgICBpZiAobm9kZSAmJiBub2RlLT5ub2RlVHlwZSgpID09IE5vZGU6OlRF
WFRfTk9ERSkgeworICAgICAgICAgICAgLy8gU2luY2UgdGhlcmUncyBubyB3YXkgZm9yIHRoZSBh
dXRob3IgdG8gYWRkcmVzcyB0aGUgLXdlYmtpdC11c2VyLWRyYWcgc3R5bGUgZm9yIGEgdGV4dCBu
b2RlLAorICAgICAgICAgICAgLy8gd2UgdXNlIG91ciBvd24ganVkZ2VtZW50LgorICAgICAgICAg
ICAgaWYgKHVhT0sgJiYgbWF5U3RhcnREcmFnQXRFdmVudExvY2F0aW9uKHNyYywgSW50UG9pbnQo
eCwgeSksIG5vZGUpKSB7CisgICAgICAgICAgICAgICAgZGh0bWxXaWxsRHJhZyA9IGZhbHNlOwor
ICAgICAgICAgICAgICAgIHJldHVybiBub2RlOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
aWYgKG5vZGUtPmNhblN0YXJ0U2VsZWN0aW9uKCkpCisgICAgICAgICAgICAgICAgLy8gSW4gdGhp
cyBjYXNlIHdlIGhhdmUgYSBjbGljayBpbiB0aGUgdW5zZWxlY3RlZCBwb3J0aW9uIG9mIHRleHQu
IElmIHRoaXMgdGV4dCBpcworICAgICAgICAgICAgICAgIC8vIHNlbGVjdGFibGUsIHdlIHdhbnQg
dG8gc3RhcnQgdGhlIHNlbGVjdGlvbiBwcm9jZXNzIGluc3RlYWQgb2YgbG9va2luZyBmb3IgYSBw
YXJlbnQKKyAgICAgICAgICAgICAgICAvLyB0byB0cnkgdG8gZHJhZy4KKyAgICAgICAgICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmICghbm9kZS0+cmVu
ZGVyZXIoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIEVVc2VyRHJh
ZyBkcmFnTW9kZSA9IG5vZGUtPnJlbmRlcmVyKCktPnN0eWxlKCktPnVzZXJEcmFnKCk7CisgICAg
ICAgICAgICBpZiAoZGh0bWxPSyAmJiBkcmFnTW9kZSA9PSBEUkFHX0VMRU1FTlQpIHsKKyAgICAg
ICAgICAgICAgICBkaHRtbFdpbGxEcmFnID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
bm9kZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh1YU9LICYmIGRyYWdNb2RlID09
IERSQUdfQVVUTworICAgICAgICAgICAgICAgICAgICAmJiBtYXlTdGFydERyYWdBdEV2ZW50TG9j
YXRpb24oc3JjLCBJbnRQb2ludCh4LCB5KSwgbm9kZSkpIHsKKyAgICAgICAgICAgICAgICBkaHRt
bFdpbGxEcmFnID0gZmFsc2U7CisgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGU7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK2Jvb2wgRHJhZ0Nv
bnRyb2xsZXI6Om1heVN0YXJ0RHJhZ0F0RXZlbnRMb2NhdGlvbihjb25zdCBGcmFtZSogZnJhbWUs
IGNvbnN0IEludFBvaW50JiBmcmFtZVBvcywgTm9kZSogbm9kZSkgY29uc3QKIHsKICAgICBBU1NF
UlQoZnJhbWUpOwogICAgIEFTU0VSVChmcmFtZS0+c2V0dGluZ3MoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RyYWdDb250cm9sbGVyLmgKaW5kZXggYmUxZTQ1Njk1YzY2YTg1Mzg5ZDViY2VjMzg3NTY0Y2Q0
N2Y2MjFmMi4uYmU4YzgzNGFlZTYxNTY5YmRlMjFjOGI5MGZhZTljMDRmYTM1YTBiYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaApAQCAtNzUsNyArNzUsOCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIERyYWdEZXN0aW5hdGlvbkFjdGlvbiBkcmFnRGVzdGluYXRpb25B
Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2RyYWdEZXN0aW5hdGlvbkFjdGlvbjsgfQogICAgICAg
ICBEcmFnU291cmNlQWN0aW9uIGRlbGVnYXRlRHJhZ1NvdXJjZUFjdGlvbihjb25zdCBJbnRQb2lu
dCYgcGFnZVBvaW50KTsKICAgICAgICAgCi0gICAgICAgIGJvb2wgbWF5U3RhcnREcmFnQXRFdmVu
dExvY2F0aW9uKGNvbnN0IEZyYW1lKiwgY29uc3QgSW50UG9pbnQmIGZyYW1lUG9zLCBOb2RlKik7
CisgICAgICAgIE5vZGUqIGRyYWdnYWJsZU5vZGUoY29uc3QgRnJhbWUqLCBOb2RlKiwgYm9vbCBk
aHRtbE9LLCBib29sIHVhT0ssIGludCB4LCBpbnQgeSwgYm9vbCYgZGh0bWxXaWxsRHJhZykgY29u
c3Q7CisgICAgICAgIGJvb2wgbWF5U3RhcnREcmFnQXRFdmVudExvY2F0aW9uKGNvbnN0IEZyYW1l
KiwgY29uc3QgSW50UG9pbnQmIGZyYW1lUG9zLCBOb2RlKikgY29uc3Q7CiAgICAgICAgIHZvaWQg
ZHJhZ0VuZGVkKCk7CiAgICAgICAgIAogICAgICAgICB2b2lkIHBsYWNlRHJhZ0NhcmV0KGNvbnN0
IEludFBvaW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdTdGF0ZS5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnU3RhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YjFmNjc1NmUz
ZDIxZTc3ZmIxOWIwYjk4N2IyNDAzMWQ3MGVkMGZhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9EcmFnU3RhdGUuaApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgRHJhZ1N0YXRlX2gKKyNk
ZWZpbmUgRHJhZ1N0YXRlX2gKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBEcmFnU3RhdGUg
eworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERyYWdTdGF0ZSk7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgRHJhZ1N0YXRlKCkgeyB9CisgICAgUmVmUHRyPE5v
ZGU+IG1fZHJhZ1NyYzsgLy8gZWxlbWVudCB0aGF0IG1heSBiZSBhIGRyYWcgc291cmNlLCBmb3Ig
dGhlIGN1cnJlbnQgbW91c2UgZ2VzdHVyZQorICAgIGJvb2wgbV9kcmFnU3JjSXNMaW5rOworICAg
IGJvb2wgbV9kcmFnU3JjSXNJbWFnZTsKKyAgICBib29sIG1fZHJhZ1NyY0luU2VsZWN0aW9uOwor
ICAgIGJvb2wgbV9kcmFnU3JjTWF5QmVESFRNTDsKKyAgICBib29sIG1fZHJhZ1NyY01heUJlVUE7
IC8vIEFyZSBESFRNTCBhbmQvb3IgdGhlIFVzZXJBZ2VudCBhbGxvd2VkIHRvIGRyYWcgb3V0Pwor
ICAgIGJvb2wgbV9kcmFnU3JjSXNESFRNTDsKKyAgICBSZWZQdHI8Q2xpcGJvYXJkPiBtX2RyYWdD
bGlwYm9hcmQ7IC8vIHVzZWQgb24gb25seSB0aGUgc291cmNlIHNpZGUgb2YgZHJhZ2dpbmcKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIERyYWdTdGF0ZV9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggYTcxMmI3YzY4MTUwZDhlODJmOWQ2MDIz
NmJjOGY1NmY0NmExNTA0Zi4uMjEzZmMzYjg4MDhlMDVmYTdhMTEzM2RhODkzOGI2NmI3NDI4N2Ey
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMzUsNiArMzUsNyBAQAog
I2luY2x1ZGUgIkN1cnNvckxpc3QuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUg
IkRyYWdDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiRHJhZ1N0YXRlLmgiCiAjaW5jbHVkZSAiRWRp
dG9yLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkV2ZW50UXVldWUuaCIK
QEAgLTIxNyw5ICsyMTgsOSBAQCBFdmVudEhhbmRsZXI6On5FdmVudEhhbmRsZXIoKQogfQogICAg
IAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi1FdmVudEhhbmRsZXI6OkV2ZW50SGFuZGxlckRy
YWdTdGF0ZSYgRXZlbnRIYW5kbGVyOjpkcmFnU3RhdGUoKQorRHJhZ1N0YXRlJiBFdmVudEhhbmRs
ZXI6OmRyYWdTdGF0ZSgpCiB7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChFdmVudEhhbmRsZXJE
cmFnU3RhdGUsIHN0YXRlLCAoKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChEcmFnU3RhdGUs
IHN0YXRlLCAoKSk7CiAgICAgcmV0dXJuIHN0YXRlOwogfQogI2VuZGlmIC8vIEVOQUJMRShEUkFH
X1NVUFBPUlQpCkBAIC01OTUsMTEgKzU5NiwxNSBAQCBib29sIEV2ZW50SGFuZGxlcjo6ZXZlbnRN
YXlTdGFydERyYWcoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkgY29uc3QKICAgICBp
ZiAoIXZpZXcpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIFBhZ2UqIHBhZ2UgPSBtX2Zy
YW1lLT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAg
ICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSk7CiAgICAg
SGl0VGVzdFJlc3VsdCByZXN1bHQodmlldy0+d2luZG93VG9Db250ZW50cyhldmVudC5wb3MoKSkp
OwogICAgIG1fZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpLT5sYXllcigpLT5oaXRUZXN0KHJlcXVl
c3QsIHJlc3VsdCk7CiAgICAgYm9vbCBzcmNJc0RIVE1MOwotICAgIHJldHVybiByZXN1bHQuaW5u
ZXJOb2RlKCkgJiYgcmVzdWx0LmlubmVyTm9kZSgpLT5yZW5kZXJlcigpLT5kcmFnZ2FibGVOb2Rl
KERIVE1MRmxhZywgVUFGbGFnLCByZXN1bHQucG9pbnQoKS54KCksIHJlc3VsdC5wb2ludCgpLnko
KSwgc3JjSXNESFRNTCk7CisgICAgcmV0dXJuIHJlc3VsdC5pbm5lck5vZGUoKSAmJiBwYWdlLT5k
cmFnQ29udHJvbGxlcigpLT5kcmFnZ2FibGVOb2RlKG1fZnJhbWUsIHJlc3VsdC5pbm5lck5vZGUo
KSwgREhUTUxGbGFnLCBVQUZsYWcsIHJlc3VsdC5wb2ludCgpLngoKSwgcmVzdWx0LnBvaW50KCku
eSgpLCBzcmNJc0RIVE1MKTsKIH0KIAogdm9pZCBFdmVudEhhbmRsZXI6OnVwZGF0ZVNlbGVjdGlv
bkZvck1vdXNlRHJhZygpCkBAIC0yNjM5LDE0ICsyNjQ0LDYgQEAgdm9pZCBFdmVudEhhbmRsZXI6
OmZyZWVDbGlwYm9hcmQoKQogICAgICAgICBkcmFnU3RhdGUoKS5tX2RyYWdDbGlwYm9hcmQtPnNl
dEFjY2Vzc1BvbGljeShDbGlwYm9hcmROdW1iKTsKIH0KIAotYm9vbCBFdmVudEhhbmRsZXI6OnNo
b3VsZERyYWdBdXRvTm9kZShOb2RlKiBub2RlLCBjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0
Ci17Ci0gICAgaWYgKCFub2RlIHx8ICFtX2ZyYW1lLT52aWV3KCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpOwotICAgIHJldHVybiBwYWdl
ICYmIHBhZ2UtPmRyYWdDb250cm9sbGVyKCktPm1heVN0YXJ0RHJhZ0F0RXZlbnRMb2NhdGlvbiht
X2ZyYW1lLCBwb2ludCwgbm9kZSk7Ci19Ci0KIHZvaWQgRXZlbnRIYW5kbGVyOjpkcmFnU291cmNl
RW5kZWRBdChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBEcmFnT3BlcmF0aW9uIG9w
ZXJhdGlvbikKIHsKICAgICBpZiAoZHJhZ1N0YXRlKCkubV9kcmFnU3JjICYmIGRyYWdTdGF0ZSgp
Lm1fZHJhZ1NyY01heUJlREhUTUwpIHsKQEAgLTI2OTUsOSArMjY5Miw5IEBAIGJvb2wgRXZlbnRI
YW5kbGVyOjpoYW5kbGVEcmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2
ZW50KQogICAgICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdChtX21vdXNlRG93blBvcyk7CiAgICAg
ICAgIG1fZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpLT5sYXllcigpLT5oaXRUZXN0KHJlcXVlc3Qs
IHJlc3VsdCk7CiAgICAgICAgIE5vZGUqIG5vZGUgPSByZXN1bHQuaW5uZXJOb2RlKCk7Ci0gICAg
ICAgIGlmIChub2RlICYmIG5vZGUtPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICBkcmFnU3RhdGUo
KS5tX2RyYWdTcmMgPSBub2RlLT5yZW5kZXJlcigpLT5kcmFnZ2FibGVOb2RlKGRyYWdTdGF0ZSgp
Lm1fZHJhZ1NyY01heUJlREhUTUwsIGRyYWdTdGF0ZSgpLm1fZHJhZ1NyY01heUJlVUEsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fbW91c2VEb3duUG9zLngoKSwgbV9tb3VzZURvd25Qb3MueSgpLCBkcmFnU3RhdGUo
KS5tX2RyYWdTcmNJc0RIVE1MKTsKKyAgICAgICAgaWYgKG5vZGUgJiYgbV9mcmFtZS0+cGFnZSgp
KQorICAgICAgICAgICAgZHJhZ1N0YXRlKCkubV9kcmFnU3JjID0gbV9mcmFtZS0+cGFnZSgpLT5k
cmFnQ29udHJvbGxlcigpLT5kcmFnZ2FibGVOb2RlKG1fZnJhbWUsIG5vZGUsIGRyYWdTdGF0ZSgp
Lm1fZHJhZ1NyY01heUJlREhUTUwsIGRyYWdTdGF0ZSgpLm1fZHJhZ1NyY01heUJlVUEsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbV9tb3VzZURvd25Qb3MueCgpLCBtX21vdXNlRG93blBv
cy55KCksIGRyYWdTdGF0ZSgpLm1fZHJhZ1NyY0lzREhUTUwpOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBkcmFnU3RhdGUoKS5tX2RyYWdTcmMgPSAwOwogICAgICAgICAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5oCmluZGV4IDJiZWZhZjM1NTg0YzUwNTM0NmY0MjgyYWVjMDQ2NTJiMjAz
NjIxMmEuLjBjOTVmYWZlMGQ0ZTQzMzBmZTU4YTg3MDkwZjllMzY1ZDhmZjIyYzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuaApAQCAtNDksNiArNDksNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIENsaXBib2FyZDsKIGNsYXNzIEN1cnNvcjsKK2NsYXNzIERyYWdTdGF0ZTsK
IGNsYXNzIEV2ZW50OwogY2xhc3MgRXZlbnRUYXJnZXQ7CiBjbGFzcyBGbG9hdFBvaW50OwpAQCAt
MTQ1LDEwICsxNDYsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBzY3JvbGxSZWN1cnNpdmVseShTY3Jv
bGxEaXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5LCBOb2RlKiBzdGFydGluZ05vZGUgPSAwKTsK
ICAgICBib29sIGxvZ2ljYWxTY3JvbGxSZWN1cnNpdmVseShTY3JvbGxMb2dpY2FsRGlyZWN0aW9u
LCBTY3JvbGxHcmFudWxhcml0eSwgTm9kZSogc3RhcnRpbmdOb2RlID0gMCk7CiAKLSNpZiBFTkFC
TEUoRFJBR19TVVBQT1JUKQotICAgIGJvb2wgc2hvdWxkRHJhZ0F1dG9Ob2RlKE5vZGUqLCBjb25z
dCBJbnRQb2ludCYpIGNvbnN0OyAvLyAtd2Via2l0LXVzZXItZHJhZyA9PSBhdXRvCi0jZW5kaWYK
LQogICAgIGJvb2wgdGFic1RvTGlua3MoS2V5Ym9hcmRFdmVudCopIGNvbnN0OwogICAgIGJvb2wg
dGFic1RvQWxsRm9ybUNvbnRyb2xzKEtleWJvYXJkRXZlbnQqKSBjb25zdDsKIApAQCAtMjIzLDIw
ICsyMjAsNyBAQCBwcml2YXRlOgogICAgICAgICBQZXJmb3JtRHJhZ0FuZERyb3AKICAgICB9Owog
Ci0gICAgc3RydWN0IEV2ZW50SGFuZGxlckRyYWdTdGF0ZSB7Ci0gICAgICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEV2ZW50SGFuZGxlckRyYWdTdGF0ZSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwotICAgIHB1YmxpYzoKLSAgICAgICAgRXZlbnRIYW5kbGVyRHJhZ1N0YXRlKCkgeyB9Ci0gICAg
ICAgIFJlZlB0cjxOb2RlPiBtX2RyYWdTcmM7IC8vIGVsZW1lbnQgdGhhdCBtYXkgYmUgYSBkcmFn
IHNvdXJjZSwgZm9yIHRoZSBjdXJyZW50IG1vdXNlIGdlc3R1cmUKLSAgICAgICAgYm9vbCBtX2Ry
YWdTcmNJc0xpbms7Ci0gICAgICAgIGJvb2wgbV9kcmFnU3JjSXNJbWFnZTsKLSAgICAgICAgYm9v
bCBtX2RyYWdTcmNJblNlbGVjdGlvbjsKLSAgICAgICAgYm9vbCBtX2RyYWdTcmNNYXlCZURIVE1M
OwotICAgICAgICBib29sIG1fZHJhZ1NyY01heUJlVUE7IC8vIEFyZSBESFRNTCBhbmQvb3IgdGhl
IFVzZXJBZ2VudCBhbGxvd2VkIHRvIGRyYWcgb3V0PwotICAgICAgICBib29sIG1fZHJhZ1NyY0lz
REhUTUw7Ci0gICAgICAgIFJlZlB0cjxDbGlwYm9hcmQ+IG1fZHJhZ0NsaXBib2FyZDsgLy8gdXNl
ZCBvbiBvbmx5IHRoZSBzb3VyY2Ugc2lkZSBvZiBkcmFnZ2luZwotICAgIH07Ci0gICAgc3RhdGlj
IEV2ZW50SGFuZGxlckRyYWdTdGF0ZSYgZHJhZ1N0YXRlKCk7CisgICAgc3RhdGljIERyYWdTdGF0
ZSYgZHJhZ1N0YXRlKCk7CiAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBUZXh0RHJhZ0RlbGF5Owog
CiAgICAgYm9vbCBjYW5IYW5kbGVEcmFnQW5kRHJvcEZvclRhcmdldChEcmFnQW5kRHJvcEhhbmRs
ZVR5cGUsIE5vZGUqIHRhcmdldCwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiwgQ2xpcGJvYXJk
KiwgYm9vbCogYWNjZXB0ZWQgPSAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5jcHAKaW5kZXggOGQ2ZTQzODMyMDVkNDc5ZWJlNTJiODg1NGZhMjA0OTNhYWMxN2U2NS4u
MGQ0OTg1NjVmOWI5NjMwMzAyZWE1MGQ1NmEyNmQwMDM2M2MyYzVkOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTE0OTgsNDMgKzE0OTgsNiBAQCBDb2xv
ciBSZW5kZXJPYmplY3Q6OnNlbGVjdGlvbkVtcGhhc2lzTWFya0NvbG9yKCkgY29uc3QKICAgICBy
ZXR1cm4gc2VsZWN0aW9uQ29sb3IoQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNDb2xvcik7
CiB9CiAKLSNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQotTm9kZSogUmVuZGVyT2JqZWN0OjpkcmFn
Z2FibGVOb2RlKGJvb2wgZGh0bWxPSywgYm9vbCB1YU9LLCBpbnQgeCwgaW50IHksIGJvb2wmIGRo
dG1sV2lsbERyYWcpIGNvbnN0Ci17Ci0gICAgaWYgKCFkaHRtbE9LICYmICF1YU9LKQotICAgICAg
ICByZXR1cm4gMDsKLQotICAgIGZvciAoY29uc3QgUmVuZGVyT2JqZWN0KiBjdXJyID0gdGhpczsg
Y3VycjsgY3VyciA9IGN1cnItPnBhcmVudCgpKSB7Ci0gICAgICAgIE5vZGUqIGVsdCA9IGN1cnIt
Pm5vZGUoKTsKLSAgICAgICAgaWYgKGVsdCAmJiBlbHQtPm5vZGVUeXBlKCkgPT0gTm9kZTo6VEVY
VF9OT0RFKSB7Ci0gICAgICAgICAgICAvLyBTaW5jZSB0aGVyZSdzIG5vIHdheSBmb3IgdGhlIGF1
dGhvciB0byBhZGRyZXNzIHRoZSAtd2Via2l0LXVzZXItZHJhZyBzdHlsZSBmb3IgYSB0ZXh0IG5v
ZGUsCi0gICAgICAgICAgICAvLyB3ZSB1c2Ugb3VyIG93biBqdWRnZW1lbnQuCi0gICAgICAgICAg
ICBpZiAodWFPSyAmJiB2aWV3KCktPmZyYW1lVmlldygpLT5mcmFtZSgpLT5ldmVudEhhbmRsZXIo
KS0+c2hvdWxkRHJhZ0F1dG9Ob2RlKGN1cnItPm5vZGUoKSwgSW50UG9pbnQoeCwgeSkpKSB7Ci0g
ICAgICAgICAgICAgICAgZGh0bWxXaWxsRHJhZyA9IGZhbHNlOwotICAgICAgICAgICAgICAgIHJl
dHVybiBjdXJyLT5ub2RlKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoZWx0LT5j
YW5TdGFydFNlbGVjdGlvbigpKQotICAgICAgICAgICAgICAgIC8vIEluIHRoaXMgY2FzZSB3ZSBo
YXZlIGEgY2xpY2sgaW4gdGhlIHVuc2VsZWN0ZWQgcG9ydGlvbiBvZiB0ZXh0LiAgSWYgdGhpcyB0
ZXh0IGlzCi0gICAgICAgICAgICAgICAgLy8gc2VsZWN0YWJsZSwgd2Ugd2FudCB0byBzdGFydCB0
aGUgc2VsZWN0aW9uIHByb2Nlc3MgaW5zdGVhZCBvZiBsb29raW5nIGZvciBhIHBhcmVudAotICAg
ICAgICAgICAgICAgIC8vIHRvIHRyeSB0byBkcmFnLgotICAgICAgICAgICAgICAgIHJldHVybiAw
OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgRVVzZXJEcmFnIGRyYWdNb2RlID0gY3Vy
ci0+c3R5bGUoKS0+dXNlckRyYWcoKTsKLSAgICAgICAgICAgIGlmIChkaHRtbE9LICYmIGRyYWdN
b2RlID09IERSQUdfRUxFTUVOVCkgewotICAgICAgICAgICAgICAgIGRodG1sV2lsbERyYWcgPSB0
cnVlOwotICAgICAgICAgICAgICAgIHJldHVybiBjdXJyLT5ub2RlKCk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBpZiAodWFPSyAmJiBkcmFnTW9kZSA9PSBEUkFHX0FVVE8KLSAgICAgICAg
ICAgICAgICAgICAgJiYgdmlldygpLT5mcmFtZVZpZXcoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVy
KCktPnNob3VsZERyYWdBdXRvTm9kZShjdXJyLT5ub2RlKCksIEludFBvaW50KHgsIHkpKSkgewot
ICAgICAgICAgICAgICAgIGRodG1sV2lsbERyYWcgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gY3Vyci0+bm9kZSgpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAg
IHJldHVybiAwOwotfQotI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBPUlQpCi0KIHZvaWQgUmVu
ZGVyT2JqZWN0OjpzZWxlY3Rpb25TdGFydEVuZChpbnQmIHNwb3MsIGludCYgZXBvcykgY29uc3QK
IHsKICAgICB2aWV3KCktPnNlbGVjdGlvblN0YXJ0RW5kKHNwb3MsIGVwb3MpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCmluZGV4IGIyZjFiZGRlYzYzNzdhOGYwOWEwOTAw
MjA5NjRkN2MwMjg3N2IzNTguLjhmYzhlY2UxOGExODVhOTFkZmViZDczZGY0NzczODZiY2RiNGFl
N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKQEAgLTcxNCwxMCAr
NzE0LDYgQEAgcHVibGljOgogICAgIC8vIFdoZXRoZXIgb3Igbm90IGEgZ2l2ZW4gYmxvY2sgbmVl
ZHMgdG8gcGFpbnQgc2VsZWN0aW9uIGdhcHMuCiAgICAgdmlydHVhbCBib29sIHNob3VsZFBhaW50
U2VsZWN0aW9uR2FwcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSNpZiBFTkFCTEUoRFJB
R19TVVBQT1JUKQotICAgIE5vZGUqIGRyYWdnYWJsZU5vZGUoYm9vbCBkaHRtbE9LLCBib29sIHVh
T0ssIGludCB4LCBpbnQgeSwgYm9vbCYgZGh0bWxXaWxsRHJhZykgY29uc3Q7Ci0jZW5kaWYKLQog
ICAgIC8qKgogICAgICAqIFJldHVybnMgdGhlIGxvY2FsIGNvb3JkaW5hdGVzIG9mIHRoZSBjYXJl
dCB3aXRoaW4gdGhpcyByZW5kZXIgb2JqZWN0LgogICAgICAqIEBwYXJhbSBjYXJldE9mZnNldCB6
ZXJvLWJhc2VkIG9mZnNldCBkZXRlcm1pbmluZyBwb3NpdGlvbiB3aXRoaW4gdGhlIHJlbmRlciBv
YmplY3QuCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92894</attachid>
            <date>2011-05-09 17:50:38 -0700</date>
            <delta_ts>2011-05-09 19:42:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60503-20110509175037.patch</filename>
            <type>text/plain</type>
            <size>20561</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODYwNDQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1NTZkOTJlZTQ0ZDRiODNj
ZDQ4N2IwNDAxNTdlMTc4MzZlYmMwZTI4Li5hMWI1ODhiNzI3ZGJmZDhiNDE3YTJjMzY5ODg0MmJj
ZTY4NTkwMTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTEtMDUtMDkgIERhbmll
bCBDaGVuZyAgPGRjaGVuZ0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3IgUmVuZGVyT2JqZWN0OjpkcmFnZ2FibGVO
b2RlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjA1
MDMKKworICAgICAgICBUaGlzIHBhdGNoIGxheXMgdGhlIGdyb3VuZCBmb3IgcmVmYWN0b3Jpbmcg
dGhlIGRyYWcgc3RhcnQgbG9naWMuIEl0IG1vdmVzIGRyYWdnYWJsZU5vZGUgdG8KKyAgICAgICAg
RHJhZ0NvbnRyb2xsZXIgdG8gYXZvaWQgdGhlIGF3a3dhcmQgcGx1bWJpbmcgb2YgY2FsbGluZyBE
cmFnQ29udHJvbGxlciBmcm9tIFJlbmRlck9iamVjdCBhbmQKKyAgICAgICAgYWxzbyBtb3ZlcyBF
dmVudEhhbmRsZXJEcmFnU3RhdGUgb3V0IGZyb20gRXZlbnRIYW5kbGVyIHNvIGl0IGNhbiBiZSBz
aGFyZWQgYmV0d2VlbgorICAgICAgICBFdmVudEhhbmRsZXIgYW5kIERyYWdDb250cm9sbGVyIHdo
ZXJlIGFwcHJvcHJpYXRlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBzaW5jZSB0aGVyZSBzaG91
bGQgYmUgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5h
bToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAg
ICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRyYWdnYWJsZU5vZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6Om1heVN0YXJ0RHJhZ0F0RXZlbnRMb2Nh
dGlvbik6CisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5oOgorICAgICAgICAqIHBhZ2Uv
RHJhZ1N0YXRlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RHJhZ1N0YXRlOjpEcmFnU3Rh
dGUpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkV2ZW50SGFuZGxlcjo6ZHJhZ1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxl
cjo6ZXZlbnRNYXlTdGFydERyYWcpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpo
YW5kbGVEcmFnKToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuaDoKKwogMjAxMS0wNS0wOSAgTHVrZSBNYWNwaGVyc29uICAgPG1hY3BoZXJzb25AY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0KaW5kZXggNGRkNzY1NTE3MTE5OTFkZWFmYzAzZTlkZDI4YTQ5OTQyODQ3
NTIxZS4uYTA1MzY4MTA3ZWVjMTM4NDE4NTNlMmM2MTNhZjE4ZGViZmFlZmY2OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0yMTU3LDYgKzIxNTcsNyBAQCB3ZWJjb3JlX3NvdXJj
ZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NsaWVudC5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9EcmFn
Q29udHJvbGxlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdTdGF0ZS5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmggXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCmluZGV4IDlhZmZjNTI3YTZmNThiYzljY2I0MTk4Y2M3OTBlMzZmMWE1Zjdh
YTUuLmRiNGVjMzQ3MTMxNGMxOTFkZjU5MWM5MGYxN2ZiNWU4ZTUzOWM3N2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKQEAgLTY4OCw2ICs2ODgsNyBAQAogICAgICAgICAgICAgJ3BhZ2UvRHJhZ0FjdGlvbnMu
aCcsCiAgICAgICAgICAgICAncGFnZS9EcmFnQ2xpZW50LmgnLAogICAgICAgICAgICAgJ3BhZ2Uv
RHJhZ0NvbnRyb2xsZXIuaCcsCisgICAgICAgICAgICAncGFnZS9EcmFnU3RhdGUuaCcsCiAgICAg
ICAgICAgICAncGFnZS9FZGl0b3JDbGllbnQuaCcsCiAgICAgICAgICAgICAncGFnZS9FdmVudEhh
bmRsZXIuaCcsCiAgICAgICAgICAgICAncGFnZS9Gb2N1c0NvbnRyb2xsZXIuaCcsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
cHJvCmluZGV4IGQ2ZmIyNTE5NGU1ZWViNzU0ZDA2NzFhNzM2MDQwZTRkZDNlMjI0NDguLmIwNGU5
YzgxY2VlZTc3ZjY1M2UyMGYwMmJjYWFmMmU3NWZlMGJlYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0x
ODQwLDYgKzE4NDAsNyBAQCBIRUFERVJTICs9IFwKICAgICBwYWdlL0RPTVRpbWVyLmggXAogICAg
IHBhZ2UvRE9NV2luZG93LmggXAogICAgIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuaCBcCisgICAgcGFn
ZS9EcmFnU3RhdGUuaCBcCiAgICAgcGFnZS9FdmVudEhhbmRsZXIuaCBcCiAgICAgcGFnZS9FdmVu
dFNvdXJjZS5oIFwKICAgICBwYWdlL0VkaXRvckNsaWVudC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggYzMzZjhjMjBmYmNmNTNjMDZjNzNm
YjdmMDFjYmZhY2QwMTEzMTFiYS4uMThjOGNkZDA3MmU1NjkzZWRhMTBiODFjZmY5ZDRiZjEyZmNl
Y2ViZCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oK
QEAgLTI0NDk4LDYgKzI0NDk4LDEwIEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcRHJhZ1N0YXRlLmgiCisJCQkJPgorCQkJPC9GaWxlPgor
CQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2Vcd2luXERyYWdDb250cm9sbGVyV2lu
LmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTJmZDc5YjM2NDVkMzAwN2UxODEyY2NiN2Ni
OGQwMWNkZmU5OGJlZi4uM2I1NWYzY2IxZmFjMjRkYWZhZTM2MTI3MmNiYjE1ZTllOWFjMjRjMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTY3Miw2ICsxNjcyLDcgQEAKIAkJODFCRTIwOTkxMUY0QUI4RDAwOTE1REZBIC8qIElE
QkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDgxQkUyMDk0MTFGNEFCOEQwMDkxNURGQSAvKiBJREJDdXJzb3JCYWNr
ZW5kSW50ZXJmYWNlLmggKi87IH07CiAJCTgxQkUyMEQyMTFGNEJDMzIwMDkxNURGQSAvKiBKU0lE
QkN1cnNvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4MUJFMjBBNzExRjRCNjZGMDA5MTVERkEgLyogSlNJREJDdXJzb3IuY3BwICovOyB9OwogCQk4
MUJFMjBEMzExRjRCQzMyMDA5MTVERkEgLyogSlNJREJDdXJzb3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgxQkUyMEE4MTFGNEI2NkYwMDkxNURGQSAv
KiBKU0lEQkN1cnNvci5oICovOyB9OworCQk4MUY2NUZGNjEzNzg4RkFBMDBGRjZGMkQgLyogRHJh
Z1N0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
MUY2NUZGNTEzNzg4RkFBMDBGRjZGMkQgLyogRHJhZ1N0YXRlLmggKi87IH07CiAJCTgyQUIxNzQz
MTI0Qjk5RUMwMEM1MDY5RCAvKiBJbnNwZWN0b3JDU1NBZ2VudC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MkFCMTc0MTEyNEI5OUVDMDBDNTA2OUQg
LyogSW5zcGVjdG9yQ1NTQWdlbnQuY3BwICovOyB9OwogCQk4MkFCMTc0NDEyNEI5OUVDMDBDNTA2
OUQgLyogSW5zcGVjdG9yQ1NTQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDgyQUIxNzQyMTI0Qjk5RUMwMEM1MDY5RCAvKiBJbnNwZWN0b3JDU1NB
Z2VudC5oICovOyB9OwogCQk4MkFCMTc3MzEyNUM4MjY3MDBDNTA2OUQgLyogSW5zcGVjdG9yU3R5
bGVTaGVldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4MkFCMTc2RjEyNUM4MjY3MDBDNTA2OUQgLyogSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAgKi87
IH07CkBAIC04MjE1LDYgKzgyMTYsNyBAQAogCQk4MUJFMjA5QzExRjRBQkJEMDA5MTVERkEgLyog
SURCQ3Vyc29yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBJREJDdXJzb3IuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MUJFMjBBNzExRjRCNjZGMDA5MTVERkEgLyogSlNJ
REJDdXJzb3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJREJD
dXJzb3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MUJFMjBBODExRjRCNjZG
MDA5MTVERkEgLyogSlNJREJDdXJzb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNJREJDdXJzb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODFGNjVGRjUx
Mzc4OEZBQTAwRkY2RjJEIC8qIERyYWdTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBEcmFnU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODJBQjE3
NDExMjRCOTlFQzAwQzUwNjlEIC8qIEluc3BlY3RvckNTU0FnZW50LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckNTU0FnZW50LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODJBQjE3NDIxMjRCOTlFQzAwQzUwNjlEIC8qIEluc3BlY3Rv
ckNTU0FnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckNT
U0FnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgyQUIxNzZGMTI1QzgyNjcw
MEM1MDY5RCAvKiBJbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvclN0eWxlU2hlZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTQxMDEsNiArMTQxMDMsNyBAQAogCQkJCUE3Q0E1OTYyMEIyN0MxRjIw
MEZBMDIxRCAvKiBEcmFnQ2xpZW50LmggKi8sCiAJCQkJQTdDQTU5NUMwQjI3QkQ5RTAwRkEwMjFE
IC8qIERyYWdDb250cm9sbGVyLmNwcCAqLywKIAkJCQlBN0NBNTk1QjBCMjdCRDlFMDBGQTAyMUQg
LyogRHJhZ0NvbnRyb2xsZXIuaCAqLywKKwkJCQk4MUY2NUZGNTEzNzg4RkFBMDBGRjZGMkQgLyog
RHJhZ1N0YXRlLmggKi8sCiAJCQkJMUFGMzI2NzcwRDc4Qjk0NDAwNjhGMEM0IC8qIEVkaXRvckNs
aWVudC5oICovLAogCQkJCTkzQzA5QTgwMEIwNjRGMDAwMDVBQkQ0RCAvKiBFdmVudEhhbmRsZXIu
Y3BwICovLAogCQkJCTkzQzA5QTUyMEIwNjREQjMwMDVBQkQ0RCAvKiBFdmVudEhhbmRsZXIuaCAq
LywKQEAgLTIwNzgwLDYgKzIwNzgzLDcgQEAKIAkJCQlBN0NBNTk1RDBCMjdCRDlFMDBGQTAyMUQg
LyogRHJhZ0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QjZFNjlGMEIyOTFBOTYw
MEQwNTI5RiAvKiBEcmFnRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdDRkIzRDIwQjdFRDEw
QTAwNzBDMzJEIC8qIERyYWdJbWFnZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJODFGNjVGRjYxMzc4
OEZBQTAwRkY2RjJEIC8qIERyYWdTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDk4NzcwREMx
MjQyQzUzNTAwMjIyNkJBIC8qIERyYXdpbmdCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
N0ZBNjIxMEQxRjBDQkQwMERCMjJBOSAvKiBEeW5hbWljTm9kZUxpc3QuaCBpbiBIZWFkZXJzICov
LAogCQkJCTkzMzA5REUyMDk5RTY0OTIwMDU2RTU4MSAvKiBFZGl0QWN0aW9uLmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggYTY1NWUyZGVl
NDExZWFlMTliZDhmZTUyMzllMTI0MTQ3MjYyOWEyYi4uNzZhMmQ2ZDQ1NmY2YjI3Zjg5YTYyNDU2
OWQ5ZWExNDczZDc5ZTE1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAK
QEAgLTU2OSw3ICs1NjksNDIgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6dHJ5REhUTUxEcmFnKERy
YWdEYXRhKiBkcmFnRGF0YSwgRHJhZ09wZXJhdGlvbiYgb3BlcmF0aW9uKQogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIERyYWdDb250cm9sbGVyOjptYXlTdGFydERyYWdBdEV2ZW50TG9jYXRp
b24oY29uc3QgRnJhbWUqIGZyYW1lLCBjb25zdCBJbnRQb2ludCYgZnJhbWVQb3MsIE5vZGUqIG5v
ZGUpCitOb2RlKiBEcmFnQ29udHJvbGxlcjo6ZHJhZ2dhYmxlTm9kZShjb25zdCBGcmFtZSogc3Jj
LCBOb2RlKiBzdGFydE5vZGUsIGJvb2wgZGh0bWxPSywgYm9vbCB1YU9LLCBpbnQgeCwgaW50IHks
IGJvb2wmIGRodG1sV2lsbERyYWcpIGNvbnN0Cit7CisgICAgaWYgKCFkaHRtbE9LICYmICF1YU9L
KQorICAgICAgICByZXR1cm4gMDsKKworICAgIGZvciAoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5k
ZXJlciA9IHN0YXJ0Tm9kZS0+cmVuZGVyZXIoKTsgcmVuZGVyZXI7IHJlbmRlcmVyID0gcmVuZGVy
ZXItPnBhcmVudCgpKSB7CisgICAgICAgIE5vZGUqIG5vZGUgPSByZW5kZXJlci0+bm9kZSgpOwor
ICAgICAgICBpZiAobm9kZSAmJiBub2RlLT5ub2RlVHlwZSgpID09IE5vZGU6OlRFWFRfTk9ERSkg
eworICAgICAgICAgICAgLy8gU2luY2UgdGhlcmUncyBubyB3YXkgZm9yIHRoZSBhdXRob3IgdG8g
YWRkcmVzcyB0aGUgLXdlYmtpdC11c2VyLWRyYWcgc3R5bGUgZm9yIGEgdGV4dCBub2RlLAorICAg
ICAgICAgICAgLy8gd2UgdXNlIG91ciBvd24ganVkZ2VtZW50LgorICAgICAgICAgICAgaWYgKHVh
T0sgJiYgbWF5U3RhcnREcmFnQXRFdmVudExvY2F0aW9uKHNyYywgSW50UG9pbnQoeCwgeSksIG5v
ZGUpKSB7CisgICAgICAgICAgICAgICAgZGh0bWxXaWxsRHJhZyA9IGZhbHNlOworICAgICAgICAg
ICAgICAgIHJldHVybiBub2RlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG5vZGUt
PmNhblN0YXJ0U2VsZWN0aW9uKCkpCisgICAgICAgICAgICAgICAgLy8gSW4gdGhpcyBjYXNlIHdl
IGhhdmUgYSBjbGljayBpbiB0aGUgdW5zZWxlY3RlZCBwb3J0aW9uIG9mIHRleHQuIElmIHRoaXMg
dGV4dCBpcworICAgICAgICAgICAgICAgIC8vIHNlbGVjdGFibGUsIHdlIHdhbnQgdG8gc3RhcnQg
dGhlIHNlbGVjdGlvbiBwcm9jZXNzIGluc3RlYWQgb2YgbG9va2luZyBmb3IgYSBwYXJlbnQKKyAg
ICAgICAgICAgICAgICAvLyB0byB0cnkgdG8gZHJhZy4KKyAgICAgICAgICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIEVVc2VyRHJhZyBkcmFnTW9kZSA9IHJl
bmRlcmVyLT5zdHlsZSgpLT51c2VyRHJhZygpOworICAgICAgICAgICAgaWYgKGRodG1sT0sgJiYg
ZHJhZ01vZGUgPT0gRFJBR19FTEVNRU5UKSB7CisgICAgICAgICAgICAgICAgZGh0bWxXaWxsRHJh
ZyA9IHRydWU7CisgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGU7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBpZiAodWFPSyAmJiBkcmFnTW9kZSA9PSBEUkFHX0FVVE8KKyAgICAgICAgICAg
ICAgICAgICAgJiYgbWF5U3RhcnREcmFnQXRFdmVudExvY2F0aW9uKHNyYywgSW50UG9pbnQoeCwg
eSksIG5vZGUpKSB7CisgICAgICAgICAgICAgICAgZGh0bWxXaWxsRHJhZyA9IGZhbHNlOworICAg
ICAgICAgICAgICAgIHJldHVybiBub2RlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorICAgIHJldHVybiAwOworfQorCitib29sIERyYWdDb250cm9sbGVyOjptYXlTdGFydERyYWdB
dEV2ZW50TG9jYXRpb24oY29uc3QgRnJhbWUqIGZyYW1lLCBjb25zdCBJbnRQb2ludCYgZnJhbWVQ
b3MsIE5vZGUqIG5vZGUpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGZyYW1lKTsKICAgICBBU1NFUlQo
ZnJhbWUtPnNldHRpbmdzKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFn
Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oCmluZGV4
IGJlMWU0NTY5NWM2NmE4NTM4OWQ1YmNlYzM4NzU2NGNkNDdmNjIxZjIuLmJlOGM4MzRhZWU2MTU2
OWJkZTIxYzhiOTBmYWU5YzA0ZmEzNWEwYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRHJhZ0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9s
bGVyLmgKQEAgLTc1LDcgKzc1LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBEcmFn
RGVzdGluYXRpb25BY3Rpb24gZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9kcmFnRGVzdGluYXRpb25BY3Rpb247IH0KICAgICAgICAgRHJhZ1NvdXJjZUFjdGlvbiBkZWxl
Z2F0ZURyYWdTb3VyY2VBY3Rpb24oY29uc3QgSW50UG9pbnQmIHBhZ2VQb2ludCk7CiAgICAgICAg
IAotICAgICAgICBib29sIG1heVN0YXJ0RHJhZ0F0RXZlbnRMb2NhdGlvbihjb25zdCBGcmFtZSos
IGNvbnN0IEludFBvaW50JiBmcmFtZVBvcywgTm9kZSopOworICAgICAgICBOb2RlKiBkcmFnZ2Fi
bGVOb2RlKGNvbnN0IEZyYW1lKiwgTm9kZSosIGJvb2wgZGh0bWxPSywgYm9vbCB1YU9LLCBpbnQg
eCwgaW50IHksIGJvb2wmIGRodG1sV2lsbERyYWcpIGNvbnN0OworICAgICAgICBib29sIG1heVN0
YXJ0RHJhZ0F0RXZlbnRMb2NhdGlvbihjb25zdCBGcmFtZSosIGNvbnN0IEludFBvaW50JiBmcmFt
ZVBvcywgTm9kZSopIGNvbnN0OwogICAgICAgICB2b2lkIGRyYWdFbmRlZCgpOwogICAgICAgICAK
ICAgICAgICAgdm9pZCBwbGFjZURyYWdDYXJldChjb25zdCBJbnRQb2ludCYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RHJhZ1N0YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmIxZjY3NTZlM2QyMWU3N2ZiMTliMGI5ODdiMjQwMzFk
NzBlZDBmYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ1N0YXRl
LmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09N
UFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaWZuZGVmIERyYWdTdGF0ZV9oCisjZGVmaW5lIERyYWdTdGF0ZV9oCisKKyNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgRHJhZ1N0YXRlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShEcmFnU3RhdGUpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgor
ICAgIERyYWdTdGF0ZSgpIHsgfQorICAgIFJlZlB0cjxOb2RlPiBtX2RyYWdTcmM7IC8vIGVsZW1l
bnQgdGhhdCBtYXkgYmUgYSBkcmFnIHNvdXJjZSwgZm9yIHRoZSBjdXJyZW50IG1vdXNlIGdlc3R1
cmUKKyAgICBib29sIG1fZHJhZ1NyY0lzTGluazsKKyAgICBib29sIG1fZHJhZ1NyY0lzSW1hZ2U7
CisgICAgYm9vbCBtX2RyYWdTcmNJblNlbGVjdGlvbjsKKyAgICBib29sIG1fZHJhZ1NyY01heUJl
REhUTUw7CisgICAgYm9vbCBtX2RyYWdTcmNNYXlCZVVBOyAvLyBBcmUgREhUTUwgYW5kL29yIHRo
ZSBVc2VyQWdlbnQgYWxsb3dlZCB0byBkcmFnIG91dD8KKyAgICBib29sIG1fZHJhZ1NyY0lzREhU
TUw7CisgICAgUmVmUHRyPENsaXBib2FyZD4gbV9kcmFnQ2xpcGJvYXJkOyAvLyB1c2VkIG9uIG9u
bHkgdGhlIHNvdXJjZSBzaWRlIG9mIGRyYWdnaW5nCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBEcmFnU3RhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
Y3BwCmluZGV4IGE3MTJiN2M2ODE1MGQ4ZTgyZjlkNjAyMzZiYzhmNTZmNDZhMTUwNGYuLjIxM2Zj
M2I4ODA4ZTA1ZmE3YTExMzNkYTg5MzhiNjZiNzQyODdhMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJDdXJzb3JMaXN0Lmgi
CiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEcmFnQ29udHJvbGxlci5oIgorI2lu
Y2x1ZGUgIkRyYWdTdGF0ZS5oIgogI2luY2x1ZGUgIkVkaXRvci5oIgogI2luY2x1ZGUgIkV2ZW50
TmFtZXMuaCIKICNpbmNsdWRlICJFdmVudFF1ZXVlLmgiCkBAIC0yMTcsOSArMjE4LDkgQEAgRXZl
bnRIYW5kbGVyOjp+RXZlbnRIYW5kbGVyKCkKIH0KICAgICAKICNpZiBFTkFCTEUoRFJBR19TVVBQ
T1JUKQotRXZlbnRIYW5kbGVyOjpFdmVudEhhbmRsZXJEcmFnU3RhdGUmIEV2ZW50SGFuZGxlcjo6
ZHJhZ1N0YXRlKCkKK0RyYWdTdGF0ZSYgRXZlbnRIYW5kbGVyOjpkcmFnU3RhdGUoKQogewotICAg
IERFRklORV9TVEFUSUNfTE9DQUwoRXZlbnRIYW5kbGVyRHJhZ1N0YXRlLCBzdGF0ZSwgKCkpOwor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoRHJhZ1N0YXRlLCBzdGF0ZSwgKCkpOwogICAgIHJldHVy
biBzdGF0ZTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoRFJBR19TVVBQT1JUKQpAQCAtNTk1LDExICs1
OTYsMTUgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmV2ZW50TWF5U3RhcnREcmFnKGNvbnN0IFBsYXRm
b3JtTW91c2VFdmVudCYgZXZlbnQpIGNvbnN0CiAgICAgaWYgKCF2aWV3KQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKKyAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpOworICAgIGlmICgh
cGFnZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVz
dChIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkpOwogICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KHZp
ZXctPndpbmRvd1RvQ29udGVudHMoZXZlbnQucG9zKCkpKTsKICAgICBtX2ZyYW1lLT5jb250ZW50
UmVuZGVyZXIoKS0+bGF5ZXIoKS0+aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOwogICAgIGJvb2wg
c3JjSXNESFRNTDsKLSAgICByZXR1cm4gcmVzdWx0LmlubmVyTm9kZSgpICYmIHJlc3VsdC5pbm5l
ck5vZGUoKS0+cmVuZGVyZXIoKS0+ZHJhZ2dhYmxlTm9kZShESFRNTEZsYWcsIFVBRmxhZywgcmVz
dWx0LnBvaW50KCkueCgpLCByZXN1bHQucG9pbnQoKS55KCksIHNyY0lzREhUTUwpOworICAgIHJl
dHVybiByZXN1bHQuaW5uZXJOb2RlKCkgJiYgcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS0+ZHJhZ2dh
YmxlTm9kZShtX2ZyYW1lLCByZXN1bHQuaW5uZXJOb2RlKCksIERIVE1MRmxhZywgVUFGbGFnLCBy
ZXN1bHQucG9pbnQoKS54KCksIHJlc3VsdC5wb2ludCgpLnkoKSwgc3JjSXNESFRNTCk7CiB9CiAK
IHZvaWQgRXZlbnRIYW5kbGVyOjp1cGRhdGVTZWxlY3Rpb25Gb3JNb3VzZURyYWcoKQpAQCAtMjYz
OSwxNCArMjY0NCw2IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpmcmVlQ2xpcGJvYXJkKCkKICAgICAg
ICAgZHJhZ1N0YXRlKCkubV9kcmFnQ2xpcGJvYXJkLT5zZXRBY2Nlc3NQb2xpY3koQ2xpcGJvYXJk
TnVtYik7CiB9CiAKLWJvb2wgRXZlbnRIYW5kbGVyOjpzaG91bGREcmFnQXV0b05vZGUoTm9kZSog
bm9kZSwgY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAotewotICAgIGlmICghbm9kZSB8fCAh
bV9mcmFtZS0+dmlldygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgUGFnZSogcGFnZSA9
IG1fZnJhbWUtPnBhZ2UoKTsKLSAgICByZXR1cm4gcGFnZSAmJiBwYWdlLT5kcmFnQ29udHJvbGxl
cigpLT5tYXlTdGFydERyYWdBdEV2ZW50TG9jYXRpb24obV9mcmFtZSwgcG9pbnQsIG5vZGUpOwot
fQotCiB2b2lkIEV2ZW50SGFuZGxlcjo6ZHJhZ1NvdXJjZUVuZGVkQXQoY29uc3QgUGxhdGZvcm1N
b3VzZUV2ZW50JiBldmVudCwgRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24pCiB7CiAgICAgaWYgKGRy
YWdTdGF0ZSgpLm1fZHJhZ1NyYyAmJiBkcmFnU3RhdGUoKS5tX2RyYWdTcmNNYXlCZURIVE1MKSB7
CkBAIC0yNjk1LDkgKzI2OTIsOSBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyhjb25z
dCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCkKICAgICAgICAgSGl0VGVzdFJl
c3VsdCByZXN1bHQobV9tb3VzZURvd25Qb3MpOwogICAgICAgICBtX2ZyYW1lLT5jb250ZW50UmVu
ZGVyZXIoKS0+bGF5ZXIoKS0+aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOwogICAgICAgICBOb2Rl
KiBub2RlID0gcmVzdWx0LmlubmVyTm9kZSgpOwotICAgICAgICBpZiAobm9kZSAmJiBub2RlLT5y
ZW5kZXJlcigpKQotICAgICAgICAgICAgZHJhZ1N0YXRlKCkubV9kcmFnU3JjID0gbm9kZS0+cmVu
ZGVyZXIoKS0+ZHJhZ2dhYmxlTm9kZShkcmFnU3RhdGUoKS5tX2RyYWdTcmNNYXlCZURIVE1MLCBk
cmFnU3RhdGUoKS5tX2RyYWdTcmNNYXlCZVVBLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX21vdXNlRG93blBvcy54
KCksIG1fbW91c2VEb3duUG9zLnkoKSwgZHJhZ1N0YXRlKCkubV9kcmFnU3JjSXNESFRNTCk7Cisg
ICAgICAgIGlmIChub2RlICYmIG1fZnJhbWUtPnBhZ2UoKSkKKyAgICAgICAgICAgIGRyYWdTdGF0
ZSgpLm1fZHJhZ1NyYyA9IG1fZnJhbWUtPnBhZ2UoKS0+ZHJhZ0NvbnRyb2xsZXIoKS0+ZHJhZ2dh
YmxlTm9kZShtX2ZyYW1lLCBub2RlLCBkcmFnU3RhdGUoKS5tX2RyYWdTcmNNYXlCZURIVE1MLCBk
cmFnU3RhdGUoKS5tX2RyYWdTcmNNYXlCZVVBLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1fbW91c2VEb3duUG9zLngoKSwgbV9tb3VzZURvd25Qb3MueSgpLCBkcmFnU3RhdGUoKS5tX2Ry
YWdTcmNJc0RIVE1MKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZHJhZ1N0YXRlKCkubV9k
cmFnU3JjID0gMDsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAppbmRleCAy
YmVmYWYzNTU4NGM1MDUzNDZmNDI4MmFlYzA0NjUyYjIwMzYyMTJhLi4wYzk1ZmFmZTBkNGU0MzMw
ZmU1OGE4NzA5MGY5ZTM2NWQ4ZmYyMmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgK
QEAgLTQ5LDYgKzQ5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDbGlwYm9hcmQ7
CiBjbGFzcyBDdXJzb3I7CitjbGFzcyBEcmFnU3RhdGU7CiBjbGFzcyBFdmVudDsKIGNsYXNzIEV2
ZW50VGFyZ2V0OwogY2xhc3MgRmxvYXRQb2ludDsKQEAgLTE0NSwxMCArMTQ2LDYgQEAgcHVibGlj
OgogICAgIGJvb2wgc2Nyb2xsUmVjdXJzaXZlbHkoU2Nyb2xsRGlyZWN0aW9uLCBTY3JvbGxHcmFu
dWxhcml0eSwgTm9kZSogc3RhcnRpbmdOb2RlID0gMCk7CiAgICAgYm9vbCBsb2dpY2FsU2Nyb2xs
UmVjdXJzaXZlbHkoU2Nyb2xsTG9naWNhbERpcmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHksIE5v
ZGUqIHN0YXJ0aW5nTm9kZSA9IDApOwogCi0jaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKLSAgICBi
b29sIHNob3VsZERyYWdBdXRvTm9kZShOb2RlKiwgY29uc3QgSW50UG9pbnQmKSBjb25zdDsgLy8g
LXdlYmtpdC11c2VyLWRyYWcgPT0gYXV0bwotI2VuZGlmCi0KICAgICBib29sIHRhYnNUb0xpbmtz
KEtleWJvYXJkRXZlbnQqKSBjb25zdDsKICAgICBib29sIHRhYnNUb0FsbEZvcm1Db250cm9scyhL
ZXlib2FyZEV2ZW50KikgY29uc3Q7CiAKQEAgLTIyMywyMCArMjIwLDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgUGVyZm9ybURyYWdBbmREcm9wCiAgICAgfTsKIAotICAgIHN0cnVjdCBFdmVudEhhbmRs
ZXJEcmFnU3RhdGUgewotICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShFdmVudEhhbmRsZXJE
cmFnU3RhdGUpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICBwdWJsaWM6Ci0gICAgICAg
IEV2ZW50SGFuZGxlckRyYWdTdGF0ZSgpIHsgfQotICAgICAgICBSZWZQdHI8Tm9kZT4gbV9kcmFn
U3JjOyAvLyBlbGVtZW50IHRoYXQgbWF5IGJlIGEgZHJhZyBzb3VyY2UsIGZvciB0aGUgY3VycmVu
dCBtb3VzZSBnZXN0dXJlCi0gICAgICAgIGJvb2wgbV9kcmFnU3JjSXNMaW5rOwotICAgICAgICBi
b29sIG1fZHJhZ1NyY0lzSW1hZ2U7Ci0gICAgICAgIGJvb2wgbV9kcmFnU3JjSW5TZWxlY3Rpb247
Ci0gICAgICAgIGJvb2wgbV9kcmFnU3JjTWF5QmVESFRNTDsKLSAgICAgICAgYm9vbCBtX2RyYWdT
cmNNYXlCZVVBOyAvLyBBcmUgREhUTUwgYW5kL29yIHRoZSBVc2VyQWdlbnQgYWxsb3dlZCB0byBk
cmFnIG91dD8KLSAgICAgICAgYm9vbCBtX2RyYWdTcmNJc0RIVE1MOwotICAgICAgICBSZWZQdHI8
Q2xpcGJvYXJkPiBtX2RyYWdDbGlwYm9hcmQ7IC8vIHVzZWQgb24gb25seSB0aGUgc291cmNlIHNp
ZGUgb2YgZHJhZ2dpbmcKLSAgICB9OwotICAgIHN0YXRpYyBFdmVudEhhbmRsZXJEcmFnU3RhdGUm
IGRyYWdTdGF0ZSgpOworICAgIHN0YXRpYyBEcmFnU3RhdGUmIGRyYWdTdGF0ZSgpOwogICAgIHN0
YXRpYyBjb25zdCBkb3VibGUgVGV4dERyYWdEZWxheTsKIAogICAgIGJvb2wgY2FuSGFuZGxlRHJh
Z0FuZERyb3BGb3JUYXJnZXQoRHJhZ0FuZERyb3BIYW5kbGVUeXBlLCBOb2RlKiB0YXJnZXQsIGNv
bnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIENsaXBib2FyZCosIGJvb2wqIGFjY2VwdGVkID0gMCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IDhkNmU0Mzgz
MjA1ZDQ3OWViZTUyYjg4NTRmYTIwNDkzYWFjMTdlNjUuLjBkNDk4NTY1ZjliOTYzMDMwMmVhNTBk
NTZhMjZkMDAzNjNjMmM1ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuY3BwCkBAIC0xNDk4LDQzICsxNDk4LDYgQEAgQ29sb3IgUmVuZGVyT2JqZWN0OjpzZWxlY3Rp
b25FbXBoYXNpc01hcmtDb2xvcigpIGNvbnN0CiAgICAgcmV0dXJuIHNlbGVjdGlvbkNvbG9yKENT
U1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzQ29sb3IpOwogfQogCi0jaWYgRU5BQkxFKERSQUdf
U1VQUE9SVCkKLU5vZGUqIFJlbmRlck9iamVjdDo6ZHJhZ2dhYmxlTm9kZShib29sIGRodG1sT0ss
IGJvb2wgdWFPSywgaW50IHgsIGludCB5LCBib29sJiBkaHRtbFdpbGxEcmFnKSBjb25zdAotewot
ICAgIGlmICghZGh0bWxPSyAmJiAhdWFPSykKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBmb3Ig
KGNvbnN0IFJlbmRlck9iamVjdCogY3VyciA9IHRoaXM7IGN1cnI7IGN1cnIgPSBjdXJyLT5wYXJl
bnQoKSkgewotICAgICAgICBOb2RlKiBlbHQgPSBjdXJyLT5ub2RlKCk7Ci0gICAgICAgIGlmIChl
bHQgJiYgZWx0LT5ub2RlVHlwZSgpID09IE5vZGU6OlRFWFRfTk9ERSkgewotICAgICAgICAgICAg
Ly8gU2luY2UgdGhlcmUncyBubyB3YXkgZm9yIHRoZSBhdXRob3IgdG8gYWRkcmVzcyB0aGUgLXdl
YmtpdC11c2VyLWRyYWcgc3R5bGUgZm9yIGEgdGV4dCBub2RlLAotICAgICAgICAgICAgLy8gd2Ug
dXNlIG91ciBvd24ganVkZ2VtZW50LgotICAgICAgICAgICAgaWYgKHVhT0sgJiYgdmlldygpLT5m
cmFtZVZpZXcoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPnNob3VsZERyYWdBdXRvTm9kZShj
dXJyLT5ub2RlKCksIEludFBvaW50KHgsIHkpKSkgewotICAgICAgICAgICAgICAgIGRodG1sV2ls
bERyYWcgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICByZXR1cm4gY3Vyci0+bm9kZSgpOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGVsdC0+Y2FuU3RhcnRTZWxlY3Rpb24oKSkKLSAg
ICAgICAgICAgICAgICAvLyBJbiB0aGlzIGNhc2Ugd2UgaGF2ZSBhIGNsaWNrIGluIHRoZSB1bnNl
bGVjdGVkIHBvcnRpb24gb2YgdGV4dC4gIElmIHRoaXMgdGV4dCBpcwotICAgICAgICAgICAgICAg
IC8vIHNlbGVjdGFibGUsIHdlIHdhbnQgdG8gc3RhcnQgdGhlIHNlbGVjdGlvbiBwcm9jZXNzIGlu
c3RlYWQgb2YgbG9va2luZyBmb3IgYSBwYXJlbnQKLSAgICAgICAgICAgICAgICAvLyB0byB0cnkg
dG8gZHJhZy4KLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIEVVc2VyRHJhZyBkcmFnTW9kZSA9IGN1cnItPnN0eWxlKCktPnVzZXJEcmFnKCk7
Ci0gICAgICAgICAgICBpZiAoZGh0bWxPSyAmJiBkcmFnTW9kZSA9PSBEUkFHX0VMRU1FTlQpIHsK
LSAgICAgICAgICAgICAgICBkaHRtbFdpbGxEcmFnID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gY3Vyci0+bm9kZSgpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHVhT0sg
JiYgZHJhZ01vZGUgPT0gRFJBR19BVVRPCi0gICAgICAgICAgICAgICAgICAgICYmIHZpZXcoKS0+
ZnJhbWVWaWV3KCktPmZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5zaG91bGREcmFnQXV0b05vZGUo
Y3Vyci0+bm9kZSgpLCBJbnRQb2ludCh4LCB5KSkpIHsKLSAgICAgICAgICAgICAgICBkaHRtbFdp
bGxEcmFnID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGN1cnItPm5vZGUoKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gMDsKLX0KLSNlbmRpZiAv
LyBFTkFCTEUoRFJBR19TVVBQT1JUKQotCiB2b2lkIFJlbmRlck9iamVjdDo6c2VsZWN0aW9uU3Rh
cnRFbmQoaW50JiBzcG9zLCBpbnQmIGVwb3MpIGNvbnN0CiB7CiAgICAgdmlldygpLT5zZWxlY3Rp
b25TdGFydEVuZChzcG9zLCBlcG9zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuaAppbmRleCBiMmYxYmRkZWM2Mzc3YThmMDlhMDkwMDIwOTY0ZDdjMDI4NzdiMzU4Li44ZmM4
ZWNlMThhMTg1YTkxZGZlYmQ3M2RmNDc3Mzg2YmNkYjRhZTdjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC03MTQsMTAgKzcxNCw2IEBAIHB1YmxpYzoKICAgICAv
LyBXaGV0aGVyIG9yIG5vdCBhIGdpdmVuIGJsb2NrIG5lZWRzIHRvIHBhaW50IHNlbGVjdGlvbiBn
YXBzLgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRQYWludFNlbGVjdGlvbkdhcHMoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQogCi0jaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKLSAgICBOb2RlKiBk
cmFnZ2FibGVOb2RlKGJvb2wgZGh0bWxPSywgYm9vbCB1YU9LLCBpbnQgeCwgaW50IHksIGJvb2wm
IGRodG1sV2lsbERyYWcpIGNvbnN0OwotI2VuZGlmCi0KICAgICAvKioKICAgICAgKiBSZXR1cm5z
IHRoZSBsb2NhbCBjb29yZGluYXRlcyBvZiB0aGUgY2FyZXQgd2l0aGluIHRoaXMgcmVuZGVyIG9i
amVjdC4KICAgICAgKiBAcGFyYW0gY2FyZXRPZmZzZXQgemVyby1iYXNlZCBvZmZzZXQgZGV0ZXJt
aW5pbmcgcG9zaXRpb24gd2l0aGluIHRoZSByZW5kZXIgb2JqZWN0Lgo=
</data>
<flag name="review"
          id="85941"
          type_id="1"
          status="+"
          setter="tony"
    />
          </attachment>
      

    </bug>

</bugzilla>