<?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>124868</bug_id>
          
          <creation_ts>2013-11-25 15:29:22 -0800</creation_ts>
          <short_desc>Implement Render Media Controls for WinCairo</short_desc>
          <delta_ts>2013-12-16 20:57:18 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows 7</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</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="Alex Christensen">alex.christensen</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pnormand</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>954134</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">alex.christensen</who>
    <bug_when>2013-11-25 15:29:22 -0800</bug_when>
    <thetext>I updated and would like to add http://git.igalia.com/cgi-bin/gitweb.cgi?p=webkit.git;a=commitdiff;h=117428fca8a141af22ad017ebe976b5624d574e6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954135</commentid>
    <comment_count>1</comment_count>
      <attachid>217840</attachid>
    <who name="Alex Christensen">alex.christensen</who>
    <bug_when>2013-11-25 15:36:46 -0800</bug_when>
    <thetext>Created attachment 217840
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954147</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-11-25 16:07:31 -0800</bug_when>
    <thetext>Have you seen Source/WebCore/Modules/mediacontrols/? The Apple ports use this to implement media controls with JavaScript.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954201</commentid>
    <comment_count>3</comment_count>
    <who name="Alex Christensen">alex.christensen</who>
    <bug_when>2013-11-25 19:19:17 -0800</bug_when>
    <thetext>I haven&apos;t, but it looks pretty platform independent.  I&apos;ll look into it and ping you on irc if I have any questions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954208</commentid>
    <comment_count>4</comment_count>
    <who name="Alex Christensen">alex.christensen</who>
    <bug_when>2013-11-25 20:37:53 -0800</bug_when>
    <thetext>Nobody&apos;s on irc.  I can compile everything except mediaControlsAppleJavaScript and mediaControlsAppleUserAgentStyleSheet are not defined ing RenderThemeWin.cpp and I cannot figure out how to define them.  Would it be ok to use those?  How are they generated?  It seems like it&apos;s related to http://trac.webkit.org/changeset/156546</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954262</commentid>
    <comment_count>5</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-11-26 07:57:00 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Nobody&apos;s on irc.  I can compile everything except mediaControlsAppleJavaScript and mediaControlsAppleUserAgentStyleSheet are not defined ing RenderThemeWin.cpp and I cannot figure out how to define them.  Would it be ok to use those?  How are they generated?  It seems like it&apos;s related to http://trac.webkit.org/changeset/156546

They&apos;re generated by DerivedSources.make and will be defined in UserAgentStyleSheets.h and UserAgentScripts.h, if memory serves.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954420</commentid>
    <comment_count>6</comment_count>
      <attachid>217840</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-11-26 19:13:03 -0800</bug_when>
    <thetext>Comment on attachment 217840
Patch

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

I have a few questions about the implementation! Can you take a look and answer?

&gt; Source/WebCore/rendering/RenderMediaControlsWinCairo.cpp:101
&gt; +    // TODO: fix image...

Please provide a bug number for this image fix!

&gt; Source/WebCore/rendering/RenderMediaControlsWinCairo.cpp:108
&gt; +    static Image* mediaSliderThumb = platformResource(&quot;mediaSliderThumb&quot;);

Why do we have this static function here, but simply declare static inline functions elsewhere? Is this used in a number of places?

&gt; Source/WebCore/rendering/RenderMediaControlsWinCairo.cpp:122
&gt; +    // FIXME: this should be a rounded rect but need to fix GraphicsContextSkia first.

I don&apos;t think this comment is useful anymore; we no longer have a Skia-based port.

&gt; Source/WebCore/rendering/RenderMediaControlsWinCairo.cpp:134
&gt; +    // FIXME: Draw multiple ranges if there are multiple buffered ranges.

Bug number!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955120</commentid>
    <comment_count>7</comment_count>
    <who name="Alex Christensen">alex.christensen</who>
    <bug_when>2013-11-30 21:48:28 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; I have a few questions about the implementation! Can you take a look and answer?
This was just me blindly updating Philippe&apos;s code to get it to compile.  I think I&apos;ll take Eric&apos;s advice and use the mediacontrols module instead.  It would be cool if we didn&apos;t have to add more code.  I&apos;ve almost got it compiling without using #if(0) anywhere!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955356</commentid>
    <comment_count>8</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-12-02 06:01:31 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; I have a few questions about the implementation! Can you take a look and answer?
&gt; This was just me blindly updating Philippe&apos;s code to get it to compile.  I think I&apos;ll take Eric&apos;s advice and use the mediacontrols module instead.  It would be cool if we didn&apos;t have to add more code.  I&apos;ve almost got it compiling without using #if(0) anywhere!

I worked on this much before the nice mediacontrols module indeed :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955378</commentid>
    <comment_count>9</comment_count>
      <attachid>217840</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-12-02 07:52:35 -0800</bug_when>
    <thetext>Comment on attachment 217840
Patch

Clearing r? for now while Alex tries another approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>960385</commentid>
    <comment_count>10</comment_count>
    <who name="Alex Christensen">alex.christensen</who>
    <bug_when>2013-12-16 20:57:18 -0800</bug_when>
    <thetext>I got it working without these files.  I&apos;ll post my changes in other bugs.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217840</attachid>
            <date>2013-11-25 15:36:46 -0800</date>
            <delta_ts>2013-12-02 07:52:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-124868-20131125163645.patch</filename>
            <type>text/plain</type>
            <size>19149</size>
            <attacher name="Alex Christensen">alex.christensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1OTc2OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDEzLTExLTI1ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1dpbkNhaXJv
XSBBZGRlZCBSZW5kZXJNZWRpYUNvbnRyb2xzIGltcGxlbWVudGF0aW9uLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0ODY4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2Vi
Q29yZS52Y3hwcm9qOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ou
ZmlsdGVyczoKKyAgICAgICAgQWRkZWQgcmVmZXJlbmNlcyB0byBSZW5kZXJNZWRpYUNvbnRyb2xz
V2luQ2Fpcm8uCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbHNXaW5DYWly
by5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1SZXNvdXJjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpoYXNTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRNZWRpYUJ1
dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpwYWludE1lZGlhTXV0ZUJ1dHRvbik6CisgICAgICAg
IChXZWJDb3JlOjpwYWludE1lZGlhUGxheUJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpwYWlu
dE1lZGlhRnVsbHNjcmVlbkJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpnZXRNZWRpYVNsaWRl
clRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50TWVkaWFTbGlkZXIpOgorICAgICAgICAo
V2ViQ29yZTo6cGFpbnRNZWRpYVNsaWRlclRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50
TWVkaWFWb2x1bWVTbGlkZXIpOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRNZWRpYVZvbHVtZVNs
aWRlclRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50TWVkaWFUaW1lbGluZUNvbnRhaW5l
cik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZWRpYUNvbnRyb2xzV2luQ2Fpcm86OnNob3Vs
ZFJlbmRlck1lZGlhQ29udHJvbFBhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWVkaWFD
b250cm9sc1dpbkNhaXJvOjpwYWludE1lZGlhQ29udHJvbHNQYXJ0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlck1lZGlhQ29udHJvbHNXaW5DYWlybzo6YWRqdXN0TWVkaWFTbGlkZXJUaHVtYlNp
emUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xzV2luQ2Fpcm8uaDog
QWRkZWQuCisKIDIwMTMtMTEtMjUgIFNlcmdpbyBDb3JyZWlhICA8c2VyZ2lvLmNvcnJlaWFAb3Bl
bmJvc3NhLm9yZz4KIAogICAgICAgICBbTWVkaWFTdHJlYW1dIFVzZSBzdGQ6OnVuaXF1ZV9wdHIg
aW5zdGVhZCBvZiBPd25QdHIvUGFzc093blB0cgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCShyZXZpc2lvbiAxNTk3NjYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC03NTUyLDYgKzc1NTIsMTYgQEAKICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxyZW5kZXJpbmdcUmVuZGVyTWVkaWFDb250cm9sc1dpbkNhaXJvLmNwcCI+Cisg
ICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4
Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nRGVidWdTdWZmaXh8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxF
eGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnU3VmZml4fHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4
Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1
aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlv
bnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1
aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlv
bnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xzdHlsZVxTdHlsZUNhY2hlZEltYWdlU2V0
LmNwcCI+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJv
bUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRl
ZEZyb21CdWlsZD4KQEAgLTE5MTYzLDYgKzE5MTczLDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHBsYXRmb3JtXHdpblxXZWJDb3JlQnVuZGxlV2luLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVx3aW5cV2ViQ29yZUluc3RhbmNlSGFuZGxlLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcSGl0VGVzdExvY2F0aW9uLmgiIC8+
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcUmVuZGVyTWVkaWFDb250cm9s
c1dpbkNhaXJvLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcc3R5
bGVcU3R5bGVDYWNoZWRJbWFnZVNldC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
c3RvcmFnZVxTdG9yYWdlU3RyYXRlZ3kuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHN2Z1xncmFwaGljc1xTVkdJbWFnZUZvckNvbnRhaW5lci5oIiAvPgpJbmRleDogU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVy
cwkocmV2aXNpb24gMTU5NzY2KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dl
YkNvcmUudmN4cHJvai5maWx0ZXJzCSh3b3JraW5nIGNvcHkpCkBAIC03MTAyLDYgKzcxMDIsOSBA
QAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZ3N0cmVhbWVy
XFdlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxn
cmFwaGljc1xnc3RyZWFtZXI8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xSZW5kZXJNZWRpYUNvbnRyb2xzV2luQ2Fpcm8uY3Bw
Ij4KKyAgICAgIDxGaWx0ZXI+cmVuZGVyaW5nPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAg
IDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
TW9kdWxlc1xnZW9sb2NhdGlvblxDb29yZGluYXRlcy5oIj4KQEAgLTE0OTM2LDYgKzE0OTM5LDkg
QEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGdzdHJlYW1l
clxXZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuaCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtXGdy
YXBoaWNzXGdzdHJlYW1lcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXFJlbmRlck1lZGlhQ29udHJvbHNXaW5DYWlyby5oIj4K
KyAgICAgIDxGaWx0ZXI+cmVuZGVyaW5nPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgIDwv
SXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxOb25lIEluY2x1ZGU9Ii4uXGNzc1xDU1NH
cmFtbWFyLnkuaW4iPgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlh
Q29udHJvbHNXaW5DYWlyby5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck1lZGlhQ29udHJvbHNXaW5DYWlyby5jcHAJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9sc1dpbkNhaXJvLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDMyMiBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTAg
SWdhbGlhIFMuTAorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqICBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVu
ZGVyTWVkaWFDb250cm9sc1dpbkNhaXJvLmgiCisKKyNpbmNsdWRlICJHcmFkaWVudC5oIgorI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIK
KyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJQYWludEluZm8uaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCisjaWYgRU5BQkxFKFZJREVPKQorCit0eXBlZGVmIFdURjo6SGFzaE1h
cDxjb25zdCBjaGFyKiwgSW1hZ2UqPiBNZWRpYUNvbnRyb2xJbWFnZU1hcDsKK3N0YXRpYyBNZWRp
YUNvbnRyb2xJbWFnZU1hcCogZ01lZGlhQ29udHJvbEltYWdlTWFwID0gMDsKKworc3RhdGljIElt
YWdlKiBwbGF0Zm9ybVJlc291cmNlKGNvbnN0IGNoYXIqIG5hbWUpCit7CisgICAgaWYgKCFnTWVk
aWFDb250cm9sSW1hZ2VNYXApCisgICAgICAgIGdNZWRpYUNvbnRyb2xJbWFnZU1hcCA9IG5ldyBN
ZWRpYUNvbnRyb2xJbWFnZU1hcCgpOworICAgIGlmIChJbWFnZSogaW1hZ2UgPSBnTWVkaWFDb250
cm9sSW1hZ2VNYXAtPmdldChuYW1lKSkKKyAgICAgICAgcmV0dXJuIGltYWdlOworICAgIGlmIChJ
bWFnZSogaW1hZ2UgPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UobmFtZSkubGVha1JlZigp
KSB7CisgICAgICAgIGdNZWRpYUNvbnRyb2xJbWFnZU1hcC0+c2V0KG5hbWUsIGltYWdlKTsKKyAg
ICAgICAgcmV0dXJuIGltYWdlOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gMDsKK30KKworc3RhdGljIGJvb2wgaGFzU291cmNlKGNvbnN0IEhUTUxNZWRpYUVs
ZW1lbnQqIG1lZGlhRWxlbWVudCkKK3sKKyAgICByZXR1cm4gbWVkaWFFbGVtZW50LT5uZXR3b3Jr
U3RhdGUoKSAhPSBIVE1MTWVkaWFFbGVtZW50OjpORVRXT1JLX0VNUFRZCisgICAgICAgICYmIG1l
ZGlhRWxlbWVudC0+bmV0d29ya1N0YXRlKCkgIT0gSFRNTE1lZGlhRWxlbWVudDo6TkVUV09SS19O
T19TT1VSQ0U7Cit9CisKK3N0YXRpYyBib29sIHBhaW50TWVkaWFCdXR0b24oR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0LCBJbWFnZSogaW1hZ2UpCit7CisgICAg
SW50UmVjdCBpbWFnZVJlY3QgPSBpbWFnZS0+cmVjdCgpOworICAgIGNvbnRleHQtPmRyYXdJbWFn
ZShpbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgcmVjdCk7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK3N0YXRpYyBib29sIHBhaW50TWVkaWFNdXRlQnV0dG9uKFJlbmRlck9iamVjdCogb2JqZWN0
LCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAg
ICBIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQgPSBwYXJlbnRNZWRpYUVsZW1lbnQoKm9i
amVjdCk7CisgICAgaWYgKCFtZWRpYUVsZW1lbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIHN0YXRpYyBJbWFnZSogc291bmRGdWxsID0gcGxhdGZvcm1SZXNvdXJjZSgibWVkaWFTb3Vu
ZEZ1bGwiKTsKKyAgICBzdGF0aWMgSW1hZ2UqIHNvdW5kTm9uZSA9IHBsYXRmb3JtUmVzb3VyY2Uo
Im1lZGlhU291bmROb25lIik7CisgICAgc3RhdGljIEltYWdlKiBzb3VuZERpc2FibGVkID0gcGxh
dGZvcm1SZXNvdXJjZSgibWVkaWFTb3VuZERpc2FibGVkIik7CisKKyAgICBpZiAoIWhhc1NvdXJj
ZShtZWRpYUVsZW1lbnQpIHx8ICFtZWRpYUVsZW1lbnQtPmhhc0F1ZGlvKCkpCisgICAgICAgIHJl
dHVybiBwYWludE1lZGlhQnV0dG9uKHBhaW50SW5mby5jb250ZXh0LCByZWN0LCBzb3VuZERpc2Fi
bGVkKTsKKworICAgIHJldHVybiBwYWludE1lZGlhQnV0dG9uKHBhaW50SW5mby5jb250ZXh0LCBy
ZWN0LCBtZWRpYUVsZW1lbnQtPm11dGVkKCkgPyBzb3VuZE5vbmU6IHNvdW5kRnVsbCk7Cit9CisK
K3N0YXRpYyBib29sIHBhaW50TWVkaWFQbGF5QnV0dG9uKFJlbmRlck9iamVjdCogb2JqZWN0LCBj
b25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICBI
VE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQgPSBwYXJlbnRNZWRpYUVsZW1lbnQoKm9iamVj
dCk7CisgICAgaWYgKCFtZWRpYUVsZW1lbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IHN0YXRpYyBJbWFnZSogbWVkaWFQbGF5ID0gcGxhdGZvcm1SZXNvdXJjZSgiZnNWaWRlb1BsYXki
KTsKKyAgICBzdGF0aWMgSW1hZ2UqIG1lZGlhUGF1c2UgPSBwbGF0Zm9ybVJlc291cmNlKCJmc1Zp
ZGVvUGF1c2UiKTsKKyAgICBzdGF0aWMgSW1hZ2UqIG1lZGlhUGxheURpc2FibGVkID0gcGxhdGZv
cm1SZXNvdXJjZSgibWVkaWFQbGF5RGlzYWJsZWQiKTsKKyAgICAKKyAgICBpZiAoIWhhc1NvdXJj
ZShtZWRpYUVsZW1lbnQpKQorICAgICAgICByZXR1cm4gcGFpbnRNZWRpYUJ1dHRvbihwYWludElu
Zm8uY29udGV4dCwgcmVjdCwgbWVkaWFQbGF5RGlzYWJsZWQpOworCisgICAgcmV0dXJuIHBhaW50
TWVkaWFCdXR0b24ocGFpbnRJbmZvLmNvbnRleHQsIHJlY3QsIG1lZGlhRWxlbWVudC0+cGF1c2Vk
KCkgPyBtZWRpYVBsYXkgOiBtZWRpYVBhdXNlKTsKK30KKworc3RhdGljIGJvb2wgcGFpbnRNZWRp
YUZ1bGxzY3JlZW5CdXR0b24oUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0KQoreworICAgIEhUTUxNZWRpYUVsZW1lbnQq
IG1lZGlhRWxlbWVudCA9IHBhcmVudE1lZGlhRWxlbWVudCgqb2JqZWN0KTsKKyAgICBpZiAoIW1l
ZGlhRWxlbWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gVE9ETzogZml4IGlt
YWdlLi4uCisgICAgc3RhdGljIEltYWdlKiBtZWRpYUZ1bGxzY3JlZW4gPSBwbGF0Zm9ybVJlc291
cmNlKCJmc1ZpZGVvUGxheSIpOworICAgIHJldHVybiBwYWludE1lZGlhQnV0dG9uKHBhaW50SW5m
by5jb250ZXh0LCByZWN0LCBtZWRpYUZ1bGxzY3JlZW4pOworfQorCitzdGF0aWMgSW1hZ2UqIGdl
dE1lZGlhU2xpZGVyVGh1bWIoKQoreworICAgIHN0YXRpYyBJbWFnZSogbWVkaWFTbGlkZXJUaHVt
YiA9IHBsYXRmb3JtUmVzb3VyY2UoIm1lZGlhU2xpZGVyVGh1bWIiKTsKKyAgICByZXR1cm4gbWVk
aWFTbGlkZXJUaHVtYjsKK30KKworc3RhdGljIGJvb2wgcGFpbnRNZWRpYVNsaWRlcihSZW5kZXJP
YmplY3QqIG9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3Qm
IHJlY3QpCit7CisgICAgSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50ID0gcGFyZW50TWVk
aWFFbGVtZW50KCpvYmplY3QpOworICAgIGlmICghbWVkaWFFbGVtZW50KQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBSZW5kZXJTdHlsZSYgc3R5bGUgPSBvYmplY3QtPnN0eWxlKCk7Cisg
ICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQ7CisKKyAgICAv
LyBEcmF3IHRoZSBib3JkZXIgb2YgdGhlIHRpbWUgYmFyLgorICAgIC8vIEZJWE1FOiB0aGlzIHNo
b3VsZCBiZSBhIHJvdW5kZWQgcmVjdCBidXQgbmVlZCB0byBmaXggR3JhcGhpY3NDb250ZXh0U2tp
YSBmaXJzdC4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MzAxNDMKKyAgICBjb250ZXh0LT5zYXZlKCk7CisgICAgY29udGV4dC0+c2V0U2hvdWxkQW50aWFs
aWFzKHRydWUpOworICAgIGNvbnRleHQtPnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKKyAg
ICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihzdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NT
UHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBjb250
ZXh0LT5zZXRTdHJva2VUaGlja25lc3Moc3R5bGUuYm9yZGVyTGVmdFdpZHRoKCkpOworICAgIGNv
bnRleHQtPnNldEZpbGxDb2xvcihzdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kQ29sb3IpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBjb250ZXh0LT5k
cmF3UmVjdChyZWN0KTsKKyAgICBjb250ZXh0LT5yZXN0b3JlKCk7CisKKyAgICAvLyBEcmF3IHRo
ZSBidWZmZXJlZCByYW5nZXMuCisgICAgLy8gRklYTUU6IERyYXcgbXVsdGlwbGUgcmFuZ2VzIGlm
IHRoZXJlIGFyZSBtdWx0aXBsZSBidWZmZXJlZCByYW5nZXMuCisgICAgSW50UmVjdCBidWZmZXJl
ZFJlY3QgPSByZWN0OworICAgIGJ1ZmZlcmVkUmVjdC5pbmZsYXRlKC1zdHlsZS5ib3JkZXJMZWZ0
V2lkdGgoKSk7CisKKyAgICBkb3VibGUgYnVmZmVyZWRXaWR0aCA9IDAuMDsKKyAgICBpZiAobWVk
aWFFbGVtZW50LT5wZXJjZW50TG9hZGVkKCkgPiAwLjApIHsKKyAgICAgICAgLy8gQWNjb3VudCBm
b3IgdGhlIHdpZHRoIG9mIHRoZSBzbGlkZXIgdGh1bWIuCisgICAgICAgIEltYWdlKiBtZWRpYVNs
aWRlclRodW1iID0gZ2V0TWVkaWFTbGlkZXJUaHVtYigpOworICAgICAgICBkb3VibGUgdGh1bWJX
aWR0aCA9IG1lZGlhU2xpZGVyVGh1bWItPndpZHRoKCkgLyAyLjAgKyAxLjA7CisgICAgICAgIGRv
dWJsZSByZWN0V2lkdGggPSBidWZmZXJlZFJlY3Qud2lkdGgoKSAtIHRodW1iV2lkdGg7CisgICAg
ICAgIGlmIChyZWN0V2lkdGggPCAwLjApCisgICAgICAgICAgICByZWN0V2lkdGggPSAwLjA7Cisg
ICAgICAgIGJ1ZmZlcmVkV2lkdGggPSByZWN0V2lkdGggKiBtZWRpYUVsZW1lbnQtPnBlcmNlbnRM
b2FkZWQoKSArIHRodW1iV2lkdGg7CisgICAgfQorICAgIGJ1ZmZlcmVkUmVjdC5zZXRXaWR0aChi
dWZmZXJlZFdpZHRoKTsKKworICAgIC8vIERvbid0IGJvdGhlciBkcmF3aW5nIGFuIGVtcHR5IGFy
ZWEuCisgICAgaWYgKCFidWZmZXJlZFJlY3QuaXNFbXB0eSgpKSB7CisgICAgICAgIEludFBvaW50
IHNsaWRlclRvcExlZnQgPSBidWZmZXJlZFJlY3QubG9jYXRpb24oKTsKKyAgICAgICAgSW50UG9p
bnQgc2xpZGVyVG9wUmlnaHQgPSBzbGlkZXJUb3BMZWZ0OworICAgICAgICBzbGlkZXJUb3BSaWdo
dC5tb3ZlKDAsIGJ1ZmZlcmVkUmVjdC5oZWlnaHQoKSk7CisKKyAgICAgICAgUmVmUHRyPEdyYWRp
ZW50PiBncmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoc2xpZGVyVG9wTGVmdCwgc2xpZGVyVG9w
UmlnaHQpOworICAgICAgICBDb2xvciBzdGFydENvbG9yID0gb2JqZWN0LT5zdHlsZSgpLnZpc2l0
ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKTsKKyAgICAgICAgZ3JhZGllbnQtPmFk
ZENvbG9yU3RvcCgwLjAsIHN0YXJ0Q29sb3IpOworICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JT
dG9wKDEuMCwgQ29sb3Ioc3RhcnRDb2xvci5yZWQoKSAvIDIsIHN0YXJ0Q29sb3IuZ3JlZW4oKSAv
IDIsIHN0YXJ0Q29sb3IuYmx1ZSgpIC8gMiwgc3RhcnRDb2xvci5hbHBoYSgpKSk7CisKKyAgICAg
ICAgY29udGV4dC0+c2F2ZSgpOworICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VTdHlsZShOb1N0
cm9rZSk7CisgICAgICAgIGNvbnRleHQtPnNldEZpbGxHcmFkaWVudChncmFkaWVudCk7CisgICAg
ICAgIGNvbnRleHQtPmZpbGxSZWN0KGJ1ZmZlcmVkUmVjdCk7CisgICAgICAgIGNvbnRleHQtPnJl
c3RvcmUoKTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wgcGFp
bnRNZWRpYVNsaWRlclRodW1iKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8m
IHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICBpZiAoIW9iamVjdC0+cGFy
ZW50KCktPmlzU2xpZGVyKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEhUTUxNZWRp
YUVsZW1lbnQqIG1lZGlhRWxlbWVudCA9IHBhcmVudE1lZGlhRWxlbWVudCgqb2JqZWN0LT5wYXJl
bnQoKSk7CisgICAgaWYgKCFtZWRpYUVsZW1lbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGlmICghaGFzU291cmNlKG1lZGlhRWxlbWVudCkpCisgICAgICAgIHJldHVybiB0cnVlOwor
CisgICAgSW1hZ2UqIG1lZGlhU2xpZGVyVGh1bWIgPSBnZXRNZWRpYVNsaWRlclRodW1iKCk7Cisg
ICAgcmV0dXJuIHBhaW50TWVkaWFCdXR0b24ocGFpbnRJbmZvLmNvbnRleHQsIHJlY3QsIG1lZGlh
U2xpZGVyVGh1bWIpOworfQorCitzdGF0aWMgYm9vbCBwYWludE1lZGlhVm9sdW1lU2xpZGVyKFJl
bmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50
UmVjdCYgcmVjdCkKK3sKKyAgICBIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQgPSBwYXJl
bnRNZWRpYUVsZW1lbnQoKm9iamVjdCk7CisgICAgaWYgKCFtZWRpYUVsZW1lbnQpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9IHBhaW50SW5m
by5jb250ZXh0OworICAgIENvbG9yIG9yaWdpbmFsQ29sb3IgPSBjb250ZXh0LT5zdHJva2VDb2xv
cigpOworICAgIGlmIChvcmlnaW5hbENvbG9yICE9IENvbG9yOjp3aGl0ZSkKKyAgICAgICAgY29u
dGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsK
KworICAgIGludCB4ID0gcmVjdC54KCkgKyByZWN0LndpZHRoKCkgLyAyOworICAgIGNvbnRleHQt
PmRyYXdMaW5lKEludFBvaW50KHgsIHJlY3QueSgpKSwgIEludFBvaW50KHgsIHJlY3QueSgpICsg
cmVjdC5oZWlnaHQoKSkpOworCisgICAgaWYgKG9yaWdpbmFsQ29sb3IgIT0gQ29sb3I6OndoaXRl
KQorICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihvcmlnaW5hbENvbG9yLCBDb2xvclNw
YWNlRGV2aWNlUkdCKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wgcGFpbnRN
ZWRpYVZvbHVtZVNsaWRlclRodW1iKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICBpZiAoIW9iamVjdC0+
cGFyZW50KCktPmlzU2xpZGVyKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHN0YXRp
YyBJbWFnZSogbWVkaWFWb2x1bWVTbGlkZXJUaHVtYiA9IHBsYXRmb3JtUmVzb3VyY2UoIm1lZGlh
Vm9sdW1lU2xpZGVyVGh1bWIiKTsKKyAgICByZXR1cm4gcGFpbnRNZWRpYUJ1dHRvbihwYWludElu
Zm8uY29udGV4dCwgcmVjdCwgbWVkaWFWb2x1bWVTbGlkZXJUaHVtYik7Cit9CisKK3N0YXRpYyBi
b29sIHBhaW50TWVkaWFUaW1lbGluZUNvbnRhaW5lcihSZW5kZXJPYmplY3QqIG9iamVjdCwgY29u
c3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCit7CisgICAgSFRN
TE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50ID0gcGFyZW50TWVkaWFFbGVtZW50KCpvYmplY3Qp
OworICAgIGlmICghbWVkaWFFbGVtZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBp
ZiAoIXJlY3QuaXNFbXB0eSgpKSB7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9
IHBhaW50SW5mby5jb250ZXh0OworICAgICAgICBDb2xvciBvcmlnaW5hbENvbG9yID0gY29udGV4
dC0+c3Ryb2tlQ29sb3IoKTsKKyAgICAgICAgZmxvYXQgb3JpZ2luYWxUaGlja25lc3MgPSBjb250
ZXh0LT5zdHJva2VUaGlja25lc3MoKTsKKyAgICAgICAgU3Ryb2tlU3R5bGUgb3JpZ2luYWxTdHls
ZSA9IGNvbnRleHQtPnN0cm9rZVN0eWxlKCk7CisKKyAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tl
U3R5bGUoU29saWRTdHJva2UpOworCisgICAgICAgIC8vIERyYXcgdGhlIGxlZnQgYm9yZGVyIHVz
aW5nIENTUyBkZWZpbmVkIHdpZHRoIGFuZCBjb2xvci4KKyAgICAgICAgY29udGV4dC0+c2V0U3Ry
b2tlVGhpY2tuZXNzKG9iamVjdC0+c3R5bGUoKS5ib3JkZXJMZWZ0V2lkdGgoKSk7CisgICAgICAg
IGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKG9iamVjdC0+c3R5bGUoKS52aXNpdGVkRGVwZW5kZW50
Q29sb3IoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IpLnJnYigpLCBDb2xvclNwYWNlRGV2aWNl
UkdCKTsKKyAgICAgICAgY29udGV4dC0+ZHJhd0xpbmUoSW50UG9pbnQocmVjdC54KCkgKyAxLCBy
ZWN0LnkoKSksIEludFBvaW50KHJlY3QueCgpICsgMSwgcmVjdC55KCkgKyByZWN0LmhlaWdodCgp
KSk7CisKKyAgICAgICAgLy8gRHJhdyB0aGUgcmlnaHQgYm9yZGVyIHVzaW5nIENTUyBkZWZpbmVk
IHdpZHRoIGFuZCBjb2xvci4KKyAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKG9i
amVjdC0+c3R5bGUoKS5ib3JkZXJSaWdodFdpZHRoKCkpOworICAgICAgICBjb250ZXh0LT5zZXRT
dHJva2VDb2xvcihvYmplY3QtPnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3Bl
cnR5Qm9yZGVyUmlnaHRDb2xvcikucmdiKCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAg
ICBjb250ZXh0LT5kcmF3TGluZShJbnRQb2ludChyZWN0LngoKSArIHJlY3Qud2lkdGgoKSAtIDEs
IHJlY3QueSgpKSwgSW50UG9pbnQocmVjdC54KCkgKyByZWN0LndpZHRoKCkgLSAxLCByZWN0Lnko
KSArIHJlY3QuaGVpZ2h0KCkpKTsKKworICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihv
cmlnaW5hbENvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC0+c2V0
U3Ryb2tlVGhpY2tuZXNzKG9yaWdpbmFsVGhpY2tuZXNzKTsKKyAgICAgICAgY29udGV4dC0+c2V0
U3Ryb2tlU3R5bGUob3JpZ2luYWxTdHlsZSk7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQor
Citib29sIFJlbmRlck1lZGlhQ29udHJvbHNXaW5DYWlybzo6c2hvdWxkUmVuZGVyTWVkaWFDb250
cm9sUGFydChDb250cm9sUGFydCBwYXJ0LCBFbGVtZW50KiBlKQoreworICAgIFVOVVNFRF9QQVJB
TShlKTsKKworICAgIHN3aXRjaCAocGFydCkgeworICAgIGNhc2UgTWVkaWFNdXRlQnV0dG9uUGFy
dDoKKyAgICBjYXNlIE1lZGlhUGxheUJ1dHRvblBhcnQ6CisgICAgY2FzZSBNZWRpYVNsaWRlclBh
cnQ6CisgICAgY2FzZSBNZWRpYVNsaWRlclRodW1iUGFydDoKKyAgICBjYXNlIE1lZGlhVm9sdW1l
U2xpZGVyQ29udGFpbmVyUGFydDoKKyAgICBjYXNlIE1lZGlhVm9sdW1lU2xpZGVyUGFydDoKKyAg
ICBjYXNlIE1lZGlhVm9sdW1lU2xpZGVyVGh1bWJQYXJ0OgorICAgIGNhc2UgTWVkaWFDb250cm9s
c0JhY2tncm91bmRQYXJ0OgorICAgIGNhc2UgTWVkaWFDdXJyZW50VGltZVBhcnQ6CisgICAgY2Fz
ZSBNZWRpYVRpbWVSZW1haW5pbmdQYXJ0OgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZh
dWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitib29sIFJlbmRlck1lZGlh
Q29udHJvbHNXaW5DYWlybzo6cGFpbnRNZWRpYUNvbnRyb2xzUGFydChNZWRpYUNvbnRyb2xFbGVt
ZW50VHlwZSBwYXJ0LCBSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCit7CisgICAgc3dpdGNoIChwYXJ0KSB7CisgICAg
Y2FzZSBNZWRpYU11dGVCdXR0b246CisgICAgY2FzZSBNZWRpYVVuTXV0ZUJ1dHRvbjoKKyAgICAg
ICAgcmV0dXJuIHBhaW50TWVkaWFNdXRlQnV0dG9uKG9iamVjdCwgcGFpbnRJbmZvLCByZWN0KTsK
KyAgICBjYXNlIE1lZGlhUGF1c2VCdXR0b246CisgICAgY2FzZSBNZWRpYVBsYXlCdXR0b246Cisg
ICAgICAgIHJldHVybiBwYWludE1lZGlhUGxheUJ1dHRvbihvYmplY3QsIHBhaW50SW5mbywgcmVj
dCk7CisgICAgY2FzZSBNZWRpYVNsaWRlcjoKKyAgICAgICAgcmV0dXJuIHBhaW50TWVkaWFTbGlk
ZXIob2JqZWN0LCBwYWludEluZm8sIHJlY3QpOworICAgIGNhc2UgTWVkaWFTbGlkZXJUaHVtYjoK
KyAgICAgICAgcmV0dXJuIHBhaW50TWVkaWFTbGlkZXJUaHVtYihvYmplY3QsIHBhaW50SW5mbywg
cmVjdCk7CisgICAgY2FzZSBNZWRpYVZvbHVtZVNsaWRlcjoKKyAgICAgICAgcmV0dXJuIHBhaW50
TWVkaWFWb2x1bWVTbGlkZXIob2JqZWN0LCBwYWludEluZm8sIHJlY3QpOworICAgIGNhc2UgTWVk
aWFWb2x1bWVTbGlkZXJUaHVtYjoKKyAgICAgICAgcmV0dXJuIHBhaW50TWVkaWFWb2x1bWVTbGlk
ZXJUaHVtYihvYmplY3QsIHBhaW50SW5mbywgcmVjdCk7CisgICAgY2FzZSBNZWRpYVRpbWVsaW5l
Q29udGFpbmVyOgorICAgICAgICByZXR1cm4gcGFpbnRNZWRpYVRpbWVsaW5lQ29udGFpbmVyKG9i
amVjdCwgcGFpbnRJbmZvLCByZWN0KTsKKyAgICBjYXNlIE1lZGlhU2Vla0JhY2tCdXR0b246Cisg
ICAgY2FzZSBNZWRpYVNlZWtGb3J3YXJkQnV0dG9uOgorICAgIGNhc2UgTWVkaWFWb2x1bWVTbGlk
ZXJDb250YWluZXI6CisgICAgY2FzZSBNZWRpYUN1cnJlbnRUaW1lRGlzcGxheToKKyAgICBjYXNl
IE1lZGlhVGltZVJlbWFpbmluZ0Rpc3BsYXk6CisgICAgY2FzZSBNZWRpYUNvbnRyb2xzUGFuZWw6
CisgICAgY2FzZSBNZWRpYVJld2luZEJ1dHRvbjoKKyAgICBjYXNlIE1lZGlhUmV0dXJuVG9SZWFs
dGltZUJ1dHRvbjoKKyAgICBjYXNlIE1lZGlhU3RhdHVzRGlzcGxheToKKyAgICBjYXNlIE1lZGlh
U2hvd0Nsb3NlZENhcHRpb25zQnV0dG9uOgorICAgIGNhc2UgTWVkaWFIaWRlQ2xvc2VkQ2FwdGlv
bnNCdXR0b246CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K3ZvaWQgUmVuZGVyTWVkaWFDb250cm9sc1dpbkNhaXJvOjphZGp1c3RNZWRpYVNsaWRlclRodW1i
U2l6ZShSZW5kZXJTdHlsZSogc3R5bGUpCit7CisgICAgc3RhdGljIEltYWdlKiBtZWRpYVNsaWRl
clRodW1iID0gcGxhdGZvcm1SZXNvdXJjZSgibWVkaWFTbGlkZXJUaHVtYiIpOworICAgIHN0YXRp
YyBJbWFnZSogbWVkaWFWb2x1bWVTbGlkZXJUaHVtYiA9IHBsYXRmb3JtUmVzb3VyY2UoIm1lZGlh
Vm9sdW1lU2xpZGVyVGh1bWIiKTsKKworICAgIEltYWdlKiB0aHVtYkltYWdlID0gMDsKKyAgICBp
ZiAoc3R5bGUtPmFwcGVhcmFuY2UoKSA9PSBNZWRpYVNsaWRlclRodW1iUGFydCkKKyAgICAgICAg
dGh1bWJJbWFnZSA9IG1lZGlhU2xpZGVyVGh1bWI7CisgICAgZWxzZSBpZiAoc3R5bGUtPmFwcGVh
cmFuY2UoKSA9PSBNZWRpYVZvbHVtZVNsaWRlclRodW1iUGFydCkKKyAgICAgICAgdGh1bWJJbWFn
ZSA9IG1lZGlhVm9sdW1lU2xpZGVyVGh1bWI7CisKKyAgICBmbG9hdCB6b29tTGV2ZWwgPSBzdHls
ZS0+ZWZmZWN0aXZlWm9vbSgpOworICAgIGlmICh0aHVtYkltYWdlKSB7CisgICAgICAgIHN0eWxl
LT5zZXRXaWR0aChMZW5ndGgoc3RhdGljX2Nhc3Q8aW50Pih0aHVtYkltYWdlLT53aWR0aCgpICog
em9vbUxldmVsKSwgRml4ZWQpKTsKKyAgICAgICAgc3R5bGUtPnNldEhlaWdodChMZW5ndGgoc3Rh
dGljX2Nhc3Q8aW50Pih0aHVtYkltYWdlLT5oZWlnaHQoKSAqIHpvb21MZXZlbCksIEZpeGVkKSk7
CisgICAgfQorfQorCisjZW5kaWYgLy8gI2lmIEVOQUJMRShWSURFTykKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29u
dHJvbHNXaW5DYWlyby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJNZWRpYUNvbnRyb2xzV2luQ2Fpcm8uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xzV2luQ2Fpcm8uaAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDM4IEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAxMCBJZ2FsaWEgUy5M
CisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAg
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorICovCisKKyNpZm5kZWYgUmVuZGVyTWVkaWFDb250cm9sc1dpbkNhaXJvX2gKKyNkZWZp
bmUgUmVuZGVyTWVkaWFDb250cm9sc1dpbkNhaXJvX2gKKworI2luY2x1ZGUgIk1lZGlhQ29udHJv
bEVsZW1lbnRzLmgiCisjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKK2NsYXNzIFJlbmRlck1lZGlhQ29udHJv
bHNXaW5DYWlybyB7CitwdWJsaWM6CisgICAgc3RhdGljIGJvb2wgc2hvdWxkUmVuZGVyTWVkaWFD
b250cm9sUGFydChDb250cm9sUGFydCwgRWxlbWVudCopOworICAgIHN0YXRpYyBib29sIHBhaW50
TWVkaWFDb250cm9sc1BhcnQoTWVkaWFDb250cm9sRWxlbWVudFR5cGUsIFJlbmRlck9iamVjdCos
IGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKyAgICBzdGF0aWMgdm9pZCBhZGp1
c3RNZWRpYVNsaWRlclRodW1iU2l6ZShSZW5kZXJTdHlsZSopOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUmVuZGVyTWVkaWFDb250cm9sc1dpbkNhaXJvX2gK
</data>

          </attachment>
      

    </bug>

</bugzilla>