<?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>133887</bug_id>
          
          <creation_ts>2014-06-13 16:00:24 -0700</creation_ts>
          <short_desc>Move utility functions from WebLayer to PlatformCALayer</short_desc>
          <delta_ts>2014-06-17 23:51:15 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ossy</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1015560</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-06-13 16:00:24 -0700</bug_when>
    <thetext>WebLayer has a set of bare utility functions used by parts of the Tiled Drawing implementation. This refactoring moves them from WebLayer (which is only used in Cocoa builds) to PlatformCALayer, where they can be used by all CoreAnimation-backed clients.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1015561</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-06-13 16:01:40 -0700</bug_when>
    <thetext>&lt;rdar://problem/17309622&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1015573</commentid>
    <comment_count>2</comment_count>
      <attachid>233089</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-06-13 16:30:58 -0700</bug_when>
    <thetext>Created attachment 233089
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1015577</commentid>
    <comment_count>3</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-06-13 16:42:32 -0700</bug_when>
    <thetext>Maybe you want to fix the FIXME at the top of RemoteLayerBackingStore which you made it very easy to do with this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1015597</commentid>
    <comment_count>4</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-06-13 19:59:54 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Maybe you want to fix the FIXME at the top of RemoteLayerBackingStore which you made it very easy to do with this patch?

Done!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1015598</commentid>
    <comment_count>5</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-06-13 20:00:44 -0700</bug_when>
    <thetext>Committed revision 169960 &lt;http://trac.webkit.org/changeset/169960&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1015599</commentid>
    <comment_count>6</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-06-13 20:01:09 -0700</bug_when>
    <thetext>Confirmed builds on OS X and iOS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1015603</commentid>
    <comment_count>7</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-06-13 21:17:42 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Confirmed builds on OS X and iOS.

I&apos;m getting lots of build failures on OS X...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1015605</commentid>
    <comment_count>8</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-06-13 21:28:25 -0700</bug_when>
    <thetext>Reopened for build fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1015606</commentid>
    <comment_count>9</comment_count>
      <attachid>233101</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-06-13 21:28:46 -0700</bug_when>
    <thetext>Created attachment 233101
fix the build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1015607</commentid>
    <comment_count>10</comment_count>
      <attachid>233101</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-06-13 21:29:42 -0700</bug_when>
    <thetext>Comment on attachment 233101
fix the build

Rejecting attachment 233101 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.appspot.com&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 233101, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

/Volumes/Data/EWS/WebKit/Source/WebKit2/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://webkit-queues.appspot.com/results/5686256168075264</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1015608</commentid>
    <comment_count>11</comment_count>
      <attachid>233102</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-06-13 21:31:17 -0700</bug_when>
    <thetext>Created attachment 233102
fix the build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1015611</commentid>
    <comment_count>12</comment_count>
      <attachid>233102</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-06-13 22:10:07 -0700</bug_when>
    <thetext>Comment on attachment 233102
fix the build

Clearing flags on attachment: 233102

Committed r169961: &lt;http://trac.webkit.org/changeset/169961&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1015643</commentid>
    <comment_count>13</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-06-14 02:25:57 -0700</bug_when>
    <thetext>It broke the Apple Windows build too, as the EWS noticed before landing:
     1&gt;..\platform\graphics\ca\PlatformCALayer.cpp(56): error C3861: &apos;snprintf&apos;: identifier not found</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1015652</commentid>
    <comment_count>14</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-06-14 08:44:35 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; Confirmed builds on OS X and iOS.
&gt; 
&gt; I&apos;m getting lots of build failures on OS X...

Oh no! My commit was from WebCore and I didn&apos;t land my WebKit2 changes. Doh!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1015653</commentid>
    <comment_count>15</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-06-14 08:45:49 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; It broke the Apple Windows build too, as the EWS noticed before landing:
&gt;      1&gt;..\platform\graphics\ca\PlatformCALayer.cpp(56): error C3861: &apos;snprintf&apos;: identifier not found

I just saw this, too. It needs &lt;wtf/StringExtras.h&gt; for the Windows port.

Committed r169961: &lt;http://trac.webkit.org/changeset/169968&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1016384</commentid>
    <comment_count>16</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-06-17 23:51:15 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; Maybe you want to fix the FIXME at the top of RemoteLayerBackingStore which you made it very easy to do with this patch?
&gt; 
&gt; Done!

It doesn&apos;t look done! (maybe because you didn&apos;t land the WK2 part?)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>233089</attachid>
            <date>2014-06-13 16:30:58 -0700</date>
            <delta_ts>2014-06-13 16:35:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-133887-20140613163035.patch</filename>
            <type>text/plain</type>
            <size>22605</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2OTk1NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDE0LTA2LTEzICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgdXRpbGl0eSBmdW5j
dGlvbnMgZnJvbSBXZWJMYXllciB0byBQbGF0Zm9ybUNBTGF5ZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMzg4NworICAgICAgICA8cmRhcjovL3By
b2JsZW0vMTczMDk2MjI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTW92ZSBzb21lIHV0aWxpdHkgZnVuY3Rpb25zIGZyb20gV2ViTGF5ZXIuaC8ubW0g
dG8gUGxhdGZvcm1DQUxheWVyLgorICAgICAgICBQcm92aWRlIE9iakMgaW1wbGVtZW50YXRpb24g
aW4gUGxhdGZvcm1DQUxheWVyTWFjLiBBIGZ1dHVyZSBwYXRjaCB3aWxsCisgICAgICAgIHByb3Zp
ZGUgY29ycmVzcG9uZGluZyBXaW5kb3dzIHZlcnNpb25zLgorCisgICAgICAgICogV2ViQ29yZS5l
eHAuaW46CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6ZHJhd1JlcGFpbnRJbmRpY2F0
b3IpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRpbGVDb250cm9sbGVyOjpibGFua1BpeGVsQ291bnRGb3JUaWxlcyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUdyaWQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VGlsZUdyaWQ6OnBsYXRmb3JtQ0FMYXllclBhaW50Q29udGVudHMpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNBTGF5ZXJNYWMubW06CisgICAgICAg
IChQbGF0Zm9ybUNBTGF5ZXI6OmNvbGxlY3RSZWN0c1RvUGFpbnQpOgorICAgICAgICAoUGxhdGZv
cm1DQUxheWVyOjpkcmF3TGF5ZXJDb250ZW50cyk6CisgICAgICAgIChQbGF0Zm9ybUNBTGF5ZXI6
OmZyYW1lRm9yTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJMYXll
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJMYXllci5tbToKKyAgICAg
ICAgKC1bV2ViTGF5ZXIgZHJhd0luQ29udGV4dDpdKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbGxl
Y3RSZWN0c1RvUGFpbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0xheWVyQ29u
dGVudHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6ZHJhd1JlcGFpbnRJbmRpY2F0b3Ip
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6ZnJhbWVGb3JMYXllcik6IERlbGV0ZWQuCisK
IDIwMTQtMDYtMTMgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAg
ICAgICBVc2UgdGhlIGNhbGxPbk1haW5UaHJlYWQgdmVyc2lvbiB0aGF0IHRha2VzIGFuIHN0ZDo6
ZnVuY3Rpb24gaW4gQmxvYlJlc291cmNlSGFuZGxlOjpzdGFydCgpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgkocmV2aXNpb24gMTY5OTQ3KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4JKHdvcmtpbmcgY29weSkKQEAgLTc1OCw3ICs3NTgsNiBAQCBfX1pON1dlYkNvcmUxN1NRTGl0
ZVRyYW5zYWN0aW9uQzFFUk5TXzE0CiBfX1pON1dlYkNvcmUxN1NRTGl0ZVRyYW5zYWN0aW9uRDFF
dgogX19aTjdXZWJDb3JlMTdTdWJyZXNvdXJjZUxvYWRlcjZjcmVhdGVFUE5TXzVGcmFtZUVQTlNf
MTRDYWNoZWRSZXNvdXJjZUVSS05TXzE1UmVzb3VyY2VSZXF1ZXN0RVJLTlNfMjFSZXNvdXJjZUxv
YWRlck9wdGlvbnNFCiBfX1pON1dlYkNvcmUxN2NhY2hlRE9NU3RydWN0dXJlRVBOU18xN0pTRE9N
R2xvYmFsT2JqZWN0RVBOM0pTQzlTdHJ1Y3R1cmVFUEtOUzJfOUNsYXNzSW5mb0UKLV9fWk43V2Vi
Q29yZTE3ZHJhd0xheWVyQ29udGVudHNFUDlDR0NvbnRleHRQTlNfMTVQbGF0Zm9ybUNBTGF5ZXJF
Uk4zV1RGNlZlY3RvcklOU185RmxvYXRSZWN0RUxtNUVOUzRfMTVDcmFzaE9uT3ZlcmZsb3dFRUUK
IF9fWk43V2ViQ29yZTE3ZW5jb2RlRm9yRmlsZU5hbWVFUktOM1dURjZTdHJpbmdFCiBfX1pON1dl
YkNvcmUxN2pzU3RyaW5nV2l0aENhY2hlRVBOM0pTQzlFeGVjU3RhdGVFUktOM1dURjZTdHJpbmdF
CiBfX1pON1dlYkNvcmUxN2xhbmd1YWdlRGlkQ2hhbmdlRXYKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmNwcAko
cmV2aXNpb24gMTY5OTQ3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
UGxhdGZvcm1DQUxheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEzLTIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01MCw2ICs1MCw0MiBAQCBQbGF0Zm9y
bUNBTGF5ZXI6On5QbGF0Zm9ybUNBTGF5ZXIoKQogICAgIHNldE93bmVyKG51bGxwdHIpOwogfQog
Cit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6ZHJhd1JlcGFpbnRJbmRpY2F0b3IoQ0dDb250ZXh0UmVm
IGNvbnRleHQsIFBsYXRmb3JtQ0FMYXllciogcGxhdGZvcm1DQUxheWVyLCBpbnQgcmVwYWludENv
dW50LCBDR0NvbG9yUmVmIGN1c3RvbUJhY2tncm91bmRDb2xvcikKK3sKKyAgICBjaGFyIHRleHRb
MTZdOyAvLyB0aGF0J3MgYSBsb3Qgb2YgcmVwYWludHMKKyAgICBzbnByaW50Zih0ZXh0LCBzaXpl
b2YodGV4dCksICIlZCIsIHJlcGFpbnRDb3VudCk7CisgICAgCisgICAgQ0dSZWN0IGluZGljYXRv
ckJveCA9IHBsYXRmb3JtQ0FMYXllci0+Ym91bmRzKCk7CisgICAgaW5kaWNhdG9yQm94LnNpemUu
d2lkdGggPSAxMiArIDEwICogc3RybGVuKHRleHQpOworICAgIGluZGljYXRvckJveC5zaXplLmhl
aWdodCA9IDI3OworICAgIENHQ29udGV4dFNhdmVHU3RhdGUoY29udGV4dCk7CisgICAgCisgICAg
Q0dDb250ZXh0U2V0QWxwaGEoY29udGV4dCwgMC41Zik7CisgICAgQ0dDb250ZXh0QmVnaW5UcmFu
c3BhcmVuY3lMYXllcldpdGhSZWN0KGNvbnRleHQsIGluZGljYXRvckJveCwgMCk7CisgICAgCisg
ICAgaWYgKGN1c3RvbUJhY2tncm91bmRDb2xvcikKKyAgICAgICAgQ0dDb250ZXh0U2V0RmlsbENv
bG9yV2l0aENvbG9yKGNvbnRleHQsIGN1c3RvbUJhY2tncm91bmRDb2xvcik7CisgICAgZWxzZQor
ICAgICAgICBDR0NvbnRleHRTZXRSR0JGaWxsQ29sb3IoY29udGV4dCwgMCwgMC41ZiwgMC4yNWYs
IDEpOworICAgIAorICAgIENHQ29udGV4dEZpbGxSZWN0KGNvbnRleHQsIGluZGljYXRvckJveCk7
CisgICAgCisgICAgaWYgKHBsYXRmb3JtQ0FMYXllci0+YWNjZWxlcmF0ZXNEcmF3aW5nKCkpCisg
ICAgICAgIENHQ29udGV4dFNldFJHQkZpbGxDb2xvcihjb250ZXh0LCAxLCAwLCAwLCAxKTsKKyAg
ICBlbHNlCisgICAgICAgIENHQ29udGV4dFNldFJHQkZpbGxDb2xvcihjb250ZXh0LCAxLCAxLCAx
LCAxKTsKKyAgICAKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNsYW5n
IGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKKyAgICBDR0Nv
bnRleHRTZXRUZXh0TWF0cml4KGNvbnRleHQsIENHQWZmaW5lVHJhbnNmb3JtTWFrZVNjYWxlKDEs
IC0xKSk7CisgICAgQ0dDb250ZXh0U2VsZWN0Rm9udChjb250ZXh0LCAiSGVsdmV0aWNhIiwgMjIs
IGtDR0VuY29kaW5nTWFjUm9tYW4pOworICAgIENHQ29udGV4dFNob3dUZXh0QXRQb2ludChjb250
ZXh0LCBpbmRpY2F0b3JCb3gub3JpZ2luLnggKyA1LCBpbmRpY2F0b3JCb3gub3JpZ2luLnkgKyAy
MiwgdGV4dCwgc3RybGVuKHRleHQpKTsKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKKyAg
ICAKKyAgICBDR0NvbnRleHRFbmRUcmFuc3BhcmVuY3lMYXllcihjb250ZXh0KTsKKyAgICBDR0Nv
bnRleHRSZXN0b3JlR1N0YXRlKGNvbnRleHQpOworfQorCiB9CiAKICNlbmRpZiAvLyBVU0UoQ0Ep
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9Q
bGF0Zm9ybUNBTGF5ZXIuaAkocmV2aXNpb24gMTY5OTQ3KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIyNiw3
ICsyMjYsMTggQEAgcHVibGljOgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdmlydHVhbCB2
b2lkIGVudW1lcmF0ZVJlY3RzQmVpbmdEcmF3bihDR0NvbnRleHRSZWYsIHZvaWQgKF5ibG9jayko
Q0dSZWN0KSkgPSAwOworCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHdlYkxheWVyTWF4UmVj
dHNUb1BhaW50ID0gNTsKKyAgICBjb25zdGV4cHIgc3RhdGljIGNvbnN0IGZsb2F0IHdlYkxheWVy
V2FzdGVkU3BhY2VUaHJlc2hvbGQgPSAwLjc1ZjsKKworICAgIHR5cGVkZWYgVmVjdG9yPEZsb2F0
UmVjdCwgd2ViTGF5ZXJNYXhSZWN0c1RvUGFpbnQ+IFJlcGFpbnRSZWN0TGlzdDsKKyAgICAgICAg
CisgICAgLy8gRnVuY3Rpb25zIGFsbG93cyB1cyB0byBzaGFyZSBpbXBsZW1lbnRhdGlvbiBhY3Jv
c3MgV2ViVGlsZWRMYXllciBhbmQgV2ViTGF5ZXIKKyAgICBzdGF0aWMgUmVwYWludFJlY3RMaXN0
IGNvbGxlY3RSZWN0c1RvUGFpbnQoQ0dDb250ZXh0UmVmLCBQbGF0Zm9ybUNBTGF5ZXIqKTsKKyAg
ICBzdGF0aWMgdm9pZCBkcmF3TGF5ZXJDb250ZW50cyhDR0NvbnRleHRSZWYsIFBsYXRmb3JtQ0FM
YXllciosIFJlcGFpbnRSZWN0TGlzdCYgZGlydHlSZWN0cyk7CiAjZW5kaWYKKyAgICBzdGF0aWMg
dm9pZCBkcmF3UmVwYWludEluZGljYXRvcihDR0NvbnRleHRSZWYsIFBsYXRmb3JtQ0FMYXllcios
IGludCByZXBhaW50Q291bnQsIENHQ29sb3JSZWYgY3VzdG9tQmFja2dyb3VuZENvbG9yKTsKKyAg
ICBzdGF0aWMgQ0dSZWN0IGZyYW1lRm9yTGF5ZXIoY29uc3QgUGxhdGZvcm1MYXllciopOwogCiBw
cm90ZWN0ZWQ6CiAgICAgUGxhdGZvcm1DQUxheWVyKExheWVyVHlwZSwgUGxhdGZvcm1DQUxheWVy
Q2xpZW50KiBvd25lcik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9UaWxlQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAxNjk5NDcpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM4Myw3ICszODMsNyBAQCB1bnNpZ25lZCBUaWxlQ29udHJvbGxlcjo6
YmxhbmtQaXhlbENvdW50CiAgICAgZm9yIChQbGF0Zm9ybUxheWVyTGlzdDo6Y29uc3RfaXRlcmF0
b3IgaXQgPSB0aWxlcy5iZWdpbigpLCBlbmQgPSB0aWxlcy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0
KSB7CiAgICAgICAgIGNvbnN0IFBsYXRmb3JtTGF5ZXIqIHRpbGVMYXllciA9IGl0LT5nZXQoKTsK
IAotICAgICAgICBGbG9hdFJlY3QgdmlzaWJsZVBhcnQoQ0dSZWN0T2Zmc2V0KGZyYW1lRm9yTGF5
ZXIodGlsZUxheWVyKSwgdGlsZVRyYW5zbGF0aW9uLngoKSwgdGlsZVRyYW5zbGF0aW9uLnkoKSkp
OworICAgICAgICBGbG9hdFJlY3QgdmlzaWJsZVBhcnQoQ0dSZWN0T2Zmc2V0KFBsYXRmb3JtQ0FM
YXllcjo6ZnJhbWVGb3JMYXllcih0aWxlTGF5ZXIpLCB0aWxlVHJhbnNsYXRpb24ueCgpLCB0aWxl
VHJhbnNsYXRpb24ueSgpKSk7CiAgICAgICAgIHZpc2libGVQYXJ0LmludGVyc2VjdCh2aXNpYmxl
UmVjdCk7CiAKICAgICAgICAgaWYgKCF2aXNpYmxlUGFydC5pc0VtcHR5KCkpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlR3JpZC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUdyaWQuY3BwCShyZXZp
c2lvbiAxNjk5NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxl
R3JpZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJMYXll
clBvb2wuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNBTGF5ZXIuaCIKICNpbmNsdWRlICJUaWxlQ29u
dHJvbGxlci5oIgotI2luY2x1ZGUgIldlYkxheWVyLmgiCiAjaW5jbHVkZSA8d3RmL01haW5UaHJl
YWQuaD4KIAogI2lmIFBMQVRGT1JNKElPUykKQEAgLTY1MSwxMyArNjUwLDEzIEBAIHZvaWQgVGls
ZUdyaWQ6OnBsYXRmb3JtQ0FMYXllclBhaW50Q29udGUKICAgICAgICAgY29udGV4dC50cmFuc2xh
dGUoLWxheWVyT3JpZ2luLngoKSwgLWxheWVyT3JpZ2luLnkoKSk7CiAgICAgICAgIGNvbnRleHQu
c2NhbGUoRmxvYXRTaXplKG1fc2NhbGUsIG1fc2NhbGUpKTsKIAotICAgICAgICBSZXBhaW50UmVj
dExpc3QgZGlydHlSZWN0cyA9IGNvbGxlY3RSZWN0c1RvUGFpbnQoY29udGV4dC5wbGF0Zm9ybUNv
bnRleHQoKSwgcGxhdGZvcm1DQUxheWVyKTsKLSAgICAgICAgZHJhd0xheWVyQ29udGVudHMoY29u
dGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgJm1fY29udHJvbGxlci5yb290TGF5ZXIoKSwgZGlydHlS
ZWN0cyk7CisgICAgICAgIFBsYXRmb3JtQ0FMYXllcjo6UmVwYWludFJlY3RMaXN0IGRpcnR5UmVj
dHMgPSBQbGF0Zm9ybUNBTGF5ZXI6OmNvbGxlY3RSZWN0c1RvUGFpbnQoY29udGV4dC5wbGF0Zm9y
bUNvbnRleHQoKSwgcGxhdGZvcm1DQUxheWVyKTsKKyAgICAgICAgUGxhdGZvcm1DQUxheWVyOjpk
cmF3TGF5ZXJDb250ZW50cyhjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCAmbV9jb250cm9sbGVy
LnJvb3RMYXllcigpLCBkaXJ0eVJlY3RzKTsKICAgICB9CiAKICAgICBpbnQgcmVwYWludENvdW50
ID0gcGxhdGZvcm1DQUxheWVySW5jcmVtZW50UmVwYWludENvdW50KHBsYXRmb3JtQ0FMYXllcik7
CiAgICAgaWYgKG1fY29udHJvbGxlci5yb290TGF5ZXIoKS5vd25lcigpLT5wbGF0Zm9ybUNBTGF5
ZXJTaG93UmVwYWludENvdW50ZXIoMCkpCi0gICAgICAgIGRyYXdSZXBhaW50SW5kaWNhdG9yKGNv
bnRleHQucGxhdGZvcm1Db250ZXh0KCksIHBsYXRmb3JtQ0FMYXllciwgcmVwYWludENvdW50LCBj
YWNoZWRDR0NvbG9yKG1fY29udHJvbGxlci50aWxlRGVidWdCb3JkZXJDb2xvcigpLCBDb2xvclNw
YWNlRGV2aWNlUkdCKSk7CisgICAgICAgIFBsYXRmb3JtQ0FMYXllcjo6ZHJhd1JlcGFpbnRJbmRp
Y2F0b3IoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgcGxhdGZvcm1DQUxheWVyLCByZXBhaW50
Q291bnQsIGNhY2hlZENHQ29sb3IobV9jb250cm9sbGVyLnRpbGVEZWJ1Z0JvcmRlckNvbG9yKCks
IENvbG9yU3BhY2VEZXZpY2VSR0IpKTsKIAogICAgIGlmIChtX2NvbnRyb2xsZXIuc2Nyb2xsaW5n
UGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCgpKSB7CiAgICAgICAgIEZsb2F0UmVjdCB2aXNpYmxl
UGFydChwbGF0Zm9ybUNBTGF5ZXItPnBvc2l0aW9uKCkueCgpLCBwbGF0Zm9ybUNBTGF5ZXItPnBv
c2l0aW9uKCkueSgpLCBwbGF0Zm9ybUNBTGF5ZXItPmJvdW5kcygpLnNpemUoKS53aWR0aCgpLCBw
bGF0Zm9ybUNBTGF5ZXItPmJvdW5kcygpLnNpemUoKS5oZWlnaHQoKSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxhdGZvcm1DQUxheWVyTWFjLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0
Zm9ybUNBTGF5ZXJNYWMubW0JKHJldmlzaW9uIDE2OTk0NykKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNBTGF5ZXJNYWMubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTU1LDggKzU1LDExIEBACiAjaW1wb3J0ICJXZWJUaWxlZExheWVyLmgiCiAjaW1wb3J0
IDxGb3VuZGF0aW9uL05TR2VvbWV0cnkuaD4KICNpbXBvcnQgPFF1YXJ0ekNvcmUvQ0FUaWxlZExh
eWVyUHJpdmF0ZS5oPgorI2Vsc2UKKyNpbXBvcnQgIlRoZW1lTWFjLmgiCiAjZW5kaWYKIAorCiBT
T0ZUX0xJTktfRlJBTUVXT1JLX09QVElPTkFMKEFWRm91bmRhdGlvbikKIFNPRlRfTElOS19DTEFT
UyhBVkZvdW5kYXRpb24sIEFWUGxheWVyTGF5ZXIpCiAKQEAgLTg0Myw2ICs4NDYsMTE2IEBAIHZv
aWQgUGxhdGZvcm1DQUxheWVyOjpzZXRUaWxlU2l6ZShjb25zdCAKIH0KICNlbmRpZiAvLyBQTEFU
Rk9STShJT1MpCiAKK1BsYXRmb3JtQ0FMYXllcjo6UmVwYWludFJlY3RMaXN0IFBsYXRmb3JtQ0FM
YXllcjo6Y29sbGVjdFJlY3RzVG9QYWludChDR0NvbnRleHRSZWYgY29udGV4dCwgUGxhdGZvcm1D
QUxheWVyKiBwbGF0Zm9ybUNBTGF5ZXIpCit7CisgICAgX19ibG9jayBkb3VibGUgdG90YWxSZWN0
QXJlYSA9IDA7CisgICAgX19ibG9jayB1bnNpZ25lZCByZWN0Q291bnQgPSAwOworICAgIF9fYmxv
Y2sgUmVwYWludFJlY3RMaXN0IGRpcnR5UmVjdHM7CisgICAgCisgICAgcGxhdGZvcm1DQUxheWVy
LT5lbnVtZXJhdGVSZWN0c0JlaW5nRHJhd24oY29udGV4dCwgXihDR1JlY3QgcmVjdCkgeworICAg
ICAgICBpZiAoKytyZWN0Q291bnQgPiB3ZWJMYXllck1heFJlY3RzVG9QYWludCkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgCisgICAgICAgIHRvdGFsUmVjdEFyZWEgKz0gcmVjdC5zaXpl
LndpZHRoICogcmVjdC5zaXplLmhlaWdodDsKKyAgICAgICAgZGlydHlSZWN0cy5hcHBlbmQocmVj
dCk7CisgICAgfSk7CisgICAgCisgICAgRmxvYXRSZWN0IGNsaXBCb3VuZHMgPSBDR0NvbnRleHRH
ZXRDbGlwQm91bmRpbmdCb3goY29udGV4dCk7CisgICAgZG91YmxlIGNsaXBBcmVhID0gY2xpcEJv
dW5kcy53aWR0aCgpICogY2xpcEJvdW5kcy5oZWlnaHQoKTsKKyAgICAKKyAgICBpZiAocmVjdENv
dW50ID49IHdlYkxheWVyTWF4UmVjdHNUb1BhaW50IHx8IHRvdGFsUmVjdEFyZWEgPj0gY2xpcEFy
ZWEgKiB3ZWJMYXllcldhc3RlZFNwYWNlVGhyZXNob2xkKSB7CisgICAgICAgIGRpcnR5UmVjdHMu
Y2xlYXIoKTsKKyAgICAgICAgZGlydHlSZWN0cy5hcHBlbmQoY2xpcEJvdW5kcyk7CisgICAgfQor
ICAgIAorICAgIHJldHVybiBkaXJ0eVJlY3RzOworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6
ZHJhd0xheWVyQ29udGVudHMoQ0dDb250ZXh0UmVmIGNvbnRleHQsIFdlYkNvcmU6OlBsYXRmb3Jt
Q0FMYXllciogcGxhdGZvcm1DQUxheWVyLCBSZXBhaW50UmVjdExpc3QmIGRpcnR5UmVjdHMpCit7
CisgICAgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50KiBsYXllckNvbnRlbnRzID0gcGxh
dGZvcm1DQUxheWVyLT5vd25lcigpOworICAgIGlmICghbGF5ZXJDb250ZW50cykKKyAgICAgICAg
cmV0dXJuOworICAgIAorI2lmIFBMQVRGT1JNKElPUykKKyAgICBXS1NldEN1cnJlbnRHcmFwaGlj
c0NvbnRleHQoY29udGV4dCk7CisjZW5kaWYKKyAgICAKKyAgICBDR0NvbnRleHRTYXZlR1N0YXRl
KGNvbnRleHQpOworICAgIAorICAgIC8vIFdlIG5ldmVyIHVzZSBDb21wb3NpdGluZ0Nvb3JkaW5h
dGVzQm90dG9tVXAgb24gTWFjLgorICAgIEFTU0VSVChsYXllckNvbnRlbnRzLT5wbGF0Zm9ybUNB
TGF5ZXJDb250ZW50c09yaWVudGF0aW9uKCkgPT0gR3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdD
b29yZGluYXRlc1RvcERvd24pOworICAgIAorI2lmIFBMQVRGT1JNKElPUykKKyAgICBXS0ZvbnRB
bnRpYWxpYXNpbmdTdGF0ZVNhdmVyIGZvbnRBbnRpYWxpYXNpbmdTdGF0ZShjb250ZXh0LCBbcGxh
dGZvcm1DQUxheWVyLT5wbGF0Zm9ybUxheWVyKCkgaXNPcGFxdWVdKTsKKyAgICBmb250QW50aWFs
aWFzaW5nU3RhdGUuc2V0dXAoW1dBS1dpbmRvdyBoYXNMYW5kc2NhcGVPcmllbnRhdGlvbl0pOwor
I2Vsc2UKKyAgICBbTlNHcmFwaGljc0NvbnRleHQgc2F2ZUdyYXBoaWNzU3RhdGVdOworICAgIAor
ICAgIC8vIFNldCB1cCBhbiBOU0dyYXBoaWNzQ29udGV4dCBmb3IgdGhlIGNvbnRleHQsIHNvIHRo
YXQgcGFydHMgb2YgQXBwS2l0IHRoYXQgcmVseSBvbgorICAgIC8vIHRoZSBjdXJyZW50IE5TR3Jh
cGhpY3NDb250ZXh0IChlLmcuIE5TQ2VsbCBkcmF3aW5nKSBnZXQgdGhlIHJpZ2h0IG9uZS4KKyAg
ICBOU0dyYXBoaWNzQ29udGV4dCogbGF5ZXJDb250ZXh0ID0gW05TR3JhcGhpY3NDb250ZXh0IGdy
YXBoaWNzQ29udGV4dFdpdGhHcmFwaGljc1BvcnQ6Y29udGV4dCBmbGlwcGVkOllFU107CisgICAg
W05TR3JhcGhpY3NDb250ZXh0IHNldEN1cnJlbnRDb250ZXh0OmxheWVyQ29udGV4dF07CisjZW5k
aWYKKyAgICAKKyAgICBHcmFwaGljc0NvbnRleHQgZ3JhcGhpY3NDb250ZXh0KGNvbnRleHQpOwor
ICAgIGdyYXBoaWNzQ29udGV4dC5zZXRJc0NBTGF5ZXJDb250ZXh0KHRydWUpOworICAgIGdyYXBo
aWNzQ29udGV4dC5zZXRJc0FjY2VsZXJhdGVkQ29udGV4dChwbGF0Zm9ybUNBTGF5ZXItPmFjY2Vs
ZXJhdGVzRHJhd2luZygpKTsKKyAgICAKKyAgICBpZiAoIWxheWVyQ29udGVudHMtPnBsYXRmb3Jt
Q0FMYXllckNvbnRlbnRzT3BhcXVlKCkpIHsKKyAgICAgICAgLy8gVHVybiBvZmYgZm9udCBzbW9v
dGhpbmcgdG8gaW1wcm92ZSB0aGUgYXBwZWFyYW5jZSBvZiB0ZXh0IHJlbmRlcmVkIG9udG8gYSB0
cmFuc3BhcmVudCBiYWNrZ3JvdW5kLgorICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0U2hvdWxk
U21vb3RoRm9udHMoZmFsc2UpOworICAgIH0KKyAgICAKKyNpZiAhUExBVEZPUk0oSU9TKQorICAg
IC8vIEl0J3MgaW1wb3J0YW50IHRvIGdldCB0aGUgY2xpcCBmcm9tIHRoZSBjb250ZXh0LCBiZWNh
dXNlIGl0IG1heSBiZSBzaWduaWZpY2FudGx5CisgICAgLy8gc21hbGxlciB0aGFuIHRoZSBsYXll
ciBib3VuZHMgKGUuZy4gdGlsZWQgbGF5ZXJzKQorICAgIEZsb2F0UmVjdCBjbGlwQm91bmRzID0g
Q0dDb250ZXh0R2V0Q2xpcEJvdW5kaW5nQm94KGNvbnRleHQpOworICAgIAorICAgIEZsb2F0UmVj
dCBmb2N1c1JpbmdDbGlwUmVjdCA9IGNsaXBCb3VuZHM7CisjaWYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA8IDEwOTAKKyAgICAvLyBTZXQgdGhlIGZvY3VzIHJpbmcgY2xpcCByZWN0
IHdoaWNoIG5lZWRzIHRvIGJlIGluIGJhc2UgY29vcmRpbmF0ZXMuCisgICAgQWZmaW5lVHJhbnNm
b3JtIHRyYW5zZm9ybSA9IENHQ29udGV4dEdldENUTShjb250ZXh0KTsKKyAgICBmb2N1c1JpbmdD
bGlwUmVjdCA9IHRyYW5zZm9ybS5tYXBSZWN0KGNsaXBCb3VuZHMpOworI2VuZGlmCisgICAgVGhl
bWVNYWM6OnNldEZvY3VzUmluZ0NsaXBSZWN0KGZvY3VzUmluZ0NsaXBSZWN0KTsKKyNlbmRpZiAv
LyAhUExBVEZPUk0oSU9TKQorICAgIAorICAgIGZvciAoY29uc3QgYXV0byYgcmVjdCA6IGRpcnR5
UmVjdHMpIHsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGdy
YXBoaWNzQ29udGV4dCk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5jbGlwKHJlY3QpOworICAg
ICAgICAKKyAgICAgICAgbGF5ZXJDb250ZW50cy0+cGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50
cyhwbGF0Zm9ybUNBTGF5ZXIsIGdyYXBoaWNzQ29udGV4dCwgcmVjdCk7CisgICAgfQorICAgIAor
I2lmIFBMQVRGT1JNKElPUykKKyAgICBmb250QW50aWFsaWFzaW5nU3RhdGUucmVzdG9yZSgpOwor
I2Vsc2UKKyAgICBUaGVtZU1hYzo6c2V0Rm9jdXNSaW5nQ2xpcFJlY3QoRmxvYXRSZWN0KCkpOwor
ICAgIAorICAgIFtOU0dyYXBoaWNzQ29udGV4dCByZXN0b3JlR3JhcGhpY3NTdGF0ZV07CisjZW5k
aWYKKyAgICAKKyAgICAvLyBSZS1mZXRjaCB0aGUgbGF5ZXIgb3duZXIsIHNpbmNlIDxyZGFyOi8v
cHJvYmxlbS85MTI1MTUxPiBpbmRpY2F0ZXMgdGhhdCBpdCBtaWdodCBoYXZlIGJlZW4gZGVzdHJv
eWVkIGR1cmluZyBwYWludGluZy4KKyAgICBsYXllckNvbnRlbnRzID0gcGxhdGZvcm1DQUxheWVy
LT5vd25lcigpOworICAgIEFTU0VSVChsYXllckNvbnRlbnRzKTsKKyAgICAKKyAgICBDR0NvbnRl
eHRSZXN0b3JlR1N0YXRlKGNvbnRleHQpOworICAgIAorICAgIC8vIEFsd2F5cyB1cGRhdGUgdGhl
IHJlcGFpbnQgY291bnQgc28gdGhhdCBpdCdzIGFjY3VyYXRlIGV2ZW4gaWYgdGhlIGNvdW50IGl0
c2VsZiBpcyBub3Qgc2hvd24uIFRoaXMgd2lsbCBiZSB1c2VmdWwKKyAgICAvLyBmb3IgdGhlIFdl
YiBJbnNwZWN0b3IgZmVlZGluZyB0aGlzIGluZm9ybWF0aW9uIHRocm91Z2ggdGhlIExheWVyVHJl
ZUFnZW50LgorICAgIGludCByZXBhaW50Q291bnQgPSBsYXllckNvbnRlbnRzLT5wbGF0Zm9ybUNB
TGF5ZXJJbmNyZW1lbnRSZXBhaW50Q291bnQocGxhdGZvcm1DQUxheWVyKTsKKyAgICAKKyAgICBp
ZiAoIXBsYXRmb3JtQ0FMYXllci0+dXNlc1RpbGVkQmFja2luZ0xheWVyKCkgJiYgbGF5ZXJDb250
ZW50cyAmJiBsYXllckNvbnRlbnRzLT5wbGF0Zm9ybUNBTGF5ZXJTaG93UmVwYWludENvdW50ZXIo
cGxhdGZvcm1DQUxheWVyKSkKKyAgICAgICAgZHJhd1JlcGFpbnRJbmRpY2F0b3IoY29udGV4dCwg
cGxhdGZvcm1DQUxheWVyLCByZXBhaW50Q291bnQsIG51bGxwdHIpOworfQorCitDR1JlY3QgUGxh
dGZvcm1DQUxheWVyOjpmcmFtZUZvckxheWVyKGNvbnN0IFBsYXRmb3JtTGF5ZXIqIHRpbGVMYXll
cikKK3sKKyAgICByZXR1cm4gW3RpbGVMYXllciBmcmFtZV07Cit9CisKKwogUGFzc1JlZlB0cjxQ
bGF0Zm9ybUNBTGF5ZXI+IFBsYXRmb3JtQ0FMYXllck1hYzo6Y3JlYXRlQ29tcGF0aWJsZUxheWVy
KFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZvcm1DQUxheWVyQ2xp
ZW50KiBjbGllbnQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtQ0FMYXllck1hYzo6Y3Jl
YXRlKGxheWVyVHlwZSwgY2xpZW50KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9XZWJMYXllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9XZWJMYXllci5oCShyZXZpc2lvbiAxNjk5NDcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjYsMTMgKzI2LDcgQEAKICNpZm5kZWYgV2ViTGF5ZXJfaAogI2RlZmluZSBXZWJMYXllcl9oCiAK
LSNpbmNsdWRlICJGbG9hdFJlY3QuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCiAjaW5j
bHVkZSA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgot
Ci1jb25zdCB1bnNpZ25lZCB3ZWJMYXllck1heFJlY3RzVG9QYWludCA9IDU7Ci1jb25zdCBmbG9h
dCB3ZWJMYXllcldhc3RlZFNwYWNlVGhyZXNob2xkID0gMC43NWY7CiAKICNpZmRlZiBfX09CSkNf
XwogQGludGVyZmFjZSBXZWJTaW1wbGVMYXllciA6IENBTGF5ZXIKQEAgLTQyLDE4ICszNiw0IEBA
IEBpbnRlcmZhY2UgV2ViTGF5ZXIgOiBXZWJTaW1wbGVMYXllcgogQGVuZAogI2VuZGlmCiAKLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIEdyYXBoaWNzTGF5ZXI7Ci1jbGFzcyBQbGF0Zm9ybUNB
TGF5ZXI7Ci1jbGFzcyBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQ7Ci0KLXR5cGVkZWYgVmVjdG9yPEZs
b2F0UmVjdCwgd2ViTGF5ZXJNYXhSZWN0c1RvUGFpbnQ+IFJlcGFpbnRSZWN0TGlzdDsKLQotLy8g
RnVuY3Rpb25zIGFsbG93cyB1cyB0byBzaGFyZSBpbXBsZW1lbnRhdGlvbiBhY3Jvc3MgV2ViVGls
ZWRMYXllciBhbmQgV2ViTGF5ZXIKLVJlcGFpbnRSZWN0TGlzdCBjb2xsZWN0UmVjdHNUb1BhaW50
KENHQ29udGV4dFJlZiwgUGxhdGZvcm1DQUxheWVyKik7Ci12b2lkIGRyYXdMYXllckNvbnRlbnRz
KENHQ29udGV4dFJlZiwgUGxhdGZvcm1DQUxheWVyKiwgUmVwYWludFJlY3RMaXN0JiBkaXJ0eVJl
Y3RzKTsKLXZvaWQgZHJhd1JlcGFpbnRJbmRpY2F0b3IoQ0dDb250ZXh0UmVmLCBQbGF0Zm9ybUNB
TGF5ZXIqLCBpbnQgcmVwYWludENvdW50LCBDR0NvbG9yUmVmIGN1c3RvbUJhY2tncm91bmRDb2xv
cik7Ci1DR1JlY3QgZnJhbWVGb3JMYXllcihjb25zdCBQbGF0Zm9ybUxheWVyKik7Ci19Ci0KICNl
bmRpZiAvLyBXZWJMYXllcl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvV2ViTGF5ZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tCShyZXZpc2lvbiAxNjk5NDcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW0JKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3
LDEwICszNyw2IEBACiAjaW1wb3J0ICJXZWJDb3JlVGhyZWFkLmgiCiAjZW5kaWYKIAotI2lmICFQ
TEFURk9STShJT1MpCi0jaW1wb3J0ICJUaGVtZU1hYy5oIgotI2VuZGlmCi0KIEBpbnRlcmZhY2Ug
Q0FMYXllcihXZWJDb3JlQ0FMYXllclByaXZhdGUpCiAtICh2b2lkKXJlbG9hZFZhbHVlRm9yS2V5
UGF0aDooTlNTdHJpbmcgKilrZXlQYXRoOwogQGVuZApAQCAtNTMsMTYzICs0OSwxNCBAQCAtICh2
b2lkKWRyYXdTY2FsZWRDb250ZW50c0luQ29udGV4dDooQ0dDCiBAZW5kCiAjZW5kaWYKIAotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1SZXBhaW50UmVjdExpc3QgY29sbGVjdFJlY3RzVG9QYWludChD
R0NvbnRleHRSZWYgY29udGV4dCwgUGxhdGZvcm1DQUxheWVyKiBwbGF0Zm9ybUNBTGF5ZXIpCi17
Ci0gICAgX19ibG9jayBkb3VibGUgdG90YWxSZWN0QXJlYSA9IDA7Ci0gICAgX19ibG9jayB1bnNp
Z25lZCByZWN0Q291bnQgPSAwOwotICAgIF9fYmxvY2sgUmVwYWludFJlY3RMaXN0IGRpcnR5UmVj
dHM7Ci0KLSAgICBwbGF0Zm9ybUNBTGF5ZXItPmVudW1lcmF0ZVJlY3RzQmVpbmdEcmF3bihjb250
ZXh0LCBeKENHUmVjdCByZWN0KSB7Ci0gICAgICAgIGlmICgrK3JlY3RDb3VudCA+IHdlYkxheWVy
TWF4UmVjdHNUb1BhaW50KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRvdGFsUmVj
dEFyZWEgKz0gcmVjdC5zaXplLndpZHRoICogcmVjdC5zaXplLmhlaWdodDsKLSAgICAgICAgZGly
dHlSZWN0cy5hcHBlbmQocmVjdCk7Ci0gICAgfSk7Ci0KLSAgICBGbG9hdFJlY3QgY2xpcEJvdW5k
cyA9IENHQ29udGV4dEdldENsaXBCb3VuZGluZ0JveChjb250ZXh0KTsKLSAgICBkb3VibGUgY2xp
cEFyZWEgPSBjbGlwQm91bmRzLndpZHRoKCkgKiBjbGlwQm91bmRzLmhlaWdodCgpOwotCi0gICAg
aWYgKHJlY3RDb3VudCA+PSB3ZWJMYXllck1heFJlY3RzVG9QYWludCB8fCB0b3RhbFJlY3RBcmVh
ID49IGNsaXBBcmVhICogd2ViTGF5ZXJXYXN0ZWRTcGFjZVRocmVzaG9sZCkgewotICAgICAgICBk
aXJ0eVJlY3RzLmNsZWFyKCk7Ci0gICAgICAgIGRpcnR5UmVjdHMuYXBwZW5kKGNsaXBCb3VuZHMp
OwotICAgIH0KLQotICAgIHJldHVybiBkaXJ0eVJlY3RzOwotfQotCi12b2lkIGRyYXdMYXllckNv
bnRlbnRzKENHQ29udGV4dFJlZiBjb250ZXh0LCBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXIqIHBs
YXRmb3JtQ0FMYXllciwgUmVwYWludFJlY3RMaXN0JiBkaXJ0eVJlY3RzKQotewotICAgIFdlYkNv
cmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudCogbGF5ZXJDb250ZW50cyA9IHBsYXRmb3JtQ0FMYXll
ci0+b3duZXIoKTsKLSAgICBpZiAoIWxheWVyQ29udGVudHMpCi0gICAgICAgIHJldHVybjsKLQot
I2lmIFBMQVRGT1JNKElPUykKLSAgICBXS1NldEN1cnJlbnRHcmFwaGljc0NvbnRleHQoY29udGV4
dCk7Ci0jZW5kaWYKLQotICAgIENHQ29udGV4dFNhdmVHU3RhdGUoY29udGV4dCk7Ci0KLSAgICAv
LyBXZSBuZXZlciB1c2UgQ29tcG9zaXRpbmdDb29yZGluYXRlc0JvdHRvbVVwIG9uIE1hYy4KLSAg
ICBBU1NFUlQobGF5ZXJDb250ZW50cy0+cGxhdGZvcm1DQUxheWVyQ29udGVudHNPcmllbnRhdGlv
bigpID09IEdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNUb3BEb3duKTsKLQot
I2lmIFBMQVRGT1JNKElPUykKLSAgICBXS0ZvbnRBbnRpYWxpYXNpbmdTdGF0ZVNhdmVyIGZvbnRB
bnRpYWxpYXNpbmdTdGF0ZShjb250ZXh0LCBbcGxhdGZvcm1DQUxheWVyLT5wbGF0Zm9ybUxheWVy
KCkgaXNPcGFxdWVdKTsKLSAgICBmb250QW50aWFsaWFzaW5nU3RhdGUuc2V0dXAoW1dBS1dpbmRv
dyBoYXNMYW5kc2NhcGVPcmllbnRhdGlvbl0pOwotI2Vsc2UKLSAgICBbTlNHcmFwaGljc0NvbnRl
eHQgc2F2ZUdyYXBoaWNzU3RhdGVdOwotCi0gICAgLy8gU2V0IHVwIGFuIE5TR3JhcGhpY3NDb250
ZXh0IGZvciB0aGUgY29udGV4dCwgc28gdGhhdCBwYXJ0cyBvZiBBcHBLaXQgdGhhdCByZWx5IG9u
Ci0gICAgLy8gdGhlIGN1cnJlbnQgTlNHcmFwaGljc0NvbnRleHQgKGUuZy4gTlNDZWxsIGRyYXdp
bmcpIGdldCB0aGUgcmlnaHQgb25lLgotICAgIE5TR3JhcGhpY3NDb250ZXh0KiBsYXllckNvbnRl
eHQgPSBbTlNHcmFwaGljc0NvbnRleHQgZ3JhcGhpY3NDb250ZXh0V2l0aEdyYXBoaWNzUG9ydDpj
b250ZXh0IGZsaXBwZWQ6WUVTXTsKLSAgICBbTlNHcmFwaGljc0NvbnRleHQgc2V0Q3VycmVudENv
bnRleHQ6bGF5ZXJDb250ZXh0XTsKLSNlbmRpZgotCi0gICAgR3JhcGhpY3NDb250ZXh0IGdyYXBo
aWNzQ29udGV4dChjb250ZXh0KTsKLSAgICBncmFwaGljc0NvbnRleHQuc2V0SXNDQUxheWVyQ29u
dGV4dCh0cnVlKTsKLSAgICBncmFwaGljc0NvbnRleHQuc2V0SXNBY2NlbGVyYXRlZENvbnRleHQo
cGxhdGZvcm1DQUxheWVyLT5hY2NlbGVyYXRlc0RyYXdpbmcoKSk7Ci0KLSAgICBpZiAoIWxheWVy
Q29udGVudHMtPnBsYXRmb3JtQ0FMYXllckNvbnRlbnRzT3BhcXVlKCkpIHsKLSAgICAgICAgLy8g
VHVybiBvZmYgZm9udCBzbW9vdGhpbmcgdG8gaW1wcm92ZSB0aGUgYXBwZWFyYW5jZSBvZiB0ZXh0
IHJlbmRlcmVkIG9udG8gYSB0cmFuc3BhcmVudCBiYWNrZ3JvdW5kLgotICAgICAgICBncmFwaGlj
c0NvbnRleHQuc2V0U2hvdWxkU21vb3RoRm9udHMoZmFsc2UpOwotICAgIH0KLQotI2lmICFQTEFU
Rk9STShJT1MpCi0gICAgLy8gSXQncyBpbXBvcnRhbnQgdG8gZ2V0IHRoZSBjbGlwIGZyb20gdGhl
IGNvbnRleHQsIGJlY2F1c2UgaXQgbWF5IGJlIHNpZ25pZmljYW50bHkKLSAgICAvLyBzbWFsbGVy
IHRoYW4gdGhlIGxheWVyIGJvdW5kcyAoZS5nLiB0aWxlZCBsYXllcnMpCi0gICAgRmxvYXRSZWN0
IGNsaXBCb3VuZHMgPSBDR0NvbnRleHRHZXRDbGlwQm91bmRpbmdCb3goY29udGV4dCk7Ci0KLSAg
ICBGbG9hdFJlY3QgZm9jdXNSaW5nQ2xpcFJlY3QgPSBjbGlwQm91bmRzOwotI2lmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDkwCi0gICAgLy8gU2V0IHRoZSBmb2N1cyByaW5n
IGNsaXAgcmVjdCB3aGljaCBuZWVkcyB0byBiZSBpbiBiYXNlIGNvb3JkaW5hdGVzLgotICAgIEFm
ZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0gPSBDR0NvbnRleHRHZXRDVE0oY29udGV4dCk7Ci0gICAg
Zm9jdXNSaW5nQ2xpcFJlY3QgPSB0cmFuc2Zvcm0ubWFwUmVjdChjbGlwQm91bmRzKTsKLSNlbmRp
ZgotICAgIFRoZW1lTWFjOjpzZXRGb2N1c1JpbmdDbGlwUmVjdChmb2N1c1JpbmdDbGlwUmVjdCk7
Ci0jZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKLQotICAgIGZvciAoY29uc3QgYXV0byYgcmVjdCA6
IGRpcnR5UmVjdHMpIHsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNh
dmVyKGdyYXBoaWNzQ29udGV4dCk7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC5jbGlwKHJlY3Qp
OwotCi0gICAgICAgIGxheWVyQ29udGVudHMtPnBsYXRmb3JtQ0FMYXllclBhaW50Q29udGVudHMo
cGxhdGZvcm1DQUxheWVyLCBncmFwaGljc0NvbnRleHQsIHJlY3QpOwotICAgIH0KLQotI2lmIFBM
QVRGT1JNKElPUykKLSAgICBmb250QW50aWFsaWFzaW5nU3RhdGUucmVzdG9yZSgpOwotI2Vsc2UK
LSAgICBUaGVtZU1hYzo6c2V0Rm9jdXNSaW5nQ2xpcFJlY3QoRmxvYXRSZWN0KCkpOwotCi0gICAg
W05TR3JhcGhpY3NDb250ZXh0IHJlc3RvcmVHcmFwaGljc1N0YXRlXTsKLSNlbmRpZgotCi0gICAg
Ly8gUmUtZmV0Y2ggdGhlIGxheWVyIG93bmVyLCBzaW5jZSA8cmRhcjovL3Byb2JsZW0vOTEyNTE1
MT4gaW5kaWNhdGVzIHRoYXQgaXQgbWlnaHQgaGF2ZSBiZWVuIGRlc3Ryb3llZCBkdXJpbmcgcGFp
bnRpbmcuCi0gICAgbGF5ZXJDb250ZW50cyA9IHBsYXRmb3JtQ0FMYXllci0+b3duZXIoKTsKLSAg
ICBBU1NFUlQobGF5ZXJDb250ZW50cyk7Ci0KLSAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNv
bnRleHQpOwotCi0gICAgLy8gQWx3YXlzIHVwZGF0ZSB0aGUgcmVwYWludCBjb3VudCBzbyB0aGF0
IGl0J3MgYWNjdXJhdGUgZXZlbiBpZiB0aGUgY291bnQgaXRzZWxmIGlzIG5vdCBzaG93bi4gVGhp
cyB3aWxsIGJlIHVzZWZ1bAotICAgIC8vIGZvciB0aGUgV2ViIEluc3BlY3RvciBmZWVkaW5nIHRo
aXMgaW5mb3JtYXRpb24gdGhyb3VnaCB0aGUgTGF5ZXJUcmVlQWdlbnQuCi0gICAgaW50IHJlcGFp
bnRDb3VudCA9IGxheWVyQ29udGVudHMtPnBsYXRmb3JtQ0FMYXllckluY3JlbWVudFJlcGFpbnRD
b3VudChwbGF0Zm9ybUNBTGF5ZXIpOwotCi0gICAgaWYgKCFwbGF0Zm9ybUNBTGF5ZXItPnVzZXNU
aWxlZEJhY2tpbmdMYXllcigpICYmIGxheWVyQ29udGVudHMgJiYgbGF5ZXJDb250ZW50cy0+cGxh
dGZvcm1DQUxheWVyU2hvd1JlcGFpbnRDb3VudGVyKHBsYXRmb3JtQ0FMYXllcikpCi0gICAgICAg
IGRyYXdSZXBhaW50SW5kaWNhdG9yKGNvbnRleHQsIHBsYXRmb3JtQ0FMYXllciwgcmVwYWludENv
dW50LCBudWxscHRyKTsKLX0KLQotdm9pZCBkcmF3UmVwYWludEluZGljYXRvcihDR0NvbnRleHRS
ZWYgY29udGV4dCwgUGxhdGZvcm1DQUxheWVyKiBwbGF0Zm9ybUNBTGF5ZXIsIGludCByZXBhaW50
Q291bnQsIENHQ29sb3JSZWYgY3VzdG9tQmFja2dyb3VuZENvbG9yKQotewotICAgIGNoYXIgdGV4
dFsxNl07IC8vIHRoYXQncyBhIGxvdCBvZiByZXBhaW50cwotICAgIHNucHJpbnRmKHRleHQsIHNp
emVvZih0ZXh0KSwgIiVkIiwgcmVwYWludENvdW50KTsKLQotICAgIENHUmVjdCBpbmRpY2F0b3JC
b3ggPSBwbGF0Zm9ybUNBTGF5ZXItPmJvdW5kcygpOwotICAgIGluZGljYXRvckJveC5zaXplLndp
ZHRoID0gMTIgKyAxMCAqIHN0cmxlbih0ZXh0KTsKLSAgICBpbmRpY2F0b3JCb3guc2l6ZS5oZWln
aHQgPSAyNzsKLSAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNvbnRleHQpOwotCi0gICAgQ0dDb250
ZXh0U2V0QWxwaGEoY29udGV4dCwgMC41Zik7Ci0gICAgQ0dDb250ZXh0QmVnaW5UcmFuc3BhcmVu
Y3lMYXllcldpdGhSZWN0KGNvbnRleHQsIGluZGljYXRvckJveCwgMCk7Ci0KLSAgICBpZiAoY3Vz
dG9tQmFja2dyb3VuZENvbG9yKQotICAgICAgICBDR0NvbnRleHRTZXRGaWxsQ29sb3JXaXRoQ29s
b3IoY29udGV4dCwgY3VzdG9tQmFja2dyb3VuZENvbG9yKTsKLSAgICBlbHNlCi0gICAgICAgIENH
Q29udGV4dFNldFJHQkZpbGxDb2xvcihjb250ZXh0LCAwLCAwLjVmLCAwLjI1ZiwgMSk7Ci0KLSAg
ICBDR0NvbnRleHRGaWxsUmVjdChjb250ZXh0LCBpbmRpY2F0b3JCb3gpOwotCi0gICAgaWYgKHBs
YXRmb3JtQ0FMYXllci0+YWNjZWxlcmF0ZXNEcmF3aW5nKCkpCi0gICAgICAgIENHQ29udGV4dFNl
dFJHQkZpbGxDb2xvcihjb250ZXh0LCAxLCAwLCAwLCAxKTsKLSAgICBlbHNlCi0gICAgICAgIENH
Q29udGV4dFNldFJHQkZpbGxDb2xvcihjb250ZXh0LCAxLCAxLCAxLCAxKTsKLQotI3ByYWdtYSBj
bGFuZyBkaWFnbm9zdGljIHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICIt
V2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgotICAgIENHQ29udGV4dFNldFRleHRNYXRyaXgoY29u
dGV4dCwgQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlU2NhbGUoMSwgLTEpKTsKLSAgICBDR0NvbnRleHRT
ZWxlY3RGb250KGNvbnRleHQsICJIZWx2ZXRpY2EiLCAyMiwga0NHRW5jb2RpbmdNYWNSb21hbik7
Ci0gICAgQ0dDb250ZXh0U2hvd1RleHRBdFBvaW50KGNvbnRleHQsIGluZGljYXRvckJveC5vcmln
aW4ueCArIDUsIGluZGljYXRvckJveC5vcmlnaW4ueSArIDIyLCB0ZXh0LCBzdHJsZW4odGV4dCkp
OwotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAotCi0gICAgQ0dDb250ZXh0RW5kVHJhbnNw
YXJlbmN5TGF5ZXIoY29udGV4dCk7Ci0gICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShjb250ZXh0
KTsKLX0KLQotQ0dSZWN0IGZyYW1lRm9yTGF5ZXIoY29uc3QgUGxhdGZvcm1MYXllciogdGlsZUxh
eWVyKQotewotICAgIHJldHVybiBbdGlsZUxheWVyIGZyYW1lXTsKLX0KLQotfQotCiBAaW1wbGVt
ZW50YXRpb24gV2ViTGF5ZXIKIAogLSAodm9pZClkcmF3SW5Db250ZXh0OihDR0NvbnRleHRSZWYp
Y29udGV4dAogewogICAgIFBsYXRmb3JtQ0FMYXllciogbGF5ZXIgPSBQbGF0Zm9ybUNBTGF5ZXI6
OnBsYXRmb3JtQ0FMYXllcihzZWxmKTsKICAgICBpZiAobGF5ZXIpIHsKLSAgICAgICAgUmVwYWlu
dFJlY3RMaXN0IHJlY3RzVG9QYWludCA9IGNvbGxlY3RSZWN0c1RvUGFpbnQoY29udGV4dCwgbGF5
ZXIpOwotICAgICAgICBkcmF3TGF5ZXJDb250ZW50cyhjb250ZXh0LCBsYXllciwgcmVjdHNUb1Bh
aW50KTsKKyAgICAgICAgUGxhdGZvcm1DQUxheWVyOjpSZXBhaW50UmVjdExpc3QgcmVjdHNUb1Bh
aW50ID0gUGxhdGZvcm1DQUxheWVyOjpjb2xsZWN0UmVjdHNUb1BhaW50KGNvbnRleHQsIGxheWVy
KTsKKyAgICAgICAgUGxhdGZvcm1DQUxheWVyOjpkcmF3TGF5ZXJDb250ZW50cyhjb250ZXh0LCBs
YXllciwgcmVjdHNUb1BhaW50KTsKICAgICB9CiB9CiAK
</data>
<flag name="review"
          id="257586"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>233101</attachid>
            <date>2014-06-13 21:28:46 -0700</date>
            <delta_ts>2014-06-13 21:31:17 -0700</delta_ts>
            <desc>fix the build</desc>
            <filename>build.diff</filename>
            <type>text/plain</type>
            <size>2373</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA0NjZlZDY0Li41YjdmOTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAg
QEAKKzIwMTQtMDYtMTMgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgRml4IHRoZSBidWlsZC4KKworICAgICAgICAqIFNoYXJlZC9tYWMvUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmUubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0
b3JlOjpkcmF3SW5Db250ZXh0KToKKwogMjAxNC0wNi0xMyAgTWFydGluIEhvY2sgIDxtaG9ja0Bh
cHBsZS5jb20+CiAKICAgICAgICAgQ2xlYW4gdXAgbGF5ZXJzIGluIFJlbW90ZUxheWVyVHJlZUhv
c3Q6OmNsZWFyTGF5ZXJzKCkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFj
L1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9S
ZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQppbmRleCBlYjc0YWI3Li4yNTQzZjE1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUu
bW0KQEAgLTI3OSw3ICsyNzksNyBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkcmF3
SW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgQ0dJbWFnZVJlZgogICAgIEludFJl
Y3QgZGlydHlCb3VuZHMgPSBtX2RpcnR5UmVnaW9uLmJvdW5kcygpOwogCiAgICAgVmVjdG9yPElu
dFJlY3Q+IGRpcnR5UmVjdHMgPSBtX2RpcnR5UmVnaW9uLnJlY3RzKCk7Ci0gICAgaWYgKGRpcnR5
UmVjdHMuc2l6ZSgpID4gd2ViTGF5ZXJNYXhSZWN0c1RvUGFpbnQgfHwgbV9kaXJ0eVJlZ2lvbi50
b3RhbEFyZWEoKSA+IHdlYkxheWVyV2FzdGVkU3BhY2VUaHJlc2hvbGQgKiBkaXJ0eUJvdW5kcy53
aWR0aCgpICogZGlydHlCb3VuZHMuaGVpZ2h0KCkpIHsKKyAgICBpZiAoZGlydHlSZWN0cy5zaXpl
KCkgPiBQbGF0Zm9ybUNBTGF5ZXI6OndlYkxheWVyTWF4UmVjdHNUb1BhaW50IHx8IG1fZGlydHlS
ZWdpb24udG90YWxBcmVhKCkgPiBQbGF0Zm9ybUNBTGF5ZXI6OndlYkxheWVyV2FzdGVkU3BhY2VU
aHJlc2hvbGQgKiBkaXJ0eUJvdW5kcy53aWR0aCgpICogZGlydHlCb3VuZHMuaGVpZ2h0KCkpIHsK
ICAgICAgICAgZGlydHlSZWN0cy5jbGVhcigpOwogICAgICAgICBkaXJ0eVJlY3RzLmFwcGVuZChk
aXJ0eUJvdW5kcyk7CiAgICAgfQpAQCAtMjkzLDcgKzI5Myw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmU6OmRyYXdJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBDR0lt
YWdlUmVmCiAgICAgICAgIG1fcGFpbnRpbmdSZWN0cy5hcHBlbmQoc2NhbGVkUmVjdCk7CiAgICAg
fQogCi0gICAgQ0dSZWN0IGNnUGFpbnRpbmdSZWN0c1t3ZWJMYXllck1heFJlY3RzVG9QYWludF07
CisgICAgQ0dSZWN0IGNnUGFpbnRpbmdSZWN0c1tQbGF0Zm9ybUNBTGF5ZXI6OndlYkxheWVyTWF4
UmVjdHNUb1BhaW50XTsKICAgICBmb3IgKHNpemVfdCBpID0gMCwgZGlydHlSZWN0Q291bnQgPSBt
X3BhaW50aW5nUmVjdHMuc2l6ZSgpOyBpIDwgZGlydHlSZWN0Q291bnQ7ICsraSkgewogICAgICAg
ICBGbG9hdFJlY3Qgc2NhbGVkUGFpbnRpbmdSZWN0ID0gbV9wYWludGluZ1JlY3RzW2ldOwogICAg
ICAgICBzY2FsZWRQYWludGluZ1JlY3Quc2NhbGUobV9zY2FsZSk7CkBAIC0zMjQsNyArMzI0LDcg
QEAgdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZHJhd0luQ29udGV4dChHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIENHSW1hZ2VSZWYKICAgICAgICAgbV9sYXllci0+b3duZXIoKS0+cGxh
dGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyhtX2xheWVyLCBjb250ZXh0LCBkaXJ0eUJvdW5kcyk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVXZWJM
YXllcjoKLSAgICAgICAgZHJhd0xheWVyQ29udGVudHMoY2dDb250ZXh0LCBtX2xheWVyLCBtX3Bh
aW50aW5nUmVjdHMpOworICAgICAgICBQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdMYXllckNvbnRlbnRz
KGNnQ29udGV4dCwgbV9sYXllciwgbV9wYWludGluZ1JlY3RzKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUxheWVyOgogICAgIGNhc2UgUGxhdGZv
cm1DQUxheWVyOjpMYXllclR5cGVUcmFuc2Zvcm1MYXllcjoK
</data>
<flag name="commit-queue"
          id="257597"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>233102</attachid>
            <date>2014-06-13 21:31:17 -0700</date>
            <delta_ts>2014-06-13 22:10:07 -0700</delta_ts>
            <desc>fix the build</desc>
            <filename>build.diff</filename>
            <type>text/plain</type>
            <size>2385</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA0NjZlZDY0Li4wNDA2YzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAg
QEAKKzIwMTQtMDYtMTMgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgVW5yZXZpZXdlZDsgZml4IHRoZSBidWlsZC4KKworICAgICAgICAqIFNoYXJlZC9t
YWMvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxh
eWVyQmFja2luZ1N0b3JlOjpkcmF3SW5Db250ZXh0KToKKwogMjAxNC0wNi0xMyAgTWFydGluIEhv
Y2sgIDxtaG9ja0BhcHBsZS5jb20+CiAKICAgICAgICAgQ2xlYW4gdXAgbGF5ZXJzIGluIFJlbW90
ZUxheWVyVHJlZUhvc3Q6OmNsZWFyTGF5ZXJzKCkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQppbmRleCBlYjc0YWI3Li4yNTQz
ZjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFj
a2luZ1N0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmUubW0KQEAgLTI3OSw3ICsyNzksNyBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2lu
Z1N0b3JlOjpkcmF3SW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgQ0dJbWFnZVJl
ZgogICAgIEludFJlY3QgZGlydHlCb3VuZHMgPSBtX2RpcnR5UmVnaW9uLmJvdW5kcygpOwogCiAg
ICAgVmVjdG9yPEludFJlY3Q+IGRpcnR5UmVjdHMgPSBtX2RpcnR5UmVnaW9uLnJlY3RzKCk7Ci0g
ICAgaWYgKGRpcnR5UmVjdHMuc2l6ZSgpID4gd2ViTGF5ZXJNYXhSZWN0c1RvUGFpbnQgfHwgbV9k
aXJ0eVJlZ2lvbi50b3RhbEFyZWEoKSA+IHdlYkxheWVyV2FzdGVkU3BhY2VUaHJlc2hvbGQgKiBk
aXJ0eUJvdW5kcy53aWR0aCgpICogZGlydHlCb3VuZHMuaGVpZ2h0KCkpIHsKKyAgICBpZiAoZGly
dHlSZWN0cy5zaXplKCkgPiBQbGF0Zm9ybUNBTGF5ZXI6OndlYkxheWVyTWF4UmVjdHNUb1BhaW50
IHx8IG1fZGlydHlSZWdpb24udG90YWxBcmVhKCkgPiBQbGF0Zm9ybUNBTGF5ZXI6OndlYkxheWVy
V2FzdGVkU3BhY2VUaHJlc2hvbGQgKiBkaXJ0eUJvdW5kcy53aWR0aCgpICogZGlydHlCb3VuZHMu
aGVpZ2h0KCkpIHsKICAgICAgICAgZGlydHlSZWN0cy5jbGVhcigpOwogICAgICAgICBkaXJ0eVJl
Y3RzLmFwcGVuZChkaXJ0eUJvdW5kcyk7CiAgICAgfQpAQCAtMjkzLDcgKzI5Myw3IEBAIHZvaWQg
UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRyYXdJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBDR0ltYWdlUmVmCiAgICAgICAgIG1fcGFpbnRpbmdSZWN0cy5hcHBlbmQoc2NhbGVk
UmVjdCk7CiAgICAgfQogCi0gICAgQ0dSZWN0IGNnUGFpbnRpbmdSZWN0c1t3ZWJMYXllck1heFJl
Y3RzVG9QYWludF07CisgICAgQ0dSZWN0IGNnUGFpbnRpbmdSZWN0c1tQbGF0Zm9ybUNBTGF5ZXI6
OndlYkxheWVyTWF4UmVjdHNUb1BhaW50XTsKICAgICBmb3IgKHNpemVfdCBpID0gMCwgZGlydHlS
ZWN0Q291bnQgPSBtX3BhaW50aW5nUmVjdHMuc2l6ZSgpOyBpIDwgZGlydHlSZWN0Q291bnQ7ICsr
aSkgewogICAgICAgICBGbG9hdFJlY3Qgc2NhbGVkUGFpbnRpbmdSZWN0ID0gbV9wYWludGluZ1Jl
Y3RzW2ldOwogICAgICAgICBzY2FsZWRQYWludGluZ1JlY3Quc2NhbGUobV9zY2FsZSk7CkBAIC0z
MjQsNyArMzI0LDcgQEAgdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZHJhd0luQ29udGV4
dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIENHSW1hZ2VSZWYKICAgICAgICAgbV9sYXllci0+
b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyhtX2xheWVyLCBjb250ZXh0LCBk
aXJ0eUJvdW5kcyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpM
YXllclR5cGVXZWJMYXllcjoKLSAgICAgICAgZHJhd0xheWVyQ29udGVudHMoY2dDb250ZXh0LCBt
X2xheWVyLCBtX3BhaW50aW5nUmVjdHMpOworICAgICAgICBQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdM
YXllckNvbnRlbnRzKGNnQ29udGV4dCwgbV9sYXllciwgbV9wYWludGluZ1JlY3RzKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUxheWVyOgogICAg
IGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVUcmFuc2Zvcm1MYXllcjoK
</data>

          </attachment>
      

    </bug>

</bugzilla>