<?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>52385</bug_id>
          
          <creation_ts>2011-01-13 11:44:27 -0800</creation_ts>
          <short_desc>[GTK] Move progress bar painting out of gtk2drawing.c</short_desc>
          <delta_ts>2011-01-19 18:52:39 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>52258</dependson>
          <blocked>51155</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Martin Robinson">mrobinson</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>dbates</cc>
    
    <cc>joone</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>333843</commentid>
    <comment_count>0</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-01-13 11:44:27 -0800</bug_when>
    <thetext>This bug tracks removing the progress bar rendering out of gtk2drawing.c and sharing some animation code between the GTK+ 2.x and GTK+ 3.x port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336073</commentid>
    <comment_count>1</comment_count>
      <attachid>79324</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-01-18 13:59:45 -0800</bug_when>
    <thetext>Created attachment 79324
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336330</commentid>
    <comment_count>2</comment_count>
      <attachid>79324</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-01-18 21:32:54 -0800</bug_when>
    <thetext>Comment on attachment 79324
Patch

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

This won&apos;t compile when PROGRESS_TAG is disabled/undefined since calculateProgressRect() is only declared in RenderThemeGtk.h when PROGRESS_TAG is defined.

&gt; Source/WebCore/platform/gtk/RenderThemeGtk.cpp:565
&gt; +void RenderThemeGtk::calculateProgressRect(RenderObject* renderObject, IntRect&amp; rect)

Given the name of this function, it seems a bit weird that this function adjusts the rectangle of the progress bar instead of returning a rectangle.

&gt; Source/WebCore/platform/gtk/RenderThemeGtk.cpp:577
&gt; +    int newWidth = max(2, rect.width() / progressActivityBlocks);

Where does the 2 come from?

&gt; Source/WebCore/platform/gtk/RenderThemeGtk.cpp:581
&gt; +        rect.setX(rect.x() + (animationProgress * 2 * movableWidth));

Where does the 2 come from? The parentheses are not needed for the second addend since multiplication has a higher precedence that addition.

&gt; Source/WebCore/platform/gtk/RenderThemeGtk.cpp:583
&gt; +        rect.setX(rect.x() + ((1.0 - animationProgress) * 2 * movableWidth));

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336331</commentid>
    <comment_count>3</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-01-18 21:46:06 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 79324 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=79324&amp;action=review
&gt; 
&gt; This won&apos;t compile when PROGRESS_TAG is disabled/undefined since calculateProgressRect() is only declared in RenderThemeGtk.h when PROGRESS_TAG is defined.

Disregard this comment. Additional context reveals that RenderThemeGtk::calculateProgressRect() is enclosed within an ENABLE(PROGRESS_TAG).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336333</commentid>
    <comment_count>4</comment_count>
      <attachid>79324</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-01-18 21:48:39 -0800</bug_when>
    <thetext>Comment on attachment 79324
Patch

This patch look sane to me. I am curious about where the 2&apos;s come from in lines 576 thru 583 in RenderThemeGtk.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336373</commentid>
    <comment_count>5</comment_count>
      <attachid>79324</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-01-19 00:47:35 -0800</bug_when>
    <thetext>Comment on attachment 79324
Patch

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

&gt; Source/WebCore/platform/gtk/RenderThemeGtk2.cpp:491
&gt; +        widgetContext.gtkPaintBox(progressRect, widget, GTK_STATE_NORMAL, GTK_SHADOW_IN, &quot;bar&quot;);

This should be GTK_STATE_PRELIGHT, GTK_SHADOW_OUT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336625</commentid>
    <comment_count>6</comment_count>
      <attachid>79447</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-01-19 10:37:52 -0800</bug_when>
    <thetext>Created attachment 79447
Patch with extra comments and Carlos&apos; fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337034</commentid>
    <comment_count>7</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-01-19 18:51:46 -0800</bug_when>
    <thetext>Committed r76192: &lt;http://trac.webkit.org/changeset/76192&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79324</attachid>
            <date>2011-01-18 13:59:45 -0800</date>
            <delta_ts>2011-01-19 18:52:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52385-20110118135946.patch</filename>
            <type>text/plain</type>
            <size>17577</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiM2RmOTc5ODk0MTJmZjFjODZkYjIzMDIzOTJlOGIyZWZiNDg5NDk3Li5m
M2ZiNWJhNjlkNGUwYTk0N2JmYWZhMDAzODg1MmU0MDI4Y2Q0NGQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzUgQEAKKzIwMTEtMDEtMTMgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2Fs
aWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFtHVEtdIE1vdmUgcHJvZ3Jlc3MgYmFyIHBhaW50aW5nIG91dCBvZiBndGsyZHJhd2luZy5jCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MjM4NQorCisg
ICAgICAgIE1vdmUgcHJvZ3Jlc3MgYmFyIHBhaW50aW5nIHRvIFJlbmRlclRoZW1lR3RrMiBhbmQg
c2hhcmUgc29tZSBhbmltYXRpb24KKyAgICAgICAgbG9naWMgYmV0d2VlbiB0aGUgR1RLKyAyLngg
YW5kIEdUSysgMy54IHBvcnQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGlzIHNob3VsZCBu
b3QgY2hhbmdlIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUmVuZGVy
VGhlbWVHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OmFuaW1hdGlv
blJlcGVhdEludGVydmFsRm9yUHJvZ3Jlc3NCYXIpOiBNb3ZlZCBmcm9tIFJlbmRlclRoZW1lR3Rr
My4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjphbmltYXRpb25EdXJhdGlvbkZv
clByb2dyZXNzQmFyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6
Y2FsY3VsYXRlUHJvZ3Jlc3NSZWN0KTogQ2FsY3VsYXRlIHRoZSBwcm9wZXIgcmVjdGFuZ2xlIGZv
ciB0aGUKKyAgICAgICAgcHJvZ3Jlc3MgaW5kaWNhdG9yIGdpdmVuIHRoZSByZWN0IGZvciB0aGUg
bWF4aW11bSBzaXplIG9mIHRoZSBpbmRpY2F0b3IuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Jl
bmRlclRoZW1lR3RrLmg6IEFkZGVkIGNhbGN1bGF0ZVByb2dyZXNzUmVjdCBkZWNsYXJhdGlvbiBh
bmQKKyAgICAgICAgYSBuZXcgd2lkZ2V0IG1lbWJlciBmb3IgR1RLKyAyLngKKyAgICAgICAgKiBw
bGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lR3RrOjpwbGF0Zm9ybUluaXQpOiBBZGRlZCBpbml0aWFsaXphdGlvbiBmb3IgdGhlIG5l
dyB3aWRnZXQgbWVtYmVyLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OnBhaW50
UHJvZ3Jlc3NCYXIpOiBQYWludCB0aGUgcHJvZ3Jlc3MgYmFyIG1hbnVhbGx5IGluc3RlYWQgb2YK
KyAgICAgICAgY2FsbGluZyB0aGUgb2xkIE1vemlsbGEgY29kZS4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lR3RrOjpndGtQcm9ncmVzc0Jhcik6IEFkZGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2d0ay9SZW5kZXJUaGVtZUd0azMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVHdGs6OnBhaW50UHJvZ3Jlc3NCYXIpOiBDYWxsIGNhbGN1bGF0ZVByb2dyZXNzUmVjdCBub3cg
dG8gZ2V0CisgICAgICAgIHRoZSBhcmVhIG9mIHRoZSBwcm9ncmVzcyBpbmRpY2F0b3IuCisgICAg
ICAgICogcGxhdGZvcm0vZ3RrL2d0azJkcmF3aW5nLmM6IFJlbW92ZSB1bnVzZWQgY29kZS4KKyAg
ICAgICAgKG1vel9ndGtfZ2V0X3dpZGdldF9ib3JkZXIpOgorICAgICAgICAobW96X2d0a193aWRn
ZXRfcGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9ndGtkcmF3aW5nLmg6IERpdHRvLgor
CiAyMDExLTAxLTEyICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwCmluZGV4IDk3Yzk2NmQ4YjI0ZjJmMzE5Mjhh
MTA0ZGU3ZTEyZTQ1NTA0NWJmMjkuLjk1MDU1N2UxMTkxMTgwYzAzYzdjYWJhMGFjNjMxZjYyM2M4
MmMyNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVt
ZUd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3Rr
LmNwcApAQCAtNDEsNiArNDEsMTAgQEAKICNpbmNsdWRlIDxnZGsvZ2RrLmg+CiAjaW5jbHVkZSA8
Z3RrL2d0ay5oPgogCisjaWYgRU5BQkxFKFBST0dSRVNTX1RBRykKKyNpbmNsdWRlICJSZW5kZXJQ
cm9ncmVzcy5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNw
YWNlIEhUTUxOYW1lczsKQEAgLTU0Myw2ICs1NDcsNDEgQEAgdm9pZCBSZW5kZXJUaGVtZUd0azo6
YWRqdXN0UHJvZ3Jlc3NCYXJTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqIHN0
eWwKIHsKICAgICBzdHlsZS0+c2V0Qm94U2hhZG93KDApOwogfQorCisvLyBUaGVzZSB2YWx1ZXMg
aGF2ZSBiZWVuIGNvcGllZCBmcm9tIFJlbmRlclRoZW1lQ2hyb21pdW1Ta2lhLmNwcAorc3RhdGlj
IGNvbnN0IGludCBwcm9ncmVzc0FjdGl2aXR5QmxvY2tzID0gNTsKK3N0YXRpYyBjb25zdCBpbnQg
cHJvZ3Jlc3NBbmltYXRpb25GcmFtZXMgPSAxMDsKK3N0YXRpYyBjb25zdCBkb3VibGUgcHJvZ3Jl
c3NBbmltYXRpb25JbnRlcnZhbCA9IDAuMTI1OworZG91YmxlIFJlbmRlclRoZW1lR3RrOjphbmlt
YXRpb25SZXBlYXRJbnRlcnZhbEZvclByb2dyZXNzQmFyKFJlbmRlclByb2dyZXNzKikgY29uc3QK
K3sKKyAgICByZXR1cm4gcHJvZ3Jlc3NBbmltYXRpb25JbnRlcnZhbDsKK30KKworZG91YmxlIFJl
bmRlclRoZW1lR3RrOjphbmltYXRpb25EdXJhdGlvbkZvclByb2dyZXNzQmFyKFJlbmRlclByb2dy
ZXNzKikgY29uc3QKK3sKKyAgICByZXR1cm4gcHJvZ3Jlc3NBbmltYXRpb25JbnRlcnZhbCAqIHBy
b2dyZXNzQW5pbWF0aW9uRnJhbWVzICogMjsgLy8gIjIiIGZvciBiYWNrIGFuZCBmb3J0aDsKK30K
Kwordm9pZCBSZW5kZXJUaGVtZUd0azo6Y2FsY3VsYXRlUHJvZ3Jlc3NSZWN0KFJlbmRlck9iamVj
dCogcmVuZGVyT2JqZWN0LCBJbnRSZWN0JiByZWN0KQoreworICAgIFJlbmRlclByb2dyZXNzKiBy
ZW5kZXJQcm9ncmVzcyA9IHRvUmVuZGVyUHJvZ3Jlc3MocmVuZGVyT2JqZWN0KTsKKyAgICBpZiAo
cmVuZGVyUHJvZ3Jlc3MtPmlzRGV0ZXJtaW5hdGUoKSkgeworICAgICAgICBpbnQgcHJvZ3Jlc3NX
aWR0aCA9IHJlY3Qud2lkdGgoKSAqIHJlbmRlclByb2dyZXNzLT5wb3NpdGlvbigpOworICAgICAg
ICBpZiAocmVuZGVyT2JqZWN0LT5zdHlsZSgpLT5kaXJlY3Rpb24oKSA9PSBSVEwpCisgICAgICAg
ICAgICByZWN0LnNldFgocmVjdC54KCkgKyByZWN0LndpZHRoKCkgLSBwcm9ncmVzc1dpZHRoKTsK
KyAgICAgICAgcmVjdC5zZXRXaWR0aChwcm9ncmVzc1dpZHRoKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGRvdWJsZSBhbmltYXRpb25Qcm9ncmVzcyA9IHJlbmRlclByb2dyZXNzLT5h
bmltYXRpb25Qcm9ncmVzcygpOworICAgIGludCBuZXdXaWR0aCA9IG1heCgyLCByZWN0LndpZHRo
KCkgLyBwcm9ncmVzc0FjdGl2aXR5QmxvY2tzKTsKKyAgICBpbnQgbW92YWJsZVdpZHRoID0gcmVj
dC53aWR0aCgpIC0gbmV3V2lkdGg7CisgICAgcmVjdC5zZXRXaWR0aChuZXdXaWR0aCk7CisgICAg
aWYgKGFuaW1hdGlvblByb2dyZXNzIDwgMC41KQorICAgICAgICByZWN0LnNldFgocmVjdC54KCkg
KyAoYW5pbWF0aW9uUHJvZ3Jlc3MgKiAyICogbW92YWJsZVdpZHRoKSk7CisgICAgZWxzZQorICAg
ICAgICByZWN0LnNldFgocmVjdC54KCkgKyAoKDEuMCAtIGFuaW1hdGlvblByb2dyZXNzKSAqIDIg
KiBtb3ZhYmxlV2lkdGgpKTsKK30KICNlbmRpZgogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5oCmluZGV4IDY1ZDkzNjYzOWVmZjg5Yjc0MWIxNGQzZmJj
YjdmZDhiYjYzMTA4MDkuLjU3NWVjZDcxMDVkMjc0NzQyY2Q3MzE2ZmJkNmFjODM3NmI3YjY1OTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5oCkBAIC0x
NzEsMTEgKzE3MSwxNiBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9y
bUluaXQoKTsKKyAgICBzdGF0aWMgdm9pZCBzZXRUZXh0SW5wdXRCb3JkZXJzKFJlbmRlclN0eWxl
Kik7CisgICAgR1JlZlB0cjxHZGtQaXhidWY+IGdldFN0b2NrSWNvbihHVHlwZSwgY29uc3QgY2hh
ciogaWNvbk5hbWUsIGdpbnQgZGlyZWN0aW9uLCBnaW50IHN0YXRlLCBnaW50IGljb25TaXplKTsK
KwogI2lmIEVOQUJMRShWSURFTykKICAgICBib29sIHBhaW50TWVkaWFCdXR0b24oUmVuZGVyT2Jq
ZWN0KiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IGNoYXIqIGljb25O
YW1lKTsKICNlbmRpZgotICAgIHN0YXRpYyB2b2lkIHNldFRleHRJbnB1dEJvcmRlcnMoUmVuZGVy
U3R5bGUqKTsKLSAgICBHUmVmUHRyPEdka1BpeGJ1Zj4gZ2V0U3RvY2tJY29uKEdUeXBlLCBjb25z
dCBjaGFyKiBpY29uTmFtZSwgZ2ludCBkaXJlY3Rpb24sIGdpbnQgc3RhdGUsIGdpbnQgaWNvblNp
emUpOworCisjaWYgRU5BQkxFKFBST0dSRVNTX1RBRykKKyAgICBzdGF0aWMgdm9pZCBjYWxjdWxh
dGVQcm9ncmVzc1JlY3QoUmVuZGVyT2JqZWN0KiwgSW50UmVjdCYpOworI2VuZGlmCiAKICAgICBt
dXRhYmxlIENvbG9yIG1fcGFuZWxDb2xvcjsKICAgICBtdXRhYmxlIENvbG9yIG1fc2xpZGVyQ29s
b3I7CkBAIC0xOTcsNiArMjAyLDcgQEAgcHJpdmF0ZToKICAgICBHdGtXaWRnZXQqIGd0a0NvbnRh
aW5lcigpIGNvbnN0OwogICAgIEd0a1dpZGdldCogZ3RrUmFkaW9CdXR0b24oKSBjb25zdDsKICAg
ICBHdGtXaWRnZXQqIGd0a0NoZWNrQnV0dG9uKCkgY29uc3Q7CisgICAgR3RrV2lkZ2V0KiBndGtQ
cm9ncmVzc0JhcigpIGNvbnN0OwogCiAgICAgbXV0YWJsZSBHdGtXaWRnZXQqIG1fZ3RrV2luZG93
OwogICAgIG11dGFibGUgR3RrV2lkZ2V0KiBtX2d0a0NvbnRhaW5lcjsKQEAgLTIwNyw2ICsyMTMs
NyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgR3RrV2lkZ2V0KiBtX2d0a0hTY2FsZTsKICAgICBt
dXRhYmxlIEd0a1dpZGdldCogbV9ndGtSYWRpb0J1dHRvbjsKICAgICBtdXRhYmxlIEd0a1dpZGdl
dCogbV9ndGtDaGVja0J1dHRvbjsKKyAgICBtdXRhYmxlIEd0a1dpZGdldCogbV9ndGtQcm9ncmVz
c0JhcjsKIAogICAgIGJvb2wgbV90aGVtZVBhcnRzSGF2ZVJHQkFDb2xvcm1hcDsKICAgICBmcmll
bmQgY2xhc3MgV2lkZ2V0UmVuZGVyaW5nQ29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0azIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrMi5jcHAKaW5kZXggNGI0M2EwNDBkNzU2Y2I3Zjg2MGNk
YWRjMGU4M2E3ZmY5NjQ2NDI0MC4uZDBlNDAxYjMwMTEzZDUyODliZmVlMjZjYzU4YmM5ZWI4Yjk3
YTYwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1l
R3RrMi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3Rr
Mi5jcHAKQEAgLTQ1LDEwICs0NSw2IEBACiAjaW5jbHVkZSA8Z2RrL2dkay5oPgogI2luY2x1ZGUg
PGd0ay9ndGsuaD4KIAotI2lmIEVOQUJMRShQUk9HUkVTU19UQUcpCi0jaW5jbHVkZSAiUmVuZGVy
UHJvZ3Jlc3MuaCIKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIFRoaXMgaXMg
bm90IGEgc3RhdGljIG1ldGhvZCwgYmVjYXVzZSB3ZSB3YW50IHRvIGF2b2lkIGhhdmluZyBHVEsr
IGhlYWRlcnMgaW4gUmVuZGVyVGhlbWVHdGsuaC4KQEAgLTY3LDYgKzYzLDcgQEAgdm9pZCBSZW5k
ZXJUaGVtZUd0azo6cGxhdGZvcm1Jbml0KCkKICAgICBtX2d0a0hTY2FsZSA9IDA7CiAgICAgbV9n
dGtSYWRpb0J1dHRvbiA9IDA7CiAgICAgbV9ndGtDaGVja0J1dHRvbiA9IDA7CisgICAgbV9ndGtQ
cm9ncmVzc0JhciA9IDA7CiAKICAgICBtZW1zZXQoJm1fdGhlbWVQYXJ0cywgMCwgc2l6ZW9mKEd0
a1RoZW1lUGFydHMpKTsKICAgICBHZGtDb2xvcm1hcCogY29sb3JtYXAgPSBnZGtfc2NyZWVuX2dl
dF9yZ2JhX2NvbG9ybWFwKGdka19zY3JlZW5fZ2V0X2RlZmF1bHQoKSk7CkBAIC00NzUsNDUgKzQ3
MiwyNSBAQCB2b2lkIFJlbmRlclRoZW1lR3RrOjphZGp1c3RTbGlkZXJUaHVtYlNpemUoUmVuZGVy
T2JqZWN0KiBvKSBjb25zdAogfQogCiAjaWYgRU5BQkxFKFBST0dSRVNTX1RBRykKLWRvdWJsZSBS
ZW5kZXJUaGVtZUd0azo6YW5pbWF0aW9uUmVwZWF0SW50ZXJ2YWxGb3JQcm9ncmVzc0JhcihSZW5k
ZXJQcm9ncmVzcyopIGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6IEl0IGRvZXNuJ3QgbG9vayBsaWtl
IHRoZXJlIGlzIGEgZ29vZCB3YXkgeWV0IHRvIHN1cHBvcnQgYW5pbWF0ZWQKLSAgICAvLyBwcm9n
cmVzcyBiYXJzIHdpdGggdGhlIE1vemlsbGEgdGhlbWUgZHJhd2luZyBjb2RlLgotICAgIHJldHVy
biAwOwotfQotCi1kb3VibGUgUmVuZGVyVGhlbWVHdGs6OmFuaW1hdGlvbkR1cmF0aW9uRm9yUHJv
Z3Jlc3NCYXIoUmVuZGVyUHJvZ3Jlc3MqKSBjb25zdAotewotICAgIC8vIEZJWE1FOiBJdCBkb2Vz
bid0IGxvb2sgbGlrZSB0aGVyZSBpcyBhIGdvb2Qgd2F5IHlldCB0byBzdXBwb3J0IGFuaW1hdGVk
Ci0gICAgLy8gcHJvZ3Jlc3MgYmFycyB3aXRoIHRoZSBNb3ppbGxhIHRoZW1lIGRyYXdpbmcgY29k
ZS4KLSAgICByZXR1cm4gMDsKLX0KLQogYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRQcm9ncmVz
c0JhcihSZW5kZXJPYmplY3QqIHJlbmRlck9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgaWYgKCFyZW5kZXJPYmplY3QtPmlzUHJv
Z3Jlc3MoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgR3RrV2lkZ2V0KiB3aWRnZXQgPSBn
dGtQcm9ncmVzc0JhcigpOworICAgIGd0a193aWRnZXRfc2V0X2RpcmVjdGlvbih3aWRnZXQsIGd0
a1RleHREaXJlY3Rpb24ocmVuZGVyT2JqZWN0LT5zdHlsZSgpLT5kaXJlY3Rpb24oKSkpOwogCi0g
ICAgR3RrV2lkZ2V0KiBwcm9ncmVzc0JhcldpZGdldCA9IG1vel9ndGtfZ2V0X3Byb2dyZXNzX3dp
ZGdldCgpOwotICAgIGlmICghcHJvZ3Jlc3NCYXJXaWRnZXQpCi0gICAgICAgIHJldHVybiB0cnVl
OworICAgIFdpZGdldFJlbmRlcmluZ0NvbnRleHQgd2lkZ2V0Q29udGV4dChwYWludEluZm8uY29u
dGV4dCwgcmVjdCk7CisgICAgSW50UmVjdCBmdWxsUHJvZ3Jlc3NCYXJSZWN0KEludFBvaW50KCks
IHJlY3Quc2l6ZSgpKTsKKyAgICB3aWRnZXRDb250ZXh0Lmd0a1BhaW50Qm94KGZ1bGxQcm9ncmVz
c0JhclJlY3QsIHdpZGdldCwgR1RLX1NUQVRFX05PUk1BTCwgR1RLX1NIQURPV19JTiwgInRyb3Vn
aCIpOwogCi0gICAgaWYgKHBhaW50UmVuZGVyT2JqZWN0KE1PWl9HVEtfUFJPR1JFU1NCQVIsIHJl
bmRlck9iamVjdCwgcGFpbnRJbmZvLmNvbnRleHQsIHJlY3QpKQotICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICBHdGtTdHlsZSogc3R5bGUgPSBndGtfd2lkZ2V0X2dldF9zdHlsZSh3aWRnZXQpOwor
ICAgIEludFJlY3QgcHJvZ3Jlc3NSZWN0KGZ1bGxQcm9ncmVzc0JhclJlY3QpOworICAgIHByb2dy
ZXNzUmVjdC5pbmZsYXRlWCgtc3R5bGUtPnh0aGlja25lc3MpOworICAgIHByb2dyZXNzUmVjdC5p
bmZsYXRlWSgtc3R5bGUtPnl0aGlja25lc3MpOworICAgIFJlbmRlclRoZW1lR3RrOjpjYWxjdWxh
dGVQcm9ncmVzc1JlY3QocmVuZGVyT2JqZWN0LCBwcm9ncmVzc1JlY3QpOwogCi0gICAgSW50UmVj
dCBjaHVua1JlY3QocmVjdCk7Ci0gICAgUmVuZGVyUHJvZ3Jlc3MqIHJlbmRlclByb2dyZXNzID0g
dG9SZW5kZXJQcm9ncmVzcyhyZW5kZXJPYmplY3QpOworICAgIGlmICghcHJvZ3Jlc3NSZWN0Lmlz
RW1wdHkoKSkKKyAgICAgICAgd2lkZ2V0Q29udGV4dC5ndGtQYWludEJveChwcm9ncmVzc1JlY3Qs
IHdpZGdldCwgR1RLX1NUQVRFX05PUk1BTCwgR1RLX1NIQURPV19JTiwgImJhciIpOwogCi0gICAg
R3RrU3R5bGUqIHN0eWxlID0gZ3RrX3dpZGdldF9nZXRfc3R5bGUocHJvZ3Jlc3NCYXJXaWRnZXQp
OwotICAgIGNodW5rUmVjdC5zZXRIZWlnaHQoY2h1bmtSZWN0LmhlaWdodCgpIC0gKDIgKiBzdHls
ZS0+eXRoaWNrbmVzcykpOwotICAgIGNodW5rUmVjdC5zZXRZKGNodW5rUmVjdC55KCkgKyBzdHls
ZS0+eXRoaWNrbmVzcyk7Ci0gICAgY2h1bmtSZWN0LnNldFdpZHRoKChjaHVua1JlY3Qud2lkdGgo
KSAtICgyICogc3R5bGUtPnh0aGlja25lc3MpKSAqIHJlbmRlclByb2dyZXNzLT5wb3NpdGlvbigp
KTsKLSAgICBpZiAocmVuZGVyT2JqZWN0LT5zdHlsZSgpLT5kaXJlY3Rpb24oKSA9PSBSVEwpCi0g
ICAgICAgIGNodW5rUmVjdC5zZXRYKHJlY3QueCgpICsgcmVjdC53aWR0aCgpIC0gY2h1bmtSZWN0
LndpZHRoKCkgLSBzdHlsZS0+eHRoaWNrbmVzcyk7Ci0gICAgZWxzZQotICAgICAgICBjaHVua1Jl
Y3Quc2V0WChjaHVua1JlY3QueCgpICsgc3R5bGUtPnh0aGlja25lc3MpOwotCi0gICAgcmV0dXJu
IHBhaW50UmVuZGVyT2JqZWN0KE1PWl9HVEtfUFJPR1JFU1NfQ0hVTkssIHJlbmRlck9iamVjdCwg
cGFpbnRJbmZvLmNvbnRleHQsIGNodW5rUmVjdCk7CisgICAgcmV0dXJuIGZhbHNlOwogfQogI2Vu
ZGlmCiAKQEAgLTY4NCw2ICs2NjEsMTYgQEAgR3RrV2lkZ2V0KiBSZW5kZXJUaGVtZUd0azo6Z3Rr
Q2hlY2tCdXR0b24oKSBjb25zdAogICAgIHJldHVybiBtX2d0a0NoZWNrQnV0dG9uOwogfQogCitH
dGtXaWRnZXQqIFJlbmRlclRoZW1lR3RrOjpndGtQcm9ncmVzc0JhcigpIGNvbnN0Cit7CisgICAg
aWYgKG1fZ3RrUHJvZ3Jlc3NCYXIpCisgICAgICAgIHJldHVybiBtX2d0a1Byb2dyZXNzQmFyOwor
ICAgIG1fZ3RrUHJvZ3Jlc3NCYXIgPSBndGtfcHJvZ3Jlc3NfYmFyX25ldygpOworICAgIHNldHVw
V2lkZ2V0QW5kQWRkVG9Db250YWluZXIobV9ndGtQcm9ncmVzc0JhciwgZ3RrQ29udGFpbmVyKCkp
OworICAgIHJldHVybiBtX2d0a1Byb2dyZXNzQmFyOworfQorCisKIEd0a1dpZGdldCogUmVuZGVy
VGhlbWVHdGs6Omd0a1Njcm9sbGJhcigpCiB7CiAgICAgcmV0dXJuIG1vel9ndGtfZ2V0X3Njcm9s
bGJhcl93aWRnZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9S
ZW5kZXJUaGVtZUd0azMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRo
ZW1lR3RrMy5jcHAKaW5kZXggMjEyZTI5ZGVjZTQyYjQzZTc2YTdmM2JhYTk0ZWUzZjVkY2U4ZjNj
Mi4uY2I4ZTZjODlkNjFhNjIxOTczMGZiMWY1ZDQzOGZjZDM2NTdhZjZiYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrMy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrMy5jcHAKQEAgLTQxLDEwICs0
MSw2IEBACiAjaW5jbHVkZSA8Z2RrL2dkay5oPgogI2luY2x1ZGUgPGd0ay9ndGsuaD4KIAotI2lm
IEVOQUJMRShQUk9HUkVTU19UQUcpCi0jaW5jbHVkZSAiUmVuZGVyUHJvZ3Jlc3MuaCIKLSNlbmRp
ZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIFRoaXMgaXMgdGhlIGRlZmF1bHQgdmFsdWUg
ZGVmaW5lZCBieSBHVEsrLCB3aGVyZSBpdCB3YXMgZGVmaW5lZCBhcyBNSU5fQVJST1dfU0laRSBp
biBndGthcnJvdy5jLgpAQCAtNjkwLDIwICs2ODYsNiBAQCB2b2lkIFJlbmRlclRoZW1lR3RrOjph
ZGp1c3RTbGlkZXJUaHVtYlNpemUoUmVuZGVyT2JqZWN0KiByZW5kZXJPYmplY3QpIGNvbnN0CiB9
CiAKICNpZiBFTkFCTEUoUFJPR1JFU1NfVEFHKQotLy8gVGhlc2UgdmFsdWVzIGhhdmUgYmVlbiBj
b3BpZWQgZnJvbSBSZW5kZXJUaGVtZUNocm9taXVtU2tpYS5jcHAKLXN0YXRpYyBjb25zdCBpbnQg
cHJvZ3Jlc3NBY3Rpdml0eUJsb2NrcyA9IDU7Ci1zdGF0aWMgY29uc3QgaW50IHByb2dyZXNzQW5p
bWF0aW9uRnJhbWVzID0gMTA7Ci1zdGF0aWMgY29uc3QgZG91YmxlIHByb2dyZXNzQW5pbWF0aW9u
SW50ZXJ2YWwgPSAwLjEyNTsKLWRvdWJsZSBSZW5kZXJUaGVtZUd0azo6YW5pbWF0aW9uUmVwZWF0
SW50ZXJ2YWxGb3JQcm9ncmVzc0JhcihSZW5kZXJQcm9ncmVzcyopIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIHByb2dyZXNzQW5pbWF0aW9uSW50ZXJ2YWw7Ci19Ci0KLWRvdWJsZSBSZW5kZXJUaGVtZUd0
azo6YW5pbWF0aW9uRHVyYXRpb25Gb3JQcm9ncmVzc0JhcihSZW5kZXJQcm9ncmVzcyopIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIHByb2dyZXNzQW5pbWF0aW9uSW50ZXJ2YWwgKiBwcm9ncmVzc0FuaW1h
dGlvbkZyYW1lcyAqIDI7IC8vICIyIiBmb3IgYmFjayBhbmQgZm9ydGg7Ci19Ci0KIGJvb2wgUmVu
ZGVyVGhlbWVHdGs6OnBhaW50UHJvZ3Jlc3NCYXIoUmVuZGVyT2JqZWN0KiByZW5kZXJPYmplY3Qs
IGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAg
IGlmICghcmVuZGVyT2JqZWN0LT5pc1Byb2dyZXNzKCkpCkBAIC03MjIsMzQgKzcwNCwxOCBAQCBi
b29sIFJlbmRlclRoZW1lR3RrOjpwYWludFByb2dyZXNzQmFyKFJlbmRlck9iamVjdCogcmVuZGVy
T2JqZWN0LCBjb25zdCBQYWludEluZgogICAgIGd0a19zdHlsZV9jb250ZXh0X3NhdmUoY29udGV4
dCk7CiAgICAgZ3RrX3N0eWxlX2NvbnRleHRfYWRkX2NsYXNzKGNvbnRleHQsIEdUS19TVFlMRV9D
TEFTU19QUk9HUkVTU0JBUik7CiAKLSAgICBSZW5kZXJQcm9ncmVzcyogcmVuZGVyUHJvZ3Jlc3Mg
PSB0b1JlbmRlclByb2dyZXNzKHJlbmRlck9iamVjdCk7CiAKICAgICBHdGtCb3JkZXIgcGFkZGlu
ZzsKICAgICBndGtfc3R5bGVfY29udGV4dF9nZXRfcGFkZGluZyhjb250ZXh0LCBzdGF0aWNfY2Fz
dDxHdGtTdGF0ZUZsYWdzPigwKSwgJnBhZGRpbmcpOwogICAgIEludFJlY3QgcHJvZ3Jlc3NSZWN0
KHJlY3QueCgpICsgcGFkZGluZy5sZWZ0LCByZWN0LnkoKSArIHBhZGRpbmcudG9wLAogICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlY3Qud2lkdGgoKSAtIChwYWRkaW5nLmxlZnQgKyBwYWRkaW5n
LnJpZ2h0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0LmhlaWdodCgpIC0gKHBhZGRp
bmcudG9wICsgcGFkZGluZy5ib3R0b20pKTsKLQotICAgIGlmIChyZW5kZXJQcm9ncmVzcy0+aXNE
ZXRlcm1pbmF0ZSgpKSB7Ci0gICAgICAgIHByb2dyZXNzUmVjdC5zZXRXaWR0aChwcm9ncmVzc1Jl
Y3Qud2lkdGgoKSAqIHJlbmRlclByb2dyZXNzLT5wb3NpdGlvbigpKTsKLSAgICAgICAgaWYgKHJl
bmRlck9iamVjdC0+c3R5bGUoKS0+ZGlyZWN0aW9uKCkgPT0gUlRMKQotICAgICAgICAgICAgcHJv
Z3Jlc3NSZWN0LnNldFgocmVjdC54KCkgKyByZWN0LndpZHRoKCkgLSBwcm9ncmVzc1JlY3Qud2lk
dGgoKSAtIHBhZGRpbmcucmlnaHQpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGRvdWJsZSBhbmlt
YXRpb25Qcm9ncmVzcyA9IHJlbmRlclByb2dyZXNzLT5hbmltYXRpb25Qcm9ncmVzcygpOwotCi0g
ICAgICAgIHByb2dyZXNzUmVjdC5zZXRXaWR0aChtYXgoMiwgcHJvZ3Jlc3NSZWN0LndpZHRoKCkg
LyBwcm9ncmVzc0FjdGl2aXR5QmxvY2tzKSk7Ci0gICAgICAgIGludCBtb3ZhYmxlV2lkdGggPSBy
ZWN0LndpZHRoKCkgLSBwcm9ncmVzc1JlY3Qud2lkdGgoKTsKLSAgICAgICAgaWYgKGFuaW1hdGlv
blByb2dyZXNzIDwgMC41KQotICAgICAgICAgICAgcHJvZ3Jlc3NSZWN0LnNldFgocHJvZ3Jlc3NS
ZWN0LngoKSArIChhbmltYXRpb25Qcm9ncmVzcyAqIDIgKiBtb3ZhYmxlV2lkdGgpKTsKLSAgICAg
ICAgZWxzZQotICAgICAgICAgICAgcHJvZ3Jlc3NSZWN0LnNldFgocHJvZ3Jlc3NSZWN0LngoKSAr
ICgoMS4wIC0gYW5pbWF0aW9uUHJvZ3Jlc3MpICogMiAqIG1vdmFibGVXaWR0aCkpOwotICAgIH0K
KyAgICBSZW5kZXJUaGVtZUd0azo6Y2FsY3VsYXRlUHJvZ3Jlc3NSZWN0KHJlbmRlck9iamVjdCwg
cHJvZ3Jlc3NSZWN0KTsKIAogICAgIGlmICghcHJvZ3Jlc3NSZWN0LmlzRW1wdHkoKSkKICAgICAg
ICAgZ3RrX3JlbmRlcl9hY3Rpdml0eShjb250ZXh0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZv
cm1Db250ZXh0KCksIHByb2dyZXNzUmVjdC54KCksIHByb2dyZXNzUmVjdC55KCksIHByb2dyZXNz
UmVjdC53aWR0aCgpLCBwcm9ncmVzc1JlY3QuaGVpZ2h0KCkpOwogCiAgICAgZ3RrX3N0eWxlX2Nv
bnRleHRfcmVzdG9yZShjb250ZXh0KTsKLQogICAgIHJldHVybiBmYWxzZTsKIH0KICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL2d0azJkcmF3aW5nLmMgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvZ3RrMmRyYXdpbmcuYwppbmRleCAwYzExYWViNjJi
ZjBjYzAxMGZhMGEyYzQ5YTg5OTBhYWRiZTQxY2VkLi5hYjc5Y2UzZTZhMmZkODE5YTc5MzdlOTQy
MWRkZWFjOGZlNDJmNzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
Z3RrMmRyYXdpbmcuYworKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvZ3RrMmRyYXdp
bmcuYwpAQCAtMjY4LDE2ICsyNjgsNiBAQCBlbnN1cmVfY29tYm9fYm94X3dpZGdldHMoKQogfQog
CiBzdGF0aWMgZ2ludAotZW5zdXJlX3Byb2dyZXNzX3dpZGdldCgpCi17Ci0gICAgaWYgKCFnUGFy
dHMtPnByb2dyZXNXaWRnZXQpIHsKLSAgICAgICAgZ1BhcnRzLT5wcm9ncmVzV2lkZ2V0ID0gZ3Rr
X3Byb2dyZXNzX2Jhcl9uZXcoKTsKLSAgICAgICAgc2V0dXBfd2lkZ2V0X3Byb3RvdHlwZShnUGFy
dHMtPnByb2dyZXNXaWRnZXQpOwotICAgIH0KLSAgICByZXR1cm4gTU9aX0dUS19TVUNDRVNTOwot
fQotCi1zdGF0aWMgZ2ludAogZW5zdXJlX3Njcm9sbGVkX3dpbmRvd193aWRnZXQoKQogewogICAg
IGlmICghZ1BhcnRzLT5zY3JvbGxlZFdpbmRvd1dpZGdldCkgewpAQCAtODQ4LDQ0ICs4MzgsNiBA
QCBtb3pfZ3RrX2NvbWJvX2JveF9wYWludChHZGtEcmF3YWJsZSogZHJhd2FibGUsIEdka1JlY3Rh
bmdsZSogcmVjdCwKICAgICByZXR1cm4gTU9aX0dUS19TVUNDRVNTOwogfQogCi1zdGF0aWMgZ2lu
dAotbW96X2d0a19wcm9ncmVzc2Jhcl9wYWludChHZGtEcmF3YWJsZSogZHJhd2FibGUsIEdka1Jl
Y3RhbmdsZSogcmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgR2RrUmVjdGFuZ2xlKiBj
bGlwcmVjdCwgR3RrVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pCi17Ci0gICAgR3RrU3R5bGUqIHN0
eWxlOwotCi0gICAgZW5zdXJlX3Byb2dyZXNzX3dpZGdldCgpOwotICAgIGd0a193aWRnZXRfc2V0
X2RpcmVjdGlvbihnUGFydHMtPnByb2dyZXNXaWRnZXQsIGRpcmVjdGlvbik7Ci0KLSAgICBzdHls
ZSA9IGd0a193aWRnZXRfZ2V0X3N0eWxlKGdQYXJ0cy0+cHJvZ3Jlc1dpZGdldCk7Ci0KLSAgICBU
U09mZnNldFN0eWxlR0NzKHN0eWxlLCByZWN0LT54LCByZWN0LT55KTsKLSAgICBndGtfcGFpbnRf
Ym94KHN0eWxlLCBkcmF3YWJsZSwgR1RLX1NUQVRFX05PUk1BTCwgR1RLX1NIQURPV19JTiwKLSAg
ICAgICAgICAgICAgICAgIGNsaXByZWN0LCBnUGFydHMtPnByb2dyZXNXaWRnZXQsICJ0cm91Z2gi
LCByZWN0LT54LCByZWN0LT55LAotICAgICAgICAgICAgICAgICAgcmVjdC0+d2lkdGgsIHJlY3Qt
PmhlaWdodCk7Ci0KLSAgICByZXR1cm4gTU9aX0dUS19TVUNDRVNTOwotfQotCi1zdGF0aWMgZ2lu
dAotbW96X2d0a19wcm9ncmVzc19jaHVua19wYWludChHZGtEcmF3YWJsZSogZHJhd2FibGUsIEdk
a1JlY3RhbmdsZSogcmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2RrUmVjdGFu
Z2xlKiBjbGlwcmVjdCwgR3RrVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pCi17Ci0gICAgR3RrU3R5
bGUqIHN0eWxlOwotCi0gICAgZW5zdXJlX3Byb2dyZXNzX3dpZGdldCgpOwotICAgIGd0a193aWRn
ZXRfc2V0X2RpcmVjdGlvbihnUGFydHMtPnByb2dyZXNXaWRnZXQsIGRpcmVjdGlvbik7Ci0KLSAg
ICBzdHlsZSA9IGd0a193aWRnZXRfZ2V0X3N0eWxlKGdQYXJ0cy0+cHJvZ3Jlc1dpZGdldCk7Ci0K
LSAgICBUU09mZnNldFN0eWxlR0NzKHN0eWxlLCByZWN0LT54LCByZWN0LT55KTsKLSAgICBndGtf
cGFpbnRfYm94KHN0eWxlLCBkcmF3YWJsZSwgR1RLX1NUQVRFX1BSRUxJR0hULCBHVEtfU0hBRE9X
X09VVCwKLSAgICAgICAgICAgICAgICAgIGNsaXByZWN0LCBnUGFydHMtPnByb2dyZXNXaWRnZXQs
ICJiYXIiLCByZWN0LT54LCByZWN0LT55LAotICAgICAgICAgICAgICAgICAgcmVjdC0+d2lkdGgs
IHJlY3QtPmhlaWdodCk7Ci0KLSAgICByZXR1cm4gTU9aX0dUS19TVUNDRVNTOwotfQotCiBnaW50
CiBtb3pfZ3RrX2dldF93aWRnZXRfYm9yZGVyKEd0a1RoZW1lV2lkZ2V0VHlwZSB3aWRnZXQsIGdp
bnQqIGxlZnQsIGdpbnQqIHRvcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ludCogcmln
aHQsIGdpbnQqIGJvdHRvbSwgR3RrVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24sCkBAIC05NzEsMTcg
KzkyMywxMiBAQCBtb3pfZ3RrX2dldF93aWRnZXRfYm9yZGVyKEd0a1RoZW1lV2lkZ2V0VHlwZSB3
aWRnZXQsIGdpbnQqIGxlZnQsIGdpbnQqIHRvcCwKIAogICAgICAgICAgICAgcmV0dXJuIE1PWl9H
VEtfU1VDQ0VTUzsKICAgICAgICAgfQotICAgIGNhc2UgTU9aX0dUS19QUk9HUkVTU0JBUjoKLSAg
ICAgICAgZW5zdXJlX3Byb2dyZXNzX3dpZGdldCgpOwotICAgICAgICB3ID0gZ1BhcnRzLT5wcm9n
cmVzV2lkZ2V0OwotICAgICAgICBicmVhazsKICAgICAvKiBUaGVzZSB3aWRnZXRzIGhhdmUgbm8g
Ym9yZGVycywgc2luY2UgdGhleSBhcmUgbm90IGNvbnRhaW5lcnMuICovCiAgICAgY2FzZSBNT1pf
R1RLX1NDUk9MTEJBUl9CVVRUT046CiAgICAgY2FzZSBNT1pfR1RLX1NDUk9MTEJBUl9UUkFDS19I
T1JJWk9OVEFMOgogICAgIGNhc2UgTU9aX0dUS19TQ1JPTExCQVJfVFJBQ0tfVkVSVElDQUw6CiAg
ICAgY2FzZSBNT1pfR1RLX1NDUk9MTEJBUl9USFVNQl9IT1JJWk9OVEFMOgogICAgIGNhc2UgTU9a
X0dUS19TQ1JPTExCQVJfVEhVTUJfVkVSVElDQUw6Ci0gICAgY2FzZSBNT1pfR1RLX1BST0dSRVNT
X0NIVU5LOgogICAgICAgICAqbGVmdCA9ICp0b3AgPSAqcmlnaHQgPSAqYm90dG9tID0gMDsKICAg
ICAgICAgcmV0dXJuIE1PWl9HVEtfU1VDQ0VTUzsKICAgICBkZWZhdWx0OgpAQCAtMTA1NywxMyAr
MTAwNCw2IEBAIG1vel9ndGtfd2lkZ2V0X3BhaW50KEd0a1RoZW1lV2lkZ2V0VHlwZSB3aWRnZXQs
IEdka0RyYXdhYmxlKiBkcmF3YWJsZSwKICAgICAgICAgcmV0dXJuIG1vel9ndGtfY29tYm9fYm94
X3BhaW50KGRyYXdhYmxlLCByZWN0LCBjbGlwcmVjdCwgc3RhdGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoZ2Jvb2xlYW4pIGZsYWdzLCBkaXJlY3Rpb24pOwogICAg
ICAgICBicmVhazsKLSAgICBjYXNlIE1PWl9HVEtfUFJPR1JFU1NCQVI6Ci0gICAgICAgIHJldHVy
biBtb3pfZ3RrX3Byb2dyZXNzYmFyX3BhaW50KGRyYXdhYmxlLCByZWN0LCBjbGlwcmVjdCwgZGly
ZWN0aW9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNT1pfR1RLX1BST0dSRVNTX0NIVU5L
OgotICAgICAgICByZXR1cm4gbW96X2d0a19wcm9ncmVzc19jaHVua19wYWludChkcmF3YWJsZSwg
cmVjdCwgY2xpcHJlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRpcmVjdGlvbik7Ci0gICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGdf
d2FybmluZygiVW5rbm93biB3aWRnZXQgdHlwZTogJWQiLCB3aWRnZXQpOwogICAgIH0KQEAgLTEx
MDIsMTIgKzEwNDIsNCBAQCB2b2lkIG1vel9ndGtfZGVzdHJveV90aGVtZV9wYXJ0c193aWRnZXRz
KEd0a1RoZW1lUGFydHMqIHBhcnRzKQogICAgIH0KIH0KIAotR3RrV2lkZ2V0KiBtb3pfZ3RrX2dl
dF9wcm9ncmVzc193aWRnZXQoKQotewotICAgIGlmICghaXNfaW5pdGlhbGl6ZWQpCi0gICAgICAg
IHJldHVybiBOVUxMOwotICAgIGVuc3VyZV9wcm9ncmVzc193aWRnZXQoKTsKLSAgICByZXR1cm4g
Z1BhcnRzLT5wcm9ncmVzV2lkZ2V0OwotfQotCiAjZW5kaWYgLy8gR1RLX0FQSV9WRVJTSU9OXzIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9ndGtkcmF3aW5nLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvZ3RrZHJhd2luZy5oCmluZGV4IDIzOGEyOTNhNmI5
MjAyMjc5ZTliMDczODhkZWI0MDRiYTNlOWNiMWUuLmQ0YzU5ZTRlZDkyZTk0OTdkZTg1MTRlZGZl
NWJjZjUxM2NmNzQ0NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9n
dGtkcmF3aW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL2d0a2RyYXdpbmcu
aApAQCAtOTksNyArOTksNiBAQCB0eXBlZGVmIHN0cnVjdCBfR3RrVGhlbWVQYXJ0cyB7CiAgICAg
R3RrV2lkZ2V0KiBjb21ib0JveEVudHJ5VGV4dGFyZWFXaWRnZXQ7CiAgICAgR3RrV2lkZ2V0KiBj
b21ib0JveEVudHJ5QnV0dG9uV2lkZ2V0OwogICAgIEd0a1dpZGdldCogY29tYm9Cb3hFbnRyeUFy
cm93V2lkZ2V0OwotICAgIEd0a1dpZGdldCogcHJvZ3Jlc1dpZGdldDsKICAgICBHdGtXaWRnZXQq
IHNjcm9sbGVkV2luZG93V2lkZ2V0OwogfSBHdGtUaGVtZVBhcnRzOwogCkBAIC0xMzYsMTAgKzEz
NSw2IEBAIHR5cGVkZWYgZW51bSB7CiAgIE1PWl9HVEtfU0NST0xMRURfV0lORE9XLAogICAvKiBQ
YWludHMgYSBHdGtPcHRpb25NZW51LiAqLwogICBNT1pfR1RLX0RST1BET1dOLAotICAvKiBQYWlu
dHMgYSBHdGtQcm9ncmVzc0Jhci4gKi8KLSAgTU9aX0dUS19QUk9HUkVTU0JBUiwKLSAgLyogUGFp
bnRzIGEgcHJvZ3Jlc3MgY2h1bmsgb2YgYSBHdGtQcm9ncmVzc0Jhci4gKi8KLSAgTU9aX0dUS19Q
Uk9HUkVTU19DSFVOSwogfSBHdGtUaGVtZVdpZGdldFR5cGU7CiAKIC8qKiogR2VuZXJhbCBsaWJy
YXJ5IGZ1bmN0aW9ucyAqKiovCkBAIC0yNDIsMTIgKzIzNyw2IEBAIG1vel9ndGtfZ2V0X3Njcm9s
bGJhcl9tZXRyaWNzKE1vekd0a1Njcm9sbGJhck1ldHJpY3MqIG1ldHJpY3MpOwogICovCiBHdGtX
aWRnZXQqIG1vel9ndGtfZ2V0X3Njcm9sbGJhcl93aWRnZXQodm9pZCk7CiAKLS8qKgotICogUmV0
cmlldmUgYW4gYWN0dWFsIEdUSyBwcm9ncmVzcyBiYXIgd2lkZ2V0IGZvciBzdHlsZSBhbmFseXNp
cy4gSXQgd2lsbCBub3QKLSAqIGJlIG1vZGlmaWVkLgotICovCi1HdGtXaWRnZXQqIG1vel9ndGtf
Z2V0X3Byb2dyZXNzX3dpZGdldCh2b2lkKTsKLQogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5k
aWYgLyogX19jcGx1c3BsdXMgKi8K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79447</attachid>
            <date>2011-01-19 10:37:52 -0800</date>
            <delta_ts>2011-01-19 10:37:52 -0800</delta_ts>
            <desc>Patch with extra comments and Carlos&apos; fix</desc>
            <filename>bug-52385-20110119103751.patch</filename>
            <type>text/plain</type>
            <size>18149</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkZTNkYTdjOGNjNjA4N2Y3MGRmODE5N2FhZTNmMTYwNTRkNjY3Y2M0Li45
OTFmZTE1MTJhN2QwNzU4ZWYwMDk2NDhmYjRjMmYyZWI1MjA2ZWEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzUgQEAKKzIwMTEtMDEtMTMgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2Fs
aWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFtHVEtdIE1vdmUgcHJvZ3Jlc3MgYmFyIHBhaW50aW5nIG91dCBvZiBndGsyZHJhd2luZy5jCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MjM4NQorCisg
ICAgICAgIE1vdmUgcHJvZ3Jlc3MgYmFyIHBhaW50aW5nIHRvIFJlbmRlclRoZW1lR3RrMiBhbmQg
c2hhcmUgc29tZSBhbmltYXRpb24KKyAgICAgICAgbG9naWMgYmV0d2VlbiB0aGUgR1RLKyAyLngg
YW5kIEdUSysgMy54IHBvcnQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGlzIHNob3VsZCBu
b3QgY2hhbmdlIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUmVuZGVy
VGhlbWVHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OmFuaW1hdGlv
blJlcGVhdEludGVydmFsRm9yUHJvZ3Jlc3NCYXIpOiBNb3ZlZCBmcm9tIFJlbmRlclRoZW1lR3Rr
My4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjphbmltYXRpb25EdXJhdGlvbkZv
clByb2dyZXNzQmFyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6
Y2FsY3VsYXRlUHJvZ3Jlc3NSZWN0KTogQ2FsY3VsYXRlIHRoZSBwcm9wZXIgcmVjdGFuZ2xlIGZv
ciB0aGUKKyAgICAgICAgcHJvZ3Jlc3MgaW5kaWNhdG9yIGdpdmVuIHRoZSByZWN0IGZvciB0aGUg
bWF4aW11bSBzaXplIG9mIHRoZSBpbmRpY2F0b3IuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Jl
bmRlclRoZW1lR3RrLmg6IEFkZGVkIGNhbGN1bGF0ZVByb2dyZXNzUmVjdCBkZWNsYXJhdGlvbiBh
bmQKKyAgICAgICAgYSBuZXcgd2lkZ2V0IG1lbWJlciBmb3IgR1RLKyAyLngKKyAgICAgICAgKiBw
bGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lR3RrOjpwbGF0Zm9ybUluaXQpOiBBZGRlZCBpbml0aWFsaXphdGlvbiBmb3IgdGhlIG5l
dyB3aWRnZXQgbWVtYmVyLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OnBhaW50
UHJvZ3Jlc3NCYXIpOiBQYWludCB0aGUgcHJvZ3Jlc3MgYmFyIG1hbnVhbGx5IGluc3RlYWQgb2YK
KyAgICAgICAgY2FsbGluZyB0aGUgb2xkIE1vemlsbGEgY29kZS4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lR3RrOjpndGtQcm9ncmVzc0Jhcik6IEFkZGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2d0ay9SZW5kZXJUaGVtZUd0azMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVHdGs6OnBhaW50UHJvZ3Jlc3NCYXIpOiBDYWxsIGNhbGN1bGF0ZVByb2dyZXNzUmVjdCBub3cg
dG8gZ2V0CisgICAgICAgIHRoZSBhcmVhIG9mIHRoZSBwcm9ncmVzcyBpbmRpY2F0b3IuCisgICAg
ICAgICogcGxhdGZvcm0vZ3RrL2d0azJkcmF3aW5nLmM6IFJlbW92ZSB1bnVzZWQgY29kZS4KKyAg
ICAgICAgKG1vel9ndGtfZ2V0X3dpZGdldF9ib3JkZXIpOgorICAgICAgICAobW96X2d0a193aWRn
ZXRfcGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9ndGtkcmF3aW5nLmg6IERpdHRvLgor
CiAyMDExLTAxLTEyICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwCmluZGV4IDk3Yzk2NmQ4YjI0ZjJmMzE5Mjhh
MTA0ZGU3ZTEyZTQ1NTA0NWJmMjkuLmRjZTc3NjM4NGU3NmRlZjlmZWJjMTUzYjA2Y2YyMmZlYTk1
OGVlNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVt
ZUd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3Rr
LmNwcApAQCAtNDEsNiArNDEsMTAgQEAKICNpbmNsdWRlIDxnZGsvZ2RrLmg+CiAjaW5jbHVkZSA8
Z3RrL2d0ay5oPgogCisjaWYgRU5BQkxFKFBST0dSRVNTX1RBRykKKyNpbmNsdWRlICJSZW5kZXJQ
cm9ncmVzcy5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNw
YWNlIEhUTUxOYW1lczsKQEAgLTU0Myw2ICs1NDcsNTAgQEAgdm9pZCBSZW5kZXJUaGVtZUd0azo6
YWRqdXN0UHJvZ3Jlc3NCYXJTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqIHN0
eWwKIHsKICAgICBzdHlsZS0+c2V0Qm94U2hhZG93KDApOwogfQorCisvLyBUaGVzZSB2YWx1ZXMg
aGF2ZSBiZWVuIGNvcGllZCBmcm9tIFJlbmRlclRoZW1lQ2hyb21pdW1Ta2lhLmNwcAorc3RhdGlj
IGNvbnN0IGludCBwcm9ncmVzc0FjdGl2aXR5QmxvY2tzID0gNTsKK3N0YXRpYyBjb25zdCBpbnQg
cHJvZ3Jlc3NBbmltYXRpb25GcmFtZXMgPSAxMDsKK3N0YXRpYyBjb25zdCBkb3VibGUgcHJvZ3Jl
c3NBbmltYXRpb25JbnRlcnZhbCA9IDAuMTI1OworZG91YmxlIFJlbmRlclRoZW1lR3RrOjphbmlt
YXRpb25SZXBlYXRJbnRlcnZhbEZvclByb2dyZXNzQmFyKFJlbmRlclByb2dyZXNzKikgY29uc3QK
K3sKKyAgICByZXR1cm4gcHJvZ3Jlc3NBbmltYXRpb25JbnRlcnZhbDsKK30KKworZG91YmxlIFJl
bmRlclRoZW1lR3RrOjphbmltYXRpb25EdXJhdGlvbkZvclByb2dyZXNzQmFyKFJlbmRlclByb2dy
ZXNzKikgY29uc3QKK3sKKyAgICByZXR1cm4gcHJvZ3Jlc3NBbmltYXRpb25JbnRlcnZhbCAqIHBy
b2dyZXNzQW5pbWF0aW9uRnJhbWVzICogMjsgLy8gIjIiIGZvciBiYWNrIGFuZCBmb3J0aDsKK30K
KworSW50UmVjdCBSZW5kZXJUaGVtZUd0azo6Y2FsY3VsYXRlUHJvZ3Jlc3NSZWN0KFJlbmRlck9i
amVjdCogcmVuZGVyT2JqZWN0LCBjb25zdCBJbnRSZWN0JiBmdWxsQmFyUmVjdCkKK3sKKyAgICBJ
bnRSZWN0IHByb2dyZXNzUmVjdChmdWxsQmFyUmVjdCk7CisgICAgUmVuZGVyUHJvZ3Jlc3MqIHJl
bmRlclByb2dyZXNzID0gdG9SZW5kZXJQcm9ncmVzcyhyZW5kZXJPYmplY3QpOworICAgIGlmIChy
ZW5kZXJQcm9ncmVzcy0+aXNEZXRlcm1pbmF0ZSgpKSB7CisgICAgICAgIGludCBwcm9ncmVzc1dp
ZHRoID0gcHJvZ3Jlc3NSZWN0LndpZHRoKCkgKiByZW5kZXJQcm9ncmVzcy0+cG9zaXRpb24oKTsK
KyAgICAgICAgaWYgKHJlbmRlck9iamVjdC0+c3R5bGUoKS0+ZGlyZWN0aW9uKCkgPT0gUlRMKQor
ICAgICAgICAgICAgcHJvZ3Jlc3NSZWN0LnNldFgocHJvZ3Jlc3NSZWN0LngoKSArIHByb2dyZXNz
UmVjdC53aWR0aCgpIC0gcHJvZ3Jlc3NXaWR0aCk7CisgICAgICAgIHByb2dyZXNzUmVjdC5zZXRX
aWR0aChwcm9ncmVzc1dpZHRoKTsKKyAgICAgICAgcmV0dXJuIHByb2dyZXNzUmVjdDsKKyAgICB9
CisKKyAgICBkb3VibGUgYW5pbWF0aW9uUHJvZ3Jlc3MgPSByZW5kZXJQcm9ncmVzcy0+YW5pbWF0
aW9uUHJvZ3Jlc3MoKTsKKworICAgIC8vIE5ldmVyIGxldCB0aGUgcHJvZ3Jlc3MgcmVjdCBzaHJp
bmsgc21hbGxlciB0aGFuIDIgcGl4ZWxzLgorICAgIGludCBuZXdXaWR0aCA9IG1heCgyLCBwcm9n
cmVzc1JlY3Qud2lkdGgoKSAvIHByb2dyZXNzQWN0aXZpdHlCbG9ja3MpOworICAgIGludCBtb3Zh
YmxlV2lkdGggPSBwcm9ncmVzc1JlY3Qud2lkdGgoKSAtIG5ld1dpZHRoOworICAgIHByb2dyZXNz
UmVjdC5zZXRXaWR0aChuZXdXaWR0aCk7CisKKyAgICAvLyBXZSB3YW50IHRoZSBmaXJzdCAwLjUg
dW5pdHMgb2YgdGhlIGFuaW1hdGlvbiBwcm9ncmVzcyB0byByZXByZXNlbnQgdGhlCisgICAgLy8g
Zm9yd2FyZCBtb3Rpb24gYW5kIHRoZSBzZWNvbmQgMC41IHVuaXRzIHRvIHJlcHJlc2VudCB0aGUg
YmFja3dhcmQgbW90aW9uLAorICAgIC8vIHRodXMgd2UgbXVsdGlwbHkgYnkgdHdvIGhlcmUgdG8g
Z2V0IHRoZSBmdWxsIHN3ZWVwIG9mIHRoZSBwcm9ncmVzcyBiYXIgd2l0aAorICAgIC8vIGVhY2gg
ZGlyZWN0aW9uLgorICAgIGlmIChhbmltYXRpb25Qcm9ncmVzcyA8IDAuNSkKKyAgICAgICAgcHJv
Z3Jlc3NSZWN0LnNldFgocHJvZ3Jlc3NSZWN0LngoKSArIChhbmltYXRpb25Qcm9ncmVzcyAqIDIg
KiBtb3ZhYmxlV2lkdGgpKTsKKyAgICBlbHNlCisgICAgICAgIHByb2dyZXNzUmVjdC5zZXRYKHBy
b2dyZXNzUmVjdC54KCkgKyAoKDEuMCAtIGFuaW1hdGlvblByb2dyZXNzKSAqIDIgKiBtb3ZhYmxl
V2lkdGgpKTsKKyAgICByZXR1cm4gcHJvZ3Jlc3NSZWN0OworfQogI2VuZGlmCiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmgKaW5kZXggNjVkOTM2NjM5
ZWZmODliNzQxYjE0ZDNmYmNiN2ZkOGJiNjMxMDgwOS4uYmNlODlkOWQ4Yzg0ZWFmMzdlNmE2NGJk
N2M5ZjM3OTY3OGU5MzA4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L1JlbmRlclRoZW1lR3RrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRl
clRoZW1lR3RrLmgKQEAgLTE3MSwxMSArMTcxLDE2IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToK
ICAgICB2b2lkIHBsYXRmb3JtSW5pdCgpOworICAgIHN0YXRpYyB2b2lkIHNldFRleHRJbnB1dEJv
cmRlcnMoUmVuZGVyU3R5bGUqKTsKKyAgICBHUmVmUHRyPEdka1BpeGJ1Zj4gZ2V0U3RvY2tJY29u
KEdUeXBlLCBjb25zdCBjaGFyKiBpY29uTmFtZSwgZ2ludCBkaXJlY3Rpb24sIGdpbnQgc3RhdGUs
IGdpbnQgaWNvblNpemUpOworCiAjaWYgRU5BQkxFKFZJREVPKQogICAgIGJvb2wgcGFpbnRNZWRp
YUJ1dHRvbihSZW5kZXJPYmplY3QqLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0Jiwg
Y29uc3QgY2hhciogaWNvbk5hbWUpOwogI2VuZGlmCi0gICAgc3RhdGljIHZvaWQgc2V0VGV4dElu
cHV0Qm9yZGVycyhSZW5kZXJTdHlsZSopOwotICAgIEdSZWZQdHI8R2RrUGl4YnVmPiBnZXRTdG9j
a0ljb24oR1R5cGUsIGNvbnN0IGNoYXIqIGljb25OYW1lLCBnaW50IGRpcmVjdGlvbiwgZ2ludCBz
dGF0ZSwgZ2ludCBpY29uU2l6ZSk7CisKKyNpZiBFTkFCTEUoUFJPR1JFU1NfVEFHKQorICAgIHN0
YXRpYyBJbnRSZWN0IGNhbGN1bGF0ZVByb2dyZXNzUmVjdChSZW5kZXJPYmplY3QqLCBjb25zdCBJ
bnRSZWN0Jik7CisjZW5kaWYKIAogICAgIG11dGFibGUgQ29sb3IgbV9wYW5lbENvbG9yOwogICAg
IG11dGFibGUgQ29sb3IgbV9zbGlkZXJDb2xvcjsKQEAgLTE5Nyw2ICsyMDIsNyBAQCBwcml2YXRl
OgogICAgIEd0a1dpZGdldCogZ3RrQ29udGFpbmVyKCkgY29uc3Q7CiAgICAgR3RrV2lkZ2V0KiBn
dGtSYWRpb0J1dHRvbigpIGNvbnN0OwogICAgIEd0a1dpZGdldCogZ3RrQ2hlY2tCdXR0b24oKSBj
b25zdDsKKyAgICBHdGtXaWRnZXQqIGd0a1Byb2dyZXNzQmFyKCkgY29uc3Q7CiAKICAgICBtdXRh
YmxlIEd0a1dpZGdldCogbV9ndGtXaW5kb3c7CiAgICAgbXV0YWJsZSBHdGtXaWRnZXQqIG1fZ3Rr
Q29udGFpbmVyOwpAQCAtMjA3LDYgKzIxMyw3IEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBHdGtX
aWRnZXQqIG1fZ3RrSFNjYWxlOwogICAgIG11dGFibGUgR3RrV2lkZ2V0KiBtX2d0a1JhZGlvQnV0
dG9uOwogICAgIG11dGFibGUgR3RrV2lkZ2V0KiBtX2d0a0NoZWNrQnV0dG9uOworICAgIG11dGFi
bGUgR3RrV2lkZ2V0KiBtX2d0a1Byb2dyZXNzQmFyOwogCiAgICAgYm9vbCBtX3RoZW1lUGFydHNI
YXZlUkdCQUNvbG9ybWFwOwogICAgIGZyaWVuZCBjbGFzcyBXaWRnZXRSZW5kZXJpbmdDb250ZXh0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3Rr
Mi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsyLmNwcApp
bmRleCA0YjQzYTA0MGQ3NTZjYjdmODYwY2RhZGMwZTgzYTdmZjk2NDY0MjQwLi45MTY0MDk3NmYy
ZmVkNzI0MjI5Yzc3ZTA4Njc3OTUzYmI3ZTc0ODVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsyLmNwcApAQCAtNDUsMTAgKzQ1LDYgQEAKICNpbmNs
dWRlIDxnZGsvZ2RrLmg+CiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgogCi0jaWYgRU5BQkxFKFBST0dS
RVNTX1RBRykKLSNpbmNsdWRlICJSZW5kZXJQcm9ncmVzcy5oIgotI2VuZGlmCi0KIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogLy8gVGhpcyBpcyBub3QgYSBzdGF0aWMgbWV0aG9kLCBiZWNhdXNlIHdl
IHdhbnQgdG8gYXZvaWQgaGF2aW5nIEdUSysgaGVhZGVycyBpbiBSZW5kZXJUaGVtZUd0ay5oLgpA
QCAtNjcsNiArNjMsNyBAQCB2b2lkIFJlbmRlclRoZW1lR3RrOjpwbGF0Zm9ybUluaXQoKQogICAg
IG1fZ3RrSFNjYWxlID0gMDsKICAgICBtX2d0a1JhZGlvQnV0dG9uID0gMDsKICAgICBtX2d0a0No
ZWNrQnV0dG9uID0gMDsKKyAgICBtX2d0a1Byb2dyZXNzQmFyID0gMDsKIAogICAgIG1lbXNldCgm
bV90aGVtZVBhcnRzLCAwLCBzaXplb2YoR3RrVGhlbWVQYXJ0cykpOwogICAgIEdka0NvbG9ybWFw
KiBjb2xvcm1hcCA9IGdka19zY3JlZW5fZ2V0X3JnYmFfY29sb3JtYXAoZ2RrX3NjcmVlbl9nZXRf
ZGVmYXVsdCgpKTsKQEAgLTQ3NSw0NSArNDcyLDI1IEBAIHZvaWQgUmVuZGVyVGhlbWVHdGs6OmFk
anVzdFNsaWRlclRodW1iU2l6ZShSZW5kZXJPYmplY3QqIG8pIGNvbnN0CiB9CiAKICNpZiBFTkFC
TEUoUFJPR1JFU1NfVEFHKQotZG91YmxlIFJlbmRlclRoZW1lR3RrOjphbmltYXRpb25SZXBlYXRJ
bnRlcnZhbEZvclByb2dyZXNzQmFyKFJlbmRlclByb2dyZXNzKikgY29uc3QKLXsKLSAgICAvLyBG
SVhNRTogSXQgZG9lc24ndCBsb29rIGxpa2UgdGhlcmUgaXMgYSBnb29kIHdheSB5ZXQgdG8gc3Vw
cG9ydCBhbmltYXRlZAotICAgIC8vIHByb2dyZXNzIGJhcnMgd2l0aCB0aGUgTW96aWxsYSB0aGVt
ZSBkcmF3aW5nIGNvZGUuCi0gICAgcmV0dXJuIDA7Ci19Ci0KLWRvdWJsZSBSZW5kZXJUaGVtZUd0
azo6YW5pbWF0aW9uRHVyYXRpb25Gb3JQcm9ncmVzc0JhcihSZW5kZXJQcm9ncmVzcyopIGNvbnN0
Ci17Ci0gICAgLy8gRklYTUU6IEl0IGRvZXNuJ3QgbG9vayBsaWtlIHRoZXJlIGlzIGEgZ29vZCB3
YXkgeWV0IHRvIHN1cHBvcnQgYW5pbWF0ZWQKLSAgICAvLyBwcm9ncmVzcyBiYXJzIHdpdGggdGhl
IE1vemlsbGEgdGhlbWUgZHJhd2luZyBjb2RlLgotICAgIHJldHVybiAwOwotfQotCiBib29sIFJl
bmRlclRoZW1lR3RrOjpwYWludFByb2dyZXNzQmFyKFJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0
LCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKLSAg
ICBpZiAoIXJlbmRlck9iamVjdC0+aXNQcm9ncmVzcygpKQotICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICBHdGtXaWRnZXQqIHdpZGdldCA9IGd0a1Byb2dyZXNzQmFyKCk7CisgICAgZ3RrX3dpZGdl
dF9zZXRfZGlyZWN0aW9uKHdpZGdldCwgZ3RrVGV4dERpcmVjdGlvbihyZW5kZXJPYmplY3QtPnN0
eWxlKCktPmRpcmVjdGlvbigpKSk7CiAKLSAgICBHdGtXaWRnZXQqIHByb2dyZXNzQmFyV2lkZ2V0
ID0gbW96X2d0a19nZXRfcHJvZ3Jlc3Nfd2lkZ2V0KCk7Ci0gICAgaWYgKCFwcm9ncmVzc0Jhcldp
ZGdldCkKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgV2lkZ2V0UmVuZGVyaW5nQ29udGV4dCB3
aWRnZXRDb250ZXh0KHBhaW50SW5mby5jb250ZXh0LCByZWN0KTsKKyAgICBJbnRSZWN0IGZ1bGxQ
cm9ncmVzc0JhclJlY3QoSW50UG9pbnQoKSwgcmVjdC5zaXplKCkpOworICAgIHdpZGdldENvbnRl
eHQuZ3RrUGFpbnRCb3goZnVsbFByb2dyZXNzQmFyUmVjdCwgd2lkZ2V0LCBHVEtfU1RBVEVfTk9S
TUFMLCBHVEtfU0hBRE9XX0lOLCAidHJvdWdoIik7CiAKLSAgICBpZiAocGFpbnRSZW5kZXJPYmpl
Y3QoTU9aX0dUS19QUk9HUkVTU0JBUiwgcmVuZGVyT2JqZWN0LCBwYWludEluZm8uY29udGV4dCwg
cmVjdCkpCi0gICAgICAgIHJldHVybiB0cnVlOworICAgIEd0a1N0eWxlKiBzdHlsZSA9IGd0a193
aWRnZXRfZ2V0X3N0eWxlKHdpZGdldCk7CisgICAgSW50UmVjdCBwcm9ncmVzc1JlY3QoZnVsbFBy
b2dyZXNzQmFyUmVjdCk7CisgICAgcHJvZ3Jlc3NSZWN0LmluZmxhdGVYKC1zdHlsZS0+eHRoaWNr
bmVzcyk7CisgICAgcHJvZ3Jlc3NSZWN0LmluZmxhdGVZKC1zdHlsZS0+eXRoaWNrbmVzcyk7Cisg
ICAgcHJvZ3Jlc3NSZWN0ID0gUmVuZGVyVGhlbWVHdGs6OmNhbGN1bGF0ZVByb2dyZXNzUmVjdChy
ZW5kZXJPYmplY3QsIHByb2dyZXNzUmVjdCk7CiAKLSAgICBJbnRSZWN0IGNodW5rUmVjdChyZWN0
KTsKLSAgICBSZW5kZXJQcm9ncmVzcyogcmVuZGVyUHJvZ3Jlc3MgPSB0b1JlbmRlclByb2dyZXNz
KHJlbmRlck9iamVjdCk7CisgICAgaWYgKCFwcm9ncmVzc1JlY3QuaXNFbXB0eSgpKQorICAgICAg
ICB3aWRnZXRDb250ZXh0Lmd0a1BhaW50Qm94KHByb2dyZXNzUmVjdCwgd2lkZ2V0LCBHVEtfU1RB
VEVfUFJFTElHSFQsIEdUS19TSEFET1dfT1VULCAiYmFyIik7CiAKLSAgICBHdGtTdHlsZSogc3R5
bGUgPSBndGtfd2lkZ2V0X2dldF9zdHlsZShwcm9ncmVzc0JhcldpZGdldCk7Ci0gICAgY2h1bmtS
ZWN0LnNldEhlaWdodChjaHVua1JlY3QuaGVpZ2h0KCkgLSAoMiAqIHN0eWxlLT55dGhpY2tuZXNz
KSk7Ci0gICAgY2h1bmtSZWN0LnNldFkoY2h1bmtSZWN0LnkoKSArIHN0eWxlLT55dGhpY2tuZXNz
KTsKLSAgICBjaHVua1JlY3Quc2V0V2lkdGgoKGNodW5rUmVjdC53aWR0aCgpIC0gKDIgKiBzdHls
ZS0+eHRoaWNrbmVzcykpICogcmVuZGVyUHJvZ3Jlc3MtPnBvc2l0aW9uKCkpOwotICAgIGlmIChy
ZW5kZXJPYmplY3QtPnN0eWxlKCktPmRpcmVjdGlvbigpID09IFJUTCkKLSAgICAgICAgY2h1bmtS
ZWN0LnNldFgocmVjdC54KCkgKyByZWN0LndpZHRoKCkgLSBjaHVua1JlY3Qud2lkdGgoKSAtIHN0
eWxlLT54dGhpY2tuZXNzKTsKLSAgICBlbHNlCi0gICAgICAgIGNodW5rUmVjdC5zZXRYKGNodW5r
UmVjdC54KCkgKyBzdHlsZS0+eHRoaWNrbmVzcyk7Ci0KLSAgICByZXR1cm4gcGFpbnRSZW5kZXJP
YmplY3QoTU9aX0dUS19QUk9HUkVTU19DSFVOSywgcmVuZGVyT2JqZWN0LCBwYWludEluZm8uY29u
dGV4dCwgY2h1bmtSZWN0KTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAjZW5kaWYKIApAQCAtNjg0
LDYgKzY2MSwxNiBAQCBHdGtXaWRnZXQqIFJlbmRlclRoZW1lR3RrOjpndGtDaGVja0J1dHRvbigp
IGNvbnN0CiAgICAgcmV0dXJuIG1fZ3RrQ2hlY2tCdXR0b247CiB9CiAKK0d0a1dpZGdldCogUmVu
ZGVyVGhlbWVHdGs6Omd0a1Byb2dyZXNzQmFyKCkgY29uc3QKK3sKKyAgICBpZiAobV9ndGtQcm9n
cmVzc0JhcikKKyAgICAgICAgcmV0dXJuIG1fZ3RrUHJvZ3Jlc3NCYXI7CisgICAgbV9ndGtQcm9n
cmVzc0JhciA9IGd0a19wcm9ncmVzc19iYXJfbmV3KCk7CisgICAgc2V0dXBXaWRnZXRBbmRBZGRU
b0NvbnRhaW5lcihtX2d0a1Byb2dyZXNzQmFyLCBndGtDb250YWluZXIoKSk7CisgICAgcmV0dXJu
IG1fZ3RrUHJvZ3Jlc3NCYXI7Cit9CisKKwogR3RrV2lkZ2V0KiBSZW5kZXJUaGVtZUd0azo6Z3Rr
U2Nyb2xsYmFyKCkKIHsKICAgICByZXR1cm4gbW96X2d0a19nZXRfc2Nyb2xsYmFyX3dpZGdldCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3Rr
My5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGszLmNwcApp
bmRleCAyMTJlMjlkZWNlNDJiNDNlNzZhN2YzYmFhOTRlZTNmNWRjZThmM2MyLi4xYTlmNDQ1MzQ3
YTlmYjY4ZGYxZGUzNmNiMGE3ZGI3Y2Y0NzM1ZDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGszLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGszLmNwcApAQCAtNDEsMTAgKzQxLDYgQEAKICNpbmNs
dWRlIDxnZGsvZ2RrLmg+CiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgogCi0jaWYgRU5BQkxFKFBST0dS
RVNTX1RBRykKLSNpbmNsdWRlICJSZW5kZXJQcm9ncmVzcy5oIgotI2VuZGlmCi0KIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogLy8gVGhpcyBpcyB0aGUgZGVmYXVsdCB2YWx1ZSBkZWZpbmVkIGJ5IEdU
SyssIHdoZXJlIGl0IHdhcyBkZWZpbmVkIGFzIE1JTl9BUlJPV19TSVpFIGluIGd0a2Fycm93LmMu
CkBAIC02OTAsMjAgKzY4Niw2IEBAIHZvaWQgUmVuZGVyVGhlbWVHdGs6OmFkanVzdFNsaWRlclRo
dW1iU2l6ZShSZW5kZXJPYmplY3QqIHJlbmRlck9iamVjdCkgY29uc3QKIH0KIAogI2lmIEVOQUJM
RShQUk9HUkVTU19UQUcpCi0vLyBUaGVzZSB2YWx1ZXMgaGF2ZSBiZWVuIGNvcGllZCBmcm9tIFJl
bmRlclRoZW1lQ2hyb21pdW1Ta2lhLmNwcAotc3RhdGljIGNvbnN0IGludCBwcm9ncmVzc0FjdGl2
aXR5QmxvY2tzID0gNTsKLXN0YXRpYyBjb25zdCBpbnQgcHJvZ3Jlc3NBbmltYXRpb25GcmFtZXMg
PSAxMDsKLXN0YXRpYyBjb25zdCBkb3VibGUgcHJvZ3Jlc3NBbmltYXRpb25JbnRlcnZhbCA9IDAu
MTI1OwotZG91YmxlIFJlbmRlclRoZW1lR3RrOjphbmltYXRpb25SZXBlYXRJbnRlcnZhbEZvclBy
b2dyZXNzQmFyKFJlbmRlclByb2dyZXNzKikgY29uc3QKLXsKLSAgICByZXR1cm4gcHJvZ3Jlc3NB
bmltYXRpb25JbnRlcnZhbDsKLX0KLQotZG91YmxlIFJlbmRlclRoZW1lR3RrOjphbmltYXRpb25E
dXJhdGlvbkZvclByb2dyZXNzQmFyKFJlbmRlclByb2dyZXNzKikgY29uc3QKLXsKLSAgICByZXR1
cm4gcHJvZ3Jlc3NBbmltYXRpb25JbnRlcnZhbCAqIHByb2dyZXNzQW5pbWF0aW9uRnJhbWVzICog
MjsgLy8gIjIiIGZvciBiYWNrIGFuZCBmb3J0aDsKLX0KLQogYm9vbCBSZW5kZXJUaGVtZUd0azo6
cGFpbnRQcm9ncmVzc0JhcihSZW5kZXJPYmplY3QqIHJlbmRlck9iamVjdCwgY29uc3QgUGFpbnRJ
bmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgaWYgKCFyZW5kZXJP
YmplY3QtPmlzUHJvZ3Jlc3MoKSkKQEAgLTcyMiwzNCArNzA0LDE4IEBAIGJvb2wgUmVuZGVyVGhl
bWVHdGs6OnBhaW50UHJvZ3Jlc3NCYXIoUmVuZGVyT2JqZWN0KiByZW5kZXJPYmplY3QsIGNvbnN0
IFBhaW50SW5mCiAgICAgZ3RrX3N0eWxlX2NvbnRleHRfc2F2ZShjb250ZXh0KTsKICAgICBndGtf
c3R5bGVfY29udGV4dF9hZGRfY2xhc3MoY29udGV4dCwgR1RLX1NUWUxFX0NMQVNTX1BST0dSRVNT
QkFSKTsKIAotICAgIFJlbmRlclByb2dyZXNzKiByZW5kZXJQcm9ncmVzcyA9IHRvUmVuZGVyUHJv
Z3Jlc3MocmVuZGVyT2JqZWN0KTsKIAogICAgIEd0a0JvcmRlciBwYWRkaW5nOwogICAgIGd0a19z
dHlsZV9jb250ZXh0X2dldF9wYWRkaW5nKGNvbnRleHQsIHN0YXRpY19jYXN0PEd0a1N0YXRlRmxh
Z3M+KDApLCAmcGFkZGluZyk7CiAgICAgSW50UmVjdCBwcm9ncmVzc1JlY3QocmVjdC54KCkgKyBw
YWRkaW5nLmxlZnQsIHJlY3QueSgpICsgcGFkZGluZy50b3AsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVjdC53aWR0aCgpIC0gKHBhZGRpbmcubGVmdCArIHBhZGRpbmcucmlnaHQpLAogICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlY3QuaGVpZ2h0KCkgLSAocGFkZGluZy50b3AgKyBwYWRk
aW5nLmJvdHRvbSkpOwotCi0gICAgaWYgKHJlbmRlclByb2dyZXNzLT5pc0RldGVybWluYXRlKCkp
IHsKLSAgICAgICAgcHJvZ3Jlc3NSZWN0LnNldFdpZHRoKHByb2dyZXNzUmVjdC53aWR0aCgpICog
cmVuZGVyUHJvZ3Jlc3MtPnBvc2l0aW9uKCkpOwotICAgICAgICBpZiAocmVuZGVyT2JqZWN0LT5z
dHlsZSgpLT5kaXJlY3Rpb24oKSA9PSBSVEwpCi0gICAgICAgICAgICBwcm9ncmVzc1JlY3Quc2V0
WChyZWN0LngoKSArIHJlY3Qud2lkdGgoKSAtIHByb2dyZXNzUmVjdC53aWR0aCgpIC0gcGFkZGlu
Zy5yaWdodCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZG91YmxlIGFuaW1hdGlvblByb2dyZXNz
ID0gcmVuZGVyUHJvZ3Jlc3MtPmFuaW1hdGlvblByb2dyZXNzKCk7Ci0KLSAgICAgICAgcHJvZ3Jl
c3NSZWN0LnNldFdpZHRoKG1heCgyLCBwcm9ncmVzc1JlY3Qud2lkdGgoKSAvIHByb2dyZXNzQWN0
aXZpdHlCbG9ja3MpKTsKLSAgICAgICAgaW50IG1vdmFibGVXaWR0aCA9IHJlY3Qud2lkdGgoKSAt
IHByb2dyZXNzUmVjdC53aWR0aCgpOwotICAgICAgICBpZiAoYW5pbWF0aW9uUHJvZ3Jlc3MgPCAw
LjUpCi0gICAgICAgICAgICBwcm9ncmVzc1JlY3Quc2V0WChwcm9ncmVzc1JlY3QueCgpICsgKGFu
aW1hdGlvblByb2dyZXNzICogMiAqIG1vdmFibGVXaWR0aCkpOwotICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBwcm9ncmVzc1JlY3Quc2V0WChwcm9ncmVzc1JlY3QueCgpICsgKCgxLjAgLSBhbmlt
YXRpb25Qcm9ncmVzcykgKiAyICogbW92YWJsZVdpZHRoKSk7Ci0gICAgfQorICAgIHByb2dyZXNz
UmVjdCA9IFJlbmRlclRoZW1lR3RrOjpjYWxjdWxhdGVQcm9ncmVzc1JlY3QocmVuZGVyT2JqZWN0
LCBwcm9ncmVzc1JlY3QpOwogCiAgICAgaWYgKCFwcm9ncmVzc1JlY3QuaXNFbXB0eSgpKQogICAg
ICAgICBndGtfcmVuZGVyX2FjdGl2aXR5KGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0
Zm9ybUNvbnRleHQoKSwgcHJvZ3Jlc3NSZWN0LngoKSwgcHJvZ3Jlc3NSZWN0LnkoKSwgcHJvZ3Jl
c3NSZWN0LndpZHRoKCksIHByb2dyZXNzUmVjdC5oZWlnaHQoKSk7CiAKICAgICBndGtfc3R5bGVf
Y29udGV4dF9yZXN0b3JlKGNvbnRleHQpOwotCiAgICAgcmV0dXJuIGZhbHNlOwogfQogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvZ3RrMmRyYXdpbmcuYyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9ndGsyZHJhd2luZy5jCmluZGV4IDBjMTFhZWI2
MmJmMGNjMDEwZmEwYTJjNDlhODk5MGFhZGJlNDFjZWQuLmFiNzljZTNlNmEyZmQ4MTlhNzkzN2U5
NDIxZGRlYWM4ZmU0MmY3ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9ndGsyZHJhd2luZy5jCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9ndGsyZHJh
d2luZy5jCkBAIC0yNjgsMTYgKzI2OCw2IEBAIGVuc3VyZV9jb21ib19ib3hfd2lkZ2V0cygpCiB9
CiAKIHN0YXRpYyBnaW50Ci1lbnN1cmVfcHJvZ3Jlc3Nfd2lkZ2V0KCkKLXsKLSAgICBpZiAoIWdQ
YXJ0cy0+cHJvZ3Jlc1dpZGdldCkgewotICAgICAgICBnUGFydHMtPnByb2dyZXNXaWRnZXQgPSBn
dGtfcHJvZ3Jlc3NfYmFyX25ldygpOwotICAgICAgICBzZXR1cF93aWRnZXRfcHJvdG90eXBlKGdQ
YXJ0cy0+cHJvZ3Jlc1dpZGdldCk7Ci0gICAgfQotICAgIHJldHVybiBNT1pfR1RLX1NVQ0NFU1M7
Ci19Ci0KLXN0YXRpYyBnaW50CiBlbnN1cmVfc2Nyb2xsZWRfd2luZG93X3dpZGdldCgpCiB7CiAg
ICAgaWYgKCFnUGFydHMtPnNjcm9sbGVkV2luZG93V2lkZ2V0KSB7CkBAIC04NDgsNDQgKzgzOCw2
IEBAIG1vel9ndGtfY29tYm9fYm94X3BhaW50KEdka0RyYXdhYmxlKiBkcmF3YWJsZSwgR2RrUmVj
dGFuZ2xlKiByZWN0LAogICAgIHJldHVybiBNT1pfR1RLX1NVQ0NFU1M7CiB9CiAKLXN0YXRpYyBn
aW50Ci1tb3pfZ3RrX3Byb2dyZXNzYmFyX3BhaW50KEdka0RyYXdhYmxlKiBkcmF3YWJsZSwgR2Rr
UmVjdGFuZ2xlKiByZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICBHZGtSZWN0YW5nbGUq
IGNsaXByZWN0LCBHdGtUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbikKLXsKLSAgICBHdGtTdHlsZSog
c3R5bGU7Ci0KLSAgICBlbnN1cmVfcHJvZ3Jlc3Nfd2lkZ2V0KCk7Ci0gICAgZ3RrX3dpZGdldF9z
ZXRfZGlyZWN0aW9uKGdQYXJ0cy0+cHJvZ3Jlc1dpZGdldCwgZGlyZWN0aW9uKTsKLQotICAgIHN0
eWxlID0gZ3RrX3dpZGdldF9nZXRfc3R5bGUoZ1BhcnRzLT5wcm9ncmVzV2lkZ2V0KTsKLQotICAg
IFRTT2Zmc2V0U3R5bGVHQ3Moc3R5bGUsIHJlY3QtPngsIHJlY3QtPnkpOwotICAgIGd0a19wYWlu
dF9ib3goc3R5bGUsIGRyYXdhYmxlLCBHVEtfU1RBVEVfTk9STUFMLCBHVEtfU0hBRE9XX0lOLAot
ICAgICAgICAgICAgICAgICAgY2xpcHJlY3QsIGdQYXJ0cy0+cHJvZ3Jlc1dpZGdldCwgInRyb3Vn
aCIsIHJlY3QtPngsIHJlY3QtPnksCi0gICAgICAgICAgICAgICAgICByZWN0LT53aWR0aCwgcmVj
dC0+aGVpZ2h0KTsKLQotICAgIHJldHVybiBNT1pfR1RLX1NVQ0NFU1M7Ci19Ci0KLXN0YXRpYyBn
aW50Ci1tb3pfZ3RrX3Byb2dyZXNzX2NodW5rX3BhaW50KEdka0RyYXdhYmxlKiBkcmF3YWJsZSwg
R2RrUmVjdGFuZ2xlKiByZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZGtSZWN0
YW5nbGUqIGNsaXByZWN0LCBHdGtUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbikKLXsKLSAgICBHdGtT
dHlsZSogc3R5bGU7Ci0KLSAgICBlbnN1cmVfcHJvZ3Jlc3Nfd2lkZ2V0KCk7Ci0gICAgZ3RrX3dp
ZGdldF9zZXRfZGlyZWN0aW9uKGdQYXJ0cy0+cHJvZ3Jlc1dpZGdldCwgZGlyZWN0aW9uKTsKLQot
ICAgIHN0eWxlID0gZ3RrX3dpZGdldF9nZXRfc3R5bGUoZ1BhcnRzLT5wcm9ncmVzV2lkZ2V0KTsK
LQotICAgIFRTT2Zmc2V0U3R5bGVHQ3Moc3R5bGUsIHJlY3QtPngsIHJlY3QtPnkpOwotICAgIGd0
a19wYWludF9ib3goc3R5bGUsIGRyYXdhYmxlLCBHVEtfU1RBVEVfUFJFTElHSFQsIEdUS19TSEFE
T1dfT1VULAotICAgICAgICAgICAgICAgICAgY2xpcHJlY3QsIGdQYXJ0cy0+cHJvZ3Jlc1dpZGdl
dCwgImJhciIsIHJlY3QtPngsIHJlY3QtPnksCi0gICAgICAgICAgICAgICAgICByZWN0LT53aWR0
aCwgcmVjdC0+aGVpZ2h0KTsKLQotICAgIHJldHVybiBNT1pfR1RLX1NVQ0NFU1M7Ci19Ci0KIGdp
bnQKIG1vel9ndGtfZ2V0X3dpZGdldF9ib3JkZXIoR3RrVGhlbWVXaWRnZXRUeXBlIHdpZGdldCwg
Z2ludCogbGVmdCwgZ2ludCogdG9wLAogICAgICAgICAgICAgICAgICAgICAgICAgICBnaW50KiBy
aWdodCwgZ2ludCogYm90dG9tLCBHdGtUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiwKQEAgLTk3MSwx
NyArOTIzLDEyIEBAIG1vel9ndGtfZ2V0X3dpZGdldF9ib3JkZXIoR3RrVGhlbWVXaWRnZXRUeXBl
IHdpZGdldCwgZ2ludCogbGVmdCwgZ2ludCogdG9wLAogCiAgICAgICAgICAgICByZXR1cm4gTU9a
X0dUS19TVUNDRVNTOwogICAgICAgICB9Ci0gICAgY2FzZSBNT1pfR1RLX1BST0dSRVNTQkFSOgot
ICAgICAgICBlbnN1cmVfcHJvZ3Jlc3Nfd2lkZ2V0KCk7Ci0gICAgICAgIHcgPSBnUGFydHMtPnBy
b2dyZXNXaWRnZXQ7Ci0gICAgICAgIGJyZWFrOwogICAgIC8qIFRoZXNlIHdpZGdldHMgaGF2ZSBu
byBib3JkZXJzLCBzaW5jZSB0aGV5IGFyZSBub3QgY29udGFpbmVycy4gKi8KICAgICBjYXNlIE1P
Wl9HVEtfU0NST0xMQkFSX0JVVFRPTjoKICAgICBjYXNlIE1PWl9HVEtfU0NST0xMQkFSX1RSQUNL
X0hPUklaT05UQUw6CiAgICAgY2FzZSBNT1pfR1RLX1NDUk9MTEJBUl9UUkFDS19WRVJUSUNBTDoK
ICAgICBjYXNlIE1PWl9HVEtfU0NST0xMQkFSX1RIVU1CX0hPUklaT05UQUw6CiAgICAgY2FzZSBN
T1pfR1RLX1NDUk9MTEJBUl9USFVNQl9WRVJUSUNBTDoKLSAgICBjYXNlIE1PWl9HVEtfUFJPR1JF
U1NfQ0hVTks6CiAgICAgICAgICpsZWZ0ID0gKnRvcCA9ICpyaWdodCA9ICpib3R0b20gPSAwOwog
ICAgICAgICByZXR1cm4gTU9aX0dUS19TVUNDRVNTOwogICAgIGRlZmF1bHQ6CkBAIC0xMDU3LDEz
ICsxMDA0LDYgQEAgbW96X2d0a193aWRnZXRfcGFpbnQoR3RrVGhlbWVXaWRnZXRUeXBlIHdpZGdl
dCwgR2RrRHJhd2FibGUqIGRyYXdhYmxlLAogICAgICAgICByZXR1cm4gbW96X2d0a19jb21ib19i
b3hfcGFpbnQoZHJhd2FibGUsIHJlY3QsIGNsaXByZWN0LCBzdGF0ZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChnYm9vbGVhbikgZmxhZ3MsIGRpcmVjdGlvbik7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgTU9aX0dUS19QUk9HUkVTU0JBUjoKLSAgICAgICAgcmV0
dXJuIG1vel9ndGtfcHJvZ3Jlc3NiYXJfcGFpbnQoZHJhd2FibGUsIHJlY3QsIGNsaXByZWN0LCBk
aXJlY3Rpb24pOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIE1PWl9HVEtfUFJPR1JFU1NfQ0hV
Tks6Ci0gICAgICAgIHJldHVybiBtb3pfZ3RrX3Byb2dyZXNzX2NodW5rX3BhaW50KGRyYXdhYmxl
LCByZWN0LCBjbGlwcmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGlyZWN0aW9uKTsKLSAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAg
Z193YXJuaW5nKCJVbmtub3duIHdpZGdldCB0eXBlOiAlZCIsIHdpZGdldCk7CiAgICAgfQpAQCAt
MTEwMiwxMiArMTA0Miw0IEBAIHZvaWQgbW96X2d0a19kZXN0cm95X3RoZW1lX3BhcnRzX3dpZGdl
dHMoR3RrVGhlbWVQYXJ0cyogcGFydHMpCiAgICAgfQogfQogCi1HdGtXaWRnZXQqIG1vel9ndGtf
Z2V0X3Byb2dyZXNzX3dpZGdldCgpCi17Ci0gICAgaWYgKCFpc19pbml0aWFsaXplZCkKLSAgICAg
ICAgcmV0dXJuIE5VTEw7Ci0gICAgZW5zdXJlX3Byb2dyZXNzX3dpZGdldCgpOwotICAgIHJldHVy
biBnUGFydHMtPnByb2dyZXNXaWRnZXQ7Ci19Ci0KICNlbmRpZiAvLyBHVEtfQVBJX1ZFUlNJT05f
MgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL2d0a2RyYXdpbmcuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9ndGtkcmF3aW5nLmgKaW5kZXggMjM4YTI5M2E2
YjkyMDIyNzllOWIwNzM4OGRlYjQwNGJhM2U5Y2IxZS4uZDRjNTllNGVkOTJlOTQ5N2RlODUxNGVk
ZmU1YmNmNTEzY2Y3NDQ2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L2d0a2RyYXdpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvZ3RrZHJhd2lu
Zy5oCkBAIC05OSw3ICs5OSw2IEBAIHR5cGVkZWYgc3RydWN0IF9HdGtUaGVtZVBhcnRzIHsKICAg
ICBHdGtXaWRnZXQqIGNvbWJvQm94RW50cnlUZXh0YXJlYVdpZGdldDsKICAgICBHdGtXaWRnZXQq
IGNvbWJvQm94RW50cnlCdXR0b25XaWRnZXQ7CiAgICAgR3RrV2lkZ2V0KiBjb21ib0JveEVudHJ5
QXJyb3dXaWRnZXQ7Ci0gICAgR3RrV2lkZ2V0KiBwcm9ncmVzV2lkZ2V0OwogICAgIEd0a1dpZGdl
dCogc2Nyb2xsZWRXaW5kb3dXaWRnZXQ7CiB9IEd0a1RoZW1lUGFydHM7CiAKQEAgLTEzNiwxMCAr
MTM1LDYgQEAgdHlwZWRlZiBlbnVtIHsKICAgTU9aX0dUS19TQ1JPTExFRF9XSU5ET1csCiAgIC8q
IFBhaW50cyBhIEd0a09wdGlvbk1lbnUuICovCiAgIE1PWl9HVEtfRFJPUERPV04sCi0gIC8qIFBh
aW50cyBhIEd0a1Byb2dyZXNzQmFyLiAqLwotICBNT1pfR1RLX1BST0dSRVNTQkFSLAotICAvKiBQ
YWludHMgYSBwcm9ncmVzcyBjaHVuayBvZiBhIEd0a1Byb2dyZXNzQmFyLiAqLwotICBNT1pfR1RL
X1BST0dSRVNTX0NIVU5LCiB9IEd0a1RoZW1lV2lkZ2V0VHlwZTsKIAogLyoqKiBHZW5lcmFsIGxp
YnJhcnkgZnVuY3Rpb25zICoqKi8KQEAgLTI0MiwxMiArMjM3LDYgQEAgbW96X2d0a19nZXRfc2Ny
b2xsYmFyX21ldHJpY3MoTW96R3RrU2Nyb2xsYmFyTWV0cmljcyogbWV0cmljcyk7CiAgKi8KIEd0
a1dpZGdldCogbW96X2d0a19nZXRfc2Nyb2xsYmFyX3dpZGdldCh2b2lkKTsKIAotLyoqCi0gKiBS
ZXRyaWV2ZSBhbiBhY3R1YWwgR1RLIHByb2dyZXNzIGJhciB3aWRnZXQgZm9yIHN0eWxlIGFuYWx5
c2lzLiBJdCB3aWxsIG5vdAotICogYmUgbW9kaWZpZWQuCi0gKi8KLUd0a1dpZGdldCogbW96X2d0
a19nZXRfcHJvZ3Jlc3Nfd2lkZ2V0KHZvaWQpOwotCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNl
bmRpZiAvKiBfX2NwbHVzcGx1cyAqLwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>