<?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>72191</bug_id>
          
          <creation_ts>2011-11-11 15:16:18 -0800</creation_ts>
          <short_desc>[Chromium] Add support for painting directly to shared memory.</short_desc>
          <delta_ts>2013-04-12 07:21:57 -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>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>
          <dependson>71869</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Reveman">reveman</reporter>
          <assigned_to name="David Reveman">reveman</assigned_to>
          <cc>danakj</cc>
    
    <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>nduca</cc>
    
    <cc>piman</cc>
    
    <cc>schenney</cc>
    
    <cc>sky</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>501151</commentid>
    <comment_count>0</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-11-11 15:16:18 -0800</bug_when>
    <thetext>Map shared memory buffers prior to painting tile-sized chunks using SkPicture. Allows us to paint directly to shared memory instead of temporary buffers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501165</commentid>
    <comment_count>1</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-11-11 15:26:17 -0800</bug_when>
    <thetext>*** Bug 71023 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501171</commentid>
    <comment_count>2</comment_count>
      <attachid>114788</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-11-11 15:31:19 -0800</bug_when>
    <thetext>Created attachment 114788
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501178</commentid>
    <comment_count>3</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-11 15:42:45 -0800</bug_when>
    <thetext>Do we know if this is actually a win?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501485</commentid>
    <comment_count>4</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-11-12 17:30:54 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Do we know if this is actually a win?

This is more important for the ability to implement an out-of-process compositor than performance but eliminating an unnecessary memcpy shouldn&apos;t hurt. Shared memory resources are not increased by this change so it seems unlikely it would have a negative impact. Only difference is the shared memory is mapped in the renderer for a bit longer than before. I&apos;d be surprised if that has any performance impact. We could make painting directly to shared memory optional but I don&apos;t see a good reason for that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503166</commentid>
    <comment_count>5</comment_count>
      <attachid>115222</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-11-15 12:41:03 -0800</bug_when>
    <thetext>Created attachment 115222
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504331</commentid>
    <comment_count>6</comment_count>
      <attachid>115222</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-11-16 15:37:50 -0800</bug_when>
    <thetext>Comment on attachment 115222
Patch

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

This looks good to me.

&gt; Source/WebCore/platform/graphics/chromium/BitmapSkPictureCanvasLayerTextureUpdater.cpp:79
&gt; +        m_mappedBuffer = NULL;

nit: s/NULL/0/ in WebKit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506156</commentid>
    <comment_count>7</comment_count>
      <attachid>115896</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-11-18 15:53:16 -0800</bug_when>
    <thetext>Created attachment 115896
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506221</commentid>
    <comment_count>8</comment_count>
      <attachid>115911</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-11-18 17:04:20 -0800</bug_when>
    <thetext>Created attachment 115911
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506614</commentid>
    <comment_count>9</comment_count>
      <attachid>116008</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-11-20 16:37:27 -0800</bug_when>
    <thetext>Created attachment 116008
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513927</commentid>
    <comment_count>10</comment_count>
      <attachid>117654</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-12-02 10:55:38 -0800</bug_when>
    <thetext>Created attachment 117654
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518939</commentid>
    <comment_count>11</comment_count>
      <attachid>118717</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-12-11 16:33:37 -0800</bug_when>
    <thetext>Created attachment 118717
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558395</commentid>
    <comment_count>12</comment_count>
      <attachid>127419</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-02-16 11:44:47 -0800</bug_when>
    <thetext>Created attachment 127419
Prototype (WebKit)

This is a prototype for how to implement efficient painting directly to shared memory. This is just a proof of concept and is currently missing a framework for determining when shared memory can be reused without affecting pending updates.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558397</commentid>
    <comment_count>13</comment_count>
      <attachid>127420</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-02-16 11:45:20 -0800</bug_when>
    <thetext>Created attachment 127420
Prototype (Chromium)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558426</commentid>
    <comment_count>14</comment_count>
      <attachid>127419</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-02-16 12:15:43 -0800</bug_when>
    <thetext>Comment on attachment 127419
Prototype (WebKit)

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

it&apos;s not as scary as i imagined :)

&gt; Source/WebCore/platform/graphics/chromium/BitmapSkPictureCanvasLayerTextureUpdater.cpp:53
&gt; +    if (texture()-&gt;mapTransferBuffer())

think this should have width, height arguments? it could just assert on them being wrong even. it&apos;s scary to alloc and setPixels with no sizes in sight :)

i like how simple this is though!

&gt; Source/WebCore/platform/graphics/chromium/BitmapSkPictureCanvasLayerTextureUpdater.cpp:70
&gt; +        helper-&gt;TexSubImage2D(GraphicsContext3D::TEXTURE_2D, 0, destRect.x(), destRect.y(), destRect.width(), destRect.height(), texture()-&gt;format(), GraphicsContext3D::UNSIGNED_BYTE, texture()-&gt;shmId(), 0, FALSE);

this thing feels like a nice place for an abstraction.. textureUpdater()-&gt;updateSharedMemTextureRect() ?

or maybe pass texture() to the textureUpdater()-&gt;updateTextureRect() and it can do this if{}else{} ?

not sure other ideas..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558436</commentid>
    <comment_count>15</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-02-16 12:25:03 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 127419 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=127419&amp;action=review
&gt; 
&gt; it&apos;s not as scary as i imagined :)
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/BitmapSkPictureCanvasLayerTextureUpdater.cpp:53
&gt; &gt; +    if (texture()-&gt;mapTransferBuffer())
&gt; 
&gt; think this should have width, height arguments? it could just assert on them being wrong even. it&apos;s scary to alloc and setPixels with no sizes in sight :)

I guess there could be an ASSERT there to check that sourceRect is less than texture dimensions.

&gt; 
&gt; i like how simple this is though!
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/BitmapSkPictureCanvasLayerTextureUpdater.cpp:70
&gt; &gt; +        helper-&gt;TexSubImage2D(GraphicsContext3D::TEXTURE_2D, 0, destRect.x(), destRect.y(), destRect.width(), destRect.height(), texture()-&gt;format(), GraphicsContext3D::UNSIGNED_BYTE, texture()-&gt;shmId(), 0, FALSE);
&gt; 
&gt; this thing feels like a nice place for an abstraction.. textureUpdater()-&gt;updateSharedMemTextureRect() ?
&gt; 
&gt; or maybe pass texture() to the textureUpdater()-&gt;updateTextureRect() and it can do this if{}else{} ?

This is all very temporary. Things will probably look a bit different in a real patch with a proper GraphicsContext3D API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562396</commentid>
    <comment_count>16</comment_count>
      <attachid>128291</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-02-22 14:34:19 -0800</bug_when>
    <thetext>Created attachment 128291
Prototype (WebKit)

Add decent memory management and GPU process coordination.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562398</commentid>
    <comment_count>17</comment_count>
      <attachid>128292</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-02-22 14:35:21 -0800</bug_when>
    <thetext>Created attachment 128292
Prototype (Chromium)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565767</commentid>
    <comment_count>18</comment_count>
      <attachid>129061</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-02-27 10:08:15 -0800</bug_when>
    <thetext>Created attachment 129061
Prototype (WebKit)

Rebase and threaded compositor support.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565768</commentid>
    <comment_count>19</comment_count>
      <attachid>129062</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-02-27 10:09:59 -0800</bug_when>
    <thetext>Created attachment 129062
Prototype (Chromium)

Rebase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567850</commentid>
    <comment_count>20</comment_count>
      <attachid>129496</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-02-29 12:58:10 -0800</bug_when>
    <thetext>Created attachment 129496
Prototype (WebKit)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567851</commentid>
    <comment_count>21</comment_count>
      <attachid>129497</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-02-29 12:58:43 -0800</bug_when>
    <thetext>Created attachment 129497
Prototype (Chromium)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583496</commentid>
    <comment_count>22</comment_count>
      <attachid>132906</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-03-20 14:57:39 -0700</bug_when>
    <thetext>Created attachment 132906
Prototype (WebKit)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583499</commentid>
    <comment_count>23</comment_count>
      <attachid>132907</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-03-20 14:58:23 -0700</bug_when>
    <thetext>Created attachment 132907
Prototype (Chromium)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>593877</commentid>
    <comment_count>24</comment_count>
      <attachid>135196</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-04-02 14:49:43 -0700</bug_when>
    <thetext>Created attachment 135196
Prototype (WebKit)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>593879</commentid>
    <comment_count>25</comment_count>
      <attachid>135198</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-04-02 14:50:33 -0700</bug_when>
    <thetext>Created attachment 135198
Prototype (Chromium)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>593923</commentid>
    <comment_count>26</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-04-02 15:32:15 -0700</bug_when>
    <thetext>Hey David, I&apos;m feeling a bit confused about this bug. I see 20 patches here all labeled prototype.

Is there uncertainty about the approach or something? Net/net, how can I provide assistance in order to crisp up the plan and move from prototyping to review and landing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594258</commentid>
    <comment_count>27</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-04-03 00:33:11 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; Hey David, I&apos;m feeling a bit confused about this bug. I see 20 patches here all labeled prototype.

Sorry about the confusion. I&apos;ve just been rebasing these patches as there&apos;s been some interest in trying them out. I haven&apos;t had time to do any real work on this lately but I&apos;m hoping to make some progress here soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594568</commentid>
    <comment_count>28</comment_count>
      <attachid>135345</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-04-03 09:46:36 -0700</bug_when>
    <thetext>Created attachment 135345
Prototype (WebKit)

just another rebase..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594570</commentid>
    <comment_count>29</comment_count>
      <attachid>135346</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-04-03 09:47:15 -0700</bug_when>
    <thetext>Created attachment 135346
Prototype (Chromium)

rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633026</commentid>
    <comment_count>30</comment_count>
      <attachid>143867</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-05-24 12:00:04 -0700</bug_when>
    <thetext>Created attachment 143867
Patch

Requires this chromium CL: http://codereview.chromium.org/10440019/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>874710</commentid>
    <comment_count>31</comment_count>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2013-04-12 07:21:57 -0700</bug_when>
    <thetext>https://code.google.com/p/chromium/issues/detail?id=230811</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114788</attachid>
            <date>2011-11-11 15:31:19 -0800</date>
            <delta_ts>2011-11-15 12:41:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>paint-to-shared-memory.diff</filename>
            <type>text/plain</type>
            <size>6906</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">Y29tbWl0IDdiMDAwNTM1YzI2YWY3NzQ2MzA0ODFmODViNjA5MjAwOTlhYjRhNzcKQXV0aG9yOiBE
YXZpZCBSZXZlbWFuIDxyZXZlbWFuQGNocm9taXVtLm9yZz4KRGF0ZTogICBGcmkgTm92IDExIDE1
OjE2OjU5IDIwMTEgLTA4MDAKCiAgICBbQ2hyb21pdW1dIEFkZCBzdXBwb3J0IGZvciBwYWludGlu
ZyBkaXJlY3RseSB0byBzaGFyZWQgbWVtb3J5LgoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0M2M2MWJkLi45ZGRh
YzAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTEtMTEtMTEgIERhdmlkIFJldmVt
YW4gIDxyZXZlbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIEFkZCBzdXBw
b3J0IGZvciBwYWludGluZyBkaXJlY3RseSB0byBzaGFyZWQgbWVtb3J5LgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIxOTEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYXAgc2hhcmVkIG1lbW9yeSBidWZm
ZXJzIHByaW9yIHRvIHBhaW50aW5nIHRpbGUtc2l6ZWQgY2h1bmtzIHVzaW5nCisgICAgICAgIFNr
UGljdHVyZS4gQWxsb3dzIHVzIHRvIHBhaW50IGRpcmVjdGx5IHRvIHNoYXJlZCBtZW1vcnkgaW5z
dGVhZCBvZgorICAgICAgICB0ZW1wb3JhcnkgYnVmZmVycy4KKworICAgICAgICBObyBuZXcgdGVz
dHMuIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXI6OlRleHR1cmU6OlRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwU2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6cHJlcGFyZVJlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
VGV4dHVyZTo6cGFpbnRDb250ZW50c1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwU2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
OjpCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyOjp1c2VNYXBUZXhTdWJJbWFnZSk6CisKIDIwMTEtMTEtMTAgIERhdmlk
IFJldmVtYW4gIDxyZXZlbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIElt
cGxlbWVudCB0aWxlLXNpemVkIHBhaW50aW5nIHVzaW5nIFNrUGljdHVyZS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5jcHAKaW5kZXggMzRjM2M2NC4uMDk1MjZjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTMx
LDYgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIuaCIKIAorI2luY2x1ZGUgIkV4dGVuc2lvbnMzRENocm9taXVtLmgiCiAjaW5jbHVk
ZSAiTGF5ZXJQYWludGVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJTa0NhbnZhcy5oIgogI2luY2x1
ZGUgInNraWEvZXh0L3BsYXRmb3JtX2NhbnZhcy5oIgpAQCAtMzksMjggKzQwLDQ3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZTo6VGV4dHVyZShCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyKiB0ZXh0dXJlVXBkYXRlciwgUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkK
ICAgICA6IExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUodGV4dHVyZSkKKyAgICAsIG1fbWFw
cGVkQnVmZmVyKDApCiAgICAgLCBtX3RleHR1cmVVcGRhdGVyKHRleHR1cmVVcGRhdGVyKQogewog
fQogCi12b2lkIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1
cmU6OnByZXBhcmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKQor
dm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpw
cmVwYXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciog
YWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0
UmVjdCkKIHsKLSAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IHNvdXJjZVJlY3Qud2lkdGgoKSAqIHNv
dXJjZVJlY3QuaGVpZ2h0KCkgKiA0OwotICAgIG1fcGl4ZWxEYXRhID0gYWRvcHRBcnJheVB0cihu
ZXcgdWludDhfdFtidWZmZXJTaXplXSk7CisgICAgQVNTRVJUKCFtX21hcHBlZEJ1ZmZlcik7Cisg
ICAgQVNTRVJUKCFtX3BpeGVsRGF0YS5nZXQoKSk7CisKKyAgICBpZiAodGV4dHVyZVVwZGF0ZXIo
KS0+dXNlTWFwVGV4U3ViSW1hZ2UoKSkgeworICAgICAgICBFeHRlbnNpb25zM0RDaHJvbWl1bSog
ZXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4oY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpKTsKKyAgICAgICAgbV9tYXBwZWRCdWZmZXIgPSBzdGF0aWNfY2FzdDx1
aW50OF90Kj4oZXh0ZW5zaW9ucy0+bWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNKEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFXzJELCAwLCBkZXN0UmVjdC54KCksIGRlc3RSZWN0LnkoKSwgZGVzdFJl
Y3Qud2lkdGgoKSwgZGVzdFJlY3QuaGVpZ2h0KCksIHRleHR1cmUoKS0+Zm9ybWF0KCksIEdyYXBo
aWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6V1JJVEVf
T05MWSkpOworICAgIH0KKworICAgIGlmICghbV9tYXBwZWRCdWZmZXIpIHsKKyAgICAgICAgc2l6
ZV90IGJ1ZmZlclNpemUgPSBzb3VyY2VSZWN0LndpZHRoKCkgKiBzb3VyY2VSZWN0LmhlaWdodCgp
ICogNDsKKyAgICAgICAgbV9waXhlbERhdGEgPSBhZG9wdEFycmF5UHRyKG5ldyB1aW50OF90W2J1
ZmZlclNpemVdKTsKKyAgICB9CiB9CiAKIHZvaWQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6cGFpbnRDb250ZW50c1JlY3QoY29uc3QgSW50UmVjdCYg
c291cmNlUmVjdCkKIHsKLSAgICBBU1NFUlQobV9waXhlbERhdGEuZ2V0KCkpOwotICAgIE93blB0
cjxTa0NhbnZhcz4gY2FudmFzID0gYWRvcHRQdHIobmV3IHNraWE6OlBsYXRmb3JtQ2FudmFzKHNv
dXJjZVJlY3Qud2lkdGgoKSwgc291cmNlUmVjdC5oZWlnaHQoKSwgZmFsc2UsIG1fcGl4ZWxEYXRh
LmdldCgpKSk7CisgICAgdWludDhfdCogcGl4ZWxzID0gbV9tYXBwZWRCdWZmZXIgPyBtX21hcHBl
ZEJ1ZmZlciA6IG1fcGl4ZWxEYXRhLmdldCgpOworICAgIEFTU0VSVChwaXhlbHMpOworCisgICAg
T3duUHRyPFNrQ2FudmFzPiBjYW52YXMgPSBhZG9wdFB0cihuZXcgc2tpYTo6UGxhdGZvcm1DYW52
YXMoc291cmNlUmVjdC53aWR0aCgpLCBzb3VyY2VSZWN0LmhlaWdodCgpLCBmYWxzZSwgcGl4ZWxz
KSk7CiAgICAgdGV4dHVyZVVwZGF0ZXIoKS0+cGFpbnRDb250ZW50c1JlY3QoY2FudmFzLmdldCgp
LCBzb3VyY2VSZWN0KTsKIH0KIAogdm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3Qs
IGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQogewogICAgIHRleHR1cmUoKS0+YmluZFRleHR1cmUo
Y29udGV4dCwgYWxsb2NhdG9yKTsKLSAgICB0ZXh0dXJlVXBkYXRlcigpLT51cGRhdGVUZXh0dXJl
UmVjdChjb250ZXh0LCB0ZXh0dXJlKCktPmZvcm1hdCgpLCBkZXN0UmVjdCwgbV9waXhlbERhdGEu
Z2V0KCkpOwotICAgIG1fcGl4ZWxEYXRhLmNsZWFyKCk7CisgICAgaWYgKG1fbWFwcGVkQnVmZmVy
KSB7CisgICAgICAgIEV4dGVuc2lvbnMzRENocm9taXVtKiBleHRlbnNpb25zID0gc3RhdGljX2Nh
c3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkpOyAgICAg
ICAgCisgICAgICAgIGV4dGVuc2lvbnMtPnVubWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNKG1fbWFw
cGVkQnVmZmVyKTsKKyAgICAgICAgbV9tYXBwZWRCdWZmZXIgPSBOVUxMOworICAgIH0gZWxzZSB7
CisgICAgICAgIHRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRleHR1cmVSZWN0KGNvbnRleHQsIHRl
eHR1cmUoKS0+Zm9ybWF0KCksIGRlc3RSZWN0LCBtX3BpeGVsRGF0YS5nZXQoKSk7CisgICAgICAg
IG1fcGl4ZWxEYXRhLmNsZWFyKCk7CisgICAgfQogfQogCiBQYXNzUmVmUHRyPEJpdG1hcFNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI+IEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPiBw
YWludGVyLCBib29sIHVzZU1hcFRleFN1YkltYWdlKQpAQCAtNzAsNiArOTAsNyBAQCBQYXNzUmVm
UHRyPEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI+IEJpdG1hcFNrUGlj
dHVyZUNhbnZhc0xheWVyVAogCiBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyOjpCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8
TGF5ZXJQYWludGVyQ2hyb21pdW0+IHBhaW50ZXIsIGJvb2wgdXNlTWFwVGV4U3ViSW1hZ2UpCiAg
ICAgOiBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKHBhaW50ZXIpCisgICAgLCBt
X3VzZU1hcFRleFN1YkltYWdlKHVzZU1hcFRleFN1YkltYWdlKQogICAgICwgbV90ZXhTdWJJbWFn
ZSh1c2VNYXBUZXhTdWJJbWFnZSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Jp
dG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCA5ZjNhOWJlLi5k
YmQzMDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC00OSw2ICs0OSw3IEBAIHB1YmxpYzoKICAgICBw
cml2YXRlOgogICAgICAgICBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
KiB0ZXh0dXJlVXBkYXRlcigpIHsgcmV0dXJuIG1fdGV4dHVyZVVwZGF0ZXI7IH0KIAorICAgICAg
ICB1aW50OF90KiBtX21hcHBlZEJ1ZmZlcjsKICAgICAgICAgT3duQXJyYXlQdHI8dWludDhfdD4g
bV9waXhlbERhdGE7CiAgICAgICAgIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIqIG1fdGV4dHVyZVVwZGF0ZXI7CiAgICAgfTsKQEAgLTYyLDEwICs2MywxMiBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29udGVu
dFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzKTsKICAgICB2
b2lkIHBhaW50Q29udGVudHNSZWN0KFNrQ2FudmFzKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVj
dCk7CiAgICAgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIEdDM0Rl
bnVtIGZvcm1hdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsIGNvbnN0IHVpbnQ4X3QqIHBpeGVs
cyk7CisgICAgYm9vbCB1c2VNYXBUZXhTdWJJbWFnZSgpIHsgcmV0dXJuIG1fdXNlTWFwVGV4U3Vi
SW1hZ2U7IH0KIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBCaXRtYXBTa1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+LCBib29s
IHVzZU1hcFRleFN1YkltYWdlKTsKIAorICAgIGJvb2wgbV91c2VNYXBUZXhTdWJJbWFnZTsKICAg
ICBMYXllclRleHR1cmVTdWJJbWFnZSBtX3RleFN1YkltYWdlOwogfTsKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115222</attachid>
            <date>2011-11-15 12:41:03 -0800</date>
            <delta_ts>2011-11-18 15:53:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>shared-memory-painting.diff</filename>
            <type>text/plain</type>
            <size>6912</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">Y29tbWl0IGYwMWQ1MTM1YWY1NzE1NzZiZmE4OTFmZTBlZTNmZTBhNDQ3YTkyN2MKQXV0aG9yOiBE
YXZpZCBSZXZlbWFuIDxyZXZlbWFuQGNocm9taXVtLm9yZz4KRGF0ZTogICBNb24gTm92IDE0IDIx
OjMzOjQ1IDIwMTEgLTA4MDAKCiAgICBbQ2hyb21pdW1dIEFkZCBzdXBwb3J0IGZvciBwYWludGlu
ZyBkaXJlY3RseSB0byBzaGFyZWQgbWVtb3J5LgoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5MzE5Y2Q1Li45Yjcz
NDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTEtMTEtMTEgIERhdmlkIFJldmVt
YW4gIDxyZXZlbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIEFkZCBzdXBw
b3J0IGZvciBwYWludGluZyBkaXJlY3RseSB0byBzaGFyZWQgbWVtb3J5LgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIxOTEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYXAgc2hhcmVkIG1lbW9yeSBidWZm
ZXJzIHByaW9yIHRvIHBhaW50aW5nIHRpbGUtc2l6ZWQgY2h1bmtzIHVzaW5nCisgICAgICAgIFNr
UGljdHVyZS4gQWxsb3dzIHVzIHRvIHBhaW50IGRpcmVjdGx5IHRvIHNoYXJlZCBtZW1vcnkgaW5z
dGVhZCBvZgorICAgICAgICB0ZW1wb3JhcnkgYnVmZmVycy4KKworICAgICAgICBObyBuZXcgdGVz
dHMuIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXI6OlRleHR1cmU6OlRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwU2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6cHJlcGFyZVJlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
VGV4dHVyZTo6cGFpbnRDb250ZW50c1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwU2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
OjpCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyOjp1c2VNYXBUZXhTdWJJbWFnZSk6CisKIDIwMTEtMTEtMTAgIERhdmlk
IFJldmVtYW4gIDxyZXZlbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIElt
cGxlbWVudCB0aWxlLXNpemVkIHBhaW50aW5nIHVzaW5nIFNrUGljdHVyZS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5jcHAKaW5kZXggMmJkOTc1Mi4uMWQ5ZWU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTMx
LDYgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIuaCIKIAorI2luY2x1ZGUgIkV4dGVuc2lvbnMzRENocm9taXVtLmgiCiAjaW5jbHVk
ZSAiTGF5ZXJQYWludGVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJTa0NhbnZhcy5oIgogI2luY2x1
ZGUgInNraWEvZXh0L3BsYXRmb3JtX2NhbnZhcy5oIgpAQCAtMzksMjggKzQwLDQ3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZTo6VGV4dHVyZShCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyKiB0ZXh0dXJlVXBkYXRlciwgUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkK
ICAgICA6IENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUodGV4dHVyZSkKKyAgICAs
IG1fbWFwcGVkQnVmZmVyKDApCiAgICAgLCBtX3RleHR1cmVVcGRhdGVyKHRleHR1cmVVcGRhdGVy
KQogewogfQogCi12b2lkIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6
OlRleHR1cmU6OnByZXBhcmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRv
ciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0
ICovKQordm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0
dXJlOjpwcmVwYXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9j
YXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0
JiBkZXN0UmVjdCkKIHsKLSAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IHNvdXJjZVJlY3Qud2lkdGgo
KSAqIHNvdXJjZVJlY3QuaGVpZ2h0KCkgKiA0OwotICAgIG1fcGl4ZWxEYXRhID0gYWRvcHRBcnJh
eVB0cihuZXcgdWludDhfdFtidWZmZXJTaXplXSk7CisgICAgQVNTRVJUKCFtX21hcHBlZEJ1ZmZl
cik7CisgICAgQVNTRVJUKCFtX3BpeGVsRGF0YS5nZXQoKSk7CisKKyAgICBpZiAodGV4dHVyZVVw
ZGF0ZXIoKS0+dXNlTWFwVGV4U3ViSW1hZ2UoKSkgeworICAgICAgICBFeHRlbnNpb25zM0RDaHJv
bWl1bSogZXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4oY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpKTsKKyAgICAgICAgbV9tYXBwZWRCdWZmZXIgPSBzdGF0aWNf
Y2FzdDx1aW50OF90Kj4oZXh0ZW5zaW9ucy0+bWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNKEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCBkZXN0UmVjdC54KCksIGRlc3RSZWN0LnkoKSwg
ZGVzdFJlY3Qud2lkdGgoKSwgZGVzdFJlY3QuaGVpZ2h0KCksIHRleHR1cmUoKS0+Zm9ybWF0KCks
IEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6
V1JJVEVfT05MWSkpOworICAgIH0KKworICAgIGlmICghbV9tYXBwZWRCdWZmZXIpIHsKKyAgICAg
ICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBzb3VyY2VSZWN0LndpZHRoKCkgKiBzb3VyY2VSZWN0Lmhl
aWdodCgpICogNDsKKyAgICAgICAgbV9waXhlbERhdGEgPSBhZG9wdEFycmF5UHRyKG5ldyB1aW50
OF90W2J1ZmZlclNpemVdKTsKKyAgICB9CiB9CiAKIHZvaWQgQml0bWFwU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6cGFpbnRDb250ZW50c1JlY3QoY29uc3QgSW50
UmVjdCYgc291cmNlUmVjdCkKIHsKLSAgICBBU1NFUlQobV9waXhlbERhdGEuZ2V0KCkpOwotICAg
IE93blB0cjxTa0NhbnZhcz4gY2FudmFzID0gYWRvcHRQdHIobmV3IHNraWE6OlBsYXRmb3JtQ2Fu
dmFzKHNvdXJjZVJlY3Qud2lkdGgoKSwgc291cmNlUmVjdC5oZWlnaHQoKSwgZmFsc2UsIG1fcGl4
ZWxEYXRhLmdldCgpKSk7CisgICAgdWludDhfdCogcGl4ZWxzID0gbV9tYXBwZWRCdWZmZXIgPyBt
X21hcHBlZEJ1ZmZlciA6IG1fcGl4ZWxEYXRhLmdldCgpOworICAgIEFTU0VSVChwaXhlbHMpOwor
CisgICAgT3duUHRyPFNrQ2FudmFzPiBjYW52YXMgPSBhZG9wdFB0cihuZXcgc2tpYTo6UGxhdGZv
cm1DYW52YXMoc291cmNlUmVjdC53aWR0aCgpLCBzb3VyY2VSZWN0LmhlaWdodCgpLCBmYWxzZSwg
cGl4ZWxzKSk7CiAgICAgdGV4dHVyZVVwZGF0ZXIoKS0+cGFpbnRDb250ZW50c1JlY3QoY2FudmFz
LmdldCgpLCBzb3VyY2VSZWN0KTsKIH0KIAogdm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIHNvdXJj
ZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQogewogICAgIHRleHR1cmUoKS0+YmluZFRl
eHR1cmUoY29udGV4dCwgYWxsb2NhdG9yKTsKLSAgICB0ZXh0dXJlVXBkYXRlcigpLT51cGRhdGVU
ZXh0dXJlUmVjdChjb250ZXh0LCB0ZXh0dXJlKCktPmZvcm1hdCgpLCBkZXN0UmVjdCwgbV9waXhl
bERhdGEuZ2V0KCkpOwotICAgIG1fcGl4ZWxEYXRhLmNsZWFyKCk7CisgICAgaWYgKG1fbWFwcGVk
QnVmZmVyKSB7CisgICAgICAgIEV4dGVuc2lvbnMzRENocm9taXVtKiBleHRlbnNpb25zID0gc3Rh
dGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkp
OyAgICAgICAgCisgICAgICAgIGV4dGVuc2lvbnMtPnVubWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVN
KG1fbWFwcGVkQnVmZmVyKTsKKyAgICAgICAgbV9tYXBwZWRCdWZmZXIgPSBOVUxMOworICAgIH0g
ZWxzZSB7CisgICAgICAgIHRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRleHR1cmVSZWN0KGNvbnRl
eHQsIHRleHR1cmUoKS0+Zm9ybWF0KCksIGRlc3RSZWN0LCBtX3BpeGVsRGF0YS5nZXQoKSk7Cisg
ICAgICAgIG1fcGl4ZWxEYXRhLmNsZWFyKCk7CisgICAgfQogfQogCiBQYXNzUmVmUHRyPEJpdG1h
cFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI+IEJpdG1hcFNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9t
aXVtPiBwYWludGVyLCBib29sIHVzZU1hcFRleFN1YkltYWdlKQpAQCAtNzAsNiArOTAsNyBAQCBQ
YXNzUmVmUHRyPEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI+IEJpdG1h
cFNrUGljdHVyZUNhbnZhc0xheWVyVAogCiBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyOjpCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKFBhc3NP
d25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+IHBhaW50ZXIsIGJvb2wgdXNlTWFwVGV4U3ViSW1h
Z2UpCiAgICAgOiBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKHBhaW50ZXIpCisg
ICAgLCBtX3VzZU1hcFRleFN1YkltYWdlKHVzZU1hcFRleFN1YkltYWdlKQogICAgICwgbV90ZXhT
dWJJbWFnZSh1c2VNYXBUZXhTdWJJbWFnZSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCA5ZmIz
N2JkLi4wNmExOTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC00OSw2ICs0OSw3IEBAIHB1YmxpYzoK
ICAgICBwcml2YXRlOgogICAgICAgICBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyKiB0ZXh0dXJlVXBkYXRlcigpIHsgcmV0dXJuIG1fdGV4dHVyZVVwZGF0ZXI7IH0KIAor
ICAgICAgICB1aW50OF90KiBtX21hcHBlZEJ1ZmZlcjsKICAgICAgICAgT3duQXJyYXlQdHI8dWlu
dDhfdD4gbV9waXhlbERhdGE7CiAgICAgICAgIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIqIG1fdGV4dHVyZVVwZGF0ZXI7CiAgICAgfTsKQEAgLTYyLDEwICs2MywxMiBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYg
Y29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzKTsK
ICAgICB2b2lkIHBhaW50Q29udGVudHNSZWN0KFNrQ2FudmFzKiwgY29uc3QgSW50UmVjdCYgc291
cmNlUmVjdCk7CiAgICAgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCos
IEdDM0RlbnVtIGZvcm1hdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsIGNvbnN0IHVpbnQ4X3Qq
IHBpeGVscyk7CisgICAgYm9vbCB1c2VNYXBUZXhTdWJJbWFnZSgpIHsgcmV0dXJuIG1fdXNlTWFw
VGV4U3ViSW1hZ2U7IH0KIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBCaXRtYXBTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+
LCBib29sIHVzZU1hcFRleFN1YkltYWdlKTsKIAorICAgIGJvb2wgbV91c2VNYXBUZXhTdWJJbWFn
ZTsKICAgICBMYXllclRleHR1cmVTdWJJbWFnZSBtX3RleFN1YkltYWdlOwogfTsKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115896</attachid>
            <date>2011-11-18 15:53:16 -0800</date>
            <delta_ts>2011-11-18 17:04:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Chromium-Add-support-for-painting-directly-to-shared.patch</filename>
            <type>text/plain</type>
            <size>5968</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">RnJvbSAyODU2YzczYjI0ZDcwM2VkYzA2OTJmNDQ3YmQwNGFhYzA1MTY5NDcwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZpZCBSZXZlbWFuIDxyZXZlbWFuQGNocm9taXVtLm9yZz4K
RGF0ZTogTW9uLCAxNCBOb3YgMjAxMSAyMTozMzo0NSAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIFtD
aHJvbWl1bV0gQWRkIHN1cHBvcnQgZm9yIHBhaW50aW5nIGRpcmVjdGx5IHRvIHNoYXJlZCBtZW1v
cnkuCiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIxOTEKClNvdXJj
ZS9XZWJDb3JlOgoKTWFwIHNoYXJlZCBtZW1vcnkgYnVmZmVycyBwcmlvciB0byBwYWludGluZyB0
aWxlLXNpemVkIGNodW5rcyB1c2luZwpTa1BpY3R1cmUuIEFsbG93cyB1cyB0byBwYWludCBkaXJl
Y3RseSB0byBzaGFyZWQgbWVtb3J5IGluc3RlYWQKb2YgdGVtcG9yYXJ5IGJ1ZmZlcnMuCgpObyBu
ZXcgdGVzdHMuIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCi0tLQogLi4uL0JpdG1hcFNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwICAgfCAgIDM1ICsrKysrKysrKysrKysr
KystLS0tCiAuLi4vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oICAg
ICB8ICAgIDMgKysKIDIgZmlsZXMgY2hhbmdlZCwgMzEgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlv
bnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IGFmN2EwOWQuLjkxZjQ2ZGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAKICNpbmNsdWRlICJCaXRtYXBTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgiCiAKKyNpbmNsdWRlICJFeHRlbnNpb25zM0RD
aHJvbWl1bS5oIgogI2luY2x1ZGUgIkxheWVyUGFpbnRlckNocm9taXVtLmgiCiAjaW5jbHVkZSAi
U2tDYW52YXMuaCIKICNpbmNsdWRlICJza2lhL2V4dC9wbGF0Zm9ybV9jYW52YXMuaCIKQEAgLTM5
LDIwICs0MCwzMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEJpdG1hcFNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OlRleHR1cmUoQml0bWFwU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIsIFBhc3NPd25QdHI8TWFuYWdl
ZFRleHR1cmU+IHRleHR1cmUpCiAgICAgOiBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0
dXJlKHRleHR1cmUpCisgICAgLCBtX21hcHBlZEJ1ZmZlcigwKQogICAgICwgbV90ZXh0dXJlVXBk
YXRlcih0ZXh0dXJlVXBkYXRlcikKIHsKIH0KIAotdm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpwcmVwYXJlUmVjdChHcmFwaGljc0NvbnRleHQz
RCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJ
bnRSZWN0JiAvKiBkZXN0UmVjdCAqLykKK3ZvaWQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6cHJlcGFyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCYgc291cmNl
UmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCiB7Ci0gICAgc2l6ZV90IGJ1ZmZlclNpemUg
PSBzb3VyY2VSZWN0LndpZHRoKCkgKiBzb3VyY2VSZWN0LmhlaWdodCgpICogNDsKLSAgICBtX3Bp
eGVsRGF0YSA9IGFkb3B0QXJyYXlQdHIobmV3IHVpbnQ4X3RbYnVmZmVyU2l6ZV0pOworICAgIEFT
U0VSVCghbV9tYXBwZWRCdWZmZXIpOworICAgIEFTU0VSVCghbV9waXhlbERhdGEuZ2V0KCkpOwor
CisgICAgaWYgKHRleHR1cmVVcGRhdGVyKCktPnVzZU1hcFRleFN1YkltYWdlKCkpIHsKKyAgICAg
ICAgRXh0ZW5zaW9uczNEQ2hyb21pdW0qIGV4dGVuc2lvbnMgPSBzdGF0aWNfY2FzdDxFeHRlbnNp
b25zM0RDaHJvbWl1bSo+KGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKSk7CisgICAgICAgIG1fbWFw
cGVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGV4dGVuc2lvbnMtPm1hcFRleFN1Yklt
YWdlMkRDSFJPTUlVTShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgZGVzdFJlY3Qu
eCgpLCBkZXN0UmVjdC55KCksIGRlc3RSZWN0LndpZHRoKCksIGRlc3RSZWN0LmhlaWdodCgpLCB0
ZXh0dXJlKCktPmZvcm1hdCgpLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgRXh0
ZW5zaW9uczNEQ2hyb21pdW06OldSSVRFX09OTFkpKTsKKyAgICB9CisKKyAgICBpZiAoIW1fbWFw
cGVkQnVmZmVyKSB7CisgICAgICAgIHNpemVfdCBidWZmZXJTaXplID0gc291cmNlUmVjdC53aWR0
aCgpICogc291cmNlUmVjdC5oZWlnaHQoKSAqIDQ7CisgICAgICAgIG1fcGl4ZWxEYXRhID0gYWRv
cHRBcnJheVB0cihuZXcgdWludDhfdFtidWZmZXJTaXplXSk7CisgICAgfQogfQogCiB2b2lkIEJp
dG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnBhaW50Q29u
dGVudHNSZWN0KGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QpCiB7Ci0gICAgQVNTRVJUKG1fcGl4
ZWxEYXRhLmdldCgpKTsKLSAgICBPd25QdHI8U2tDYW52YXM+IGNhbnZhcyA9IGFkb3B0UHRyKG5l
dyBza2lhOjpQbGF0Zm9ybUNhbnZhcyhzb3VyY2VSZWN0LndpZHRoKCksIHNvdXJjZVJlY3QuaGVp
Z2h0KCksIGZhbHNlLCBtX3BpeGVsRGF0YS5nZXQoKSkpOworICAgIHVpbnQ4X3QqIHBpeGVscyA9
IG1fbWFwcGVkQnVmZmVyID8gbV9tYXBwZWRCdWZmZXIgOiBtX3BpeGVsRGF0YS5nZXQoKTsKKyAg
ICBBU1NFUlQocGl4ZWxzKTsKKworICAgIE93blB0cjxTa0NhbnZhcz4gY2FudmFzID0gYWRvcHRQ
dHIobmV3IHNraWE6OlBsYXRmb3JtQ2FudmFzKHNvdXJjZVJlY3Qud2lkdGgoKSwgc291cmNlUmVj
dC5oZWlnaHQoKSwgZmFsc2UsIHBpeGVscykpOwogICAgIHRleHR1cmVVcGRhdGVyKCktPnBhaW50
Q29udGVudHNSZWN0KGNhbnZhcy5nZXQoKSwgc291cmNlUmVjdCk7CiB9CiAKQEAgLTYwLDggKzc0
LDE0IEBAIHZvaWQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4
dHVyZTo6dXBkYXRlUmVjdChHcmFwaGljc0NvbnRlCiB7CiAgICAgQVNTRVJUKHRleHR1cmUoKS0+
dGV4dHVyZUlkKCkpOwogICAgIGNvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFXzJELCB0ZXh0dXJlKCktPnRleHR1cmVJZCgpKTsKLSAgICB0ZXh0dXJlVXBkYXRl
cigpLT51cGRhdGVUZXh0dXJlUmVjdChjb250ZXh0LCB0ZXh0dXJlKCktPmZvcm1hdCgpLCBkZXN0
UmVjdCwgbV9waXhlbERhdGEuZ2V0KCkpOwotICAgIG1fcGl4ZWxEYXRhLmNsZWFyKCk7CisgICAg
aWYgKG1fbWFwcGVkQnVmZmVyKSB7CisgICAgICAgIEV4dGVuc2lvbnMzRENocm9taXVtKiBleHRl
bnNpb25zID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihjb250ZXh0LT5nZXRF
eHRlbnNpb25zKCkpOyAgICAgICAgCisgICAgICAgIGV4dGVuc2lvbnMtPnVubWFwVGV4U3ViSW1h
Z2UyRENIUk9NSVVNKG1fbWFwcGVkQnVmZmVyKTsKKyAgICAgICAgbV9tYXBwZWRCdWZmZXIgPSBO
VUxMOworICAgIH0gZWxzZSB7CisgICAgICAgIHRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRleHR1
cmVSZWN0KGNvbnRleHQsIHRleHR1cmUoKS0+Zm9ybWF0KCksIGRlc3RSZWN0LCBtX3BpeGVsRGF0
YS5nZXQoKSk7CisgICAgICAgIG1fcGl4ZWxEYXRhLmNsZWFyKCk7CisgICAgfQogfQogCiBQYXNz
UmVmUHRyPEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI+IEJpdG1hcFNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShQYXNzT3duUHRyPExheWVy
UGFpbnRlckNocm9taXVtPiBwYWludGVyLCBib29sIHVzZU1hcFRleFN1YkltYWdlKQpAQCAtNzEs
NiArOTEsNyBAQCBQYXNzUmVmUHRyPEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXI+IEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVAogCiBCaXRtYXBTa1BpY3R1cmVDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyOjpCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+IHBhaW50ZXIsIGJvb2wgdXNl
TWFwVGV4U3ViSW1hZ2UpCiAgICAgOiBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
KHBhaW50ZXIpCisgICAgLCBtX3VzZU1hcFRleFN1YkltYWdlKHVzZU1hcFRleFN1YkltYWdlKQog
ICAgICwgbV90ZXhTdWJJbWFnZSh1c2VNYXBUZXhTdWJJbWFnZSkKIHsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIu
aAppbmRleCBmZTZkMzQ4Li45NWEzNzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC00OSw2ICs0OSw3
IEBAIHB1YmxpYzoKICAgICBwcml2YXRlOgogICAgICAgICBCaXRtYXBTa1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlcigpIHsgcmV0dXJuIG1fdGV4dHVyZVVw
ZGF0ZXI7IH0KIAorICAgICAgICB1aW50OF90KiBtX21hcHBlZEJ1ZmZlcjsKICAgICAgICAgT3du
QXJyYXlQdHI8dWludDhfdD4gbV9waXhlbERhdGE7CiAgICAgICAgIEJpdG1hcFNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqIG1fdGV4dHVyZVVwZGF0ZXI7CiAgICAgfTsKQEAgLTYy
LDEwICs2MywxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29u
c3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9y
ZGVyVGV4ZWxzKTsKICAgICB2b2lkIHBhaW50Q29udGVudHNSZWN0KFNrQ2FudmFzKiwgY29uc3Qg
SW50UmVjdCYgc291cmNlUmVjdCk7CiAgICAgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGlj
c0NvbnRleHQzRCosIEdDM0RlbnVtIGZvcm1hdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IHVpbnQ4X3QqIHBpeGVscyk7CisgICAgYm9vbCB1c2VNYXBUZXhTdWJJbWFnZSgpIHsgcmV0
dXJuIG1fdXNlTWFwVGV4U3ViSW1hZ2U7IH0KIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBCaXRt
YXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5ZXJQYWlu
dGVyQ2hyb21pdW0+LCBib29sIHVzZU1hcFRleFN1YkltYWdlKTsKIAorICAgIGJvb2wgbV91c2VN
YXBUZXhTdWJJbWFnZTsKICAgICBMYXllclRleHR1cmVTdWJJbWFnZSBtX3RleFN1YkltYWdlOwog
fTsKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLS0gCjEuNy4zLjEKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115911</attachid>
            <date>2011-11-18 17:04:20 -0800</date>
            <delta_ts>2011-11-20 16:37:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>shared-memory-painting.diff</filename>
            <type>text/plain</type>
            <size>5948</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Jp
dG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggYWY3YTA5ZC4uOWIxNGY1YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkJpdG1hcFNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuaCIKIAorI2luY2x1ZGUgIkV4dGVuc2lvbnMzRENocm9taXVt
LmgiCiAjaW5jbHVkZSAiTGF5ZXJQYWludGVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJTa0NhbnZh
cy5oIgogI2luY2x1ZGUgInNraWEvZXh0L3BsYXRmb3JtX2NhbnZhcy5oIgpAQCAtMzksMjAgKzQw
LDQyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6VGV4dHVyZShCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlciwgUGFzc093blB0cjxNYW5hZ2VkVGV4dHVy
ZT4gdGV4dHVyZSkKICAgICA6IENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUodGV4
dHVyZSkKKyAgICAsIG1fbWFwcGVkQnVmZmVyKDApCiAgICAgLCBtX3RleHR1cmVVcGRhdGVyKHRl
eHR1cmVVcGRhdGVyKQogewogfQogCi12b2lkIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnByZXBhcmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4
dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3Qm
IC8qIGRlc3RSZWN0ICovKQorYm9vbCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyOjpUZXh0dXJlOjpuZWVkUHJlcGFyZVJlY3QoKQogewotICAgIHNpemVfdCBidWZmZXJT
aXplID0gc291cmNlUmVjdC53aWR0aCgpICogc291cmNlUmVjdC5oZWlnaHQoKSAqIDQ7Ci0gICAg
bV9waXhlbERhdGEgPSBhZG9wdEFycmF5UHRyKG5ldyB1aW50OF90W2J1ZmZlclNpemVdKTsKKyAg
ICBpZiAodGV4dHVyZVVwZGF0ZXIoKS0+dXNlTWFwVGV4U3ViSW1hZ2UoKSkKKyAgICAgICAgcmV0
dXJuIHRydWU7CisKKyAgICByZXR1cm4gIXRleHR1cmUoKS0+dGV4dHVyZUlkKCk7Cit9CisKK3Zv
aWQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6cHJl
cGFyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFs
bG9jYXRvciwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJl
Y3QpCit7CisgICAgQVNTRVJUKCFtX21hcHBlZEJ1ZmZlcik7CisgICAgQVNTRVJUKCFtX3BpeGVs
RGF0YS5nZXQoKSk7CisKKyAgICB0ZXh0dXJlKCktPmJpbmRUZXh0dXJlKGNvbnRleHQsIGFsbG9j
YXRvcik7CisKKyAgICBpZiAodGV4dHVyZVVwZGF0ZXIoKS0+dXNlTWFwVGV4U3ViSW1hZ2UoKSkg
eworICAgICAgICBFeHRlbnNpb25zM0RDaHJvbWl1bSogZXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0
PEV4dGVuc2lvbnMzRENocm9taXVtKj4oY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpKTsKKyAgICAg
ICAgbV9tYXBwZWRCdWZmZXIgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oZXh0ZW5zaW9ucy0+bWFw
VGV4U3ViSW1hZ2UyRENIUk9NSVVNKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCBk
ZXN0UmVjdC54KCksIGRlc3RSZWN0LnkoKSwgZGVzdFJlY3Qud2lkdGgoKSwgZGVzdFJlY3QuaGVp
Z2h0KCksIHRleHR1cmUoKS0+Zm9ybWF0KCksIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9C
WVRFLCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6V1JJVEVfT05MWSkpOworICAgIH0KIH0KIAogdm9p
ZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpwYWlu
dENvbnRlbnRzUmVjdChjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KQogewotICAgIEFTU0VSVCht
X3BpeGVsRGF0YS5nZXQoKSk7Ci0gICAgT3duUHRyPFNrQ2FudmFzPiBjYW52YXMgPSBhZG9wdFB0
cihuZXcgc2tpYTo6UGxhdGZvcm1DYW52YXMoc291cmNlUmVjdC53aWR0aCgpLCBzb3VyY2VSZWN0
LmhlaWdodCgpLCBmYWxzZSwgbV9waXhlbERhdGEuZ2V0KCkpKTsKKyAgICB1aW50OF90KiBwaXhl
bHMgPSBtX21hcHBlZEJ1ZmZlcjsKKyAgICBpZiAoIXBpeGVscykgeworICAgICAgICBzaXplX3Qg
YnVmZmVyU2l6ZSA9IHNvdXJjZVJlY3Qud2lkdGgoKSAqIHNvdXJjZVJlY3QuaGVpZ2h0KCkgKiA0
OworICAgICAgICBtX3BpeGVsRGF0YSA9IGFkb3B0QXJyYXlQdHIobmV3IHVpbnQ4X3RbYnVmZmVy
U2l6ZV0pOworICAgICAgICBwaXhlbHMgPSBtX3BpeGVsRGF0YS5nZXQoKTsKKyAgICB9CisKKyAg
ICBPd25QdHI8U2tDYW52YXM+IGNhbnZhcyA9IGFkb3B0UHRyKG5ldyBza2lhOjpQbGF0Zm9ybUNh
bnZhcyhzb3VyY2VSZWN0LndpZHRoKCksIHNvdXJjZVJlY3QuaGVpZ2h0KCksIGZhbHNlLCBwaXhl
bHMpKTsKICAgICB0ZXh0dXJlVXBkYXRlcigpLT5wYWludENvbnRlbnRzUmVjdChjYW52YXMuZ2V0
KCksIHNvdXJjZVJlY3QpOwogfQogCkBAIC02MCw4ICs4MywxNCBAQCB2b2lkIEJpdG1hcFNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhp
Y3NDb250ZQogewogICAgIEFTU0VSVCh0ZXh0dXJlKCktPnRleHR1cmVJZCgpKTsKICAgICBjb250
ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgdGV4dHVyZSgp
LT50ZXh0dXJlSWQoKSk7Ci0gICAgdGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlVGV4dHVyZVJlY3Qo
Y29udGV4dCwgdGV4dHVyZSgpLT5mb3JtYXQoKSwgZGVzdFJlY3QsIG1fcGl4ZWxEYXRhLmdldCgp
KTsKLSAgICBtX3BpeGVsRGF0YS5jbGVhcigpOworICAgIGlmIChtX21hcHBlZEJ1ZmZlcikgewor
ICAgICAgICBFeHRlbnNpb25zM0RDaHJvbWl1bSogZXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PEV4
dGVuc2lvbnMzRENocm9taXVtKj4oY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpKTsgICAgICAgIAor
ICAgICAgICBleHRlbnNpb25zLT51bm1hcFRleFN1YkltYWdlMkRDSFJPTUlVTShtX21hcHBlZEJ1
ZmZlcik7CisgICAgICAgIG1fbWFwcGVkQnVmZmVyID0gTlVMTDsKKyAgICB9IGVsc2UgeworICAg
ICAgICB0ZXh0dXJlVXBkYXRlcigpLT51cGRhdGVUZXh0dXJlUmVjdChjb250ZXh0LCB0ZXh0dXJl
KCktPmZvcm1hdCgpLCBkZXN0UmVjdCwgbV9waXhlbERhdGEuZ2V0KCkpOworICAgICAgICBtX3Bp
eGVsRGF0YS5jbGVhcigpOworICAgIH0KIH0KIAogUGFzc1JlZlB0cjxCaXRtYXBTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyPiBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyOjpjcmVhdGUoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gcGFpbnRl
ciwgYm9vbCB1c2VNYXBUZXhTdWJJbWFnZSkKQEAgLTcxLDYgKzEwMCw3IEBAIFBhc3NSZWZQdHI8
Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcj4gQml0bWFwU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUCiAKIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6
OkJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoUGFzc093blB0cjxMYXll
clBhaW50ZXJDaHJvbWl1bT4gcGFpbnRlciwgYm9vbCB1c2VNYXBUZXhTdWJJbWFnZSkKICAgICA6
IFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIocGFpbnRlcikKKyAgICAsIG1fdXNl
TWFwVGV4U3ViSW1hZ2UodXNlTWFwVGV4U3ViSW1hZ2UpCiAgICAgLCBtX3RleFN1YkltYWdlKHVz
ZU1hcFRleFN1YkltYWdlKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFw
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4IGZlNmQzNDguLjUxYzZm
MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTQyLDYgKzQyLDcgQEAgcHVibGljOgogICAgIHB1Ymxp
YzoKICAgICAgICAgVGV4dHVyZShCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyKiwgUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4pOwogCisgICAgICAgIHZpcnR1YWwgYm9v
bCBuZWVkUHJlcGFyZVJlY3QoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVSZWN0KEdy
YXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmIHNvdXJj
ZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKICAgICAgICAgdmlydHVhbCB2b2lkIHBh
aW50Q29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QpOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IEludFJlY3QmIHNv
dXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKQEAgLTQ5LDYgKzUwLDcgQEAgcHVi
bGljOgogICAgIHByaXZhdGU6CiAgICAgICAgIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyKCkgeyByZXR1cm4gbV90ZXh0dXJlVXBkYXRlcjsg
fQogCisgICAgICAgIHVpbnQ4X3QqIG1fbWFwcGVkQnVmZmVyOwogICAgICAgICBPd25BcnJheVB0
cjx1aW50OF90PiBtX3BpeGVsRGF0YTsKICAgICAgICAgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlciogbV90ZXh0dXJlVXBkYXRlcjsKICAgICB9OwpAQCAtNjIsMTAgKzY0
LDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBJbnRS
ZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhl
bHMpOwogICAgIHZvaWQgcGFpbnRDb250ZW50c1JlY3QoU2tDYW52YXMqLCBjb25zdCBJbnRSZWN0
JiBzb3VyY2VSZWN0KTsKICAgICB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4
dDNEKiwgR0MzRGVudW0gZm9ybWF0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwgY29uc3QgdWlu
dDhfdCogcGl4ZWxzKTsKKyAgICBib29sIHVzZU1hcFRleFN1YkltYWdlKCkgeyByZXR1cm4gbV91
c2VNYXBUZXhTdWJJbWFnZTsgfQogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEJpdG1hcFNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJv
bWl1bT4sIGJvb2wgdXNlTWFwVGV4U3ViSW1hZ2UpOwogCisgICAgYm9vbCBtX3VzZU1hcFRleFN1
YkltYWdlOwogICAgIExheWVyVGV4dHVyZVN1YkltYWdlIG1fdGV4U3ViSW1hZ2U7CiB9OwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116008</attachid>
            <date>2011-11-20 16:37:27 -0800</date>
            <delta_ts>2011-12-02 10:55:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>shared-memory-painting.diff</filename>
            <type>text/plain</type>
            <size>5985</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Jp
dG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggYWNmZWRhOC4uZTM0OTNjNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkJpdG1hcFNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuaCIKIAorI2luY2x1ZGUgIkV4dGVuc2lvbnMzRENocm9taXVt
LmgiCiAjaW5jbHVkZSAiTGF5ZXJQYWludGVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJTa0NhbnZh
cy5oIgogI2luY2x1ZGUgInNraWEvZXh0L3BsYXRmb3JtX2NhbnZhcy5oIgpAQCAtNDAsMTQgKzQx
LDQwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXI6OlRleHR1cmU6OlRleHR1cmUoQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIsIFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+
IHRleHR1cmUpCiAgICAgOiBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKHRleHR1
cmUpCiAgICAgLCBtX3RleHR1cmVVcGRhdGVyKHRleHR1cmVVcGRhdGVyKQorICAgICwgbV9tYXBw
ZWRCdWZmZXIoMCkKIHsKIH0KIAorYm9vbCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyOjpUZXh0dXJlOjpuZWVkUHJlcGFyZVJlY3QoKQoreworICAgIGlmICh0ZXh0dXJl
VXBkYXRlcigpLT51c2VNYXBUZXhTdWJJbWFnZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwor
ICAgIHJldHVybiAhdGV4dHVyZSgpLT50ZXh0dXJlSWQoKTsKK30KKwordm9pZCBCaXRtYXBTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpwcmVwYXJlUmVjdChHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3sKKyAgICBB
U1NFUlQoIW1fbWFwcGVkQnVmZmVyKTsKKworICAgIGlmICh0ZXh0dXJlVXBkYXRlcigpLT51c2VN
YXBUZXhTdWJJbWFnZSgpKSB7CisgICAgICAgIEV4dGVuc2lvbnMzRENocm9taXVtKiBleHRlbnNp
b25zID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihjb250ZXh0LT5nZXRFeHRl
bnNpb25zKCkpOworICAgICAgICBtX21hcHBlZEJ1ZmZlciA9IHN0YXRpY19jYXN0PHVpbnQ4X3Qq
PihleHRlbnNpb25zLT5tYXBUZXhTdWJJbWFnZTJEQ0hST01JVU0oR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQsIDAsIGRlc3RSZWN0LngoKSwgZGVzdFJlY3QueSgpLCBkZXN0UmVjdC53aWR0
aCgpLCBkZXN0UmVjdC5oZWlnaHQoKSwgdGV4dHVyZSgpLT5mb3JtYXQoKSwgR3JhcGhpY3NDb250
ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIEV4dGVuc2lvbnMzRENocm9taXVtOjpXUklURV9PTkxZKSk7
CisgICAgfQorCisgICAgdGV4dHVyZSgpLT5hbGxvY2F0ZVRleHR1cmUoY29udGV4dCwgYWxsb2Nh
dG9yKTsKK30KKwogdm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlOjpwYWludENvbnRlbnRzUmVjdChjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KQog
ewotICAgIHNpemVfdCBidWZmZXJTaXplID0gVGV4dHVyZU1hbmFnZXI6Om1lbW9yeVVzZUJ5dGVz
KHNvdXJjZVJlY3Quc2l6ZSgpLCB0ZXh0dXJlKCktPmZvcm1hdCgpKTsKLSAgICBtX3BpeGVsRGF0
YSA9IGFkb3B0QXJyYXlQdHIobmV3IHVpbnQ4X3RbYnVmZmVyU2l6ZV0pOwotICAgIE93blB0cjxT
a0NhbnZhcz4gY2FudmFzID0gYWRvcHRQdHIobmV3IHNraWE6OlBsYXRmb3JtQ2FudmFzKHNvdXJj
ZVJlY3Qud2lkdGgoKSwgc291cmNlUmVjdC5oZWlnaHQoKSwgZmFsc2UsIG1fcGl4ZWxEYXRhLmdl
dCgpKSk7CisgICAgdWludDhfdCogYnVmZmVyID0gbV9tYXBwZWRCdWZmZXI7CisgICAgaWYgKCFi
dWZmZXIpIHsKKyAgICAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBUZXh0dXJlTWFuYWdlcjo6bWVt
b3J5VXNlQnl0ZXMoc291cmNlUmVjdC5zaXplKCksIHRleHR1cmUoKS0+Zm9ybWF0KCkpOworICAg
ICAgICBtX2J1ZmZlciA9IGFkb3B0QXJyYXlQdHIobmV3IHVpbnQ4X3RbYnVmZmVyU2l6ZV0pOwor
ICAgICAgICBidWZmZXIgPSBtX2J1ZmZlci5nZXQoKTsKKyAgICB9CisKKyAgICBPd25QdHI8U2tD
YW52YXM+IGNhbnZhcyA9IGFkb3B0UHRyKG5ldyBza2lhOjpQbGF0Zm9ybUNhbnZhcyhzb3VyY2VS
ZWN0LndpZHRoKCksIHNvdXJjZVJlY3QuaGVpZ2h0KCksIGZhbHNlLCBidWZmZXIpKTsKICAgICB0
ZXh0dXJlVXBkYXRlcigpLT5wYWludENvbnRlbnRzUmVjdChjYW52YXMuZ2V0KCksIHNvdXJjZVJl
Y3QpOwogfQogCkBAIC01NSw5ICs4MiwxNSBAQCB2b2lkIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZQogewog
ICAgIEFTU0VSVCh0ZXh0dXJlKCktPnRleHR1cmVJZCgpKTsKICAgICBjb250ZXh0LT5iaW5kVGV4
dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgdGV4dHVyZSgpLT50ZXh0dXJlSWQo
KSk7Ci0gICAgQVNTRVJUKG1fcGl4ZWxEYXRhLmdldCgpKTsKLSAgICB0ZXh0dXJlVXBkYXRlcigp
LT51cGRhdGVUZXh0dXJlUmVjdChjb250ZXh0LCB0ZXh0dXJlKCktPmZvcm1hdCgpLCBkZXN0UmVj
dCwgbV9waXhlbERhdGEuZ2V0KCkpOwotICAgIG1fcGl4ZWxEYXRhLmNsZWFyKCk7CisgICAgaWYg
KG1fbWFwcGVkQnVmZmVyKSB7CisgICAgICAgIEV4dGVuc2lvbnMzRENocm9taXVtKiBleHRlbnNp
b25zID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihjb250ZXh0LT5nZXRFeHRl
bnNpb25zKCkpOworICAgICAgICBleHRlbnNpb25zLT51bm1hcFRleFN1YkltYWdlMkRDSFJPTUlV
TShtX21hcHBlZEJ1ZmZlcik7CisgICAgICAgIG1fbWFwcGVkQnVmZmVyID0gMDsKKyAgICB9IGVs
c2UgeworICAgICAgICBBU1NFUlQobV9idWZmZXIuZ2V0KCkpOworICAgICAgICB0ZXh0dXJlVXBk
YXRlcigpLT51cGRhdGVUZXh0dXJlUmVjdChjb250ZXh0LCB0ZXh0dXJlKCktPmZvcm1hdCgpLCBk
ZXN0UmVjdCwgbV9idWZmZXIuZ2V0KCkpOworICAgICAgICBtX2J1ZmZlci5jbGVhcigpOworICAg
IH0KIH0KIAogUGFzc1JlZlB0cjxCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyPiBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUoUGFz
c093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gcGFpbnRlciwgYm9vbCB1c2VNYXBUZXhTdWJJ
bWFnZSkKQEAgLTY3LDYgKzEwMCw3IEBAIFBhc3NSZWZQdHI8Qml0bWFwU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlcj4gQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUCiAKIEJpdG1h
cFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OkJpdG1hcFNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gcGFp
bnRlciwgYm9vbCB1c2VNYXBUZXhTdWJJbWFnZSkKICAgICA6IFNrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXIocGFpbnRlcikKKyAgICAsIG1fdXNlTWFwVGV4U3ViSW1hZ2UodXNlTWFw
VGV4U3ViSW1hZ2UpCiAgICAgLCBtX3RleFN1YkltYWdlKHVzZU1hcFRleFN1YkltYWdlKQogewog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlci5oCmluZGV4IGQ0MDY5MTIuLjQ1MmMxZjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgK
QEAgLTQyLDE0ICs0MiwxNyBAQCBwdWJsaWM6CiAgICAgcHVibGljOgogICAgICAgICBUZXh0dXJl
KEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqLCBQYXNzT3duUHRyPE1h
bmFnZWRUZXh0dXJlPik7CiAKKyAgICAgICAgdmlydHVhbCBib29sIG5lZWRQcmVwYXJlUmVjdCgp
OworICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBU
ZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVj
dCYgZGVzdFJlY3QpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c1JlY3QoY29u
c3QgSW50UmVjdCYgc291cmNlUmVjdCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0
KEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50
UmVjdCYgZGVzdFJlY3QpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgQml0bWFwU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIoKSB7IHJldHVybiBtX3Rl
eHR1cmVVcGRhdGVyOyB9CiAKLSAgICAgICAgT3duQXJyYXlQdHI8dWludDhfdD4gbV9waXhlbERh
dGE7CiAgICAgICAgIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqIG1f
dGV4dHVyZVVwZGF0ZXI7CisgICAgICAgIHVpbnQ4X3QqIG1fbWFwcGVkQnVmZmVyOworICAgICAg
ICBPd25BcnJheVB0cjx1aW50OF90PiBtX2J1ZmZlcjsKICAgICB9OwogCiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcj4gY3JlYXRl
KFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+LCBib29sIHVzZU1hcFRleFN1YkltYWdl
KTsKQEAgLTYxLDEwICs2NCwxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBhaW50Q29u
dGVudHMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXpl
LCBpbnQgYm9yZGVyVGV4ZWxzLCBmbG9hdCBjb250ZW50c1NjYWxlKTsKICAgICB2b2lkIHBhaW50
Q29udGVudHNSZWN0KFNrQ2FudmFzKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCk7CiAgICAg
dm9pZCB1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIEdDM0RlbnVtIGZvcm1h
dCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsIGNvbnN0IHVpbnQ4X3QqIHBpeGVscyk7CisgICAg
Ym9vbCB1c2VNYXBUZXhTdWJJbWFnZSgpIHsgcmV0dXJuIG1fdXNlTWFwVGV4U3ViSW1hZ2U7IH0K
IAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+LCBib29sIHVzZU1hcFRl
eFN1YkltYWdlKTsKIAorICAgIGJvb2wgbV91c2VNYXBUZXhTdWJJbWFnZTsKICAgICBMYXllclRl
eHR1cmVTdWJJbWFnZSBtX3RleFN1YkltYWdlOwogfTsKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117654</attachid>
            <date>2011-12-02 10:55:38 -0800</date>
            <delta_ts>2011-12-11 16:33:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>shared-memory-painting.diff</filename>
            <type>text/plain</type>
            <size>5985</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Jp
dG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggZGYwMGU0YS4uZTI3YmE5OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkJpdG1hcFNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuaCIKIAorI2luY2x1ZGUgIkV4dGVuc2lvbnMzRENocm9taXVt
LmgiCiAjaW5jbHVkZSAiTGF5ZXJQYWludGVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJTa0NhbnZh
cy5oIgogI2luY2x1ZGUgInNraWEvZXh0L3BsYXRmb3JtX2NhbnZhcy5oIgpAQCAtNDAsMTQgKzQx
LDQwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXI6OlRleHR1cmU6OlRleHR1cmUoQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIsIFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+
IHRleHR1cmUpCiAgICAgOiBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKHRleHR1
cmUpCiAgICAgLCBtX3RleHR1cmVVcGRhdGVyKHRleHR1cmVVcGRhdGVyKQorICAgICwgbV9tYXBw
ZWRCdWZmZXIoMCkKIHsKIH0KIAorYm9vbCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyOjpUZXh0dXJlOjpuZWVkUHJlcGFyZVJlY3QoKQoreworICAgIGlmICh0ZXh0dXJl
VXBkYXRlcigpLT51c2VNYXBUZXhTdWJJbWFnZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwor
ICAgIHJldHVybiAhdGV4dHVyZSgpLT50ZXh0dXJlSWQoKTsKK30KKwordm9pZCBCaXRtYXBTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpwcmVwYXJlUmVjdChHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3sKKyAgICBB
U1NFUlQoIW1fbWFwcGVkQnVmZmVyKTsKKworICAgIGlmICh0ZXh0dXJlVXBkYXRlcigpLT51c2VN
YXBUZXhTdWJJbWFnZSgpKSB7CisgICAgICAgIEV4dGVuc2lvbnMzRENocm9taXVtKiBleHRlbnNp
b25zID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihjb250ZXh0LT5nZXRFeHRl
bnNpb25zKCkpOworICAgICAgICBtX21hcHBlZEJ1ZmZlciA9IHN0YXRpY19jYXN0PHVpbnQ4X3Qq
PihleHRlbnNpb25zLT5tYXBUZXhTdWJJbWFnZTJEQ0hST01JVU0oR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQsIDAsIGRlc3RSZWN0LngoKSwgZGVzdFJlY3QueSgpLCBkZXN0UmVjdC53aWR0
aCgpLCBkZXN0UmVjdC5oZWlnaHQoKSwgdGV4dHVyZSgpLT5mb3JtYXQoKSwgR3JhcGhpY3NDb250
ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIEV4dGVuc2lvbnMzRENocm9taXVtOjpXUklURV9PTkxZKSk7
CisgICAgfQorCisgICAgdGV4dHVyZSgpLT5hbGxvY2F0ZVRleHR1cmUoY29udGV4dCwgYWxsb2Nh
dG9yKTsKK30KKwogdm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlOjpwYWludENvbnRlbnRzUmVjdChjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KQog
ewotICAgIHNpemVfdCBidWZmZXJTaXplID0gVGV4dHVyZU1hbmFnZXI6Om1lbW9yeVVzZUJ5dGVz
KHNvdXJjZVJlY3Quc2l6ZSgpLCB0ZXh0dXJlKCktPmZvcm1hdCgpKTsKLSAgICBtX3BpeGVsRGF0
YSA9IGFkb3B0QXJyYXlQdHIobmV3IHVpbnQ4X3RbYnVmZmVyU2l6ZV0pOwotICAgIE93blB0cjxT
a0NhbnZhcz4gY2FudmFzID0gYWRvcHRQdHIobmV3IHNraWE6OlBsYXRmb3JtQ2FudmFzKHNvdXJj
ZVJlY3Qud2lkdGgoKSwgc291cmNlUmVjdC5oZWlnaHQoKSwgZmFsc2UsIG1fcGl4ZWxEYXRhLmdl
dCgpKSk7CisgICAgdWludDhfdCogYnVmZmVyID0gbV9tYXBwZWRCdWZmZXI7CisgICAgaWYgKCFi
dWZmZXIpIHsKKyAgICAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBUZXh0dXJlTWFuYWdlcjo6bWVt
b3J5VXNlQnl0ZXMoc291cmNlUmVjdC5zaXplKCksIHRleHR1cmUoKS0+Zm9ybWF0KCkpOworICAg
ICAgICBtX2J1ZmZlciA9IGFkb3B0QXJyYXlQdHIobmV3IHVpbnQ4X3RbYnVmZmVyU2l6ZV0pOwor
ICAgICAgICBidWZmZXIgPSBtX2J1ZmZlci5nZXQoKTsKKyAgICB9CisKKyAgICBPd25QdHI8U2tD
YW52YXM+IGNhbnZhcyA9IGFkb3B0UHRyKG5ldyBza2lhOjpQbGF0Zm9ybUNhbnZhcyhzb3VyY2VS
ZWN0LndpZHRoKCksIHNvdXJjZVJlY3QuaGVpZ2h0KCksIGZhbHNlLCBidWZmZXIpKTsKICAgICB0
ZXh0dXJlVXBkYXRlcigpLT5wYWludENvbnRlbnRzUmVjdChjYW52YXMuZ2V0KCksIHNvdXJjZVJl
Y3QpOwogfQogCkBAIC01NSw5ICs4MiwxNSBAQCB2b2lkIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZQogewog
ICAgIEFTU0VSVCh0ZXh0dXJlKCktPnRleHR1cmVJZCgpKTsKICAgICBjb250ZXh0LT5iaW5kVGV4
dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgdGV4dHVyZSgpLT50ZXh0dXJlSWQo
KSk7Ci0gICAgQVNTRVJUKG1fcGl4ZWxEYXRhLmdldCgpKTsKLSAgICB0ZXh0dXJlVXBkYXRlcigp
LT51cGRhdGVUZXh0dXJlUmVjdChjb250ZXh0LCB0ZXh0dXJlKCktPmZvcm1hdCgpLCBkZXN0UmVj
dCwgbV9waXhlbERhdGEuZ2V0KCkpOwotICAgIG1fcGl4ZWxEYXRhLmNsZWFyKCk7CisgICAgaWYg
KG1fbWFwcGVkQnVmZmVyKSB7CisgICAgICAgIEV4dGVuc2lvbnMzRENocm9taXVtKiBleHRlbnNp
b25zID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihjb250ZXh0LT5nZXRFeHRl
bnNpb25zKCkpOworICAgICAgICBleHRlbnNpb25zLT51bm1hcFRleFN1YkltYWdlMkRDSFJPTUlV
TShtX21hcHBlZEJ1ZmZlcik7CisgICAgICAgIG1fbWFwcGVkQnVmZmVyID0gMDsKKyAgICB9IGVs
c2UgeworICAgICAgICBBU1NFUlQobV9idWZmZXIuZ2V0KCkpOworICAgICAgICB0ZXh0dXJlVXBk
YXRlcigpLT51cGRhdGVUZXh0dXJlUmVjdChjb250ZXh0LCB0ZXh0dXJlKCktPmZvcm1hdCgpLCBk
ZXN0UmVjdCwgbV9idWZmZXIuZ2V0KCkpOworICAgICAgICBtX2J1ZmZlci5jbGVhcigpOworICAg
IH0KIH0KIAogUGFzc1JlZlB0cjxCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyPiBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUoUGFz
c093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gcGFpbnRlciwgYm9vbCB1c2VNYXBUZXhTdWJJ
bWFnZSkKQEAgLTY3LDYgKzEwMCw3IEBAIFBhc3NSZWZQdHI8Qml0bWFwU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlcj4gQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUCiAKIEJpdG1h
cFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OkJpdG1hcFNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gcGFp
bnRlciwgYm9vbCB1c2VNYXBUZXhTdWJJbWFnZSkKICAgICA6IFNrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXIocGFpbnRlcikKKyAgICAsIG1fdXNlTWFwVGV4U3ViSW1hZ2UodXNlTWFw
VGV4U3ViSW1hZ2UpCiAgICAgLCBtX3RleFN1YkltYWdlKHVzZU1hcFRleFN1YkltYWdlKQogewog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlci5oCmluZGV4IDZkNjM5NTguLjk0YTg1OGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgK
QEAgLTQyLDE0ICs0MiwxNyBAQCBwdWJsaWM6CiAgICAgcHVibGljOgogICAgICAgICBUZXh0dXJl
KEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqLCBQYXNzT3duUHRyPE1h
bmFnZWRUZXh0dXJlPik7CiAKKyAgICAgICAgdmlydHVhbCBib29sIG5lZWRQcmVwYXJlUmVjdCgp
OworICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBU
ZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVj
dCYgZGVzdFJlY3QpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c1JlY3QoY29u
c3QgSW50UmVjdCYgc291cmNlUmVjdCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0
KEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50
UmVjdCYgZGVzdFJlY3QpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgQml0bWFwU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIoKSB7IHJldHVybiBtX3Rl
eHR1cmVVcGRhdGVyOyB9CiAKLSAgICAgICAgT3duQXJyYXlQdHI8dWludDhfdD4gbV9waXhlbERh
dGE7CiAgICAgICAgIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqIG1f
dGV4dHVyZVVwZGF0ZXI7CisgICAgICAgIHVpbnQ4X3QqIG1fbWFwcGVkQnVmZmVyOworICAgICAg
ICBPd25BcnJheVB0cjx1aW50OF90PiBtX2J1ZmZlcjsKICAgICB9OwogCiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcj4gY3JlYXRl
KFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+LCBib29sIHVzZU1hcFRleFN1YkltYWdl
KTsKQEAgLTYxLDEwICs2NCwxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBhaW50Q29u
dGVudHMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXpl
LCBpbnQgYm9yZGVyVGV4ZWxzLCBmbG9hdCBjb250ZW50c1NjYWxlKTsKICAgICB2b2lkIHBhaW50
Q29udGVudHNSZWN0KFNrQ2FudmFzKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCk7CiAgICAg
dm9pZCB1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIEdDM0RlbnVtIGZvcm1h
dCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsIGNvbnN0IHVpbnQ4X3QqIHBpeGVscyk7CisgICAg
Ym9vbCB1c2VNYXBUZXhTdWJJbWFnZSgpIHsgcmV0dXJuIG1fdXNlTWFwVGV4U3ViSW1hZ2U7IH0K
IAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+LCBib29sIHVzZU1hcFRl
eFN1YkltYWdlKTsKIAorICAgIGJvb2wgbV91c2VNYXBUZXhTdWJJbWFnZTsKICAgICBMYXllclRl
eHR1cmVTdWJJbWFnZSBtX3RleFN1YkltYWdlOwogfTsKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118717</attachid>
            <date>2011-12-11 16:33:37 -0800</date>
            <delta_ts>2012-02-16 11:44:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>shared-memory-painting.diff</filename>
            <type>text/plain</type>
            <size>5976</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Jp
dG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggZGYwMGU0YS4uZTI3YmE5OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkJpdG1hcFNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuaCIKIAorI2luY2x1ZGUgIkV4dGVuc2lvbnMzRENocm9taXVt
LmgiCiAjaW5jbHVkZSAiTGF5ZXJQYWludGVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJTa0NhbnZh
cy5oIgogI2luY2x1ZGUgInNraWEvZXh0L3BsYXRmb3JtX2NhbnZhcy5oIgpAQCAtNDAsMTQgKzQx
LDQwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXI6OlRleHR1cmU6OlRleHR1cmUoQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIsIFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+
IHRleHR1cmUpCiAgICAgOiBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKHRleHR1
cmUpCiAgICAgLCBtX3RleHR1cmVVcGRhdGVyKHRleHR1cmVVcGRhdGVyKQorICAgICwgbV9tYXBw
ZWRCdWZmZXIoMCkKIHsKIH0KIAorYm9vbCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyOjpUZXh0dXJlOjpuZWVkUHJlcGFyZVJlY3QoKQoreworICAgIGlmICh0ZXh0dXJl
VXBkYXRlcigpLT51c2VNYXBUZXhTdWJJbWFnZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwor
ICAgIHJldHVybiAhdGV4dHVyZSgpLT50ZXh0dXJlSWQoKTsKK30KKwordm9pZCBCaXRtYXBTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpwcmVwYXJlUmVjdChHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3sKKyAgICBB
U1NFUlQoIW1fbWFwcGVkQnVmZmVyKTsKKworICAgIGlmICh0ZXh0dXJlVXBkYXRlcigpLT51c2VN
YXBUZXhTdWJJbWFnZSgpKSB7CisgICAgICAgIEV4dGVuc2lvbnMzRENocm9taXVtKiBleHRlbnNp
b25zID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihjb250ZXh0LT5nZXRFeHRl
bnNpb25zKCkpOworICAgICAgICBtX21hcHBlZEJ1ZmZlciA9IHN0YXRpY19jYXN0PHVpbnQ4X3Qq
PihleHRlbnNpb25zLT5tYXBUZXhTdWJJbWFnZTJEQ0hST01JVU0oR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQsIDAsIGRlc3RSZWN0LngoKSwgZGVzdFJlY3QueSgpLCBkZXN0UmVjdC53aWR0
aCgpLCBkZXN0UmVjdC5oZWlnaHQoKSwgdGV4dHVyZSgpLT5mb3JtYXQoKSwgR3JhcGhpY3NDb250
ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIEV4dGVuc2lvbnMzRENocm9taXVtOjpXUklURV9PTkxZKSk7
CisgICAgfQorCisgICAgdGV4dHVyZSgpLT5hbGxvY2F0ZVRleHR1cmUoY29udGV4dCwgYWxsb2Nh
dG9yKTsKK30KKwogdm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlOjpwYWludENvbnRlbnRzUmVjdChjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KQog
ewotICAgIHNpemVfdCBidWZmZXJTaXplID0gVGV4dHVyZU1hbmFnZXI6Om1lbW9yeVVzZUJ5dGVz
KHNvdXJjZVJlY3Quc2l6ZSgpLCB0ZXh0dXJlKCktPmZvcm1hdCgpKTsKLSAgICBtX3BpeGVsRGF0
YSA9IGFkb3B0QXJyYXlQdHIobmV3IHVpbnQ4X3RbYnVmZmVyU2l6ZV0pOwotICAgIE93blB0cjxT
a0NhbnZhcz4gY2FudmFzID0gYWRvcHRQdHIobmV3IHNraWE6OlBsYXRmb3JtQ2FudmFzKHNvdXJj
ZVJlY3Qud2lkdGgoKSwgc291cmNlUmVjdC5oZWlnaHQoKSwgZmFsc2UsIG1fcGl4ZWxEYXRhLmdl
dCgpKSk7CisgICAgdWludDhfdCogYnVmZmVyID0gbV9tYXBwZWRCdWZmZXI7CisgICAgaWYgKCFi
dWZmZXIpIHsKKyAgICAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBUZXh0dXJlTWFuYWdlcjo6bWVt
b3J5VXNlQnl0ZXMoc291cmNlUmVjdC5zaXplKCksIHRleHR1cmUoKS0+Zm9ybWF0KCkpOworICAg
ICAgICBtX2J1ZmZlciA9IGFkb3B0QXJyYXlQdHIobmV3IHVpbnQ4X3RbYnVmZmVyU2l6ZV0pOwor
ICAgICAgICBidWZmZXIgPSBtX2J1ZmZlci5nZXQoKTsKKyAgICB9CisKKyAgICBPd25QdHI8U2tD
YW52YXM+IGNhbnZhcyA9IGFkb3B0UHRyKG5ldyBza2lhOjpQbGF0Zm9ybUNhbnZhcyhzb3VyY2VS
ZWN0LndpZHRoKCksIHNvdXJjZVJlY3QuaGVpZ2h0KCksIGZhbHNlLCBidWZmZXIpKTsKICAgICB0
ZXh0dXJlVXBkYXRlcigpLT5wYWludENvbnRlbnRzUmVjdChjYW52YXMuZ2V0KCksIHNvdXJjZVJl
Y3QpOwogfQogCkBAIC01NSw5ICs4MiwxNSBAQCB2b2lkIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZQogewog
ICAgIEFTU0VSVCh0ZXh0dXJlKCktPnRleHR1cmVJZCgpKTsKICAgICBjb250ZXh0LT5iaW5kVGV4
dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgdGV4dHVyZSgpLT50ZXh0dXJlSWQo
KSk7Ci0gICAgQVNTRVJUKG1fcGl4ZWxEYXRhLmdldCgpKTsKLSAgICB0ZXh0dXJlVXBkYXRlcigp
LT51cGRhdGVUZXh0dXJlUmVjdChjb250ZXh0LCB0ZXh0dXJlKCktPmZvcm1hdCgpLCBkZXN0UmVj
dCwgbV9waXhlbERhdGEuZ2V0KCkpOwotICAgIG1fcGl4ZWxEYXRhLmNsZWFyKCk7CisgICAgaWYg
KG1fbWFwcGVkQnVmZmVyKSB7CisgICAgICAgIEV4dGVuc2lvbnMzRENocm9taXVtKiBleHRlbnNp
b25zID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihjb250ZXh0LT5nZXRFeHRl
bnNpb25zKCkpOworICAgICAgICBleHRlbnNpb25zLT51bm1hcFRleFN1YkltYWdlMkRDSFJPTUlV
TShtX21hcHBlZEJ1ZmZlcik7CisgICAgICAgIG1fbWFwcGVkQnVmZmVyID0gMDsKKyAgICB9IGVs
c2UgeworICAgICAgICBBU1NFUlQobV9idWZmZXIuZ2V0KCkpOworICAgICAgICB0ZXh0dXJlVXBk
YXRlcigpLT51cGRhdGVUZXh0dXJlUmVjdChjb250ZXh0LCB0ZXh0dXJlKCktPmZvcm1hdCgpLCBk
ZXN0UmVjdCwgbV9idWZmZXIuZ2V0KCkpOworICAgICAgICBtX2J1ZmZlci5jbGVhcigpOworICAg
IH0KIH0KIAogUGFzc1JlZlB0cjxCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyPiBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUoUGFz
c093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gcGFpbnRlciwgYm9vbCB1c2VNYXBUZXhTdWJJ
bWFnZSkKQEAgLTY3LDYgKzEwMCw3IEBAIFBhc3NSZWZQdHI8Qml0bWFwU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlcj4gQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUCiAKIEJpdG1h
cFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OkJpdG1hcFNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gcGFp
bnRlciwgYm9vbCB1c2VNYXBUZXhTdWJJbWFnZSkKICAgICA6IFNrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXIocGFpbnRlcikKKyAgICAsIG1fdXNlTWFwVGV4U3ViSW1hZ2UodXNlTWFw
VGV4U3ViSW1hZ2UpCiAgICAgLCBtX3RleFN1YkltYWdlKHVzZU1hcFRleFN1YkltYWdlKQogewog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlci5oCmluZGV4IGVjN2FjNmMuLjc2N2M1ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgK
QEAgLTQyLDE0ICs0MiwxNyBAQCBwdWJsaWM6CiAgICAgcHVibGljOgogICAgICAgICBUZXh0dXJl
KEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqLCBQYXNzT3duUHRyPE1h
bmFnZWRUZXh0dXJlPik7CiAKKyAgICAgICAgdmlydHVhbCBib29sIG5lZWRQcmVwYXJlUmVjdCgp
OworICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBU
ZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVj
dCYgZGVzdFJlY3QpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c1JlY3QoY29u
c3QgSW50UmVjdCYgc291cmNlUmVjdCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0
KEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50
UmVjdCYgZGVzdFJlY3QpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgQml0bWFwU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIoKSB7IHJldHVybiBtX3Rl
eHR1cmVVcGRhdGVyOyB9CiAKLSAgICAgICAgT3duQXJyYXlQdHI8dWludDhfdD4gbV9waXhlbERh
dGE7CiAgICAgICAgIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqIG1f
dGV4dHVyZVVwZGF0ZXI7CisgICAgICAgIHVpbnQ4X3QqIG1fbWFwcGVkQnVmZmVyOworICAgICAg
ICBPd25BcnJheVB0cjx1aW50OF90PiBtX2J1ZmZlcjsKICAgICB9OwogCiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcj4gY3JlYXRl
KFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+LCBib29sIHVzZU1hcFRleFN1YkltYWdl
KTsKQEAgLTYxLDEwICs2NCwxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBhaW50Q29u
dGVudHMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXpl
LCBpbnQgYm9yZGVyVGV4ZWxzLCBmbG9hdCBjb250ZW50c1NjYWxlKTsKICAgICB2b2lkIHBhaW50
Q29udGVudHNSZWN0KFNrQ2FudmFzKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCk7CiAgICAg
dm9pZCB1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIEdDM0RlbnVtIGZvcm1h
dCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsIGNvbnN0IHVpbnQ4X3QqIHBpeGVscyk7CisgICAg
Ym9vbCB1c2VNYXBUZXhTdWJJbWFnZSgpIHsgcmV0dXJuIG1fdXNlTWFwVGV4U3ViSW1hZ2U7IH0K
IAogcHJpdmF0ZToKICAgICBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
KFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+LCBib29sIHVzZU1hcFRleFN1YkltYWdl
KTsKIAorICAgIGJvb2wgbV91c2VNYXBUZXhTdWJJbWFnZTsKICAgICBMYXllclRleHR1cmVTdWJJ
bWFnZSBtX3RleFN1YkltYWdlOwogfTsKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127419</attachid>
            <date>2012-02-16 11:44:47 -0800</date>
            <delta_ts>2012-02-22 14:34:19 -0800</delta_ts>
            <desc>Prototype (WebKit)</desc>
            <filename>shared-memory.diff</filename>
            <type>text/plain</type>
            <size>16255</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Jp
dG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggOWI5MTJhNC4uYjkyNjAyOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5jcHAKQEAgLTMxLDEwICszMSwxNCBAQAogCiAjaW5jbHVkZSAiQml0bWFwU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgogCisjaW5jbHVkZSAiRXh0ZW5zaW9uczNEQ2hyb21p
dW0uaCIKICNpbmNsdWRlICJMYXllclBhaW50ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlNrQ2Fu
dmFzLmgiCiAjaW5jbHVkZSAiU2tEZXZpY2UuaCIKIAorI3VuZGVmIExPRworI2luY2x1ZGUgImdw
dS9jb21tYW5kX2J1ZmZlci9jbGllbnQvZ2xlczJfaW1wbGVtZW50YXRpb24uaCIKKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlOjpUZXh0dXJlKEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIqIHRleHR1cmVVcGRhdGVyLCBQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJlKQpA
QCAtNDYsNyArNTAsMTAgQEAgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZTo6VGV4dHVyZShCaXRtYXBTa1BpY3R1cmVDYW52YXMKIHZvaWQgQml0bWFwU2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6cHJlcGFyZVJlY3QoY29u
c3QgSW50UmVjdCYgc291cmNlUmVjdCkKIHsKICAgICBtX2JpdG1hcC5zZXRDb25maWcoU2tCaXRt
YXA6OmtBUkdCXzg4ODhfQ29uZmlnLCBzb3VyY2VSZWN0LndpZHRoKCksIHNvdXJjZVJlY3QuaGVp
Z2h0KCkpOwotICAgIG1fYml0bWFwLmFsbG9jUGl4ZWxzKCk7CisgICAgaWYgKHRleHR1cmUoKS0+
bWFwVHJhbnNmZXJCdWZmZXIoKSkKKyAgICAgICAgbV9iaXRtYXAuc2V0UGl4ZWxzKHRleHR1cmUo
KS0+bWFwVHJhbnNmZXJCdWZmZXIoKSk7CisgICAgZWxzZQorICAgICAgICBtX2JpdG1hcC5hbGxv
Y1BpeGVscygpOwogICAgIG1fYml0bWFwLnNldElzT3BhcXVlKG1fdGV4dHVyZVVwZGF0ZXItPmxh
eWVySXNPcGFxdWUoKSk7CiAgICAgU2tEZXZpY2UgZGV2aWNlKG1fYml0bWFwKTsKICAgICBTa0Nh
bnZhcyBjYW52YXMoJmRldmljZSk7CkBAIC01Nyw5ICs2NCwxNSBAQCB2b2lkIEJpdG1hcFNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhp
Y3NDb250ZQogewogICAgIHRleHR1cmUoKS0+YmluZFRleHR1cmUoY29udGV4dCwgYWxsb2NhdG9y
KTsKIAotICAgIG1fYml0bWFwLmxvY2tQaXhlbHMoKTsKLSAgICB0ZXh0dXJlVXBkYXRlcigpLT51
cGRhdGVUZXh0dXJlUmVjdChjb250ZXh0LCB0ZXh0dXJlKCktPmZvcm1hdCgpLCBkZXN0UmVjdCwg
c3RhdGljX2Nhc3Q8dWludDhfdCo+KG1fYml0bWFwLmdldFBpeGVscygpKSk7Ci0gICAgbV9iaXRt
YXAudW5sb2NrUGl4ZWxzKCk7CisgICAgaWYgKHRleHR1cmUoKS0+bWFwVHJhbnNmZXJCdWZmZXIo
KSkgeworICAgICAgICBFeHRlbnNpb25zM0RDaHJvbWl1bSogZXh0ZW5zaW9ucyA9IHN0YXRpY19j
YXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4oY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpKTsKKyAg
ICAgICAgZ3B1OjpnbGVzMjo6R0xFUzJDbWRIZWxwZXIqIGhlbHBlciA9IHN0YXRpY19jYXN0PGdw
dTo6Z2xlczI6OkdMRVMyQ21kSGVscGVyKj4oZXh0ZW5zaW9ucy0+aGVscGVyKCkpOworICAgICAg
ICBoZWxwZXItPlRleFN1YkltYWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAs
IGRlc3RSZWN0LngoKSwgZGVzdFJlY3QueSgpLCBkZXN0UmVjdC53aWR0aCgpLCBkZXN0UmVjdC5o
ZWlnaHQoKSwgdGV4dHVyZSgpLT5mb3JtYXQoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVE
X0JZVEUsIHRleHR1cmUoKS0+c2htSWQoKSwgMCwgRkFMU0UpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIG1fYml0bWFwLmxvY2tQaXhlbHMoKTsKKyAgICAgICAgdGV4dHVyZVVwZGF0ZXIoKS0+dXBk
YXRlVGV4dHVyZVJlY3QoY29udGV4dCwgdGV4dHVyZSgpLT5mb3JtYXQoKSwgZGVzdFJlY3QsIHN0
YXRpY19jYXN0PHVpbnQ4X3QqPihtX2JpdG1hcC5nZXRQaXhlbHMoKSkpOworICAgICAgICBtX2Jp
dG1hcC51bmxvY2tQaXhlbHMoKTsKKyAgICB9CiAgICAgbV9iaXRtYXAucmVzZXQoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRXh0
ZW5zaW9uczNEQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0V4dGVuc2lvbnMzRENocm9taXVtLmgKaW5kZXggZTE2NDYwOS4uMzQzYjg5NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRXh0ZW5z
aW9uczNEQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9FeHRlbnNpb25zM0RDaHJvbWl1bS5oCkBAIC0xMDksNiArMTA5LDggQEAgcHVibGlj
OgogICAgIC8vIEdMX0VYVF90ZXh0dXJlX3N0b3JhZ2UKICAgICB2b2lkIHRleFN0b3JhZ2UyREVY
VCh1bnNpZ25lZCB0YXJnZXQsIGludCBsZXZlbHMsIHVuc2lnbmVkIGludGVybmFsZm9ybWF0LCBp
bnQgd2lkdGgsIGludCBoZWlnaHQpOwogCisgICAgdm9pZCogaGVscGVyKCk7CisKIHByaXZhdGU6
CiAgICAgLy8gSW5zdGFuY2VzIG9mIHRoaXMgY2xhc3MgYXJlIHN0cmljdGx5IG93bmVkIGJ5IHRo
ZSBHcmFwaGljc0NvbnRleHQzRCBpbXBsZW1lbnRhdGlvbiBhbmQgZG8gbm90CiAgICAgLy8gbmVl
ZCB0byBiZSBpbnN0YW50aWF0ZWQgYnkgYW55IG90aGVyIGNvZGUuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVy
ZS5jcHAKaW5kZXggOWJjNzAwZC4uMjFmZGVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmNwcApA
QCAtMzgsMTYgKzM4LDE4IEBAIE1hbmFnZWRUZXh0dXJlOjpNYW5hZ2VkVGV4dHVyZShUZXh0dXJl
TWFuYWdlciogbWFuYWdlcikKICAgICAsIG1fdG9rZW4oMCkKICAgICAsIG1fZm9ybWF0KDApCiAg
ICAgLCBtX3RleHR1cmVJZCgwKQorICAgICwgbV9zaG1JZCgtMSkKIHsKICAgICBtX3RleHR1cmVN
YW5hZ2VyLT5yZWdpc3RlclRleHR1cmUodGhpcyk7CiB9CiAKLU1hbmFnZWRUZXh0dXJlOjpNYW5h
Z2VkVGV4dHVyZShUZXh0dXJlTWFuYWdlciogbWFuYWdlciwgVGV4dHVyZVRva2VuIHRva2VuLCBJ
bnRTaXplIHNpemUsIHVuc2lnbmVkIGZvcm1hdCwgdW5zaWduZWQgdGV4dHVyZUlkKQorTWFuYWdl
ZFRleHR1cmU6Ok1hbmFnZWRUZXh0dXJlKFRleHR1cmVNYW5hZ2VyKiBtYW5hZ2VyLCBUZXh0dXJl
VG9rZW4gdG9rZW4sIEludFNpemUgc2l6ZSwgdW5zaWduZWQgZm9ybWF0LCB1bnNpZ25lZCB0ZXh0
dXJlSWQsIGludCBzaG1JZCkKICAgICA6IG1fdGV4dHVyZU1hbmFnZXIobWFuYWdlcikKICAgICAs
IG1fdG9rZW4odG9rZW4pCiAgICAgLCBtX3NpemUoc2l6ZSkKICAgICAsIG1fZm9ybWF0KGZvcm1h
dCkKICAgICAsIG1fdGV4dHVyZUlkKHRleHR1cmVJZCkKKyAgICAsIG1fc2htSWQoc2htSWQpCiB7
CiAgICAgbV90ZXh0dXJlTWFuYWdlci0+cmVnaXN0ZXJUZXh0dXJlKHRoaXMpOwogfQpAQCAtMTEw
LDYgKzExMiwxMiBAQCB2b2lkIE1hbmFnZWRUZXh0dXJlOjp1bnJlc2VydmUoKQogICAgIG1fdGV4
dHVyZU1hbmFnZXItPnVucHJvdGVjdFRleHR1cmUobV90b2tlbik7CiB9CiAKK3ZvaWQqIE1hbmFn
ZWRUZXh0dXJlOjptYXBUcmFuc2ZlckJ1ZmZlcigpCit7CisgICAgQVNTRVJUKG1fdGV4dHVyZU1h
bmFnZXItPmhhc1RleHR1cmUobV90b2tlbikpOworICAgIHJldHVybiBtX3RleHR1cmVNYW5hZ2Vy
LT5tYXBUcmFuc2ZlckJ1ZmZlcihtX3Rva2VuKTsKK30KKwogdm9pZCBNYW5hZ2VkVGV4dHVyZTo6
YWxsb2NhdGUoVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQogewogICAgIEFTU0VSVChtX3Rl
eHR1cmVNYW5hZ2VyLT5oYXNUZXh0dXJlKG1fdG9rZW4pKTsKQEAgLTExOSw2ICsxMjcsOSBAQCB2
b2lkIE1hbmFnZWRUZXh0dXJlOjphbGxvY2F0ZShUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3Ip
CiAKIHZvaWQgTWFuYWdlZFRleHR1cmU6OmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCiB7CisgICAgaWYgKG1fc2htSWQg
PT0gLTEpCisgICAgICAgIG1fc2htSWQgPSBtX3RleHR1cmVNYW5hZ2VyLT5yZWdpc3RlclRyYW5z
ZmVyQnVmZmVyKGNvbnRleHQsIG1fdG9rZW4pOworCiAgICAgYWxsb2NhdGUoYWxsb2NhdG9yKTsK
ICAgICBjb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwg
bV90ZXh0dXJlSWQpOwogfQpAQCAtMTMxLDcgKzE0Miw3IEBAIHZvaWQgTWFuYWdlZFRleHR1cmU6
OmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJl
QWxsCiAKIFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IE1hbmFnZWRUZXh0dXJlOjpzdGVhbCgp
CiB7Ci0gICAgT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJlID0gYWRvcHRQdHIobmV3IE1h
bmFnZWRUZXh0dXJlKG1fdGV4dHVyZU1hbmFnZXIsIG1fdG9rZW4sIG1fc2l6ZSwgbV9mb3JtYXQs
IG1fdGV4dHVyZUlkKSk7CisgICAgT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJlID0gYWRv
cHRQdHIobmV3IE1hbmFnZWRUZXh0dXJlKG1fdGV4dHVyZU1hbmFnZXIsIG1fdG9rZW4sIG1fc2l6
ZSwgbV9mb3JtYXQsIG1fdGV4dHVyZUlkLCBtX3NobUlkKSk7CiAgICAgY2xlYXIoKTsKICAgICBy
ZXR1cm4gdGV4dHVyZS5yZWxlYXNlKCk7CiB9CkBAIC0xNDIsNiArMTUzLDcgQEAgdm9pZCBNYW5h
Z2VkVGV4dHVyZTo6Y2xlYXIoKQogICAgIG1fc2l6ZSA9IEludFNpemUoKTsKICAgICBtX2Zvcm1h
dCA9IDA7CiAgICAgbV90ZXh0dXJlSWQgPSAwOworICAgIG1fc2htSWQgPSAtMTsKIH0KIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFu
YWdlZFRleHR1cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L01hbmFnZWRUZXh0dXJlLmgKaW5kZXggZWQ0ZDQ1MC4uYzJkNDdiYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4
dHVyZS5oCkBAIC01Nyw2ICs1Nyw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fdGV4dHVy
ZU1hbmFnZXIgJiYgbV90ZXh0dXJlTWFuYWdlci0+aXNQcm90ZWN0ZWQobV90b2tlbik7CiAgICAg
fQogCisgICAgdm9pZCogbWFwVHJhbnNmZXJCdWZmZXIoKTsKKwogICAgIHZvaWQgYWxsb2NhdGUo
VGV4dHVyZUFsbG9jYXRvciopOwogICAgIHZvaWQgYmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0
M0QqLCBUZXh0dXJlQWxsb2NhdG9yKik7CiAgICAgdm9pZCBmcmFtZWJ1ZmZlclRleHR1cmUyRChH
cmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqKTsKQEAgLTY0LDYgKzY2LDcgQEAg
cHVibGljOgogICAgIEludFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogICAg
IHVuc2lnbmVkIGZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9ybWF0OyB9CiAgICAgdW5zaWdu
ZWQgdGV4dHVyZUlkKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlSWQ7IH0KKyAgICB1bnNpZ25l
ZCBzaG1JZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2htSWQ7IH0KIAogICAgIC8vIFN0ZWFsIHRva2Vu
IGFuZCB0ZXh0dXJlSWQgYnkgaW5zdGFudGlhdGVzIGEgbmV3IHRleHR1cmUgdXNpbmcgZXhpc3Rp
bmcKICAgICAvLyBtZW1iZXIgdmFyaWFibGVzLgpAQCAtNzEsNyArNzQsNyBAQCBwdWJsaWM6CiAK
IHByaXZhdGU6CiAgICAgZXhwbGljaXQgTWFuYWdlZFRleHR1cmUoVGV4dHVyZU1hbmFnZXIqKTsK
LSAgICBNYW5hZ2VkVGV4dHVyZShUZXh0dXJlTWFuYWdlciosIFRleHR1cmVUb2tlbiwgSW50U2l6
ZSwgdW5zaWduZWQgZm9ybWF0LCB1bnNpZ25lZCB0ZXh0dXJlSWQpOworICAgIE1hbmFnZWRUZXh0
dXJlKFRleHR1cmVNYW5hZ2VyKiwgVGV4dHVyZVRva2VuLCBJbnRTaXplLCB1bnNpZ25lZCBmb3Jt
YXQsIHVuc2lnbmVkIHRleHR1cmVJZCwgaW50IHNobUlkKTsKIAogICAgIHZvaWQgY2xlYXIoKTsK
IApAQCAtODAsNiArODMsNyBAQCBwcml2YXRlOgogICAgIEludFNpemUgbV9zaXplOwogICAgIHVu
c2lnbmVkIG1fZm9ybWF0OwogICAgIHVuc2lnbmVkIG1fdGV4dHVyZUlkOworICAgIGludCBtX3No
bUlkOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIuY3BwCmluZGV4IDEzMWE5YzcuLmY4MmNm
NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1RleHR1cmVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5jcHAKQEAgLTI4LDggKzI4LDEzIEBACiAKICNpbmNs
dWRlICJUZXh0dXJlTWFuYWdlci5oIgogCisjaW5jbHVkZSAiRXh0ZW5zaW9uczNEQ2hyb21pdW0u
aCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJNYW5hZ2Vk
VGV4dHVyZS5oIgorI2luY2x1ZGUgIlNoYXJlZEdyYXBoaWNzQ29udGV4dDNELmgiCisKKyN1bmRl
ZiBMT0cKKyNpbmNsdWRlICJncHUvY29tbWFuZF9idWZmZXIvY2xpZW50L2dsZXMyX2ltcGxlbWVu
dGF0aW9uLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKQEAgLTQzLDYgKzQ4LDE0IEBAIHNp
emVfdCBtZW1vcnlMaW1pdEJ5dGVzKHNpemVfdCB2aWV3cG9ydE11bHRpcGxpZXIsIGNvbnN0IElu
dFNpemUmIHZpZXdwb3J0U2l6ZSwKICAgICAgICAgcmV0dXJuIG1pbk1lZ2FieXRlcyAqIDEwMjQg
KiAxMDI0OwogICAgIHJldHVybiBtYXgobWluTWVnYWJ5dGVzICogMTAyNCAqIDEwMjQsIG1pbiht
YXhNZWdhYnl0ZXMgKiAxMDI0ICogMTAyNCwgdmlld3BvcnRNdWx0aXBsaWVyICogVGV4dHVyZU1h
bmFnZXI6Om1lbW9yeVVzZUJ5dGVzKHZpZXdwb3J0U2l6ZSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJH
QkEpKSk7CiB9CitncHU6OkNvbW1hbmRCdWZmZXIqIGNvbW1hbmRCdWZmZXIoKQoreworICAgIEdy
YXBoaWNzQ29udGV4dDNEKiBjb250ZXh0ID0gU2hhcmVkR3JhcGhpY3NDb250ZXh0M0Q6OmdldCgp
OworICAgIEV4dGVuc2lvbnMzRENocm9taXVtKiBleHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8RXh0
ZW5zaW9uczNEQ2hyb21pdW0qPihjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkpOworICAgIGdwdTo6
Z2xlczI6OkdMRVMyQ21kSGVscGVyKiBoZWxwZXIgPSBzdGF0aWNfY2FzdDxncHU6OmdsZXMyOjpH
TEVTMkNtZEhlbHBlcio+KGV4dGVuc2lvbnMtPmhlbHBlcigpKTsKKyAgICBBU1NFUlQoaGVscGVy
KTsKKyAgICByZXR1cm4gaGVscGVyLT5jb21tYW5kX2J1ZmZlcigpOworfQogfQogCiBzaXplX3Qg
VGV4dHVyZU1hbmFnZXI6OmhpZ2hMaW1pdEJ5dGVzKGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6
ZSkKQEAgLTIyMiw4ICsyMzUsMTYgQEAgdm9pZCBUZXh0dXJlTWFuYWdlcjo6ZGVsZXRlRXZpY3Rl
ZFRleHR1cmVzKFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKICNlbmRpZgogICAgICAgICAg
ICAgICAgIGFsbG9jYXRvci0+ZGVsZXRlVGV4dHVyZShtX2V2aWN0ZWRUZXh0dXJlc1tpXS50ZXh0
dXJlSWQsIG1fZXZpY3RlZFRleHR1cmVzW2ldLnNpemUsIG1fZXZpY3RlZFRleHR1cmVzW2ldLmZv
cm1hdCk7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobV9ldmljdGVkVGV4dHVyZXNb
aV0uc2htSWQgIT0gLTEpIHsKKyAgICAgICAgICAgICAgICBFeHRlbnNpb25zM0RDaHJvbWl1bSog
ZXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4oYWxsb2NhdG9y
LT5jb250ZXh0KCktPmdldEV4dGVuc2lvbnMoKSk7CisgICAgICAgICAgICAgICAgZ3B1OjpnbGVz
Mjo6R0xFUzJDbWRIZWxwZXIqIGhlbHBlciA9IHN0YXRpY19jYXN0PGdwdTo6Z2xlczI6OkdMRVMy
Q21kSGVscGVyKj4oZXh0ZW5zaW9ucy0+aGVscGVyKCkpOworICAgICAgICAgICAgICAgIEFTU0VS
VChoZWxwZXIpOworICAgICAgICAgICAgICAgIGdwdTo6Q29tbWFuZEJ1ZmZlciogY21kQnVmID0g
aGVscGVyLT5jb21tYW5kX2J1ZmZlcigpOworICAgICAgICAgICAgICAgIGNtZEJ1Zi0+RGVzdHJv
eVRyYW5zZmVyQnVmZmVyKG1fZXZpY3RlZFRleHR1cmVzW2ldLnNobUlkKTsKKyAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgIH0KKwogICAgIG1fZXZpY3RlZFRleHR1cmVzLmNsZWFyKCk7CiB9
CiAKQEAgLTI0MiwxMCArMjYzLDEzIEBAIHZvaWQgVGV4dHVyZU1hbmFnZXI6OnJlbW92ZVRleHR1
cmUoVGV4dHVyZVRva2VuIHRva2VuLCBUZXh0dXJlSW5mbyBpbmZvKQogICAgIG1fdGV4dHVyZXMu
cmVtb3ZlKHRva2VuKTsKICAgICBBU1NFUlQobV90ZXh0dXJlTFJVU2V0LmNvbnRhaW5zKHRva2Vu
KSk7CiAgICAgbV90ZXh0dXJlTFJVU2V0LnJlbW92ZSh0b2tlbik7CisgICAgaWYgKGluZm8uc2ht
SWQgIT0gLTEpCisgICAgICAgIGNvbW1hbmRCdWZmZXIoKS0+RGVzdHJveVRyYW5zZmVyQnVmZmVy
KGluZm8uc2htSWQpOwogICAgIEV2aWN0aW9uRW50cnkgZW50cnk7CiAgICAgZW50cnkudGV4dHVy
ZUlkID0gaW5mby50ZXh0dXJlSWQ7CiAgICAgZW50cnkuc2l6ZSA9IGluZm8uc2l6ZTsKICAgICBl
bnRyeS5mb3JtYXQgPSBpbmZvLmZvcm1hdDsKKyAgICBlbnRyeS5zaG1JZCA9IGluZm8ucmVnaXN0
ZXJlZFNobUlkOwogI2lmbmRlZiBOREVCVUcKICAgICBlbnRyeS5hbGxvY2F0b3IgPSBpbmZvLmFs
bG9jYXRvcjsKICNlbmRpZgpAQCAtMjY0LDYgKzI4OCw3IEBAIHVuc2lnbmVkIFRleHR1cmVNYW5h
Z2VyOjphbGxvY2F0ZVRleHR1cmUoVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBUZXh0dXJl
VG9rCiAjaWZuZGVmIE5ERUJVRwogICAgIGluZm8tPmFsbG9jYXRvciA9IGFsbG9jYXRvcjsKICNl
bmRpZgorCiAgICAgcmV0dXJuIHRleHR1cmVJZDsKIH0KIApAQCAtMjkxLDYgKzMxNiw4IEBAIGJv
b2wgVGV4dHVyZU1hbmFnZXI6OnJlcXVlc3RUZXh0dXJlKFRleHR1cmVUb2tlbiB0b2tlbiwgSW50
U2l6ZSBzaXplLCB1bnNpZ25lZCBmCiAgICAgaW5mby5mb3JtYXQgPSBmb3JtYXQ7CiAgICAgaW5m
by50ZXh0dXJlSWQgPSAwOwogICAgIGluZm8uaXNQcm90ZWN0ZWQgPSB0cnVlOworICAgIGluZm8u
c2htSWQgPSAtMTsKKyAgICBpbmZvLnJlZ2lzdGVyZWRTaG1JZCA9IC0xOwogI2lmbmRlZiBOREVC
VUcKICAgICBpbmZvLmFsbG9jYXRvciA9IDA7CiAjZW5kaWYKQEAgLTI5OCw2ICszMjUsNDMgQEAg
Ym9vbCBUZXh0dXJlTWFuYWdlcjo6cmVxdWVzdFRleHR1cmUoVGV4dHVyZVRva2VuIHRva2VuLCBJ
bnRTaXplIHNpemUsIHVuc2lnbmVkIGYKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCogVGV4
dHVyZU1hbmFnZXI6Om1hcFRyYW5zZmVyQnVmZmVyKFRleHR1cmVUb2tlbiB0b2tlbikKK3sKKyAg
ICBUZXh0dXJlTWFwOjppdGVyYXRvciBpdCA9IG1fdGV4dHVyZXMuZmluZCh0b2tlbik7CisgICAg
QVNTRVJUKGl0ICE9IG1fdGV4dHVyZXMuZW5kKCkpOworICAgIFRleHR1cmVJbmZvKiBpbmZvID0g
Jml0LmdldCgpLT5zZWNvbmQ7CisgICAgQVNTRVJUKGluZm8tPmlzUHJvdGVjdGVkKTsKKworICAg
IGlmIChpbmZvLT5zaG1JZCA9PSAtMSkgeworICAgICAgICBpbmZvLT5zaG1JZCA9IGNvbW1hbmRC
dWZmZXIoKS0+Q3JlYXRlVHJhbnNmZXJCdWZmZXIobWVtb3J5VXNlQnl0ZXMoaW5mby0+c2l6ZSwg
aW5mby0+Zm9ybWF0KSwgLTEpOworICAgICAgICBpZiAoaW5mby0+c2htSWQgPT0gLTEpCisgICAg
ICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBncHU6OkJ1ZmZlciBidWZmZXIgPSBjb21t
YW5kQnVmZmVyKCktPkdldFRyYW5zZmVyQnVmZmVyKGluZm8tPnNobUlkKTsKKyAgICByZXR1cm4g
YnVmZmVyLnB0cjsKK30KKworaW50IFRleHR1cmVNYW5hZ2VyOjpyZWdpc3RlclRyYW5zZmVyQnVm
ZmVyKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlVG9rZW4gdG9rZW4pCit7Cisg
ICAgVGV4dHVyZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3RleHR1cmVzLmZpbmQodG9rZW4pOworICAg
IEFTU0VSVChpdCAhPSBtX3RleHR1cmVzLmVuZCgpKTsKKyAgICBUZXh0dXJlSW5mbyogaW5mbyA9
ICZpdC5nZXQoKS0+c2Vjb25kOworICAgIEFTU0VSVChpbmZvLT5pc1Byb3RlY3RlZCk7CisgICAg
QVNTRVJUKGluZm8tPnJlZ2lzdGVyZWRTaG1JZCA9PSAtMSk7CisgICAgaWYgKGluZm8tPnNobUlk
ID09IC0xKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGdwdTo6QnVmZmVyIGJ1ZmZlciA9IGNv
bW1hbmRCdWZmZXIoKS0+R2V0VHJhbnNmZXJCdWZmZXIoaW5mby0+c2htSWQpOworCisgICAgRXh0
ZW5zaW9uczNEQ2hyb21pdW0qIGV4dGVuc2lvbnMgPSBzdGF0aWNfY2FzdDxFeHRlbnNpb25zM0RD
aHJvbWl1bSo+KGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKSk7CisgICAgZ3B1OjpnbGVzMjo6R0xF
UzJDbWRIZWxwZXIqIGhlbHBlciA9IHN0YXRpY19jYXN0PGdwdTo6Z2xlczI6OkdMRVMyQ21kSGVs
cGVyKj4oZXh0ZW5zaW9ucy0+aGVscGVyKCkpOworICAgIGdwdTo6Q29tbWFuZEJ1ZmZlciogY21k
QnVmID0gaGVscGVyLT5jb21tYW5kX2J1ZmZlcigpOworCisgICAgaW5mby0+cmVnaXN0ZXJlZFNo
bUlkID0gY21kQnVmLT5SZWdpc3RlclRyYW5zZmVyQnVmZmVyKGJ1ZmZlci5zaGFyZWRfbWVtb3J5
LCBtZW1vcnlVc2VCeXRlcyhpbmZvLT5zaXplLCBpbmZvLT5mb3JtYXQpLCAtMSk7CisgICAgcmV0
dXJuIGluZm8tPnJlZ2lzdGVyZWRTaG1JZDsKK30KKwogfQogCiAjZW5kaWYgLy8gVVNFKEFDQ0VM
RVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmgKaW5kZXggODI1OWFkYi4uNDVk
MWNhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vVGV4dHVyZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5oCkBAIC00NSw2ICs0NSw4IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHVuc2lnbmVkIGNyZWF0ZVRleHR1cmUoY29uc3QgSW50U2l6ZSYsIEdDM0RlbnVt
IGZvcm1hdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVUZXh0dXJlKHVuc2lnbmVkIHRl
eHR1cmUsIGNvbnN0IEludFNpemUmLCBHQzNEZW51bSkgPSAwOwogCisgICAgdmlydHVhbCBHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCgpIHsgcmV0dXJuIDA7IH0KKwogcHJvdGVjdGVkOgogICAg
IHZpcnR1YWwgflRleHR1cmVBbGxvY2F0b3IoKSB7IH0KIH07CkBAIC05NCw2ICs5Niw5IEBAIHB1
YmxpYzoKICAgICB2b2lkIHJlZHVjZU1lbW9yeVRvTGltaXQoc2l6ZV90KTsKICAgICBzaXplX3Qg
Y3VycmVudE1lbW9yeVVzZUJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9tZW1vcnlVc2VCeXRlczsg
fQogCisgICAgdm9pZCogbWFwVHJhbnNmZXJCdWZmZXIoVGV4dHVyZVRva2VuKTsKKyAgICBpbnQg
cmVnaXN0ZXJUcmFuc2ZlckJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVUb2tlbik7
CisKIHByaXZhdGU6CiAgICAgVGV4dHVyZU1hbmFnZXIoc2l6ZV90IG1heE1lbW9yeUxpbWl0Qnl0
ZXMsIHNpemVfdCBwcmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVzLCBpbnQgbWF4VGV4dHVyZVNpemUp
OwogCkBAIC0xMDIsNiArMTA3LDggQEAgcHJpdmF0ZToKICAgICAgICAgR0MzRGVudW0gZm9ybWF0
OwogICAgICAgICB1bnNpZ25lZCB0ZXh0dXJlSWQ7CiAgICAgICAgIGJvb2wgaXNQcm90ZWN0ZWQ7
CisgICAgICAgIGludCBzaG1JZDsKKyAgICAgICAgaW50IHJlZ2lzdGVyZWRTaG1JZDsKICNpZm5k
ZWYgTkRFQlVHCiAgICAgICAgIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcjsKICNlbmRpZgpA
QCAtMTI2LDYgKzEzMyw3IEBAIHByaXZhdGU6CiAgICAgICAgIHVuc2lnbmVkIHRleHR1cmVJZDsK
ICAgICAgICAgSW50U2l6ZSBzaXplOwogICAgICAgICBHQzNEZW51bSBmb3JtYXQ7CisgICAgICAg
IGludCBzaG1JZDsKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgIFRleHR1cmVBbGxvY2F0b3IqIGFs
bG9jYXRvcjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmFja2luZ1RleHR1cmVBbGxvY2F0b3IuaApp
bmRleCBhOGE1NDkyLi45NjU4ZDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9UcmFja2luZ1RleHR1cmVBbGxvY2F0b3IuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmFja2luZ1RleHR1cmVBbGxv
Y2F0b3IuaApAQCAtNTAsNiArNTAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRUZXh0dXJlVXNh
Z2VIaW50KFRleHR1cmVVc2FnZUhpbnQgaGludCkgeyBtX3RleHR1cmVVc2FnZUhpbnQgPSBoaW50
OyB9CiAgICAgdm9pZCBzZXRVc2VUZXh0dXJlU3RvcmFnZUV4dChib29sIHVzZVN0b3JhZ2VFeHQp
IHsgbV91c2VUZXh0dXJlU3RvcmFnZUV4dCA9IHVzZVN0b3JhZ2VFeHQ7IH0KIAorICAgIHZpcnR1
YWwgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQoKSB7IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7
IH0KKwogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcihQ
YXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkdyYXBoaWNzQ29udGV4dDNELmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJHcmFwaGljc0NvbnRleHQzRC5o
CmluZGV4IDU3ZjlkNzkuLmZmNDNiOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL3BsYXRmb3JtL1dlYkdyYXBoaWNzQ29udGV4dDNELmgKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViR3JhcGhpY3NDb250ZXh0M0QuaApAQCAt
MzkzLDYgKzM5Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdGV4U3RvcmFnZTJERVhU
KFdHQzNEZW51bSB0YXJnZXQsIFdHQzNEaW50IGxldmVscywgV0dDM0R1aW50IGludGVybmFsZm9y
bWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0dDM0RpbnQgd2lkdGgsIFdH
QzNEaW50IGhlaWdodCkgeyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQqIGhlbHBlcigpID0gMDsKIAog
I2lmIFdFQktJVF9VU0lOR19TS0lBCiAgICAgR3JHTEludGVyZmFjZSogY3JlYXRlR3JHTEludGVy
ZmFjZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRXh0ZW5zaW9u
czNEQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRXh0ZW5zaW9uczNE
Q2hyb21pdW0uY3BwCmluZGV4IGVjZTA0MDUuLmRiZGM5ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0V4dGVuc2lvbnMzRENocm9taXVtLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9FeHRlbnNpb25zM0RDaHJvbWl1bS5jcHAKQEAgLTE1NSw2ICsx
NTUsMTEgQEAgdm9pZCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6dGV4U3RvcmFnZTJERVhUKHVuc2ln
bmVkIGludCB0YXJnZXQsIGludCBsZXZlbHMsIHVuc2kKICAgICBtX3ByaXZhdGUtPnRleFN0b3Jh
Z2UyREVYVCh0YXJnZXQsIGxldmVscywgaW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwog
fQogCit2b2lkKiBFeHRlbnNpb25zM0RDaHJvbWl1bTo6aGVscGVyKCkKK3sKKyAgICByZXR1cm4g
bV9wcml2YXRlLT5oZWxwZXIoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9HcmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcAppbmRleCBjYmJmNWM1Li40N2RiNTM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQz
RENocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0Nv
bnRleHQzRENocm9taXVtLmNwcApAQCAtOTExLDYgKzkxMSwxMSBAQCBERUxFR0FURV9UT19JTVBM
XzFSKGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSwgUGxhdGZvcm0zRE9iamVjdCwgU3Ry
aW5nKQogREVMRUdBVEVfVE9fSU1QTF81KHRleEltYWdlSU9TdXJmYWNlMkRDSFJPTUlVTSwgR0Mz
RGVudW0sIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0R1aW50LCBHQzNEdWludCkKIERFTEVHQVRFX1RP
X0lNUExfNSh0ZXhTdG9yYWdlMkRFWFQsIEdDM0RlbnVtLCBHQzNEaW50LCBHQzNEdWludCwgR0Mz
RGludCwgR0MzRGludCkKIAordm9pZCogR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpoZWxwZXIo
KQoreworICAgIHJldHVybiBtX2ltcGwtPmhlbHBlcigpOworfQorCiAvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IC8vIEdyYXBoaWNzQ29udGV4dDNECiAvLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaAppbmRleCBmMmQ0OWExLi5jMGZjZGQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQz
RFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRl
eHQzRFByaXZhdGUuaApAQCAtMzE3LDYgKzMxNyw4IEBAIHB1YmxpYzoKICAgICAvLyBHTF9FWFRf
dGV4dHVyZV9zdG9yYWdlCiAgICAgdm9pZCB0ZXhTdG9yYWdlMkRFWFQoR0MzRGVudW0gdGFyZ2V0
LCBHQzNEaW50IGxldmVscywgR0MzRHVpbnQgaW50ZXJuYWxmb3JtYXQsIEdDM0RpbnQgd2lkdGgs
IEdDM0RpbnQgaGVpZ2h0KTsKIAorICAgIHZvaWQqIGhlbHBlcigpOworCiBwcml2YXRlOgogICAg
IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZShXZWJLaXQ6OldlYlZpZXdJbXBsKiwgUGFzc093blB0
cjxXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEPiwgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJp
YnV0ZXMpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127420</attachid>
            <date>2012-02-16 11:45:20 -0800</date>
            <delta_ts>2012-02-22 14:35:21 -0800</delta_ts>
            <desc>Prototype (Chromium)</desc>
            <filename>shared-memory-chromium.diff</filename>
            <type>text/plain</type>
            <size>2705</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL2NvbnRlbnQvY29tbW9uL2dwdS9jbGllbnQvd2ViZ3JhcGhpY3Njb250ZXh0
M2RfY29tbWFuZF9idWZmZXJfaW1wbC5jYyBiL2NvbnRlbnQvY29tbW9uL2dwdS9jbGllbnQvd2Vi
Z3JhcGhpY3Njb250ZXh0M2RfY29tbWFuZF9idWZmZXJfaW1wbC5jYwppbmRleCBiOWViYzJmLi42
ZTliZjBiIDEwMDY0NAotLS0gYS9jb250ZW50L2NvbW1vbi9ncHUvY2xpZW50L3dlYmdyYXBoaWNz
Y29udGV4dDNkX2NvbW1hbmRfYnVmZmVyX2ltcGwuY2MKKysrIGIvY29udGVudC9jb21tb24vZ3B1
L2NsaWVudC93ZWJncmFwaGljc2NvbnRleHQzZF9jb21tYW5kX2J1ZmZlcl9pbXBsLmNjCkBAIC0x
MTUzLDYgKzExNTMsMTAgQEAgREVMRUdBVEVfVE9fR0xfNSh0ZXhJbWFnZUlPU3VyZmFjZTJEQ0hS
T01JVU0sIFRleEltYWdlSU9TdXJmYWNlMkRDSFJPTUlVTSwKIERFTEVHQVRFX1RPX0dMXzUodGV4
U3RvcmFnZTJERVhULCBUZXhTdG9yYWdlMkRFWFQsCiAgICAgICAgICAgICAgICAgIFdHQzNEZW51
bSwgV0dDM0RpbnQsIFdHQzNEdWludCwgV0dDM0RpbnQsIFdHQzNEaW50KQogCit2b2lkKiBXZWJH
cmFwaGljc0NvbnRleHQzRENvbW1hbmRCdWZmZXJJbXBsOjpoZWxwZXIoKSB7CisgIHJldHVybiBn
bF8tPmhlbHBlcigpOworfQorCiAjaWYgV0VCS0lUX1VTSU5HX1NLSUEKIEdyR0xJbnRlcmZhY2Uq
IFdlYkdyYXBoaWNzQ29udGV4dDNEQ29tbWFuZEJ1ZmZlckltcGw6Om9uQ3JlYXRlR3JHTEludGVy
ZmFjZSgpIHsKICAgcmV0dXJuIHdlYmtpdF9nbHVlOjpDcmVhdGVDb21tYW5kQnVmZmVyU2tpYUdM
QmluZGluZygpOwpkaWZmIC0tZ2l0IGEvY29udGVudC9jb21tb24vZ3B1L2NsaWVudC93ZWJncmFw
aGljc2NvbnRleHQzZF9jb21tYW5kX2J1ZmZlcl9pbXBsLmggYi9jb250ZW50L2NvbW1vbi9ncHUv
Y2xpZW50L3dlYmdyYXBoaWNzY29udGV4dDNkX2NvbW1hbmRfYnVmZmVyX2ltcGwuaAppbmRleCAy
ZWRhMTE1Li44NGIzNWJkIDEwMDY0NAotLS0gYS9jb250ZW50L2NvbW1vbi9ncHUvY2xpZW50L3dl
YmdyYXBoaWNzY29udGV4dDNkX2NvbW1hbmRfYnVmZmVyX2ltcGwuaAorKysgYi9jb250ZW50L2Nv
bW1vbi9ncHUvY2xpZW50L3dlYmdyYXBoaWNzY29udGV4dDNkX2NvbW1hbmRfYnVmZmVyX2ltcGwu
aApAQCAtNDc4LDYgKzQ3OCw4IEBAIGNsYXNzIFdlYkdyYXBoaWNzQ29udGV4dDNEQ29tbWFuZEJ1
ZmZlckltcGwKICAgICAgIFdHQzNEZW51bSB0YXJnZXQsIFdHQzNEaW50IGxldmVscywgV0dDM0R1
aW50IGludGVybmFsZm9ybWF0LAogICAgICAgV0dDM0RpbnQgd2lkdGgsIFdHQzNEaW50IGhlaWdo
dCk7CiAKKyAgdmlydHVhbCB2b2lkKiBoZWxwZXIoKTsKKwogIHByb3RlY3RlZDoKICNpZiBXRUJL
SVRfVVNJTkdfU0tJQQogICB2aXJ0dWFsIEdyR0xJbnRlcmZhY2UqIG9uQ3JlYXRlR3JHTEludGVy
ZmFjZSgpOwpkaWZmIC0tZ2l0IGEvd2Via2l0L2dwdS93ZWJncmFwaGljc2NvbnRleHQzZF9pbl9w
cm9jZXNzX2ltcGwuY2MgYi93ZWJraXQvZ3B1L3dlYmdyYXBoaWNzY29udGV4dDNkX2luX3Byb2Nl
c3NfaW1wbC5jYwppbmRleCA2MGQ3NzgxLi5mODQwMmU3IDEwMDY0NAotLS0gYS93ZWJraXQvZ3B1
L3dlYmdyYXBoaWNzY29udGV4dDNkX2luX3Byb2Nlc3NfaW1wbC5jYworKysgYi93ZWJraXQvZ3B1
L3dlYmdyYXBoaWNzY29udGV4dDNkX2luX3Byb2Nlc3NfaW1wbC5jYwpAQCAtMTY2MSw2ICsxNjYx
LDExIEBAIHZvaWQgV2ViR3JhcGhpY3NDb250ZXh0M0RJblByb2Nlc3NJbXBsOjp0ZXhJbWFnZUlP
U3VyZmFjZTJEQ0hST01JVU0oCiBERUxFR0FURV9UT19HTF81KHRleFN0b3JhZ2UyREVYVCwgVGV4
U3RvcmFnZTJERVhULAogICAgICAgICAgICAgICAgICBXR0MzRGVudW0sIFdHQzNEaW50LCBXR0Mz
RHVpbnQsIFdHQzNEaW50LCBXR0MzRGludCkKIAordm9pZCogV2ViR3JhcGhpY3NDb250ZXh0M0RJ
blByb2Nlc3NJbXBsOjpoZWxwZXIoKQoreworICByZXR1cm4gMDsKK30KKwogI2lmIFdFQktJVF9V
U0lOR19TS0lBCiBHckdMSW50ZXJmYWNlKiBXZWJHcmFwaGljc0NvbnRleHQzREluUHJvY2Vzc0lt
cGw6Om9uQ3JlYXRlR3JHTEludGVyZmFjZSgpIHsKICAgcmV0dXJuIGdmeDo6Q3JlYXRlSW5Qcm9j
ZXNzU2tpYUdMQmluZGluZygpOwpkaWZmIC0tZ2l0IGEvd2Via2l0L2dwdS93ZWJncmFwaGljc2Nv
bnRleHQzZF9pbl9wcm9jZXNzX2ltcGwuaCBiL3dlYmtpdC9ncHUvd2ViZ3JhcGhpY3Njb250ZXh0
M2RfaW5fcHJvY2Vzc19pbXBsLmgKaW5kZXggYTg5Y2FjYy4uMzQ1M2ZlNiAxMDA2NDQKLS0tIGEv
d2Via2l0L2dwdS93ZWJncmFwaGljc2NvbnRleHQzZF9pbl9wcm9jZXNzX2ltcGwuaAorKysgYi93
ZWJraXQvZ3B1L3dlYmdyYXBoaWNzY29udGV4dDNkX2luX3Byb2Nlc3NfaW1wbC5oCkBAIC00NTcs
NiArNDU3LDggQEAgY2xhc3MgV2ViR3JhcGhpY3NDb250ZXh0M0RJblByb2Nlc3NJbXBsIDogcHVi
bGljIFdlYkdyYXBoaWNzQ29udGV4dDNEIHsKICAgICAgIFdHQzNEZW51bSB0YXJnZXQsIFdHQzNE
aW50IGxldmVscywgV0dDM0R1aW50IGludGVybmFsZm9ybWF0LAogICAgICAgV0dDM0RpbnQgd2lk
dGgsIFdHQzNEaW50IGhlaWdodCk7CiAKKyAgdmlydHVhbCB2b2lkKiBoZWxwZXIoKTsKKwogIHBy
b3RlY3RlZDoKICNpZiBXRUJLSVRfVVNJTkdfU0tJQQogICB2aXJ0dWFsIEdyR0xJbnRlcmZhY2Uq
IG9uQ3JlYXRlR3JHTEludGVyZmFjZSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128291</attachid>
            <date>2012-02-22 14:34:19 -0800</date>
            <delta_ts>2012-02-27 10:08:15 -0800</delta_ts>
            <desc>Prototype (WebKit)</desc>
            <filename>shared-memory-webkit.diff</filename>
            <type>text/plain</type>
            <size>25601</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Jp
dG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggOWI5MTJhNC4uNWE5ZDEzMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5jcHAKQEAgLTQ2LDIwICs0NiwzMyBAQCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJlKEJpdG1hcFNrUGljdHVyZUNhbnZhcwogdm9pZCBC
aXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpwcmVwYXJl
UmVjdChjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KQogewogICAgIG1fYml0bWFwLnNldENvbmZp
ZyhTa0JpdG1hcDo6a0FSR0JfODg4OF9Db25maWcsIHNvdXJjZVJlY3Qud2lkdGgoKSwgc291cmNl
UmVjdC5oZWlnaHQoKSk7Ci0gICAgbV9iaXRtYXAuYWxsb2NQaXhlbHMoKTsKKworICAgIHZvaWQq
IHBpeGVsRGVzdCA9IHRleHR1cmUoKS0+bWFwVHJhbnNmZXJCdWZmZXIoKTsKKyAgICBpZiAocGl4
ZWxEZXN0KQorICAgICAgICBtX2JpdG1hcC5zZXRQaXhlbHMocGl4ZWxEZXN0KTsKKyAgICBlbHNl
CisgICAgICAgIG1fYml0bWFwLmFsbG9jUGl4ZWxzKCk7CisKICAgICBtX2JpdG1hcC5zZXRJc09w
YXF1ZShtX3RleHR1cmVVcGRhdGVyLT5sYXllcklzT3BhcXVlKCkpOwogICAgIFNrRGV2aWNlIGRl
dmljZShtX2JpdG1hcCk7CiAgICAgU2tDYW52YXMgY2FudmFzKCZkZXZpY2UpOwogICAgIHRleHR1
cmVVcGRhdGVyKCktPnBhaW50Q29udGVudHNSZWN0KCZjYW52YXMsIHNvdXJjZVJlY3QpOworCisg
ICAgaWYgKHBpeGVsRGVzdCkKKyAgICAgICAgbV9iaXRtYXAuc2V0SW1tdXRhYmxlKCk7CiB9CiAK
IHZvaWQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6
dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciog
YWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0
UmVjdCkKIHsKICAgICB0ZXh0dXJlKCktPmJpbmRUZXh0dXJlKGNvbnRleHQsIGFsbG9jYXRvcik7
CiAKLSAgICBtX2JpdG1hcC5sb2NrUGl4ZWxzKCk7Ci0gICAgdGV4dHVyZVVwZGF0ZXIoKS0+dXBk
YXRlVGV4dHVyZVJlY3QoY29udGV4dCwgdGV4dHVyZSgpLT5mb3JtYXQoKSwgZGVzdFJlY3QsIHN0
YXRpY19jYXN0PHVpbnQ4X3QqPihtX2JpdG1hcC5nZXRQaXhlbHMoKSkpOwotICAgIG1fYml0bWFw
LnVubG9ja1BpeGVscygpOworICAgIGlmICghbV9iaXRtYXAuaXNJbW11dGFibGUoKSkgeworICAg
ICAgICBtX2JpdG1hcC5sb2NrUGl4ZWxzKCk7CisgICAgICAgIHRleHR1cmVVcGRhdGVyKCktPnVw
ZGF0ZVRleHR1cmVSZWN0KGNvbnRleHQsIHRleHR1cmUoKS0+Zm9ybWF0KCksIGRlc3RSZWN0LCBz
dGF0aWNfY2FzdDx1aW50OF90Kj4obV9iaXRtYXAuZ2V0UGl4ZWxzKCkpKTsKKyAgICAgICAgbV9i
aXRtYXAudW5sb2NrUGl4ZWxzKCk7CisgICAgfSBlbHNlCisgICAgICAgIHRleHR1cmUoKS0+dGV4
U3ViSW1hZ2UyRFRyYW5zZmVyQnVmZmVyKGNvbnRleHQsIGRlc3RSZWN0KTsKKwogICAgIG1fYml0
bWFwLnJlc2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0V4dGVuc2lvbnMzRENocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9FeHRlbnNpb25zM0RDaHJvbWl1bS5oCmluZGV4IDUw
OWRiMzMuLjhjZGM1NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0V4dGVuc2lvbnMzRENocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRXh0ZW5zaW9uczNEQ2hyb21pdW0uaApAQCAtMTE3
LDYgKzExNyw4IEBAIHB1YmxpYzoKICAgICAvLyBHTF9FWFRfdGV4dHVyZV9zdG9yYWdlCiAgICAg
dm9pZCB0ZXhTdG9yYWdlMkRFWFQodW5zaWduZWQgdGFyZ2V0LCBpbnQgbGV2ZWxzLCB1bnNpZ25l
ZCBpbnRlcm5hbGZvcm1hdCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKIAorICAgIHZvaWQqIGhl
bHBlcigpOworCiBwcml2YXRlOgogICAgIC8vIEluc3RhbmNlcyBvZiB0aGlzIGNsYXNzIGFyZSBz
dHJpY3RseSBvd25lZCBieSB0aGUgR3JhcGhpY3NDb250ZXh0M0QgaW1wbGVtZW50YXRpb24gYW5k
IGRvIG5vdAogICAgIC8vIG5lZWQgdG8gYmUgaW5zdGFudGlhdGVkIGJ5IGFueSBvdGhlciBjb2Rl
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TWFuYWdlZFRleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTWFuYWdlZFRleHR1cmUuY3BwCmluZGV4IDliYzcwMGQuLjRkNTgxMjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0
dXJlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9N
YW5hZ2VkVGV4dHVyZS5jcHAKQEAgLTExMCw2ICsxMTAsMTkgQEAgdm9pZCBNYW5hZ2VkVGV4dHVy
ZTo6dW5yZXNlcnZlKCkKICAgICBtX3RleHR1cmVNYW5hZ2VyLT51bnByb3RlY3RUZXh0dXJlKG1f
dG9rZW4pOwogfQogCit2b2lkKiBNYW5hZ2VkVGV4dHVyZTo6bWFwVHJhbnNmZXJCdWZmZXIoKQor
eworICAgIEFTU0VSVChtX3RleHR1cmVNYW5hZ2VyLT5oYXNUZXh0dXJlKG1fdG9rZW4pKTsKKyAg
ICByZXR1cm4gbV90ZXh0dXJlTWFuYWdlci0+bWFwVHJhbnNmZXJCdWZmZXIobV90b2tlbik7Cit9
CisKKwordm9pZCBNYW5hZ2VkVGV4dHVyZTo6dGV4U3ViSW1hZ2UyRFRyYW5zZmVyQnVmZmVyKEdy
YXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3sKKyAg
ICBBU1NFUlQobV90ZXh0dXJlTWFuYWdlci0+aGFzVGV4dHVyZShtX3Rva2VuKSk7CisgICAgbV90
ZXh0dXJlTWFuYWdlci0+dGV4U3ViSW1hZ2UyRFRyYW5zZmVyQnVmZmVyKGNvbnRleHQsIGRlc3RS
ZWN0LCBtX3Rva2VuKTsKK30KKwogdm9pZCBNYW5hZ2VkVGV4dHVyZTo6YWxsb2NhdGUoVGV4dHVy
ZUFsbG9jYXRvciogYWxsb2NhdG9yKQogewogICAgIEFTU0VSVChtX3RleHR1cmVNYW5hZ2VyLT5o
YXNUZXh0dXJlKG1fdG9rZW4pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5oCmluZGV4IGVkNGQ0NTAuLmVk
ZDVmYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL01hbmFnZWRUZXh0dXJlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuaApAQCAtNTcsNiArNTcsOSBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBtX3RleHR1cmVNYW5hZ2VyICYmIG1fdGV4dHVyZU1hbmFnZXItPmlzUHJv
dGVjdGVkKG1fdG9rZW4pOwogICAgIH0KIAorICAgIHZvaWQqIG1hcFRyYW5zZmVyQnVmZmVyKCk7
CisgICAgdm9pZCB0ZXhTdWJJbWFnZTJEVHJhbnNmZXJCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0Qq
LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CisKICAgICB2b2lkIGFsbG9jYXRlKFRleHR1cmVB
bGxvY2F0b3IqKTsKICAgICB2b2lkIGJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4
dHVyZUFsbG9jYXRvciopOwogICAgIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlMkQoR3JhcGhpY3ND
b250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5jcHAKaW5k
ZXggMGM2ZmUxNC4uZDVjMTlmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmNwcApAQCAtMjgsOCAr
MjgsMTUgQEAKIAogI2luY2x1ZGUgIlRleHR1cmVNYW5hZ2VyLmgiCiAKKyNpbmNsdWRlICJFeHRl
bnNpb25zM0RDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgog
I2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJlLmgiCisjaW5jbHVkZSAiU2hhcmVkR3JhcGhpY3NDb250
ZXh0M0QuaCIKKworI3VuZGVmIExPRworI2luY2x1ZGUgImJhc2UvcHJvY2Vzc191dGlsLmgiCisj
aW5jbHVkZSAiYmFzZS9zaGFyZWRfbWVtb3J5LmgiCisjaW5jbHVkZSAiZ3B1L2NvbW1hbmRfYnVm
ZmVyL2NsaWVudC9nbGVzMl9pbXBsZW1lbnRhdGlvbi5oIgogCiB1c2luZyBuYW1lc3BhY2Ugc3Rk
OwogCkBAIC00Myw2ICs1MCwxNSBAQCBzaXplX3QgbWVtb3J5TGltaXRCeXRlcyhzaXplX3Qgdmll
d3BvcnRNdWx0aXBsaWVyLCBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUsCiAgICAgICAgIHJl
dHVybiBtaW5NZWdhYnl0ZXMgKiAxMDI0ICogMTAyNDsKICAgICByZXR1cm4gbWF4KG1pbk1lZ2Fi
eXRlcyAqIDEwMjQgKiAxMDI0LCBtaW4obWF4TWVnYWJ5dGVzICogMTAyNCAqIDEwMjQsIHZpZXdw
b3J0TXVsdGlwbGllciAqIFRleHR1cmVNYW5hZ2VyOjptZW1vcnlVc2VCeXRlcyh2aWV3cG9ydFNp
emUsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKSkpOwogfQorZ3B1OjpDb21tYW5kQnVmZmVyKiBj
b21tYW5kQnVmZmVyKCkKK3sKKyAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCA9IFNoYXJl
ZEdyYXBoaWNzQ29udGV4dDNEOjpnZXQoKTsKKyAgICBBU1NFUlQoY29udGV4dCk7CisgICAgRXh0
ZW5zaW9uczNEQ2hyb21pdW0qIGV4dGVuc2lvbnMgPSBzdGF0aWNfY2FzdDxFeHRlbnNpb25zM0RD
aHJvbWl1bSo+KGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKSk7CisgICAgZ3B1OjpnbGVzMjo6R0xF
UzJDbWRIZWxwZXIqIGhlbHBlciA9IHN0YXRpY19jYXN0PGdwdTo6Z2xlczI6OkdMRVMyQ21kSGVs
cGVyKj4oZXh0ZW5zaW9ucy0+aGVscGVyKCkpOworICAgIEFTU0VSVChoZWxwZXIpOworICAgIHJl
dHVybiBoZWxwZXItPmNvbW1hbmRfYnVmZmVyKCk7Cit9CiB9CiAKIHNpemVfdCBUZXh0dXJlTWFu
YWdlcjo6aGlnaExpbWl0Qnl0ZXMoY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplKQpAQCAtMTAx
LDYgKzExNyw5IEBAIFRleHR1cmVNYW5hZ2VyOjpUZXh0dXJlTWFuYWdlcihzaXplX3QgbWF4TWVt
b3J5TGltaXRCeXRlcywgc2l6ZV90IHByZWZlcnJlZE1lbW9yCiAgICAgLCBtX21lbW9yeVVzZUJ5
dGVzKDApCiAgICAgLCBtX21heFRleHR1cmVTaXplKG1heFRleHR1cmVTaXplKQogICAgICwgbV9u
ZXh0VG9rZW4oMSkKKyAgICAsIG1fbmV4dFRyYW5zZmVyQnVmZmVyVG9rZW4oMSkKKyAgICAsIG1f
bGFzdFRva2VuUmVhZCgwKQorICAgICwgbV90cmFuc2ZlckJ1ZmZlck1lbW9yeVVzZUJ5dGVzKDAp
CiB7CiB9CiAKQEAgLTIwNyw2ICsyMjYsMjIgQEAgdm9pZCBUZXh0dXJlTWFuYWdlcjo6cmVkdWNl
TWVtb3J5VG9MaW1pdChzaXplX3QgbGltaXQpCiAgICAgICAgIGlmICghZm91bmRDYW5kaWRhdGUp
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQorCisgICAgLy8gUmVkdWNlIHRyYW5zZmVyIGJ1
ZmZlciBtZW1vcnkgdXNlIHRvIHRoZSBzYW1lIHRleHR1cmUgbWVtb3J5LgorICAgIHdoaWxlICht
X3RyYW5zZmVyQnVmZmVyTWVtb3J5VXNlQnl0ZXMgPiBsaW1pdCkgeworICAgICAgICBib29sIGZv
dW5kQ2FuZGlkYXRlID0gZmFsc2U7CisgICAgICAgIGZvciAoVHJhbnNmZXJCdWZmZXJNYXA6Oml0
ZXJhdG9yIGl0ID0gbV90cmFuc2ZlckJ1ZmZlcnMuYmVnaW4oKTsgaXQgIT0gbV90cmFuc2ZlckJ1
ZmZlcnMuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgICAgIGlmIChpdC0+c2Vjb25kLmlzUHJvdGVj
dGVkKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKGl0LT5zZWNv
bmQuZmVuY2UgPiBtX2xhc3RUb2tlblJlYWQpCisgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICBldmljdFRyYW5zZmVyQnVmZmVyKGl0LT5maXJzdCwgaXQtPnNlY29uZCk7Cisg
ICAgICAgICAgICBmb3VuZENhbmRpZGF0ZSA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgICAgICBpZiAoIWZvdW5kQ2FuZGlkYXRlKQorICAgICAgICAgICAgcmV0dXJu
OworICAgIH0KIH0KIAogdm9pZCBUZXh0dXJlTWFuYWdlcjo6YWRkVGV4dHVyZShUZXh0dXJlVG9r
ZW4gdG9rZW4sIFRleHR1cmVJbmZvIGluZm8pCkBAIC0yMjksOCArMjY0LDIwIEBAIHZvaWQgVGV4
dHVyZU1hbmFnZXI6OmRlbGV0ZUV2aWN0ZWRUZXh0dXJlcyhUZXh0dXJlQWxsb2NhdG9yKiBhbGxv
Y2F0b3IpCiAgICAgICAgICAgICAgICAgYWxsb2NhdG9yLT5kZWxldGVUZXh0dXJlKG1fZXZpY3Rl
ZFRleHR1cmVzW2ldLnRleHR1cmVJZCwgbV9ldmljdGVkVGV4dHVyZXNbaV0uc2l6ZSwgbV9ldmlj
dGVkVGV4dHVyZXNbaV0uZm9ybWF0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAg
ICAvLyBEZWxldGUgZXZpY3RlZCB0cmFuc2ZlciBidWZmZXJzLgorICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1fZXZpY3RlZFRyYW5zZmVyQnVmZmVycy5zaXplKCk7ICsraSkgeworICAg
ICAgICAgICAgaWYgKG1fZXZpY3RlZFRyYW5zZmVyQnVmZmVyc1tpXSAhPSAtMSkgeworICAgICAg
ICAgICAgICAgIEV4dGVuc2lvbnMzRENocm9taXVtKiBleHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8
RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihhbGxvY2F0b3ItPmNvbnRleHQoKS0+Z2V0RXh0ZW5zaW9u
cygpKTsKKyAgICAgICAgICAgICAgICBncHU6OmdsZXMyOjpHTEVTMkNtZEhlbHBlciogaGVscGVy
ID0gc3RhdGljX2Nhc3Q8Z3B1OjpnbGVzMjo6R0xFUzJDbWRIZWxwZXIqPihleHRlbnNpb25zLT5o
ZWxwZXIoKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGhlbHBlcik7CisgICAgICAgICAgICAg
ICAgZ3B1OjpDb21tYW5kQnVmZmVyKiBjbWRCdWYgPSBoZWxwZXItPmNvbW1hbmRfYnVmZmVyKCk7
CisgICAgICAgICAgICAgICAgY21kQnVmLT5EZXN0cm95VHJhbnNmZXJCdWZmZXIobV9ldmljdGVk
VHJhbnNmZXJCdWZmZXJzW2ldKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KKwog
ICAgIG1fZXZpY3RlZFRleHR1cmVzLmNsZWFyKCk7CisgICAgbV9ldmljdGVkVHJhbnNmZXJCdWZm
ZXJzLmNsZWFyKCk7CiB9CiAKIHZvaWQgVGV4dHVyZU1hbmFnZXI6OmV2aWN0QW5kRGVsZXRlQWxs
VGV4dHVyZXMoVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQpAQCAtMjQ0LDYgKzI5MSw3IEBA
IHZvaWQgVGV4dHVyZU1hbmFnZXI6OnJlbW92ZVRleHR1cmUoVGV4dHVyZVRva2VuIHRva2VuLCBU
ZXh0dXJlSW5mbyBpbmZvKQogewogICAgIEFTU0VSVChtX3RleHR1cmVMUlVTZXQuY29udGFpbnMo
dG9rZW4pKTsKICAgICBBU1NFUlQobV90ZXh0dXJlcy5jb250YWlucyh0b2tlbikpOworICAgIEFT
U0VSVCghaW5mby5idWZmZXIpOwogICAgIG1fbWVtb3J5VXNlQnl0ZXMgLT0gbWVtb3J5VXNlQnl0
ZXMoaW5mby5zaXplLCBpbmZvLmZvcm1hdCk7CiAgICAgbV90ZXh0dXJlcy5yZW1vdmUodG9rZW4p
OwogICAgIEFTU0VSVChtX3RleHR1cmVMUlVTZXQuY29udGFpbnModG9rZW4pKTsKQEAgLTI3MCw2
ICszMTgsNyBAQCB1bnNpZ25lZCBUZXh0dXJlTWFuYWdlcjo6YWxsb2NhdGVUZXh0dXJlKFRleHR1
cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgVGV4dHVyZVRvawogI2lmbmRlZiBOREVCVUcKICAgICBp
bmZvLT5hbGxvY2F0b3IgPSBhbGxvY2F0b3I7CiAjZW5kaWYKKwogICAgIHJldHVybiB0ZXh0dXJl
SWQ7CiB9CiAKQEAgLTI5Nyw2ICszNDYsNyBAQCBib29sIFRleHR1cmVNYW5hZ2VyOjpyZXF1ZXN0
VGV4dHVyZShUZXh0dXJlVG9rZW4gdG9rZW4sIEludFNpemUgc2l6ZSwgdW5zaWduZWQgZgogICAg
IGluZm8uZm9ybWF0ID0gZm9ybWF0OwogICAgIGluZm8udGV4dHVyZUlkID0gMDsKICAgICBpbmZv
LmlzUHJvdGVjdGVkID0gdHJ1ZTsKKyAgICBpbmZvLmJ1ZmZlciA9IDA7CiAjaWZuZGVmIE5ERUJV
RwogICAgIGluZm8uYWxsb2NhdG9yID0gMDsKICNlbmRpZgpAQCAtMzA0LDYgKzM1NCwxMDQgQEAg
Ym9vbCBUZXh0dXJlTWFuYWdlcjo6cmVxdWVzdFRleHR1cmUoVGV4dHVyZVRva2VuIHRva2VuLCBJ
bnRTaXplIHNpemUsIHVuc2lnbmVkIGYKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorVHJhbnNmZXJC
dWZmZXJUb2tlbiBUZXh0dXJlTWFuYWdlcjo6Z2V0VHJhbnNmZXJCdWZmZXJUb2tlbigpCit7Cisg
ICAgcmV0dXJuIG1fbmV4dFRyYW5zZmVyQnVmZmVyVG9rZW4rKzsKK30KKwordm9pZCBUZXh0dXJl
TWFuYWdlcjo6YWRkVHJhbnNmZXJCdWZmZXIoVHJhbnNmZXJCdWZmZXJUb2tlbiB0b2tlbiwgVHJh
bnNmZXJCdWZmZXJJbmZvIGluZm8pCit7CisgICAgQVNTRVJUKCFtX3RyYW5zZmVyQnVmZmVycy5j
b250YWlucyh0b2tlbikpOworICAgIG1fdHJhbnNmZXJCdWZmZXJNZW1vcnlVc2VCeXRlcyArPSBp
bmZvLnNpemU7CisgICAgbV90cmFuc2ZlckJ1ZmZlcnMuc2V0KHRva2VuLCBpbmZvKTsKK30KKwor
dm9pZCBUZXh0dXJlTWFuYWdlcjo6cmVtb3ZlVHJhbnNmZXJCdWZmZXIoVHJhbnNmZXJCdWZmZXJU
b2tlbiB0b2tlbiwgVHJhbnNmZXJCdWZmZXJJbmZvIGluZm8pCit7CisgICAgQVNTRVJUKG1fdGV4
dHVyZXMuY29udGFpbnModG9rZW4pKTsKKyAgICBBU1NFUlQoaW5mby5zaG1JZCAhPSAtMSk7Cisg
ICAgY29tbWFuZEJ1ZmZlcigpLT5EZXN0cm95VHJhbnNmZXJCdWZmZXIoaW5mby5zaG1JZCk7Cisg
ICAgbV90cmFuc2ZlckJ1ZmZlck1lbW9yeVVzZUJ5dGVzIC09IGluZm8uc2l6ZTsKKyAgICBtX3Ry
YW5zZmVyQnVmZmVycy5yZW1vdmUodG9rZW4pOworICAgIG1fZXZpY3RlZFRyYW5zZmVyQnVmZmVy
cy5hcHBlbmQoaW5mby5yZWdpc3RlcmVkU2htSWQpOworfQorCit2b2lkIFRleHR1cmVNYW5hZ2Vy
OjpldmljdFRyYW5zZmVyQnVmZmVyKFRyYW5zZmVyQnVmZmVyVG9rZW4gdG9rZW4sIFRyYW5zZmVy
QnVmZmVySW5mbyBpbmZvKQoreworICAgIFRSQUNFX0VWRU5UKCJUZXh0dXJlTWFuYWdlcjo6ZXZp
Y3RUcmFuc2ZlckJ1ZmZlciIsIHRoaXMsIDApOworICAgIHJlbW92ZVRyYW5zZmVyQnVmZmVyKHRv
a2VuLCBpbmZvKTsKK30KKwordm9pZCogVGV4dHVyZU1hbmFnZXI6Om1hcFRyYW5zZmVyQnVmZmVy
KFRleHR1cmVUb2tlbiB0b2tlbikKK3sKKyAgICBUZXh0dXJlTWFwOjppdGVyYXRvciB0ZXh0dXJl
SXQgPSBtX3RleHR1cmVzLmZpbmQodG9rZW4pOworICAgIEFTU0VSVCh0ZXh0dXJlSXQgIT0gbV90
ZXh0dXJlcy5lbmQoKSk7CisgICAgVGV4dHVyZUluZm8qIGluZm8gPSAmdGV4dHVyZUl0LmdldCgp
LT5zZWNvbmQ7CisgICAgQVNTRVJUKGluZm8tPmlzUHJvdGVjdGVkKTsKKyAgICBBU1NFUlQoIWlu
Zm8tPmJ1ZmZlcik7CisgICAgaW50IHNobUlkID0gLTE7CisKKyAgICBzaXplX3QgYnl0ZXMgPSBt
ZW1vcnlVc2VCeXRlcyhpbmZvLT5zaXplLCBpbmZvLT5mb3JtYXQpOworICAgIGZvciAoVHJhbnNm
ZXJCdWZmZXJNYXA6Oml0ZXJhdG9yIGl0ID0gbV90cmFuc2ZlckJ1ZmZlcnMuYmVnaW4oKTsgaXQg
IT0gbV90cmFuc2ZlckJ1ZmZlcnMuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgaWYgKGl0LT5zZWNv
bmQuaXNQcm90ZWN0ZWQpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKGl0LT5z
ZWNvbmQuc2l6ZSAhPSBieXRlcykKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAo
aXQtPnNlY29uZC5mZW5jZSA+IG1fbGFzdFRva2VuUmVhZCkKKyAgICAgICAgICAgIGNvbnRpbnVl
OworCisgICAgICAgIEFTU0VSVChpdC0+c2Vjb25kLnNobUlkICE9IC0xKTsKKyAgICAgICAgc2ht
SWQgPSBpdC0+c2Vjb25kLnNobUlkOworICAgICAgICBpdC0+c2Vjb25kLmlzUHJvdGVjdGVkID0g
dHJ1ZTsKKyAgICAgICAgaW5mby0+YnVmZmVyID0gaXQtPmZpcnN0OworICAgICAgICBicmVhazsK
KyAgICB9CisKKyAgICBpZiAoIWluZm8tPmJ1ZmZlcikgeworICAgICAgICBzaG1JZCA9IGNvbW1h
bmRCdWZmZXIoKS0+Q3JlYXRlVHJhbnNmZXJCdWZmZXIoYnl0ZXMsIC0xKTsKKyAgICAgICAgVHJh
bnNmZXJCdWZmZXJJbmZvIGJ1ZmZlcjsKKyAgICAgICAgYnVmZmVyLnNpemUgPSBieXRlczsKKyAg
ICAgICAgYnVmZmVyLnNobUlkID0gc2htSWQ7CisgICAgICAgIGJ1ZmZlci5yZWdpc3RlcmVkU2ht
SWQgPSAtMTsKKyAgICAgICAgYnVmZmVyLmZlbmNlID0gMDsKKyAgICAgICAgYnVmZmVyLmlzUHJv
dGVjdGVkID0gdHJ1ZTsKKyAgICAgICAgaW5mby0+YnVmZmVyID0gZ2V0VHJhbnNmZXJCdWZmZXJU
b2tlbigpOworICAgICAgICBhZGRUcmFuc2ZlckJ1ZmZlcihpbmZvLT5idWZmZXIsIGJ1ZmZlcik7
CisgICAgfQorCisgICAgZ3B1OjpCdWZmZXIgYnVmZmVyID0gY29tbWFuZEJ1ZmZlcigpLT5HZXRU
cmFuc2ZlckJ1ZmZlcihzaG1JZCk7CisgICAgcmV0dXJuIGJ1ZmZlci5wdHI7Cit9CisKK3ZvaWQg
VGV4dHVyZU1hbmFnZXI6OnRleFN1YkltYWdlMkRUcmFuc2ZlckJ1ZmZlcihHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsIFRleHR1cmVUb2tlbiB0b2tl
bikKK3sKKyAgICBUZXh0dXJlTWFwOjppdGVyYXRvciB0ZXh0dXJlSXQgPSBtX3RleHR1cmVzLmZp
bmQodG9rZW4pOworICAgIEFTU0VSVCh0ZXh0dXJlSXQgIT0gbV90ZXh0dXJlcy5lbmQoKSk7Cisg
ICAgVGV4dHVyZUluZm8qIHRleHR1cmVJbmZvID0gJnRleHR1cmVJdC5nZXQoKS0+c2Vjb25kOwor
ICAgIEFTU0VSVCh0ZXh0dXJlSW5mby0+YnVmZmVyKTsKKworICAgIFRyYW5zZmVyQnVmZmVyTWFw
OjppdGVyYXRvciBpdCA9IG1fdHJhbnNmZXJCdWZmZXJzLmZpbmQodGV4dHVyZUluZm8tPmJ1ZmZl
cik7CisgICAgQVNTRVJUKGl0ICE9IG1fdHJhbnNmZXJCdWZmZXJzLmVuZCgpKTsKKyAgICBUcmFu
c2ZlckJ1ZmZlckluZm8qIGluZm8gPSAmaXQuZ2V0KCktPnNlY29uZDsKKyAgICBBU1NFUlQoaW5m
by0+aXNQcm90ZWN0ZWQpOworCisgICAgRXh0ZW5zaW9uczNEQ2hyb21pdW0qIGV4dGVuc2lvbnMg
PSBzdGF0aWNfY2FzdDxFeHRlbnNpb25zM0RDaHJvbWl1bSo+KGNvbnRleHQtPmdldEV4dGVuc2lv
bnMoKSk7CisgICAgZ3B1OjpnbGVzMjo6R0xFUzJDbWRIZWxwZXIqIGhlbHBlciA9IHN0YXRpY19j
YXN0PGdwdTo6Z2xlczI6OkdMRVMyQ21kSGVscGVyKj4oZXh0ZW5zaW9ucy0+aGVscGVyKCkpOwor
ICAgIEFTU0VSVChoZWxwZXIpOworICAgIGdwdTo6Q29tbWFuZEJ1ZmZlciogY21kQnVmID0gaGVs
cGVyLT5jb21tYW5kX2J1ZmZlcigpOworCisgICAgaWYgKGluZm8tPnJlZ2lzdGVyZWRTaG1JZCA9
PSAtMSkgeworICAgICAgICBncHU6OkJ1ZmZlciBidWZmZXIgPSBjb21tYW5kQnVmZmVyKCktPkdl
dFRyYW5zZmVyQnVmZmVyKGluZm8tPnNobUlkKTsKKyAgICAgICAgaW5mby0+cmVnaXN0ZXJlZFNo
bUlkID0gY21kQnVmLT5SZWdpc3RlclRyYW5zZmVyQnVmZmVyKGJ1ZmZlci5zaGFyZWRfbWVtb3J5
LCBpbmZvLT5zaXplLCAtMSk7CisgICAgfQorCisgICAgaGVscGVyLT5UZXhTdWJJbWFnZTJEKEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCBkZXN0UmVjdC54KCksIGRlc3RSZWN0Lnko
KSwgZGVzdFJlY3Qud2lkdGgoKSwgZGVzdFJlY3QuaGVpZ2h0KCksIHRleHR1cmVJbmZvLT5mb3Jt
YXQsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBpbmZvLT5yZWdpc3RlcmVkU2ht
SWQsIDAsIEZBTFNFKTsKKworICAgIGluZm8tPmZlbmNlID0gaGVscGVyLT5JbnNlcnRUb2tlbigp
OworICAgIGluZm8tPmlzUHJvdGVjdGVkID0gZmFsc2U7CisgICAgdGV4dHVyZUluZm8tPmJ1ZmZl
ciA9IDA7Cit9CisKIH0KIAogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rl
eHR1cmVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9UZXh0dXJlTWFuYWdlci5oCmluZGV4IGU0ZDZkMzguLmQ4ZTdjNTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1h
bmFnZXIuaApAQCAtMzksMTIgKzM5LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
TWFuYWdlZFRleHR1cmU7CiB0eXBlZGVmIGludCBUZXh0dXJlVG9rZW47Cit0eXBlZGVmIGludCBU
cmFuc2ZlckJ1ZmZlclRva2VuOwogCiBjbGFzcyBUZXh0dXJlQWxsb2NhdG9yIHsKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHVuc2lnbmVkIGNyZWF0ZVRleHR1cmUoY29uc3QgSW50U2l6ZSYsIEdDM0Rl
bnVtIGZvcm1hdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVUZXh0dXJlKHVuc2lnbmVk
IHRleHR1cmUsIGNvbnN0IEludFNpemUmLCBHQzNEZW51bSkgPSAwOwogCisgICAgdmlydHVhbCBH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCgpIHsgcmV0dXJuIDA7IH0KKwogcHJvdGVjdGVkOgog
ICAgIHZpcnR1YWwgflRleHR1cmVBbGxvY2F0b3IoKSB7IH0KIH07CkBAIC05NCw2ICs5NywxMCBA
QCBwdWJsaWM6CiAgICAgdm9pZCByZWR1Y2VNZW1vcnlUb0xpbWl0KHNpemVfdCk7CiAgICAgc2l6
ZV90IGN1cnJlbnRNZW1vcnlVc2VCeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fbWVtb3J5VXNlQnl0
ZXM7IH0KIAorICAgIHZvaWQqIG1hcFRyYW5zZmVyQnVmZmVyKFRleHR1cmVUb2tlbik7CisgICAg
dm9pZCB0ZXhTdWJJbWFnZTJEVHJhbnNmZXJCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0QqLCBjb25z
dCBJbnRSZWN0JiBkZXN0UmVjdCwgVGV4dHVyZVRva2VuKTsKKyAgICB2b2lkIHNldExhc3RUb2tl
blJlYWQoaW50IGxhc3RUb2tlblJlYWQpIHsgbV9sYXN0VG9rZW5SZWFkID0gbGFzdFRva2VuUmVh
ZDsgfQorCiBwcml2YXRlOgogICAgIFRleHR1cmVNYW5hZ2VyKHNpemVfdCBtYXhNZW1vcnlMaW1p
dEJ5dGVzLCBzaXplX3QgcHJlZmVycmVkTWVtb3J5TGltaXRCeXRlcywgaW50IG1heFRleHR1cmVT
aXplKTsKIApAQCAtMTAyLDYgKzEwOSw3IEBAIHByaXZhdGU6CiAgICAgICAgIEdDM0RlbnVtIGZv
cm1hdDsKICAgICAgICAgdW5zaWduZWQgdGV4dHVyZUlkOwogICAgICAgICBib29sIGlzUHJvdGVj
dGVkOworICAgICAgICBUcmFuc2ZlckJ1ZmZlclRva2VuIGJ1ZmZlcjsKICNpZm5kZWYgTkRFQlVH
CiAgICAgICAgIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcjsKICNlbmRpZgpAQCAtMTMzLDYg
KzE0MSwyNyBAQCBwcml2YXRlOgogICAgIH07CiAKICAgICBWZWN0b3I8RXZpY3Rpb25FbnRyeT4g
bV9ldmljdGVkVGV4dHVyZXM7CisKKyAgICBzdHJ1Y3QgVHJhbnNmZXJCdWZmZXJJbmZvIHsKKyAg
ICAgICAgc2l6ZV90IHNpemU7CisgICAgICAgIGludCBzaG1JZDsKKyAgICAgICAgaW50IHJlZ2lz
dGVyZWRTaG1JZDsKKyAgICAgICAgaW50IGZlbmNlOworICAgICAgICBib29sIGlzUHJvdGVjdGVk
OworICAgIH07CisKKyAgICBUcmFuc2ZlckJ1ZmZlclRva2VuIGdldFRyYW5zZmVyQnVmZmVyVG9r
ZW4oKTsKKworICAgIHZvaWQgYWRkVHJhbnNmZXJCdWZmZXIoVHJhbnNmZXJCdWZmZXJUb2tlbiwg
VHJhbnNmZXJCdWZmZXJJbmZvKTsKKyAgICB2b2lkIHJlbW92ZVRyYW5zZmVyQnVmZmVyKFRyYW5z
ZmVyQnVmZmVyVG9rZW4sIFRyYW5zZmVyQnVmZmVySW5mbyk7CisgICAgdm9pZCBldmljdFRyYW5z
ZmVyQnVmZmVyKFRyYW5zZmVyQnVmZmVyVG9rZW4sIFRyYW5zZmVyQnVmZmVySW5mbyk7CisKKyAg
ICB0eXBlZGVmIEhhc2hNYXA8VHJhbnNmZXJCdWZmZXJUb2tlbiwgVHJhbnNmZXJCdWZmZXJJbmZv
PiBUcmFuc2ZlckJ1ZmZlck1hcDsKKyAgICBUcmFuc2ZlckJ1ZmZlck1hcCBtX3RyYW5zZmVyQnVm
ZmVyczsKKyAgICBWZWN0b3I8aW50PiBtX2V2aWN0ZWRUcmFuc2ZlckJ1ZmZlcnM7CisgICAgVHJh
bnNmZXJCdWZmZXJUb2tlbiBtX25leHRUcmFuc2ZlckJ1ZmZlclRva2VuOworICAgIGludCBtX2xh
c3RUb2tlblJlYWQ7CisgICAgc2l6ZV90IG1fdHJhbnNmZXJCdWZmZXJNZW1vcnlVc2VCeXRlczsK
IH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1RyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmgKaW5kZXggYThh
NTQ5Mi4uOTY1OGQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmgK
QEAgLTUwLDYgKzUwLDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0VGV4dHVyZVVzYWdlSGludChU
ZXh0dXJlVXNhZ2VIaW50IGhpbnQpIHsgbV90ZXh0dXJlVXNhZ2VIaW50ID0gaGludDsgfQogICAg
IHZvaWQgc2V0VXNlVGV4dHVyZVN0b3JhZ2VFeHQoYm9vbCB1c2VTdG9yYWdlRXh0KSB7IG1fdXNl
VGV4dHVyZVN0b3JhZ2VFeHQgPSB1c2VTdG9yYWdlRXh0OyB9CiAKKyAgICB2aXJ0dWFsIEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0KCkgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CisKIHBy
b3RlY3RlZDoKICAgICBleHBsaWNpdCBUcmFja2luZ1RleHR1cmVBbGxvY2F0b3IoUGFzc1JlZlB0
cjxHcmFwaGljc0NvbnRleHQzRD4pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcApp
bmRleCBlNDYyZTUzLi40YTI3MTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAK
QEAgLTM2OSw3ICszNjksNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6Y29tcG9zaXRlKCkKICAg
ICBzdGF0aWNfY2FzdDxDQ1NpbmdsZVRocmVhZFByb3h5Kj4obV9wcm94eS5nZXQoKSktPmNvbXBv
c2l0ZUltbWVkaWF0ZWx5KCk7CiB9CiAKLWJvb2wgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXll
cnMoKQorYm9vbCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyhpbnQgbGFzdFRva2VuUmVh
ZCkKIHsKICAgICBpZiAoIW1fbGF5ZXJSZW5kZXJlckluaXRpYWxpemVkKSB7CiAgICAgICAgIGlu
aXRpYWxpemVMYXllclJlbmRlcmVyKCk7CkBAIC0zODQsMTEgKzM4NCwxMSBAQCBib29sIENDTGF5
ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKCkKICAgICBpZiAodmlld3BvcnRTaXplKCkuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIHVwZGF0ZUxheWVycyhyb290TGF5ZXIo
KSk7CisgICAgdXBkYXRlTGF5ZXJzKHJvb3RMYXllcigpLCBsYXN0VG9rZW5SZWFkKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyhMYXll
ckNocm9taXVtKiByb290TGF5ZXIpCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJz
KExheWVyQ2hyb21pdW0qIHJvb3RMYXllciwgaW50IGxhc3RUb2tlblJlYWQpCiB7CiAgICAgVFJB
Q0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzIiwgdGhpcywgMCk7CiAKQEAg
LTQxNiw2ICs0MTYsOSBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKExheWVy
Q2hyb21pdW0qIHJvb3RMYXllcikKICAgICAvLyBSZXNldCBwYXJ0aWFsIHRleHR1cmUgdXBkYXRl
IHJlcXVlc3RzLgogICAgIG1fcGFydGlhbFRleHR1cmVVcGRhdGVSZXF1ZXN0cyA9IDA7CiAKKyAg
ICAvLyBSZWxlYXNlIHRyYW5zZmVyIGJ1ZmZlcnMgdXNlZCBmb3IgdGV4dHVyZSB1cGxvYWRzLgor
ICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdlci0+c2V0TGFzdFRva2VuUmVhZChsYXN0VG9rZW5S
ZWFkKTsKKwogICAgIHJlc2VydmVUZXh0dXJlcygpOwogCiAgICAgcGFpbnRMYXllckNvbnRlbnRz
KG1fdXBkYXRlTGlzdCwgUGFpbnRWaXNpYmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgK
aW5kZXggZjVlMTEzNC4uZGQzNjdjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKQEAg
LTE4Myw3ICsxODMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRIYXZlV2hlZWxFdmVudEhhbmRs
ZXJzKGJvb2wpOwogCiAgICAgLy8gUmV0dXJucyBmYWxzZSBpZiB3ZSBzaG91bGQgYWJvcnQgdGhp
cyBmcmFtZSBkdWUgdG8gaW5pdGlhbGl6YXRpb24gZmFpbHVyZS4KLSAgICBib29sIHVwZGF0ZUxh
eWVycygpOworICAgIGJvb2wgdXBkYXRlTGF5ZXJzKGludCBsYXN0VG9rZW5SZWFkKTsKIAogICAg
IHZvaWQgc3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50U2l6ZSYgdGFyZ2V0UG9zaXRp
b24sIGJvb2wgdXNlQW5jaG9yLCBmbG9hdCBzY2FsZSwgZG91YmxlIGR1cmF0aW9uU2VjKTsKIApA
QCAtMjEwLDcgKzIxMCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYWludExheWVyQ29udGVudHMo
Y29uc3QgTGF5ZXJMaXN0JiwgUGFpbnRUeXBlKTsKICAgICB2b2lkIHBhaW50TWFza0FuZFJlcGxp
Y2FGb3JSZW5kZXJTdXJmYWNlKExheWVyQ2hyb21pdW0qLCBQYWludFR5cGUpOwogCi0gICAgdm9p
ZCB1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSopOworICAgIHZvaWQgdXBkYXRlTGF5ZXJzKExh
eWVyQ2hyb21pdW0qLCBpbnQgbGFzdFRva2VuUmVhZCk7CiAgICAgLy8gUHJlLXJlc2VydmUgdGV4
dHVyZXMgZm9yIGFueSBsYXllciBtYXJrZWQgImFsd2F5cyByZXNlcnZlIHRleHR1cmVzIgogICAg
IHZvaWQgcmVzZXJ2ZVRleHR1cmVzKCk7CiAgICAgdm9pZCBjbGVhclBlbmRpbmdVcGRhdGUoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKaW5kZXggMTdhNjk1OS4uNTdi
NWU0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKQEAgLTI2LDYg
KzI2LDcgQEAKIAogI2luY2x1ZGUgImNjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCIKIAorI2luY2x1
ZGUgIkV4dGVuc2lvbnMzRENocm9taXVtLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0Qu
aCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJUcmFjZUV2
ZW50LmgiCkBAIC0zMyw2ICszNCw5IEBACiAjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5o
IgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogCisjdW5kZWYgTE9HCisjaW5jbHVkZSAi
Z3B1L2NvbW1hbmRfYnVmZmVyL2NsaWVudC9nbGVzMl9pbXBsZW1lbnRhdGlvbi5oIgorCiB1c2lu
ZyBuYW1lc3BhY2Ugc3RkOwogdXNpbmcgbmFtZXNwYWNlIFdURjsKIApAQCAtMjk4LDcgKzMwMiwx
MSBAQCBib29sIENDU2luZ2xlVGhyZWFkUHJveHk6OmNvbW1pdElmTmVlZGVkKCkKIHsKICAgICBB
U1NFUlQoQ0NQcm94eTo6aXNNYWluVGhyZWFkKCkpOwogCi0gICAgaWYgKCFtX2xheWVyVHJlZUhv
c3QtPnVwZGF0ZUxheWVycygpKQorICAgIEV4dGVuc2lvbnMzRENocm9taXVtKiBleHRlbnNpb25z
ID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihjb250ZXh0KCktPmdldEV4dGVu
c2lvbnMoKSk7CisgICAgZ3B1OjpnbGVzMjo6R0xFUzJDbWRIZWxwZXIqIGhlbHBlciA9IHN0YXRp
Y19jYXN0PGdwdTo6Z2xlczI6OkdMRVMyQ21kSGVscGVyKj4oZXh0ZW5zaW9ucy0+aGVscGVyKCkp
OworICAgIGludCBsYXN0VG9rZW5SZWFkID0gaGVscGVyLT5sYXN0X3Rva2VuX3JlYWQoKTsKKwor
ICAgIGlmICghbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMobGFzdFRva2VuUmVhZCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGRvQ29tbWl0KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFk
UHJveHkuY3BwCmluZGV4IDNlYTcyZTIuLjRlZDdkZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJv
eHkuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAKICNpbmNsdWRlICJjYy9DQ1RocmVhZFByb3h5Lmgi
CiAKKyNpbmNsdWRlICJFeHRlbnNpb25zM0RDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dDNELmgiCiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgogI2luY2x1ZGUgImNjL0NDRGVs
YXlCYXNlZFRpbWVTb3VyY2UuaCIKQEAgLTM5LDYgKzQwLDkgQEAKICNpbmNsdWRlIDx3dGYvQ3Vy
cmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCisjdW5kZWYgTE9HCisj
aW5jbHVkZSAiZ3B1L2NvbW1hbmRfYnVmZmVyL2NsaWVudC9nbGVzMl9pbXBsZW1lbnRhdGlvbi5o
IgorCiB1c2luZyBuYW1lc3BhY2UgV1RGOwogCiBuYW1lc3BhY2UgewpAQCAtMzU2LDYgKzM2MCwx
MCBAQCBQYXNzT3duUHRyPENDVGhyZWFkOjpUYXNrPiBDQ1RocmVhZFByb3h5OjpjcmVhdGVCZWdp
bkZyYW1lQW5kQ29tbWl0VGFza09uSW1wbFRocgogICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7
CiAgICAgZG91YmxlIGZyYW1lQmVnaW5UaW1lID0gY3VycmVudFRpbWUoKTsKIAorICAgIEV4dGVu
c2lvbnMzRENocm9taXVtKiBleHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hy
b21pdW0qPihtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCktPmdldEV4dGVuc2lvbnMoKSk7
CisgICAgZ3B1OjpnbGVzMjo6R0xFUzJDbWRIZWxwZXIqIGhlbHBlciA9IHN0YXRpY19jYXN0PGdw
dTo6Z2xlczI6OkdMRVMyQ21kSGVscGVyKj4oZXh0ZW5zaW9ucy0+aGVscGVyKCkpOworICAgIGlu
dCBsYXN0VG9rZW5SZWFkID0gaGVscGVyLT5sYXN0X3Rva2VuX3JlYWQoKTsKKwogICAgIC8vIE5P
VEUsIGl0IGlzIHBvc3NpYmxlIHRvIHJlY2VpZXZlIGEgcmVxdWVzdCBmb3IgYQogICAgIC8vIGJl
Z2luRnJhbWVBbmRDb21taXRPbkltcGxUaHJlYWQgZnJvbSBmaW5pc2hBbGxSZW5kZXJpbmcgd2hp
bGUgYQogICAgIC8vIGJlZ2luRnJhbWVBbmRDb21taXRPbkltcGxUaHJlYWQgaXMgZW5xdWV1ZWQu
IFNpbmNlIENDVGhyZWFkIGRvZXNuJ3QKQEAgLTM2OCwxMCArMzc2LDEwIEBAIFBhc3NPd25QdHI8
Q0NUaHJlYWQ6OlRhc2s+IENDVGhyZWFkUHJveHk6OmNyZWF0ZUJlZ2luRnJhbWVBbmRDb21taXRU
YXNrT25JbXBsVGhyCiAgICAgaW50IHRoaXNUYXNrU2VxdWVuY2VOdW1iZXIgPSBtX251bUJlZ2lu
RnJhbWVBbmRDb21taXRzSXNzdWVkT25JbXBsVGhyZWFkOwogICAgIG1fbnVtQmVnaW5GcmFtZUFu
ZENvbW1pdHNJc3N1ZWRPbkltcGxUaHJlYWQrKzsKICAgICBPd25QdHI8Q0NTY3JvbGxBbmRTY2Fs
ZVNldD4gc2Nyb2xsSW5mbyA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPnByb2Nlc3NTY3JvbGxEZWx0
YXMoKTsKLSAgICByZXR1cm4gY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5
OjpiZWdpbkZyYW1lQW5kQ29tbWl0LCB0aGlzVGFza1NlcXVlbmNlTnVtYmVyLCBmcmFtZUJlZ2lu
VGltZSwgc2Nyb2xsSW5mby5yZWxlYXNlKCkpOworICAgIHJldHVybiBjcmVhdGVDQ1RocmVhZFRh
c2sodGhpcywgJkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRDb21taXQsIHRoaXNUYXNrU2Vx
dWVuY2VOdW1iZXIsIGZyYW1lQmVnaW5UaW1lLCBzY3JvbGxJbmZvLnJlbGVhc2UoKSwgbGFzdFRv
a2VuUmVhZCk7CiB9CiAKLXZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUFuZENvbW1pdChp
bnQgc2VxdWVuY2VOdW1iZXIsIGRvdWJsZSBmcmFtZUJlZ2luVGltZSwgUGFzc093blB0cjxDQ1Nj
cm9sbEFuZFNjYWxlU2V0PiBzY3JvbGxJbmZvKQordm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZy
YW1lQW5kQ29tbWl0KGludCBzZXF1ZW5jZU51bWJlciwgZG91YmxlIGZyYW1lQmVnaW5UaW1lLCBQ
YXNzT3duUHRyPENDU2Nyb2xsQW5kU2NhbGVTZXQ+IHNjcm9sbEluZm8sIGludCBsYXN0VG9rZW5S
ZWFkKQogewogICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQW5kQ29t
bWl0IiwgdGhpcywgMCk7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKQEAgLTQxMyw3ICs0
MjEsNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRDb21taXQoaW50IHNlcXVl
bmNlTnVtYmVyLCBkb3VibGUgZnJhbWVCZWdpblRpbQogICAgIC8vIHVwZGF0ZUxheWVycy4KICAg
ICBtX2NvbW1pdFJlcXVlc3RlZCA9IGZhbHNlOwogCi0gICAgaWYgKCFtX2xheWVyVHJlZUhvc3Qt
PnVwZGF0ZUxheWVycygpKQorICAgIGlmICghbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMo
bGFzdFRva2VuUmVhZCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEJlZm9yZSBhcHBseWlu
ZyBzY3JvbGxzIGFuZCBjYWxsaW5nIGFuaW1hdGUsIHdlIHNldCBtX2FuaW1hdGVSZXF1ZXN0ZWQg
dG8gZmFsc2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKaW5kZXggMjNjMjlmNC4uZGRhYjAyOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaApAQCAtODMsNyArODMsNyBAQCBwcml2YXRlOgogICAg
IGV4cGxpY2l0IENDVGhyZWFkUHJveHkoQ0NMYXllclRyZWVIb3N0Kik7CiAKICAgICAvLyBDYWxs
ZWQgb24gbWFpbiB0aHJlYWQKLSAgICB2b2lkIGJlZ2luRnJhbWVBbmRDb21taXQoaW50IHNlcXVl
bmNlTnVtYmVyLCBkb3VibGUgZnJhbWVCZWdpblRpbWUsIFBhc3NPd25QdHI8Q0NTY3JvbGxBbmRT
Y2FsZVNldD4pOworICAgIHZvaWQgYmVnaW5GcmFtZUFuZENvbW1pdChpbnQgc2VxdWVuY2VOdW1i
ZXIsIGRvdWJsZSBmcmFtZUJlZ2luVGltZSwgUGFzc093blB0cjxDQ1Njcm9sbEFuZFNjYWxlU2V0
PiwgaW50IGxhc3RUb2tlblJlYWQpOwogICAgIHZvaWQgZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCk7
CiAgICAgdm9pZCBkaWRDb21wbGV0ZVN3YXBCdWZmZXJzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkdyYXBoaWNzQ29udGV4dDNELmgg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJHcmFwaGljc0NvbnRl
eHQzRC5oCmluZGV4IGYxM2Y3YzQuLjNhZjc2YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkdyYXBoaWNzQ29udGV4dDNELmgKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViR3JhcGhpY3NDb250ZXh0M0Qu
aApAQCAtNDA0LDYgKzQwNCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdGV4U3RvcmFn
ZTJERVhUKFdHQzNEZW51bSB0YXJnZXQsIFdHQzNEaW50IGxldmVscywgV0dDM0R1aW50IGludGVy
bmFsZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0dDM0RpbnQgd2lk
dGgsIFdHQzNEaW50IGhlaWdodCkgeyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQqIGhlbHBlcigpID0g
MDsKIAogI2lmIFdFQktJVF9VU0lOR19TS0lBCiAgICAgR3JHTEludGVyZmFjZSogY3JlYXRlR3JH
TEludGVyZmFjZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRXh0
ZW5zaW9uczNEQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRXh0ZW5z
aW9uczNEQ2hyb21pdW0uY3BwCmluZGV4IDczMzk3YmQuLjVlNmQ5ZmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0V4dGVuc2lvbnMzRENocm9taXVtLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FeHRlbnNpb25zM0RDaHJvbWl1bS5jcHAKQEAgLTE2
MCw2ICsxNjAsMTEgQEAgdm9pZCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6dGV4U3RvcmFnZTJERVhU
KHVuc2lnbmVkIGludCB0YXJnZXQsIGludCBsZXZlbHMsIHVuc2kKICAgICBtX3ByaXZhdGUtPnRl
eFN0b3JhZ2UyREVYVCh0YXJnZXQsIGxldmVscywgaW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWln
aHQpOwogfQogCit2b2lkKiBFeHRlbnNpb25zM0RDaHJvbWl1bTo6aGVscGVyKCkKK3sKKyAgICBy
ZXR1cm4gbV9wcml2YXRlLT5oZWxwZXIoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcAppbmRleCBhMWRlYjIzLi40
NTVmM2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0Nv
bnRleHQzRENocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFw
aGljc0NvbnRleHQzRENocm9taXVtLmNwcApAQCAtOTExLDYgKzkxMSwxMSBAQCBERUxFR0FURV9U
T19JTVBMXzFSKGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSwgUGxhdGZvcm0zRE9iamVj
dCwgU3RyaW5nKQogREVMRUdBVEVfVE9fSU1QTF81KHRleEltYWdlSU9TdXJmYWNlMkRDSFJPTUlV
TSwgR0MzRGVudW0sIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0R1aW50LCBHQzNEdWludCkKIERFTEVH
QVRFX1RPX0lNUExfNSh0ZXhTdG9yYWdlMkRFWFQsIEdDM0RlbnVtLCBHQzNEaW50LCBHQzNEdWlu
dCwgR0MzRGludCwgR0MzRGludCkKIAordm9pZCogR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpo
ZWxwZXIoKQoreworICAgIHJldHVybiBtX2ltcGwtPmhlbHBlcigpOworfQorCiAvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KIC8vIEdyYXBoaWNzQ29udGV4dDNECiAvLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaAppbmRleCBjNmM3ZDdmLi45
OTQ0YWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0Nv
bnRleHQzRFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGlj
c0NvbnRleHQzRFByaXZhdGUuaApAQCAtMzIxLDYgKzMyMSw4IEBAIHB1YmxpYzoKICAgICAvLyBH
TF9FWFRfdGV4dHVyZV9zdG9yYWdlCiAgICAgdm9pZCB0ZXhTdG9yYWdlMkRFWFQoR0MzRGVudW0g
dGFyZ2V0LCBHQzNEaW50IGxldmVscywgR0MzRHVpbnQgaW50ZXJuYWxmb3JtYXQsIEdDM0RpbnQg
d2lkdGgsIEdDM0RpbnQgaGVpZ2h0KTsKIAorICAgIHZvaWQqIGhlbHBlcigpOworCiBwcml2YXRl
OgogICAgIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZShXZWJLaXQ6OldlYlZpZXdJbXBsKiwgUGFz
c093blB0cjxXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEPiwgR3JhcGhpY3NDb250ZXh0M0Q6
OkF0dHJpYnV0ZXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0Zha2VXZWJHcmFwaGljc0NvbnRleHQzRC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9GYWtlV2ViR3JhcGhpY3NDb250ZXh0M0QuaAppbmRleCBhZTI3ZGE3Li43MWZlN2UzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0Zha2VXZWJHcmFwaGljc0NvbnRl
eHQzRC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRmFrZVdlYkdyYXBoaWNz
Q29udGV4dDNELmgKQEAgLTI1Nyw2ICsyNTcsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IHRleFN0b3JhZ2UyREVYVChXR0MzRGVudW0gdGFyZ2V0LCBXR0MzRGludCBsZXZlbHMsIFdHQzNE
dWludCBpbnRlcm5hbGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdH
QzNEaW50IHdpZHRoLCBXR0MzRGludCBoZWlnaHQpIHsgfQogCisgICAgdmlydHVhbCB2b2lkKiBo
ZWxwZXIoKSB7IHJldHVybiAwOyB9CisKIHByb3RlY3RlZDoKICAgICBBdHRyaWJ1dGVzIG1fYXR0
cnM7CiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128292</attachid>
            <date>2012-02-22 14:35:21 -0800</date>
            <delta_ts>2012-02-27 10:09:59 -0800</delta_ts>
            <desc>Prototype (Chromium)</desc>
            <filename>shared-memory-chromium.diff</filename>
            <type>text/plain</type>
            <size>4069</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL2NvbnRlbnQvY29tbW9uL2dwdS9jbGllbnQvd2ViZ3JhcGhpY3Njb250ZXh0
M2RfY29tbWFuZF9idWZmZXJfaW1wbC5jYyBiL2NvbnRlbnQvY29tbW9uL2dwdS9jbGllbnQvd2Vi
Z3JhcGhpY3Njb250ZXh0M2RfY29tbWFuZF9idWZmZXJfaW1wbC5jYwppbmRleCBiOWViYzJmLi42
ZTliZjBiIDEwMDY0NAotLS0gYS9jb250ZW50L2NvbW1vbi9ncHUvY2xpZW50L3dlYmdyYXBoaWNz
Y29udGV4dDNkX2NvbW1hbmRfYnVmZmVyX2ltcGwuY2MKKysrIGIvY29udGVudC9jb21tb24vZ3B1
L2NsaWVudC93ZWJncmFwaGljc2NvbnRleHQzZF9jb21tYW5kX2J1ZmZlcl9pbXBsLmNjCkBAIC0x
MTUzLDYgKzExNTMsMTAgQEAgREVMRUdBVEVfVE9fR0xfNSh0ZXhJbWFnZUlPU3VyZmFjZTJEQ0hS
T01JVU0sIFRleEltYWdlSU9TdXJmYWNlMkRDSFJPTUlVTSwKIERFTEVHQVRFX1RPX0dMXzUodGV4
U3RvcmFnZTJERVhULCBUZXhTdG9yYWdlMkRFWFQsCiAgICAgICAgICAgICAgICAgIFdHQzNEZW51
bSwgV0dDM0RpbnQsIFdHQzNEdWludCwgV0dDM0RpbnQsIFdHQzNEaW50KQogCit2b2lkKiBXZWJH
cmFwaGljc0NvbnRleHQzRENvbW1hbmRCdWZmZXJJbXBsOjpoZWxwZXIoKSB7CisgIHJldHVybiBn
bF8tPmhlbHBlcigpOworfQorCiAjaWYgV0VCS0lUX1VTSU5HX1NLSUEKIEdyR0xJbnRlcmZhY2Uq
IFdlYkdyYXBoaWNzQ29udGV4dDNEQ29tbWFuZEJ1ZmZlckltcGw6Om9uQ3JlYXRlR3JHTEludGVy
ZmFjZSgpIHsKICAgcmV0dXJuIHdlYmtpdF9nbHVlOjpDcmVhdGVDb21tYW5kQnVmZmVyU2tpYUdM
QmluZGluZygpOwpkaWZmIC0tZ2l0IGEvY29udGVudC9jb21tb24vZ3B1L2NsaWVudC93ZWJncmFw
aGljc2NvbnRleHQzZF9jb21tYW5kX2J1ZmZlcl9pbXBsLmggYi9jb250ZW50L2NvbW1vbi9ncHUv
Y2xpZW50L3dlYmdyYXBoaWNzY29udGV4dDNkX2NvbW1hbmRfYnVmZmVyX2ltcGwuaAppbmRleCAy
ZWRhMTE1Li44NGIzNWJkIDEwMDY0NAotLS0gYS9jb250ZW50L2NvbW1vbi9ncHUvY2xpZW50L3dl
YmdyYXBoaWNzY29udGV4dDNkX2NvbW1hbmRfYnVmZmVyX2ltcGwuaAorKysgYi9jb250ZW50L2Nv
bW1vbi9ncHUvY2xpZW50L3dlYmdyYXBoaWNzY29udGV4dDNkX2NvbW1hbmRfYnVmZmVyX2ltcGwu
aApAQCAtNDc4LDYgKzQ3OCw4IEBAIGNsYXNzIFdlYkdyYXBoaWNzQ29udGV4dDNEQ29tbWFuZEJ1
ZmZlckltcGwKICAgICAgIFdHQzNEZW51bSB0YXJnZXQsIFdHQzNEaW50IGxldmVscywgV0dDM0R1
aW50IGludGVybmFsZm9ybWF0LAogICAgICAgV0dDM0RpbnQgd2lkdGgsIFdHQzNEaW50IGhlaWdo
dCk7CiAKKyAgdmlydHVhbCB2b2lkKiBoZWxwZXIoKTsKKwogIHByb3RlY3RlZDoKICNpZiBXRUJL
SVRfVVNJTkdfU0tJQQogICB2aXJ0dWFsIEdyR0xJbnRlcmZhY2UqIG9uQ3JlYXRlR3JHTEludGVy
ZmFjZSgpOwpkaWZmIC0tZ2l0IGEvd2Via2l0L2dwdS93ZWJncmFwaGljc2NvbnRleHQzZF9pbl9w
cm9jZXNzX2NvbW1hbmRfYnVmZmVyX2ltcGwuY2MgYi93ZWJraXQvZ3B1L3dlYmdyYXBoaWNzY29u
dGV4dDNkX2luX3Byb2Nlc3NfY29tbWFuZF9idWZmZXJfaW1wbC5jYwppbmRleCBkZDgzMWRhLi44
YTU1YzQ3IDEwMDY0NAotLS0gYS93ZWJraXQvZ3B1L3dlYmdyYXBoaWNzY29udGV4dDNkX2luX3By
b2Nlc3NfY29tbWFuZF9idWZmZXJfaW1wbC5jYworKysgYi93ZWJraXQvZ3B1L3dlYmdyYXBoaWNz
Y29udGV4dDNkX2luX3Byb2Nlc3NfY29tbWFuZF9idWZmZXJfaW1wbC5jYwpAQCAtMTU3Myw2ICsx
NTczLDExIEBAIERFTEVHQVRFX1RPX0dMXzUodGV4SW1hZ2VJT1N1cmZhY2UyRENIUk9NSVVNLCBU
ZXhJbWFnZUlPU3VyZmFjZTJEQ0hST01JVU0sCiBERUxFR0FURV9UT19HTF81KHRleFN0b3JhZ2Uy
REVYVCwgVGV4U3RvcmFnZTJERVhULAogICAgICAgICAgICAgICAgICBXR0MzRGVudW0sIFdHQzNE
aW50LCBXR0MzRHVpbnQsIFdHQzNEaW50LCBXR0MzRGludCkKIAordm9pZCogV2ViR3JhcGhpY3ND
b250ZXh0M0RJblByb2Nlc3NDb21tYW5kQnVmZmVySW1wbDo6aGVscGVyKCkKK3sKKyAgcmV0dXJu
IDA7Cit9CisKICNpZiBXRUJLSVRfVVNJTkdfU0tJQQogR3JHTEludGVyZmFjZSogV2ViR3JhcGhp
Y3NDb250ZXh0M0RJblByb2Nlc3NDb21tYW5kQnVmZmVySW1wbDo6CiAgICAgb25DcmVhdGVHckdM
SW50ZXJmYWNlKCkgewpkaWZmIC0tZ2l0IGEvd2Via2l0L2dwdS93ZWJncmFwaGljc2NvbnRleHQz
ZF9pbl9wcm9jZXNzX2NvbW1hbmRfYnVmZmVyX2ltcGwuaCBiL3dlYmtpdC9ncHUvd2ViZ3JhcGhp
Y3Njb250ZXh0M2RfaW5fcHJvY2Vzc19jb21tYW5kX2J1ZmZlcl9pbXBsLmgKaW5kZXggY2QyM2U0
Mi4uZmM1MmFhNyAxMDA2NDQKLS0tIGEvd2Via2l0L2dwdS93ZWJncmFwaGljc2NvbnRleHQzZF9p
bl9wcm9jZXNzX2NvbW1hbmRfYnVmZmVyX2ltcGwuaAorKysgYi93ZWJraXQvZ3B1L3dlYmdyYXBo
aWNzY29udGV4dDNkX2luX3Byb2Nlc3NfY29tbWFuZF9idWZmZXJfaW1wbC5oCkBAIC00NjAsNiAr
NDYwLDggQEAgY2xhc3MgV2ViR3JhcGhpY3NDb250ZXh0M0RJblByb2Nlc3NDb21tYW5kQnVmZmVy
SW1wbAogICAgICAgV0dDM0RlbnVtIHRhcmdldCwgV0dDM0RpbnQgbGV2ZWxzLCBXR0MzRHVpbnQg
aW50ZXJuYWxmb3JtYXQsCiAgICAgICBXR0MzRGludCB3aWR0aCwgV0dDM0RpbnQgaGVpZ2h0KTsK
IAorICB2aXJ0dWFsIHZvaWQqIGhlbHBlcigpOworCiAgcHJvdGVjdGVkOgogI2lmIFdFQktJVF9V
U0lOR19TS0lBCiAgIHZpcnR1YWwgR3JHTEludGVyZmFjZSogb25DcmVhdGVHckdMSW50ZXJmYWNl
KCk7CmRpZmYgLS1naXQgYS93ZWJraXQvZ3B1L3dlYmdyYXBoaWNzY29udGV4dDNkX2luX3Byb2Nl
c3NfaW1wbC5jYyBiL3dlYmtpdC9ncHUvd2ViZ3JhcGhpY3Njb250ZXh0M2RfaW5fcHJvY2Vzc19p
bXBsLmNjCmluZGV4IDYwZDc3ODEuLmY4NDAyZTcgMTAwNjQ0Ci0tLSBhL3dlYmtpdC9ncHUvd2Vi
Z3JhcGhpY3Njb250ZXh0M2RfaW5fcHJvY2Vzc19pbXBsLmNjCisrKyBiL3dlYmtpdC9ncHUvd2Vi
Z3JhcGhpY3Njb250ZXh0M2RfaW5fcHJvY2Vzc19pbXBsLmNjCkBAIC0xNjYxLDYgKzE2NjEsMTEg
QEAgdm9pZCBXZWJHcmFwaGljc0NvbnRleHQzREluUHJvY2Vzc0ltcGw6OnRleEltYWdlSU9TdXJm
YWNlMkRDSFJPTUlVTSgKIERFTEVHQVRFX1RPX0dMXzUodGV4U3RvcmFnZTJERVhULCBUZXhTdG9y
YWdlMkRFWFQsCiAgICAgICAgICAgICAgICAgIFdHQzNEZW51bSwgV0dDM0RpbnQsIFdHQzNEdWlu
dCwgV0dDM0RpbnQsIFdHQzNEaW50KQogCit2b2lkKiBXZWJHcmFwaGljc0NvbnRleHQzREluUHJv
Y2Vzc0ltcGw6OmhlbHBlcigpCit7CisgIHJldHVybiAwOworfQorCiAjaWYgV0VCS0lUX1VTSU5H
X1NLSUEKIEdyR0xJbnRlcmZhY2UqIFdlYkdyYXBoaWNzQ29udGV4dDNESW5Qcm9jZXNzSW1wbDo6
b25DcmVhdGVHckdMSW50ZXJmYWNlKCkgewogICByZXR1cm4gZ2Z4OjpDcmVhdGVJblByb2Nlc3NT
a2lhR0xCaW5kaW5nKCk7CmRpZmYgLS1naXQgYS93ZWJraXQvZ3B1L3dlYmdyYXBoaWNzY29udGV4
dDNkX2luX3Byb2Nlc3NfaW1wbC5oIGIvd2Via2l0L2dwdS93ZWJncmFwaGljc2NvbnRleHQzZF9p
bl9wcm9jZXNzX2ltcGwuaAppbmRleCBhODljYWNjLi4zNDUzZmU2IDEwMDY0NAotLS0gYS93ZWJr
aXQvZ3B1L3dlYmdyYXBoaWNzY29udGV4dDNkX2luX3Byb2Nlc3NfaW1wbC5oCisrKyBiL3dlYmtp
dC9ncHUvd2ViZ3JhcGhpY3Njb250ZXh0M2RfaW5fcHJvY2Vzc19pbXBsLmgKQEAgLTQ1Nyw2ICs0
NTcsOCBAQCBjbGFzcyBXZWJHcmFwaGljc0NvbnRleHQzREluUHJvY2Vzc0ltcGwgOiBwdWJsaWMg
V2ViR3JhcGhpY3NDb250ZXh0M0QgewogICAgICAgV0dDM0RlbnVtIHRhcmdldCwgV0dDM0RpbnQg
bGV2ZWxzLCBXR0MzRHVpbnQgaW50ZXJuYWxmb3JtYXQsCiAgICAgICBXR0MzRGludCB3aWR0aCwg
V0dDM0RpbnQgaGVpZ2h0KTsKIAorICB2aXJ0dWFsIHZvaWQqIGhlbHBlcigpOworCiAgcHJvdGVj
dGVkOgogI2lmIFdFQktJVF9VU0lOR19TS0lBCiAgIHZpcnR1YWwgR3JHTEludGVyZmFjZSogb25D
cmVhdGVHckdMSW50ZXJmYWNlKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129061</attachid>
            <date>2012-02-27 10:08:15 -0800</date>
            <delta_ts>2012-02-29 12:58:10 -0800</delta_ts>
            <desc>Prototype (WebKit)</desc>
            <filename>shared-memory-webkit.diff</filename>
            <type>text/plain</type>
            <size>27110</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViR3JhcGhpY3ND
b250ZXh0M0QuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViR3JhcGhpY3ND
b250ZXh0M0QuaAppbmRleCAyZjgwNGQ1Li5hM2JiYmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxh
dGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmgKKysrIGIvU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oCkBAIC0zOTks
NiArMzk5LDggQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0dD
M0RpbnQgd2lkdGgsIFdHQzNEaW50IGhlaWdodCkgeyB9CiAKIAorICAgIHZpcnR1YWwgdm9pZCog
aGVscGVyKCkgPSAwOworCiAjaWYgV0VCS0lUX1VTSU5HX1NLSUEKICAgICBHckdMSW50ZXJmYWNl
KiBjcmVhdGVHckdMSW50ZXJmYWNlKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKaW5kZXgg
OWI5MTJhNC4uNWE5ZDEzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFw
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTQ2LDIwICs0NiwzMyBA
QCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0
dXJlKEJpdG1hcFNrUGljdHVyZUNhbnZhcwogdm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpwcmVwYXJlUmVjdChjb25zdCBJbnRSZWN0JiBzb3Vy
Y2VSZWN0KQogewogICAgIG1fYml0bWFwLnNldENvbmZpZyhTa0JpdG1hcDo6a0FSR0JfODg4OF9D
b25maWcsIHNvdXJjZVJlY3Qud2lkdGgoKSwgc291cmNlUmVjdC5oZWlnaHQoKSk7Ci0gICAgbV9i
aXRtYXAuYWxsb2NQaXhlbHMoKTsKKworICAgIHZvaWQqIHBpeGVsRGVzdCA9IHRleHR1cmUoKS0+
bWFwVHJhbnNmZXJCdWZmZXIoKTsKKyAgICBpZiAocGl4ZWxEZXN0KQorICAgICAgICBtX2JpdG1h
cC5zZXRQaXhlbHMocGl4ZWxEZXN0KTsKKyAgICBlbHNlCisgICAgICAgIG1fYml0bWFwLmFsbG9j
UGl4ZWxzKCk7CisKICAgICBtX2JpdG1hcC5zZXRJc09wYXF1ZShtX3RleHR1cmVVcGRhdGVyLT5s
YXllcklzT3BhcXVlKCkpOwogICAgIFNrRGV2aWNlIGRldmljZShtX2JpdG1hcCk7CiAgICAgU2tD
YW52YXMgY2FudmFzKCZkZXZpY2UpOwogICAgIHRleHR1cmVVcGRhdGVyKCktPnBhaW50Q29udGVu
dHNSZWN0KCZjYW52YXMsIHNvdXJjZVJlY3QpOworCisgICAgaWYgKHBpeGVsRGVzdCkKKyAgICAg
ICAgbV9iaXRtYXAuc2V0SW1tdXRhYmxlKCk7CiB9CiAKIHZvaWQgQml0bWFwU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdChHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0
JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKIHsKICAgICB0ZXh0dXJlKCkt
PmJpbmRUZXh0dXJlKGNvbnRleHQsIGFsbG9jYXRvcik7CiAKLSAgICBtX2JpdG1hcC5sb2NrUGl4
ZWxzKCk7Ci0gICAgdGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlVGV4dHVyZVJlY3QoY29udGV4dCwg
dGV4dHVyZSgpLT5mb3JtYXQoKSwgZGVzdFJlY3QsIHN0YXRpY19jYXN0PHVpbnQ4X3QqPihtX2Jp
dG1hcC5nZXRQaXhlbHMoKSkpOwotICAgIG1fYml0bWFwLnVubG9ja1BpeGVscygpOworICAgIGlm
ICghbV9iaXRtYXAuaXNJbW11dGFibGUoKSkgeworICAgICAgICBtX2JpdG1hcC5sb2NrUGl4ZWxz
KCk7CisgICAgICAgIHRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRleHR1cmVSZWN0KGNvbnRleHQs
IHRleHR1cmUoKS0+Zm9ybWF0KCksIGRlc3RSZWN0LCBzdGF0aWNfY2FzdDx1aW50OF90Kj4obV9i
aXRtYXAuZ2V0UGl4ZWxzKCkpKTsKKyAgICAgICAgbV9iaXRtYXAudW5sb2NrUGl4ZWxzKCk7Cisg
ICAgfSBlbHNlCisgICAgICAgIHRleHR1cmUoKS0+dGV4U3ViSW1hZ2UyRFRyYW5zZmVyQnVmZmVy
KGNvbnRleHQsIGRlc3RSZWN0KTsKKwogICAgIG1fYml0bWFwLnJlc2V0KCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0V4dGVuc2lv
bnMzRENocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9FeHRlbnNpb25zM0RDaHJvbWl1bS5oCmluZGV4IDUzMzIyZjAuLjdlY2NlNDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0V4dGVuc2lvbnMz
RENocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vRXh0ZW5zaW9uczNEQ2hyb21pdW0uaApAQCAtMTIwLDYgKzEyMCw4IEBAIHB1YmxpYzoKICAg
ICAvLyBHTF9FWFRfdGV4dHVyZV9zdG9yYWdlCiAgICAgdm9pZCB0ZXhTdG9yYWdlMkRFWFQodW5z
aWduZWQgdGFyZ2V0LCBpbnQgbGV2ZWxzLCB1bnNpZ25lZCBpbnRlcm5hbGZvcm1hdCwgaW50IHdp
ZHRoLCBpbnQgaGVpZ2h0KTsKIAorICAgIHZvaWQqIGhlbHBlcigpOworCiBwcml2YXRlOgogICAg
IC8vIEluc3RhbmNlcyBvZiB0aGlzIGNsYXNzIGFyZSBzdHJpY3RseSBvd25lZCBieSB0aGUgR3Jh
cGhpY3NDb250ZXh0M0QgaW1wbGVtZW50YXRpb24gYW5kIGRvIG5vdAogICAgIC8vIG5lZWQgdG8g
YmUgaW5zdGFudGlhdGVkIGJ5IGFueSBvdGhlciBjb2RlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuY3Bw
CmluZGV4IDliYzcwMGQuLjRkNTgxMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5jcHAKQEAgLTEx
MCw2ICsxMTAsMTkgQEAgdm9pZCBNYW5hZ2VkVGV4dHVyZTo6dW5yZXNlcnZlKCkKICAgICBtX3Rl
eHR1cmVNYW5hZ2VyLT51bnByb3RlY3RUZXh0dXJlKG1fdG9rZW4pOwogfQogCit2b2lkKiBNYW5h
Z2VkVGV4dHVyZTo6bWFwVHJhbnNmZXJCdWZmZXIoKQoreworICAgIEFTU0VSVChtX3RleHR1cmVN
YW5hZ2VyLT5oYXNUZXh0dXJlKG1fdG9rZW4pKTsKKyAgICByZXR1cm4gbV90ZXh0dXJlTWFuYWdl
ci0+bWFwVHJhbnNmZXJCdWZmZXIobV90b2tlbik7Cit9CisKKwordm9pZCBNYW5hZ2VkVGV4dHVy
ZTo6dGV4U3ViSW1hZ2UyRFRyYW5zZmVyQnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3sKKyAgICBBU1NFUlQobV90ZXh0dXJlTWFuYWdl
ci0+aGFzVGV4dHVyZShtX3Rva2VuKSk7CisgICAgbV90ZXh0dXJlTWFuYWdlci0+dGV4U3ViSW1h
Z2UyRFRyYW5zZmVyQnVmZmVyKGNvbnRleHQsIGRlc3RSZWN0LCBtX3Rva2VuKTsKK30KKwogdm9p
ZCBNYW5hZ2VkVGV4dHVyZTo6YWxsb2NhdGUoVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQog
ewogICAgIEFTU0VSVChtX3RleHR1cmVNYW5hZ2VyLT5oYXNUZXh0dXJlKG1fdG9rZW4pKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFn
ZWRUZXh0dXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9N
YW5hZ2VkVGV4dHVyZS5oCmluZGV4IGVkNGQ0NTAuLmVkZDVmYjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1
cmUuaApAQCAtNTcsNiArNTcsOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX3RleHR1cmVN
YW5hZ2VyICYmIG1fdGV4dHVyZU1hbmFnZXItPmlzUHJvdGVjdGVkKG1fdG9rZW4pOwogICAgIH0K
IAorICAgIHZvaWQqIG1hcFRyYW5zZmVyQnVmZmVyKCk7CisgICAgdm9pZCB0ZXhTdWJJbWFnZTJE
VHJhbnNmZXJCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBJbnRSZWN0JiBkZXN0UmVj
dCk7CisKICAgICB2b2lkIGFsbG9jYXRlKFRleHR1cmVBbGxvY2F0b3IqKTsKICAgICB2b2lkIGJp
bmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciopOwogICAgIHZv
aWQgZnJhbWVidWZmZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2Nh
dG9yKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9UZXh0dXJlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5jcHAKaW5kZXggMGM2ZmUxNC4uZTMwNTQ0MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVy
ZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1RleHR1cmVNYW5hZ2VyLmNwcApAQCAtMjgsOCArMjgsMTUgQEAKIAogI2luY2x1ZGUgIlRl
eHR1cmVNYW5hZ2VyLmgiCiAKKyNpbmNsdWRlICJFeHRlbnNpb25zM0RDaHJvbWl1bS5oIgogI2lu
Y2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJl
LmgiCisjaW5jbHVkZSAiU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QuaCIKKworI3VuZGVmIExPRwor
I2luY2x1ZGUgImJhc2UvcHJvY2Vzc191dGlsLmgiCisjaW5jbHVkZSAiYmFzZS9zaGFyZWRfbWVt
b3J5LmgiCisjaW5jbHVkZSAiZ3B1L2NvbW1hbmRfYnVmZmVyL2NsaWVudC9nbGVzMl9pbXBsZW1l
bnRhdGlvbi5oIgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCkBAIC00Myw2ICs1MCwxNSBAQCBz
aXplX3QgbWVtb3J5TGltaXRCeXRlcyhzaXplX3Qgdmlld3BvcnRNdWx0aXBsaWVyLCBjb25zdCBJ
bnRTaXplJiB2aWV3cG9ydFNpemUsCiAgICAgICAgIHJldHVybiBtaW5NZWdhYnl0ZXMgKiAxMDI0
ICogMTAyNDsKICAgICByZXR1cm4gbWF4KG1pbk1lZ2FieXRlcyAqIDEwMjQgKiAxMDI0LCBtaW4o
bWF4TWVnYWJ5dGVzICogMTAyNCAqIDEwMjQsIHZpZXdwb3J0TXVsdGlwbGllciAqIFRleHR1cmVN
YW5hZ2VyOjptZW1vcnlVc2VCeXRlcyh2aWV3cG9ydFNpemUsIEdyYXBoaWNzQ29udGV4dDNEOjpS
R0JBKSkpOwogfQorZ3B1OjpDb21tYW5kQnVmZmVyKiBjb21tYW5kQnVmZmVyKCkKK3sKKyAgICBH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCA9IFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEOjpnZXQo
KTsKKyAgICBBU1NFUlQoY29udGV4dCk7CisgICAgRXh0ZW5zaW9uczNEQ2hyb21pdW0qIGV4dGVu
c2lvbnMgPSBzdGF0aWNfY2FzdDxFeHRlbnNpb25zM0RDaHJvbWl1bSo+KGNvbnRleHQtPmdldEV4
dGVuc2lvbnMoKSk7CisgICAgZ3B1OjpnbGVzMjo6R0xFUzJDbWRIZWxwZXIqIGhlbHBlciA9IHN0
YXRpY19jYXN0PGdwdTo6Z2xlczI6OkdMRVMyQ21kSGVscGVyKj4oZXh0ZW5zaW9ucy0+aGVscGVy
KCkpOworICAgIEFTU0VSVChoZWxwZXIpOworICAgIHJldHVybiBoZWxwZXItPmNvbW1hbmRfYnVm
ZmVyKCk7Cit9CiB9CiAKIHNpemVfdCBUZXh0dXJlTWFuYWdlcjo6aGlnaExpbWl0Qnl0ZXMoY29u
c3QgSW50U2l6ZSYgdmlld3BvcnRTaXplKQpAQCAtMTAxLDYgKzExNyw5IEBAIFRleHR1cmVNYW5h
Z2VyOjpUZXh0dXJlTWFuYWdlcihzaXplX3QgbWF4TWVtb3J5TGltaXRCeXRlcywgc2l6ZV90IHBy
ZWZlcnJlZE1lbW9yCiAgICAgLCBtX21lbW9yeVVzZUJ5dGVzKDApCiAgICAgLCBtX21heFRleHR1
cmVTaXplKG1heFRleHR1cmVTaXplKQogICAgICwgbV9uZXh0VG9rZW4oMSkKKyAgICAsIG1fbmV4
dFRyYW5zZmVyQnVmZmVyVG9rZW4oMSkKKyAgICAsIG1fbGFzdFRva2VuUmVhZCgwKQorICAgICwg
bV90cmFuc2ZlckJ1ZmZlck1lbW9yeVVzZUJ5dGVzKDApCiB7CiB9CiAKQEAgLTE5Miw2ICsyMTEs
MTIgQEAgdm9pZCBUZXh0dXJlTWFuYWdlcjo6ZXZpY3RUZXh0dXJlKFRleHR1cmVUb2tlbiB0b2tl
biwgVGV4dHVyZUluZm8gaW5mbykKIAogdm9pZCBUZXh0dXJlTWFuYWdlcjo6cmVkdWNlTWVtb3J5
VG9MaW1pdChzaXplX3QgbGltaXQpCiB7CisgICAgLy8gUmVkdWNlIHRyYW5zZmVyIGJ1ZmZlciBt
ZW1vcnkgcmVsYXRpdmUgdG8gdGV4dHVyZSBtZW1vcnkgcmVkdWN0aW9uLgorICAgIHNpemVfdCB0
cmFuc2ZlckJ1ZmZlckxpbWl0ID0gbV90cmFuc2ZlckJ1ZmZlck1lbW9yeVVzZUJ5dGVzOworCisg
ICAgaWYgKG1fbWVtb3J5VXNlQnl0ZXMpCisgICAgICAgIHRyYW5zZmVyQnVmZmVyTGltaXQgPSBt
X3RyYW5zZmVyQnVmZmVyTWVtb3J5VXNlQnl0ZXMgLSAoKG1fbWVtb3J5VXNlQnl0ZXMgLSBsaW1p
dCkgKiBtX3RyYW5zZmVyQnVmZmVyTWVtb3J5VXNlQnl0ZXMpIC8gbV9tZW1vcnlVc2VCeXRlczsK
KwogICAgIHdoaWxlIChtX21lbW9yeVVzZUJ5dGVzID4gbGltaXQpIHsKICAgICAgICAgQVNTRVJU
KCFtX3RleHR1cmVMUlVTZXQuaXNFbXB0eSgpKTsKICAgICAgICAgYm9vbCBmb3VuZENhbmRpZGF0
ZSA9IGZhbHNlOwpAQCAtMjA3LDYgKzIzMiwyMSBAQCB2b2lkIFRleHR1cmVNYW5hZ2VyOjpyZWR1
Y2VNZW1vcnlUb0xpbWl0KHNpemVfdCBsaW1pdCkKICAgICAgICAgaWYgKCFmb3VuZENhbmRpZGF0
ZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CisKKyAgICB3aGlsZSAobV90cmFuc2ZlckJ1
ZmZlck1lbW9yeVVzZUJ5dGVzID4gdHJhbnNmZXJCdWZmZXJMaW1pdCkgeworICAgICAgICBib29s
IGZvdW5kQ2FuZGlkYXRlID0gZmFsc2U7CisgICAgICAgIGZvciAoVHJhbnNmZXJCdWZmZXJNYXA6
Oml0ZXJhdG9yIGl0ID0gbV90cmFuc2ZlckJ1ZmZlcnMuYmVnaW4oKTsgaXQgIT0gbV90cmFuc2Zl
ckJ1ZmZlcnMuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgICAgIGlmIChpdC0+c2Vjb25kLmlzUHJv
dGVjdGVkKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKGl0LT5z
ZWNvbmQuZmVuY2UgPiBtX2xhc3RUb2tlblJlYWQpCisgICAgICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgICAgICBldmljdFRyYW5zZmVyQnVmZmVyKGl0LT5maXJzdCwgaXQtPnNlY29uZCk7
CisgICAgICAgICAgICBmb3VuZENhbmRpZGF0ZSA9IHRydWU7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgICAgICBpZiAoIWZvdW5kQ2FuZGlkYXRlKQorICAgICAgICAgICAgcmV0
dXJuOworICAgIH0KIH0KIAogdm9pZCBUZXh0dXJlTWFuYWdlcjo6YWRkVGV4dHVyZShUZXh0dXJl
VG9rZW4gdG9rZW4sIFRleHR1cmVJbmZvIGluZm8pCkBAIC0yMjAsNiArMjYwLDggQEAgdm9pZCBU
ZXh0dXJlTWFuYWdlcjo6YWRkVGV4dHVyZShUZXh0dXJlVG9rZW4gdG9rZW4sIFRleHR1cmVJbmZv
IGluZm8pCiAKIHZvaWQgVGV4dHVyZU1hbmFnZXI6OmRlbGV0ZUV2aWN0ZWRUZXh0dXJlcyhUZXh0
dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCiB7CisgICAgVFJBQ0VfRVZFTlQoIlRleHR1cmVNYW5h
Z2VyOjpkZWxldGVFdmljdGVkVGV4dHVyZXMiLCB0aGlzLCAwKTsKKwogICAgIGlmIChhbGxvY2F0
b3IpIHsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2V2aWN0ZWRUZXh0dXJlcy5z
aXplKCk7ICsraSkgewogICAgICAgICAgICAgaWYgKG1fZXZpY3RlZFRleHR1cmVzW2ldLnRleHR1
cmVJZCkgewpAQCAtMjI5LDggKzI3MSwyMCBAQCB2b2lkIFRleHR1cmVNYW5hZ2VyOjpkZWxldGVF
dmljdGVkVGV4dHVyZXMoVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQogICAgICAgICAgICAg
ICAgIGFsbG9jYXRvci0+ZGVsZXRlVGV4dHVyZShtX2V2aWN0ZWRUZXh0dXJlc1tpXS50ZXh0dXJl
SWQsIG1fZXZpY3RlZFRleHR1cmVzW2ldLnNpemUsIG1fZXZpY3RlZFRleHR1cmVzW2ldLmZvcm1h
dCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgLy8gRGVsZXRlIGV2aWN0ZWQg
dHJhbnNmZXIgYnVmZmVycy4KKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2V2aWN0
ZWRUcmFuc2ZlckJ1ZmZlcnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChtX2V2aWN0
ZWRUcmFuc2ZlckJ1ZmZlcnNbaV0gIT0gLTEpIHsKKyAgICAgICAgICAgICAgICBFeHRlbnNpb25z
M0RDaHJvbWl1bSogZXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVt
Kj4oYWxsb2NhdG9yLT5jb250ZXh0KCktPmdldEV4dGVuc2lvbnMoKSk7CisgICAgICAgICAgICAg
ICAgZ3B1OjpnbGVzMjo6R0xFUzJDbWRIZWxwZXIqIGhlbHBlciA9IHN0YXRpY19jYXN0PGdwdTo6
Z2xlczI6OkdMRVMyQ21kSGVscGVyKj4oZXh0ZW5zaW9ucy0+aGVscGVyKCkpOworICAgICAgICAg
ICAgICAgIEFTU0VSVChoZWxwZXIpOworICAgICAgICAgICAgICAgIGdwdTo6Q29tbWFuZEJ1ZmZl
ciogY21kQnVmID0gaGVscGVyLT5jb21tYW5kX2J1ZmZlcigpOworICAgICAgICAgICAgICAgIGNt
ZEJ1Zi0+RGVzdHJveVRyYW5zZmVyQnVmZmVyKG1fZXZpY3RlZFRyYW5zZmVyQnVmZmVyc1tpXSk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9CisKICAgICBtX2V2aWN0ZWRUZXh0dXJl
cy5jbGVhcigpOworICAgIG1fZXZpY3RlZFRyYW5zZmVyQnVmZmVycy5jbGVhcigpOwogfQogCiB2
b2lkIFRleHR1cmVNYW5hZ2VyOjpldmljdEFuZERlbGV0ZUFsbFRleHR1cmVzKFRleHR1cmVBbGxv
Y2F0b3IqIGFsbG9jYXRvcikKQEAgLTI0NCw2ICsyOTgsNyBAQCB2b2lkIFRleHR1cmVNYW5hZ2Vy
OjpyZW1vdmVUZXh0dXJlKFRleHR1cmVUb2tlbiB0b2tlbiwgVGV4dHVyZUluZm8gaW5mbykKIHsK
ICAgICBBU1NFUlQobV90ZXh0dXJlTFJVU2V0LmNvbnRhaW5zKHRva2VuKSk7CiAgICAgQVNTRVJU
KG1fdGV4dHVyZXMuY29udGFpbnModG9rZW4pKTsKKyAgICBBU1NFUlQoIWluZm8uYnVmZmVyKTsK
ICAgICBtX21lbW9yeVVzZUJ5dGVzIC09IG1lbW9yeVVzZUJ5dGVzKGluZm8uc2l6ZSwgaW5mby5m
b3JtYXQpOwogICAgIG1fdGV4dHVyZXMucmVtb3ZlKHRva2VuKTsKICAgICBBU1NFUlQobV90ZXh0
dXJlTFJVU2V0LmNvbnRhaW5zKHRva2VuKSk7CkBAIC0yNzAsNiArMzI1LDcgQEAgdW5zaWduZWQg
VGV4dHVyZU1hbmFnZXI6OmFsbG9jYXRlVGV4dHVyZShUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0
b3IsIFRleHR1cmVUb2sKICNpZm5kZWYgTkRFQlVHCiAgICAgaW5mby0+YWxsb2NhdG9yID0gYWxs
b2NhdG9yOwogI2VuZGlmCisKICAgICByZXR1cm4gdGV4dHVyZUlkOwogfQogCkBAIC0yOTcsNiAr
MzUzLDcgQEAgYm9vbCBUZXh0dXJlTWFuYWdlcjo6cmVxdWVzdFRleHR1cmUoVGV4dHVyZVRva2Vu
IHRva2VuLCBJbnRTaXplIHNpemUsIHVuc2lnbmVkIGYKICAgICBpbmZvLmZvcm1hdCA9IGZvcm1h
dDsKICAgICBpbmZvLnRleHR1cmVJZCA9IDA7CiAgICAgaW5mby5pc1Byb3RlY3RlZCA9IHRydWU7
CisgICAgaW5mby5idWZmZXIgPSAwOwogI2lmbmRlZiBOREVCVUcKICAgICBpbmZvLmFsbG9jYXRv
ciA9IDA7CiAjZW5kaWYKQEAgLTMwNCw2ICszNjEsMTEzIEBAIGJvb2wgVGV4dHVyZU1hbmFnZXI6
OnJlcXVlc3RUZXh0dXJlKFRleHR1cmVUb2tlbiB0b2tlbiwgSW50U2l6ZSBzaXplLCB1bnNpZ25l
ZCBmCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK1RyYW5zZmVyQnVmZmVyVG9rZW4gVGV4dHVyZU1h
bmFnZXI6OmdldFRyYW5zZmVyQnVmZmVyVG9rZW4oKQoreworICAgIHJldHVybiBtX25leHRUcmFu
c2ZlckJ1ZmZlclRva2VuKys7Cit9CisKK2ludCBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlVHJhbnNm
ZXJCdWZmZXIoVHJhbnNmZXJCdWZmZXJUb2tlbiB0b2tlbiwgc2l6ZV90IGJ5dGVzKQoreworICAg
IFRSQUNFX0VWRU5UKCJUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlVHJhbnNmZXJCdWZmZXIiLCB0aGlz
LCAwKTsKKyAgICBpbnQgc2htSWQgPSBjb21tYW5kQnVmZmVyKCktPkNyZWF0ZVRyYW5zZmVyQnVm
ZmVyKGJ5dGVzLCAtMSk7CisgICAgVHJhbnNmZXJCdWZmZXJJbmZvIGJ1ZmZlcjsKKyAgICBidWZm
ZXIuc2l6ZSA9IGJ5dGVzOworICAgIGJ1ZmZlci5zaG1JZCA9IHNobUlkOworICAgIGJ1ZmZlci5y
ZWdpc3RlcmVkU2htSWQgPSAtMTsKKyAgICBidWZmZXIuZmVuY2UgPSAwOworICAgIGJ1ZmZlci5p
c1Byb3RlY3RlZCA9IHRydWU7CisgICAgYnVmZmVyLnNoYXJlZE1lbW9yeSA9IGNvbW1hbmRCdWZm
ZXIoKS0+R2V0VHJhbnNmZXJCdWZmZXIoc2htSWQpLnNoYXJlZF9tZW1vcnk7CisgICAgYWRkVHJh
bnNmZXJCdWZmZXIodG9rZW4sIGJ1ZmZlcik7CisgICAgcmV0dXJuIHNobUlkOworfQorCit2b2lk
IFRleHR1cmVNYW5hZ2VyOjphZGRUcmFuc2ZlckJ1ZmZlcihUcmFuc2ZlckJ1ZmZlclRva2VuIHRv
a2VuLCBUcmFuc2ZlckJ1ZmZlckluZm8gaW5mbykKK3sKKyAgICBBU1NFUlQoIW1fdHJhbnNmZXJC
dWZmZXJzLmNvbnRhaW5zKHRva2VuKSk7CisgICAgbV90cmFuc2ZlckJ1ZmZlck1lbW9yeVVzZUJ5
dGVzICs9IGluZm8uc2l6ZTsKKyAgICBtX3RyYW5zZmVyQnVmZmVycy5zZXQodG9rZW4sIGluZm8p
OworfQorCit2b2lkIFRleHR1cmVNYW5hZ2VyOjpyZW1vdmVUcmFuc2ZlckJ1ZmZlcihUcmFuc2Zl
ckJ1ZmZlclRva2VuIHRva2VuLCBUcmFuc2ZlckJ1ZmZlckluZm8gaW5mbykKK3sKKyAgICBBU1NF
UlQobV90ZXh0dXJlcy5jb250YWlucyh0b2tlbikpOworICAgIEFTU0VSVChpbmZvLnNobUlkICE9
IC0xKTsKKyAgICBjb21tYW5kQnVmZmVyKCktPkRlc3Ryb3lUcmFuc2ZlckJ1ZmZlcihpbmZvLnNo
bUlkKTsKKyAgICBtX3RyYW5zZmVyQnVmZmVyTWVtb3J5VXNlQnl0ZXMgLT0gaW5mby5zaXplOwor
ICAgIG1fdHJhbnNmZXJCdWZmZXJzLnJlbW92ZSh0b2tlbik7CisgICAgbV9ldmljdGVkVHJhbnNm
ZXJCdWZmZXJzLmFwcGVuZChpbmZvLnJlZ2lzdGVyZWRTaG1JZCk7Cit9CisKK3ZvaWQgVGV4dHVy
ZU1hbmFnZXI6OmV2aWN0VHJhbnNmZXJCdWZmZXIoVHJhbnNmZXJCdWZmZXJUb2tlbiB0b2tlbiwg
VHJhbnNmZXJCdWZmZXJJbmZvIGluZm8pCit7CisgICAgVFJBQ0VfRVZFTlQoIlRleHR1cmVNYW5h
Z2VyOjpldmljdFRyYW5zZmVyQnVmZmVyIiwgdGhpcywgMCk7CisgICAgcmVtb3ZlVHJhbnNmZXJC
dWZmZXIodG9rZW4sIGluZm8pOworfQorCit2b2lkKiBUZXh0dXJlTWFuYWdlcjo6bWFwVHJhbnNm
ZXJCdWZmZXIoVGV4dHVyZVRva2VuIHRva2VuKQoreworICAgIFRleHR1cmVNYXA6Oml0ZXJhdG9y
IHRleHR1cmVJdCA9IG1fdGV4dHVyZXMuZmluZCh0b2tlbik7CisgICAgQVNTRVJUKHRleHR1cmVJ
dCAhPSBtX3RleHR1cmVzLmVuZCgpKTsKKyAgICBUZXh0dXJlSW5mbyogaW5mbyA9ICZ0ZXh0dXJl
SXQuZ2V0KCktPnNlY29uZDsKKyAgICBBU1NFUlQoaW5mby0+aXNQcm90ZWN0ZWQpOworICAgIEFT
U0VSVCghaW5mby0+YnVmZmVyKTsKKyAgICBpbnQgc2htSWQgPSAtMTsKKworICAgIHNpemVfdCBt
ZW1vcnlSZXF1aXJlZEJ5dGVzID0gbWVtb3J5VXNlQnl0ZXMoaW5mby0+c2l6ZSwgaW5mby0+Zm9y
bWF0KTsKKyAgICBmb3IgKFRyYW5zZmVyQnVmZmVyTWFwOjppdGVyYXRvciBpdCA9IG1fdHJhbnNm
ZXJCdWZmZXJzLmJlZ2luKCk7IGl0ICE9IG1fdHJhbnNmZXJCdWZmZXJzLmVuZCgpOyArK2l0KSB7
CisgICAgICAgIGlmIChpdC0+c2Vjb25kLmlzUHJvdGVjdGVkKQorICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgIGlmIChpdC0+c2Vjb25kLnNpemUgIT0gbWVtb3J5UmVxdWlyZWRCeXRlcykK
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoaXQtPnNlY29uZC5mZW5jZSA+IG1f
bGFzdFRva2VuUmVhZCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIEFTU0VSVChp
dC0+c2Vjb25kLnNobUlkICE9IC0xKTsKKyAgICAgICAgc2htSWQgPSBpdC0+c2Vjb25kLnNobUlk
OworICAgICAgICBpdC0+c2Vjb25kLmlzUHJvdGVjdGVkID0gdHJ1ZTsKKyAgICAgICAgaW5mby0+
YnVmZmVyID0gaXQtPmZpcnN0OworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBpZiAoIWlu
Zm8tPmJ1ZmZlcikgeworICAgICAgICBpZiAobV90cmFuc2ZlckJ1ZmZlck1lbW9yeVVzZUJ5dGVz
ICsgbWVtb3J5UmVxdWlyZWRCeXRlcyA+IG1fbWF4TWVtb3J5TGltaXRCeXRlcykKKyAgICAgICAg
ICAgIHJldHVybiAwOworCisgICAgICAgIGluZm8tPmJ1ZmZlciA9IGdldFRyYW5zZmVyQnVmZmVy
VG9rZW4oKTsKKyAgICAgICAgc2htSWQgPSBjcmVhdGVUcmFuc2ZlckJ1ZmZlcihpbmZvLT5idWZm
ZXIsIG1lbW9yeVJlcXVpcmVkQnl0ZXMpOworICAgIH0KKworICAgIGdwdTo6QnVmZmVyIGJ1ZmZl
ciA9IGNvbW1hbmRCdWZmZXIoKS0+R2V0VHJhbnNmZXJCdWZmZXIoc2htSWQpOworICAgIHJldHVy
biBidWZmZXIucHRyOworfQorCit2b2lkIFRleHR1cmVNYW5hZ2VyOjp0ZXhTdWJJbWFnZTJEVHJh
bnNmZXJCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRl
c3RSZWN0LCBUZXh0dXJlVG9rZW4gdG9rZW4pCit7CisgICAgVGV4dHVyZU1hcDo6aXRlcmF0b3Ig
dGV4dHVyZUl0ID0gbV90ZXh0dXJlcy5maW5kKHRva2VuKTsKKyAgICBBU1NFUlQodGV4dHVyZUl0
ICE9IG1fdGV4dHVyZXMuZW5kKCkpOworICAgIFRleHR1cmVJbmZvKiB0ZXh0dXJlSW5mbyA9ICZ0
ZXh0dXJlSXQuZ2V0KCktPnNlY29uZDsKKyAgICBBU1NFUlQodGV4dHVyZUluZm8tPmJ1ZmZlcik7
CisKKyAgICBUcmFuc2ZlckJ1ZmZlck1hcDo6aXRlcmF0b3IgaXQgPSBtX3RyYW5zZmVyQnVmZmVy
cy5maW5kKHRleHR1cmVJbmZvLT5idWZmZXIpOworICAgIEFTU0VSVChpdCAhPSBtX3RyYW5zZmVy
QnVmZmVycy5lbmQoKSk7CisgICAgVHJhbnNmZXJCdWZmZXJJbmZvKiBpbmZvID0gJml0LmdldCgp
LT5zZWNvbmQ7CisgICAgQVNTRVJUKGluZm8tPmlzUHJvdGVjdGVkKTsKKworICAgIEV4dGVuc2lv
bnMzRENocm9taXVtKiBleHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21p
dW0qPihjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkpOworICAgIGdwdTo6Z2xlczI6OkdMRVMyQ21k
SGVscGVyKiBoZWxwZXIgPSBzdGF0aWNfY2FzdDxncHU6OmdsZXMyOjpHTEVTMkNtZEhlbHBlcio+
KGV4dGVuc2lvbnMtPmhlbHBlcigpKTsKKyAgICBBU1NFUlQoaGVscGVyKTsKKyAgICBncHU6OkNv
bW1hbmRCdWZmZXIqIGNtZEJ1ZiA9IGhlbHBlci0+Y29tbWFuZF9idWZmZXIoKTsKKworICAgIGlm
IChpbmZvLT5yZWdpc3RlcmVkU2htSWQgPT0gLTEpCisgICAgICAgIGluZm8tPnJlZ2lzdGVyZWRT
aG1JZCA9IGNtZEJ1Zi0+UmVnaXN0ZXJUcmFuc2ZlckJ1ZmZlcihpbmZvLT5zaGFyZWRNZW1vcnks
IGluZm8tPnNpemUsIC0xKTsKKworICAgIGhlbHBlci0+VGV4U3ViSW1hZ2UyRChHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgZGVzdFJlY3QueCgpLCBkZXN0UmVjdC55KCksIGRlc3RS
ZWN0LndpZHRoKCksIGRlc3RSZWN0LmhlaWdodCgpLCB0ZXh0dXJlSW5mby0+Zm9ybWF0LCBHcmFw
aGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgaW5mby0+cmVnaXN0ZXJlZFNobUlkLCAwLCBG
QUxTRSk7CisKKyAgICBpbmZvLT5mZW5jZSA9IGhlbHBlci0+SW5zZXJ0VG9rZW4oKTsKKyAgICBp
bmZvLT5pc1Byb3RlY3RlZCA9IGZhbHNlOworICAgIHRleHR1cmVJbmZvLT5idWZmZXIgPSAwOwor
fQorCiB9CiAKICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFu
YWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVy
ZU1hbmFnZXIuaAppbmRleCBlNGQ2ZDM4Li44M2I2ZWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmgK
QEAgLTM1LDE2ICszNSwyMyBAQAogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KIAorbmFtZXNwYWNlIGJhc2UgeworY2xhc3MgU2hhcmVkTWVtb3J5
OworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1hbmFnZWRUZXh0dXJlOwogdHlw
ZWRlZiBpbnQgVGV4dHVyZVRva2VuOwordHlwZWRlZiBpbnQgVHJhbnNmZXJCdWZmZXJUb2tlbjsK
IAogY2xhc3MgVGV4dHVyZUFsbG9jYXRvciB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB1bnNpZ25l
ZCBjcmVhdGVUZXh0dXJlKGNvbnN0IEludFNpemUmLCBHQzNEZW51bSBmb3JtYXQpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZGVsZXRlVGV4dHVyZSh1bnNpZ25lZCB0ZXh0dXJlLCBjb25zdCBJbnRT
aXplJiwgR0MzRGVudW0pID0gMDsKIAorICAgIHZpcnR1YWwgR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQoKSB7IHJldHVybiAwOyB9CisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5UZXh0dXJl
QWxsb2NhdG9yKCkgeyB9CiB9OwpAQCAtOTQsNiArMTAxLDEwIEBAIHB1YmxpYzoKICAgICB2b2lk
IHJlZHVjZU1lbW9yeVRvTGltaXQoc2l6ZV90KTsKICAgICBzaXplX3QgY3VycmVudE1lbW9yeVVz
ZUJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9tZW1vcnlVc2VCeXRlczsgfQogCisgICAgdm9pZCog
bWFwVHJhbnNmZXJCdWZmZXIoVGV4dHVyZVRva2VuKTsKKyAgICB2b2lkIHRleFN1YkltYWdlMkRU
cmFuc2ZlckJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0
LCBUZXh0dXJlVG9rZW4pOworICAgIHZvaWQgc2V0TGFzdFRva2VuUmVhZChpbnQgbGFzdFRva2Vu
UmVhZCkgeyBtX2xhc3RUb2tlblJlYWQgPSBsYXN0VG9rZW5SZWFkOyB9CisKIHByaXZhdGU6CiAg
ICAgVGV4dHVyZU1hbmFnZXIoc2l6ZV90IG1heE1lbW9yeUxpbWl0Qnl0ZXMsIHNpemVfdCBwcmVm
ZXJyZWRNZW1vcnlMaW1pdEJ5dGVzLCBpbnQgbWF4VGV4dHVyZVNpemUpOwogCkBAIC0xMDIsNiAr
MTEzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgR0MzRGVudW0gZm9ybWF0OwogICAgICAgICB1bnNp
Z25lZCB0ZXh0dXJlSWQ7CiAgICAgICAgIGJvb2wgaXNQcm90ZWN0ZWQ7CisgICAgICAgIFRyYW5z
ZmVyQnVmZmVyVG9rZW4gYnVmZmVyOwogI2lmbmRlZiBOREVCVUcKICAgICAgICAgVGV4dHVyZUFs
bG9jYXRvciogYWxsb2NhdG9yOwogI2VuZGlmCkBAIC0xMzMsNiArMTQ1LDI5IEBAIHByaXZhdGU6
CiAgICAgfTsKIAogICAgIFZlY3RvcjxFdmljdGlvbkVudHJ5PiBtX2V2aWN0ZWRUZXh0dXJlczsK
KworICAgIHN0cnVjdCBUcmFuc2ZlckJ1ZmZlckluZm8geworICAgICAgICBzaXplX3Qgc2l6ZTsK
KyAgICAgICAgaW50IHNobUlkOworICAgICAgICBpbnQgcmVnaXN0ZXJlZFNobUlkOworICAgICAg
ICBpbnQgZmVuY2U7CisgICAgICAgIGJvb2wgaXNQcm90ZWN0ZWQ7CisgICAgICAgIGJhc2U6OlNo
YXJlZE1lbW9yeSogc2hhcmVkTWVtb3J5OworICAgIH07CisKKyAgICBUcmFuc2ZlckJ1ZmZlclRv
a2VuIGdldFRyYW5zZmVyQnVmZmVyVG9rZW4oKTsKKworICAgIGludCBjcmVhdGVUcmFuc2ZlckJ1
ZmZlcihUcmFuc2ZlckJ1ZmZlclRva2VuLCBzaXplX3QgYnl0ZXMpOworICAgIHZvaWQgYWRkVHJh
bnNmZXJCdWZmZXIoVHJhbnNmZXJCdWZmZXJUb2tlbiwgVHJhbnNmZXJCdWZmZXJJbmZvKTsKKyAg
ICB2b2lkIHJlbW92ZVRyYW5zZmVyQnVmZmVyKFRyYW5zZmVyQnVmZmVyVG9rZW4sIFRyYW5zZmVy
QnVmZmVySW5mbyk7CisgICAgdm9pZCBldmljdFRyYW5zZmVyQnVmZmVyKFRyYW5zZmVyQnVmZmVy
VG9rZW4sIFRyYW5zZmVyQnVmZmVySW5mbyk7CisKKyAgICB0eXBlZGVmIEhhc2hNYXA8VHJhbnNm
ZXJCdWZmZXJUb2tlbiwgVHJhbnNmZXJCdWZmZXJJbmZvPiBUcmFuc2ZlckJ1ZmZlck1hcDsKKyAg
ICBUcmFuc2ZlckJ1ZmZlck1hcCBtX3RyYW5zZmVyQnVmZmVyczsKKyAgICBWZWN0b3I8aW50PiBt
X2V2aWN0ZWRUcmFuc2ZlckJ1ZmZlcnM7CisgICAgVHJhbnNmZXJCdWZmZXJUb2tlbiBtX25leHRU
cmFuc2ZlckJ1ZmZlclRva2VuOworICAgIGludCBtX2xhc3RUb2tlblJlYWQ7CisgICAgc2l6ZV90
IG1fdHJhbnNmZXJCdWZmZXJNZW1vcnlVc2VCeXRlczsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyYWNraW5nVGV4dHVyZUFs
bG9jYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJh
Y2tpbmdUZXh0dXJlQWxsb2NhdG9yLmgKaW5kZXggYThhNTQ5Mi4uOTY1OGQ0NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0
dXJlQWxsb2NhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmgKQEAgLTUwLDYgKzUwLDggQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0VGV4dHVyZVVzYWdlSGludChUZXh0dXJlVXNhZ2VIaW50IGhpbnQpIHsg
bV90ZXh0dXJlVXNhZ2VIaW50ID0gaGludDsgfQogICAgIHZvaWQgc2V0VXNlVGV4dHVyZVN0b3Jh
Z2VFeHQoYm9vbCB1c2VTdG9yYWdlRXh0KSB7IG1fdXNlVGV4dHVyZVN0b3JhZ2VFeHQgPSB1c2VT
dG9yYWdlRXh0OyB9CiAKKyAgICB2aXJ0dWFsIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KCkg
eyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CisKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBU
cmFja2luZ1RleHR1cmVBbGxvY2F0b3IoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4pOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAppbmRleCA5YWUwMjc5Li43YWUzMTQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTM2Nyw3ICszNjcsNyBAQCB2b2lk
IENDTGF5ZXJUcmVlSG9zdDo6Y29tcG9zaXRlKCkKICAgICBzdGF0aWNfY2FzdDxDQ1NpbmdsZVRo
cmVhZFByb3h5Kj4obV9wcm94eS5nZXQoKSktPmNvbXBvc2l0ZUltbWVkaWF0ZWx5KCk7CiB9CiAK
LWJvb2wgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoKQorYm9vbCBDQ0xheWVyVHJlZUhv
c3Q6OnVwZGF0ZUxheWVycyhpbnQgbGFzdFRva2VuUmVhZCkKIHsKICAgICBpZiAoIW1fbGF5ZXJS
ZW5kZXJlckluaXRpYWxpemVkKSB7CiAgICAgICAgIGluaXRpYWxpemVMYXllclJlbmRlcmVyKCk7
CkBAIC0zODIsMTEgKzM4MiwxMSBAQCBib29sIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJz
KCkKICAgICBpZiAodmlld3BvcnRTaXplKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAotICAgIHVwZGF0ZUxheWVycyhyb290TGF5ZXIoKSk7CisgICAgdXBkYXRlTGF5ZXJzKHJv
b3RMYXllcigpLCBsYXN0VG9rZW5SZWFkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBD
Q0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyhMYXllckNocm9taXVtKiByb290TGF5ZXIpCit2
b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKExheWVyQ2hyb21pdW0qIHJvb3RMYXll
ciwgaW50IGxhc3RUb2tlblJlYWQpCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9z
dDo6dXBkYXRlTGF5ZXJzIiwgdGhpcywgMCk7CiAKQEAgLTQxNCw2ICs0MTQsOSBAQCB2b2lkIEND
TGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKExheWVyQ2hyb21pdW0qIHJvb3RMYXllcikKICAg
ICAvLyBSZXNldCBwYXJ0aWFsIHRleHR1cmUgdXBkYXRlIHJlcXVlc3RzLgogICAgIG1fcGFydGlh
bFRleHR1cmVVcGRhdGVSZXF1ZXN0cyA9IDA7CiAKKyAgICAvLyBSZWxlYXNlIHRyYW5zZmVyIGJ1
ZmZlcnMgdXNlZCBmb3IgdGV4dHVyZSB1cGxvYWRzLgorICAgIG1fY29udGVudHNUZXh0dXJlTWFu
YWdlci0+c2V0TGFzdFRva2VuUmVhZChsYXN0VG9rZW5SZWFkKTsKKwogICAgIHJlc2VydmVUZXh0
dXJlcygpOwogCiAgICAgcGFpbnRMYXllckNvbnRlbnRzKG1fdXBkYXRlTGlzdCwgUGFpbnRWaXNp
YmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKaW5kZXggODlhZGU1NS4uY2JmMzI0MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKQEAgLTE4Niw3ICsxODYsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRWaXNpYmxlKGJvb2wpOwogCiAgICAgLy8gUmV0dXJucyBmYWxzZSBpZiB3
ZSBzaG91bGQgYWJvcnQgdGhpcyBmcmFtZSBkdWUgdG8gaW5pdGlhbGl6YXRpb24gZmFpbHVyZS4K
LSAgICBib29sIHVwZGF0ZUxheWVycygpOworICAgIGJvb2wgdXBkYXRlTGF5ZXJzKGludCBsYXN0
VG9rZW5SZWFkID0gMCk7CiAKICAgICB2b2lkIHN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0
IEludFNpemUmIHRhcmdldFBvc2l0aW9uLCBib29sIHVzZUFuY2hvciwgZmxvYXQgc2NhbGUsIGRv
dWJsZSBkdXJhdGlvblNlYyk7CiAKQEAgLTIxMyw3ICsyMTMsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgcGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IExheWVyTGlzdCYsIFBhaW50VHlwZSk7CiAgICAg
dm9pZCBwYWludE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShMYXllckNocm9taXVtKiwg
UGFpbnRUeXBlKTsKIAotICAgIHZvaWQgdXBkYXRlTGF5ZXJzKExheWVyQ2hyb21pdW0qKTsKKyAg
ICB2b2lkIHVwZGF0ZUxheWVycyhMYXllckNocm9taXVtKiwgaW50IGxhc3RUb2tlblJlYWQpOwog
ICAgIC8vIFByZS1yZXNlcnZlIHRleHR1cmVzIGZvciBhbnkgbGF5ZXIgbWFya2VkICJhbHdheXMg
cmVzZXJ2ZSB0ZXh0dXJlcyIKICAgICB2b2lkIHJlc2VydmVUZXh0dXJlcygpOwogICAgIHZvaWQg
Y2xlYXJQZW5kaW5nVXBkYXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHku
Y3BwCmluZGV4IGVhOGM0MGYuLmMwNzIzMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhy
ZWFkUHJveHkuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAKICNpbmNsdWRlICJjYy9DQ1NpbmdsZVRo
cmVhZFByb3h5LmgiCiAKKyNpbmNsdWRlICJFeHRlbnNpb25zM0RDaHJvbWl1bS5oIgogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVt
LmgiCiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgpAQCAtMzMsNiArMzQsOSBAQAogI2luY2x1ZGUg
ImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KIAor
I3VuZGVmIExPRworI2luY2x1ZGUgImdwdS9jb21tYW5kX2J1ZmZlci9jbGllbnQvZ2xlczJfaW1w
bGVtZW50YXRpb24uaCIKKwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIHVzaW5nIG5hbWVzcGFjZSBX
VEY7CiAKQEAgLTMwNSw3ICszMDksMTEgQEAgYm9vbCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpjb21t
aXRJZk5lZWRlZCgpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzTWFpblRocmVhZCgpKTsKIAot
ICAgIGlmICghbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKSkKKyAgICBFeHRlbnNpb25z
M0RDaHJvbWl1bSogZXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVt
Kj4oY29udGV4dCgpLT5nZXRFeHRlbnNpb25zKCkpOworICAgIGdwdTo6Z2xlczI6OkdMRVMyQ21k
SGVscGVyKiBoZWxwZXIgPSBzdGF0aWNfY2FzdDxncHU6OmdsZXMyOjpHTEVTMkNtZEhlbHBlcio+
KGV4dGVuc2lvbnMtPmhlbHBlcigpKTsKKyAgICBpbnQgbGFzdFRva2VuUmVhZCA9IGhlbHBlci0+
bGFzdF90b2tlbl9yZWFkKCk7CisKKyAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5
ZXJzKGxhc3RUb2tlblJlYWQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBkb0NvbW1p
dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAppbmRleCA3NWVmMTM2Li5lNDkyOTI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcApAQCAtMjYsNiArMjYsNyBAQAogCiAjaW5jbHVk
ZSAiY2MvQ0NUaHJlYWRQcm94eS5oIgogCisjaW5jbHVkZSAiRXh0ZW5zaW9uczNEQ2hyb21pdW0u
aCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIlRyYWNlRXZlbnQu
aCIKICNpbmNsdWRlICJjYy9DQ0RlbGF5QmFzZWRUaW1lU291cmNlLmgiCkBAIC0zOSw2ICs0MCw5
IEBACiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJl
YWQuaD4KIAorI3VuZGVmIExPRworI2luY2x1ZGUgImdwdS9jb21tYW5kX2J1ZmZlci9jbGllbnQv
Z2xlczJfaW1wbGVtZW50YXRpb24uaCIKKwogdXNpbmcgbmFtZXNwYWNlIFdURjsKIAogbmFtZXNw
YWNlIHsKQEAgLTM2Myw2ICszNjcsMTQgQEAgUGFzc093blB0cjxDQ1RocmVhZDo6VGFzaz4gQ0NU
aHJlYWRQcm94eTo6Y3JlYXRlQmVnaW5GcmFtZUFuZENvbW1pdFRhc2tPbkltcGxUaHIKICAgICBB
U1NFUlQoaXNJbXBsVGhyZWFkKCkpOwogICAgIGRvdWJsZSBmcmFtZUJlZ2luVGltZSA9IGN1cnJl
bnRUaW1lKCk7CiAKKyAgICBpbnQgbGFzdFRva2VuUmVhZCA9IDA7CisgICAgaWYgKG1fbGF5ZXJU
cmVlSG9zdEltcGwtPmNvbnRleHQoKSkgeworICAgICAgICBFeHRlbnNpb25zM0RDaHJvbWl1bSog
ZXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4obV9sYXllclRy
ZWVIb3N0SW1wbC0+Y29udGV4dCgpLT5nZXRFeHRlbnNpb25zKCkpOworICAgICAgICBncHU6Omds
ZXMyOjpHTEVTMkNtZEhlbHBlciogaGVscGVyID0gc3RhdGljX2Nhc3Q8Z3B1OjpnbGVzMjo6R0xF
UzJDbWRIZWxwZXIqPihleHRlbnNpb25zLT5oZWxwZXIoKSk7CisgICAgICAgIGlmIChoZWxwZXIp
CisgICAgICAgICAgICBsYXN0VG9rZW5SZWFkID0gaGVscGVyLT5sYXN0X3Rva2VuX3JlYWQoKTsK
KyAgICB9CisKICAgICAvLyBOT1RFLCBpdCBpcyBwb3NzaWJsZSB0byByZWNlaWV2ZSBhIHJlcXVl
c3QgZm9yIGEKICAgICAvLyBiZWdpbkZyYW1lQW5kQ29tbWl0T25JbXBsVGhyZWFkIGZyb20gZmlu
aXNoQWxsUmVuZGVyaW5nIHdoaWxlIGEKICAgICAvLyBiZWdpbkZyYW1lQW5kQ29tbWl0T25JbXBs
VGhyZWFkIGlzIGVucXVldWVkLiBTaW5jZSBDQ1RocmVhZCBkb2Vzbid0CkBAIC0zNzUsMTAgKzM4
NywxMCBAQCBQYXNzT3duUHRyPENDVGhyZWFkOjpUYXNrPiBDQ1RocmVhZFByb3h5OjpjcmVhdGVC
ZWdpbkZyYW1lQW5kQ29tbWl0VGFza09uSW1wbFRocgogICAgIGludCB0aGlzVGFza1NlcXVlbmNl
TnVtYmVyID0gbV9udW1CZWdpbkZyYW1lQW5kQ29tbWl0c0lzc3VlZE9uSW1wbFRocmVhZDsKICAg
ICBtX251bUJlZ2luRnJhbWVBbmRDb21taXRzSXNzdWVkT25JbXBsVGhyZWFkKys7CiAgICAgT3du
UHRyPENDU2Nyb2xsQW5kU2NhbGVTZXQ+IHNjcm9sbEluZm8gPSBtX2xheWVyVHJlZUhvc3RJbXBs
LT5wcm9jZXNzU2Nyb2xsRGVsdGFzKCk7Ci0gICAgcmV0dXJuIGNyZWF0ZUNDVGhyZWFkVGFzayh0
aGlzLCAmQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUFuZENvbW1pdCwgdGhpc1Rhc2tTZXF1ZW5j
ZU51bWJlciwgZnJhbWVCZWdpblRpbWUsIHNjcm9sbEluZm8ucmVsZWFzZSgpKTsKKyAgICByZXR1
cm4gY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQW5k
Q29tbWl0LCB0aGlzVGFza1NlcXVlbmNlTnVtYmVyLCBmcmFtZUJlZ2luVGltZSwgc2Nyb2xsSW5m
by5yZWxlYXNlKCksIGxhc3RUb2tlblJlYWQpOwogfQogCi12b2lkIENDVGhyZWFkUHJveHk6OmJl
Z2luRnJhbWVBbmRDb21taXQoaW50IHNlcXVlbmNlTnVtYmVyLCBkb3VibGUgZnJhbWVCZWdpblRp
bWUsIFBhc3NPd25QdHI8Q0NTY3JvbGxBbmRTY2FsZVNldD4gc2Nyb2xsSW5mbykKK3ZvaWQgQ0NU
aHJlYWRQcm94eTo6YmVnaW5GcmFtZUFuZENvbW1pdChpbnQgc2VxdWVuY2VOdW1iZXIsIGRvdWJs
ZSBmcmFtZUJlZ2luVGltZSwgUGFzc093blB0cjxDQ1Njcm9sbEFuZFNjYWxlU2V0PiBzY3JvbGxJ
bmZvLCBpbnQgbGFzdFRva2VuUmVhZCkKIHsKICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94
eTo6YmVnaW5GcmFtZUFuZENvbW1pdCIsIHRoaXMsIDApOwogICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CkBAIC00MjAsNyArNDMyLDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1l
QW5kQ29tbWl0KGludCBzZXF1ZW5jZU51bWJlciwgZG91YmxlIGZyYW1lQmVnaW5UaW0KICAgICAv
LyB1cGRhdGVMYXllcnMuCiAgICAgbV9jb21taXRSZXF1ZXN0ZWQgPSBmYWxzZTsKIAotICAgIGlm
ICghbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKSkKKyAgICBpZiAoIW1fbGF5ZXJUcmVl
SG9zdC0+dXBkYXRlTGF5ZXJzKGxhc3RUb2tlblJlYWQpKQogICAgICAgICByZXR1cm47CiAKICAg
ICAvLyBCZWZvcmUgYXBwbHlpbmcgc2Nyb2xscyBhbmQgY2FsbGluZyBhbmltYXRlLCB3ZSBzZXQg
bV9hbmltYXRlUmVxdWVzdGVkIHRvIGZhbHNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCmluZGV4
IDMzMGVmNTEuLmViOTUwZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKQEAgLTg1LDcgKzg1
LDcgQEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBDQ1RocmVhZFByb3h5KENDTGF5ZXJUcmVlSG9z
dCopOwogCiAgICAgLy8gQ2FsbGVkIG9uIG1haW4gdGhyZWFkCi0gICAgdm9pZCBiZWdpbkZyYW1l
QW5kQ29tbWl0KGludCBzZXF1ZW5jZU51bWJlciwgZG91YmxlIGZyYW1lQmVnaW5UaW1lLCBQYXNz
T3duUHRyPENDU2Nyb2xsQW5kU2NhbGVTZXQ+KTsKKyAgICB2b2lkIGJlZ2luRnJhbWVBbmRDb21t
aXQoaW50IHNlcXVlbmNlTnVtYmVyLCBkb3VibGUgZnJhbWVCZWdpblRpbWUsIFBhc3NPd25QdHI8
Q0NTY3JvbGxBbmRTY2FsZVNldD4sIGludCBsYXN0VG9rZW5SZWFkKTsKICAgICB2b2lkIGRpZENv
bW1pdEFuZERyYXdGcmFtZSgpOwogICAgIHZvaWQgZGlkQ29tcGxldGVTd2FwQnVmZmVycygpOwog
ICAgIHZvaWQgc2V0QW5pbWF0aW9uRXZlbnRzKFBhc3NPd25QdHI8Q0NBbmltYXRpb25FdmVudHNW
ZWN0b3I+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0V4dGVuc2lv
bnMzRENocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0V4dGVuc2lvbnMz
RENocm9taXVtLmNwcAppbmRleCA3MzM5N2JkLi41ZTZkOWZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9FeHRlbnNpb25zM0RDaHJvbWl1bS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvRXh0ZW5zaW9uczNEQ2hyb21pdW0uY3BwCkBAIC0xNjAsNiAr
MTYwLDExIEBAIHZvaWQgRXh0ZW5zaW9uczNEQ2hyb21pdW06OnRleFN0b3JhZ2UyREVYVCh1bnNp
Z25lZCBpbnQgdGFyZ2V0LCBpbnQgbGV2ZWxzLCB1bnNpCiAgICAgbV9wcml2YXRlLT50ZXhTdG9y
YWdlMkRFWFQodGFyZ2V0LCBsZXZlbHMsIGludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsK
IH0KIAordm9pZCogRXh0ZW5zaW9uczNEQ2hyb21pdW06OmhlbHBlcigpCit7CisgICAgcmV0dXJu
IG1fcHJpdmF0ZS0+aGVscGVyKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIEVOQUJMRShXRUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5jcHAKaW5kZXggYjA5MDBjMC4uM2Y2YWJj
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0
M0RDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3ND
b250ZXh0M0RDaHJvbWl1bS5jcHAKQEAgLTg3Nyw2ICs4NzcsMTEgQEAgREVMRUdBVEVfVE9fSU1Q
TF8xUihnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUsIFBsYXRmb3JtM0RPYmplY3QsIFN0
cmluZykKIERFTEVHQVRFX1RPX0lNUExfNSh0ZXhJbWFnZUlPU3VyZmFjZTJEQ0hST01JVU0sIEdD
M0RlbnVtLCBHQzNEaW50LCBHQzNEaW50LCBHQzNEdWludCwgR0MzRHVpbnQpCiBERUxFR0FURV9U
T19JTVBMXzUodGV4U3RvcmFnZTJERVhULCBHQzNEZW51bSwgR0MzRGludCwgR0MzRHVpbnQsIEdD
M0RpbnQsIEdDM0RpbnQpCiAKK3ZvaWQqIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6aGVscGVy
KCkKK3sKKyAgICByZXR1cm4gbV9pbXBsLT5oZWxwZXIoKTsKK30KKwogLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAvLyBHcmFwaGljc0NvbnRleHQzRAogLy8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgKaW5kZXggZDI5NmVlYi4uNmQ0ZDIw
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlLmgKQEAgLTMwNyw2ICszMDcsOCBAQCBwdWJsaWM6CiAgICAgLy8gR0xfRVhU
X3RleHR1cmVfc3RvcmFnZQogICAgIHZvaWQgdGV4U3RvcmFnZTJERVhUKEdDM0RlbnVtIHRhcmdl
dCwgR0MzRGludCBsZXZlbHMsIEdDM0R1aW50IGludGVybmFsZm9ybWF0LCBHQzNEaW50IHdpZHRo
LCBHQzNEaW50IGhlaWdodCk7CiAKKyAgICB2b2lkKiBoZWxwZXIoKTsKKwogcHJpdmF0ZToKICAg
ICBHcmFwaGljc0NvbnRleHQzRFByaXZhdGUoUGFzc093blB0cjxXZWJLaXQ6OldlYkdyYXBoaWNz
Q29udGV4dDNEPiwgYm9vbCBwcmVzZXJ2ZURyYXdpbmdCdWZmZXIpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0Zha2VXZWJHcmFwaGljc0NvbnRleHQzRC5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9GYWtlV2ViR3JhcGhpY3NDb250ZXh0M0QuaApp
bmRleCAyNjhkYzFkLi4zOTFlMjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0Zha2VXZWJHcmFwaGljc0NvbnRleHQzRC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNELmgKQEAgLTI1NSw2ICsyNTUsOCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHRleFN0b3JhZ2UyREVYVChXR0MzRGVudW0gdGFy
Z2V0LCBXR0MzRGludCBsZXZlbHMsIFdHQzNEdWludCBpbnRlcm5hbGZvcm1hdCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFdHQzNEaW50IHdpZHRoLCBXR0MzRGludCBoZWlnaHQp
IHsgfQogCisgICAgdmlydHVhbCB2b2lkKiBoZWxwZXIoKSB7IHJldHVybiAwOyB9CisKIHByb3Rl
Y3RlZDoKICAgICBBdHRyaWJ1dGVzIG1fYXR0cnM7CiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129062</attachid>
            <date>2012-02-27 10:09:59 -0800</date>
            <delta_ts>2012-02-29 12:58:43 -0800</delta_ts>
            <desc>Prototype (Chromium)</desc>
            <filename>shared-memory-chromium.diff</filename>
            <type>text/plain</type>
            <size>4066</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL2NvbnRlbnQvY29tbW9uL2dwdS9jbGllbnQvd2ViZ3JhcGhpY3Njb250ZXh0
M2RfY29tbWFuZF9idWZmZXJfaW1wbC5jYyBiL2NvbnRlbnQvY29tbW9uL2dwdS9jbGllbnQvd2Vi
Z3JhcGhpY3Njb250ZXh0M2RfY29tbWFuZF9idWZmZXJfaW1wbC5jYwppbmRleCAzZThiYTI4Li4w
YjhjMTMwIDEwMDY0NAotLS0gYS9jb250ZW50L2NvbW1vbi9ncHUvY2xpZW50L3dlYmdyYXBoaWNz
Y29udGV4dDNkX2NvbW1hbmRfYnVmZmVyX2ltcGwuY2MKKysrIGIvY29udGVudC9jb21tb24vZ3B1
L2NsaWVudC93ZWJncmFwaGljc2NvbnRleHQzZF9jb21tYW5kX2J1ZmZlcl9pbXBsLmNjCkBAIC0x
MTczLDYgKzExNzMsMTAgQEAgREVMRUdBVEVfVE9fR0xfNSh0ZXhJbWFnZUlPU3VyZmFjZTJEQ0hS
T01JVU0sIFRleEltYWdlSU9TdXJmYWNlMkRDSFJPTUlVTSwKIERFTEVHQVRFX1RPX0dMXzUodGV4
U3RvcmFnZTJERVhULCBUZXhTdG9yYWdlMkRFWFQsCiAgICAgICAgICAgICAgICAgIFdHQzNEZW51
bSwgV0dDM0RpbnQsIFdHQzNEdWludCwgV0dDM0RpbnQsIFdHQzNEaW50KQogCit2b2lkKiBXZWJH
cmFwaGljc0NvbnRleHQzRENvbW1hbmRCdWZmZXJJbXBsOjpoZWxwZXIoKSB7CisgIHJldHVybiBn
bF8tPmhlbHBlcigpOworfQorCiAjaWYgV0VCS0lUX1VTSU5HX1NLSUEKIEdyR0xJbnRlcmZhY2Uq
IFdlYkdyYXBoaWNzQ29udGV4dDNEQ29tbWFuZEJ1ZmZlckltcGw6Om9uQ3JlYXRlR3JHTEludGVy
ZmFjZSgpIHsKICAgcmV0dXJuIHdlYmtpdF9nbHVlOjpDcmVhdGVDb21tYW5kQnVmZmVyU2tpYUdM
QmluZGluZygpOwpkaWZmIC0tZ2l0IGEvY29udGVudC9jb21tb24vZ3B1L2NsaWVudC93ZWJncmFw
aGljc2NvbnRleHQzZF9jb21tYW5kX2J1ZmZlcl9pbXBsLmggYi9jb250ZW50L2NvbW1vbi9ncHUv
Y2xpZW50L3dlYmdyYXBoaWNzY29udGV4dDNkX2NvbW1hbmRfYnVmZmVyX2ltcGwuaAppbmRleCA2
NmM4ZTBlLi43OWU2MTc0IDEwMDY0NAotLS0gYS9jb250ZW50L2NvbW1vbi9ncHUvY2xpZW50L3dl
YmdyYXBoaWNzY29udGV4dDNkX2NvbW1hbmRfYnVmZmVyX2ltcGwuaAorKysgYi9jb250ZW50L2Nv
bW1vbi9ncHUvY2xpZW50L3dlYmdyYXBoaWNzY29udGV4dDNkX2NvbW1hbmRfYnVmZmVyX2ltcGwu
aApAQCAtNDgxLDYgKzQ4MSw4IEBAIGNsYXNzIFdlYkdyYXBoaWNzQ29udGV4dDNEQ29tbWFuZEJ1
ZmZlckltcGwKICAgICAgIFdHQzNEZW51bSB0YXJnZXQsIFdHQzNEaW50IGxldmVscywgV0dDM0R1
aW50IGludGVybmFsZm9ybWF0LAogICAgICAgV0dDM0RpbnQgd2lkdGgsIFdHQzNEaW50IGhlaWdo
dCk7CiAKKyAgdmlydHVhbCB2b2lkKiBoZWxwZXIoKTsKKwogICBDb250ZW50R0xDb250ZXh0KiBj
b250ZW50X2dsX2NvbnRleHQoKSBjb25zdCB7IHJldHVybiBjb250ZXh0XzsgfQogCiAgcHJvdGVj
dGVkOgpkaWZmIC0tZ2l0IGEvd2Via2l0L2dwdS93ZWJncmFwaGljc2NvbnRleHQzZF9pbl9wcm9j
ZXNzX2NvbW1hbmRfYnVmZmVyX2ltcGwuY2MgYi93ZWJraXQvZ3B1L3dlYmdyYXBoaWNzY29udGV4
dDNkX2luX3Byb2Nlc3NfY29tbWFuZF9idWZmZXJfaW1wbC5jYwppbmRleCBhMWY3MzViLi4xODMz
YzIxIDEwMDY0NAotLS0gYS93ZWJraXQvZ3B1L3dlYmdyYXBoaWNzY29udGV4dDNkX2luX3Byb2Nl
c3NfY29tbWFuZF9idWZmZXJfaW1wbC5jYworKysgYi93ZWJraXQvZ3B1L3dlYmdyYXBoaWNzY29u
dGV4dDNkX2luX3Byb2Nlc3NfY29tbWFuZF9idWZmZXJfaW1wbC5jYwpAQCAtMTU1Niw2ICsxNTU2
LDExIEBAIERFTEVHQVRFX1RPX0dMXzUodGV4SW1hZ2VJT1N1cmZhY2UyRENIUk9NSVVNLCBUZXhJ
bWFnZUlPU3VyZmFjZTJEQ0hST01JVU0sCiBERUxFR0FURV9UT19HTF81KHRleFN0b3JhZ2UyREVY
VCwgVGV4U3RvcmFnZTJERVhULAogICAgICAgICAgICAgICAgICBXR0MzRGVudW0sIFdHQzNEaW50
LCBXR0MzRHVpbnQsIFdHQzNEaW50LCBXR0MzRGludCkKIAordm9pZCogV2ViR3JhcGhpY3NDb250
ZXh0M0RJblByb2Nlc3NDb21tYW5kQnVmZmVySW1wbDo6aGVscGVyKCkKK3sKKyAgcmV0dXJuIDA7
Cit9CisKICNpZiBXRUJLSVRfVVNJTkdfU0tJQQogR3JHTEludGVyZmFjZSogV2ViR3JhcGhpY3ND
b250ZXh0M0RJblByb2Nlc3NDb21tYW5kQnVmZmVySW1wbDo6CiAgICAgb25DcmVhdGVHckdMSW50
ZXJmYWNlKCkgewpkaWZmIC0tZ2l0IGEvd2Via2l0L2dwdS93ZWJncmFwaGljc2NvbnRleHQzZF9p
bl9wcm9jZXNzX2NvbW1hbmRfYnVmZmVyX2ltcGwuaCBiL3dlYmtpdC9ncHUvd2ViZ3JhcGhpY3Nj
b250ZXh0M2RfaW5fcHJvY2Vzc19jb21tYW5kX2J1ZmZlcl9pbXBsLmgKaW5kZXggZmNjZTg4Yi4u
ZmYyNTY5ZCAxMDA2NDQKLS0tIGEvd2Via2l0L2dwdS93ZWJncmFwaGljc2NvbnRleHQzZF9pbl9w
cm9jZXNzX2NvbW1hbmRfYnVmZmVyX2ltcGwuaAorKysgYi93ZWJraXQvZ3B1L3dlYmdyYXBoaWNz
Y29udGV4dDNkX2luX3Byb2Nlc3NfY29tbWFuZF9idWZmZXJfaW1wbC5oCkBAIC00NjEsNiArNDYx
LDggQEAgY2xhc3MgV2ViR3JhcGhpY3NDb250ZXh0M0RJblByb2Nlc3NDb21tYW5kQnVmZmVySW1w
bAogICAgICAgV0dDM0RlbnVtIHRhcmdldCwgV0dDM0RpbnQgbGV2ZWxzLCBXR0MzRHVpbnQgaW50
ZXJuYWxmb3JtYXQsCiAgICAgICBXR0MzRGludCB3aWR0aCwgV0dDM0RpbnQgaGVpZ2h0KTsKIAor
ICB2aXJ0dWFsIHZvaWQqIGhlbHBlcigpOworCiAgcHJvdGVjdGVkOgogI2lmIFdFQktJVF9VU0lO
R19TS0lBCiAgIHZpcnR1YWwgR3JHTEludGVyZmFjZSogb25DcmVhdGVHckdMSW50ZXJmYWNlKCk7
CmRpZmYgLS1naXQgYS93ZWJraXQvZ3B1L3dlYmdyYXBoaWNzY29udGV4dDNkX2luX3Byb2Nlc3Nf
aW1wbC5jYyBiL3dlYmtpdC9ncHUvd2ViZ3JhcGhpY3Njb250ZXh0M2RfaW5fcHJvY2Vzc19pbXBs
LmNjCmluZGV4IDhmNTAxMzcuLmM4ZGY4ODQgMTAwNjQ0Ci0tLSBhL3dlYmtpdC9ncHUvd2ViZ3Jh
cGhpY3Njb250ZXh0M2RfaW5fcHJvY2Vzc19pbXBsLmNjCisrKyBiL3dlYmtpdC9ncHUvd2ViZ3Jh
cGhpY3Njb250ZXh0M2RfaW5fcHJvY2Vzc19pbXBsLmNjCkBAIC0xNjM0LDYgKzE2MzQsMTEgQEAg
dm9pZCBXZWJHcmFwaGljc0NvbnRleHQzREluUHJvY2Vzc0ltcGw6OnRleEltYWdlSU9TdXJmYWNl
MkRDSFJPTUlVTSgKIERFTEVHQVRFX1RPX0dMXzUodGV4U3RvcmFnZTJERVhULCBUZXhTdG9yYWdl
MkRFWFQsCiAgICAgICAgICAgICAgICAgIFdHQzNEZW51bSwgV0dDM0RpbnQsIFdHQzNEdWludCwg
V0dDM0RpbnQsIFdHQzNEaW50KQogCit2b2lkKiBXZWJHcmFwaGljc0NvbnRleHQzREluUHJvY2Vz
c0ltcGw6OmhlbHBlcigpCit7CisgIHJldHVybiAwOworfQorCiAjaWYgV0VCS0lUX1VTSU5HX1NL
SUEKIEdyR0xJbnRlcmZhY2UqIFdlYkdyYXBoaWNzQ29udGV4dDNESW5Qcm9jZXNzSW1wbDo6b25D
cmVhdGVHckdMSW50ZXJmYWNlKCkgewogICByZXR1cm4gZ2Z4OjpDcmVhdGVJblByb2Nlc3NTa2lh
R0xCaW5kaW5nKCk7CmRpZmYgLS1naXQgYS93ZWJraXQvZ3B1L3dlYmdyYXBoaWNzY29udGV4dDNk
X2luX3Byb2Nlc3NfaW1wbC5oIGIvd2Via2l0L2dwdS93ZWJncmFwaGljc2NvbnRleHQzZF9pbl9w
cm9jZXNzX2ltcGwuaAppbmRleCAzN2Q5ZTE1Li44ZmY5Mzg0IDEwMDY0NAotLS0gYS93ZWJraXQv
Z3B1L3dlYmdyYXBoaWNzY29udGV4dDNkX2luX3Byb2Nlc3NfaW1wbC5oCisrKyBiL3dlYmtpdC9n
cHUvd2ViZ3JhcGhpY3Njb250ZXh0M2RfaW5fcHJvY2Vzc19pbXBsLmgKQEAgLTQ1OCw2ICs0NTgs
OCBAQCBjbGFzcyBXZWJHcmFwaGljc0NvbnRleHQzREluUHJvY2Vzc0ltcGwgOiBwdWJsaWMgV2Vi
R3JhcGhpY3NDb250ZXh0M0QgewogICAgICAgV0dDM0RlbnVtIHRhcmdldCwgV0dDM0RpbnQgbGV2
ZWxzLCBXR0MzRHVpbnQgaW50ZXJuYWxmb3JtYXQsCiAgICAgICBXR0MzRGludCB3aWR0aCwgV0dD
M0RpbnQgaGVpZ2h0KTsKIAorICB2aXJ0dWFsIHZvaWQqIGhlbHBlcigpOworCiAgcHJvdGVjdGVk
OgogI2lmIFdFQktJVF9VU0lOR19TS0lBCiAgIHZpcnR1YWwgR3JHTEludGVyZmFjZSogb25DcmVh
dGVHckdMSW50ZXJmYWNlKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129496</attachid>
            <date>2012-02-29 12:58:10 -0800</date>
            <delta_ts>2012-03-20 14:57:39 -0700</delta_ts>
            <desc>Prototype (WebKit)</desc>
            <filename>shared-memory-webkit.diff</filename>
            <type>text/plain</type>
            <size>27155</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViR3JhcGhpY3ND
b250ZXh0M0QuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViR3JhcGhpY3ND
b250ZXh0M0QuaAppbmRleCAyZjgwNGQ1Li5hM2JiYmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxh
dGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmgKKysrIGIvU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oCkBAIC0zOTks
NiArMzk5LDggQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0dD
M0RpbnQgd2lkdGgsIFdHQzNEaW50IGhlaWdodCkgeyB9CiAKIAorICAgIHZpcnR1YWwgdm9pZCog
aGVscGVyKCkgPSAwOworCiAjaWYgV0VCS0lUX1VTSU5HX1NLSUEKICAgICBHckdMSW50ZXJmYWNl
KiBjcmVhdGVHckdMSW50ZXJmYWNlKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKaW5kZXgg
OWI5MTJhNC4uNWE5ZDEzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFw
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTQ2LDIwICs0NiwzMyBA
QCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0
dXJlKEJpdG1hcFNrUGljdHVyZUNhbnZhcwogdm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpwcmVwYXJlUmVjdChjb25zdCBJbnRSZWN0JiBzb3Vy
Y2VSZWN0KQogewogICAgIG1fYml0bWFwLnNldENvbmZpZyhTa0JpdG1hcDo6a0FSR0JfODg4OF9D
b25maWcsIHNvdXJjZVJlY3Qud2lkdGgoKSwgc291cmNlUmVjdC5oZWlnaHQoKSk7Ci0gICAgbV9i
aXRtYXAuYWxsb2NQaXhlbHMoKTsKKworICAgIHZvaWQqIHBpeGVsRGVzdCA9IHRleHR1cmUoKS0+
bWFwVHJhbnNmZXJCdWZmZXIoKTsKKyAgICBpZiAocGl4ZWxEZXN0KQorICAgICAgICBtX2JpdG1h
cC5zZXRQaXhlbHMocGl4ZWxEZXN0KTsKKyAgICBlbHNlCisgICAgICAgIG1fYml0bWFwLmFsbG9j
UGl4ZWxzKCk7CisKICAgICBtX2JpdG1hcC5zZXRJc09wYXF1ZShtX3RleHR1cmVVcGRhdGVyLT5s
YXllcklzT3BhcXVlKCkpOwogICAgIFNrRGV2aWNlIGRldmljZShtX2JpdG1hcCk7CiAgICAgU2tD
YW52YXMgY2FudmFzKCZkZXZpY2UpOwogICAgIHRleHR1cmVVcGRhdGVyKCktPnBhaW50Q29udGVu
dHNSZWN0KCZjYW52YXMsIHNvdXJjZVJlY3QpOworCisgICAgaWYgKHBpeGVsRGVzdCkKKyAgICAg
ICAgbV9iaXRtYXAuc2V0SW1tdXRhYmxlKCk7CiB9CiAKIHZvaWQgQml0bWFwU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdChHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0
JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKIHsKICAgICB0ZXh0dXJlKCkt
PmJpbmRUZXh0dXJlKGNvbnRleHQsIGFsbG9jYXRvcik7CiAKLSAgICBtX2JpdG1hcC5sb2NrUGl4
ZWxzKCk7Ci0gICAgdGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlVGV4dHVyZVJlY3QoY29udGV4dCwg
dGV4dHVyZSgpLT5mb3JtYXQoKSwgZGVzdFJlY3QsIHN0YXRpY19jYXN0PHVpbnQ4X3QqPihtX2Jp
dG1hcC5nZXRQaXhlbHMoKSkpOwotICAgIG1fYml0bWFwLnVubG9ja1BpeGVscygpOworICAgIGlm
ICghbV9iaXRtYXAuaXNJbW11dGFibGUoKSkgeworICAgICAgICBtX2JpdG1hcC5sb2NrUGl4ZWxz
KCk7CisgICAgICAgIHRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRleHR1cmVSZWN0KGNvbnRleHQs
IHRleHR1cmUoKS0+Zm9ybWF0KCksIGRlc3RSZWN0LCBzdGF0aWNfY2FzdDx1aW50OF90Kj4obV9i
aXRtYXAuZ2V0UGl4ZWxzKCkpKTsKKyAgICAgICAgbV9iaXRtYXAudW5sb2NrUGl4ZWxzKCk7Cisg
ICAgfSBlbHNlCisgICAgICAgIHRleHR1cmUoKS0+dGV4U3ViSW1hZ2UyRFRyYW5zZmVyQnVmZmVy
KGNvbnRleHQsIGRlc3RSZWN0KTsKKwogICAgIG1fYml0bWFwLnJlc2V0KCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0V4dGVuc2lv
bnMzRENocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9FeHRlbnNpb25zM0RDaHJvbWl1bS5oCmluZGV4IDUzMzIyZjAuLjdlY2NlNDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0V4dGVuc2lvbnMz
RENocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vRXh0ZW5zaW9uczNEQ2hyb21pdW0uaApAQCAtMTIwLDYgKzEyMCw4IEBAIHB1YmxpYzoKICAg
ICAvLyBHTF9FWFRfdGV4dHVyZV9zdG9yYWdlCiAgICAgdm9pZCB0ZXhTdG9yYWdlMkRFWFQodW5z
aWduZWQgdGFyZ2V0LCBpbnQgbGV2ZWxzLCB1bnNpZ25lZCBpbnRlcm5hbGZvcm1hdCwgaW50IHdp
ZHRoLCBpbnQgaGVpZ2h0KTsKIAorICAgIHZvaWQqIGhlbHBlcigpOworCiBwcml2YXRlOgogICAg
IC8vIEluc3RhbmNlcyBvZiB0aGlzIGNsYXNzIGFyZSBzdHJpY3RseSBvd25lZCBieSB0aGUgR3Jh
cGhpY3NDb250ZXh0M0QgaW1wbGVtZW50YXRpb24gYW5kIGRvIG5vdAogICAgIC8vIG5lZWQgdG8g
YmUgaW5zdGFudGlhdGVkIGJ5IGFueSBvdGhlciBjb2RlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuY3Bw
CmluZGV4IDliYzcwMGQuLjRkNTgxMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5jcHAKQEAgLTEx
MCw2ICsxMTAsMTkgQEAgdm9pZCBNYW5hZ2VkVGV4dHVyZTo6dW5yZXNlcnZlKCkKICAgICBtX3Rl
eHR1cmVNYW5hZ2VyLT51bnByb3RlY3RUZXh0dXJlKG1fdG9rZW4pOwogfQogCit2b2lkKiBNYW5h
Z2VkVGV4dHVyZTo6bWFwVHJhbnNmZXJCdWZmZXIoKQoreworICAgIEFTU0VSVChtX3RleHR1cmVN
YW5hZ2VyLT5oYXNUZXh0dXJlKG1fdG9rZW4pKTsKKyAgICByZXR1cm4gbV90ZXh0dXJlTWFuYWdl
ci0+bWFwVHJhbnNmZXJCdWZmZXIobV90b2tlbik7Cit9CisKKwordm9pZCBNYW5hZ2VkVGV4dHVy
ZTo6dGV4U3ViSW1hZ2UyRFRyYW5zZmVyQnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3sKKyAgICBBU1NFUlQobV90ZXh0dXJlTWFuYWdl
ci0+aGFzVGV4dHVyZShtX3Rva2VuKSk7CisgICAgbV90ZXh0dXJlTWFuYWdlci0+dGV4U3ViSW1h
Z2UyRFRyYW5zZmVyQnVmZmVyKGNvbnRleHQsIGRlc3RSZWN0LCBtX3Rva2VuKTsKK30KKwogdm9p
ZCBNYW5hZ2VkVGV4dHVyZTo6YWxsb2NhdGUoVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQog
ewogICAgIEFTU0VSVChtX3RleHR1cmVNYW5hZ2VyLT5oYXNUZXh0dXJlKG1fdG9rZW4pKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFn
ZWRUZXh0dXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9N
YW5hZ2VkVGV4dHVyZS5oCmluZGV4IGVkNGQ0NTAuLmVkZDVmYjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1
cmUuaApAQCAtNTcsNiArNTcsOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX3RleHR1cmVN
YW5hZ2VyICYmIG1fdGV4dHVyZU1hbmFnZXItPmlzUHJvdGVjdGVkKG1fdG9rZW4pOwogICAgIH0K
IAorICAgIHZvaWQqIG1hcFRyYW5zZmVyQnVmZmVyKCk7CisgICAgdm9pZCB0ZXhTdWJJbWFnZTJE
VHJhbnNmZXJCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBJbnRSZWN0JiBkZXN0UmVj
dCk7CisKICAgICB2b2lkIGFsbG9jYXRlKFRleHR1cmVBbGxvY2F0b3IqKTsKICAgICB2b2lkIGJp
bmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciopOwogICAgIHZv
aWQgZnJhbWVidWZmZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2Nh
dG9yKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9UZXh0dXJlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5jcHAKaW5kZXggMGM2ZmUxNC4uZTMwNTQ0MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVy
ZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1RleHR1cmVNYW5hZ2VyLmNwcApAQCAtMjgsOCArMjgsMTUgQEAKIAogI2luY2x1ZGUgIlRl
eHR1cmVNYW5hZ2VyLmgiCiAKKyNpbmNsdWRlICJFeHRlbnNpb25zM0RDaHJvbWl1bS5oIgogI2lu
Y2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJl
LmgiCisjaW5jbHVkZSAiU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QuaCIKKworI3VuZGVmIExPRwor
I2luY2x1ZGUgImJhc2UvcHJvY2Vzc191dGlsLmgiCisjaW5jbHVkZSAiYmFzZS9zaGFyZWRfbWVt
b3J5LmgiCisjaW5jbHVkZSAiZ3B1L2NvbW1hbmRfYnVmZmVyL2NsaWVudC9nbGVzMl9pbXBsZW1l
bnRhdGlvbi5oIgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCkBAIC00Myw2ICs1MCwxNSBAQCBz
aXplX3QgbWVtb3J5TGltaXRCeXRlcyhzaXplX3Qgdmlld3BvcnRNdWx0aXBsaWVyLCBjb25zdCBJ
bnRTaXplJiB2aWV3cG9ydFNpemUsCiAgICAgICAgIHJldHVybiBtaW5NZWdhYnl0ZXMgKiAxMDI0
ICogMTAyNDsKICAgICByZXR1cm4gbWF4KG1pbk1lZ2FieXRlcyAqIDEwMjQgKiAxMDI0LCBtaW4o
bWF4TWVnYWJ5dGVzICogMTAyNCAqIDEwMjQsIHZpZXdwb3J0TXVsdGlwbGllciAqIFRleHR1cmVN
YW5hZ2VyOjptZW1vcnlVc2VCeXRlcyh2aWV3cG9ydFNpemUsIEdyYXBoaWNzQ29udGV4dDNEOjpS
R0JBKSkpOwogfQorZ3B1OjpDb21tYW5kQnVmZmVyKiBjb21tYW5kQnVmZmVyKCkKK3sKKyAgICBH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCA9IFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEOjpnZXQo
KTsKKyAgICBBU1NFUlQoY29udGV4dCk7CisgICAgRXh0ZW5zaW9uczNEQ2hyb21pdW0qIGV4dGVu
c2lvbnMgPSBzdGF0aWNfY2FzdDxFeHRlbnNpb25zM0RDaHJvbWl1bSo+KGNvbnRleHQtPmdldEV4
dGVuc2lvbnMoKSk7CisgICAgZ3B1OjpnbGVzMjo6R0xFUzJDbWRIZWxwZXIqIGhlbHBlciA9IHN0
YXRpY19jYXN0PGdwdTo6Z2xlczI6OkdMRVMyQ21kSGVscGVyKj4oZXh0ZW5zaW9ucy0+aGVscGVy
KCkpOworICAgIEFTU0VSVChoZWxwZXIpOworICAgIHJldHVybiBoZWxwZXItPmNvbW1hbmRfYnVm
ZmVyKCk7Cit9CiB9CiAKIHNpemVfdCBUZXh0dXJlTWFuYWdlcjo6aGlnaExpbWl0Qnl0ZXMoY29u
c3QgSW50U2l6ZSYgdmlld3BvcnRTaXplKQpAQCAtMTAxLDYgKzExNyw5IEBAIFRleHR1cmVNYW5h
Z2VyOjpUZXh0dXJlTWFuYWdlcihzaXplX3QgbWF4TWVtb3J5TGltaXRCeXRlcywgc2l6ZV90IHBy
ZWZlcnJlZE1lbW9yCiAgICAgLCBtX21lbW9yeVVzZUJ5dGVzKDApCiAgICAgLCBtX21heFRleHR1
cmVTaXplKG1heFRleHR1cmVTaXplKQogICAgICwgbV9uZXh0VG9rZW4oMSkKKyAgICAsIG1fbmV4
dFRyYW5zZmVyQnVmZmVyVG9rZW4oMSkKKyAgICAsIG1fbGFzdFRva2VuUmVhZCgwKQorICAgICwg
bV90cmFuc2ZlckJ1ZmZlck1lbW9yeVVzZUJ5dGVzKDApCiB7CiB9CiAKQEAgLTE5Miw2ICsyMTEs
MTIgQEAgdm9pZCBUZXh0dXJlTWFuYWdlcjo6ZXZpY3RUZXh0dXJlKFRleHR1cmVUb2tlbiB0b2tl
biwgVGV4dHVyZUluZm8gaW5mbykKIAogdm9pZCBUZXh0dXJlTWFuYWdlcjo6cmVkdWNlTWVtb3J5
VG9MaW1pdChzaXplX3QgbGltaXQpCiB7CisgICAgLy8gUmVkdWNlIHRyYW5zZmVyIGJ1ZmZlciBt
ZW1vcnkgcmVsYXRpdmUgdG8gdGV4dHVyZSBtZW1vcnkgcmVkdWN0aW9uLgorICAgIHNpemVfdCB0
cmFuc2ZlckJ1ZmZlckxpbWl0ID0gbV90cmFuc2ZlckJ1ZmZlck1lbW9yeVVzZUJ5dGVzOworCisg
ICAgaWYgKG1fbWVtb3J5VXNlQnl0ZXMpCisgICAgICAgIHRyYW5zZmVyQnVmZmVyTGltaXQgPSBt
X3RyYW5zZmVyQnVmZmVyTWVtb3J5VXNlQnl0ZXMgLSAoKG1fbWVtb3J5VXNlQnl0ZXMgLSBsaW1p
dCkgKiBtX3RyYW5zZmVyQnVmZmVyTWVtb3J5VXNlQnl0ZXMpIC8gbV9tZW1vcnlVc2VCeXRlczsK
KwogICAgIHdoaWxlIChtX21lbW9yeVVzZUJ5dGVzID4gbGltaXQpIHsKICAgICAgICAgQVNTRVJU
KCFtX3RleHR1cmVMUlVTZXQuaXNFbXB0eSgpKTsKICAgICAgICAgYm9vbCBmb3VuZENhbmRpZGF0
ZSA9IGZhbHNlOwpAQCAtMjA3LDYgKzIzMiwyMSBAQCB2b2lkIFRleHR1cmVNYW5hZ2VyOjpyZWR1
Y2VNZW1vcnlUb0xpbWl0KHNpemVfdCBsaW1pdCkKICAgICAgICAgaWYgKCFmb3VuZENhbmRpZGF0
ZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CisKKyAgICB3aGlsZSAobV90cmFuc2ZlckJ1
ZmZlck1lbW9yeVVzZUJ5dGVzID4gdHJhbnNmZXJCdWZmZXJMaW1pdCkgeworICAgICAgICBib29s
IGZvdW5kQ2FuZGlkYXRlID0gZmFsc2U7CisgICAgICAgIGZvciAoVHJhbnNmZXJCdWZmZXJNYXA6
Oml0ZXJhdG9yIGl0ID0gbV90cmFuc2ZlckJ1ZmZlcnMuYmVnaW4oKTsgaXQgIT0gbV90cmFuc2Zl
ckJ1ZmZlcnMuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgICAgIGlmIChpdC0+c2Vjb25kLmlzUHJv
dGVjdGVkKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKGl0LT5z
ZWNvbmQuZmVuY2UgPiBtX2xhc3RUb2tlblJlYWQpCisgICAgICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgICAgICBldmljdFRyYW5zZmVyQnVmZmVyKGl0LT5maXJzdCwgaXQtPnNlY29uZCk7
CisgICAgICAgICAgICBmb3VuZENhbmRpZGF0ZSA9IHRydWU7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgICAgICBpZiAoIWZvdW5kQ2FuZGlkYXRlKQorICAgICAgICAgICAgcmV0
dXJuOworICAgIH0KIH0KIAogdm9pZCBUZXh0dXJlTWFuYWdlcjo6YWRkVGV4dHVyZShUZXh0dXJl
VG9rZW4gdG9rZW4sIFRleHR1cmVJbmZvIGluZm8pCkBAIC0yMjAsNiArMjYwLDggQEAgdm9pZCBU
ZXh0dXJlTWFuYWdlcjo6YWRkVGV4dHVyZShUZXh0dXJlVG9rZW4gdG9rZW4sIFRleHR1cmVJbmZv
IGluZm8pCiAKIHZvaWQgVGV4dHVyZU1hbmFnZXI6OmRlbGV0ZUV2aWN0ZWRUZXh0dXJlcyhUZXh0
dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCiB7CisgICAgVFJBQ0VfRVZFTlQoIlRleHR1cmVNYW5h
Z2VyOjpkZWxldGVFdmljdGVkVGV4dHVyZXMiLCB0aGlzLCAwKTsKKwogICAgIGlmIChhbGxvY2F0
b3IpIHsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2V2aWN0ZWRUZXh0dXJlcy5z
aXplKCk7ICsraSkgewogICAgICAgICAgICAgaWYgKG1fZXZpY3RlZFRleHR1cmVzW2ldLnRleHR1
cmVJZCkgewpAQCAtMjI5LDggKzI3MSwyMCBAQCB2b2lkIFRleHR1cmVNYW5hZ2VyOjpkZWxldGVF
dmljdGVkVGV4dHVyZXMoVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQogICAgICAgICAgICAg
ICAgIGFsbG9jYXRvci0+ZGVsZXRlVGV4dHVyZShtX2V2aWN0ZWRUZXh0dXJlc1tpXS50ZXh0dXJl
SWQsIG1fZXZpY3RlZFRleHR1cmVzW2ldLnNpemUsIG1fZXZpY3RlZFRleHR1cmVzW2ldLmZvcm1h
dCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgLy8gRGVsZXRlIGV2aWN0ZWQg
dHJhbnNmZXIgYnVmZmVycy4KKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2V2aWN0
ZWRUcmFuc2ZlckJ1ZmZlcnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChtX2V2aWN0
ZWRUcmFuc2ZlckJ1ZmZlcnNbaV0gIT0gLTEpIHsKKyAgICAgICAgICAgICAgICBFeHRlbnNpb25z
M0RDaHJvbWl1bSogZXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVt
Kj4oYWxsb2NhdG9yLT5jb250ZXh0KCktPmdldEV4dGVuc2lvbnMoKSk7CisgICAgICAgICAgICAg
ICAgZ3B1OjpnbGVzMjo6R0xFUzJDbWRIZWxwZXIqIGhlbHBlciA9IHN0YXRpY19jYXN0PGdwdTo6
Z2xlczI6OkdMRVMyQ21kSGVscGVyKj4oZXh0ZW5zaW9ucy0+aGVscGVyKCkpOworICAgICAgICAg
ICAgICAgIEFTU0VSVChoZWxwZXIpOworICAgICAgICAgICAgICAgIGdwdTo6Q29tbWFuZEJ1ZmZl
ciogY21kQnVmID0gaGVscGVyLT5jb21tYW5kX2J1ZmZlcigpOworICAgICAgICAgICAgICAgIGNt
ZEJ1Zi0+RGVzdHJveVRyYW5zZmVyQnVmZmVyKG1fZXZpY3RlZFRyYW5zZmVyQnVmZmVyc1tpXSk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9CisKICAgICBtX2V2aWN0ZWRUZXh0dXJl
cy5jbGVhcigpOworICAgIG1fZXZpY3RlZFRyYW5zZmVyQnVmZmVycy5jbGVhcigpOwogfQogCiB2
b2lkIFRleHR1cmVNYW5hZ2VyOjpldmljdEFuZERlbGV0ZUFsbFRleHR1cmVzKFRleHR1cmVBbGxv
Y2F0b3IqIGFsbG9jYXRvcikKQEAgLTI0NCw2ICsyOTgsNyBAQCB2b2lkIFRleHR1cmVNYW5hZ2Vy
OjpyZW1vdmVUZXh0dXJlKFRleHR1cmVUb2tlbiB0b2tlbiwgVGV4dHVyZUluZm8gaW5mbykKIHsK
ICAgICBBU1NFUlQobV90ZXh0dXJlTFJVU2V0LmNvbnRhaW5zKHRva2VuKSk7CiAgICAgQVNTRVJU
KG1fdGV4dHVyZXMuY29udGFpbnModG9rZW4pKTsKKyAgICBBU1NFUlQoIWluZm8uYnVmZmVyKTsK
ICAgICBtX21lbW9yeVVzZUJ5dGVzIC09IG1lbW9yeVVzZUJ5dGVzKGluZm8uc2l6ZSwgaW5mby5m
b3JtYXQpOwogICAgIG1fdGV4dHVyZXMucmVtb3ZlKHRva2VuKTsKICAgICBBU1NFUlQobV90ZXh0
dXJlTFJVU2V0LmNvbnRhaW5zKHRva2VuKSk7CkBAIC0yNzAsNiArMzI1LDcgQEAgdW5zaWduZWQg
VGV4dHVyZU1hbmFnZXI6OmFsbG9jYXRlVGV4dHVyZShUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0
b3IsIFRleHR1cmVUb2sKICNpZm5kZWYgTkRFQlVHCiAgICAgaW5mby0+YWxsb2NhdG9yID0gYWxs
b2NhdG9yOwogI2VuZGlmCisKICAgICByZXR1cm4gdGV4dHVyZUlkOwogfQogCkBAIC0yOTcsNiAr
MzUzLDcgQEAgYm9vbCBUZXh0dXJlTWFuYWdlcjo6cmVxdWVzdFRleHR1cmUoVGV4dHVyZVRva2Vu
IHRva2VuLCBJbnRTaXplIHNpemUsIHVuc2lnbmVkIGYKICAgICBpbmZvLmZvcm1hdCA9IGZvcm1h
dDsKICAgICBpbmZvLnRleHR1cmVJZCA9IDA7CiAgICAgaW5mby5pc1Byb3RlY3RlZCA9IHRydWU7
CisgICAgaW5mby5idWZmZXIgPSAwOwogI2lmbmRlZiBOREVCVUcKICAgICBpbmZvLmFsbG9jYXRv
ciA9IDA7CiAjZW5kaWYKQEAgLTMwNCw2ICszNjEsMTEzIEBAIGJvb2wgVGV4dHVyZU1hbmFnZXI6
OnJlcXVlc3RUZXh0dXJlKFRleHR1cmVUb2tlbiB0b2tlbiwgSW50U2l6ZSBzaXplLCB1bnNpZ25l
ZCBmCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK1RyYW5zZmVyQnVmZmVyVG9rZW4gVGV4dHVyZU1h
bmFnZXI6OmdldFRyYW5zZmVyQnVmZmVyVG9rZW4oKQoreworICAgIHJldHVybiBtX25leHRUcmFu
c2ZlckJ1ZmZlclRva2VuKys7Cit9CisKK2ludCBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlVHJhbnNm
ZXJCdWZmZXIoVHJhbnNmZXJCdWZmZXJUb2tlbiB0b2tlbiwgc2l6ZV90IGJ5dGVzKQoreworICAg
IFRSQUNFX0VWRU5UKCJUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlVHJhbnNmZXJCdWZmZXIiLCB0aGlz
LCAwKTsKKyAgICBpbnQgc2htSWQgPSBjb21tYW5kQnVmZmVyKCktPkNyZWF0ZVRyYW5zZmVyQnVm
ZmVyKGJ5dGVzLCAtMSk7CisgICAgVHJhbnNmZXJCdWZmZXJJbmZvIGJ1ZmZlcjsKKyAgICBidWZm
ZXIuc2l6ZSA9IGJ5dGVzOworICAgIGJ1ZmZlci5zaG1JZCA9IHNobUlkOworICAgIGJ1ZmZlci5y
ZWdpc3RlcmVkU2htSWQgPSAtMTsKKyAgICBidWZmZXIuZmVuY2UgPSAwOworICAgIGJ1ZmZlci5p
c1Byb3RlY3RlZCA9IHRydWU7CisgICAgYnVmZmVyLnNoYXJlZE1lbW9yeSA9IGNvbW1hbmRCdWZm
ZXIoKS0+R2V0VHJhbnNmZXJCdWZmZXIoc2htSWQpLnNoYXJlZF9tZW1vcnk7CisgICAgYWRkVHJh
bnNmZXJCdWZmZXIodG9rZW4sIGJ1ZmZlcik7CisgICAgcmV0dXJuIHNobUlkOworfQorCit2b2lk
IFRleHR1cmVNYW5hZ2VyOjphZGRUcmFuc2ZlckJ1ZmZlcihUcmFuc2ZlckJ1ZmZlclRva2VuIHRv
a2VuLCBUcmFuc2ZlckJ1ZmZlckluZm8gaW5mbykKK3sKKyAgICBBU1NFUlQoIW1fdHJhbnNmZXJC
dWZmZXJzLmNvbnRhaW5zKHRva2VuKSk7CisgICAgbV90cmFuc2ZlckJ1ZmZlck1lbW9yeVVzZUJ5
dGVzICs9IGluZm8uc2l6ZTsKKyAgICBtX3RyYW5zZmVyQnVmZmVycy5zZXQodG9rZW4sIGluZm8p
OworfQorCit2b2lkIFRleHR1cmVNYW5hZ2VyOjpyZW1vdmVUcmFuc2ZlckJ1ZmZlcihUcmFuc2Zl
ckJ1ZmZlclRva2VuIHRva2VuLCBUcmFuc2ZlckJ1ZmZlckluZm8gaW5mbykKK3sKKyAgICBBU1NF
UlQobV90ZXh0dXJlcy5jb250YWlucyh0b2tlbikpOworICAgIEFTU0VSVChpbmZvLnNobUlkICE9
IC0xKTsKKyAgICBjb21tYW5kQnVmZmVyKCktPkRlc3Ryb3lUcmFuc2ZlckJ1ZmZlcihpbmZvLnNo
bUlkKTsKKyAgICBtX3RyYW5zZmVyQnVmZmVyTWVtb3J5VXNlQnl0ZXMgLT0gaW5mby5zaXplOwor
ICAgIG1fdHJhbnNmZXJCdWZmZXJzLnJlbW92ZSh0b2tlbik7CisgICAgbV9ldmljdGVkVHJhbnNm
ZXJCdWZmZXJzLmFwcGVuZChpbmZvLnJlZ2lzdGVyZWRTaG1JZCk7Cit9CisKK3ZvaWQgVGV4dHVy
ZU1hbmFnZXI6OmV2aWN0VHJhbnNmZXJCdWZmZXIoVHJhbnNmZXJCdWZmZXJUb2tlbiB0b2tlbiwg
VHJhbnNmZXJCdWZmZXJJbmZvIGluZm8pCit7CisgICAgVFJBQ0VfRVZFTlQoIlRleHR1cmVNYW5h
Z2VyOjpldmljdFRyYW5zZmVyQnVmZmVyIiwgdGhpcywgMCk7CisgICAgcmVtb3ZlVHJhbnNmZXJC
dWZmZXIodG9rZW4sIGluZm8pOworfQorCit2b2lkKiBUZXh0dXJlTWFuYWdlcjo6bWFwVHJhbnNm
ZXJCdWZmZXIoVGV4dHVyZVRva2VuIHRva2VuKQoreworICAgIFRleHR1cmVNYXA6Oml0ZXJhdG9y
IHRleHR1cmVJdCA9IG1fdGV4dHVyZXMuZmluZCh0b2tlbik7CisgICAgQVNTRVJUKHRleHR1cmVJ
dCAhPSBtX3RleHR1cmVzLmVuZCgpKTsKKyAgICBUZXh0dXJlSW5mbyogaW5mbyA9ICZ0ZXh0dXJl
SXQuZ2V0KCktPnNlY29uZDsKKyAgICBBU1NFUlQoaW5mby0+aXNQcm90ZWN0ZWQpOworICAgIEFT
U0VSVCghaW5mby0+YnVmZmVyKTsKKyAgICBpbnQgc2htSWQgPSAtMTsKKworICAgIHNpemVfdCBt
ZW1vcnlSZXF1aXJlZEJ5dGVzID0gbWVtb3J5VXNlQnl0ZXMoaW5mby0+c2l6ZSwgaW5mby0+Zm9y
bWF0KTsKKyAgICBmb3IgKFRyYW5zZmVyQnVmZmVyTWFwOjppdGVyYXRvciBpdCA9IG1fdHJhbnNm
ZXJCdWZmZXJzLmJlZ2luKCk7IGl0ICE9IG1fdHJhbnNmZXJCdWZmZXJzLmVuZCgpOyArK2l0KSB7
CisgICAgICAgIGlmIChpdC0+c2Vjb25kLmlzUHJvdGVjdGVkKQorICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgIGlmIChpdC0+c2Vjb25kLnNpemUgIT0gbWVtb3J5UmVxdWlyZWRCeXRlcykK
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoaXQtPnNlY29uZC5mZW5jZSA+IG1f
bGFzdFRva2VuUmVhZCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIEFTU0VSVChp
dC0+c2Vjb25kLnNobUlkICE9IC0xKTsKKyAgICAgICAgc2htSWQgPSBpdC0+c2Vjb25kLnNobUlk
OworICAgICAgICBpdC0+c2Vjb25kLmlzUHJvdGVjdGVkID0gdHJ1ZTsKKyAgICAgICAgaW5mby0+
YnVmZmVyID0gaXQtPmZpcnN0OworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBpZiAoIWlu
Zm8tPmJ1ZmZlcikgeworICAgICAgICBpZiAobV90cmFuc2ZlckJ1ZmZlck1lbW9yeVVzZUJ5dGVz
ICsgbWVtb3J5UmVxdWlyZWRCeXRlcyA+IG1fbWF4TWVtb3J5TGltaXRCeXRlcykKKyAgICAgICAg
ICAgIHJldHVybiAwOworCisgICAgICAgIGluZm8tPmJ1ZmZlciA9IGdldFRyYW5zZmVyQnVmZmVy
VG9rZW4oKTsKKyAgICAgICAgc2htSWQgPSBjcmVhdGVUcmFuc2ZlckJ1ZmZlcihpbmZvLT5idWZm
ZXIsIG1lbW9yeVJlcXVpcmVkQnl0ZXMpOworICAgIH0KKworICAgIGdwdTo6QnVmZmVyIGJ1ZmZl
ciA9IGNvbW1hbmRCdWZmZXIoKS0+R2V0VHJhbnNmZXJCdWZmZXIoc2htSWQpOworICAgIHJldHVy
biBidWZmZXIucHRyOworfQorCit2b2lkIFRleHR1cmVNYW5hZ2VyOjp0ZXhTdWJJbWFnZTJEVHJh
bnNmZXJCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRl
c3RSZWN0LCBUZXh0dXJlVG9rZW4gdG9rZW4pCit7CisgICAgVGV4dHVyZU1hcDo6aXRlcmF0b3Ig
dGV4dHVyZUl0ID0gbV90ZXh0dXJlcy5maW5kKHRva2VuKTsKKyAgICBBU1NFUlQodGV4dHVyZUl0
ICE9IG1fdGV4dHVyZXMuZW5kKCkpOworICAgIFRleHR1cmVJbmZvKiB0ZXh0dXJlSW5mbyA9ICZ0
ZXh0dXJlSXQuZ2V0KCktPnNlY29uZDsKKyAgICBBU1NFUlQodGV4dHVyZUluZm8tPmJ1ZmZlcik7
CisKKyAgICBUcmFuc2ZlckJ1ZmZlck1hcDo6aXRlcmF0b3IgaXQgPSBtX3RyYW5zZmVyQnVmZmVy
cy5maW5kKHRleHR1cmVJbmZvLT5idWZmZXIpOworICAgIEFTU0VSVChpdCAhPSBtX3RyYW5zZmVy
QnVmZmVycy5lbmQoKSk7CisgICAgVHJhbnNmZXJCdWZmZXJJbmZvKiBpbmZvID0gJml0LmdldCgp
LT5zZWNvbmQ7CisgICAgQVNTRVJUKGluZm8tPmlzUHJvdGVjdGVkKTsKKworICAgIEV4dGVuc2lv
bnMzRENocm9taXVtKiBleHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21p
dW0qPihjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkpOworICAgIGdwdTo6Z2xlczI6OkdMRVMyQ21k
SGVscGVyKiBoZWxwZXIgPSBzdGF0aWNfY2FzdDxncHU6OmdsZXMyOjpHTEVTMkNtZEhlbHBlcio+
KGV4dGVuc2lvbnMtPmhlbHBlcigpKTsKKyAgICBBU1NFUlQoaGVscGVyKTsKKyAgICBncHU6OkNv
bW1hbmRCdWZmZXIqIGNtZEJ1ZiA9IGhlbHBlci0+Y29tbWFuZF9idWZmZXIoKTsKKworICAgIGlm
IChpbmZvLT5yZWdpc3RlcmVkU2htSWQgPT0gLTEpCisgICAgICAgIGluZm8tPnJlZ2lzdGVyZWRT
aG1JZCA9IGNtZEJ1Zi0+UmVnaXN0ZXJUcmFuc2ZlckJ1ZmZlcihpbmZvLT5zaGFyZWRNZW1vcnks
IGluZm8tPnNpemUsIC0xKTsKKworICAgIGhlbHBlci0+VGV4U3ViSW1hZ2UyRChHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgZGVzdFJlY3QueCgpLCBkZXN0UmVjdC55KCksIGRlc3RS
ZWN0LndpZHRoKCksIGRlc3RSZWN0LmhlaWdodCgpLCB0ZXh0dXJlSW5mby0+Zm9ybWF0LCBHcmFw
aGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgaW5mby0+cmVnaXN0ZXJlZFNobUlkLCAwLCBG
QUxTRSk7CisKKyAgICBpbmZvLT5mZW5jZSA9IGhlbHBlci0+SW5zZXJ0VG9rZW4oKTsKKyAgICBp
bmZvLT5pc1Byb3RlY3RlZCA9IGZhbHNlOworICAgIHRleHR1cmVJbmZvLT5idWZmZXIgPSAwOwor
fQorCiB9CiAKICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFu
YWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVy
ZU1hbmFnZXIuaAppbmRleCBlNGQ2ZDM4Li44M2I2ZWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmgK
QEAgLTM1LDE2ICszNSwyMyBAQAogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KIAorbmFtZXNwYWNlIGJhc2UgeworY2xhc3MgU2hhcmVkTWVtb3J5
OworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1hbmFnZWRUZXh0dXJlOwogdHlw
ZWRlZiBpbnQgVGV4dHVyZVRva2VuOwordHlwZWRlZiBpbnQgVHJhbnNmZXJCdWZmZXJUb2tlbjsK
IAogY2xhc3MgVGV4dHVyZUFsbG9jYXRvciB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB1bnNpZ25l
ZCBjcmVhdGVUZXh0dXJlKGNvbnN0IEludFNpemUmLCBHQzNEZW51bSBmb3JtYXQpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZGVsZXRlVGV4dHVyZSh1bnNpZ25lZCB0ZXh0dXJlLCBjb25zdCBJbnRT
aXplJiwgR0MzRGVudW0pID0gMDsKIAorICAgIHZpcnR1YWwgR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQoKSB7IHJldHVybiAwOyB9CisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5UZXh0dXJl
QWxsb2NhdG9yKCkgeyB9CiB9OwpAQCAtOTQsNiArMTAxLDEwIEBAIHB1YmxpYzoKICAgICB2b2lk
IHJlZHVjZU1lbW9yeVRvTGltaXQoc2l6ZV90KTsKICAgICBzaXplX3QgY3VycmVudE1lbW9yeVVz
ZUJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9tZW1vcnlVc2VCeXRlczsgfQogCisgICAgdm9pZCog
bWFwVHJhbnNmZXJCdWZmZXIoVGV4dHVyZVRva2VuKTsKKyAgICB2b2lkIHRleFN1YkltYWdlMkRU
cmFuc2ZlckJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0
LCBUZXh0dXJlVG9rZW4pOworICAgIHZvaWQgc2V0TGFzdFRva2VuUmVhZChpbnQgbGFzdFRva2Vu
UmVhZCkgeyBtX2xhc3RUb2tlblJlYWQgPSBsYXN0VG9rZW5SZWFkOyB9CisKIHByaXZhdGU6CiAg
ICAgVGV4dHVyZU1hbmFnZXIoc2l6ZV90IG1heE1lbW9yeUxpbWl0Qnl0ZXMsIHNpemVfdCBwcmVm
ZXJyZWRNZW1vcnlMaW1pdEJ5dGVzLCBpbnQgbWF4VGV4dHVyZVNpemUpOwogCkBAIC0xMDIsNiAr
MTEzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgR0MzRGVudW0gZm9ybWF0OwogICAgICAgICB1bnNp
Z25lZCB0ZXh0dXJlSWQ7CiAgICAgICAgIGJvb2wgaXNQcm90ZWN0ZWQ7CisgICAgICAgIFRyYW5z
ZmVyQnVmZmVyVG9rZW4gYnVmZmVyOwogI2lmbmRlZiBOREVCVUcKICAgICAgICAgVGV4dHVyZUFs
bG9jYXRvciogYWxsb2NhdG9yOwogI2VuZGlmCkBAIC0xMzMsNiArMTQ1LDI5IEBAIHByaXZhdGU6
CiAgICAgfTsKIAogICAgIFZlY3RvcjxFdmljdGlvbkVudHJ5PiBtX2V2aWN0ZWRUZXh0dXJlczsK
KworICAgIHN0cnVjdCBUcmFuc2ZlckJ1ZmZlckluZm8geworICAgICAgICBzaXplX3Qgc2l6ZTsK
KyAgICAgICAgaW50IHNobUlkOworICAgICAgICBpbnQgcmVnaXN0ZXJlZFNobUlkOworICAgICAg
ICBpbnQgZmVuY2U7CisgICAgICAgIGJvb2wgaXNQcm90ZWN0ZWQ7CisgICAgICAgIGJhc2U6OlNo
YXJlZE1lbW9yeSogc2hhcmVkTWVtb3J5OworICAgIH07CisKKyAgICBUcmFuc2ZlckJ1ZmZlclRv
a2VuIGdldFRyYW5zZmVyQnVmZmVyVG9rZW4oKTsKKworICAgIGludCBjcmVhdGVUcmFuc2ZlckJ1
ZmZlcihUcmFuc2ZlckJ1ZmZlclRva2VuLCBzaXplX3QgYnl0ZXMpOworICAgIHZvaWQgYWRkVHJh
bnNmZXJCdWZmZXIoVHJhbnNmZXJCdWZmZXJUb2tlbiwgVHJhbnNmZXJCdWZmZXJJbmZvKTsKKyAg
ICB2b2lkIHJlbW92ZVRyYW5zZmVyQnVmZmVyKFRyYW5zZmVyQnVmZmVyVG9rZW4sIFRyYW5zZmVy
QnVmZmVySW5mbyk7CisgICAgdm9pZCBldmljdFRyYW5zZmVyQnVmZmVyKFRyYW5zZmVyQnVmZmVy
VG9rZW4sIFRyYW5zZmVyQnVmZmVySW5mbyk7CisKKyAgICB0eXBlZGVmIEhhc2hNYXA8VHJhbnNm
ZXJCdWZmZXJUb2tlbiwgVHJhbnNmZXJCdWZmZXJJbmZvPiBUcmFuc2ZlckJ1ZmZlck1hcDsKKyAg
ICBUcmFuc2ZlckJ1ZmZlck1hcCBtX3RyYW5zZmVyQnVmZmVyczsKKyAgICBWZWN0b3I8aW50PiBt
X2V2aWN0ZWRUcmFuc2ZlckJ1ZmZlcnM7CisgICAgVHJhbnNmZXJCdWZmZXJUb2tlbiBtX25leHRU
cmFuc2ZlckJ1ZmZlclRva2VuOworICAgIGludCBtX2xhc3RUb2tlblJlYWQ7CisgICAgc2l6ZV90
IG1fdHJhbnNmZXJCdWZmZXJNZW1vcnlVc2VCeXRlczsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyYWNraW5nVGV4dHVyZUFs
bG9jYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJh
Y2tpbmdUZXh0dXJlQWxsb2NhdG9yLmgKaW5kZXggYThhNTQ5Mi4uOTY1OGQ0NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0
dXJlQWxsb2NhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmgKQEAgLTUwLDYgKzUwLDggQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0VGV4dHVyZVVzYWdlSGludChUZXh0dXJlVXNhZ2VIaW50IGhpbnQpIHsg
bV90ZXh0dXJlVXNhZ2VIaW50ID0gaGludDsgfQogICAgIHZvaWQgc2V0VXNlVGV4dHVyZVN0b3Jh
Z2VFeHQoYm9vbCB1c2VTdG9yYWdlRXh0KSB7IG1fdXNlVGV4dHVyZVN0b3JhZ2VFeHQgPSB1c2VT
dG9yYWdlRXh0OyB9CiAKKyAgICB2aXJ0dWFsIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KCkg
eyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CisKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBU
cmFja2luZ1RleHR1cmVBbGxvY2F0b3IoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4pOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAppbmRleCA5YWUwMjc5Li43YWUzMTQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTM2Nyw3ICszNjcsNyBAQCB2b2lk
IENDTGF5ZXJUcmVlSG9zdDo6Y29tcG9zaXRlKCkKICAgICBzdGF0aWNfY2FzdDxDQ1NpbmdsZVRo
cmVhZFByb3h5Kj4obV9wcm94eS5nZXQoKSktPmNvbXBvc2l0ZUltbWVkaWF0ZWx5KCk7CiB9CiAK
LWJvb2wgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoKQorYm9vbCBDQ0xheWVyVHJlZUhv
c3Q6OnVwZGF0ZUxheWVycyhpbnQgbGFzdFRva2VuUmVhZCkKIHsKICAgICBpZiAoIW1fbGF5ZXJS
ZW5kZXJlckluaXRpYWxpemVkKSB7CiAgICAgICAgIGluaXRpYWxpemVMYXllclJlbmRlcmVyKCk7
CkBAIC0zODIsMTEgKzM4MiwxMSBAQCBib29sIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJz
KCkKICAgICBpZiAodmlld3BvcnRTaXplKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAotICAgIHVwZGF0ZUxheWVycyhyb290TGF5ZXIoKSk7CisgICAgdXBkYXRlTGF5ZXJzKHJv
b3RMYXllcigpLCBsYXN0VG9rZW5SZWFkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBD
Q0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyhMYXllckNocm9taXVtKiByb290TGF5ZXIpCit2
b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKExheWVyQ2hyb21pdW0qIHJvb3RMYXll
ciwgaW50IGxhc3RUb2tlblJlYWQpCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9z
dDo6dXBkYXRlTGF5ZXJzIiwgdGhpcywgMCk7CiAKQEAgLTQxNCw2ICs0MTQsOSBAQCB2b2lkIEND
TGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKExheWVyQ2hyb21pdW0qIHJvb3RMYXllcikKICAg
ICAvLyBSZXNldCBwYXJ0aWFsIHRleHR1cmUgdXBkYXRlIHJlcXVlc3RzLgogICAgIG1fcGFydGlh
bFRleHR1cmVVcGRhdGVSZXF1ZXN0cyA9IDA7CiAKKyAgICAvLyBSZWxlYXNlIHRyYW5zZmVyIGJ1
ZmZlcnMgdXNlZCBmb3IgdGV4dHVyZSB1cGxvYWRzLgorICAgIG1fY29udGVudHNUZXh0dXJlTWFu
YWdlci0+c2V0TGFzdFRva2VuUmVhZChsYXN0VG9rZW5SZWFkKTsKKwogICAgIHJlc2VydmVUZXh0
dXJlcygpOwogCiAgICAgcGFpbnRMYXllckNvbnRlbnRzKG1fdXBkYXRlTGlzdCwgUGFpbnRWaXNp
YmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKaW5kZXggODlhZGU1NS4uY2JmMzI0MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKQEAgLTE4Niw3ICsxODYsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRWaXNpYmxlKGJvb2wpOwogCiAgICAgLy8gUmV0dXJucyBmYWxzZSBpZiB3
ZSBzaG91bGQgYWJvcnQgdGhpcyBmcmFtZSBkdWUgdG8gaW5pdGlhbGl6YXRpb24gZmFpbHVyZS4K
LSAgICBib29sIHVwZGF0ZUxheWVycygpOworICAgIGJvb2wgdXBkYXRlTGF5ZXJzKGludCBsYXN0
VG9rZW5SZWFkID0gMCk7CiAKICAgICB2b2lkIHN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0
IEludFNpemUmIHRhcmdldFBvc2l0aW9uLCBib29sIHVzZUFuY2hvciwgZmxvYXQgc2NhbGUsIGRv
dWJsZSBkdXJhdGlvblNlYyk7CiAKQEAgLTIxMyw3ICsyMTMsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgcGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IExheWVyTGlzdCYsIFBhaW50VHlwZSk7CiAgICAg
dm9pZCBwYWludE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShMYXllckNocm9taXVtKiwg
UGFpbnRUeXBlKTsKIAotICAgIHZvaWQgdXBkYXRlTGF5ZXJzKExheWVyQ2hyb21pdW0qKTsKKyAg
ICB2b2lkIHVwZGF0ZUxheWVycyhMYXllckNocm9taXVtKiwgaW50IGxhc3RUb2tlblJlYWQpOwog
ICAgIC8vIFByZS1yZXNlcnZlIHRleHR1cmVzIGZvciBhbnkgbGF5ZXIgbWFya2VkICJhbHdheXMg
cmVzZXJ2ZSB0ZXh0dXJlcyIKICAgICB2b2lkIHJlc2VydmVUZXh0dXJlcygpOwogICAgIHZvaWQg
Y2xlYXJQZW5kaW5nVXBkYXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHku
Y3BwCmluZGV4IGVhOGM0MGYuLjEwYTkyYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhy
ZWFkUHJveHkuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAKICNpbmNsdWRlICJjYy9DQ1NpbmdsZVRo
cmVhZFByb3h5LmgiCiAKKyNpbmNsdWRlICJFeHRlbnNpb25zM0RDaHJvbWl1bS5oIgogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVt
LmgiCiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgpAQCAtMzMsNiArMzQsOSBAQAogI2luY2x1ZGUg
ImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KIAor
I3VuZGVmIExPRworI2luY2x1ZGUgImdwdS9jb21tYW5kX2J1ZmZlci9jbGllbnQvZ2xlczJfaW1w
bGVtZW50YXRpb24uaCIKKwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIHVzaW5nIG5hbWVzcGFjZSBX
VEY7CiAKQEAgLTMwNSw3ICszMDksMTMgQEAgYm9vbCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpjb21t
aXRJZk5lZWRlZCgpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzTWFpblRocmVhZCgpKTsKIAot
ICAgIGlmICghbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKSkKKyAgICBpbnQgbGFzdFRv
a2VuUmVhZCA9IDA7CisgICAgRXh0ZW5zaW9uczNEQ2hyb21pdW0qIGV4dGVuc2lvbnMgPSBzdGF0
aWNfY2FzdDxFeHRlbnNpb25zM0RDaHJvbWl1bSo+KGNvbnRleHQoKS0+Z2V0RXh0ZW5zaW9ucygp
KTsKKyAgICBncHU6OmdsZXMyOjpHTEVTMkNtZEhlbHBlciogaGVscGVyID0gc3RhdGljX2Nhc3Q8
Z3B1OjpnbGVzMjo6R0xFUzJDbWRIZWxwZXIqPihleHRlbnNpb25zLT5oZWxwZXIoKSk7CisgICAg
aWYgKGhlbHBlcikKKyAgICAgICAgbGFzdFRva2VuUmVhZCA9IGhlbHBlci0+bGFzdF90b2tlbl9y
ZWFkKCk7CisKKyAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKGxhc3RUb2tl
blJlYWQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBkb0NvbW1pdCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJl
YWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RocmVhZFByb3h5LmNwcAppbmRleCA3NWVmMTM2Li5lNDkyOTI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RocmVhZFByb3h5LmNwcApAQCAtMjYsNiArMjYsNyBAQAogCiAjaW5jbHVkZSAiY2MvQ0NUaHJl
YWRQcm94eS5oIgogCisjaW5jbHVkZSAiRXh0ZW5zaW9uczNEQ2hyb21pdW0uaCIKICNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKICNpbmNsdWRl
ICJjYy9DQ0RlbGF5QmFzZWRUaW1lU291cmNlLmgiCkBAIC0zOSw2ICs0MCw5IEBACiAjaW5jbHVk
ZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIAorI3Vu
ZGVmIExPRworI2luY2x1ZGUgImdwdS9jb21tYW5kX2J1ZmZlci9jbGllbnQvZ2xlczJfaW1wbGVt
ZW50YXRpb24uaCIKKwogdXNpbmcgbmFtZXNwYWNlIFdURjsKIAogbmFtZXNwYWNlIHsKQEAgLTM2
Myw2ICszNjcsMTQgQEAgUGFzc093blB0cjxDQ1RocmVhZDo6VGFzaz4gQ0NUaHJlYWRQcm94eTo6
Y3JlYXRlQmVnaW5GcmFtZUFuZENvbW1pdFRhc2tPbkltcGxUaHIKICAgICBBU1NFUlQoaXNJbXBs
VGhyZWFkKCkpOwogICAgIGRvdWJsZSBmcmFtZUJlZ2luVGltZSA9IGN1cnJlbnRUaW1lKCk7CiAK
KyAgICBpbnQgbGFzdFRva2VuUmVhZCA9IDA7CisgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdEltcGwt
PmNvbnRleHQoKSkgeworICAgICAgICBFeHRlbnNpb25zM0RDaHJvbWl1bSogZXh0ZW5zaW9ucyA9
IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4obV9sYXllclRyZWVIb3N0SW1wbC0+
Y29udGV4dCgpLT5nZXRFeHRlbnNpb25zKCkpOworICAgICAgICBncHU6OmdsZXMyOjpHTEVTMkNt
ZEhlbHBlciogaGVscGVyID0gc3RhdGljX2Nhc3Q8Z3B1OjpnbGVzMjo6R0xFUzJDbWRIZWxwZXIq
PihleHRlbnNpb25zLT5oZWxwZXIoKSk7CisgICAgICAgIGlmIChoZWxwZXIpCisgICAgICAgICAg
ICBsYXN0VG9rZW5SZWFkID0gaGVscGVyLT5sYXN0X3Rva2VuX3JlYWQoKTsKKyAgICB9CisKICAg
ICAvLyBOT1RFLCBpdCBpcyBwb3NzaWJsZSB0byByZWNlaWV2ZSBhIHJlcXVlc3QgZm9yIGEKICAg
ICAvLyBiZWdpbkZyYW1lQW5kQ29tbWl0T25JbXBsVGhyZWFkIGZyb20gZmluaXNoQWxsUmVuZGVy
aW5nIHdoaWxlIGEKICAgICAvLyBiZWdpbkZyYW1lQW5kQ29tbWl0T25JbXBsVGhyZWFkIGlzIGVu
cXVldWVkLiBTaW5jZSBDQ1RocmVhZCBkb2Vzbid0CkBAIC0zNzUsMTAgKzM4NywxMCBAQCBQYXNz
T3duUHRyPENDVGhyZWFkOjpUYXNrPiBDQ1RocmVhZFByb3h5OjpjcmVhdGVCZWdpbkZyYW1lQW5k
Q29tbWl0VGFza09uSW1wbFRocgogICAgIGludCB0aGlzVGFza1NlcXVlbmNlTnVtYmVyID0gbV9u
dW1CZWdpbkZyYW1lQW5kQ29tbWl0c0lzc3VlZE9uSW1wbFRocmVhZDsKICAgICBtX251bUJlZ2lu
RnJhbWVBbmRDb21taXRzSXNzdWVkT25JbXBsVGhyZWFkKys7CiAgICAgT3duUHRyPENDU2Nyb2xs
QW5kU2NhbGVTZXQ+IHNjcm9sbEluZm8gPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5wcm9jZXNzU2Ny
b2xsRGVsdGFzKCk7Ci0gICAgcmV0dXJuIGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJl
YWRQcm94eTo6YmVnaW5GcmFtZUFuZENvbW1pdCwgdGhpc1Rhc2tTZXF1ZW5jZU51bWJlciwgZnJh
bWVCZWdpblRpbWUsIHNjcm9sbEluZm8ucmVsZWFzZSgpKTsKKyAgICByZXR1cm4gY3JlYXRlQ0NU
aHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQW5kQ29tbWl0LCB0aGlz
VGFza1NlcXVlbmNlTnVtYmVyLCBmcmFtZUJlZ2luVGltZSwgc2Nyb2xsSW5mby5yZWxlYXNlKCks
IGxhc3RUb2tlblJlYWQpOwogfQogCi12b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRD
b21taXQoaW50IHNlcXVlbmNlTnVtYmVyLCBkb3VibGUgZnJhbWVCZWdpblRpbWUsIFBhc3NPd25Q
dHI8Q0NTY3JvbGxBbmRTY2FsZVNldD4gc2Nyb2xsSW5mbykKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6
YmVnaW5GcmFtZUFuZENvbW1pdChpbnQgc2VxdWVuY2VOdW1iZXIsIGRvdWJsZSBmcmFtZUJlZ2lu
VGltZSwgUGFzc093blB0cjxDQ1Njcm9sbEFuZFNjYWxlU2V0PiBzY3JvbGxJbmZvLCBpbnQgbGFz
dFRva2VuUmVhZCkKIHsKICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFt
ZUFuZENvbW1pdCIsIHRoaXMsIDApOwogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CkBAIC00
MjAsNyArNDMyLDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQW5kQ29tbWl0KGlu
dCBzZXF1ZW5jZU51bWJlciwgZG91YmxlIGZyYW1lQmVnaW5UaW0KICAgICAvLyB1cGRhdGVMYXll
cnMuCiAgICAgbV9jb21taXRSZXF1ZXN0ZWQgPSBmYWxzZTsKIAotICAgIGlmICghbV9sYXllclRy
ZWVIb3N0LT51cGRhdGVMYXllcnMoKSkKKyAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRl
TGF5ZXJzKGxhc3RUb2tlblJlYWQpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBCZWZvcmUg
YXBwbHlpbmcgc2Nyb2xscyBhbmQgY2FsbGluZyBhbmltYXRlLCB3ZSBzZXQgbV9hbmltYXRlUmVx
dWVzdGVkIHRvIGZhbHNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCmluZGV4IDMzMGVmNTEuLmVi
OTUwZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKQEAgLTg1LDcgKzg1LDcgQEAgcHJpdmF0
ZToKICAgICBleHBsaWNpdCBDQ1RocmVhZFByb3h5KENDTGF5ZXJUcmVlSG9zdCopOwogCiAgICAg
Ly8gQ2FsbGVkIG9uIG1haW4gdGhyZWFkCi0gICAgdm9pZCBiZWdpbkZyYW1lQW5kQ29tbWl0KGlu
dCBzZXF1ZW5jZU51bWJlciwgZG91YmxlIGZyYW1lQmVnaW5UaW1lLCBQYXNzT3duUHRyPENDU2Ny
b2xsQW5kU2NhbGVTZXQ+KTsKKyAgICB2b2lkIGJlZ2luRnJhbWVBbmRDb21taXQoaW50IHNlcXVl
bmNlTnVtYmVyLCBkb3VibGUgZnJhbWVCZWdpblRpbWUsIFBhc3NPd25QdHI8Q0NTY3JvbGxBbmRT
Y2FsZVNldD4sIGludCBsYXN0VG9rZW5SZWFkKTsKICAgICB2b2lkIGRpZENvbW1pdEFuZERyYXdG
cmFtZSgpOwogICAgIHZvaWQgZGlkQ29tcGxldGVTd2FwQnVmZmVycygpOwogICAgIHZvaWQgc2V0
QW5pbWF0aW9uRXZlbnRzKFBhc3NPd25QdHI8Q0NBbmltYXRpb25FdmVudHNWZWN0b3I+KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0V4dGVuc2lvbnMzRENocm9taXVt
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0V4dGVuc2lvbnMzRENocm9taXVtLmNw
cAppbmRleCA3MzM5N2JkLi41ZTZkOWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9FeHRlbnNpb25zM0RDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvRXh0ZW5zaW9uczNEQ2hyb21pdW0uY3BwCkBAIC0xNjAsNiArMTYwLDExIEBAIHZv
aWQgRXh0ZW5zaW9uczNEQ2hyb21pdW06OnRleFN0b3JhZ2UyREVYVCh1bnNpZ25lZCBpbnQgdGFy
Z2V0LCBpbnQgbGV2ZWxzLCB1bnNpCiAgICAgbV9wcml2YXRlLT50ZXhTdG9yYWdlMkRFWFQodGFy
Z2V0LCBsZXZlbHMsIGludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKIH0KIAordm9pZCog
RXh0ZW5zaW9uczNEQ2hyb21pdW06OmhlbHBlcigpCit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+
aGVscGVyKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJM
RShXRUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNz
Q29udGV4dDNEQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhp
Y3NDb250ZXh0M0RDaHJvbWl1bS5jcHAKaW5kZXggYjA5MDBjMC4uM2Y2YWJjOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJv
bWl1bS5jcHAKQEAgLTg3Nyw2ICs4NzcsMTEgQEAgREVMRUdBVEVfVE9fSU1QTF8xUihnZXRUcmFu
c2xhdGVkU2hhZGVyU291cmNlQU5HTEUsIFBsYXRmb3JtM0RPYmplY3QsIFN0cmluZykKIERFTEVH
QVRFX1RPX0lNUExfNSh0ZXhJbWFnZUlPU3VyZmFjZTJEQ0hST01JVU0sIEdDM0RlbnVtLCBHQzNE
aW50LCBHQzNEaW50LCBHQzNEdWludCwgR0MzRHVpbnQpCiBERUxFR0FURV9UT19JTVBMXzUodGV4
U3RvcmFnZTJERVhULCBHQzNEZW51bSwgR0MzRGludCwgR0MzRHVpbnQsIEdDM0RpbnQsIEdDM0Rp
bnQpCiAKK3ZvaWQqIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6aGVscGVyKCkKK3sKKyAgICBy
ZXR1cm4gbV9pbXBsLT5oZWxwZXIoKTsKK30KKwogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyBHcmFwaGlj
c0NvbnRleHQzRAogLy8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlLmgKaW5kZXggZDI5NmVlYi4uNmQ0ZDIwNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
LmgKQEAgLTMwNyw2ICszMDcsOCBAQCBwdWJsaWM6CiAgICAgLy8gR0xfRVhUX3RleHR1cmVfc3Rv
cmFnZQogICAgIHZvaWQgdGV4U3RvcmFnZTJERVhUKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBs
ZXZlbHMsIEdDM0R1aW50IGludGVybmFsZm9ybWF0LCBHQzNEaW50IHdpZHRoLCBHQzNEaW50IGhl
aWdodCk7CiAKKyAgICB2b2lkKiBoZWxwZXIoKTsKKwogcHJpdmF0ZToKICAgICBHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGUoUGFzc093blB0cjxXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEPiwg
Ym9vbCBwcmVzZXJ2ZURyYXdpbmdCdWZmZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0Zha2VXZWJHcmFwaGljc0NvbnRleHQzRC5oIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9GYWtlV2ViR3JhcGhpY3NDb250ZXh0M0QuaAppbmRleCAyNjhkYzFk
Li4zOTFlMjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0Zha2VX
ZWJHcmFwaGljc0NvbnRleHQzRC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
RmFrZVdlYkdyYXBoaWNzQ29udGV4dDNELmgKQEAgLTI1NSw2ICsyNTUsOCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHRleFN0b3JhZ2UyREVYVChXR0MzRGVudW0gdGFyZ2V0LCBXR0MzRGlu
dCBsZXZlbHMsIFdHQzNEdWludCBpbnRlcm5hbGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFdHQzNEaW50IHdpZHRoLCBXR0MzRGludCBoZWlnaHQpIHsgfQogCisgICAg
dmlydHVhbCB2b2lkKiBoZWxwZXIoKSB7IHJldHVybiAwOyB9CisKIHByb3RlY3RlZDoKICAgICBB
dHRyaWJ1dGVzIG1fYXR0cnM7CiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129497</attachid>
            <date>2012-02-29 12:58:43 -0800</date>
            <delta_ts>2012-03-20 14:58:23 -0700</delta_ts>
            <desc>Prototype (Chromium)</desc>
            <filename>shared-memory-chromium.diff</filename>
            <type>text/plain</type>
            <size>4096</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL2NvbnRlbnQvY29tbW9uL2dwdS9jbGllbnQvd2ViZ3JhcGhpY3Njb250ZXh0
M2RfY29tbWFuZF9idWZmZXJfaW1wbC5jYyBiL2NvbnRlbnQvY29tbW9uL2dwdS9jbGllbnQvd2Vi
Z3JhcGhpY3Njb250ZXh0M2RfY29tbWFuZF9idWZmZXJfaW1wbC5jYwppbmRleCAzZThiYTI4Li40
MTZhMGRmIDEwMDY0NAotLS0gYS9jb250ZW50L2NvbW1vbi9ncHUvY2xpZW50L3dlYmdyYXBoaWNz
Y29udGV4dDNkX2NvbW1hbmRfYnVmZmVyX2ltcGwuY2MKKysrIGIvY29udGVudC9jb21tb24vZ3B1
L2NsaWVudC93ZWJncmFwaGljc2NvbnRleHQzZF9jb21tYW5kX2J1ZmZlcl9pbXBsLmNjCkBAIC0x
MTczLDYgKzExNzMsMTMgQEAgREVMRUdBVEVfVE9fR0xfNSh0ZXhJbWFnZUlPU3VyZmFjZTJEQ0hS
T01JVU0sIFRleEltYWdlSU9TdXJmYWNlMkRDSFJPTUlVTSwKIERFTEVHQVRFX1RPX0dMXzUodGV4
U3RvcmFnZTJERVhULCBUZXhTdG9yYWdlMkRFWFQsCiAgICAgICAgICAgICAgICAgIFdHQzNEZW51
bSwgV0dDM0RpbnQsIFdHQzNEdWludCwgV0dDM0RpbnQsIFdHQzNEaW50KQogCit2b2lkKiBXZWJH
cmFwaGljc0NvbnRleHQzRENvbW1hbmRCdWZmZXJJbXBsOjpoZWxwZXIoKSB7CisgIGlmICghZ2xf
KQorICAgIHJldHVybiAwOworCisgIHJldHVybiBnbF8tPmhlbHBlcigpOworfQorCiAjaWYgV0VC
S0lUX1VTSU5HX1NLSUEKIEdyR0xJbnRlcmZhY2UqIFdlYkdyYXBoaWNzQ29udGV4dDNEQ29tbWFu
ZEJ1ZmZlckltcGw6Om9uQ3JlYXRlR3JHTEludGVyZmFjZSgpIHsKICAgcmV0dXJuIHdlYmtpdF9n
bHVlOjpDcmVhdGVDb21tYW5kQnVmZmVyU2tpYUdMQmluZGluZygpOwpkaWZmIC0tZ2l0IGEvY29u
dGVudC9jb21tb24vZ3B1L2NsaWVudC93ZWJncmFwaGljc2NvbnRleHQzZF9jb21tYW5kX2J1ZmZl
cl9pbXBsLmggYi9jb250ZW50L2NvbW1vbi9ncHUvY2xpZW50L3dlYmdyYXBoaWNzY29udGV4dDNk
X2NvbW1hbmRfYnVmZmVyX2ltcGwuaAppbmRleCA2NmM4ZTBlLi43OWU2MTc0IDEwMDY0NAotLS0g
YS9jb250ZW50L2NvbW1vbi9ncHUvY2xpZW50L3dlYmdyYXBoaWNzY29udGV4dDNkX2NvbW1hbmRf
YnVmZmVyX2ltcGwuaAorKysgYi9jb250ZW50L2NvbW1vbi9ncHUvY2xpZW50L3dlYmdyYXBoaWNz
Y29udGV4dDNkX2NvbW1hbmRfYnVmZmVyX2ltcGwuaApAQCAtNDgxLDYgKzQ4MSw4IEBAIGNsYXNz
IFdlYkdyYXBoaWNzQ29udGV4dDNEQ29tbWFuZEJ1ZmZlckltcGwKICAgICAgIFdHQzNEZW51bSB0
YXJnZXQsIFdHQzNEaW50IGxldmVscywgV0dDM0R1aW50IGludGVybmFsZm9ybWF0LAogICAgICAg
V0dDM0RpbnQgd2lkdGgsIFdHQzNEaW50IGhlaWdodCk7CiAKKyAgdmlydHVhbCB2b2lkKiBoZWxw
ZXIoKTsKKwogICBDb250ZW50R0xDb250ZXh0KiBjb250ZW50X2dsX2NvbnRleHQoKSBjb25zdCB7
IHJldHVybiBjb250ZXh0XzsgfQogCiAgcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvd2Via2l0L2dw
dS93ZWJncmFwaGljc2NvbnRleHQzZF9pbl9wcm9jZXNzX2NvbW1hbmRfYnVmZmVyX2ltcGwuY2Mg
Yi93ZWJraXQvZ3B1L3dlYmdyYXBoaWNzY29udGV4dDNkX2luX3Byb2Nlc3NfY29tbWFuZF9idWZm
ZXJfaW1wbC5jYwppbmRleCBhMWY3MzViLi4xODMzYzIxIDEwMDY0NAotLS0gYS93ZWJraXQvZ3B1
L3dlYmdyYXBoaWNzY29udGV4dDNkX2luX3Byb2Nlc3NfY29tbWFuZF9idWZmZXJfaW1wbC5jYwor
KysgYi93ZWJraXQvZ3B1L3dlYmdyYXBoaWNzY29udGV4dDNkX2luX3Byb2Nlc3NfY29tbWFuZF9i
dWZmZXJfaW1wbC5jYwpAQCAtMTU1Niw2ICsxNTU2LDExIEBAIERFTEVHQVRFX1RPX0dMXzUodGV4
SW1hZ2VJT1N1cmZhY2UyRENIUk9NSVVNLCBUZXhJbWFnZUlPU3VyZmFjZTJEQ0hST01JVU0sCiBE
RUxFR0FURV9UT19HTF81KHRleFN0b3JhZ2UyREVYVCwgVGV4U3RvcmFnZTJERVhULAogICAgICAg
ICAgICAgICAgICBXR0MzRGVudW0sIFdHQzNEaW50LCBXR0MzRHVpbnQsIFdHQzNEaW50LCBXR0Mz
RGludCkKIAordm9pZCogV2ViR3JhcGhpY3NDb250ZXh0M0RJblByb2Nlc3NDb21tYW5kQnVmZmVy
SW1wbDo6aGVscGVyKCkKK3sKKyAgcmV0dXJuIDA7Cit9CisKICNpZiBXRUJLSVRfVVNJTkdfU0tJ
QQogR3JHTEludGVyZmFjZSogV2ViR3JhcGhpY3NDb250ZXh0M0RJblByb2Nlc3NDb21tYW5kQnVm
ZmVySW1wbDo6CiAgICAgb25DcmVhdGVHckdMSW50ZXJmYWNlKCkgewpkaWZmIC0tZ2l0IGEvd2Vi
a2l0L2dwdS93ZWJncmFwaGljc2NvbnRleHQzZF9pbl9wcm9jZXNzX2NvbW1hbmRfYnVmZmVyX2lt
cGwuaCBiL3dlYmtpdC9ncHUvd2ViZ3JhcGhpY3Njb250ZXh0M2RfaW5fcHJvY2Vzc19jb21tYW5k
X2J1ZmZlcl9pbXBsLmgKaW5kZXggZmNjZTg4Yi4uZmYyNTY5ZCAxMDA2NDQKLS0tIGEvd2Via2l0
L2dwdS93ZWJncmFwaGljc2NvbnRleHQzZF9pbl9wcm9jZXNzX2NvbW1hbmRfYnVmZmVyX2ltcGwu
aAorKysgYi93ZWJraXQvZ3B1L3dlYmdyYXBoaWNzY29udGV4dDNkX2luX3Byb2Nlc3NfY29tbWFu
ZF9idWZmZXJfaW1wbC5oCkBAIC00NjEsNiArNDYxLDggQEAgY2xhc3MgV2ViR3JhcGhpY3NDb250
ZXh0M0RJblByb2Nlc3NDb21tYW5kQnVmZmVySW1wbAogICAgICAgV0dDM0RlbnVtIHRhcmdldCwg
V0dDM0RpbnQgbGV2ZWxzLCBXR0MzRHVpbnQgaW50ZXJuYWxmb3JtYXQsCiAgICAgICBXR0MzRGlu
dCB3aWR0aCwgV0dDM0RpbnQgaGVpZ2h0KTsKIAorICB2aXJ0dWFsIHZvaWQqIGhlbHBlcigpOwor
CiAgcHJvdGVjdGVkOgogI2lmIFdFQktJVF9VU0lOR19TS0lBCiAgIHZpcnR1YWwgR3JHTEludGVy
ZmFjZSogb25DcmVhdGVHckdMSW50ZXJmYWNlKCk7CmRpZmYgLS1naXQgYS93ZWJraXQvZ3B1L3dl
YmdyYXBoaWNzY29udGV4dDNkX2luX3Byb2Nlc3NfaW1wbC5jYyBiL3dlYmtpdC9ncHUvd2ViZ3Jh
cGhpY3Njb250ZXh0M2RfaW5fcHJvY2Vzc19pbXBsLmNjCmluZGV4IDhmNTAxMzcuLmM4ZGY4ODQg
MTAwNjQ0Ci0tLSBhL3dlYmtpdC9ncHUvd2ViZ3JhcGhpY3Njb250ZXh0M2RfaW5fcHJvY2Vzc19p
bXBsLmNjCisrKyBiL3dlYmtpdC9ncHUvd2ViZ3JhcGhpY3Njb250ZXh0M2RfaW5fcHJvY2Vzc19p
bXBsLmNjCkBAIC0xNjM0LDYgKzE2MzQsMTEgQEAgdm9pZCBXZWJHcmFwaGljc0NvbnRleHQzRElu
UHJvY2Vzc0ltcGw6OnRleEltYWdlSU9TdXJmYWNlMkRDSFJPTUlVTSgKIERFTEVHQVRFX1RPX0dM
XzUodGV4U3RvcmFnZTJERVhULCBUZXhTdG9yYWdlMkRFWFQsCiAgICAgICAgICAgICAgICAgIFdH
QzNEZW51bSwgV0dDM0RpbnQsIFdHQzNEdWludCwgV0dDM0RpbnQsIFdHQzNEaW50KQogCit2b2lk
KiBXZWJHcmFwaGljc0NvbnRleHQzREluUHJvY2Vzc0ltcGw6OmhlbHBlcigpCit7CisgIHJldHVy
biAwOworfQorCiAjaWYgV0VCS0lUX1VTSU5HX1NLSUEKIEdyR0xJbnRlcmZhY2UqIFdlYkdyYXBo
aWNzQ29udGV4dDNESW5Qcm9jZXNzSW1wbDo6b25DcmVhdGVHckdMSW50ZXJmYWNlKCkgewogICBy
ZXR1cm4gZ2Z4OjpDcmVhdGVJblByb2Nlc3NTa2lhR0xCaW5kaW5nKCk7CmRpZmYgLS1naXQgYS93
ZWJraXQvZ3B1L3dlYmdyYXBoaWNzY29udGV4dDNkX2luX3Byb2Nlc3NfaW1wbC5oIGIvd2Via2l0
L2dwdS93ZWJncmFwaGljc2NvbnRleHQzZF9pbl9wcm9jZXNzX2ltcGwuaAppbmRleCAzN2Q5ZTE1
Li44ZmY5Mzg0IDEwMDY0NAotLS0gYS93ZWJraXQvZ3B1L3dlYmdyYXBoaWNzY29udGV4dDNkX2lu
X3Byb2Nlc3NfaW1wbC5oCisrKyBiL3dlYmtpdC9ncHUvd2ViZ3JhcGhpY3Njb250ZXh0M2RfaW5f
cHJvY2Vzc19pbXBsLmgKQEAgLTQ1OCw2ICs0NTgsOCBAQCBjbGFzcyBXZWJHcmFwaGljc0NvbnRl
eHQzREluUHJvY2Vzc0ltcGwgOiBwdWJsaWMgV2ViR3JhcGhpY3NDb250ZXh0M0QgewogICAgICAg
V0dDM0RlbnVtIHRhcmdldCwgV0dDM0RpbnQgbGV2ZWxzLCBXR0MzRHVpbnQgaW50ZXJuYWxmb3Jt
YXQsCiAgICAgICBXR0MzRGludCB3aWR0aCwgV0dDM0RpbnQgaGVpZ2h0KTsKIAorICB2aXJ0dWFs
IHZvaWQqIGhlbHBlcigpOworCiAgcHJvdGVjdGVkOgogI2lmIFdFQktJVF9VU0lOR19TS0lBCiAg
IHZpcnR1YWwgR3JHTEludGVyZmFjZSogb25DcmVhdGVHckdMSW50ZXJmYWNlKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132906</attachid>
            <date>2012-03-20 14:57:39 -0700</date>
            <delta_ts>2012-04-02 14:49:43 -0700</delta_ts>
            <desc>Prototype (WebKit)</desc>
            <filename>shared-memory-webkit.diff</filename>
            <type>text/plain</type>
            <size>26004</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViR3JhcGhpY3ND
b250ZXh0M0QuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViR3JhcGhpY3ND
b250ZXh0M0QuaAppbmRleCAyYWNkNjIwLi40ZjI4OTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxh
dGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmgKKysrIGIvU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oCkBAIC00MDgs
NiArNDA4LDggQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0dD
M0RpbnQgd2lkdGgsIFdHQzNEaW50IGhlaWdodCkgeyB9CiAKIAorICAgIHZpcnR1YWwgdm9pZCog
aGVscGVyKCkgPSAwOworCiAjaWYgV0VCS0lUX1VTSU5HX1NLSUEKICAgICBHckdMSW50ZXJmYWNl
KiBjcmVhdGVHckdMSW50ZXJmYWNlKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKaW5kZXgg
NDI2YzY1Ni4uYWQyNDc0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFw
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTQ1LDIwICs0NSwzMyBA
QCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0
dXJlKEJpdG1hcFNrUGljdHVyZUNhbnZhcwogdm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpwcmVwYXJlUmVjdChjb25zdCBJbnRSZWN0JiBzb3Vy
Y2VSZWN0KQogewogICAgIG1fYml0bWFwLnNldENvbmZpZyhTa0JpdG1hcDo6a0FSR0JfODg4OF9D
b25maWcsIHNvdXJjZVJlY3Qud2lkdGgoKSwgc291cmNlUmVjdC5oZWlnaHQoKSk7Ci0gICAgbV9i
aXRtYXAuYWxsb2NQaXhlbHMoKTsKKworICAgIHZvaWQqIHBpeGVsRGVzdCA9IHRleHR1cmUoKS0+
bWFwVHJhbnNmZXJCdWZmZXIoKTsKKyAgICBpZiAocGl4ZWxEZXN0KQorICAgICAgICBtX2JpdG1h
cC5zZXRQaXhlbHMocGl4ZWxEZXN0KTsKKyAgICBlbHNlCisgICAgICAgIG1fYml0bWFwLmFsbG9j
UGl4ZWxzKCk7CisKICAgICBtX2JpdG1hcC5zZXRJc09wYXF1ZShtX3RleHR1cmVVcGRhdGVyLT5s
YXllcklzT3BhcXVlKCkpOwogICAgIFNrRGV2aWNlIGRldmljZShtX2JpdG1hcCk7CiAgICAgU2tD
YW52YXMgY2FudmFzKCZkZXZpY2UpOwogICAgIHRleHR1cmVVcGRhdGVyKCktPnBhaW50Q29udGVu
dHNSZWN0KCZjYW52YXMsIHNvdXJjZVJlY3QpOworCisgICAgaWYgKHBpeGVsRGVzdCkKKyAgICAg
ICAgbV9iaXRtYXAuc2V0SW1tdXRhYmxlKCk7CiB9CiAKIHZvaWQgQml0bWFwU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdChHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0
JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKIHsKICAgICB0ZXh0dXJlKCkt
PmJpbmRUZXh0dXJlKGNvbnRleHQsIGFsbG9jYXRvcik7CiAKLSAgICBtX2JpdG1hcC5sb2NrUGl4
ZWxzKCk7Ci0gICAgdGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlVGV4dHVyZVJlY3QoY29udGV4dCwg
dGV4dHVyZSgpLT5mb3JtYXQoKSwgZGVzdFJlY3QsIHN0YXRpY19jYXN0PHVpbnQ4X3QqPihtX2Jp
dG1hcC5nZXRQaXhlbHMoKSkpOwotICAgIG1fYml0bWFwLnVubG9ja1BpeGVscygpOworICAgIGlm
ICghbV9iaXRtYXAuaXNJbW11dGFibGUoKSkgeworICAgICAgICBtX2JpdG1hcC5sb2NrUGl4ZWxz
KCk7CisgICAgICAgIHRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRleHR1cmVSZWN0KGNvbnRleHQs
IHRleHR1cmUoKS0+Zm9ybWF0KCksIGRlc3RSZWN0LCBzdGF0aWNfY2FzdDx1aW50OF90Kj4obV9i
aXRtYXAuZ2V0UGl4ZWxzKCkpKTsKKyAgICAgICAgbV9iaXRtYXAudW5sb2NrUGl4ZWxzKCk7Cisg
ICAgfSBlbHNlCisgICAgICAgIHRleHR1cmUoKS0+dGV4U3ViSW1hZ2UyRFRyYW5zZmVyQnVmZmVy
KGNvbnRleHQsIGRlc3RSZWN0KTsKKwogICAgIG1fYml0bWFwLnJlc2V0KCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0V4dGVuc2lv
bnMzRENocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9FeHRlbnNpb25zM0RDaHJvbWl1bS5oCmluZGV4IDY2MjAwYzEuLjEzOWJjMzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0V4dGVuc2lvbnMz
RENocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vRXh0ZW5zaW9uczNEQ2hyb21pdW0uaApAQCAtMTM1LDYgKzEzNSw4IEBAIHB1YmxpYzoKICAg
ICAvLyBHTF9FWFRfdGV4dHVyZV9zdG9yYWdlCiAgICAgdm9pZCB0ZXhTdG9yYWdlMkRFWFQodW5z
aWduZWQgdGFyZ2V0LCBpbnQgbGV2ZWxzLCB1bnNpZ25lZCBpbnRlcm5hbGZvcm1hdCwgaW50IHdp
ZHRoLCBpbnQgaGVpZ2h0KTsKIAorICAgIHZvaWQqIGhlbHBlcigpOworCiBwcml2YXRlOgogICAg
IC8vIEluc3RhbmNlcyBvZiB0aGlzIGNsYXNzIGFyZSBzdHJpY3RseSBvd25lZCBieSB0aGUgR3Jh
cGhpY3NDb250ZXh0M0QgaW1wbGVtZW50YXRpb24gYW5kIGRvIG5vdAogICAgIC8vIG5lZWQgdG8g
YmUgaW5zdGFudGlhdGVkIGJ5IGFueSBvdGhlciBjb2RlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuY3Bw
CmluZGV4IDliYzcwMGQuLjRkNTgxMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5jcHAKQEAgLTEx
MCw2ICsxMTAsMTkgQEAgdm9pZCBNYW5hZ2VkVGV4dHVyZTo6dW5yZXNlcnZlKCkKICAgICBtX3Rl
eHR1cmVNYW5hZ2VyLT51bnByb3RlY3RUZXh0dXJlKG1fdG9rZW4pOwogfQogCit2b2lkKiBNYW5h
Z2VkVGV4dHVyZTo6bWFwVHJhbnNmZXJCdWZmZXIoKQoreworICAgIEFTU0VSVChtX3RleHR1cmVN
YW5hZ2VyLT5oYXNUZXh0dXJlKG1fdG9rZW4pKTsKKyAgICByZXR1cm4gbV90ZXh0dXJlTWFuYWdl
ci0+bWFwVHJhbnNmZXJCdWZmZXIobV90b2tlbik7Cit9CisKKwordm9pZCBNYW5hZ2VkVGV4dHVy
ZTo6dGV4U3ViSW1hZ2UyRFRyYW5zZmVyQnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3sKKyAgICBBU1NFUlQobV90ZXh0dXJlTWFuYWdl
ci0+aGFzVGV4dHVyZShtX3Rva2VuKSk7CisgICAgbV90ZXh0dXJlTWFuYWdlci0+dGV4U3ViSW1h
Z2UyRFRyYW5zZmVyQnVmZmVyKGNvbnRleHQsIGRlc3RSZWN0LCBtX3Rva2VuKTsKK30KKwogdm9p
ZCBNYW5hZ2VkVGV4dHVyZTo6YWxsb2NhdGUoVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQog
ewogICAgIEFTU0VSVChtX3RleHR1cmVNYW5hZ2VyLT5oYXNUZXh0dXJlKG1fdG9rZW4pKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFn
ZWRUZXh0dXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9N
YW5hZ2VkVGV4dHVyZS5oCmluZGV4IGVkNGQ0NTAuLmVkZDVmYjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1
cmUuaApAQCAtNTcsNiArNTcsOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX3RleHR1cmVN
YW5hZ2VyICYmIG1fdGV4dHVyZU1hbmFnZXItPmlzUHJvdGVjdGVkKG1fdG9rZW4pOwogICAgIH0K
IAorICAgIHZvaWQqIG1hcFRyYW5zZmVyQnVmZmVyKCk7CisgICAgdm9pZCB0ZXhTdWJJbWFnZTJE
VHJhbnNmZXJCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBJbnRSZWN0JiBkZXN0UmVj
dCk7CisKICAgICB2b2lkIGFsbG9jYXRlKFRleHR1cmVBbGxvY2F0b3IqKTsKICAgICB2b2lkIGJp
bmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciopOwogICAgIHZv
aWQgZnJhbWVidWZmZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2Nh
dG9yKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9UZXh0dXJlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5jcHAKaW5kZXggMGM2ZmUxNC4uN2FlNTE1NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVy
ZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1RleHR1cmVNYW5hZ2VyLmNwcApAQCAtMjgsOCArMjgsMTUgQEAKIAogI2luY2x1ZGUgIlRl
eHR1cmVNYW5hZ2VyLmgiCiAKKyNpbmNsdWRlICJFeHRlbnNpb25zM0RDaHJvbWl1bS5oIgogI2lu
Y2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJl
LmgiCisjaW5jbHVkZSAiU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QuaCIKKworI3VuZGVmIExPRwor
I2luY2x1ZGUgImJhc2UvcHJvY2Vzc191dGlsLmgiCisjaW5jbHVkZSAiYmFzZS9zaGFyZWRfbWVt
b3J5LmgiCisjaW5jbHVkZSAiZ3B1L2NvbW1hbmRfYnVmZmVyL2NsaWVudC9nbGVzMl9pbXBsZW1l
bnRhdGlvbi5oIgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCkBAIC00Myw2ICs1MCwxNSBAQCBz
aXplX3QgbWVtb3J5TGltaXRCeXRlcyhzaXplX3Qgdmlld3BvcnRNdWx0aXBsaWVyLCBjb25zdCBJ
bnRTaXplJiB2aWV3cG9ydFNpemUsCiAgICAgICAgIHJldHVybiBtaW5NZWdhYnl0ZXMgKiAxMDI0
ICogMTAyNDsKICAgICByZXR1cm4gbWF4KG1pbk1lZ2FieXRlcyAqIDEwMjQgKiAxMDI0LCBtaW4o
bWF4TWVnYWJ5dGVzICogMTAyNCAqIDEwMjQsIHZpZXdwb3J0TXVsdGlwbGllciAqIFRleHR1cmVN
YW5hZ2VyOjptZW1vcnlVc2VCeXRlcyh2aWV3cG9ydFNpemUsIEdyYXBoaWNzQ29udGV4dDNEOjpS
R0JBKSkpOwogfQorZ3B1OjpDb21tYW5kQnVmZmVyKiBjb21tYW5kQnVmZmVyKCkKK3sKKyAgICBH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCA9IFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEOjpnZXQo
KS5nZXQoKTsKKyAgICBBU1NFUlQoY29udGV4dCk7CisgICAgRXh0ZW5zaW9uczNEQ2hyb21pdW0q
IGV4dGVuc2lvbnMgPSBzdGF0aWNfY2FzdDxFeHRlbnNpb25zM0RDaHJvbWl1bSo+KGNvbnRleHQt
PmdldEV4dGVuc2lvbnMoKSk7CisgICAgZ3B1OjpnbGVzMjo6R0xFUzJDbWRIZWxwZXIqIGhlbHBl
ciA9IHN0YXRpY19jYXN0PGdwdTo6Z2xlczI6OkdMRVMyQ21kSGVscGVyKj4oZXh0ZW5zaW9ucy0+
aGVscGVyKCkpOworICAgIEFTU0VSVChoZWxwZXIpOworICAgIHJldHVybiBoZWxwZXItPmNvbW1h
bmRfYnVmZmVyKCk7Cit9CiB9CiAKIHNpemVfdCBUZXh0dXJlTWFuYWdlcjo6aGlnaExpbWl0Qnl0
ZXMoY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplKQpAQCAtMTAxLDYgKzExNyw5IEBAIFRleHR1
cmVNYW5hZ2VyOjpUZXh0dXJlTWFuYWdlcihzaXplX3QgbWF4TWVtb3J5TGltaXRCeXRlcywgc2l6
ZV90IHByZWZlcnJlZE1lbW9yCiAgICAgLCBtX21lbW9yeVVzZUJ5dGVzKDApCiAgICAgLCBtX21h
eFRleHR1cmVTaXplKG1heFRleHR1cmVTaXplKQogICAgICwgbV9uZXh0VG9rZW4oMSkKKyAgICAs
IG1fbmV4dFRyYW5zZmVyQnVmZmVyVG9rZW4oMSkKKyAgICAsIG1fbGFzdFRva2VuUmVhZCgwKQor
ICAgICwgbV90cmFuc2ZlckJ1ZmZlck1lbW9yeVVzZUJ5dGVzKDApCiB7CiB9CiAKQEAgLTE5Miw2
ICsyMTEsMTIgQEAgdm9pZCBUZXh0dXJlTWFuYWdlcjo6ZXZpY3RUZXh0dXJlKFRleHR1cmVUb2tl
biB0b2tlbiwgVGV4dHVyZUluZm8gaW5mbykKIAogdm9pZCBUZXh0dXJlTWFuYWdlcjo6cmVkdWNl
TWVtb3J5VG9MaW1pdChzaXplX3QgbGltaXQpCiB7CisgICAgLy8gUmVkdWNlIHRyYW5zZmVyIGJ1
ZmZlciBtZW1vcnkgcmVsYXRpdmUgdG8gdGV4dHVyZSBtZW1vcnkgcmVkdWN0aW9uLgorICAgIHNp
emVfdCB0cmFuc2ZlckJ1ZmZlckxpbWl0ID0gbV90cmFuc2ZlckJ1ZmZlck1lbW9yeVVzZUJ5dGVz
OworCisgICAgaWYgKG1fbWVtb3J5VXNlQnl0ZXMpCisgICAgICAgIHRyYW5zZmVyQnVmZmVyTGlt
aXQgPSBtX3RyYW5zZmVyQnVmZmVyTWVtb3J5VXNlQnl0ZXMgLSAoKG1fbWVtb3J5VXNlQnl0ZXMg
LSBsaW1pdCkgKiBtX3RyYW5zZmVyQnVmZmVyTWVtb3J5VXNlQnl0ZXMpIC8gbV9tZW1vcnlVc2VC
eXRlczsKKwogICAgIHdoaWxlIChtX21lbW9yeVVzZUJ5dGVzID4gbGltaXQpIHsKICAgICAgICAg
QVNTRVJUKCFtX3RleHR1cmVMUlVTZXQuaXNFbXB0eSgpKTsKICAgICAgICAgYm9vbCBmb3VuZENh
bmRpZGF0ZSA9IGZhbHNlOwpAQCAtMjA3LDYgKzIzMiwyMSBAQCB2b2lkIFRleHR1cmVNYW5hZ2Vy
OjpyZWR1Y2VNZW1vcnlUb0xpbWl0KHNpemVfdCBsaW1pdCkKICAgICAgICAgaWYgKCFmb3VuZENh
bmRpZGF0ZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CisKKyAgICB3aGlsZSAobV90cmFu
c2ZlckJ1ZmZlck1lbW9yeVVzZUJ5dGVzID4gdHJhbnNmZXJCdWZmZXJMaW1pdCkgeworICAgICAg
ICBib29sIGZvdW5kQ2FuZGlkYXRlID0gZmFsc2U7CisgICAgICAgIGZvciAoVHJhbnNmZXJCdWZm
ZXJNYXA6Oml0ZXJhdG9yIGl0ID0gbV90cmFuc2ZlckJ1ZmZlcnMuYmVnaW4oKTsgaXQgIT0gbV90
cmFuc2ZlckJ1ZmZlcnMuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgICAgIGlmIChpdC0+c2Vjb25k
LmlzUHJvdGVjdGVkKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYg
KGl0LT5zZWNvbmQuZmVuY2UgPiBtX2xhc3RUb2tlblJlYWQpCisgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICBldmljdFRyYW5zZmVyQnVmZmVyKGl0LT5maXJzdCwgaXQtPnNl
Y29uZCk7CisgICAgICAgICAgICBmb3VuZENhbmRpZGF0ZSA9IHRydWU7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWZvdW5kQ2FuZGlkYXRlKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgIH0KIH0KIAogdm9pZCBUZXh0dXJlTWFuYWdlcjo6YWRkVGV4dHVyZShU
ZXh0dXJlVG9rZW4gdG9rZW4sIFRleHR1cmVJbmZvIGluZm8pCkBAIC0yMjAsNiArMjYwLDggQEAg
dm9pZCBUZXh0dXJlTWFuYWdlcjo6YWRkVGV4dHVyZShUZXh0dXJlVG9rZW4gdG9rZW4sIFRleHR1
cmVJbmZvIGluZm8pCiAKIHZvaWQgVGV4dHVyZU1hbmFnZXI6OmRlbGV0ZUV2aWN0ZWRUZXh0dXJl
cyhUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCiB7CisgICAgVFJBQ0VfRVZFTlQoIlRleHR1
cmVNYW5hZ2VyOjpkZWxldGVFdmljdGVkVGV4dHVyZXMiLCB0aGlzLCAwKTsKKwogICAgIGlmIChh
bGxvY2F0b3IpIHsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2V2aWN0ZWRUZXh0
dXJlcy5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgaWYgKG1fZXZpY3RlZFRleHR1cmVzW2ld
LnRleHR1cmVJZCkgewpAQCAtMjI5LDggKzI3MSwyMCBAQCB2b2lkIFRleHR1cmVNYW5hZ2VyOjpk
ZWxldGVFdmljdGVkVGV4dHVyZXMoVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQogICAgICAg
ICAgICAgICAgIGFsbG9jYXRvci0+ZGVsZXRlVGV4dHVyZShtX2V2aWN0ZWRUZXh0dXJlc1tpXS50
ZXh0dXJlSWQsIG1fZXZpY3RlZFRleHR1cmVzW2ldLnNpemUsIG1fZXZpY3RlZFRleHR1cmVzW2ld
LmZvcm1hdCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgLy8gRGVsZXRlIGV2
aWN0ZWQgdHJhbnNmZXIgYnVmZmVycy4KKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
X2V2aWN0ZWRUcmFuc2ZlckJ1ZmZlcnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGlmICht
X2V2aWN0ZWRUcmFuc2ZlckJ1ZmZlcnNbaV0gIT0gLTEpIHsKKyAgICAgICAgICAgICAgICBFeHRl
bnNpb25zM0RDaHJvbWl1bSogZXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENo
cm9taXVtKj4oYWxsb2NhdG9yLT5jb250ZXh0KCktPmdldEV4dGVuc2lvbnMoKSk7CisgICAgICAg
ICAgICAgICAgZ3B1OjpnbGVzMjo6R0xFUzJDbWRIZWxwZXIqIGhlbHBlciA9IHN0YXRpY19jYXN0
PGdwdTo6Z2xlczI6OkdMRVMyQ21kSGVscGVyKj4oZXh0ZW5zaW9ucy0+aGVscGVyKCkpOworICAg
ICAgICAgICAgICAgIEFTU0VSVChoZWxwZXIpOworICAgICAgICAgICAgICAgIGdwdTo6Q29tbWFu
ZEJ1ZmZlciogY21kQnVmID0gaGVscGVyLT5jb21tYW5kX2J1ZmZlcigpOworICAgICAgICAgICAg
ICAgIGNtZEJ1Zi0+RGVzdHJveVRyYW5zZmVyQnVmZmVyKG1fZXZpY3RlZFRyYW5zZmVyQnVmZmVy
c1tpXSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9CisKICAgICBtX2V2aWN0ZWRU
ZXh0dXJlcy5jbGVhcigpOworICAgIG1fZXZpY3RlZFRyYW5zZmVyQnVmZmVycy5jbGVhcigpOwog
fQogCiB2b2lkIFRleHR1cmVNYW5hZ2VyOjpldmljdEFuZERlbGV0ZUFsbFRleHR1cmVzKFRleHR1
cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKQEAgLTI0NCw2ICsyOTgsNyBAQCB2b2lkIFRleHR1cmVN
YW5hZ2VyOjpyZW1vdmVUZXh0dXJlKFRleHR1cmVUb2tlbiB0b2tlbiwgVGV4dHVyZUluZm8gaW5m
bykKIHsKICAgICBBU1NFUlQobV90ZXh0dXJlTFJVU2V0LmNvbnRhaW5zKHRva2VuKSk7CiAgICAg
QVNTRVJUKG1fdGV4dHVyZXMuY29udGFpbnModG9rZW4pKTsKKyAgICBBU1NFUlQoIWluZm8uYnVm
ZmVyKTsKICAgICBtX21lbW9yeVVzZUJ5dGVzIC09IG1lbW9yeVVzZUJ5dGVzKGluZm8uc2l6ZSwg
aW5mby5mb3JtYXQpOwogICAgIG1fdGV4dHVyZXMucmVtb3ZlKHRva2VuKTsKICAgICBBU1NFUlQo
bV90ZXh0dXJlTFJVU2V0LmNvbnRhaW5zKHRva2VuKSk7CkBAIC0yNzAsNiArMzI1LDcgQEAgdW5z
aWduZWQgVGV4dHVyZU1hbmFnZXI6OmFsbG9jYXRlVGV4dHVyZShUZXh0dXJlQWxsb2NhdG9yKiBh
bGxvY2F0b3IsIFRleHR1cmVUb2sKICNpZm5kZWYgTkRFQlVHCiAgICAgaW5mby0+YWxsb2NhdG9y
ID0gYWxsb2NhdG9yOwogI2VuZGlmCisKICAgICByZXR1cm4gdGV4dHVyZUlkOwogfQogCkBAIC0y
OTcsNiArMzUzLDcgQEAgYm9vbCBUZXh0dXJlTWFuYWdlcjo6cmVxdWVzdFRleHR1cmUoVGV4dHVy
ZVRva2VuIHRva2VuLCBJbnRTaXplIHNpemUsIHVuc2lnbmVkIGYKICAgICBpbmZvLmZvcm1hdCA9
IGZvcm1hdDsKICAgICBpbmZvLnRleHR1cmVJZCA9IDA7CiAgICAgaW5mby5pc1Byb3RlY3RlZCA9
IHRydWU7CisgICAgaW5mby5idWZmZXIgPSAwOwogI2lmbmRlZiBOREVCVUcKICAgICBpbmZvLmFs
bG9jYXRvciA9IDA7CiAjZW5kaWYKQEAgLTMwNCw2ICszNjEsMTEzIEBAIGJvb2wgVGV4dHVyZU1h
bmFnZXI6OnJlcXVlc3RUZXh0dXJlKFRleHR1cmVUb2tlbiB0b2tlbiwgSW50U2l6ZSBzaXplLCB1
bnNpZ25lZCBmCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK1RyYW5zZmVyQnVmZmVyVG9rZW4gVGV4
dHVyZU1hbmFnZXI6OmdldFRyYW5zZmVyQnVmZmVyVG9rZW4oKQoreworICAgIHJldHVybiBtX25l
eHRUcmFuc2ZlckJ1ZmZlclRva2VuKys7Cit9CisKK2ludCBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRl
VHJhbnNmZXJCdWZmZXIoVHJhbnNmZXJCdWZmZXJUb2tlbiB0b2tlbiwgc2l6ZV90IGJ5dGVzKQor
eworICAgIFRSQUNFX0VWRU5UKCJUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlVHJhbnNmZXJCdWZmZXIi
LCB0aGlzLCAwKTsKKyAgICBpbnQgc2htSWQgPSBjb21tYW5kQnVmZmVyKCktPkNyZWF0ZVRyYW5z
ZmVyQnVmZmVyKGJ5dGVzLCAtMSk7CisgICAgVHJhbnNmZXJCdWZmZXJJbmZvIGJ1ZmZlcjsKKyAg
ICBidWZmZXIuc2l6ZSA9IGJ5dGVzOworICAgIGJ1ZmZlci5zaG1JZCA9IHNobUlkOworICAgIGJ1
ZmZlci5yZWdpc3RlcmVkU2htSWQgPSAtMTsKKyAgICBidWZmZXIuZmVuY2UgPSAwOworICAgIGJ1
ZmZlci5pc1Byb3RlY3RlZCA9IHRydWU7CisgICAgYnVmZmVyLnNoYXJlZE1lbW9yeSA9IGNvbW1h
bmRCdWZmZXIoKS0+R2V0VHJhbnNmZXJCdWZmZXIoc2htSWQpLnNoYXJlZF9tZW1vcnk7CisgICAg
YWRkVHJhbnNmZXJCdWZmZXIodG9rZW4sIGJ1ZmZlcik7CisgICAgcmV0dXJuIHNobUlkOworfQor
Cit2b2lkIFRleHR1cmVNYW5hZ2VyOjphZGRUcmFuc2ZlckJ1ZmZlcihUcmFuc2ZlckJ1ZmZlclRv
a2VuIHRva2VuLCBUcmFuc2ZlckJ1ZmZlckluZm8gaW5mbykKK3sKKyAgICBBU1NFUlQoIW1fdHJh
bnNmZXJCdWZmZXJzLmNvbnRhaW5zKHRva2VuKSk7CisgICAgbV90cmFuc2ZlckJ1ZmZlck1lbW9y
eVVzZUJ5dGVzICs9IGluZm8uc2l6ZTsKKyAgICBtX3RyYW5zZmVyQnVmZmVycy5zZXQodG9rZW4s
IGluZm8pOworfQorCit2b2lkIFRleHR1cmVNYW5hZ2VyOjpyZW1vdmVUcmFuc2ZlckJ1ZmZlcihU
cmFuc2ZlckJ1ZmZlclRva2VuIHRva2VuLCBUcmFuc2ZlckJ1ZmZlckluZm8gaW5mbykKK3sKKyAg
ICBBU1NFUlQobV90ZXh0dXJlcy5jb250YWlucyh0b2tlbikpOworICAgIEFTU0VSVChpbmZvLnNo
bUlkICE9IC0xKTsKKyAgICBjb21tYW5kQnVmZmVyKCktPkRlc3Ryb3lUcmFuc2ZlckJ1ZmZlcihp
bmZvLnNobUlkKTsKKyAgICBtX3RyYW5zZmVyQnVmZmVyTWVtb3J5VXNlQnl0ZXMgLT0gaW5mby5z
aXplOworICAgIG1fdHJhbnNmZXJCdWZmZXJzLnJlbW92ZSh0b2tlbik7CisgICAgbV9ldmljdGVk
VHJhbnNmZXJCdWZmZXJzLmFwcGVuZChpbmZvLnJlZ2lzdGVyZWRTaG1JZCk7Cit9CisKK3ZvaWQg
VGV4dHVyZU1hbmFnZXI6OmV2aWN0VHJhbnNmZXJCdWZmZXIoVHJhbnNmZXJCdWZmZXJUb2tlbiB0
b2tlbiwgVHJhbnNmZXJCdWZmZXJJbmZvIGluZm8pCit7CisgICAgVFJBQ0VfRVZFTlQoIlRleHR1
cmVNYW5hZ2VyOjpldmljdFRyYW5zZmVyQnVmZmVyIiwgdGhpcywgMCk7CisgICAgcmVtb3ZlVHJh
bnNmZXJCdWZmZXIodG9rZW4sIGluZm8pOworfQorCit2b2lkKiBUZXh0dXJlTWFuYWdlcjo6bWFw
VHJhbnNmZXJCdWZmZXIoVGV4dHVyZVRva2VuIHRva2VuKQoreworICAgIFRleHR1cmVNYXA6Oml0
ZXJhdG9yIHRleHR1cmVJdCA9IG1fdGV4dHVyZXMuZmluZCh0b2tlbik7CisgICAgQVNTRVJUKHRl
eHR1cmVJdCAhPSBtX3RleHR1cmVzLmVuZCgpKTsKKyAgICBUZXh0dXJlSW5mbyogaW5mbyA9ICZ0
ZXh0dXJlSXQuZ2V0KCktPnNlY29uZDsKKyAgICBBU1NFUlQoaW5mby0+aXNQcm90ZWN0ZWQpOwor
ICAgIEFTU0VSVCghaW5mby0+YnVmZmVyKTsKKyAgICBpbnQgc2htSWQgPSAtMTsKKworICAgIHNp
emVfdCBtZW1vcnlSZXF1aXJlZEJ5dGVzID0gbWVtb3J5VXNlQnl0ZXMoaW5mby0+c2l6ZSwgaW5m
by0+Zm9ybWF0KTsKKyAgICBmb3IgKFRyYW5zZmVyQnVmZmVyTWFwOjppdGVyYXRvciBpdCA9IG1f
dHJhbnNmZXJCdWZmZXJzLmJlZ2luKCk7IGl0ICE9IG1fdHJhbnNmZXJCdWZmZXJzLmVuZCgpOyAr
K2l0KSB7CisgICAgICAgIGlmIChpdC0+c2Vjb25kLmlzUHJvdGVjdGVkKQorICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIGlmIChpdC0+c2Vjb25kLnNpemUgIT0gbWVtb3J5UmVxdWlyZWRC
eXRlcykKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoaXQtPnNlY29uZC5mZW5j
ZSA+IG1fbGFzdFRva2VuUmVhZCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIEFT
U0VSVChpdC0+c2Vjb25kLnNobUlkICE9IC0xKTsKKyAgICAgICAgc2htSWQgPSBpdC0+c2Vjb25k
LnNobUlkOworICAgICAgICBpdC0+c2Vjb25kLmlzUHJvdGVjdGVkID0gdHJ1ZTsKKyAgICAgICAg
aW5mby0+YnVmZmVyID0gaXQtPmZpcnN0OworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBp
ZiAoIWluZm8tPmJ1ZmZlcikgeworICAgICAgICBpZiAobV90cmFuc2ZlckJ1ZmZlck1lbW9yeVVz
ZUJ5dGVzICsgbWVtb3J5UmVxdWlyZWRCeXRlcyA+IG1fbWF4TWVtb3J5TGltaXRCeXRlcykKKyAg
ICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIGluZm8tPmJ1ZmZlciA9IGdldFRyYW5zZmVy
QnVmZmVyVG9rZW4oKTsKKyAgICAgICAgc2htSWQgPSBjcmVhdGVUcmFuc2ZlckJ1ZmZlcihpbmZv
LT5idWZmZXIsIG1lbW9yeVJlcXVpcmVkQnl0ZXMpOworICAgIH0KKworICAgIGdwdTo6QnVmZmVy
IGJ1ZmZlciA9IGNvbW1hbmRCdWZmZXIoKS0+R2V0VHJhbnNmZXJCdWZmZXIoc2htSWQpOworICAg
IHJldHVybiBidWZmZXIucHRyOworfQorCit2b2lkIFRleHR1cmVNYW5hZ2VyOjp0ZXhTdWJJbWFn
ZTJEVHJhbnNmZXJCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IEludFJl
Y3QmIGRlc3RSZWN0LCBUZXh0dXJlVG9rZW4gdG9rZW4pCit7CisgICAgVGV4dHVyZU1hcDo6aXRl
cmF0b3IgdGV4dHVyZUl0ID0gbV90ZXh0dXJlcy5maW5kKHRva2VuKTsKKyAgICBBU1NFUlQodGV4
dHVyZUl0ICE9IG1fdGV4dHVyZXMuZW5kKCkpOworICAgIFRleHR1cmVJbmZvKiB0ZXh0dXJlSW5m
byA9ICZ0ZXh0dXJlSXQuZ2V0KCktPnNlY29uZDsKKyAgICBBU1NFUlQodGV4dHVyZUluZm8tPmJ1
ZmZlcik7CisKKyAgICBUcmFuc2ZlckJ1ZmZlck1hcDo6aXRlcmF0b3IgaXQgPSBtX3RyYW5zZmVy
QnVmZmVycy5maW5kKHRleHR1cmVJbmZvLT5idWZmZXIpOworICAgIEFTU0VSVChpdCAhPSBtX3Ry
YW5zZmVyQnVmZmVycy5lbmQoKSk7CisgICAgVHJhbnNmZXJCdWZmZXJJbmZvKiBpbmZvID0gJml0
LmdldCgpLT5zZWNvbmQ7CisgICAgQVNTRVJUKGluZm8tPmlzUHJvdGVjdGVkKTsKKworICAgIEV4
dGVuc2lvbnMzRENocm9taXVtKiBleHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNE
Q2hyb21pdW0qPihjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkpOworICAgIGdwdTo6Z2xlczI6OkdM
RVMyQ21kSGVscGVyKiBoZWxwZXIgPSBzdGF0aWNfY2FzdDxncHU6OmdsZXMyOjpHTEVTMkNtZEhl
bHBlcio+KGV4dGVuc2lvbnMtPmhlbHBlcigpKTsKKyAgICBBU1NFUlQoaGVscGVyKTsKKyAgICBn
cHU6OkNvbW1hbmRCdWZmZXIqIGNtZEJ1ZiA9IGhlbHBlci0+Y29tbWFuZF9idWZmZXIoKTsKKwor
ICAgIGlmIChpbmZvLT5yZWdpc3RlcmVkU2htSWQgPT0gLTEpCisgICAgICAgIGluZm8tPnJlZ2lz
dGVyZWRTaG1JZCA9IGNtZEJ1Zi0+UmVnaXN0ZXJUcmFuc2ZlckJ1ZmZlcihpbmZvLT5zaGFyZWRN
ZW1vcnksIGluZm8tPnNpemUsIC0xKTsKKworICAgIGhlbHBlci0+VGV4U3ViSW1hZ2UyRChHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgZGVzdFJlY3QueCgpLCBkZXN0UmVjdC55KCks
IGRlc3RSZWN0LndpZHRoKCksIGRlc3RSZWN0LmhlaWdodCgpLCB0ZXh0dXJlSW5mby0+Zm9ybWF0
LCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgaW5mby0+cmVnaXN0ZXJlZFNobUlk
LCAwLCBGQUxTRSk7CisKKyAgICBpbmZvLT5mZW5jZSA9IGhlbHBlci0+SW5zZXJ0VG9rZW4oKTsK
KyAgICBpbmZvLT5pc1Byb3RlY3RlZCA9IGZhbHNlOworICAgIHRleHR1cmVJbmZvLT5idWZmZXIg
PSAwOworfQorCiB9CiAKICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0
dXJlTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
VGV4dHVyZU1hbmFnZXIuaAppbmRleCBlNGQ2ZDM4Li44M2I2ZWYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5h
Z2VyLmgKQEAgLTM1LDE2ICszNSwyMyBAQAogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAorbmFtZXNwYWNlIGJhc2UgeworY2xhc3MgU2hhcmVk
TWVtb3J5OworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1hbmFnZWRUZXh0dXJl
OwogdHlwZWRlZiBpbnQgVGV4dHVyZVRva2VuOwordHlwZWRlZiBpbnQgVHJhbnNmZXJCdWZmZXJU
b2tlbjsKIAogY2xhc3MgVGV4dHVyZUFsbG9jYXRvciB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB1
bnNpZ25lZCBjcmVhdGVUZXh0dXJlKGNvbnN0IEludFNpemUmLCBHQzNEZW51bSBmb3JtYXQpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlVGV4dHVyZSh1bnNpZ25lZCB0ZXh0dXJlLCBjb25z
dCBJbnRTaXplJiwgR0MzRGVudW0pID0gMDsKIAorICAgIHZpcnR1YWwgR3JhcGhpY3NDb250ZXh0
M0QqIGNvbnRleHQoKSB7IHJldHVybiAwOyB9CisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5U
ZXh0dXJlQWxsb2NhdG9yKCkgeyB9CiB9OwpAQCAtOTQsNiArMTAxLDEwIEBAIHB1YmxpYzoKICAg
ICB2b2lkIHJlZHVjZU1lbW9yeVRvTGltaXQoc2l6ZV90KTsKICAgICBzaXplX3QgY3VycmVudE1l
bW9yeVVzZUJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9tZW1vcnlVc2VCeXRlczsgfQogCisgICAg
dm9pZCogbWFwVHJhbnNmZXJCdWZmZXIoVGV4dHVyZVRva2VuKTsKKyAgICB2b2lkIHRleFN1Yklt
YWdlMkRUcmFuc2ZlckJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IEludFJlY3QmIGRl
c3RSZWN0LCBUZXh0dXJlVG9rZW4pOworICAgIHZvaWQgc2V0TGFzdFRva2VuUmVhZChpbnQgbGFz
dFRva2VuUmVhZCkgeyBtX2xhc3RUb2tlblJlYWQgPSBsYXN0VG9rZW5SZWFkOyB9CisKIHByaXZh
dGU6CiAgICAgVGV4dHVyZU1hbmFnZXIoc2l6ZV90IG1heE1lbW9yeUxpbWl0Qnl0ZXMsIHNpemVf
dCBwcmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVzLCBpbnQgbWF4VGV4dHVyZVNpemUpOwogCkBAIC0x
MDIsNiArMTEzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgR0MzRGVudW0gZm9ybWF0OwogICAgICAg
ICB1bnNpZ25lZCB0ZXh0dXJlSWQ7CiAgICAgICAgIGJvb2wgaXNQcm90ZWN0ZWQ7CisgICAgICAg
IFRyYW5zZmVyQnVmZmVyVG9rZW4gYnVmZmVyOwogI2lmbmRlZiBOREVCVUcKICAgICAgICAgVGV4
dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yOwogI2VuZGlmCkBAIC0xMzMsNiArMTQ1LDI5IEBAIHBy
aXZhdGU6CiAgICAgfTsKIAogICAgIFZlY3RvcjxFdmljdGlvbkVudHJ5PiBtX2V2aWN0ZWRUZXh0
dXJlczsKKworICAgIHN0cnVjdCBUcmFuc2ZlckJ1ZmZlckluZm8geworICAgICAgICBzaXplX3Qg
c2l6ZTsKKyAgICAgICAgaW50IHNobUlkOworICAgICAgICBpbnQgcmVnaXN0ZXJlZFNobUlkOwor
ICAgICAgICBpbnQgZmVuY2U7CisgICAgICAgIGJvb2wgaXNQcm90ZWN0ZWQ7CisgICAgICAgIGJh
c2U6OlNoYXJlZE1lbW9yeSogc2hhcmVkTWVtb3J5OworICAgIH07CisKKyAgICBUcmFuc2ZlckJ1
ZmZlclRva2VuIGdldFRyYW5zZmVyQnVmZmVyVG9rZW4oKTsKKworICAgIGludCBjcmVhdGVUcmFu
c2ZlckJ1ZmZlcihUcmFuc2ZlckJ1ZmZlclRva2VuLCBzaXplX3QgYnl0ZXMpOworICAgIHZvaWQg
YWRkVHJhbnNmZXJCdWZmZXIoVHJhbnNmZXJCdWZmZXJUb2tlbiwgVHJhbnNmZXJCdWZmZXJJbmZv
KTsKKyAgICB2b2lkIHJlbW92ZVRyYW5zZmVyQnVmZmVyKFRyYW5zZmVyQnVmZmVyVG9rZW4sIFRy
YW5zZmVyQnVmZmVySW5mbyk7CisgICAgdm9pZCBldmljdFRyYW5zZmVyQnVmZmVyKFRyYW5zZmVy
QnVmZmVyVG9rZW4sIFRyYW5zZmVyQnVmZmVySW5mbyk7CisKKyAgICB0eXBlZGVmIEhhc2hNYXA8
VHJhbnNmZXJCdWZmZXJUb2tlbiwgVHJhbnNmZXJCdWZmZXJJbmZvPiBUcmFuc2ZlckJ1ZmZlck1h
cDsKKyAgICBUcmFuc2ZlckJ1ZmZlck1hcCBtX3RyYW5zZmVyQnVmZmVyczsKKyAgICBWZWN0b3I8
aW50PiBtX2V2aWN0ZWRUcmFuc2ZlckJ1ZmZlcnM7CisgICAgVHJhbnNmZXJCdWZmZXJUb2tlbiBt
X25leHRUcmFuc2ZlckJ1ZmZlclRva2VuOworICAgIGludCBtX2xhc3RUb2tlblJlYWQ7CisgICAg
c2l6ZV90IG1fdHJhbnNmZXJCdWZmZXJNZW1vcnlVc2VCeXRlczsKIH07CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyYWNraW5nVGV4
dHVyZUFsbG9jYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmgKaW5kZXggYThhNTQ5Mi4uOTY1OGQ0NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tp
bmdUZXh0dXJlQWxsb2NhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmgKQEAgLTUwLDYgKzUwLDggQEAg
cHVibGljOgogICAgIHZvaWQgc2V0VGV4dHVyZVVzYWdlSGludChUZXh0dXJlVXNhZ2VIaW50IGhp
bnQpIHsgbV90ZXh0dXJlVXNhZ2VIaW50ID0gaGludDsgfQogICAgIHZvaWQgc2V0VXNlVGV4dHVy
ZVN0b3JhZ2VFeHQoYm9vbCB1c2VTdG9yYWdlRXh0KSB7IG1fdXNlVGV4dHVyZVN0b3JhZ2VFeHQg
PSB1c2VTdG9yYWdlRXh0OyB9CiAKKyAgICB2aXJ0dWFsIEdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0KCkgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CisKIHByb3RlY3RlZDoKICAgICBleHBs
aWNpdCBUcmFja2luZ1RleHR1cmVBbGxvY2F0b3IoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQz
RD4pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAppbmRleCBhMTQyYmUzLi4wZWQ2
OWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTQyMyw3ICs0MjMsNyBA
QCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6Y29tcG9zaXRlKCkKICAgICBzdGF0aWNfY2FzdDxDQ1Np
bmdsZVRocmVhZFByb3h5Kj4obV9wcm94eS5nZXQoKSktPmNvbXBvc2l0ZUltbWVkaWF0ZWx5KCk7
CiB9CiAKLWJvb2wgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoKQorYm9vbCBDQ0xheWVy
VHJlZUhvc3Q6OnVwZGF0ZUxheWVycyhpbnQgbGFzdFRva2VuUmVhZCkKIHsKICAgICBpZiAoIW1f
bGF5ZXJSZW5kZXJlckluaXRpYWxpemVkKSB7CiAgICAgICAgIGluaXRpYWxpemVMYXllclJlbmRl
cmVyKCk7CkBAIC00NDIsMTEgKzQ0MiwxMSBAQCBib29sIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRl
TGF5ZXJzKCkKICAgICBpZiAodmlld3BvcnRTaXplKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKIAotICAgIHVwZGF0ZUxheWVycyhyb290TGF5ZXIoKSk7CisgICAgdXBkYXRlTGF5
ZXJzKHJvb3RMYXllcigpLCBsYXN0VG9rZW5SZWFkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
dm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyhMYXllckNocm9taXVtKiByb290TGF5
ZXIpCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKExheWVyQ2hyb21pdW0qIHJv
b3RMYXllciwgaW50IGxhc3RUb2tlblJlYWQpCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJU
cmVlSG9zdDo6dXBkYXRlTGF5ZXJzIiwgdGhpcywgMCk7CiAKQEAgLTQ3NCw2ICs0NzQsOSBAQCB2
b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKExheWVyQ2hyb21pdW0qIHJvb3RMYXll
cikKICAgICAvLyBSZXNldCBwYXJ0aWFsIHRleHR1cmUgdXBkYXRlIHJlcXVlc3RzLgogICAgIG1f
cGFydGlhbFRleHR1cmVVcGRhdGVSZXF1ZXN0cyA9IDA7CiAKKyAgICAvLyBSZWxlYXNlIHRyYW5z
ZmVyIGJ1ZmZlcnMgdXNlZCBmb3IgdGV4dHVyZSB1cGxvYWRzLgorICAgIG1fY29udGVudHNUZXh0
dXJlTWFuYWdlci0+c2V0TGFzdFRva2VuUmVhZChsYXN0VG9rZW5SZWFkKTsKKwogICAgIHJlc2Vy
dmVUZXh0dXJlcygpOwogCiAgICAgcGFpbnRMYXllckNvbnRlbnRzKG1fdXBkYXRlTGlzdCwgUGFp
bnRWaXNpYmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKaW5kZXggZjc0OWE2Yi4uMDk5
ZGU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKQEAgLTE0NCw3ICsxNDQsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBkaWRDb21wbGV0ZVN3YXBCdWZmZXJzKCkgeyBtX2NsaWVudC0+ZGlk
Q29tcGxldGVTd2FwQnVmZmVycygpOyB9CiAgICAgdm9pZCBkZWxldGVDb250ZW50c1RleHR1cmVz
T25JbXBsVGhyZWFkKFRleHR1cmVBbGxvY2F0b3IqKTsKICAgICAvLyBSZXR1cm5zIGZhbHNlIGlm
IHdlIHNob3VsZCBhYm9ydCB0aGlzIGZyYW1lIGR1ZSB0byBpbml0aWFsaXphdGlvbiBmYWlsdXJl
LgotICAgIGJvb2wgdXBkYXRlTGF5ZXJzKCk7CisgICAgYm9vbCB1cGRhdGVMYXllcnMoaW50IGxh
c3RUb2tlblJlYWQgPSAwKTsKIAogICAgIENDTGF5ZXJUcmVlSG9zdENsaWVudCogY2xpZW50KCkg
eyByZXR1cm4gbV9jbGllbnQ7IH0KIApAQCAtMjIwLDcgKzIyMCw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBwYWludExheWVyQ29udGVudHMoY29uc3QgTGF5ZXJMaXN0JiwgUGFpbnRUeXBlKTsKICAg
ICB2b2lkIHBhaW50TWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKExheWVyQ2hyb21pdW0q
LCBQYWludFR5cGUpOwogCi0gICAgdm9pZCB1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSopOwor
ICAgIHZvaWQgdXBkYXRlTGF5ZXJzKExheWVyQ2hyb21pdW0qLCBpbnQgbGFzdFRva2VuUmVhZCk7
CiAgICAgLy8gUHJlLXJlc2VydmUgdGV4dHVyZXMgZm9yIGFueSBsYXllciBtYXJrZWQgImFsd2F5
cyByZXNlcnZlIHRleHR1cmVzIgogICAgIHZvaWQgcmVzZXJ2ZVRleHR1cmVzKCk7CiAgICAgdm9p
ZCBjbGVhclBlbmRpbmdVcGRhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94
eS5jcHAKaW5kZXggYjZmYzc2Yi4uOTZlMGY2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVU
aHJlYWRQcm94eS5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKIAogI2luY2x1ZGUgImNjL0NDU2luZ2xl
VGhyZWFkUHJveHkuaCIKIAorI2luY2x1ZGUgIkV4dGVuc2lvbnMzRENocm9taXVtLmgiCiAjaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21p
dW0uaCIKICNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCkBAIC0zMyw2ICszNCw5IEBACiAjaW5jbHVk
ZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgog
CisjdW5kZWYgTE9HCisjaW5jbHVkZSAiZ3B1L2NvbW1hbmRfYnVmZmVyL2NsaWVudC9nbGVzMl9p
bXBsZW1lbnRhdGlvbi5oIgorCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogdXNpbmcgbmFtZXNwYWNl
IFdURjsKIApAQCAtMjgyLDcgKzI4NiwxMyBAQCBib29sIENDU2luZ2xlVGhyZWFkUHJveHk6OmNv
bW1pdElmTmVlZGVkKCkKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNNYWluVGhyZWFkKCkpOwog
Ci0gICAgaWYgKCFtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycygpKQorICAgIGludCBsYXN0
VG9rZW5SZWFkID0gMDsKKyAgICBFeHRlbnNpb25zM0RDaHJvbWl1bSogZXh0ZW5zaW9ucyA9IHN0
YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4oY29udGV4dCgpLT5nZXRFeHRlbnNpb25z
KCkpOworICAgIGdwdTo6Z2xlczI6OkdMRVMyQ21kSGVscGVyKiBoZWxwZXIgPSBzdGF0aWNfY2Fz
dDxncHU6OmdsZXMyOjpHTEVTMkNtZEhlbHBlcio+KGV4dGVuc2lvbnMtPmhlbHBlcigpKTsKKyAg
ICBpZiAoaGVscGVyKQorICAgICAgICBsYXN0VG9rZW5SZWFkID0gaGVscGVyLT5sYXN0X3Rva2Vu
X3JlYWQoKTsKKworICAgIGlmICghbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMobGFzdFRv
a2VuUmVhZCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGRvQ29tbWl0KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Ro
cmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGhyZWFkUHJveHkuY3BwCmluZGV4IGQ1NDg4ZjIuLmI4ZmRlZTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGhyZWFkUHJveHkuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAKICNpbmNsdWRlICJjYy9DQ1Ro
cmVhZFByb3h5LmgiCiAKKyNpbmNsdWRlICJFeHRlbnNpb25zM0RDaHJvbWl1bS5oIgogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgogI2luY2x1
ZGUgImNjL0NDRGVsYXlCYXNlZFRpbWVTb3VyY2UuaCIKQEAgLTM5LDYgKzQwLDkgQEAKICNpbmNs
dWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCisj
dW5kZWYgTE9HCisjaW5jbHVkZSAiZ3B1L2NvbW1hbmRfYnVmZmVyL2NsaWVudC9nbGVzMl9pbXBs
ZW1lbnRhdGlvbi5oIgorCiB1c2luZyBuYW1lc3BhY2UgV1RGOwogCiBuYW1lc3BhY2UgewpAQCAt
Mzk5LDYgKzQwMywxMyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkJlZ2lu
RnJhbWUoKQogICAgIG1fcGVuZGluZ0JlZ2luRnJhbWVSZXF1ZXN0ID0gYWRvcHRQdHIobmV3IEJl
Z2luRnJhbWVBbmRDb21taXRTdGF0ZSgpKTsKICAgICBtX3BlbmRpbmdCZWdpbkZyYW1lUmVxdWVz
dC0+ZnJhbWVCZWdpblRpbWUgPSAwOwogICAgIG1fcGVuZGluZ0JlZ2luRnJhbWVSZXF1ZXN0LT5z
Y3JvbGxJbmZvID0gbV9sYXllclRyZWVIb3N0SW1wbC0+cHJvY2Vzc1Njcm9sbERlbHRhcygpOwor
ICAgIG1fcGVuZGluZ0JlZ2luRnJhbWVSZXF1ZXN0LT5sYXN0VG9rZW5SZWFkID0gMDsKKworICAg
IGlmIChtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCkpIHsKKyAgICAgICAgRXh0ZW5zaW9u
czNEQ2hyb21pdW0qIGV4dGVuc2lvbnMgPSBzdGF0aWNfY2FzdDxFeHRlbnNpb25zM0RDaHJvbWl1
bSo+KG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKS0+Z2V0RXh0ZW5zaW9ucygpKTsKKyAg
ICAgICAgZ3B1OjpnbGVzMjo6R0xFUzJDbWRIZWxwZXIqIGhlbHBlciA9IHN0YXRpY19jYXN0PGdw
dTo6Z2xlczI6OkdMRVMyQ21kSGVscGVyKj4oZXh0ZW5zaW9ucy0+aGVscGVyKCkpOworICAgICAg
ICBtX3BlbmRpbmdCZWdpbkZyYW1lUmVxdWVzdC0+bGFzdFRva2VuUmVhZCA9IGhlbHBlci0+bGFz
dF90b2tlbl9yZWFkKCk7CisgICAgfQogCiAgICAgbV9tYWluVGhyZWFkUHJveHktPnBvc3RUYXNr
KGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZSkpOwog
CkBAIC00NDcsNyArNDU4LDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lKCkKICAg
ICAvLyB1cGRhdGVMYXllcnMuCiAgICAgbV9jb21taXRSZXF1ZXN0ZWQgPSBmYWxzZTsKIAotICAg
IGlmICghbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKSkKKyAgICBpZiAoIW1fbGF5ZXJU
cmVlSG9zdC0+dXBkYXRlTGF5ZXJzKHJlcXVlc3QtPmxhc3RUb2tlblJlYWQpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICAvLyBCZWZvcmUgYXBwbHlpbmcgc2Nyb2xscyBhbmQgY2FsbGluZyBhbmlt
YXRlLCB3ZSBzZXQgbV9hbmltYXRlUmVxdWVzdGVkIHRvIGZhbHNlLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQ
cm94eS5oCmluZGV4IGU3YmFkYTYuLmU1YjcyMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgK
QEAgLTk1LDYgKzk1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgQmVnaW5GcmFtZUFuZENvbW1pdFN0
YXRlKCkgOiBmcmFtZUJlZ2luVGltZSgpIHsgfQogICAgICAgICBkb3VibGUgZnJhbWVCZWdpblRp
bWU7CiAgICAgICAgIE93blB0cjxDQ1Njcm9sbEFuZFNjYWxlU2V0PiBzY3JvbGxJbmZvOworICAg
ICAgICBpbnQgbGFzdFRva2VuUmVhZDsKICAgICB9OwogICAgIE93blB0cjxCZWdpbkZyYW1lQW5k
Q29tbWl0U3RhdGU+IG1fcGVuZGluZ0JlZ2luRnJhbWVSZXF1ZXN0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FeHRlbnNpb25zM0RDaHJvbWl1bS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FeHRlbnNpb25zM0RDaHJvbWl1bS5jcHAKaW5kZXggNGE2
MjUxZS4uMzFkZjcxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRXh0
ZW5zaW9uczNEQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0V4
dGVuc2lvbnMzRENocm9taXVtLmNwcApAQCAtMTcwLDYgKzE3MCwxMSBAQCB2b2lkIEV4dGVuc2lv
bnMzRENocm9taXVtOjp0ZXhTdG9yYWdlMkRFWFQodW5zaWduZWQgaW50IHRhcmdldCwgaW50IGxl
dmVscywgdW5zaQogICAgIG1fcHJpdmF0ZS0+dGV4U3RvcmFnZTJERVhUKHRhcmdldCwgbGV2ZWxz
LCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CiB9CiAKK3ZvaWQqIEV4dGVuc2lvbnMz
RENocm9taXVtOjpoZWxwZXIoKQoreworICAgIHJldHVybiBtX3ByaXZhdGUtPmhlbHBlcigpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRENo
cm9taXVtLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNE
Q2hyb21pdW0uY3BwCmluZGV4IGJhNjU5YzIuLjg3YTAzOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hyb21pdW0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hyb21pdW0uY3BwCkBA
IC04OTIsNiArODkyLDExIEBAIERFTEVHQVRFX1RPX0lNUExfMVIoZ2V0VHJhbnNsYXRlZFNoYWRl
clNvdXJjZUFOR0xFLCBQbGF0Zm9ybTNET2JqZWN0LCBTdHJpbmcpCiBERUxFR0FURV9UT19JTVBM
XzUodGV4SW1hZ2VJT1N1cmZhY2UyRENIUk9NSVVNLCBHQzNEZW51bSwgR0MzRGludCwgR0MzRGlu
dCwgR0MzRHVpbnQsIEdDM0R1aW50KQogREVMRUdBVEVfVE9fSU1QTF81KHRleFN0b3JhZ2UyREVY
VCwgR0MzRGVudW0sIEdDM0RpbnQsIEdDM0R1aW50LCBHQzNEaW50LCBHQzNEaW50KQogCit2b2lk
KiBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmhlbHBlcigpCit7CisgICAgcmV0dXJuIG1faW1w
bC0+aGVscGVyKCk7Cit9CisKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8gR3JhcGhpY3NDb250ZXh0M0QK
IC8vCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRl
eHQzRFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZS5oCmluZGV4IDZmMDgwOTUuLjEzZTA3MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oCkBAIC0zMTEs
NiArMzExLDggQEAgcHVibGljOgogICAgIC8vIEdMX0VYVF90ZXh0dXJlX3N0b3JhZ2UKICAgICB2
b2lkIHRleFN0b3JhZ2UyREVYVChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWxzLCBHQzNE
dWludCBpbnRlcm5hbGZvcm1hdCwgR0MzRGludCB3aWR0aCwgR0MzRGludCBoZWlnaHQpOwogCisg
ICAgdm9pZCogaGVscGVyKCk7CisKIHByaXZhdGU6CiAgICAgR3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlKFBhc3NPd25QdHI8V2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRD4sIGJvb2wgcHJlc2Vy
dmVEcmF3aW5nQnVmZmVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9GYWtlV2ViR3JhcGhpY3NDb250ZXh0M0QuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNELmgKaW5kZXggODA1ODI0Yi4uNDM4ZGQ4NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9GYWtlV2ViR3JhcGhpY3ND
b250ZXh0M0QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0Zha2VXZWJHcmFw
aGljc0NvbnRleHQzRC5oCkBAIC0yNTgsNiArMjU4LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCB0ZXhTdG9yYWdlMkRFWFQoV0dDM0RlbnVtIHRhcmdldCwgV0dDM0RpbnQgbGV2ZWxzLCBX
R0MzRHVpbnQgaW50ZXJuYWxmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBXR0MzRGludCB3aWR0aCwgV0dDM0RpbnQgaGVpZ2h0KSB7IH0KIAorICAgIHZpcnR1YWwgdm9p
ZCogaGVscGVyKCkgeyByZXR1cm4gMDsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgQXR0cmlidXRlcyBt
X2F0dHJzOwogfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132907</attachid>
            <date>2012-03-20 14:58:23 -0700</date>
            <delta_ts>2012-04-02 14:50:33 -0700</delta_ts>
            <desc>Prototype (Chromium)</desc>
            <filename>shared-memory-chromium.diff</filename>
            <type>text/plain</type>
            <size>4021</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL2NvbnRlbnQvY29tbW9uL2dwdS9jbGllbnQvd2ViZ3JhcGhpY3Njb250ZXh0
M2RfY29tbWFuZF9idWZmZXJfaW1wbC5jYyBiL2NvbnRlbnQvY29tbW9uL2dwdS9jbGllbnQvd2Vi
Z3JhcGhpY3Njb250ZXh0M2RfY29tbWFuZF9idWZmZXJfaW1wbC5jYwppbmRleCA4NjNmMDdjLi5l
NGZiOGIxIDEwMDY0NAotLS0gYS9jb250ZW50L2NvbW1vbi9ncHUvY2xpZW50L3dlYmdyYXBoaWNz
Y29udGV4dDNkX2NvbW1hbmRfYnVmZmVyX2ltcGwuY2MKKysrIGIvY29udGVudC9jb21tb24vZ3B1
L2NsaWVudC93ZWJncmFwaGljc2NvbnRleHQzZF9jb21tYW5kX2J1ZmZlcl9pbXBsLmNjCkBAIC0x
MjE5LDYgKzEyMTksMTAgQEAgREVMRUdBVEVfVE9fR0xfMyhnZXRRdWVyeWl2RVhULCBHZXRRdWVy
eWl2RVhULCBXR0MzRGVudW0sIFdHQzNEZW51bSwgV0dDM0RpbnQqKQogREVMRUdBVEVfVE9fR0xf
MyhnZXRRdWVyeU9iamVjdHVpdkVYVCwgR2V0UXVlcnlPYmplY3R1aXZFWFQsCiAgICAgICAgICAg
ICAgICAgIFdlYkdMSWQsIFdHQzNEZW51bSwgV0dDM0R1aW50KikKIAordm9pZCogV2ViR3JhcGhp
Y3NDb250ZXh0M0RDb21tYW5kQnVmZmVySW1wbDo6aGVscGVyKCkgeworICByZXR1cm4gZ2xfLT5o
ZWxwZXIoKTsKK30KKwogI2lmIFdFQktJVF9VU0lOR19TS0lBCiBHckdMSW50ZXJmYWNlKiBXZWJH
cmFwaGljc0NvbnRleHQzRENvbW1hbmRCdWZmZXJJbXBsOjpvbkNyZWF0ZUdyR0xJbnRlcmZhY2Uo
KSB7CiAgIHJldHVybiB3ZWJraXRfZ2x1ZTo6Q3JlYXRlQ29tbWFuZEJ1ZmZlclNraWFHTEJpbmRp
bmcoKTsKZGlmZiAtLWdpdCBhL2NvbnRlbnQvY29tbW9uL2dwdS9jbGllbnQvd2ViZ3JhcGhpY3Nj
b250ZXh0M2RfY29tbWFuZF9idWZmZXJfaW1wbC5oIGIvY29udGVudC9jb21tb24vZ3B1L2NsaWVu
dC93ZWJncmFwaGljc2NvbnRleHQzZF9jb21tYW5kX2J1ZmZlcl9pbXBsLmgKaW5kZXggMjUwOGJk
Ny4uMWRiMWRiYyAxMDA2NDQKLS0tIGEvY29udGVudC9jb21tb24vZ3B1L2NsaWVudC93ZWJncmFw
aGljc2NvbnRleHQzZF9jb21tYW5kX2J1ZmZlcl9pbXBsLmgKKysrIGIvY29udGVudC9jb21tb24v
Z3B1L2NsaWVudC93ZWJncmFwaGljc2NvbnRleHQzZF9jb21tYW5kX2J1ZmZlcl9pbXBsLmgKQEAg
LTQ5NSw2ICs0OTUsOCBAQCBjbGFzcyBXZWJHcmFwaGljc0NvbnRleHQzRENvbW1hbmRCdWZmZXJJ
bXBsCiAgIHZpcnR1YWwgdm9pZCBnZXRRdWVyeU9iamVjdHVpdkVYVCgKICAgICAgIFdlYkdMSWQg
cXVlcnksIFdHQzNEZW51bSBwbmFtZSwgV0dDM0R1aW50KiBwYXJhbXMpOwogCisgIHZpcnR1YWwg
dm9pZCogaGVscGVyKCk7CisKICAgQ29udGVudEdMQ29udGV4dCogY29udGVudF9nbF9jb250ZXh0
KCkgY29uc3QgeyByZXR1cm4gY29udGV4dF87IH0KIAogIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBh
L3dlYmtpdC9ncHUvd2ViZ3JhcGhpY3Njb250ZXh0M2RfaW5fcHJvY2Vzc19jb21tYW5kX2J1ZmZl
cl9pbXBsLmNjIGIvd2Via2l0L2dwdS93ZWJncmFwaGljc2NvbnRleHQzZF9pbl9wcm9jZXNzX2Nv
bW1hbmRfYnVmZmVyX2ltcGwuY2MKaW5kZXggZjcyOWI5Mi4uN2ZlNjdkNyAxMDA2NDQKLS0tIGEv
d2Via2l0L2dwdS93ZWJncmFwaGljc2NvbnRleHQzZF9pbl9wcm9jZXNzX2NvbW1hbmRfYnVmZmVy
X2ltcGwuY2MKKysrIGIvd2Via2l0L2dwdS93ZWJncmFwaGljc2NvbnRleHQzZF9pbl9wcm9jZXNz
X2NvbW1hbmRfYnVmZmVyX2ltcGwuY2MKQEAgLTE1NzQsNiArMTU3NCwxMSBAQCBERUxFR0FURV9U
T19HTF8zKGdldFF1ZXJ5aXZFWFQsIEdldFF1ZXJ5aXZFWFQsIFdHQzNEZW51bSwgV0dDM0RlbnVt
LCBXR0MzRGludCopCiBERUxFR0FURV9UT19HTF8zKGdldFF1ZXJ5T2JqZWN0dWl2RVhULCBHZXRR
dWVyeU9iamVjdHVpdkVYVCwKICAgICAgICAgICAgICAgICAgV2ViR0xJZCwgV0dDM0RlbnVtLCBX
R0MzRHVpbnQqKQogCit2b2lkKiBXZWJHcmFwaGljc0NvbnRleHQzREluUHJvY2Vzc0NvbW1hbmRC
dWZmZXJJbXBsOjpoZWxwZXIoKQoreworICByZXR1cm4gMDsKK30KKwogI2lmIFdFQktJVF9VU0lO
R19TS0lBCiBHckdMSW50ZXJmYWNlKiBXZWJHcmFwaGljc0NvbnRleHQzREluUHJvY2Vzc0NvbW1h
bmRCdWZmZXJJbXBsOjoKICAgICBvbkNyZWF0ZUdyR0xJbnRlcmZhY2UoKSB7CmRpZmYgLS1naXQg
YS93ZWJraXQvZ3B1L3dlYmdyYXBoaWNzY29udGV4dDNkX2luX3Byb2Nlc3NfY29tbWFuZF9idWZm
ZXJfaW1wbC5oIGIvd2Via2l0L2dwdS93ZWJncmFwaGljc2NvbnRleHQzZF9pbl9wcm9jZXNzX2Nv
bW1hbmRfYnVmZmVyX2ltcGwuaAppbmRleCBlYTY5ODY1Li5iMGI3ZGE3IDEwMDY0NAotLS0gYS93
ZWJraXQvZ3B1L3dlYmdyYXBoaWNzY29udGV4dDNkX2luX3Byb2Nlc3NfY29tbWFuZF9idWZmZXJf
aW1wbC5oCisrKyBiL3dlYmtpdC9ncHUvd2ViZ3JhcGhpY3Njb250ZXh0M2RfaW5fcHJvY2Vzc19j
b21tYW5kX2J1ZmZlcl9pbXBsLmgKQEAgLTQ3MSw2ICs0NzEsOCBAQCBjbGFzcyBXZWJHcmFwaGlj
c0NvbnRleHQzREluUHJvY2Vzc0NvbW1hbmRCdWZmZXJJbXBsCiAgIHZpcnR1YWwgdm9pZCBnZXRR
dWVyeU9iamVjdHVpdkVYVCgKICAgICAgIFdlYkdMSWQgcXVlcnksIFdHQzNEZW51bSBwbmFtZSwg
V0dDM0R1aW50KiBwYXJhbXMpOwogCisgIHZpcnR1YWwgdm9pZCogaGVscGVyKCk7CisKICBwcm90
ZWN0ZWQ6CiAjaWYgV0VCS0lUX1VTSU5HX1NLSUEKICAgdmlydHVhbCBHckdMSW50ZXJmYWNlKiBv
bkNyZWF0ZUdyR0xJbnRlcmZhY2UoKTsKZGlmZiAtLWdpdCBhL3dlYmtpdC9ncHUvd2ViZ3JhcGhp
Y3Njb250ZXh0M2RfaW5fcHJvY2Vzc19pbXBsLmNjIGIvd2Via2l0L2dwdS93ZWJncmFwaGljc2Nv
bnRleHQzZF9pbl9wcm9jZXNzX2ltcGwuY2MKaW5kZXggMGEzMzFmNC4uM2FkYjkxMiAxMDA2NDQK
LS0tIGEvd2Via2l0L2dwdS93ZWJncmFwaGljc2NvbnRleHQzZF9pbl9wcm9jZXNzX2ltcGwuY2MK
KysrIGIvd2Via2l0L2dwdS93ZWJncmFwaGljc2NvbnRleHQzZF9pbl9wcm9jZXNzX2ltcGwuY2MK
QEAgLTE2NTYsNiArMTY1NiwxMSBAQCBERUxFR0FURV9UT19HTF8zKGdldFF1ZXJ5aXZFWFQsIEdl
dFF1ZXJ5aXZBUkIsIFdHQzNEZW51bSwgV0dDM0RlbnVtLCBXR0MzRGludCopCiBERUxFR0FURV9U
T19HTF8zKGdldFF1ZXJ5T2JqZWN0dWl2RVhULCBHZXRRdWVyeU9iamVjdHVpdkFSQiwKICAgICAg
ICAgICAgICAgICAgV2ViR0xJZCwgV0dDM0RlbnVtLCBXR0MzRHVpbnQqKQogCit2b2lkKiBXZWJH
cmFwaGljc0NvbnRleHQzREluUHJvY2Vzc0ltcGw6OmhlbHBlcigpCit7CisgIHJldHVybiAwOwor
fQorCiAjaWYgV0VCS0lUX1VTSU5HX1NLSUEKIEdyR0xJbnRlcmZhY2UqIFdlYkdyYXBoaWNzQ29u
dGV4dDNESW5Qcm9jZXNzSW1wbDo6b25DcmVhdGVHckdMSW50ZXJmYWNlKCkgewogICByZXR1cm4g
Z2Z4OjpDcmVhdGVJblByb2Nlc3NTa2lhR0xCaW5kaW5nKCk7CmRpZmYgLS1naXQgYS93ZWJraXQv
Z3B1L3dlYmdyYXBoaWNzY29udGV4dDNkX2luX3Byb2Nlc3NfaW1wbC5oIGIvd2Via2l0L2dwdS93
ZWJncmFwaGljc2NvbnRleHQzZF9pbl9wcm9jZXNzX2ltcGwuaAppbmRleCBhMjZhNmJhLi5lMzhh
ODhjIDEwMDY0NAotLS0gYS93ZWJraXQvZ3B1L3dlYmdyYXBoaWNzY29udGV4dDNkX2luX3Byb2Nl
c3NfaW1wbC5oCisrKyBiL3dlYmtpdC9ncHUvd2ViZ3JhcGhpY3Njb250ZXh0M2RfaW5fcHJvY2Vz
c19pbXBsLmgKQEAgLTQ2OCw2ICs0NjgsOCBAQCBjbGFzcyBXZWJHcmFwaGljc0NvbnRleHQzRElu
UHJvY2Vzc0ltcGwgOiBwdWJsaWMgV2ViR3JhcGhpY3NDb250ZXh0M0QgewogICB2aXJ0dWFsIHZv
aWQgZ2V0UXVlcnlPYmplY3R1aXZFWFQoCiAgICAgICBXZWJHTElkIHF1ZXJ5LCBXR0MzRGVudW0g
cG5hbWUsIFdHQzNEdWludCogcGFyYW1zKTsKIAorICB2aXJ0dWFsIHZvaWQqIGhlbHBlcigpOwor
CiAgcHJvdGVjdGVkOgogI2lmIFdFQktJVF9VU0lOR19TS0lBCiAgIHZpcnR1YWwgR3JHTEludGVy
ZmFjZSogb25DcmVhdGVHckdMSW50ZXJmYWNlKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135196</attachid>
            <date>2012-04-02 14:49:43 -0700</date>
            <delta_ts>2012-04-03 09:46:36 -0700</delta_ts>
            <desc>Prototype (WebKit)</desc>
            <filename>shared-memory-webkit.diff</filename>
            <type>text/plain</type>
            <size>4923</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rl
eHR1cmVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1RleHR1cmVNYW5hZ2VyLmNwcAppbmRleCA1YTQ2YmE1Li43YWU1MTU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4
dHVyZU1hbmFnZXIuY3BwCkBAIC01Miw3ICs1Miw3IEBAIHNpemVfdCBtZW1vcnlMaW1pdEJ5dGVz
KHNpemVfdCB2aWV3cG9ydE11bHRpcGxpZXIsIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSwK
IH0KIGdwdTo6Q29tbWFuZEJ1ZmZlciogY29tbWFuZEJ1ZmZlcigpCiB7Ci0gICAgR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQgPSBTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6Z2V0KCk7CisgICAg
R3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQgPSBTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6Z2V0
KCkuZ2V0KCk7CiAgICAgQVNTRVJUKGNvbnRleHQpOwogICAgIEV4dGVuc2lvbnMzRENocm9taXVt
KiBleHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihjb250ZXh0
LT5nZXRFeHRlbnNpb25zKCkpOwogICAgIGdwdTo6Z2xlczI6OkdMRVMyQ21kSGVscGVyKiBoZWxw
ZXIgPSBzdGF0aWNfY2FzdDxncHU6OmdsZXMyOjpHTEVTMkNtZEhlbHBlcio+KGV4dGVuc2lvbnMt
PmhlbHBlcigpKTsKQEAgLTM3Niw2ICszNzYsNyBAQCBpbnQgVGV4dHVyZU1hbmFnZXI6OmNyZWF0
ZVRyYW5zZmVyQnVmZmVyKFRyYW5zZmVyQnVmZmVyVG9rZW4gdG9rZW4sIHNpemVfdCBieXRlcwog
ICAgIGJ1ZmZlci5yZWdpc3RlcmVkU2htSWQgPSAtMTsKICAgICBidWZmZXIuZmVuY2UgPSAwOwog
ICAgIGJ1ZmZlci5pc1Byb3RlY3RlZCA9IHRydWU7CisgICAgYnVmZmVyLnNoYXJlZE1lbW9yeSA9
IGNvbW1hbmRCdWZmZXIoKS0+R2V0VHJhbnNmZXJCdWZmZXIoc2htSWQpLnNoYXJlZF9tZW1vcnk7
CiAgICAgYWRkVHJhbnNmZXJCdWZmZXIodG9rZW4sIGJ1ZmZlcik7CiAgICAgcmV0dXJuIHNobUlk
OwogfQpAQCAtNDU3LDEwICs0NTgsOCBAQCB2b2lkIFRleHR1cmVNYW5hZ2VyOjp0ZXhTdWJJbWFn
ZTJEVHJhbnNmZXJCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbgogICAgIEFT
U0VSVChoZWxwZXIpOwogICAgIGdwdTo6Q29tbWFuZEJ1ZmZlciogY21kQnVmID0gaGVscGVyLT5j
b21tYW5kX2J1ZmZlcigpOwogCi0gICAgaWYgKGluZm8tPnJlZ2lzdGVyZWRTaG1JZCA9PSAtMSkg
ewotICAgICAgICBncHU6OkJ1ZmZlciBidWZmZXIgPSBjb21tYW5kQnVmZmVyKCktPkdldFRyYW5z
ZmVyQnVmZmVyKGluZm8tPnNobUlkKTsKLSAgICAgICAgaW5mby0+cmVnaXN0ZXJlZFNobUlkID0g
Y21kQnVmLT5SZWdpc3RlclRyYW5zZmVyQnVmZmVyKGJ1ZmZlci5zaGFyZWRfbWVtb3J5LCBpbmZv
LT5zaXplLCAtMSk7Ci0gICAgfQorICAgIGlmIChpbmZvLT5yZWdpc3RlcmVkU2htSWQgPT0gLTEp
CisgICAgICAgIGluZm8tPnJlZ2lzdGVyZWRTaG1JZCA9IGNtZEJ1Zi0+UmVnaXN0ZXJUcmFuc2Zl
ckJ1ZmZlcihpbmZvLT5zaGFyZWRNZW1vcnksIGluZm8tPnNpemUsIC0xKTsKIAogICAgIGhlbHBl
ci0+VGV4U3ViSW1hZ2UyRChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgZGVzdFJl
Y3QueCgpLCBkZXN0UmVjdC55KCksIGRlc3RSZWN0LndpZHRoKCksIGRlc3RSZWN0LmhlaWdodCgp
LCB0ZXh0dXJlSW5mby0+Zm9ybWF0LCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwg
aW5mby0+cmVnaXN0ZXJlZFNobUlkLCAwLCBGQUxTRSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5oCmlu
ZGV4IGRhNDc2Y2UuLjgzYjZlZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIuaApAQCAtMzUsNiArMzUs
MTAgQEAKICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAKK25hbWVzcGFjZSBiYXNlIHsKK2NsYXNzIFNoYXJlZE1lbW9yeTsKK30KKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBNYW5hZ2VkVGV4dHVyZTsKQEAgLTE0OCw2ICsxNTIsNyBA
QCBwcml2YXRlOgogICAgICAgICBpbnQgcmVnaXN0ZXJlZFNobUlkOwogICAgICAgICBpbnQgZmVu
Y2U7CiAgICAgICAgIGJvb2wgaXNQcm90ZWN0ZWQ7CisgICAgICAgIGJhc2U6OlNoYXJlZE1lbW9y
eSogc2hhcmVkTWVtb3J5OwogICAgIH07CiAKICAgICBUcmFuc2ZlckJ1ZmZlclRva2VuIGdldFRy
YW5zZmVyQnVmZmVyVG9rZW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5j
cHAKaW5kZXggY2E1Nzg1Mi4uYzYyNTI2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJl
YWRQcm94eS5jcHAKQEAgLTI5MSw5ICsyOTEsMTEgQEAgYm9vbCBDQ1NpbmdsZVRocmVhZFByb3h5
Ojpjb21taXRJZk5lZWRlZCgpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzTWFpblRocmVhZCgp
KTsKIAorICAgIGludCBsYXN0VG9rZW5SZWFkID0gMDsKICAgICBFeHRlbnNpb25zM0RDaHJvbWl1
bSogZXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4oY29udGV4
dCgpLT5nZXRFeHRlbnNpb25zKCkpOwogICAgIGdwdTo6Z2xlczI6OkdMRVMyQ21kSGVscGVyKiBo
ZWxwZXIgPSBzdGF0aWNfY2FzdDxncHU6OmdsZXMyOjpHTEVTMkNtZEhlbHBlcio+KGV4dGVuc2lv
bnMtPmhlbHBlcigpKTsKLSAgICBpbnQgbGFzdFRva2VuUmVhZCA9IGhlbHBlci0+bGFzdF90b2tl
bl9yZWFkKCk7CisgICAgaWYgKGhlbHBlcikKKyAgICAgICAgbGFzdFRva2VuUmVhZCA9IGhlbHBl
ci0+bGFzdF90b2tlbl9yZWFkKCk7CiAKICAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRl
TGF5ZXJzKGxhc3RUb2tlblJlYWQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGhyZWFkUHJveHkuY3BwCmluZGV4IDdmNmEwMGYuLjhkMDczZmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhy
ZWFkUHJveHkuY3BwCkBAIC00MTYsMTAgKzQxNiwxMyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OnNj
aGVkdWxlZEFjdGlvbkJlZ2luRnJhbWUoKQogICAgIG1fcGVuZGluZ0JlZ2luRnJhbWVSZXF1ZXN0
ID0gYWRvcHRQdHIobmV3IEJlZ2luRnJhbWVBbmRDb21taXRTdGF0ZSgpKTsKICAgICBtX3BlbmRp
bmdCZWdpbkZyYW1lUmVxdWVzdC0+bW9ub3RvbmljRnJhbWVCZWdpblRpbWUgPSBtb25vdG9uaWNh
bGx5SW5jcmVhc2luZ1RpbWUoKTsKICAgICBtX3BlbmRpbmdCZWdpbkZyYW1lUmVxdWVzdC0+c2Ny
b2xsSW5mbyA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPnByb2Nlc3NTY3JvbGxEZWx0YXMoKTsKKyAg
ICBtX3BlbmRpbmdCZWdpbkZyYW1lUmVxdWVzdC0+bGFzdFRva2VuUmVhZCA9IDA7CiAKLSAgICBF
eHRlbnNpb25zM0RDaHJvbWl1bSogZXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMz
RENocm9taXVtKj4obV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLT5nZXRFeHRlbnNpb25z
KCkpOwotICAgIGdwdTo6Z2xlczI6OkdMRVMyQ21kSGVscGVyKiBoZWxwZXIgPSBzdGF0aWNfY2Fz
dDxncHU6OmdsZXMyOjpHTEVTMkNtZEhlbHBlcio+KGV4dGVuc2lvbnMtPmhlbHBlcigpKTsKLSAg
ICBtX3BlbmRpbmdCZWdpbkZyYW1lUmVxdWVzdC0+bGFzdFRva2VuUmVhZCA9IGhlbHBlci0+bGFz
dF90b2tlbl9yZWFkKCk7CisgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSkg
eworICAgICAgICBFeHRlbnNpb25zM0RDaHJvbWl1bSogZXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0
PEV4dGVuc2lvbnMzRENocm9taXVtKj4obV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLT5n
ZXRFeHRlbnNpb25zKCkpOworICAgICAgICBncHU6OmdsZXMyOjpHTEVTMkNtZEhlbHBlciogaGVs
cGVyID0gc3RhdGljX2Nhc3Q8Z3B1OjpnbGVzMjo6R0xFUzJDbWRIZWxwZXIqPihleHRlbnNpb25z
LT5oZWxwZXIoKSk7CisgICAgICAgIG1fcGVuZGluZ0JlZ2luRnJhbWVSZXF1ZXN0LT5sYXN0VG9r
ZW5SZWFkID0gaGVscGVyLT5sYXN0X3Rva2VuX3JlYWQoKTsKKyAgICB9CiAKICAgICBtX21haW5U
aHJlYWRQcm94eS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFBy
b3h5OjpiZWdpbkZyYW1lKSk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135198</attachid>
            <date>2012-04-02 14:50:33 -0700</date>
            <delta_ts>2012-04-03 09:47:15 -0700</delta_ts>
            <desc>Prototype (Chromium)</desc>
            <filename>shared-memory-chromium.diff</filename>
            <type>text/plain</type>
            <size>4051</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL2NvbnRlbnQvY29tbW9uL2dwdS9jbGllbnQvd2ViZ3JhcGhpY3Njb250ZXh0
M2RfY29tbWFuZF9idWZmZXJfaW1wbC5jYyBiL2NvbnRlbnQvY29tbW9uL2dwdS9jbGllbnQvd2Vi
Z3JhcGhpY3Njb250ZXh0M2RfY29tbWFuZF9idWZmZXJfaW1wbC5jYwppbmRleCAwNjJjMzkyLi5l
ZjFmMWQ5IDEwMDY0NAotLS0gYS9jb250ZW50L2NvbW1vbi9ncHUvY2xpZW50L3dlYmdyYXBoaWNz
Y29udGV4dDNkX2NvbW1hbmRfYnVmZmVyX2ltcGwuY2MKKysrIGIvY29udGVudC9jb21tb24vZ3B1
L2NsaWVudC93ZWJncmFwaGljc2NvbnRleHQzZF9jb21tYW5kX2J1ZmZlcl9pbXBsLmNjCkBAIC0x
MjI2LDYgKzEyMjYsMTMgQEAgREVMRUdBVEVfVE9fR0xfMyhnZXRRdWVyeWl2RVhULCBHZXRRdWVy
eWl2RVhULCBXR0MzRGVudW0sIFdHQzNEZW51bSwgV0dDM0RpbnQqKQogREVMRUdBVEVfVE9fR0xf
MyhnZXRRdWVyeU9iamVjdHVpdkVYVCwgR2V0UXVlcnlPYmplY3R1aXZFWFQsCiAgICAgICAgICAg
ICAgICAgIFdlYkdMSWQsIFdHQzNEZW51bSwgV0dDM0R1aW50KikKIAordm9pZCogV2ViR3JhcGhp
Y3NDb250ZXh0M0RDb21tYW5kQnVmZmVySW1wbDo6aGVscGVyKCkgeworICBpZiAoIWdsXykKKyAg
ICByZXR1cm4gMDsKKworICByZXR1cm4gZ2xfLT5oZWxwZXIoKTsKK30KKwogI2lmIFdFQktJVF9V
U0lOR19TS0lBCiBHckdMSW50ZXJmYWNlKiBXZWJHcmFwaGljc0NvbnRleHQzRENvbW1hbmRCdWZm
ZXJJbXBsOjpvbkNyZWF0ZUdyR0xJbnRlcmZhY2UoKSB7CiAgIHJldHVybiB3ZWJraXRfZ2x1ZTo6
Q3JlYXRlQ29tbWFuZEJ1ZmZlclNraWFHTEJpbmRpbmcoKTsKZGlmZiAtLWdpdCBhL2NvbnRlbnQv
Y29tbW9uL2dwdS9jbGllbnQvd2ViZ3JhcGhpY3Njb250ZXh0M2RfY29tbWFuZF9idWZmZXJfaW1w
bC5oIGIvY29udGVudC9jb21tb24vZ3B1L2NsaWVudC93ZWJncmFwaGljc2NvbnRleHQzZF9jb21t
YW5kX2J1ZmZlcl9pbXBsLmgKaW5kZXggNzgyMjQ4MS4uMmFkZTc4YiAxMDA2NDQKLS0tIGEvY29u
dGVudC9jb21tb24vZ3B1L2NsaWVudC93ZWJncmFwaGljc2NvbnRleHQzZF9jb21tYW5kX2J1ZmZl
cl9pbXBsLmgKKysrIGIvY29udGVudC9jb21tb24vZ3B1L2NsaWVudC93ZWJncmFwaGljc2NvbnRl
eHQzZF9jb21tYW5kX2J1ZmZlcl9pbXBsLmgKQEAgLTUwMCw2ICs1MDAsOCBAQCBjbGFzcyBXZWJH
cmFwaGljc0NvbnRleHQzRENvbW1hbmRCdWZmZXJJbXBsCiAgIHZpcnR1YWwgdm9pZCBnZXRRdWVy
eU9iamVjdHVpdkVYVCgKICAgICAgIFdlYkdMSWQgcXVlcnksIFdHQzNEZW51bSBwbmFtZSwgV0dD
M0R1aW50KiBwYXJhbXMpOwogCisgIHZpcnR1YWwgdm9pZCogaGVscGVyKCk7CisKICAgQ29udGVu
dEdMQ29udGV4dCogY29udGVudF9nbF9jb250ZXh0KCkgY29uc3QgeyByZXR1cm4gY29udGV4dF87
IH0KIAogIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL3dlYmtpdC9ncHUvd2ViZ3JhcGhpY3Njb250
ZXh0M2RfaW5fcHJvY2Vzc19jb21tYW5kX2J1ZmZlcl9pbXBsLmNjIGIvd2Via2l0L2dwdS93ZWJn
cmFwaGljc2NvbnRleHQzZF9pbl9wcm9jZXNzX2NvbW1hbmRfYnVmZmVyX2ltcGwuY2MKaW5kZXgg
N2Q5YzBhMi4uN2I2NDhhYSAxMDA2NDQKLS0tIGEvd2Via2l0L2dwdS93ZWJncmFwaGljc2NvbnRl
eHQzZF9pbl9wcm9jZXNzX2NvbW1hbmRfYnVmZmVyX2ltcGwuY2MKKysrIGIvd2Via2l0L2dwdS93
ZWJncmFwaGljc2NvbnRleHQzZF9pbl9wcm9jZXNzX2NvbW1hbmRfYnVmZmVyX2ltcGwuY2MKQEAg
LTE1ODcsNiArMTU4NywxMSBAQCBERUxFR0FURV9UT19HTF8zKGdldFF1ZXJ5aXZFWFQsIEdldFF1
ZXJ5aXZFWFQsIFdHQzNEZW51bSwgV0dDM0RlbnVtLCBXR0MzRGludCopCiBERUxFR0FURV9UT19H
TF8zKGdldFF1ZXJ5T2JqZWN0dWl2RVhULCBHZXRRdWVyeU9iamVjdHVpdkVYVCwKICAgICAgICAg
ICAgICAgICAgV2ViR0xJZCwgV0dDM0RlbnVtLCBXR0MzRHVpbnQqKQogCit2b2lkKiBXZWJHcmFw
aGljc0NvbnRleHQzREluUHJvY2Vzc0NvbW1hbmRCdWZmZXJJbXBsOjpoZWxwZXIoKQoreworICBy
ZXR1cm4gMDsKK30KKwogI2lmIFdFQktJVF9VU0lOR19TS0lBCiBHckdMSW50ZXJmYWNlKiBXZWJH
cmFwaGljc0NvbnRleHQzREluUHJvY2Vzc0NvbW1hbmRCdWZmZXJJbXBsOjoKICAgICBvbkNyZWF0
ZUdyR0xJbnRlcmZhY2UoKSB7CmRpZmYgLS1naXQgYS93ZWJraXQvZ3B1L3dlYmdyYXBoaWNzY29u
dGV4dDNkX2luX3Byb2Nlc3NfY29tbWFuZF9idWZmZXJfaW1wbC5oIGIvd2Via2l0L2dwdS93ZWJn
cmFwaGljc2NvbnRleHQzZF9pbl9wcm9jZXNzX2NvbW1hbmRfYnVmZmVyX2ltcGwuaAppbmRleCA5
NDdiNmQ5Li5jZGZiZjAyIDEwMDY0NAotLS0gYS93ZWJraXQvZ3B1L3dlYmdyYXBoaWNzY29udGV4
dDNkX2luX3Byb2Nlc3NfY29tbWFuZF9idWZmZXJfaW1wbC5oCisrKyBiL3dlYmtpdC9ncHUvd2Vi
Z3JhcGhpY3Njb250ZXh0M2RfaW5fcHJvY2Vzc19jb21tYW5kX2J1ZmZlcl9pbXBsLmgKQEAgLTQ3
Niw2ICs0NzYsOCBAQCBjbGFzcyBXZWJHcmFwaGljc0NvbnRleHQzREluUHJvY2Vzc0NvbW1hbmRC
dWZmZXJJbXBsCiAgIHZpcnR1YWwgdm9pZCBnZXRRdWVyeU9iamVjdHVpdkVYVCgKICAgICAgIFdl
YkdMSWQgcXVlcnksIFdHQzNEZW51bSBwbmFtZSwgV0dDM0R1aW50KiBwYXJhbXMpOwogCisgIHZp
cnR1YWwgdm9pZCogaGVscGVyKCk7CisKICBwcm90ZWN0ZWQ6CiAjaWYgV0VCS0lUX1VTSU5HX1NL
SUEKICAgdmlydHVhbCBHckdMSW50ZXJmYWNlKiBvbkNyZWF0ZUdyR0xJbnRlcmZhY2UoKTsKZGlm
ZiAtLWdpdCBhL3dlYmtpdC9ncHUvd2ViZ3JhcGhpY3Njb250ZXh0M2RfaW5fcHJvY2Vzc19pbXBs
LmNjIGIvd2Via2l0L2dwdS93ZWJncmFwaGljc2NvbnRleHQzZF9pbl9wcm9jZXNzX2ltcGwuY2MK
aW5kZXggNmZlZmE3NC4uZDVkY2MzOCAxMDA2NDQKLS0tIGEvd2Via2l0L2dwdS93ZWJncmFwaGlj
c2NvbnRleHQzZF9pbl9wcm9jZXNzX2ltcGwuY2MKKysrIGIvd2Via2l0L2dwdS93ZWJncmFwaGlj
c2NvbnRleHQzZF9pbl9wcm9jZXNzX2ltcGwuY2MKQEAgLTE2NjgsNiArMTY2OCwxMSBAQCBERUxF
R0FURV9UT19HTF8zKGdldFF1ZXJ5aXZFWFQsIEdldFF1ZXJ5aXZBUkIsIFdHQzNEZW51bSwgV0dD
M0RlbnVtLCBXR0MzRGludCopCiBERUxFR0FURV9UT19HTF8zKGdldFF1ZXJ5T2JqZWN0dWl2RVhU
LCBHZXRRdWVyeU9iamVjdHVpdkFSQiwKICAgICAgICAgICAgICAgICAgV2ViR0xJZCwgV0dDM0Rl
bnVtLCBXR0MzRHVpbnQqKQogCit2b2lkKiBXZWJHcmFwaGljc0NvbnRleHQzREluUHJvY2Vzc0lt
cGw6OmhlbHBlcigpCit7CisgIHJldHVybiAwOworfQorCiAjaWYgV0VCS0lUX1VTSU5HX1NLSUEK
IEdyR0xJbnRlcmZhY2UqIFdlYkdyYXBoaWNzQ29udGV4dDNESW5Qcm9jZXNzSW1wbDo6b25DcmVh
dGVHckdMSW50ZXJmYWNlKCkgewogICByZXR1cm4gZ2Z4OjpDcmVhdGVJblByb2Nlc3NTa2lhR0xC
aW5kaW5nKCk7CmRpZmYgLS1naXQgYS93ZWJraXQvZ3B1L3dlYmdyYXBoaWNzY29udGV4dDNkX2lu
X3Byb2Nlc3NfaW1wbC5oIGIvd2Via2l0L2dwdS93ZWJncmFwaGljc2NvbnRleHQzZF9pbl9wcm9j
ZXNzX2ltcGwuaAppbmRleCA4YzEzZWQwLi45MWZlNjJhIDEwMDY0NAotLS0gYS93ZWJraXQvZ3B1
L3dlYmdyYXBoaWNzY29udGV4dDNkX2luX3Byb2Nlc3NfaW1wbC5oCisrKyBiL3dlYmtpdC9ncHUv
d2ViZ3JhcGhpY3Njb250ZXh0M2RfaW5fcHJvY2Vzc19pbXBsLmgKQEAgLTQ3Myw2ICs0NzMsOCBA
QCBjbGFzcyBXZWJHcmFwaGljc0NvbnRleHQzREluUHJvY2Vzc0ltcGwgOiBwdWJsaWMgV2ViR3Jh
cGhpY3NDb250ZXh0M0QgewogICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXZFWFQoCiAg
ICAgICBXZWJHTElkIHF1ZXJ5LCBXR0MzRGVudW0gcG5hbWUsIFdHQzNEdWludCogcGFyYW1zKTsK
IAorICB2aXJ0dWFsIHZvaWQqIGhlbHBlcigpOworCiAgcHJvdGVjdGVkOgogI2lmIFdFQktJVF9V
U0lOR19TS0lBCiAgIHZpcnR1YWwgR3JHTEludGVyZmFjZSogb25DcmVhdGVHckdMSW50ZXJmYWNl
KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135345</attachid>
            <date>2012-04-03 09:46:36 -0700</date>
            <delta_ts>2012-05-24 12:00:04 -0700</delta_ts>
            <desc>Prototype (WebKit)</desc>
            <filename>shared-memory-webkit.diff</filename>
            <type>text/plain</type>
            <size>4923</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rl
eHR1cmVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1RleHR1cmVNYW5hZ2VyLmNwcAppbmRleCA1YTQ2YmE1Li43YWU1MTU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4
dHVyZU1hbmFnZXIuY3BwCkBAIC01Miw3ICs1Miw3IEBAIHNpemVfdCBtZW1vcnlMaW1pdEJ5dGVz
KHNpemVfdCB2aWV3cG9ydE11bHRpcGxpZXIsIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSwK
IH0KIGdwdTo6Q29tbWFuZEJ1ZmZlciogY29tbWFuZEJ1ZmZlcigpCiB7Ci0gICAgR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQgPSBTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6Z2V0KCk7CisgICAg
R3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQgPSBTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6Z2V0
KCkuZ2V0KCk7CiAgICAgQVNTRVJUKGNvbnRleHQpOwogICAgIEV4dGVuc2lvbnMzRENocm9taXVt
KiBleHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihjb250ZXh0
LT5nZXRFeHRlbnNpb25zKCkpOwogICAgIGdwdTo6Z2xlczI6OkdMRVMyQ21kSGVscGVyKiBoZWxw
ZXIgPSBzdGF0aWNfY2FzdDxncHU6OmdsZXMyOjpHTEVTMkNtZEhlbHBlcio+KGV4dGVuc2lvbnMt
PmhlbHBlcigpKTsKQEAgLTM3Niw2ICszNzYsNyBAQCBpbnQgVGV4dHVyZU1hbmFnZXI6OmNyZWF0
ZVRyYW5zZmVyQnVmZmVyKFRyYW5zZmVyQnVmZmVyVG9rZW4gdG9rZW4sIHNpemVfdCBieXRlcwog
ICAgIGJ1ZmZlci5yZWdpc3RlcmVkU2htSWQgPSAtMTsKICAgICBidWZmZXIuZmVuY2UgPSAwOwog
ICAgIGJ1ZmZlci5pc1Byb3RlY3RlZCA9IHRydWU7CisgICAgYnVmZmVyLnNoYXJlZE1lbW9yeSA9
IGNvbW1hbmRCdWZmZXIoKS0+R2V0VHJhbnNmZXJCdWZmZXIoc2htSWQpLnNoYXJlZF9tZW1vcnk7
CiAgICAgYWRkVHJhbnNmZXJCdWZmZXIodG9rZW4sIGJ1ZmZlcik7CiAgICAgcmV0dXJuIHNobUlk
OwogfQpAQCAtNDU3LDEwICs0NTgsOCBAQCB2b2lkIFRleHR1cmVNYW5hZ2VyOjp0ZXhTdWJJbWFn
ZTJEVHJhbnNmZXJCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbgogICAgIEFT
U0VSVChoZWxwZXIpOwogICAgIGdwdTo6Q29tbWFuZEJ1ZmZlciogY21kQnVmID0gaGVscGVyLT5j
b21tYW5kX2J1ZmZlcigpOwogCi0gICAgaWYgKGluZm8tPnJlZ2lzdGVyZWRTaG1JZCA9PSAtMSkg
ewotICAgICAgICBncHU6OkJ1ZmZlciBidWZmZXIgPSBjb21tYW5kQnVmZmVyKCktPkdldFRyYW5z
ZmVyQnVmZmVyKGluZm8tPnNobUlkKTsKLSAgICAgICAgaW5mby0+cmVnaXN0ZXJlZFNobUlkID0g
Y21kQnVmLT5SZWdpc3RlclRyYW5zZmVyQnVmZmVyKGJ1ZmZlci5zaGFyZWRfbWVtb3J5LCBpbmZv
LT5zaXplLCAtMSk7Ci0gICAgfQorICAgIGlmIChpbmZvLT5yZWdpc3RlcmVkU2htSWQgPT0gLTEp
CisgICAgICAgIGluZm8tPnJlZ2lzdGVyZWRTaG1JZCA9IGNtZEJ1Zi0+UmVnaXN0ZXJUcmFuc2Zl
ckJ1ZmZlcihpbmZvLT5zaGFyZWRNZW1vcnksIGluZm8tPnNpemUsIC0xKTsKIAogICAgIGhlbHBl
ci0+VGV4U3ViSW1hZ2UyRChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgZGVzdFJl
Y3QueCgpLCBkZXN0UmVjdC55KCksIGRlc3RSZWN0LndpZHRoKCksIGRlc3RSZWN0LmhlaWdodCgp
LCB0ZXh0dXJlSW5mby0+Zm9ybWF0LCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwg
aW5mby0+cmVnaXN0ZXJlZFNobUlkLCAwLCBGQUxTRSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5oCmlu
ZGV4IGRhNDc2Y2UuLjgzYjZlZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIuaApAQCAtMzUsNiArMzUs
MTAgQEAKICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAKK25hbWVzcGFjZSBiYXNlIHsKK2NsYXNzIFNoYXJlZE1lbW9yeTsKK30KKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBNYW5hZ2VkVGV4dHVyZTsKQEAgLTE0OCw2ICsxNTIsNyBA
QCBwcml2YXRlOgogICAgICAgICBpbnQgcmVnaXN0ZXJlZFNobUlkOwogICAgICAgICBpbnQgZmVu
Y2U7CiAgICAgICAgIGJvb2wgaXNQcm90ZWN0ZWQ7CisgICAgICAgIGJhc2U6OlNoYXJlZE1lbW9y
eSogc2hhcmVkTWVtb3J5OwogICAgIH07CiAKICAgICBUcmFuc2ZlckJ1ZmZlclRva2VuIGdldFRy
YW5zZmVyQnVmZmVyVG9rZW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5j
cHAKaW5kZXggY2E1Nzg1Mi4uYzYyNTI2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJl
YWRQcm94eS5jcHAKQEAgLTI5MSw5ICsyOTEsMTEgQEAgYm9vbCBDQ1NpbmdsZVRocmVhZFByb3h5
Ojpjb21taXRJZk5lZWRlZCgpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzTWFpblRocmVhZCgp
KTsKIAorICAgIGludCBsYXN0VG9rZW5SZWFkID0gMDsKICAgICBFeHRlbnNpb25zM0RDaHJvbWl1
bSogZXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4oY29udGV4
dCgpLT5nZXRFeHRlbnNpb25zKCkpOwogICAgIGdwdTo6Z2xlczI6OkdMRVMyQ21kSGVscGVyKiBo
ZWxwZXIgPSBzdGF0aWNfY2FzdDxncHU6OmdsZXMyOjpHTEVTMkNtZEhlbHBlcio+KGV4dGVuc2lv
bnMtPmhlbHBlcigpKTsKLSAgICBpbnQgbGFzdFRva2VuUmVhZCA9IGhlbHBlci0+bGFzdF90b2tl
bl9yZWFkKCk7CisgICAgaWYgKGhlbHBlcikKKyAgICAgICAgbGFzdFRva2VuUmVhZCA9IGhlbHBl
ci0+bGFzdF90b2tlbl9yZWFkKCk7CiAKICAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRl
TGF5ZXJzKGxhc3RUb2tlblJlYWQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGhyZWFkUHJveHkuY3BwCmluZGV4IDdmNmEwMGYuLjhkMDczZmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhy
ZWFkUHJveHkuY3BwCkBAIC00MTYsMTAgKzQxNiwxMyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OnNj
aGVkdWxlZEFjdGlvbkJlZ2luRnJhbWUoKQogICAgIG1fcGVuZGluZ0JlZ2luRnJhbWVSZXF1ZXN0
ID0gYWRvcHRQdHIobmV3IEJlZ2luRnJhbWVBbmRDb21taXRTdGF0ZSgpKTsKICAgICBtX3BlbmRp
bmdCZWdpbkZyYW1lUmVxdWVzdC0+bW9ub3RvbmljRnJhbWVCZWdpblRpbWUgPSBtb25vdG9uaWNh
bGx5SW5jcmVhc2luZ1RpbWUoKTsKICAgICBtX3BlbmRpbmdCZWdpbkZyYW1lUmVxdWVzdC0+c2Ny
b2xsSW5mbyA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPnByb2Nlc3NTY3JvbGxEZWx0YXMoKTsKKyAg
ICBtX3BlbmRpbmdCZWdpbkZyYW1lUmVxdWVzdC0+bGFzdFRva2VuUmVhZCA9IDA7CiAKLSAgICBF
eHRlbnNpb25zM0RDaHJvbWl1bSogZXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMz
RENocm9taXVtKj4obV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLT5nZXRFeHRlbnNpb25z
KCkpOwotICAgIGdwdTo6Z2xlczI6OkdMRVMyQ21kSGVscGVyKiBoZWxwZXIgPSBzdGF0aWNfY2Fz
dDxncHU6OmdsZXMyOjpHTEVTMkNtZEhlbHBlcio+KGV4dGVuc2lvbnMtPmhlbHBlcigpKTsKLSAg
ICBtX3BlbmRpbmdCZWdpbkZyYW1lUmVxdWVzdC0+bGFzdFRva2VuUmVhZCA9IGhlbHBlci0+bGFz
dF90b2tlbl9yZWFkKCk7CisgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSkg
eworICAgICAgICBFeHRlbnNpb25zM0RDaHJvbWl1bSogZXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0
PEV4dGVuc2lvbnMzRENocm9taXVtKj4obV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLT5n
ZXRFeHRlbnNpb25zKCkpOworICAgICAgICBncHU6OmdsZXMyOjpHTEVTMkNtZEhlbHBlciogaGVs
cGVyID0gc3RhdGljX2Nhc3Q8Z3B1OjpnbGVzMjo6R0xFUzJDbWRIZWxwZXIqPihleHRlbnNpb25z
LT5oZWxwZXIoKSk7CisgICAgICAgIG1fcGVuZGluZ0JlZ2luRnJhbWVSZXF1ZXN0LT5sYXN0VG9r
ZW5SZWFkID0gaGVscGVyLT5sYXN0X3Rva2VuX3JlYWQoKTsKKyAgICB9CiAKICAgICBtX21haW5U
aHJlYWRQcm94eS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFBy
b3h5OjpiZWdpbkZyYW1lKSk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135346</attachid>
            <date>2012-04-03 09:47:15 -0700</date>
            <delta_ts>2012-05-24 12:00:04 -0700</delta_ts>
            <desc>Prototype (Chromium)</desc>
            <filename>shared-memory-chromium.diff</filename>
            <type>text/plain</type>
            <size>4054</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL2NvbnRlbnQvY29tbW9uL2dwdS9jbGllbnQvd2ViZ3JhcGhpY3Njb250ZXh0
M2RfY29tbWFuZF9idWZmZXJfaW1wbC5jYyBiL2NvbnRlbnQvY29tbW9uL2dwdS9jbGllbnQvd2Vi
Z3JhcGhpY3Njb250ZXh0M2RfY29tbWFuZF9idWZmZXJfaW1wbC5jYwppbmRleCBhOGI0YTNhLi5i
YTBkMjAwIDEwMDY0NAotLS0gYS9jb250ZW50L2NvbW1vbi9ncHUvY2xpZW50L3dlYmdyYXBoaWNz
Y29udGV4dDNkX2NvbW1hbmRfYnVmZmVyX2ltcGwuY2MKKysrIGIvY29udGVudC9jb21tb24vZ3B1
L2NsaWVudC93ZWJncmFwaGljc2NvbnRleHQzZF9jb21tYW5kX2J1ZmZlcl9pbXBsLmNjCkBAIC0x
NDU4LDYgKzE0NTgsMTMgQEAgREVMRUdBVEVfVE9fR0xfMyhnZXRRdWVyeWl2RVhULCBHZXRRdWVy
eWl2RVhULCBXR0MzRGVudW0sIFdHQzNEZW51bSwgV0dDM0RpbnQqKQogREVMRUdBVEVfVE9fR0xf
MyhnZXRRdWVyeU9iamVjdHVpdkVYVCwgR2V0UXVlcnlPYmplY3R1aXZFWFQsCiAgICAgICAgICAg
ICAgICAgIFdlYkdMSWQsIFdHQzNEZW51bSwgV0dDM0R1aW50KikKIAordm9pZCogV2ViR3JhcGhp
Y3NDb250ZXh0M0RDb21tYW5kQnVmZmVySW1wbDo6aGVscGVyKCkgeworICBpZiAoIWdsXykKKyAg
ICByZXR1cm4gMDsKKworICByZXR1cm4gZ2xfLT5oZWxwZXIoKTsKK30KKwogI2lmIFdFQktJVF9V
U0lOR19TS0lBCiBHckdMSW50ZXJmYWNlKiBXZWJHcmFwaGljc0NvbnRleHQzRENvbW1hbmRCdWZm
ZXJJbXBsOjpvbkNyZWF0ZUdyR0xJbnRlcmZhY2UoKSB7CiAgIHJldHVybiB3ZWJraXRfZ2x1ZTo6
Q3JlYXRlQ29tbWFuZEJ1ZmZlclNraWFHTEJpbmRpbmcoKTsKZGlmZiAtLWdpdCBhL2NvbnRlbnQv
Y29tbW9uL2dwdS9jbGllbnQvd2ViZ3JhcGhpY3Njb250ZXh0M2RfY29tbWFuZF9idWZmZXJfaW1w
bC5oIGIvY29udGVudC9jb21tb24vZ3B1L2NsaWVudC93ZWJncmFwaGljc2NvbnRleHQzZF9jb21t
YW5kX2J1ZmZlcl9pbXBsLmgKaW5kZXggOTcxYWJmNC4uNmYzNTA5MSAxMDA2NDQKLS0tIGEvY29u
dGVudC9jb21tb24vZ3B1L2NsaWVudC93ZWJncmFwaGljc2NvbnRleHQzZF9jb21tYW5kX2J1ZmZl
cl9pbXBsLmgKKysrIGIvY29udGVudC9jb21tb24vZ3B1L2NsaWVudC93ZWJncmFwaGljc2NvbnRl
eHQzZF9jb21tYW5kX2J1ZmZlcl9pbXBsLmgKQEAgLTU1MCw2ICs1NTAsOCBAQCBjbGFzcyBXZWJH
cmFwaGljc0NvbnRleHQzRENvbW1hbmRCdWZmZXJJbXBsCiAgIHZpcnR1YWwgdm9pZCBnZXRRdWVy
eU9iamVjdHVpdkVYVCgKICAgICAgIFdlYkdMSWQgcXVlcnksIFdHQzNEZW51bSBwbmFtZSwgV0dD
M0R1aW50KiBwYXJhbXMpOwogCisgIHZpcnR1YWwgdm9pZCogaGVscGVyKCk7CisKICBwcm90ZWN0
ZWQ6CiAjaWYgV0VCS0lUX1VTSU5HX1NLSUEKICAgdmlydHVhbCBHckdMSW50ZXJmYWNlKiBvbkNy
ZWF0ZUdyR0xJbnRlcmZhY2UoKTsKZGlmZiAtLWdpdCBhL3dlYmtpdC9ncHUvd2ViZ3JhcGhpY3Nj
b250ZXh0M2RfaW5fcHJvY2Vzc19jb21tYW5kX2J1ZmZlcl9pbXBsLmNjIGIvd2Via2l0L2dwdS93
ZWJncmFwaGljc2NvbnRleHQzZF9pbl9wcm9jZXNzX2NvbW1hbmRfYnVmZmVyX2ltcGwuY2MKaW5k
ZXggYzY0ZTg2MS4uZTFmYjc4ZSAxMDA2NDQKLS0tIGEvd2Via2l0L2dwdS93ZWJncmFwaGljc2Nv
bnRleHQzZF9pbl9wcm9jZXNzX2NvbW1hbmRfYnVmZmVyX2ltcGwuY2MKKysrIGIvd2Via2l0L2dw
dS93ZWJncmFwaGljc2NvbnRleHQzZF9pbl9wcm9jZXNzX2NvbW1hbmRfYnVmZmVyX2ltcGwuY2MK
QEAgLTE1OTEsNiArMTU5MSwxMSBAQCBERUxFR0FURV9UT19HTF8zKGdldFF1ZXJ5aXZFWFQsIEdl
dFF1ZXJ5aXZFWFQsIFdHQzNEZW51bSwgV0dDM0RlbnVtLCBXR0MzRGludCopCiBERUxFR0FURV9U
T19HTF8zKGdldFF1ZXJ5T2JqZWN0dWl2RVhULCBHZXRRdWVyeU9iamVjdHVpdkVYVCwKICAgICAg
ICAgICAgICAgICAgV2ViR0xJZCwgV0dDM0RlbnVtLCBXR0MzRHVpbnQqKQogCit2b2lkKiBXZWJH
cmFwaGljc0NvbnRleHQzREluUHJvY2Vzc0NvbW1hbmRCdWZmZXJJbXBsOjpoZWxwZXIoKQorewor
ICByZXR1cm4gMDsKK30KKwogI2lmIFdFQktJVF9VU0lOR19TS0lBCiBHckdMSW50ZXJmYWNlKiBX
ZWJHcmFwaGljc0NvbnRleHQzREluUHJvY2Vzc0NvbW1hbmRCdWZmZXJJbXBsOjoKICAgICBvbkNy
ZWF0ZUdyR0xJbnRlcmZhY2UoKSB7CmRpZmYgLS1naXQgYS93ZWJraXQvZ3B1L3dlYmdyYXBoaWNz
Y29udGV4dDNkX2luX3Byb2Nlc3NfY29tbWFuZF9idWZmZXJfaW1wbC5oIGIvd2Via2l0L2dwdS93
ZWJncmFwaGljc2NvbnRleHQzZF9pbl9wcm9jZXNzX2NvbW1hbmRfYnVmZmVyX2ltcGwuaAppbmRl
eCBhYWMyMDE5Li5iNDAwNzYyIDEwMDY0NAotLS0gYS93ZWJraXQvZ3B1L3dlYmdyYXBoaWNzY29u
dGV4dDNkX2luX3Byb2Nlc3NfY29tbWFuZF9idWZmZXJfaW1wbC5oCisrKyBiL3dlYmtpdC9ncHUv
d2ViZ3JhcGhpY3Njb250ZXh0M2RfaW5fcHJvY2Vzc19jb21tYW5kX2J1ZmZlcl9pbXBsLmgKQEAg
LTQ3NSw2ICs0NzUsOCBAQCBjbGFzcyBXZWJHcmFwaGljc0NvbnRleHQzREluUHJvY2Vzc0NvbW1h
bmRCdWZmZXJJbXBsCiAgIHZpcnR1YWwgdm9pZCBnZXRRdWVyeU9iamVjdHVpdkVYVCgKICAgICAg
IFdlYkdMSWQgcXVlcnksIFdHQzNEZW51bSBwbmFtZSwgV0dDM0R1aW50KiBwYXJhbXMpOwogCisg
IHZpcnR1YWwgdm9pZCogaGVscGVyKCk7CisKICBwcm90ZWN0ZWQ6CiAjaWYgV0VCS0lUX1VTSU5H
X1NLSUEKICAgdmlydHVhbCBHckdMSW50ZXJmYWNlKiBvbkNyZWF0ZUdyR0xJbnRlcmZhY2UoKTsK
ZGlmZiAtLWdpdCBhL3dlYmtpdC9ncHUvd2ViZ3JhcGhpY3Njb250ZXh0M2RfaW5fcHJvY2Vzc19p
bXBsLmNjIGIvd2Via2l0L2dwdS93ZWJncmFwaGljc2NvbnRleHQzZF9pbl9wcm9jZXNzX2ltcGwu
Y2MKaW5kZXggN2UyZWMwZC4uZWYyYWU4MiAxMDA2NDQKLS0tIGEvd2Via2l0L2dwdS93ZWJncmFw
aGljc2NvbnRleHQzZF9pbl9wcm9jZXNzX2ltcGwuY2MKKysrIGIvd2Via2l0L2dwdS93ZWJncmFw
aGljc2NvbnRleHQzZF9pbl9wcm9jZXNzX2ltcGwuY2MKQEAgLTE2NzEsNiArMTY3MSwxMSBAQCBE
RUxFR0FURV9UT19HTF8zKGdldFF1ZXJ5aXZFWFQsIEdldFF1ZXJ5aXZBUkIsIFdHQzNEZW51bSwg
V0dDM0RlbnVtLCBXR0MzRGludCopCiBERUxFR0FURV9UT19HTF8zKGdldFF1ZXJ5T2JqZWN0dWl2
RVhULCBHZXRRdWVyeU9iamVjdHVpdkFSQiwKICAgICAgICAgICAgICAgICAgV2ViR0xJZCwgV0dD
M0RlbnVtLCBXR0MzRHVpbnQqKQogCit2b2lkKiBXZWJHcmFwaGljc0NvbnRleHQzREluUHJvY2Vz
c0ltcGw6OmhlbHBlcigpCit7CisgIHJldHVybiAwOworfQorCiAjaWYgV0VCS0lUX1VTSU5HX1NL
SUEKIEdyR0xJbnRlcmZhY2UqIFdlYkdyYXBoaWNzQ29udGV4dDNESW5Qcm9jZXNzSW1wbDo6b25D
cmVhdGVHckdMSW50ZXJmYWNlKCkgewogICByZXR1cm4gZ2Z4OjpDcmVhdGVJblByb2Nlc3NTa2lh
R0xCaW5kaW5nKCk7CmRpZmYgLS1naXQgYS93ZWJraXQvZ3B1L3dlYmdyYXBoaWNzY29udGV4dDNk
X2luX3Byb2Nlc3NfaW1wbC5oIGIvd2Via2l0L2dwdS93ZWJncmFwaGljc2NvbnRleHQzZF9pbl9w
cm9jZXNzX2ltcGwuaAppbmRleCBjMGJmN2IxLi45ZmJiZmM5IDEwMDY0NAotLS0gYS93ZWJraXQv
Z3B1L3dlYmdyYXBoaWNzY29udGV4dDNkX2luX3Byb2Nlc3NfaW1wbC5oCisrKyBiL3dlYmtpdC9n
cHUvd2ViZ3JhcGhpY3Njb250ZXh0M2RfaW5fcHJvY2Vzc19pbXBsLmgKQEAgLTQ3Miw2ICs0NzIs
OCBAQCBjbGFzcyBXZWJHcmFwaGljc0NvbnRleHQzREluUHJvY2Vzc0ltcGwgOiBwdWJsaWMgV2Vi
R3JhcGhpY3NDb250ZXh0M0QgewogICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXZFWFQo
CiAgICAgICBXZWJHTElkIHF1ZXJ5LCBXR0MzRGVudW0gcG5hbWUsIFdHQzNEdWludCogcGFyYW1z
KTsKIAorICB2aXJ0dWFsIHZvaWQqIGhlbHBlcigpOworCiAgcHJvdGVjdGVkOgogI2lmIFdFQktJ
VF9VU0lOR19TS0lBCiAgIHZpcnR1YWwgR3JHTEludGVyZmFjZSogb25DcmVhdGVHckdMSW50ZXJm
YWNlKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143867</attachid>
            <date>2012-05-24 12:00:04 -0700</date>
            <delta_ts>2012-05-24 12:00:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>shared-memory-painting.diff</filename>
            <type>text/plain</type>
            <size>39275</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Jp
dG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAK
aW5kZXggZjU1YzA2Mi4uODU5NTVlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgQml0bWFwQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6flRleHR1cmUoKQogewogfQogCi12b2lkIEJp
dG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3Qg
SW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCit2b2lkIEJpdG1h
cENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50
UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsIFRleHR1cmVVcGRhdGVT
ZXF1ZW5jZSkKIHsKICAgICB0ZXh0dXJlVXBkYXRlcigpLT51cGRhdGVUZXh0dXJlUmVjdChjb250
ZXh0LCBhbGxvY2F0b3IsIHRleHR1cmUoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFw
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4IDA0
Y2M0MWEuLmFmODliMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgICAgICBUZXh0dXJl
KEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqLCBQYXNzT3duUHRyPE1hbmFnZWRUZXh0
dXJlPik7CiAgICAgICAgIHZpcnR1YWwgflRleHR1cmUoKTsKIAotICAgICAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CisgICAgICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9j
YXRvciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0
LCBUZXh0dXJlVXBkYXRlU2VxdWVuY2UpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgQml0bWFw
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIoKSB7IHJldHVybiBtX3Rl
eHR1cmVVcGRhdGVyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IGU5YzI2MTkuLmU2MGI4MTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Jp
dG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC00NSwyMCArNDUsMzUgQEAgQml0bWFwU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6VGV4dHVyZShCaXRtYXBTa1BpY3R1
cmVDYW52YXMKIHZvaWQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
VGV4dHVyZTo6cHJlcGFyZVJlY3QoY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCkKIHsKICAgICBt
X2JpdG1hcC5zZXRDb25maWcoU2tCaXRtYXA6OmtBUkdCXzg4ODhfQ29uZmlnLCBzb3VyY2VSZWN0
LndpZHRoKCksIHNvdXJjZVJlY3QuaGVpZ2h0KCkpOwotICAgIG1fYml0bWFwLmFsbG9jUGl4ZWxz
KCk7CisKKyAgICB2b2lkKiBwaXhlbERlc3QgPSB0ZXh0dXJlKCktPm1hcFRyYW5zZmVyQnVmZmVy
KCk7CisgICAgaWYgKHBpeGVsRGVzdCkKKyAgICAgICAgbV9iaXRtYXAuc2V0UGl4ZWxzKHBpeGVs
RGVzdCk7CisgICAgZWxzZQorICAgICAgICBtX2JpdG1hcC5hbGxvY1BpeGVscygpOworCiAgICAg
bV9iaXRtYXAuc2V0SXNPcGFxdWUobV90ZXh0dXJlVXBkYXRlci0+bGF5ZXJJc09wYXF1ZSgpKTsK
ICAgICBTa0RldmljZSBkZXZpY2UobV9iaXRtYXApOwogICAgIFNrQ2FudmFzIGNhbnZhcygmZGV2
aWNlKTsKICAgICB0ZXh0dXJlVXBkYXRlcigpLT5wYWludENvbnRlbnRzUmVjdCgmY2FudmFzLCBz
b3VyY2VSZWN0KTsKKworICAgIGlmIChwaXhlbERlc3QpIHsKKyAgICAgICAgbV9iaXRtYXAuc2V0
SW1tdXRhYmxlKCk7CisgICAgICAgIHRleHR1cmUoKS0+dW5tYXBUcmFuc2ZlckJ1ZmZlcihwaXhl
bERlc3QpOworICAgIH0KIH0KIAotdm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3Qs
IGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQordm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIHNvdXJj
ZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LCBUZXh0dXJlVXBkYXRlU2VxdWVuY2Ugc2Vx
dWVuY2UpCiB7CiAgICAgdGV4dHVyZSgpLT5iaW5kVGV4dHVyZShjb250ZXh0LCBhbGxvY2F0b3Ip
OwogCi0gICAgbV9iaXRtYXAubG9ja1BpeGVscygpOwotICAgIHRleHR1cmVVcGRhdGVyKCktPnVw
ZGF0ZVRleHR1cmVSZWN0KGNvbnRleHQsIHRleHR1cmUoKS0+Zm9ybWF0KCksIGRlc3RSZWN0LCBz
dGF0aWNfY2FzdDx1aW50OF90Kj4obV9iaXRtYXAuZ2V0UGl4ZWxzKCkpKTsKLSAgICBtX2JpdG1h
cC51bmxvY2tQaXhlbHMoKTsKKyAgICBpZiAoIW1fYml0bWFwLmlzSW1tdXRhYmxlKCkpIHsKKyAg
ICAgICAgbV9iaXRtYXAubG9ja1BpeGVscygpOworICAgICAgICB0ZXh0dXJlVXBkYXRlcigpLT51
cGRhdGVUZXh0dXJlUmVjdChjb250ZXh0LCB0ZXh0dXJlKCktPmZvcm1hdCgpLCBkZXN0UmVjdCwg
c3RhdGljX2Nhc3Q8dWludDhfdCo+KG1fYml0bWFwLmdldFBpeGVscygpKSk7CisgICAgICAgIG1f
Yml0bWFwLnVubG9ja1BpeGVscygpOworICAgIH0gZWxzZQorICAgICAgICB0ZXh0dXJlKCktPnRl
eFN1YkltYWdlMkRUcmFuc2ZlckJ1ZmZlcihjb250ZXh0LCBkZXN0UmVjdCwgc2VxdWVuY2UpOwor
CiAgICAgbV9iaXRtYXAucmVzZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4IGJiMTQzMTAu
LjdmMWRkNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAg
ICAgICBUZXh0dXJlKEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqLCBQ
YXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPik7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHByZXBh
cmVSZWN0KGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QpOwotICAgICAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJ
bnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CisgICAgICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRv
ciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LCBU
ZXh0dXJlVXBkYXRlU2VxdWVuY2UpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgQml0bWFwU2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIoKSB7IHJldHVy
biBtX3RleHR1cmVVcGRhdGVyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9FeHRlbnNpb25zM0RDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRXh0ZW5zaW9uczNEQ2hyb21pdW0uaAppbmRl
eCA5MjgyMTM2Li4xYjM1ZDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9FeHRlbnNpb25zM0RDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0V4dGVuc2lvbnMzRENocm9taXVtLmgKQEAg
LTQ3LDYgKzQ3LDcgQEAgcHVibGljOgogICAgIC8vICAgR0xfQ0hST01JVU1fcGFpbnRfZnJhbWVi
dWZmZXJfY2FudmFzCiAgICAgLy8gICBHTF9DSFJPTUlVTV9pb3N1cmZhY2UgKE1hYyBPUyBYIHNw
ZWNpZmljKQogICAgIC8vICAgR0xfQ0hST01JVU1fY29tbWFuZF9idWZmZXJfcXVlcnkKKyAgICAv
LyAgIEdMX0NIUk9NSVVNX3BpeGVsX3RyYW5zZmVyX2J1ZmZlcl9vYmplY3QKICAgICAvLyAgIEdM
X0FOR0xFX3RleHR1cmVfdXNhZ2UKICAgICAvLyAgIEdMX0VYVF90ZXh0dXJlX3N0b3JhZ2UKICAg
ICAvLyAgIEdMX0VYVF9vY2NsdXNpb25fcXVlcnlfYm9vbGVhbgpAQCAtODcsNyArODgsMTAgQEAg
cHVibGljOgogICAgICAgICBRVUVSWV9SRVNVTFRfQVZBSUxBQkxFX0VYVCA9IDB4ODg2NywKIAog
ICAgICAgICAvLyBHTF9DSFJPTUlVTV9jb21tYW5kX2J1ZmZlcl9xdWVyeQotICAgICAgICBDT01N
QU5EU19JU1NVRURfQ0hST01JVU0gPSAweDg0RjIKKyAgICAgICAgQ09NTUFORFNfSVNTVUVEX0NI
Uk9NSVVNID0gMHg4NEYyLAorCisgICAgICAgIC8vIEdMX0NIUk9NSVVNX3BpeGVsX3RyYW5zZmVy
X2J1ZmZlcl9vYmplY3QKKyAgICAgICAgUElYRUxfVU5QQUNLX1RSQU5TRkVSX0JVRkZFUl9DSFJP
TUlVTSA9IDB4ODhFQwogICAgIH07CiAKICAgICAvLyBHTF9DSFJPTUlVTV9wb3N0X3N1Yl9idWZm
ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IDBjYTM1NGQuLjA0ZjY1MTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1l
QnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcApAQCAtNjYsNyArNjYsNyBAQCBGcmFtZUJ1ZmZl
clNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6On5UZXh0dXJlKCkK
IHsKIH0KIAotdm9pZCBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1
cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3Qg
SW50UmVjdCYgZGVzdFJlY3QpCit2b2lkIEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29u
dGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VS
ZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwgVGV4dHVyZVVwZGF0ZVNlcXVlbmNlKQogewog
ICAgIHRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRleHR1cmVSZWN0KGNvbnRleHQsIGFsbG9jYXRv
ciwgdGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlci5oCmluZGV4IDUwMzliYTkuLmRkNDVlMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5o
CkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICAgICAgVGV4dHVyZShGcmFtZUJ1ZmZlclNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqLCBQYXNzT3duUHRyPE1hbmFnZWRUZXh0
dXJlPik7CiAgICAgICAgIHZpcnR1YWwgflRleHR1cmUoKTsKIAotICAgICAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CisgICAgICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9j
YXRvciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0
LCBUZXh0dXJlVXBkYXRlU2VxdWVuY2UpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgRnJhbWVC
dWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlcigp
IHsgcmV0dXJuIG1fdGV4dHVyZVVwZGF0ZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0u
Y3BwCmluZGV4IGQ0YTQzMDEuLjMzMTg0ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVt
LmNwcApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHsKICAgICAgICAgfQogCi0g
ICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3Qs
IGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQorICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVj
dChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9y
LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwgVGV4
dHVyZVVwZGF0ZVNlcXVlbmNlKQogICAgICAgICB7CiAgICAgICAgICAgICB0ZXh0dXJlVXBkYXRl
cigpLT51cGRhdGVUZXh0dXJlUmVjdChjb250ZXh0LCBhbGxvY2F0b3IsIHRleHR1cmUoKSwgc291
cmNlUmVjdCwgZGVzdFJlY3QpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNo
cm9taXVtLmNwcAppbmRleCBhOWYzZDQ2Li5hYmJkOTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVu
ZGVyZXJDaHJvbWl1bS5jcHAKQEAgLTE1NSw3ICsxNTUsMTEgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgYm9vbCBpc0J1c3koKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBiZWdp
blVwbG9hZHMoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZW5kVXBsb2FkcygpIHsgfQotICAgIHZp
cnR1YWwgdm9pZCB1cGxvYWRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBMYXll
clRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxv
Y2F0b3IsIGNvbnN0IEludFJlY3Qgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCBkZXN0UmVjdCkg
eyB0ZXh0dXJlLT51cGRhdGVSZWN0KGNvbnRleHQsIGFsbG9jYXRvciwgc291cmNlUmVjdCwgZGVz
dFJlY3QpOyB9CisgICAgdmlydHVhbCB2b2lkIHVwbG9hZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0
M0QqIGNvbnRleHQsIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIFRleHR1
cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCBzb3VyY2VSZWN0LCBjb25zdCBJ
bnRSZWN0IGRlc3RSZWN0KSB7IHRleHR1cmUtPnVwZGF0ZVJlY3QoY29udGV4dCwgYWxsb2NhdG9y
LCBzb3VyY2VSZWN0LCBkZXN0UmVjdCwgMCk7IH0KKyAgICB2aXJ0dWFsIFRleHR1cmVVcGRhdGVT
ZXF1ZW5jZSBsYXN0VXBsb2FkQ29tcGxldGVkKCkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogCiBwcm90ZWN0ZWQ6CiAgICAgVW50aHJv
dHRsZWRUZXh0dXJlVXBsb2FkZXIoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaApp
bmRleCA1ZGI3YjRjLi5mNTExYTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBA
IC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKIAogICAgICAgICBNYW5hZ2VkVGV4dHVyZSogdGV4dHVy
ZSgpIHsgcmV0dXJuIG1fdGV4dHVyZS5nZXQoKTsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgcHJl
cGFyZVJlY3QoY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLykgeyB9Ci0gICAgICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRv
ciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KSA9
IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwg
VGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJl
Y3QmIGRlc3RSZWN0LCBUZXh0dXJlVXBkYXRlU2VxdWVuY2UpID0gMDsKICAgICBwcm90ZWN0ZWQ6
CiAgICAgICAgIGV4cGxpY2l0IFRleHR1cmUoUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4
dHVyZSkgOiBtX3RleHR1cmUodGV4dHVyZSkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmNwcApp
bmRleCA5YmM3MDBkLi5lMzRlYTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuY3BwCkBAIC0xMTAs
NiArMTEwLDI0IEBAIHZvaWQgTWFuYWdlZFRleHR1cmU6OnVucmVzZXJ2ZSgpCiAgICAgbV90ZXh0
dXJlTWFuYWdlci0+dW5wcm90ZWN0VGV4dHVyZShtX3Rva2VuKTsKIH0KIAordm9pZCogTWFuYWdl
ZFRleHR1cmU6Om1hcFRyYW5zZmVyQnVmZmVyKCkKK3sKKyAgICBBU1NFUlQobV90ZXh0dXJlTWFu
YWdlci0+aGFzVGV4dHVyZShtX3Rva2VuKSk7CisgICAgcmV0dXJuIG1fdGV4dHVyZU1hbmFnZXIt
Pm1hcFRyYW5zZmVyQnVmZmVyKG1fdG9rZW4pOworfQorCit2b2lkIE1hbmFnZWRUZXh0dXJlOjp1
bm1hcFRyYW5zZmVyQnVmZmVyKHZvaWQqIHBvaW50ZXIpCit7CisgICAgQVNTRVJUKG1fdGV4dHVy
ZU1hbmFnZXItPmhhc1RleHR1cmUobV90b2tlbikpOworICAgIHJldHVybiBtX3RleHR1cmVNYW5h
Z2VyLT51bm1hcFRyYW5zZmVyQnVmZmVyKG1fdG9rZW4sIHBvaW50ZXIpOworfQorCit2b2lkIE1h
bmFnZWRUZXh0dXJlOjp0ZXhTdWJJbWFnZTJEVHJhbnNmZXJCdWZmZXIoR3JhcGhpY3NDb250ZXh0
M0QqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LCB1aW50NjRfdCBzZXF1ZW5jZSkK
K3sKKyAgICBBU1NFUlQobV90ZXh0dXJlTWFuYWdlci0+aGFzVGV4dHVyZShtX3Rva2VuKSk7Cisg
ICAgbV90ZXh0dXJlTWFuYWdlci0+dGV4U3ViSW1hZ2UyRFRyYW5zZmVyQnVmZmVyKGNvbnRleHQs
IGRlc3RSZWN0LCBtX3Rva2VuLCBzZXF1ZW5jZSk7Cit9CisKIHZvaWQgTWFuYWdlZFRleHR1cmU6
OmFsbG9jYXRlKFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKIHsKICAgICBBU1NFUlQobV90
ZXh0dXJlTWFuYWdlci0+aGFzVGV4dHVyZShtX3Rva2VuKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuaApp
bmRleCBlZDRkNDUwLi45OWZkM2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmgKQEAgLTU3LDYgKzU3
LDEwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fdGV4dHVyZU1hbmFnZXIgJiYgbV90ZXh0
dXJlTWFuYWdlci0+aXNQcm90ZWN0ZWQobV90b2tlbik7CiAgICAgfQogCisgICAgdm9pZCogbWFw
VHJhbnNmZXJCdWZmZXIoKTsKKyAgICB2b2lkIHVubWFwVHJhbnNmZXJCdWZmZXIodm9pZCopOwor
ICAgIHZvaWQgdGV4U3ViSW1hZ2UyRFRyYW5zZmVyQnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEKiwg
Y29uc3QgSW50UmVjdCYgZGVzdFJlY3QsIHVpbnQ2NF90IHNlcXVlbmNlKTsKKwogICAgIHZvaWQg
YWxsb2NhdGUoVGV4dHVyZUFsbG9jYXRvciopOwogICAgIHZvaWQgYmluZFRleHR1cmUoR3JhcGhp
Y3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKik7CiAgICAgdm9pZCBmcmFtZWJ1ZmZlclRl
eHR1cmUyRChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1
cmVNYW5hZ2VyLmNwcAppbmRleCA5N2U2MmI5Li5kMzM3ZjhhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFn
ZXIuY3BwCkBAIC0yOCw4ICsyOCwxMCBAQAogCiAjaW5jbHVkZSAiVGV4dHVyZU1hbmFnZXIuaCIK
IAorI2luY2x1ZGUgIkV4dGVuc2lvbnMzRENocm9taXVtLmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmgiCiAjaW5jbHVkZSAiTWFuYWdlZFRleHR1cmUuaCIKKyNpbmNsdWRlICJT
aGFyZWRHcmFwaGljc0NvbnRleHQzRC5oIgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCkBAIC05
Niw2ICs5OCw5IEBAIFRleHR1cmVNYW5hZ2VyOjpUZXh0dXJlTWFuYWdlcihzaXplX3QgbWF4TWVt
b3J5TGltaXRCeXRlcywgc2l6ZV90IHByZWZlcnJlZE1lbW9yCiAgICAgLCBtX21lbW9yeVVzZUJ5
dGVzKDApCiAgICAgLCBtX21heFRleHR1cmVTaXplKG1heFRleHR1cmVTaXplKQogICAgICwgbV9u
ZXh0VG9rZW4oMSkKKyAgICAsIG1fbmV4dFRyYW5zZmVyQnVmZmVyVG9rZW4oMSkKKyAgICAsIG1f
bGFzdFVwZGF0ZUNvbXBsZXRlZCgwKQorICAgICwgbV90cmFuc2ZlckJ1ZmZlck1lbW9yeVVzZUJ5
dGVzKDApCiB7CiB9CiAKQEAgLTIwMSw2ICsyMDYsMTIgQEAgdm9pZCBUZXh0dXJlTWFuYWdlcjo6
ZXZpY3RUZXh0dXJlKFRleHR1cmVUb2tlbiB0b2tlbiwgVGV4dHVyZUluZm8gaW5mbykKIAogdm9p
ZCBUZXh0dXJlTWFuYWdlcjo6cmVkdWNlTWVtb3J5VG9MaW1pdChzaXplX3QgbGltaXQpCiB7Cisg
ICAgLy8gUmVkdWNlIHRyYW5zZmVyIGJ1ZmZlciBtZW1vcnkgcmVsYXRpdmUgdG8gdGV4dHVyZSBt
ZW1vcnkgcmVkdWN0aW9uLgorICAgIHNpemVfdCB0cmFuc2ZlckJ1ZmZlckxpbWl0ID0gbV90cmFu
c2ZlckJ1ZmZlck1lbW9yeVVzZUJ5dGVzOworCisgICAgaWYgKG1fbWVtb3J5VXNlQnl0ZXMpCisg
ICAgICAgIHRyYW5zZmVyQnVmZmVyTGltaXQgPSBtX3RyYW5zZmVyQnVmZmVyTWVtb3J5VXNlQnl0
ZXMgLSAoKG1fbWVtb3J5VXNlQnl0ZXMgLSBsaW1pdCkgKiBtX3RyYW5zZmVyQnVmZmVyTWVtb3J5
VXNlQnl0ZXMpIC8gbV9tZW1vcnlVc2VCeXRlczsKKwogICAgIHdoaWxlIChtX21lbW9yeVVzZUJ5
dGVzID4gbGltaXQpIHsKICAgICAgICAgQVNTRVJUKCFtX3RleHR1cmVMUlVTZXQuaXNFbXB0eSgp
KTsKICAgICAgICAgYm9vbCBmb3VuZENhbmRpZGF0ZSA9IGZhbHNlOwpAQCAtMjE2LDYgKzIyNywy
MSBAQCB2b2lkIFRleHR1cmVNYW5hZ2VyOjpyZWR1Y2VNZW1vcnlUb0xpbWl0KHNpemVfdCBsaW1p
dCkKICAgICAgICAgaWYgKCFmb3VuZENhbmRpZGF0ZSkKICAgICAgICAgICAgIHJldHVybjsKICAg
ICB9CisKKyAgICB3aGlsZSAobV90cmFuc2ZlckJ1ZmZlck1lbW9yeVVzZUJ5dGVzID4gdHJhbnNm
ZXJCdWZmZXJMaW1pdCkgeworICAgICAgICBib29sIGZvdW5kQ2FuZGlkYXRlID0gZmFsc2U7Cisg
ICAgICAgIGZvciAoVHJhbnNmZXJCdWZmZXJNYXA6Oml0ZXJhdG9yIGl0ID0gbV90cmFuc2ZlckJ1
ZmZlcnMuYmVnaW4oKTsgaXQgIT0gbV90cmFuc2ZlckJ1ZmZlcnMuZW5kKCk7ICsraXQpIHsKKyAg
ICAgICAgICAgIGlmIChpdC0+c2Vjb25kLmlzUHJvdGVjdGVkKQorICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAgaWYgKGl0LT5zZWNvbmQuZmVuY2UgPiBtX2xhc3RVcGRhdGVD
b21wbGV0ZWQpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBldmljdFRy
YW5zZmVyQnVmZmVyKGl0LT5maXJzdCwgaXQtPnNlY29uZCk7CisgICAgICAgICAgICBmb3VuZENh
bmRpZGF0ZSA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBp
ZiAoIWZvdW5kQ2FuZGlkYXRlKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KIH0KIAogdm9p
ZCBUZXh0dXJlTWFuYWdlcjo6YWRkVGV4dHVyZShUZXh0dXJlVG9rZW4gdG9rZW4sIFRleHR1cmVJ
bmZvIGluZm8pCkBAIC0yNTMsNiArMjc5LDcgQEAgdm9pZCBUZXh0dXJlTWFuYWdlcjo6cmVtb3Zl
VGV4dHVyZShUZXh0dXJlVG9rZW4gdG9rZW4sIFRleHR1cmVJbmZvIGluZm8pCiB7CiAgICAgQVNT
RVJUKG1fdGV4dHVyZUxSVVNldC5jb250YWlucyh0b2tlbikpOwogICAgIEFTU0VSVChtX3RleHR1
cmVzLmNvbnRhaW5zKHRva2VuKSk7CisgICAgQVNTRVJUKCFpbmZvLmJ1ZmZlcik7CiAgICAgbV9t
ZW1vcnlVc2VCeXRlcyAtPSBtZW1vcnlVc2VCeXRlcyhpbmZvLnNpemUsIGluZm8uZm9ybWF0KTsK
ICAgICBtX3RleHR1cmVzLnJlbW92ZSh0b2tlbik7CiAgICAgQVNTRVJUKG1fdGV4dHVyZUxSVVNl
dC5jb250YWlucyh0b2tlbikpOwpAQCAtMjc5LDYgKzMwNiw3IEBAIHVuc2lnbmVkIFRleHR1cmVN
YW5hZ2VyOjphbGxvY2F0ZVRleHR1cmUoVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBUZXh0
dXJlVG9rCiAjaWZuZGVmIE5ERUJVRwogICAgIGluZm8tPmFsbG9jYXRvciA9IGFsbG9jYXRvcjsK
ICNlbmRpZgorCiAgICAgcmV0dXJuIHRleHR1cmVJZDsKIH0KIApAQCAtMzA2LDYgKzMzNCw3IEBA
IGJvb2wgVGV4dHVyZU1hbmFnZXI6OnJlcXVlc3RUZXh0dXJlKFRleHR1cmVUb2tlbiB0b2tlbiwg
SW50U2l6ZSBzaXplLCB1bnNpZ25lZCBmCiAgICAgaW5mby5mb3JtYXQgPSBmb3JtYXQ7CiAgICAg
aW5mby50ZXh0dXJlSWQgPSAwOwogICAgIGluZm8uaXNQcm90ZWN0ZWQgPSB0cnVlOworICAgIGlu
Zm8uYnVmZmVyID0gMDsKICNpZm5kZWYgTkRFQlVHCiAgICAgaW5mby5hbGxvY2F0b3IgPSAwOwog
I2VuZGlmCkBAIC0zMTMsNiArMzQyLDEzMCBAQCBib29sIFRleHR1cmVNYW5hZ2VyOjpyZXF1ZXN0
VGV4dHVyZShUZXh0dXJlVG9rZW4gdG9rZW4sIEludFNpemUgc2l6ZSwgdW5zaWduZWQgZgogICAg
IHJldHVybiB0cnVlOwogfQogCitUcmFuc2ZlckJ1ZmZlclRva2VuIFRleHR1cmVNYW5hZ2VyOjpn
ZXRUcmFuc2ZlckJ1ZmZlclRva2VuKCkKK3sKKyAgICByZXR1cm4gbV9uZXh0VHJhbnNmZXJCdWZm
ZXJUb2tlbisrOworfQorCitpbnQgVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZVRyYW5zZmVyQnVmZmVy
KFRyYW5zZmVyQnVmZmVyVG9rZW4gdG9rZW4sIHNpemVfdCBieXRlcykKK3sKKyAgICBUUkFDRV9F
VkVOVCgiVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZVRyYW5zZmVyQnVmZmVyIiwgdGhpcywgMCk7Cisg
ICAgR3JhcGhpY3NDb250ZXh0M0QqIHNoYXJlZENvbnRleHQgPSBTaGFyZWRHcmFwaGljc0NvbnRl
eHQzRDo6Z2V0KCkuZ2V0KCk7CisgICAgQVNTRVJUKHNoYXJlZENvbnRleHQpOworICAgIHVuc2ln
bmVkIGJ1ZmZlcklkID0gMDsKKyAgICBHTEMoY29udGV4dCwgYnVmZmVySWQgPSBzaGFyZWRDb250
ZXh0LT5jcmVhdGVCdWZmZXIoKSk7CisgICAgQVNTRVJUKGJ1ZmZlcklkKTsKKyAgICBHTEMoc2hh
cmVkQ29udGV4dCwgc2hhcmVkQ29udGV4dC0+YmluZEJ1ZmZlcihFeHRlbnNpb25zM0RDaHJvbWl1
bTo6UElYRUxfVU5QQUNLX1RSQU5TRkVSX0JVRkZFUl9DSFJPTUlVTSwgYnVmZmVySWQpKTsKKyAg
ICBHTEMoc2hhcmVkQ29udGV4dCwgc2hhcmVkQ29udGV4dC0+YnVmZmVyRGF0YShFeHRlbnNpb25z
M0RDaHJvbWl1bTo6UElYRUxfVU5QQUNLX1RSQU5TRkVSX0JVRkZFUl9DSFJPTUlVTSwgYnl0ZXMs
IE5VTEwsIEdyYXBoaWNzQ29udGV4dDNEOjpEWU5BTUlDX0RSQVcpKTsKKyAgICBHTEMoc2hhcmVk
Q29udGV4dCwgc2hhcmVkQ29udGV4dC0+YmluZEJ1ZmZlcihFeHRlbnNpb25zM0RDaHJvbWl1bTo6
UElYRUxfVU5QQUNLX1RSQU5TRkVSX0JVRkZFUl9DSFJPTUlVTSwgMCkpOworICAgIEdMQyhzaGFy
ZWRDb250ZXh0LCBzaGFyZWRDb250ZXh0LT5mbHVzaCgpKTsKKworICAgIFRyYW5zZmVyQnVmZmVy
SW5mbyBidWZmZXI7CisgICAgYnVmZmVyLnNpemUgPSBieXRlczsKKyAgICBidWZmZXIuYnVmZmVy
SWQgPSBidWZmZXJJZDsKKyAgICBidWZmZXIuZmVuY2UgPSAwOworICAgIGJ1ZmZlci5pc1Byb3Rl
Y3RlZCA9IHRydWU7CisKKyAgICBhZGRUcmFuc2ZlckJ1ZmZlcih0b2tlbiwgYnVmZmVyKTsKKyAg
ICByZXR1cm4gYnVmZmVySWQ7Cit9CisKK3ZvaWQgVGV4dHVyZU1hbmFnZXI6OmFkZFRyYW5zZmVy
QnVmZmVyKFRyYW5zZmVyQnVmZmVyVG9rZW4gdG9rZW4sIFRyYW5zZmVyQnVmZmVySW5mbyBpbmZv
KQoreworICAgIEFTU0VSVCghbV90cmFuc2ZlckJ1ZmZlcnMuY29udGFpbnModG9rZW4pKTsKKyAg
ICBtX3RyYW5zZmVyQnVmZmVyTWVtb3J5VXNlQnl0ZXMgKz0gaW5mby5zaXplOworICAgIG1fdHJh
bnNmZXJCdWZmZXJzLnNldCh0b2tlbiwgaW5mbyk7Cit9CisKK3ZvaWQgVGV4dHVyZU1hbmFnZXI6
OnJlbW92ZVRyYW5zZmVyQnVmZmVyKFRyYW5zZmVyQnVmZmVyVG9rZW4gdG9rZW4sIFRyYW5zZmVy
QnVmZmVySW5mbyBpbmZvKQoreworICAgIEFTU0VSVChtX3RyYW5zZmVyQnVmZmVycy5jb250YWlu
cyh0b2tlbikpOworICAgIEFTU0VSVChpbmZvLmJ1ZmZlcklkKTsKKyAgICBtX3RyYW5zZmVyQnVm
ZmVyTWVtb3J5VXNlQnl0ZXMgLT0gaW5mby5zaXplOworICAgIG1fdHJhbnNmZXJCdWZmZXJzLnJl
bW92ZSh0b2tlbik7CisgICAgR3JhcGhpY3NDb250ZXh0M0QqIHNoYXJlZENvbnRleHQgPSBTaGFy
ZWRHcmFwaGljc0NvbnRleHQzRDo6Z2V0KCkuZ2V0KCk7CisgICAgR0xDKHNoYXJlZENvbnRleHQs
IHNoYXJlZENvbnRleHQtPmRlbGV0ZUJ1ZmZlcihpbmZvLmJ1ZmZlcklkKSk7Cit9CisKK3ZvaWQg
VGV4dHVyZU1hbmFnZXI6OmV2aWN0VHJhbnNmZXJCdWZmZXIoVHJhbnNmZXJCdWZmZXJUb2tlbiB0
b2tlbiwgVHJhbnNmZXJCdWZmZXJJbmZvIGluZm8pCit7CisgICAgVFJBQ0VfRVZFTlQoIlRleHR1
cmVNYW5hZ2VyOjpldmljdFRyYW5zZmVyQnVmZmVyIiwgdGhpcywgMCk7CisgICAgcmVtb3ZlVHJh
bnNmZXJCdWZmZXIodG9rZW4sIGluZm8pOworfQorCit2b2lkKiBUZXh0dXJlTWFuYWdlcjo6bWFw
VHJhbnNmZXJCdWZmZXIoVGV4dHVyZVRva2VuIHRva2VuKQoreworICAgIFRleHR1cmVNYXA6Oml0
ZXJhdG9yIHRleHR1cmVJdCA9IG1fdGV4dHVyZXMuZmluZCh0b2tlbik7CisgICAgQVNTRVJUKHRl
eHR1cmVJdCAhPSBtX3RleHR1cmVzLmVuZCgpKTsKKyAgICBUZXh0dXJlSW5mbyogaW5mbyA9ICZ0
ZXh0dXJlSXQuZ2V0KCktPnNlY29uZDsKKyAgICBBU1NFUlQoaW5mby0+aXNQcm90ZWN0ZWQpOwor
ICAgIEFTU0VSVCghaW5mby0+YnVmZmVyKTsKKyAgICB1bnNpZ25lZCBidWZmZXJJZCA9IDA7CisK
KyAgICBzaXplX3QgbWVtb3J5UmVxdWlyZWRCeXRlcyA9IG1lbW9yeVVzZUJ5dGVzKGluZm8tPnNp
emUsIGluZm8tPmZvcm1hdCk7CisgICAgZm9yIChUcmFuc2ZlckJ1ZmZlck1hcDo6aXRlcmF0b3Ig
aXQgPSBtX3RyYW5zZmVyQnVmZmVycy5iZWdpbigpOyBpdCAhPSBtX3RyYW5zZmVyQnVmZmVycy5l
bmQoKTsgKytpdCkgeworICAgICAgICBpZiAoaXQtPnNlY29uZC5pc1Byb3RlY3RlZCkKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoaXQtPnNlY29uZC5zaXplICE9IG1lbW9yeVJl
cXVpcmVkQnl0ZXMpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKGl0LT5zZWNv
bmQuZmVuY2UgPiBtX2xhc3RVcGRhdGVDb21wbGV0ZWQpCisgICAgICAgICAgICBjb250aW51ZTsK
KworICAgICAgICBBU1NFUlQoaXQtPnNlY29uZC5idWZmZXJJZCk7CisgICAgICAgIGJ1ZmZlcklk
ID0gaXQtPnNlY29uZC5idWZmZXJJZDsKKyAgICAgICAgaXQtPnNlY29uZC5pc1Byb3RlY3RlZCA9
IHRydWU7CisgICAgICAgIGluZm8tPmJ1ZmZlciA9IGl0LT5maXJzdDsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorCisgICAgaWYgKCFpbmZvLT5idWZmZXIpIHsKKyAgICAgICAgaWYgKG1fdHJhbnNm
ZXJCdWZmZXJNZW1vcnlVc2VCeXRlcyArIG1lbW9yeVJlcXVpcmVkQnl0ZXMgPiBtX21heE1lbW9y
eUxpbWl0Qnl0ZXMpCisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICBpbmZvLT5idWZm
ZXIgPSBnZXRUcmFuc2ZlckJ1ZmZlclRva2VuKCk7CisgICAgICAgIGJ1ZmZlcklkID0gY3JlYXRl
VHJhbnNmZXJCdWZmZXIoaW5mby0+YnVmZmVyLCBtZW1vcnlSZXF1aXJlZEJ5dGVzKTsKKyAgICB9
CisKKyAgICBHcmFwaGljc0NvbnRleHQzRCogc2hhcmVkQ29udGV4dCA9IFNoYXJlZEdyYXBoaWNz
Q29udGV4dDNEOjpnZXQoKS5nZXQoKTsKKyAgICBBU1NFUlQoc2hhcmVkQ29udGV4dCk7CisgICAg
R0xDKHNoYXJlZENvbnRleHQsIHNoYXJlZENvbnRleHQtPmJpbmRCdWZmZXIoRXh0ZW5zaW9uczNE
Q2hyb21pdW06OlBJWEVMX1VOUEFDS19UUkFOU0ZFUl9CVUZGRVJfQ0hST01JVU0sIGJ1ZmZlcklk
KSk7CisgICAgRXh0ZW5zaW9uczNEQ2hyb21pdW0qIGV4dGVuc2lvbnMgPSBzdGF0aWNfY2FzdDxF
eHRlbnNpb25zM0RDaHJvbWl1bSo+KHNoYXJlZENvbnRleHQtPmdldEV4dGVuc2lvbnMoKSk7Cisg
ICAgdm9pZCogbWVtID0gZXh0ZW5zaW9ucy0+bWFwQnVmZmVyU3ViRGF0YUNIUk9NSVVNKEV4dGVu
c2lvbnMzRENocm9taXVtOjpQSVhFTF9VTlBBQ0tfVFJBTlNGRVJfQlVGRkVSX0NIUk9NSVVNLCAw
LCBtZW1vcnlSZXF1aXJlZEJ5dGVzLCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6V1JJVEVfT05MWSk7
CisgICAgQVNTRVJUKG1lbSk7CisgICAgR0xDKHNoYXJlZENvbnRleHQsIHNoYXJlZENvbnRleHQt
PmJpbmRCdWZmZXIoRXh0ZW5zaW9uczNEQ2hyb21pdW06OlBJWEVMX1VOUEFDS19UUkFOU0ZFUl9C
VUZGRVJfQ0hST01JVU0sIDApKTsKKyAgICByZXR1cm4gbWVtOworfQorCit2b2lkIFRleHR1cmVN
YW5hZ2VyOjp1bm1hcFRyYW5zZmVyQnVmZmVyKFRleHR1cmVUb2tlbiB0b2tlbiwgdm9pZCogcG9p
bnRlcikKK3sKKyAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCA9IFNoYXJlZEdyYXBoaWNz
Q29udGV4dDNEOjpnZXQoKS5nZXQoKTsKKyAgICBBU1NFUlQoY29udGV4dCk7CisgICAgRXh0ZW5z
aW9uczNEQ2hyb21pdW0qIGV4dGVuc2lvbnMgPSBzdGF0aWNfY2FzdDxFeHRlbnNpb25zM0RDaHJv
bWl1bSo+KGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKSk7CisgICAgZXh0ZW5zaW9ucy0+dW5tYXBC
dWZmZXJTdWJEYXRhQ0hST01JVU0ocG9pbnRlcik7Cit9CisKK3ZvaWQgVGV4dHVyZU1hbmFnZXI6
OnRleFN1YkltYWdlMkRUcmFuc2ZlckJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwg
Y29uc3QgSW50UmVjdCYgZGVzdFJlY3QsIFRleHR1cmVUb2tlbiB0b2tlbiwgVGV4dHVyZVVwZGF0
ZVNlcXVlbmNlIHNlcXVlbmNlKQoreworICAgIFRleHR1cmVNYXA6Oml0ZXJhdG9yIHRleHR1cmVJ
dCA9IG1fdGV4dHVyZXMuZmluZCh0b2tlbik7CisgICAgQVNTRVJUKHRleHR1cmVJdCAhPSBtX3Rl
eHR1cmVzLmVuZCgpKTsKKyAgICBUZXh0dXJlSW5mbyogdGV4dHVyZUluZm8gPSAmdGV4dHVyZUl0
LmdldCgpLT5zZWNvbmQ7CisgICAgQVNTRVJUKHRleHR1cmVJbmZvLT5idWZmZXIpOworCisgICAg
VHJhbnNmZXJCdWZmZXJNYXA6Oml0ZXJhdG9yIGl0ID0gbV90cmFuc2ZlckJ1ZmZlcnMuZmluZCh0
ZXh0dXJlSW5mby0+YnVmZmVyKTsKKyAgICBBU1NFUlQoaXQgIT0gbV90cmFuc2ZlckJ1ZmZlcnMu
ZW5kKCkpOworICAgIFRyYW5zZmVyQnVmZmVySW5mbyogaW5mbyA9ICZpdC5nZXQoKS0+c2Vjb25k
OworICAgIEFTU0VSVChpbmZvLT5pc1Byb3RlY3RlZCk7CisKKyAgICBHTEMoY29udGV4dCwgY29u
dGV4dC0+YmluZEJ1ZmZlcihFeHRlbnNpb25zM0RDaHJvbWl1bTo6UElYRUxfVU5QQUNLX1RSQU5T
RkVSX0JVRkZFUl9DSFJPTUlVTSwgaW5mby0+YnVmZmVySWQpKTsKKyAgICBHTEMoY29udGV4dCwg
Y29udGV4dC0+dGV4U3ViSW1hZ2UyRChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwg
ZGVzdFJlY3QueCgpLCBkZXN0UmVjdC55KCksIGRlc3RSZWN0LndpZHRoKCksIGRlc3RSZWN0Lmhl
aWdodCgpLCB0ZXh0dXJlSW5mby0+Zm9ybWF0LCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURf
QllURSwgTlVMTCkpOworICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5iaW5kQnVmZmVyKEV4dGVu
c2lvbnMzRENocm9taXVtOjpQSVhFTF9VTlBBQ0tfVFJBTlNGRVJfQlVGRkVSX0NIUk9NSVVNLCAw
KSk7CisKKyAgICBBU1NFUlQoc2VxdWVuY2UpOworICAgIGluZm8tPmZlbmNlID0gc2VxdWVuY2U7
CisgICAgaW5mby0+aXNQcm90ZWN0ZWQgPSBmYWxzZTsKKyAgICB0ZXh0dXJlSW5mby0+YnVmZmVy
ID0gMDsKK30KKwogfQogCiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4
dHVyZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1RleHR1cmVNYW5hZ2VyLmgKaW5kZXggMzE0NzYzNS4uZjExMmQ3NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFu
YWdlci5oCkBAIC0zOSwxMiArMzksMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBN
YW5hZ2VkVGV4dHVyZTsKIHR5cGVkZWYgaW50IFRleHR1cmVUb2tlbjsKK3R5cGVkZWYgaW50IFRy
YW5zZmVyQnVmZmVyVG9rZW47Cit0eXBlZGVmIHVpbnQ2NF90IFRleHR1cmVVcGRhdGVTZXF1ZW5j
ZTsKIAogY2xhc3MgVGV4dHVyZUFsbG9jYXRvciB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB1bnNp
Z25lZCBjcmVhdGVUZXh0dXJlKGNvbnN0IEludFNpemUmLCBHQzNEZW51bSBmb3JtYXQpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlVGV4dHVyZSh1bnNpZ25lZCB0ZXh0dXJlLCBjb25zdCBJ
bnRTaXplJiwgR0MzRGVudW0pID0gMDsKIAorICAgIHZpcnR1YWwgR3JhcGhpY3NDb250ZXh0M0Qq
IGNvbnRleHQoKSB7IHJldHVybiAwOyB9CisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5UZXh0
dXJlQWxsb2NhdG9yKCkgeyB9CiB9OwpAQCAtOTMsNiArOTcsMTEgQEAgcHVibGljOgogICAgIHZv
aWQgcmVkdWNlTWVtb3J5VG9MaW1pdChzaXplX3QpOwogICAgIHNpemVfdCBjdXJyZW50TWVtb3J5
VXNlQnl0ZXMoKSBjb25zdCB7IHJldHVybiBtX21lbW9yeVVzZUJ5dGVzOyB9CiAKKyAgICB2b2lk
KiBtYXBUcmFuc2ZlckJ1ZmZlcihUZXh0dXJlVG9rZW4pOworICAgIHZvaWQgdW5tYXBUcmFuc2Zl
ckJ1ZmZlcihUZXh0dXJlVG9rZW4sIHZvaWQqKTsKKyAgICB2b2lkIHRleFN1YkltYWdlMkRUcmFu
c2ZlckJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LCBU
ZXh0dXJlVG9rZW4sIFRleHR1cmVVcGRhdGVTZXF1ZW5jZSk7CisgICAgdm9pZCBzZXRMYXN0VXBk
YXRlQ29tcGxldGVkKFRleHR1cmVVcGRhdGVTZXF1ZW5jZSBsYXN0VXBkYXRlQ29tcGxldGVkKSB7
IG1fbGFzdFVwZGF0ZUNvbXBsZXRlZCA9IGxhc3RVcGRhdGVDb21wbGV0ZWQ7IH0KKwogcHJpdmF0
ZToKICAgICBUZXh0dXJlTWFuYWdlcihzaXplX3QgbWF4TWVtb3J5TGltaXRCeXRlcywgc2l6ZV90
IHByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMsIGludCBtYXhUZXh0dXJlU2l6ZSk7CiAKQEAgLTEw
MSw2ICsxMTAsNyBAQCBwcml2YXRlOgogICAgICAgICBHQzNEZW51bSBmb3JtYXQ7CiAgICAgICAg
IHVuc2lnbmVkIHRleHR1cmVJZDsKICAgICAgICAgYm9vbCBpc1Byb3RlY3RlZDsKKyAgICAgICAg
VHJhbnNmZXJCdWZmZXJUb2tlbiBidWZmZXI7CiAjaWZuZGVmIE5ERUJVRwogICAgICAgICBUZXh0
dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3I7CiAjZW5kaWYKQEAgLTEzMiw2ICsxNDIsMjYgQEAgcHJp
dmF0ZToKICAgICB9OwogCiAgICAgVmVjdG9yPEV2aWN0aW9uRW50cnk+IG1fZXZpY3RlZFRleHR1
cmVzOworCisgICAgc3RydWN0IFRyYW5zZmVyQnVmZmVySW5mbyB7CisgICAgICAgIHNpemVfdCBz
aXplOworICAgICAgICB1bnNpZ25lZCBidWZmZXJJZDsKKyAgICAgICAgVGV4dHVyZVVwZGF0ZVNl
cXVlbmNlIGZlbmNlOworICAgICAgICBib29sIGlzUHJvdGVjdGVkOworICAgIH07CisKKyAgICBU
cmFuc2ZlckJ1ZmZlclRva2VuIGdldFRyYW5zZmVyQnVmZmVyVG9rZW4oKTsKKworICAgIGludCBj
cmVhdGVUcmFuc2ZlckJ1ZmZlcihUcmFuc2ZlckJ1ZmZlclRva2VuLCBzaXplX3QgYnl0ZXMpOwor
ICAgIHZvaWQgYWRkVHJhbnNmZXJCdWZmZXIoVHJhbnNmZXJCdWZmZXJUb2tlbiwgVHJhbnNmZXJC
dWZmZXJJbmZvKTsKKyAgICB2b2lkIHJlbW92ZVRyYW5zZmVyQnVmZmVyKFRyYW5zZmVyQnVmZmVy
VG9rZW4sIFRyYW5zZmVyQnVmZmVySW5mbyk7CisgICAgdm9pZCBldmljdFRyYW5zZmVyQnVmZmVy
KFRyYW5zZmVyQnVmZmVyVG9rZW4sIFRyYW5zZmVyQnVmZmVySW5mbyk7CisKKyAgICB0eXBlZGVm
IEhhc2hNYXA8VHJhbnNmZXJCdWZmZXJUb2tlbiwgVHJhbnNmZXJCdWZmZXJJbmZvPiBUcmFuc2Zl
ckJ1ZmZlck1hcDsKKyAgICBUcmFuc2ZlckJ1ZmZlck1hcCBtX3RyYW5zZmVyQnVmZmVyczsKKyAg
ICBUcmFuc2ZlckJ1ZmZlclRva2VuIG1fbmV4dFRyYW5zZmVyQnVmZmVyVG9rZW47CisgICAgVGV4
dHVyZVVwZGF0ZVNlcXVlbmNlIG1fbGFzdFVwZGF0ZUNvbXBsZXRlZDsKKyAgICBzaXplX3QgbV90
cmFuc2ZlckJ1ZmZlck1lbW9yeVVzZUJ5dGVzOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZVVwbG9hZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlVXBsb2FkZXIu
aAppbmRleCBlM2I0NGZkLi5mNTM5OTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlVXBsb2FkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlVXBsb2FkZXIuaApAQCAtMzcs
NiArMzcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGJlZ2luVXBsb2FkcygpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZW5kVXBsb2FkcygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdXBs
b2FkVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCosIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1
cmUqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCBzb3VyY2VSZWN0LCBjb25zdCBJ
bnRSZWN0IGRlc3RSZWN0KSA9IDA7CisgICAgdmlydHVhbCBUZXh0dXJlVXBkYXRlU2VxdWVuY2Ug
bGFzdFVwbG9hZENvbXBsZXRlZCgpID0gMDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rocm90dGxlZFRleHR1cmVVcGxvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaHJvdHRs
ZWRUZXh0dXJlVXBsb2FkZXIuY3BwCmluZGV4IDUxODEzYzUuLmIxM2EyZWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rocm90dGxlZFRleHR1
cmVVcGxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyLmNwcApAQCAtNDAsNiArNDAsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OlF1ZXJ5OjpRdWVyeShQ
YXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0KQogICAgIDogbV9jb250ZXh0KGNv
bnRleHQpCiAgICAgLCBtX3F1ZXJ5SWQoMCkKKyAgICAsIG1fc2VxdWVuY2UoMCkKIHsKICAgICBF
eHRlbnNpb25zM0RDaHJvbWl1bSogZXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMz
RENocm9taXVtKj4obV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkpOwogICAgIG1fcXVlcnlJZCA9
IGV4dGVuc2lvbnMtPmNyZWF0ZVF1ZXJ5RVhUKCk7CkBAIC01NywxMCArNTgsMTEgQEAgdm9pZCBU
aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OlF1ZXJ5OjpiZWdpbigpCiAgICAgZXh0ZW5zaW9ucy0+
YmVnaW5RdWVyeUVYVChFeHRlbnNpb25zM0RDaHJvbWl1bTo6Q09NTUFORFNfSVNTVUVEX0NIUk9N
SVVNLCBtX3F1ZXJ5SWQpOwogfQogCi12b2lkIFRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6UXVl
cnk6OmVuZCgpCit2b2lkIFRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6UXVlcnk6OmVuZChUZXh0
dXJlVXBkYXRlU2VxdWVuY2Ugc2VxdWVuY2UpCiB7CiAgICAgRXh0ZW5zaW9uczNEQ2hyb21pdW0q
IGV4dGVuc2lvbnMgPSBzdGF0aWNfY2FzdDxFeHRlbnNpb25zM0RDaHJvbWl1bSo+KG1fY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpKTsKICAgICBleHRlbnNpb25zLT5lbmRRdWVyeUVYVChFeHRlbnNp
b25zM0RDaHJvbWl1bTo6Q09NTUFORFNfSVNTVUVEX0NIUk9NSVVNKTsKKyAgICBtX3NlcXVlbmNl
ID0gc2VxdWVuY2U7CiB9CiAKIGJvb2wgVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpRdWVyeTo6
aXNQZW5kaW5nKCkKQEAgLTgxLDEyICs4MywxNiBAQCB2b2lkIFRocm90dGxlZFRleHR1cmVVcGxv
YWRlcjo6UXVlcnk6OndhaXQoKQogVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpUaHJvdHRsZWRU
ZXh0dXJlVXBsb2FkZXIoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCkKICAg
ICA6IG1fY29udGV4dChjb250ZXh0KQogICAgICwgbV9tYXhQZW5kaW5nUXVlcmllcyhtYXhQZW5k
aW5nUXVlcmllcykKKyAgICAsIG1fbmV4dFNlcXVlbmNlKDEpCisgICAgLCBtX2xhc3RVcGxvYWRD
b21wbGV0ZWQoMCkKIHsKIH0KIAogVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpUaHJvdHRsZWRU
ZXh0dXJlVXBsb2FkZXIoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCwgc2l6
ZV90IHBlbmRpbmdVcGxvYWRMaW1pdCkKICAgICA6IG1fY29udGV4dChjb250ZXh0KQogICAgICwg
bV9tYXhQZW5kaW5nUXVlcmllcyhwZW5kaW5nVXBsb2FkTGltaXQpCisgICAgLCBtX25leHRTZXF1
ZW5jZSgxKQorICAgICwgbV9sYXN0VXBsb2FkQ29tcGxldGVkKDApCiB7CiB9CiAKQEAgLTEyMCwx
MyArMTI2LDE5IEBAIHZvaWQgVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpiZWdpblVwbG9hZHMo
KQogCiB2b2lkIFRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6ZW5kVXBsb2FkcygpCiB7Ci0gICAg
bV9hdmFpbGFibGVRdWVyaWVzLmZpcnN0KCktPmVuZCgpOworICAgIG1fYXZhaWxhYmxlUXVlcmll
cy5maXJzdCgpLT5lbmQobGFzdFNlcXVlbmNlKCkpOwogICAgIG1fcGVuZGluZ1F1ZXJpZXMuYXBw
ZW5kKG1fYXZhaWxhYmxlUXVlcmllcy50YWtlRmlyc3QoKSk7CiB9CiAKIHZvaWQgVGhyb3R0bGVk
VGV4dHVyZVVwbG9hZGVyOjp1cGxvYWRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
LCBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBUZXh0dXJlQWxsb2NhdG9y
KiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3Qgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCBkZXN0
UmVjdCkKIHsKLSAgICB0ZXh0dXJlLT51cGRhdGVSZWN0KGNvbnRleHQsIGFsbG9jYXRvciwgc291
cmNlUmVjdCwgZGVzdFJlY3QpOworICAgIHRleHR1cmUtPnVwZGF0ZVJlY3QoY29udGV4dCwgYWxs
b2NhdG9yLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCwgZ2V0U2VxdWVuY2UoKSk7Cit9CisKK1RleHR1
cmVVcGRhdGVTZXF1ZW5jZSBUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6Omxhc3RVcGxvYWRDb21w
bGV0ZWQoKQoreworICAgIHByb2Nlc3NRdWVyaWVzKCk7CisgICAgcmV0dXJuIG1fbGFzdFVwbG9h
ZENvbXBsZXRlZDsKIH0KIAogdm9pZCBUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OnByb2Nlc3NR
dWVyaWVzKCkKQEAgLTEzNSw4ICsxNDcsMTkgQEAgdm9pZCBUaHJvdHRsZWRUZXh0dXJlVXBsb2Fk
ZXI6OnByb2Nlc3NRdWVyaWVzKCkKICAgICAgICAgaWYgKG1fcGVuZGluZ1F1ZXJpZXMuZmlyc3Qo
KS0+aXNQZW5kaW5nKCkpCiAgICAgICAgICAgICBicmVhazsKIAorICAgICAgICBtX2xhc3RVcGxv
YWRDb21wbGV0ZWQgPSBtX3BlbmRpbmdRdWVyaWVzLmZpcnN0KCktPnNlcXVlbmNlKCk7CiAgICAg
ICAgIG1fYXZhaWxhYmxlUXVlcmllcy5hcHBlbmQobV9wZW5kaW5nUXVlcmllcy50YWtlRmlyc3Qo
KSk7CiAgICAgfQogfQogCitUZXh0dXJlVXBkYXRlU2VxdWVuY2UgVGhyb3R0bGVkVGV4dHVyZVVw
bG9hZGVyOjpnZXRTZXF1ZW5jZSgpCit7CisgICAgcmV0dXJuIG1fbmV4dFNlcXVlbmNlKys7Cit9
CisKK1RleHR1cmVVcGRhdGVTZXF1ZW5jZSBUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6Omxhc3RT
ZXF1ZW5jZSgpCit7CisgICAgcmV0dXJuIG1fbmV4dFNlcXVlbmNlIC0gMTsKK30KKwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGhyb3R0
bGVkVGV4dHVyZVVwbG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9UaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuaAppbmRleCBhNzIwNTg2Li4yNDU0MGI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9U
aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9UaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuaApAQCAtNDgsNiArNDgs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGJlZ2luVXBsb2FkcygpIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgdm9pZCBlbmRVcGxvYWRzKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IHVwbG9hZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqLCBMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3Qgc291cmNlUmVjdCwgY29u
c3QgSW50UmVjdCBkZXN0UmVjdCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBUZXh0dXJlVXBkYXRl
U2VxdWVuY2UgbGFzdFVwbG9hZENvbXBsZXRlZCgpIE9WRVJSSURFOwogCiBwcml2YXRlOgogICAg
IGNsYXNzIFF1ZXJ5IHsKQEAgLTU3LDI2ICs1OCwzMiBAQCBwcml2YXRlOgogICAgICAgICB2aXJ0
dWFsIH5RdWVyeSgpOwogCiAgICAgICAgIHZvaWQgYmVnaW4oKTsKLSAgICAgICAgdm9pZCBlbmQo
KTsKKyAgICAgICAgdm9pZCBlbmQoVGV4dHVyZVVwZGF0ZVNlcXVlbmNlKTsKICAgICAgICAgYm9v
bCBpc1BlbmRpbmcoKTsKICAgICAgICAgdm9pZCB3YWl0KCk7CisgICAgICAgIFRleHR1cmVVcGRh
dGVTZXF1ZW5jZSBzZXF1ZW5jZSgpIHsgcmV0dXJuIG1fc2VxdWVuY2U7IH0KIAogICAgIHByaXZh
dGU6CiAgICAgICAgIGV4cGxpY2l0IFF1ZXJ5KFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+
KTsKIAogICAgICAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IG1fY29udGV4dDsKICAgICAg
ICAgdW5zaWduZWQgbV9xdWVyeUlkOworICAgICAgICBUZXh0dXJlVXBkYXRlU2VxdWVuY2UgbV9z
ZXF1ZW5jZTsKICAgICB9OwogCiAgICAgVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyKFBhc3NSZWZQ
dHI8R3JhcGhpY3NDb250ZXh0M0Q+KTsKICAgICBUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIoUGFz
c1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4sIHNpemVfdCBwZW5kaW5nVXBsb2FkTGltaXQpOwog
CiAgICAgdm9pZCBwcm9jZXNzUXVlcmllcygpOworICAgIFRleHR1cmVVcGRhdGVTZXF1ZW5jZSBn
ZXRTZXF1ZW5jZSgpOworICAgIFRleHR1cmVVcGRhdGVTZXF1ZW5jZSBsYXN0U2VxdWVuY2UoKTsK
IAogICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gbV9jb250ZXh0OwogICAgIHNpemVfdCBt
X21heFBlbmRpbmdRdWVyaWVzOwogICAgIERlcXVlPE93blB0cjxRdWVyeT4gPiBtX3BlbmRpbmdR
dWVyaWVzOwogICAgIERlcXVlPE93blB0cjxRdWVyeT4gPiBtX2F2YWlsYWJsZVF1ZXJpZXM7Cisg
ICAgVGV4dHVyZVVwZGF0ZVNlcXVlbmNlIG1fbmV4dFNlcXVlbmNlOworICAgIFRleHR1cmVVcGRh
dGVTZXF1ZW5jZSBtX2xhc3RVcGxvYWRDb21wbGV0ZWQ7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmFja2luZ1RleHR1cmVB
bGxvY2F0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Ry
YWNraW5nVGV4dHVyZUFsbG9jYXRvci5oCmluZGV4IGE4YTU0OTIuLjk2NThkNDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyYWNraW5nVGV4
dHVyZUFsbG9jYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1RyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5oCkBAIC01MCw2ICs1MCw4IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldFRleHR1cmVVc2FnZUhpbnQoVGV4dHVyZVVzYWdlSGludCBoaW50KSB7
IG1fdGV4dHVyZVVzYWdlSGludCA9IGhpbnQ7IH0KICAgICB2b2lkIHNldFVzZVRleHR1cmVTdG9y
YWdlRXh0KGJvb2wgdXNlU3RvcmFnZUV4dCkgeyBtX3VzZVRleHR1cmVTdG9yYWdlRXh0ID0gdXNl
U3RvcmFnZUV4dDsgfQogCisgICAgdmlydHVhbCBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCgp
IHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQg
VHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+KTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggZjgyYWMzNy4uZTFiN2E1ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC00NTgsNyArNDU4LDcgQEAgdm9p
ZCBDQ0xheWVyVHJlZUhvc3Q6OmNvbXBvc2l0ZSgpCiAgICAgc3RhdGljX2Nhc3Q8Q0NTaW5nbGVU
aHJlYWRQcm94eSo+KG1fcHJveHkuZ2V0KCkpLT5jb21wb3NpdGVJbW1lZGlhdGVseSgpOwogfQog
Ci1ib29sIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKENDVGV4dHVyZVVwZGF0ZXImIHVw
ZGF0ZXIpCitib29sIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKENDVGV4dHVyZVVwZGF0
ZXImIHVwZGF0ZXIsIFRleHR1cmVVcGRhdGVTZXF1ZW5jZSBsYXN0VXBkYXRlQ29tcGxldGVkKQog
ewogICAgIGlmICghbV9sYXllclJlbmRlcmVySW5pdGlhbGl6ZWQpIHsKICAgICAgICAgaW5pdGlh
bGl6ZUxheWVyUmVuZGVyZXIoKTsKQEAgLTQ3NywxMSArNDc3LDExIEBAIGJvb2wgQ0NMYXllclRy
ZWVIb3N0Ojp1cGRhdGVMYXllcnMoQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKICAgICBpZiAo
dmlld3BvcnRTaXplKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIHVw
ZGF0ZUxheWVycyhyb290TGF5ZXIoKSwgdXBkYXRlcik7CisgICAgdXBkYXRlTGF5ZXJzKHJvb3RM
YXllcigpLCB1cGRhdGVyLCBsYXN0VXBkYXRlQ29tcGxldGVkKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyhMYXllckNocm9taXVtKiBy
b290TGF5ZXIsIENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCit2b2lkIENDTGF5ZXJUcmVlSG9z
dDo6dXBkYXRlTGF5ZXJzKExheWVyQ2hyb21pdW0qIHJvb3RMYXllciwgQ0NUZXh0dXJlVXBkYXRl
ciYgdXBkYXRlciwgVGV4dHVyZVVwZGF0ZVNlcXVlbmNlIGxhc3RVcGRhdGVDb21wbGV0ZWQpCiB7
CiAgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzIiwgdGhpcywg
MCk7CiAKQEAgLTUwOSw2ICs1MDksOSBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5
ZXJzKExheWVyQ2hyb21pdW0qIHJvb3RMYXllciwgQ0NUZXh0dXJlVXBkYXRlciYgdQogICAgIC8v
IFJlc2V0IHBhcnRpYWwgdGV4dHVyZSB1cGRhdGUgcmVxdWVzdHMuCiAgICAgbV9wYXJ0aWFsVGV4
dHVyZVVwZGF0ZVJlcXVlc3RzID0gMDsKIAorICAgIC8vIFJlbGVhc2UgYW55IHRyYW5zZmVyIGJ1
ZmZlcnMgdXNlZCBmb3IgdGV4dHVyZSB1cGRhdGVzLgorICAgIG1fY29udGVudHNUZXh0dXJlTWFu
YWdlci0+c2V0TGFzdFVwZGF0ZUNvbXBsZXRlZChsYXN0VXBkYXRlQ29tcGxldGVkKTsKKwogICAg
IHJlc2VydmVUZXh0dXJlcyh1cGRhdGVMaXN0KTsKIAogICAgIHBhaW50TGF5ZXJDb250ZW50cyh1
cGRhdGVMaXN0LCBQYWludFZpc2libGUsIHVwZGF0ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3QuaAppbmRleCAzYTg2M2Y3Li5kYzc5ODk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
aApAQCAtMTcxLDcgKzE3MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZUNvbnRlbnRzVGV4
dHVyZXNPbkltcGxUaHJlYWQoVGV4dHVyZUFsbG9jYXRvciopOwogICAgIHZpcnR1YWwgdm9pZCBh
Y3F1aXJlTGF5ZXJUZXh0dXJlcygpOwogICAgIC8vIFJldHVybnMgZmFsc2UgaWYgd2Ugc2hvdWxk
IGFib3J0IHRoaXMgZnJhbWUgZHVlIHRvIGluaXRpYWxpemF0aW9uIGZhaWx1cmUuCi0gICAgYm9v
bCB1cGRhdGVMYXllcnMoQ0NUZXh0dXJlVXBkYXRlciYpOworICAgIGJvb2wgdXBkYXRlTGF5ZXJz
KENDVGV4dHVyZVVwZGF0ZXImLCBUZXh0dXJlVXBkYXRlU2VxdWVuY2UgbGFzdFVwZGF0ZUNvbXBs
ZXRlZCA9IDApOwogCiAgICAgQ0NMYXllclRyZWVIb3N0Q2xpZW50KiBjbGllbnQoKSB7IHJldHVy
biBtX2NsaWVudDsgfQogCkBAIC0yNTcsNyArMjU3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBh
aW50TGF5ZXJDb250ZW50cyhjb25zdCBMYXllckxpc3QmLCBQYWludFR5cGUsIENDVGV4dHVyZVVw
ZGF0ZXImKTsKICAgICB2b2lkIHBhaW50TWFza3NGb3JSZW5kZXJTdXJmYWNlKExheWVyQ2hyb21p
dW0qLCBQYWludFR5cGUsIENDVGV4dHVyZVVwZGF0ZXImKTsKIAotICAgIHZvaWQgdXBkYXRlTGF5
ZXJzKExheWVyQ2hyb21pdW0qLCBDQ1RleHR1cmVVcGRhdGVyJik7CisgICAgdm9pZCB1cGRhdGVM
YXllcnMoTGF5ZXJDaHJvbWl1bSosIENDVGV4dHVyZVVwZGF0ZXImLCBUZXh0dXJlVXBkYXRlU2Vx
dWVuY2UgbGFzdFVwZGF0ZUNvbXBsZXRlZCk7CiAgICAgLy8gUHJlLXJlc2VydmUgdGV4dHVyZXMg
Zm9yIGFueSBsYXllciBtYXJrZWQgImFsd2F5cyByZXNlcnZlIHRleHR1cmVzIgogICAgIHZvaWQg
cmVzZXJ2ZVRleHR1cmVzKGNvbnN0IExheWVyTGlzdCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2lu
Z2xlVGhyZWFkUHJveHkuY3BwCmluZGV4IDNhMGIxZTcuLjI3NjhjZmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFk
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCkBAIC0xNjEsNyArMTYxLDcgQEAgYm9vbCBDQ1Np
bmdsZVRocmVhZFByb3h5Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJlcigpCiAgICAgQVNTRVJUKG1f
Y29udGV4dEJlZm9yZUluaXRpYWxpemF0aW9uKTsKICAgICB7CiAgICAgICAgIERlYnVnU2NvcGVk
U2V0SW1wbFRocmVhZCBpbXBsOwotICAgICAgICBib29sIG9rID0gbV9sYXllclRyZWVIb3N0SW1w
bC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIobV9jb250ZXh0QmVmb3JlSW5pdGlhbGl6YXRpb24u
cmVsZWFzZSgpLCBVbnRocm90dGxlZFVwbG9hZGVyKTsKKyAgICAgICAgYm9vbCBvayA9IG1fbGF5
ZXJUcmVlSG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKG1fY29udGV4dEJlZm9yZUlu
aXRpYWxpemF0aW9uLnJlbGVhc2UoKSwgVGhyb3R0bGVkVXBsb2FkZXIpOwogICAgICAgICBpZiAo
b2spIHsKICAgICAgICAgICAgIG1fbGF5ZXJSZW5kZXJlckluaXRpYWxpemVkID0gdHJ1ZTsKICAg
ICAgICAgICAgIG1fbGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllc0Zvck1haW5UaHJlYWQgPSBtX2xh
eWVyVHJlZUhvc3RJbXBsLT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCk7CkBAIC0xODUsNyAr
MTg1LDcgQEAgYm9vbCBDQ1NpbmdsZVRocmVhZFByb3h5OjpyZWNyZWF0ZUNvbnRleHQoKQogICAg
IHsKICAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGw7CiAgICAgICAgIG1fbGF5
ZXJUcmVlSG9zdC0+ZGVsZXRlQ29udGVudHNUZXh0dXJlc09uSW1wbFRocmVhZChtX2xheWVyVHJl
ZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSk7Ci0gICAgICAgIGluaXRpYWxp
emVkID0gbV9sYXllclRyZWVIb3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY29udGV4
dCwgVW50aHJvdHRsZWRVcGxvYWRlcik7CisgICAgICAgIGluaXRpYWxpemVkID0gbV9sYXllclRy
ZWVIb3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY29udGV4dCwgVGhyb3R0bGVkVXBs
b2FkZXIpOwogICAgICAgICBpZiAoaW5pdGlhbGl6ZWQpIHsKICAgICAgICAgICAgIG1fbGF5ZXJS
ZW5kZXJlckNhcGFiaWxpdGllc0Zvck1haW5UaHJlYWQgPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5s
YXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCk7CiAgICAgICAgIH0KQEAgLTM1Myw3ICszNTMsMTEg
QEAgYm9vbCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpjb21taXRBbmRDb21wb3NpdGUoKQogCiAgICAg
Q0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyOwogCi0gICAgaWYgKCFtX2xheWVyVHJlZUhvc3QtPnVw
ZGF0ZUxheWVycyh1cGRhdGVyKSkKKyAgICBUZXh0dXJlVXBkYXRlU2VxdWVuY2UgbGFzdFVwZGF0
ZUNvbXBsZXRlZCA9IDA7CisgICAgaWYgKG1fbGF5ZXJSZW5kZXJlckluaXRpYWxpemVkKQorICAg
ICAgICBsYXN0VXBkYXRlQ29tcGxldGVkID0gbV9sYXllclRyZWVIb3N0SW1wbC0+bGF5ZXJSZW5k
ZXJlcigpLT50ZXh0dXJlVXBsb2FkZXIoKS0+bGFzdFVwbG9hZENvbXBsZXRlZCgpOworCisgICAg
aWYgKCFtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyh1cGRhdGVyLCBsYXN0VXBkYXRlQ29t
cGxldGVkKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgZG9Db21taXQodXBkYXRlcik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCmluZGV4IDYyZGMwMjMuLjBlMjI4MzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhy
ZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCkBAIC00NTgsNiArNDU4LDkgQEAgdm9pZCBDQ1RocmVh
ZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25CZWdpbkZyYW1lKCkKICAgICBtX3BlbmRpbmdCZWdpbkZy
YW1lUmVxdWVzdC0+c2Nyb2xsSW5mbyA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPnByb2Nlc3NTY3Jv
bGxEZWx0YXMoKTsKICAgICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCA9IGFk
b3B0UHRyKG5ldyBDQ1RleHR1cmVVcGRhdGVyKTsKICAgICBtX3BlbmRpbmdCZWdpbkZyYW1lUmVx
dWVzdC0+dXBkYXRlciA9IG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLmdldCgp
OworICAgIG1fcGVuZGluZ0JlZ2luRnJhbWVSZXF1ZXN0LT5sYXN0VXBkYXRlQ29tcGxldGVkID0g
MDsKKyAgICBpZiAobV9sYXllclJlbmRlcmVySW5pdGlhbGl6ZWQpCisgICAgICAgIG1fcGVuZGlu
Z0JlZ2luRnJhbWVSZXF1ZXN0LT5sYXN0VXBkYXRlQ29tcGxldGVkID0gbV9sYXllclRyZWVIb3N0
SW1wbC0+bGF5ZXJSZW5kZXJlcigpLT50ZXh0dXJlVXBsb2FkZXIoKS0+bGFzdFVwbG9hZENvbXBs
ZXRlZCgpOwogCiAgICAgbV9tYWluVGhyZWFkUHJveHktPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFk
VGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZSkpOwogCkBAIC01MTEsNyArNTE0
LDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lKCkKICAgICAvLyB1cGRhdGVMYXll
cnMuCiAgICAgbV9jb21taXRSZXF1ZXN0ZWQgPSBmYWxzZTsKIAotICAgIGlmICghbV9sYXllclRy
ZWVIb3N0LT51cGRhdGVMYXllcnMoKnJlcXVlc3QtPnVwZGF0ZXIpKQorICAgIGlmICghbV9sYXll
clRyZWVIb3N0LT51cGRhdGVMYXllcnMoKnJlcXVlc3QtPnVwZGF0ZXIsIHJlcXVlc3QtPmxhc3RV
cGRhdGVDb21wbGV0ZWQpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBPbmNlIHNpbmdsZSBi
dWZmZXJlZCBsYXllcnMgYXJlIGNvbW1pdHRlZCwgdGhleSBjYW5ub3QgYmUgbW9kaWZpZWQgdW50
aWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAppbmRleCA5ZmY1ODFlLi4wZTQ2ZDZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVh
ZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaHJlYWRQcm94eS5oCkBAIC0xMTAsNiArMTEwLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
ZG91YmxlIG1vbm90b25pY0ZyYW1lQmVnaW5UaW1lOwogICAgICAgICBPd25QdHI8Q0NTY3JvbGxB
bmRTY2FsZVNldD4gc2Nyb2xsSW5mbzsKICAgICAgICAgQ0NUZXh0dXJlVXBkYXRlciogdXBkYXRl
cjsKKyAgICAgICAgVGV4dHVyZVVwZGF0ZVNlcXVlbmNlIGxhc3RVcGRhdGVDb21wbGV0ZWQ7CiAg
ICAgfTsKICAgICBPd25QdHI8QmVnaW5GcmFtZUFuZENvbW1pdFN0YXRlPiBtX3BlbmRpbmdCZWdp
bkZyYW1lUmVxdWVzdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5jcHAKaW5kZXggNDZkMTFhOS4uMTBlZWEyZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29t
bW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllclRl
c3RDb21tb24uY3BwCkBAIC00MCw3ICs0MCw3IEBAIEZha2VMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlOjp+VGV4dHVyZSgpCiB7CiB9CiAKLXZvaWQgRmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6
OlRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9y
KiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRSZWN0JikKK3ZvaWQgRmFrZUxh
eWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0Qq
LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRS
ZWN0JiwgVGV4dHVyZVVwZGF0ZVNlcXVlbmNlKQogewogICAgIGlmIChhbGxvY2F0b3IpCiAgICAg
ICAgIHRleHR1cmUoKS0+YWxsb2NhdGUoYWxsb2NhdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5oIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmgKaW5kZXggNGViODc1
Yi4uNDM2ODFkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1Rp
bGVkTGF5ZXJUZXN0Q29tbW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgICAg
ICBUZXh0dXJlKEZha2VMYXllclRleHR1cmVVcGRhdGVyKiwgUGFzc093blB0cjxXZWJDb3JlOjpN
YW5hZ2VkVGV4dHVyZT4pOwogICAgICAgICB2aXJ0dWFsIH5UZXh0dXJlKCk7CiAKLSAgICAgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0QqLCBXZWJD
b3JlOjpUZXh0dXJlQWxsb2NhdG9yKiAsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0Jik7CisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEKiwgV2ViQ29yZTo6VGV4dHVyZUFsbG9jYXRvciogLCBjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFdlYkNvcmU6OlRl
eHR1cmVVcGRhdGVTZXF1ZW5jZSk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlUmVjdChj
b25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CiAKICAgICBwcml2YXRlOgpAQCAtMTY0LDcgKzE2NCw4
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNCdXN5KCkgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5VcGxvYWRzKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGVu
ZFVwbG9hZHMoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdXBsb2FkVGV4dHVyZShXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgV2ViQ29yZTo6TGF5ZXJUZXh0dXJlVXBkYXRlcjo6
VGV4dHVyZSogdGV4dHVyZSwgV2ViQ29yZTo6VGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0IHNvdXJjZVJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qg
ZGVzdFJlY3QpIHsgdGV4dHVyZS0+dXBkYXRlUmVjdChjb250ZXh0LCBhbGxvY2F0b3IsIHNvdXJj
ZVJlY3QsIGRlc3RSZWN0KTsgfQorICAgIHZpcnR1YWwgdm9pZCB1cGxvYWRUZXh0dXJlKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBXZWJDb3JlOjpMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBXZWJDb3JlOjpUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0
b3IsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qgc291cmNlUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCBkZXN0UmVjdCkgeyB0ZXh0dXJlLT51cGRhdGVSZWN0KGNvbnRleHQsIGFsbG9jYXRvciwg
c291cmNlUmVjdCwgZGVzdFJlY3QsIDApOyB9CisgICAgdmlydHVhbCBXZWJDb3JlOjpUZXh0dXJl
VXBkYXRlU2VxdWVuY2UgbGFzdFVwbG9hZENvbXBsZXRlZCgpIHsgcmV0dXJuIDA7IH0KIH07CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXll
ckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJE
TGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IGI0MjQ4NWIuLmM0MmU1NjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXllckNocm9taXVtVGVzdC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DYW52YXMyRExheWVyQ2hyb21p
dW1UZXN0LmNwcApAQCAtOTQsNiArOTQsNyBAQCBwdWJsaWM6CiAgICAgTU9DS19NRVRIT0QwKGJl
Z2luVXBsb2Fkcywgdm9pZCgpKTsKICAgICBNT0NLX01FVEhPRDAoZW5kVXBsb2Fkcywgdm9pZCgp
KTsKICAgICBNT0NLX01FVEhPRDUodXBsb2FkVGV4dHVyZSwgdm9pZChHcmFwaGljc0NvbnRleHQz
RCosIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29u
c3QgSW50UmVjdCwgY29uc3QgSW50UmVjdCkpOworICAgIE1PQ0tfTUVUSE9EMChsYXN0VXBsb2Fk
Q29tcGxldGVkLCBUZXh0dXJlVXBkYXRlU2VxdWVuY2UoKSk7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>